Files
SMANAGE/backup/GERP old/KeyUnit/SiteUserManagement.html
T

308 lines
16 KiB
HTML

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<resource-share type="script" src="/assets/js/formConfigs/TestForm.js"></resource-share>
<resource-share type="style" src="/assets/css/formpower.css"></resource-share>
<resource-share type="style" src="/assets/lib/NeoUI/NeoWebUI3/WebUI3.css"></resource-share>
<div class="layui-fluid">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card" id="Member-Card"></div>
</div>
</div>
</div>
<script>
const TABLE_CONFIG = {
base: {
cardId: 'Member-Card',
primaryKey: 'UserUUID',
title: '站点用户管理',
full: true,
api: {
get: '/API/FormAPI/Get/SiteUserManagement',
modify: '/API/FormAPI/ModifyItem/SiteUserManagement',
add: '/API/FormAPI/Add/SiteUserManagement',
edit: '/API/FormAPI/Modify/SiteUserManagement',
delete: '/API/FormAPI/Delete/SiteUserManagement'
},
editableFields: [
'UserJobNumber',
'UserName',
'UserPermission',
'UserPositionStatus',
'UserPersonalSignature',
'UserJob',
'UserEmail',
'UserGender',
'UserTele',
'UserTheme',
'UserPhotoViewPort'
],
toolbarBtns: [
{ name: "新增用户", class: 'primary', event: 'NewMember' },
{ name: "复制选中的 UUID", class: '', event: 'CopyCheckedUUID' },
{ name: "批量删除", class: '', event: 'BatchDelete' },
{ name: "导出数据", class: '', event: 'Export' },
{ name: "刷新", class: '', event: 'Refresh' },
],
toolsBtns: [
{ name: "查看", class: 'view', event: 'detail' },
{ name: "查看背包", class: 'view', event: 'detailBackpack' },
{ name: "编辑", class: '', event: 'edit' },
{ name: "复制 UUID", class: '', event: 'CopyUUID' },
{ name: "更多 <i class=\"layui-icon layui-icon-down\"></i>", class: '', event: 'more' }
],
// filterList: [] // 待修改
},
render: {
method: 'GET',
tree: { view: { iconLeaf: '<i class="layui-icon layui-icon-username"></i>' } },
cols: [[
{ type: 'checkbox', fixed: 'left', sticky: true },
{ field: 'UserUUID', title: '用户编号', minWidth: 120, sticky: true },
{ field: 'UserJobNumber', title: '用户工号', minWidth: 120, sticky: true, edit: 'text', type: 'number', minlength: 8, maxlength: 8 },
{ field: 'UserName', title: '用户昵称', minWidth: 100, sticky: true, edit: 'text' },
{ field: 'UserPermission', title: '用户权限', minWidth: 80, edit: 'text', type: 'number', minlength: 1.0, maxlength: 5.0, templet: function(d) {
const permissionMap = {
1.0: '管理员',
0.5: '操作员',
0.1: '普通用户'
};
return permissionMap[d.UserPermission] || d.UserPermission;
}},
{ field: 'UserGender', title: '用户性别', edit: 'text', type: 'number', minlength: -1, maxlength: 1, minWidth: 60 },
{ field: 'UserEmail', title: '用户邮件', edit: 'text', maxlength: 256, minWidth: 180 },
{ field: 'UserEmailVerify', title: '邮件验证', minWidth: 50, templet: function(d) {
return d.UserEmailVerify ?
'<span class="layui-badge layui-bg-blue">已验证</span>' :
'<span class="layui-badge layui-bg-red">未验证</span>';
}},
{ field: 'UserAccountLicense', title: '账户许可证', minWidth: 50, templet: function(d) {
return d.UserAccountLicense ?
'<span class="layui-badge layui-bg-green">通过</span>' :
'<span class="layui-badge layui-bg-red">终止</span>';
}},
{ field: 'UserTele', title: '用户电话', edit: 'text', maxlength: 11, minWidth: 120 },
{ field: 'UserLastLoginDate', title: '最后登录时间', minWidth: 200 },
{ field: 'UserCreateTime', title: '创建时间', minWidth: 200 },
{ fixed: 'right', title: '操作', width: 250, sticky: true}
]],
height: 580
},
events: {
toolbar: {
NewMember: (manager) => {
manager.confirmAddFormSubmit({
formKey: 'user-add',
successMessage: '成功添加用户信息'
});
}
},
tool: {
detail: (trData, trObj, manager) => {
layer.open({
type: 2,
title: `用户详情 - ${trData.UserName}`,
content: `/WorkGroup/UserDetail.html?UserUUID=${trData.UserUUID}`,
area: ['800px', '600px'],
shade: 0.3,
maxmin: true
});
},
detailBackpack: (trData, trObj, manager) => {
gerp.addTab(
`站点用户管理 - 背包 [${trData.UserName}]`,
`/KeyUnit/Backpack.html?UserUUID=${trData.UserUUID}`
);
},
edit: (trData, trObj, manager) => {
manager.confirmFormSubmit({
formKey: 'user-edit',
openForm: { data: trData },
trData: trData,
successMessage: '成功修改用户信息'
});
},
CopyUUID: (trData, trObj, manager) => {
copyToClipboard({ text: trData.UserUUID }).then(() => {
layer.msg(`复制成功,UUID: ${trData.UserUUID}`, {icon: 1});
})
.catch((err) => {
layer.msg(`复制失败:${err}`, {icon: 1});
});
},
more: (trData, trObj, manager) => {
dropdown.render({
elem: trObj,
show: true,
align: 'right',
data: [
{ title: '重置密码', id: 'resetPwd' },
{ title: '验证密码', id: 'verifyPassword' },
{ title: '禁用账户', id: 'disableAccount' },
{ title: '启用账户', id: 'enableAccount' },
{ title: '通过邮箱验证', id: 'enableEmailVerify' },
{ title: '结束邮箱验证', id: 'disableEmailVerify' },
{ title: '删除', id: 'del' }
],
click: (menudata) => {
switch (menudata.id) {
case 'resetPwd':
layer.prompt({
title: '重置密码',
value: '123456789',
formType: 1
}, function(pwd, index) {
$.ajax({
url: "/API/SiteUserManagement/ResetPassword",
type: 'POST',
data: {
UserUUID: trData.UserUUID,
UserNewPassword: pwd
},
success: function(res) {
if (res.code == 0) {
layer.msg('密码重置成功', {icon: 1});
} else {
layer.msg(`重置失败:${res.msg}`, {icon: 5});
}
},
error: handleAjaxError
});
layer.close(index);
});
break;
case 'verifyPassword':
layer.prompt({
title: '验证用户密码',
formType: 1 // 密码输入框
}, function(pwd, index) {
// 发起请求验证密码
$.ajax({
url: "/API/SiteUserManagement/VerifyPassword",
type: 'POST',
data: {
UserUUID: trData.UserUUID,
UserPassword: pwd
},
success: function(res) {
if (res.code == 0) {
layer.msg('密码正确', {icon: 1, time: 1500});
} else {
layer.msg(`密码错误:${res.msg || '未知错误'}`, {icon: 5, time: 2000});
}
},
error: handleAjaxError
});
layer.close(index); // 关闭输入框
});
break;
case 'disableAccount':
layer.confirm("确定要禁用用户【" + trData.UserName + "】吗?", {
title: '禁用确认',
icon: 3
}, function(index) {
$.ajax({
url: "/API/SiteUserManagement/DisableAccount",
type: 'POST',
data: { UserUUID: trData.UserUUID },
success: function(res) {
if (res.code == 0) {
layer.msg('账户已禁用', {icon: 1});
tableInst.reload();
} else {
layer.msg(`禁用失败:${res.msg}`, {icon: 5});
}
},
error: handleAjaxError
});
layer.close(index);
});
break;
case 'enableAccount':
layer.confirm("确定要启用用户【" + trData.UserName + "】吗?", {
title: '启用确认',
icon: 3
}, function(index) {
$.ajax({
url: "/API/SiteUserManagement/EnableAccount",
type: 'POST',
data: { UserUUID: trData.UserUUID },
success: function(res) {
if (res.code == 0) {
layer.msg('账户已启用', {icon: 1});
tableInst.reload();
} else {
layer.msg(`启用失败:${res.msg}`, {icon: 5});
}
},
error: handleAjaxError
});
layer.close(index);
});
break;
case 'enableEmailVerify':
layer.confirm(`确定要通过用户【${trData.UserName}】的邮箱验证吗?`, {
title: '通过邮箱验证确认',
icon: 3
}, function(index) {
$.ajax({
url: "/API/SiteUserManagement/EnableAccountEmailVerify",
type: 'POST',
data: { UserUUID: trData.UserUUID },
success: function(res) {
if (res.code == 0) {
layer.msg('邮箱验证已通过', {icon: 1});
tableInst.reload(); // 刷新表格更新状态
} else {
layer.msg(`通过失败:${res.msg}`, {icon: 5});
}
},
error: handleAjaxError
});
layer.close(index);
});
break;
case 'disableEmailVerify':
layer.confirm(`确定要结束用户【${trData.UserName}】的邮箱验证状态吗?`, {
title: '结束邮箱验证确认',
icon: 3
}, function(index) {
$.ajax({
url: "/API/SiteUserManagement/DisableAccountEmailVerify",
type: 'POST',
data: { UserUUID: trData.UserUUID },
success: function(res) {
if (res.code == 0) {
layer.msg('邮箱验证已结束', {icon: 1});
tableInst.reload(); // 刷新表格更新状态
} else {
layer.msg(`结束失败:${res.msg}`, {icon: 5});
}
},
error: handleAjaxError
});
layer.close(index);
});
break;
case 'del':
manager.confirmAction({
title: "用户管理",
message: `确认要注销 用户 ${trData.UserName} 吗?`,
api: manager.config.base.api.delete,
params: { id: trData.id },
successMessage: "删除成功"
});
break;
}
}
});
}
}
}
};
window.tableManager = new tableEngine.TableManager(TABLE_CONFIG);
</script>