调整目录结构

This commit is contained in:
zhengxinonly
2021-06-12 21:20:13 +08:00
parent 48633729fb
commit d9a5bcb0de
590 changed files with 1072 additions and 1160 deletions
@@ -0,0 +1,99 @@
<!DOCTYPE html>
<html>
<head>
<title>用户管理</title>
{% include 'admin/common/header.html' %}
</head>
<body>
<form class="layui-form">
<div class="mainBox">
<div class="main-container">
<div class="main-container">
<div class="layui-form-item">
<label class="layui-form-label">账号</label>
<div class="layui-input-block">
<input type="text" name="username" lay-verify="title" autocomplete="off" placeholder="请输入标题"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="realName" lay-verify="title" autocomplete="off" placeholder="请输入标题"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="text" name="password" lay-verify="title" autocomplete="off" placeholder="请输入标题"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">角色</label>
<div class="layui-input-block">
{% for role in roles %}
<input
value="{{role.id}}" title="{{role.name}}" type="checkbox"
name="roleIds" lay-skin="primary">
{% endfor %}
</div>
</div>
</div>
</div>
</div>
<div class="bottom">
<div class="button-container">
<button type="submit" class="pear-btn pear-btn-primary pear-btn-sm" lay-submit="" lay-filter="user-save">
<i class="layui-icon layui-icon-ok"></i>
提交
</button>
<button type="reset" class="pear-btn pear-btn-sm">
<i class="layui-icon layui-icon-refresh"></i>
重置
</button>
</div>
</div>
</form>
{% include 'admin/common/footer.html' %}
<script>
layui.use(['form', 'jquery'], function () {
let form = layui.form;
let $ = layui.jquery;
form.on('submit(user-save)', function (data) {
let roleIds = "";
$('input[type=checkbox]:checked').each(function () {
roleIds += $(this).val() + ",";
});
roleIds = roleIds.substr(0, roleIds.length - 1);
data.field.roleIds = roleIds;
$.ajax({
url: '/admin/user/save',
data: JSON.stringify(data.field),
dataType: 'json',
contentType: 'application/json',
type: 'post',
success: function (result) {
if (result.success) {
layer.msg(result.msg, {icon: 1, time: 1000}, function () {
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
parent.layui.table.reload("user-table");
});
} else {
layer.msg(result.msg, {icon: 2, time: 1000});
}
}
});
return false;
});
})
</script>
<script>
</script>
</body>
</html>
@@ -0,0 +1,211 @@
<!DOCTYPE html>
<html>
<head>
<title>个人中心</title>
{% include 'admin/common/header.html' %}
<style>
.layui-form-item{
margin-top: 17px!important;
margin-bottom: 17px!important;
}
</style>
</head>
<body class="pear-container">
<div class="layui-row layui-col-space10">
<div class="layui-col-md3">
<div class="layui-card">
<div class="layui-card-body" style="padding: 25px;">
<div class="text-center layui-text">
<div class="user-info-head" id="userInfoHead">
<img id="avatar" src="{{ user_info.avatar }}" width="115px" height="115px" alt="">
</div>
<h2 style="padding-top: 20px;font-size: 20px;">{{ user_info.realname }}</h2>
<p style="padding-top: 8px;margin-top: 10px;font-size: 13.5px;">China 中国</p>
</div>
</div>
<div style="height: 45px;border-top: 1px whitesmoke solid;text-align: center;line-height: 45px;font-size: 13.5px;">
<span>{{ user_info.remark }}</span>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">
登录记录
</div>
<div class="layui-card-body">
<ul class="list">
{% for log in user_logs %}
<li class="list-item"><span class="title" >{{ log.url }}</span><span class="footer">{{ log.create_time }}</span></li>
{% endfor %}
</ul>
</div>
</div>
</div>
<div class="layui-col-md9">
<div class="layui-card">
<div class="layui-card-header">个人信息</div>
<div class="layui-card-body">
<div class="layui-tab layui-tab-brief">
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<form class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">账号</label>
<div class="layui-input-block">
<input value="{{user_info.username}}" type="text" readonly name="username" lay-verify="title"
autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input value="{{user_info.realname}}" type="text" name="realName" lay-verify="title"
autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<textarea placeholder="请输入描述" name="details" class="layui-textarea">{{user_info.remark}}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-submit lay-filter="user-update">修改资料</button>
<button class="pear-btn pear-btn-sm edit-password">更改密码</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">
我的文章
</div>
<div class="layui-card-body">
<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-row layui-col-space10" style="margin: 15px;">
<div class="layui-col-md1">
<img src="{{ url_for('static', filename='admin/admin/images/act.jpg') }}"
style="width: 100%;height: 100%;border-radius: 5px;"/>
</div>
<div class="layui-col-md11" style="height: 80px;">
<div class="title">为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?</div>
<div class="content">
“Git的精髓在于让所有人的贡献无缝合并。而GitHub的天才之处,在于理解了Git的精髓。”来一句我们程序员们接地气的话:分享是一种快乐~
</div>
<div class="comment">2020-06-12 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 评论 5 点赞 12 转发
4
</div>
</div>
</div>
<div class="layui-row layui-col-space10" style="margin: 15px;">
<div class="layui-col-md1">
<img src="{{ url_for('static', filename='admin/admin/images/act.jpg') }}" style="width: 100%;height: 100%;border-radius: 5px;"/>
</div>
<div class="layui-col-md11" style="height: 80px;">
<div class="title">为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?</div>
<div class="content">
“Git的精髓在于让所有人的贡献无缝合并。而GitHub的天才之处,在于理解了Git的精髓。”来一句我们程序员们接地气的话:分享是一种快乐~
</div>
<div class="comment">2020-06-12 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 评论 5 点赞 12 转发
4
</div>
</div>
</div>
<div class="layui-row layui-col-space10" style="margin: 15px;">
<div class="layui-col-md1">
<img src="{{ url_for('static', filename='admin/admin/images/act.jpg') }}"
style="width: 100%;height: 100%;border-radius: 5px;"/>
</div>
<div class="layui-col-md11" style="height: 80px;">
<div class="title">为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?</div>
<div class="content">
“Git的精髓在于让所有人的贡献无缝合并。而GitHub的天才之处,在于理解了Git的精髓。”来一句我们程序员们接地气的话:分享是一种快乐~
</div>
<div class="comment">2020-06-12 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 评论 5 点赞 12 转发
4
</div>
</div>
</div>
<div class="layui-row layui-col-space10" style="margin: 15px;">
<div class="layui-col-md1">
<img src="{{ url_for('static', filename='admin/admin/images/act.jpg') }}"
style="width: 100%;height: 100%;border-radius: 5px;"/>
</div>
<div class="layui-col-md11" style="height: 80px;">
<div class="title">为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?</div>
<div class="content">
“Git的精髓在于让所有人的贡献无缝合并。而GitHub的天才之处,在于理解了Git的精髓。”来一句我们程序员们接地气的话:分享是一种快乐~
</div>
<div class="comment">2020-06-12 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 评论 5 点赞 12 转发
4
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% include 'admin/common/footer.html' %}
<script >
layui.use(['element', 'jquery', 'layer','form'], function () {
let $ = layui.jquery;
let layer = layui.layer;
let form = layui.form;
$(".edit-password").click(function () {
layer.open({
type: 2,
title: '修改密码',
shade: 0.1,
area: ['550px', '280px'],
content: '/admin/user/editPassword'
});
return false;
});
$("#avatar").click(function () {
layer.open({
type: 2,
title: '更换图片',
shade: 0.1,
area: ["900px", "500px"],
content: '/admin/user/profile',
btn: ['确定', '取消'],
yes: function (index, layero) {
window['layui-layer-iframe' + index].submitForm();
}
});
});
form.on('submit(user-update)', function (data) {
$.ajax({
url: '/admin/user/updateInfo',
data: JSON.stringify(data.field),
dataType: 'json',
contentType: 'application/json',
type: 'put',
success: function (result) {
if (result.success) {
layer.msg("修改成功", {icon: 1, time: 1000});
} else {
layer.msg("修改失败", {icon: 2, time: 1000});
}
}
});
return false;
});
})
</script>
</body>
</html>
+117
View File
@@ -0,0 +1,117 @@
<!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>用户编辑</title>
{% include 'admin/common/header.html' %}
</head>
<body>
<form class="layui-form" action="">
<div class="mainBox">
<div class="main-container">
<div class="main-container">
<div class="layui-form-item layui-hide">
<label class="layui-form-label">编号</label>
<div class="layui-input-block">
<input type="text" value="{{ user.id }}" name="userId" lay-verify="title"
autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">账号</label>
<div class="layui-input-block">
<input type="text" value="{{ user.username }}" name="username" lay-verify="title"
autocomplete="off" placeholder="请输入标题" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" value="{{ user.realname }}" name="realName" lay-verify="title" autocomplete="off" placeholder="请输入标题"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">部门</label>
<div class="layui-input-block">
<ul id="selectParent" name="deptId" class="dtree" data-id="0"></ul>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">角色</label>
<div class="layui-input-block">
{% for role in roles %}
<input{% if role.id in checked_roles %}
checked
{% endif %}
value="{{role.id}}" title="{{role.name}}" type="checkbox"
name="roleIds" lay-skin="primary">
{% endfor %}
</div>
</div>
</div>
</div>
</div>
<div class="bottom">
<div class="button-container">
<button type="submit" class="pear-btn pear-btn-primary pear-btn-sm" lay-submit=""
lay-filter="user-update">
<i class="layui-icon layui-icon-ok"></i>
提交
</button>
<button type="reset" class="pear-btn pear-btn-sm">
<i class="layui-icon layui-icon-refresh"></i>
重置
</button>
</div>
</div>
</form>
{% include 'admin/common/footer.html' %}
<script>
layui.use(['form', 'jquery','dtree'], function () {
let form = layui.form;
let $ = layui.jquery;
let dtree = layui.dtree;
dtree.renderSelect({
elem: "#selectParent",
url: "/admin/dept/tree",
method: 'get',
selectInputName: {nodeId: "deptId", context: "deptName"},
skin: "layui",
dataFormat: "list",
response: {treeId: "deptId", parentId: "parentId", title: "deptName"},
selectInitVal: "{{ user.dept_id }}"
});
form.on('submit(user-update)', function (data) {
let roleIds = "";
$('input[type=checkbox]:checked').each(function () {
roleIds += $(this).val() + ",";
});
roleIds = roleIds.substr(0, roleIds.length - 1);
data.field.roleIds = roleIds;
$.ajax({
url: '/admin/user/update',
data: JSON.stringify(data.field),
dataType: 'json',
contentType: 'application/json',
type: 'put',
success: function (result) {
if (result.success) {
layer.msg(result.msg, {icon: 1, time: 1000}, function () {
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
parent.layui.table.reload("user-table");
});
} else {
layer.msg(result.msg, {icon: 2, time: 1000});
}
}
});
return false;
});
})
</script>
</body>
</html>
@@ -0,0 +1,79 @@
<!DOCTYPE html>
<html>
<head>
<title>修改密码</title>
{% include 'admin/common/header.html' %}
</head>
<body>
<form class="layui-form" action="">
<div class="mainBox">
<div class="main-container">
<div class="main-container">
<div class="layui-form-item">
<label class="layui-form-label">旧密码</label>
<div class="layui-input-block">
<input type="password" name="oldPassword" lay-verify="title" autocomplete="off"
placeholder="请输入标题" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">新密码</label>
<div class="layui-input-block">
<input type="password" name="newPassword" lay-verify="title" autocomplete="off"
placeholder="请输入标题" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">确认密码</label>
<div class="layui-input-block">
<input type="password" name="confirmPassword" lay-verify="title" autocomplete="off"
placeholder="请输入标题" class="layui-input">
</div>
</div>
</div>
</div>
</div>
<div class="bottom">
<div class="button-container">
<button type="submit" class="pear-btn pear-btn-primary pear-btn-sm" lay-submit="" lay-filter="edit-password">
<i class="layui-icon layui-icon-ok"></i>
提交
</button>
<button type="reset" class="pear-btn pear-btn-sm">
<i class="layui-icon layui-icon-refresh"></i>
重置
</button>
</div>
</div>
</form>
{% include 'admin/common/footer.html' %}
<script>
layui.use(['form', 'jquery','popup'], function () {
let form = layui.form;
let $ = layui.jquery;
let popup = layui.popup;
form.on('submit(edit-password)', function (data) {
$.ajax({
url: '/admin/user/editPassword',
data: JSON.stringify(data.field),
contentType: 'application/json',
dataType: 'json',
type: 'put',
success: function (result) {
if (result.success) {
popup.success(result.msg,function(){
parent.layer.close(parent.layer.getFrameIndex(window.name));
});
} else {
popup.failure(result.msg);
}
}
});
return false;
});
})
</script>
</body>
</html>
+315
View File
@@ -0,0 +1,315 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>用户管理</title>
{% include 'admin/common/header.html' %}
<link rel="stylesheet" href="{{ url_for('static', filename='/admin/admin/css/other/user.css') }}" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<form class="layui-form" action="" lay-filter="user-query-form">
<div class="layui-form-item">
<label class="layui-form-label">用户</label>
<div class="layui-input-inline">
<input type="text" name="realName" placeholder="" class="layui-input">
</div>
<label class="layui-form-label">账号</label>
<div class="layui-input-inline">
<input type="text" name="username" placeholder="" class="layui-input">
</div>
<button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="user-query">
<i class="layui-icon layui-icon-search"></i>
查询
</button>
<button type="reset" class="pear-btn pear-btn-md">
<i class="layui-icon layui-icon-refresh"></i>
重置
</button>
</div>
</form>
</div>
</div>
<div class="user-left user-collasped">
<div class="layui-card">
<div class="layui-card-body">
<div class="button button-primary user-group" user-group=""> 全 部 用 户 </div>
<div class="button button-default user-group" user-group="-1"> 默 认 分 组 </div>
<div style="overflow: auto">
<ul id="dept-tree" class="dept-tree" data-id="0"></ul>
</div>
</div>
</div>
</div>
<div class="user-main user-collasped">
<div class="layui-card">
<div class="layui-card-body">
<table id="user-table" lay-filter="user-table"></table>
</div>
</div>
</div>
</body>
<script type="text/html" id="user-toolbar">
{% if authorize("admin:user:add") %}
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
<i class="pear-icon pear-icon-add"></i>
新增
</button>
{% endif %}
{% if authorize("admin:user:remove") %}
<button class="pear-btn pear-btn-md" lay-event="batchRemove">
<i class="pear-icon pear-icon-ashbin"></i>
删除
</button>
{% endif %}
<button class="pear-btn pear-btn-md" lay-event="collasped">
<i class="pear-icon pear-icon-modular"></i>
高级
</button>
</script>
<script type="text/html" id="user-bar">
{% if authorize("admin:user:edit") %}
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="pear-icon pear-icon-edit"></i>
</button>
{% endif %}
{% if authorize("admin:user:remove") %}
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="pear-icon pear-icon-ashbin"></i>
</button>
{% endif %}
</script>
<script type="text/html" id="user-enable">
<input type="checkbox" name="enable" value="{{"{{ d.id }}"}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="user-enable"
{{"{{# if(d.enable==1){ }} checked {{# } }}"}} />
</script>
<script type="text/html" id="user-createTime">
{{' {{layui.util.toDateString(d.create_at, "yyyy-MM-dd HH:mm:ss")}' |safe}}}
</script>
<script type="text/html" id="user-updateTime">
{{' {{layui.util.toDateString(d.update_at, "yyyy-MM-dd HH:mm:ss")}' |safe}}}
</script>
{% include 'admin/common/footer.html' %}
<script>
layui.use(['table', 'dtree','form', 'jquery','popup','common'], function () {
let table = layui.table;
let form = layui.form;
let $ = layui.jquery;
let dtree = layui.dtree;
let popup = layui.popup;
let common = layui.common;
let MODULE_PATH = "/admin/user/";
let cols = [
[
{% if authorize("admin:user:remove") %}
{type: 'checkbox'},
{% endif %}
{title: '姓名', field: 'realname', align: 'center', width: 110},
{title: '账号', field: 'username', align: 'center'},
{title: '部门', field: 'dept', align: 'center'},
{title: '启用', field: 'enable', align: 'center', templet: '#user-enable',width: 120},
{title: '注册时间', field: 'create_at', templet: '#user-createTime', align: 'center'},
{title: '更新时间', field: 'update_at', templet: '#user-updateTime', align: 'center'},
{title: '操作', toolbar: '#user-bar', align: 'center', width: 130}
]
];
table.render({
elem: '#user-table',
url: MODULE_PATH + 'data',
page: true,
cols: cols,
skin: 'line',
height: 'full-148',
toolbar: '#user-toolbar',
text: {none: '暂无人员信息'},
defaultToolbar: [{layEvent: 'refresh', icon: 'layui-icon-refresh'}, 'filter', 'print', 'exports']
});
dtree.render({
elem: "#dept-tree",
method: "get",
url: "/admin/dept/tree",
dataFormat: "list",
line: true,
skin: "laySimple",
icon: "-1",
response: {treeId: "deptId", parentId: "parentId", title: "deptName"},
});
dtree.on("node('dept-tree')" ,function(obj){
let field = form.val("user-query-form");
field.deptId = obj.param.nodeId;
window.refresh(field);
});
$(".user-group").click(function(){
let group = $(this).attr("user-group");
let field = form.val("user-query-form");
if(group==="-1"){
field.deptId = group;
$(this).removeClass("button-default");
$(this).prev().removeClass("button-primary");
$(this).prev().addClass("button-default");
$(this).addClass("button-primary");
}else{
field.deptId = group;
$(this).removeClass("button-default");
$(this).next().removeClass("button-primary");
$(this).next().addClass("button-default");
$(this).addClass("button-primary");
}
window.refresh(field);
})
table.on('tool(user-table)', function (obj) {
if (obj.event === 'remove') {
window.remove(obj);
} else if (obj.event === 'edit') {
window.edit(obj);
}
});
table.on('toolbar(user-table)', function (obj) {
if (obj.event === 'add') {
window.add();
} else if (obj.event === 'refresh') {
window.refresh();
} else if (obj.event === 'batchRemove') {
window.batchRemove(obj);
} else if(obj.event === 'collasped'){
$(".user-left").toggleClass("user-collasped");
$(".user-main").toggleClass("user-collasped");
table.resize();
}
});
form.on('submit(user-query)', function (data) {
window.refresh(data.field);
return false;
});
form.on('switch(user-enable)', function (obj) {
let operate;
if (obj.elem.checked) {
operate = "enable";
} else {
operate = "disable";
}
let loading = layer.load();
$.ajax({
url: '/admin/user/' + operate,
data: JSON.stringify({userId: this.value}),
dataType: 'json',
contentType: 'application/json',
type: 'put',
success: function (result) {
layer.close(loading);
if (result.success) {
popup.success(result.msg);
} else {
popup.failure(result.msg);
}
}
})
});
window.add = function () {
layer.open({
type: 2,
title: '新增',
shade: 0.1,
area: ['550px', '550px'],
content: MODULE_PATH + 'add'
});
};
window.edit = function (obj) {
layer.open({
type: 2,
title: '修改',
shade: 0.1,
area: ['550px', '500px'],
content: MODULE_PATH + 'edit/' + obj.data['id']
});
};
window.remove = function (obj) {
layer.confirm('确定要删除该用户', {icon: 3, title: '提示'}, function (index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: MODULE_PATH + "remove/" + obj.data['id'],
dataType: 'json',
type: 'delete',
success: function (result) {
layer.close(loading);
if (result.success) {
popup.success(result.msg,function(){
obj.del();
});
} else {
popup.failure(result.msg);
}
}
})
});
};
window.batchRemove = function(obj) {
let data = table.checkStatus(obj.config.id).data;
if (data.length === 0) {
layer.msg("未选中数据", {
icon: 3,
time: 1000
});
return false;
}
var ids = [];
var hasCheck = table.checkStatus('user-table');
var hasCheckData = hasCheck.data;
if (hasCheckData.length > 0) {
$.each(hasCheckData, function (index, element) {
ids.push(element.id)
})
}
{#console.log(ids);#}
layer.confirm('确定要删除选中角色', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: MODULE_PATH + "batchRemove",
data: {ids:ids},
dataType: 'json',
type: 'delete',
success: function (result) {
layer.close(loading);
if (result.success) {
popup.success(result.msg, function () {
table.reload('role-table');
});
} else {
popup.failure(result.msg);
}
}
})
});
};
window.refresh = function (param) {
table.reload('user-table', {where: param});
}
})
</script>
</html>
@@ -0,0 +1,121 @@
<!DOCTYPE html>
<html>
<head>
<title>头像上传</title>
{% include 'admin/common/header.html' %}
</head>
<body class="pear-container">
<div class="layui-row layui-col-space15">
<div class="layui-col-xs9">
<div style="height:325px;background-color: rgb(247, 247, 247);">
<img id="sourceImage" src="">
</div>
</div>
<div class="layui-col-xs3" style="padding-left:0px;">
<div id="previewImage" style="width:210px;height:210px;border: 1px solid rgb(200, 200, 200);border-radius: 50%;overflow:hidden;">
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-form-item">
<div class="layui-input-inline layui-btn-container" style="width: auto;vertical-align:top;">
<button class="pear-btn pear-btn-sm pear-btn-primary layui-icon layui-icon-left" cropper-event="rotate" data-option="-15" title="左旋15°"></button>
<button class="pear-btn pear-btn-sm pear-btn-primary layui-icon layui-icon-right" cropper-event="rotate" data-option="15" title="右旋15°"></button>
<button class="pear-btn pear-btn-sm pear-btn-danger layui-icon layui-icon-refresh" cropper-event="reset" title="重置"></button>
<label for="uploadPicture" class="pear-btn pear-btn-sm pear-btn-primary layui-icon layui-icon-upload" title="选择图片"></label>
<input class="layui-upload-file" id="uploadPicture" type="file" value="选择图片">
</div>
<div class="layui-form-mid layui-word-aux">建议:图片的尺寸宽高比为1:1,大小在5m以内。</div>
</div>
</div>
</body>
{% include 'admin/common/footer.html' %}
<script>
layui.use(['jquery','layer','cropper','popup'], function () {
let $ = layui.jquery;
let layer = layui.layer;
let cropper = layui.cropper;
let popup = layui.popup;
let options = {
aspectRatio: 1 / 1, // 裁剪框比例
preview: '#previewImage', // 预览div
viewmode: 1
};
$("#sourceImage").attr("src", parent.layui.$("#avatar").attr("src"));
$("#sourceImage").cropper(options);
window.submitForm = function () {
$("#sourceImage").crossOrigin = 'anonymous';//解决跨域图片问题
$("#sourceImage").cropper("getCroppedCanvas", {
width: 280,
height: 140
}).toBlob(function (blob) {
let timeStamp = Date.parse(new Date());
let fileName = timeStamp + '.jpg';
let formData = new FormData();
formData.append('file', blob, fileName);
formData.append('fileName', fileName);
formData.append('fileToken', timeStamp);
$.ajax({
method: "post",
url: "/admin/file/upload", //用于文件上传的服务器端请求地址
data: formData,
processData: false,
contentType: false,
success: function (result) {
if(result.success){
// 修改 avatar 字段
$.ajax({
method:"put",
url: "/admin/user/updateAvatar",
data: JSON.stringify({avatar:result.data}),
dataType: "json",
contentType: 'application/json',
success:function(resu){
if(resu.success){
// 关闭当前弹层
parent.layui.$("#avatar").attr("src", result.data.src);
top.layui.$("#avatar").attr("src", result.data.src);
parent.layer.close(parent.layer.getFrameIndex(window.name));
}else{
popup.failure("上传失败")
}
}
})
}else{
popup.failure("上传失败")
}
}
});
});
};
$(".pear-btn").on('click', function () {
let event = $(this).attr("cropper-event");
if (event === 'rotate') {
let option = $(this).attr('data-option');
$("#sourceImage").cropper('rotate', option);
} else if (event === 'reset') {
$("#sourceImage").cropper('reset');
}
$("#uploadPicture").change(function () {
let r = new FileReader();
let f = this.files[0];
let uploadFileSize = f.size / 1024;
if (uploadFileSize > 5120) {
parent.layer.msg("上传文件不得超过5m", { icon: 5 });
return false;
}
r.readAsDataURL(f);
r.onload = function (e) {
$("#sourceImage")
.cropper('destroy')
.attr('src', this.result)
.cropper(options);
};
});
});
});
</script>