chore: 重写初始提交(清空历史,整理后全量提交)
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>头像设置 - 后台管理</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="/assets/layui/css/layui.css">
|
||||
<link rel="stylesheet" href="/assets/ywxapp/modules/cropper/cropper.css">
|
||||
<style>
|
||||
body { background: #f2f3f5; }
|
||||
.uc-head { background: #fff; border-bottom: 1px solid #eee; padding: 12px 20px; display: flex; align-items: center; justify-content: space-between; }
|
||||
.uc-head .title { font-size: 16px; font-weight: 700; }
|
||||
.uc-wrap { max-width: 960px; margin: 16px auto; padding: 0 14px; }
|
||||
.readyimg { background: #f7f7f7; height: 420px; display: flex; align-items: center; justify-content: center; overflow: hidden; }
|
||||
.readyimg img { max-width: 100%; max-height: 100%; display: block; }
|
||||
.img-preview { width: 150px; height: 150px; overflow: hidden; border-radius: 50%; border: 1px solid #eee; background: #f7f7f7; }
|
||||
.img-preview img { width: 100%; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="uc-wrap">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">设置头像</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-form-item">
|
||||
<button type="button" class="layui-btn layui-btn-primary" id="pickBtn">
|
||||
<i class="layui-icon"></i> 选择图片
|
||||
</button>
|
||||
<input id="avatarImgUpload" type="file" accept="image/*" name="file" style="display:none">
|
||||
<div class="layui-form-mid layui-word-aux">支持 jpg / png / gif,建议尺寸 150x150 以上,大小 4M 以内</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md9">
|
||||
<div class="readyimg"><img id="cropImage" src=""></div>
|
||||
</div>
|
||||
<div class="layui-col-md3">
|
||||
<div class="layui-form-mid">预览:</div>
|
||||
<div class="img-preview" style="margin-top:8px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15" style="margin-top:14px;">
|
||||
<div class="layui-col-md9">
|
||||
<button type="button" class="layui-btn" id="rotateLeft"><i class="layui-icon layui-icon-left"></i> 向左旋转</button>
|
||||
<button type="button" class="layui-btn" id="rotateRight"><i class="layui-icon layui-icon-right"></i> 向右旋转</button>
|
||||
<button type="button" class="layui-btn" id="resetImg"><i class="layui-icon layui-icon-refresh"></i> 重置</button>
|
||||
</div>
|
||||
<div class="layui-col-md3">
|
||||
<button type="button" class="layui-btn layui-btn-fluid" id="confirmSave">保存修改</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/layui/layui.js"></script>
|
||||
<script>
|
||||
layui.config({ base: '/assets/ywxapp/modules/' }).extend({ cropper: 'cropper/cropper' });
|
||||
|
||||
layui.use(['jquery', 'layer', 'cropper', 'http'], function () {
|
||||
var $ = layui.$;
|
||||
var layer = layui.layer;
|
||||
var http = layui.http;
|
||||
var $image = $('#cropImage');
|
||||
var options = { aspectRatio: 1 / 1, preview: '.img-preview', viewMode: 1 };
|
||||
var cropped = false;
|
||||
|
||||
$('#pickBtn').on('click', function () { $('#avatarImgUpload').click(); });
|
||||
$('#avatarImgUpload').on('change', function () {
|
||||
var file = this.files[0];
|
||||
if (!file) return;
|
||||
var reader = new FileReader();
|
||||
reader.onload = function (e) {
|
||||
$image.attr('src', e.target.result);
|
||||
$image.off('load.crop').on('load.crop', function () {
|
||||
if (cropped) { $image.cropper('destroy'); }
|
||||
$image.cropper(options);
|
||||
cropped = true;
|
||||
});
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
this.value = '';
|
||||
});
|
||||
|
||||
$('#rotateLeft').on('click', function () { if (cropped) $image.cropper('rotate', -15); });
|
||||
$('#rotateRight').on('click', function () { if (cropped) $image.cropper('rotate', 15); });
|
||||
$('#resetImg').on('click', function () { if (cropped) $image.cropper('reset'); });
|
||||
|
||||
$('#confirmSave').on('click', function () {
|
||||
if (!cropped) { layer.msg('请先选择图片', { icon: 2 }); return; }
|
||||
var canvas = $image.cropper('getCroppedCanvas', { width: 300, height: 300 });
|
||||
if (!canvas) { layer.msg('裁剪失败,请重试', { icon: 2 }); return; }
|
||||
layer.load(1, { shade: [0.3, '#fff'] });
|
||||
canvas.toBlob(function (blob) {
|
||||
var fd = new FormData();
|
||||
fd.append('file', blob, 'avatar.png');
|
||||
fd.append('type', 'avatar');
|
||||
http.post("{:url('Profile/avatar')}", fd).then(function (res) {
|
||||
layer.closeAll('loading');
|
||||
if (res.code === 0 && res.data && res.data.src) {
|
||||
layer.msg(res.msg || '头像上传成功', { icon: 1 });
|
||||
refreshTopAvatar(res.data.src);
|
||||
} else {
|
||||
layer.msg(res.msg || '上传失败', { icon: 2 });
|
||||
}
|
||||
}).catch(function () {
|
||||
layer.closeAll('loading');
|
||||
layer.msg('网络错误,上传失败', { icon: 2 });
|
||||
});
|
||||
}, 'image/png');
|
||||
});
|
||||
|
||||
function refreshTopAvatar(src) {
|
||||
try {
|
||||
if (window !== top && parent.layui && parent.layui.ywxapp) {
|
||||
var ts = '?t=' + Date.now();
|
||||
parent.document.querySelectorAll('img.layui-nav-img').forEach(function (im) {
|
||||
im.src = src + ts;
|
||||
});
|
||||
setTimeout(function () { parent.layui.ywxapp.closeThisTabs(); }, 700);
|
||||
return;
|
||||
}
|
||||
} catch (e) { /* 跨域等情况忽略 */ }
|
||||
setTimeout(function () { location.href = '/admin/index/index'; }, 700);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,82 @@
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">设置我的资料</div>
|
||||
<div class="layui-card-body" pad15>
|
||||
|
||||
<div class="layui-form" lay-filter="">
|
||||
<!-- <div class="layui-form-item">
|
||||
<label class="layui-form-label">我的角色</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="role" lay-verify="">
|
||||
<option value="1" selected>超级管理员</option>
|
||||
<option value="2" disabled>普通管理员</option>
|
||||
<option value="3" disabled>审核员</option>
|
||||
<option value="4" disabled>编辑人员</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">当前角色不可更改为其它角色</div>
|
||||
</div> -->
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" disabled name="account" value="{$info.account|default=" 这家伙很懒,什么也没留下"}" readonly class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">昵称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="nickname" value="{$info.nickname|default=" 这家伙很懒,什么也没留下"}" lay-verify="nickname" 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="radio" name="sex" value="男" title="男" checked>
|
||||
<input type="radio" name="sex" value="女" title="女">
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">头像</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="avatar" lay-verify="required" id="LAY_avatarSrc" placeholder="图片地址" value="{$info.avatar|default=" https://unpkg.com/outeres@0.0.5/demo/000.jpg"}" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-input-inline layui-btn-container" style="width: auto;">
|
||||
<button type="button" class="layui-btn layui-btn-primary" id="LAY_avatarUpload">
|
||||
<i class="layui-icon"></i>上传图片
|
||||
</button>
|
||||
<button class="layui-btn layui-btn-primary" layadmin-event="avartatPreview">查看图片</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">手机</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="mobile" value="{$info.mobile|default=""}" lay-verify="phone" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">邮箱</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="email" value="{$info.email|default=""}" lay-verify="email" autocomplete="off" 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 name="remarks" placeholder="请输入内容" class="layui-textarea">{$info.remarks|default=""}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit lay-filter="setmyinfo">确认修改</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重新填写</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>修改密码 - 后台管理</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="/assets/layui/css/layui.css">
|
||||
<style>
|
||||
body { background: #f2f3f5; }
|
||||
.uc-wrap { max-width: 520px; margin: 20px auto; padding: 0 14px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="uc-wrap">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">重置登录密码</div>
|
||||
<div class="layui-card-body" pad15>
|
||||
<div class="layui-form" lay-filter="passForm">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">当前密码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="password" name="old_password" lay-verify="required" placeholder="请输入当前密码" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">新密码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="password" name="password" id="LAY_password" lay-verify="pass" placeholder="6-12 位,不含空格" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">确认新密码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="password" name="password_confirm" lay-verify="repass" placeholder="再次输入新密码" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit lay-filter="setmypass">确认修改</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/layui/layui.js"></script>
|
||||
<script>
|
||||
layui.use(['form', 'layer'], function () {
|
||||
var form = layui.form, layer = layui.layer, $ = layui.$;
|
||||
|
||||
form.verify({
|
||||
pass: [/^[\S]{6,12}$/, '密码必须 6 到 12 位,且不能出现空格'],
|
||||
repass: function (value) {
|
||||
if (value !== $('#LAY_password').val()) {
|
||||
return '两次密码输入不一致';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
form.on('submit(setmypass)', function (obj) {
|
||||
$.post('{:url("Profile/passwordSave")}', obj.field, function (res) {
|
||||
if (res.code === 1 || res.code === 0) {
|
||||
layer.msg(res.msg || '修改成功', { icon: 1 });
|
||||
setTimeout(function () {
|
||||
if (window !== top && parent.layui && parent.layui.ywxapp) {
|
||||
parent.layui.ywxapp.closeThisTabs();
|
||||
} else {
|
||||
location.href = '/admin/index/index';
|
||||
}
|
||||
}, 800);
|
||||
} else {
|
||||
layer.msg(res.msg || '修改失败', { icon: 2 });
|
||||
}
|
||||
}, 'json').fail(function () {
|
||||
layer.msg('请求失败', { icon: 2 });
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user