329 lines
13 KiB
HTML
329 lines
13 KiB
HTML
<resource-share type="script" src="/assets/js/formConfigs/departmentMemberForm.js"></resource-share>
|
|
|
|
<div class="layui-fluid">
|
|
<div class="layui-row layui-col-space15">
|
|
<div class="layui-col-md12">
|
|
<div class="layui-card" id="departmentMemberTable"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
const TABLE_CONFIG = {
|
|
base: {
|
|
cardId: 'departmentMemberTable',
|
|
title: '部门成员管理',
|
|
primaryKey: 'UserUUID',
|
|
full: true,
|
|
api: {
|
|
get: '/API/FormAPI/Get/DepartmentMember',
|
|
modify: '/API/FormAPI/ModifyItem/DepartmentMember',
|
|
add: '/API/FormAPI/Add/DepartmentMember',
|
|
edit: '/API/FormAPI/Modify/DepartmentMember',
|
|
delete: '/API/FormAPI/Delete/DepartmentMember'
|
|
},
|
|
toolbarBtns: [
|
|
{ name: '添加成员', class: 'primary', event: 'AddMember' },
|
|
{ name: '删除选中', class: '', event: 'BatchDelete' },
|
|
{ name: '复制选中UUID', class: '', event: 'CopyCheckedUUID' },
|
|
{ name: '刷新', class: '', event: 'Refresh' }
|
|
],
|
|
toolsBtns: [
|
|
{ name: '查看', class: 'view', event: 'detail' },
|
|
{ name: '编辑', class: '', event: 'edit' },
|
|
{ name: '更多 <i class=\"layui-icon layui-icon-down\"></i>', class: 'warm', event: 'more' }
|
|
],
|
|
// filterList: []
|
|
},
|
|
render: {
|
|
cols: [[
|
|
{ type: 'checkbox', fixed: 'left', width: 50, sticky: true },
|
|
{ field: 'DepartmentUUIDs', title: '部门编号', minWidth: 100 },
|
|
{ field: 'Departments', title: '员工部门', minWidth: 150, sticky: true },
|
|
{
|
|
field: 'PersonInChargeStatus',
|
|
title: '员工类别',
|
|
minWidth: 100,
|
|
templet: function(d) {
|
|
return d.PersonInChargeStatus ?
|
|
'<span class="layui-badge layui-bg-yellow">负责人</span>' :
|
|
'<span class="layui-badge layui-bg-blue">职员</span>';
|
|
}
|
|
},
|
|
{ field: 'UserUUID', title: '员工编号', minWidth: 150 },
|
|
{ field: 'UserName', title: '员工昵称', minWidth: 100, sticky: true },
|
|
{ field: 'UserJobNumber', title: '员工工号', minWidth: 100 },
|
|
{ field: 'UserPermission', title: '员工权限', minWidth: 100 },
|
|
{ field: 'UserGender', title: '员工性别', minWidth: 80 },
|
|
{ field: 'UserEmail', title: '员工邮件', minWidth: 150 },
|
|
{ field: 'UserTele', title: '员工电话', minWidth: 120 },
|
|
{ field: 'UserLastLoginDate', title: '最后登录时间', minWidth: 180 },
|
|
{ field: 'UserCreateTime', title: '创建时间', minWidth: 180 },
|
|
{
|
|
fixed: 'right',
|
|
title: '操作',
|
|
width: 250,
|
|
align: 'center',
|
|
sticky: true
|
|
}
|
|
]],
|
|
page: {
|
|
limits: [10, 20, 50, 100],
|
|
limit: 10
|
|
}
|
|
},
|
|
pages: {
|
|
currid: 'all',
|
|
request: {
|
|
id: 'DepartmentUUID'
|
|
},
|
|
pages: [
|
|
{
|
|
id: 'all',
|
|
name: '所有部门',
|
|
api: '/API/FormAPI/Get/DepartmentMember'
|
|
}
|
|
]
|
|
},
|
|
request: {
|
|
pageName: 'PageIndex',
|
|
limitName: 'PageSize'
|
|
},
|
|
parseData: function(res) {
|
|
return {
|
|
code: res.code === 0 ? 0 : 1,
|
|
msg: res.msg,
|
|
count: res.total || 0,
|
|
data: res.data
|
|
};
|
|
},
|
|
events: {
|
|
toolbar: {
|
|
AddMember: function(manager) {
|
|
const currentPageId = manager.config.pages.currid;
|
|
|
|
if (currentPageId === 'all') {
|
|
layer.msg('请先选择一个具体的部门,再添加成员', {icon: 2});
|
|
return;
|
|
}
|
|
|
|
const departmentUUID = currentPageId;
|
|
|
|
layui.formEngine.openRegisteredForm('department-member-add', {
|
|
data: {
|
|
DepartmentUUID: departmentUUID
|
|
},
|
|
confirm: function(data, close) {
|
|
manager.confirmAction({
|
|
title: '添加成员',
|
|
message: '确认添加此成员吗?',
|
|
api: manager.config.base.api.add,
|
|
params: data,
|
|
successMessage: '成功添加成员',
|
|
callback: function() {
|
|
close();
|
|
manager.loadData();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
},
|
|
BatchDelete: function(manager) {
|
|
const selectedRows = manager.getSelectedRows();
|
|
if (selectedRows.length === 0) {
|
|
layer.msg('请选择要删除的成员', {icon: 2});
|
|
return;
|
|
}
|
|
|
|
const currentPageId = manager.config.pages.currid;
|
|
|
|
if (currentPageId === 'all') {
|
|
layer.msg('请先选择一个具体的部门,再删除成员', {icon: 2});
|
|
return;
|
|
}
|
|
|
|
const userUUIDs = selectedRows.map(row => row.UserUUID).join('\n');
|
|
const departmentUUID = currentPageId;
|
|
|
|
manager.confirmAction({
|
|
title: '删除确认',
|
|
message: '确定要删除这些成员吗?即使删除后可以还原添加,但仍然会影响 GERP-ATSA 自动计划安排',
|
|
api: manager.config.base.api.delete,
|
|
params: {
|
|
DepartmentUUID: departmentUUID,
|
|
UserUUIDs: userUUIDs
|
|
},
|
|
successMessage: '删除成功',
|
|
callback: function() {
|
|
manager.loadData();
|
|
}
|
|
});
|
|
},
|
|
CopyCheckedUUID: function(manager) {
|
|
const selectedRows = manager.getSelectedRows();
|
|
if (selectedRows.length === 0) {
|
|
layer.msg('请选择要复制的成员', {icon: 2});
|
|
return;
|
|
}
|
|
|
|
const text = selectedRows.map(row => row.UserUUID).join('\n');
|
|
|
|
if (navigator.clipboard && window.isSecureContext) {
|
|
navigator.clipboard.writeText(text).then(() => {
|
|
layer.msg('复制成功', {icon: 1});
|
|
}).catch(err => {
|
|
layer.msg(`复制失败:${err}`, {icon: 5});
|
|
});
|
|
} else {
|
|
const textArea = document.createElement("textarea");
|
|
textArea.value = text;
|
|
textArea.style.position = "fixed";
|
|
textArea.style.left = "-999999px";
|
|
textArea.style.top = "-999999px";
|
|
document.body.appendChild(textArea);
|
|
textArea.focus();
|
|
textArea.select();
|
|
try {
|
|
document.execCommand('copy');
|
|
layer.msg('复制成功', {icon: 1});
|
|
} catch (error) {
|
|
layer.msg(`复制失败:${error}`, {icon: 5});
|
|
} finally {
|
|
document.body.removeChild(textArea);
|
|
}
|
|
}
|
|
},
|
|
Refresh: function(manager) {
|
|
manager.loadData();
|
|
layer.msg('已刷新', {icon: 1});
|
|
}
|
|
},
|
|
tool: {
|
|
detail: function(data, trObj, manager) {
|
|
gerp.addTab(
|
|
`部门成员 - [${data.UserName}]`,
|
|
`/WorkGroup/MemberCard.html?UserUUID=${data.UserUUID}`
|
|
);
|
|
},
|
|
edit: function(data, trObj, manager) {
|
|
const currentPageId = manager.config.pages.currid;
|
|
|
|
layui.formEngine.openRegisteredForm('department-edit', {
|
|
data: data,
|
|
confirm: function(editData, close) {
|
|
// 创建一个新的对象来保存修改后的数据
|
|
const newEditData = { ...editData };
|
|
newEditData.DepartmentUUID = currentPageId === 'all' ? '' : currentPageId;
|
|
|
|
manager.confirmAction({
|
|
title: '编辑成员',
|
|
message: '确认修改此成员信息吗?',
|
|
api: manager.config.base.api.edit,
|
|
params: newEditData,
|
|
successMessage: '成功修改部门信息',
|
|
callback: function() {
|
|
close();
|
|
manager.loadData();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
},
|
|
more: function(data, trObj, manager) {
|
|
const currentPageId = manager.config.pages.currid;
|
|
|
|
if (currentPageId === 'all') {
|
|
layer.msg('请先选择一个具体的部门,再执行操作', {icon: 2});
|
|
return;
|
|
}
|
|
|
|
const departmentUUID = currentPageId;
|
|
|
|
layui.dropdown.render({
|
|
elem: trObj,
|
|
show: true,
|
|
align: 'right',
|
|
data: [{ title: '删除', id: 'del' }, { title: '设为负责人', id: 'setPersonInCharge' }],
|
|
click: function(menudata) {
|
|
if (menudata.id === 'del') {
|
|
manager.confirmAction({
|
|
title: '删除确认',
|
|
message: `确定要删除 ${data.UserName} 吗?即使删除后可以还原添加,但仍然会影响 GERP-ATSA 自动计划安排`,
|
|
api: manager.config.base.api.delete,
|
|
params: {
|
|
DepartmentUUID: departmentUUID,
|
|
UserUUIDs: data.UserUUID
|
|
},
|
|
successMessage: '删除成功',
|
|
callback: function() {
|
|
manager.loadData();
|
|
}
|
|
});
|
|
}
|
|
if (menudata.id === 'setPersonInCharge') {
|
|
manager.confirmAction({
|
|
title: '设置确认',
|
|
message: `确认要将 ${data.UserName} 设为负责人吗?这会影响 GERP-ATSA 自动计划安排`,
|
|
api: '/API/Department/SetPersonInCharge',
|
|
params: {
|
|
DepartmentUUID: departmentUUID,
|
|
UserUUID: data.UserUUID
|
|
},
|
|
successMessage: '设置部门负责人成功',
|
|
callback: function() {
|
|
manager.loadData();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
// 加载部门列表并初始化表格
|
|
layui.use(['jquery', 'layer', 'formEngine', 'dropdown'], function() {
|
|
const $ = layui.jquery;
|
|
|
|
// 从URL获取DepartmentUUID参数
|
|
const urlParams = new URLSearchParams(window.location.search);
|
|
const urlDepartmentUUID = urlParams.get('DepartmentUUID') || '';
|
|
|
|
// 加载部门列表
|
|
$.get('/API/Department/GetDepartments', function(res) {
|
|
if (res.code === 0 && Array.isArray(res.data)) {
|
|
const departments = res.data.map(item => ({
|
|
id: item.DepartmentUUID,
|
|
name: item.DepartmentName,
|
|
api: '/API/FormAPI/Get/DepartmentMember'
|
|
}));
|
|
|
|
// 更新 pages 配置
|
|
TABLE_CONFIG.pages.pages = [
|
|
{
|
|
id: 'all',
|
|
name: '所有部门',
|
|
api: '/API/FormAPI/Get/DepartmentMember'
|
|
},
|
|
...departments
|
|
];
|
|
|
|
// 如果URL中有DepartmentUUID,设置为当前选中的部门
|
|
if (urlDepartmentUUID) {
|
|
const matchedDepartment = departments.find(dept => dept.id === urlDepartmentUUID);
|
|
if (matchedDepartment) {
|
|
TABLE_CONFIG.pages.currid = urlDepartmentUUID;
|
|
}
|
|
}
|
|
|
|
// 初始化表格
|
|
window.tableManager = new tableEngine.TableManager(TABLE_CONFIG);
|
|
} else {
|
|
layer.msg('获取部门列表失败:' + (res.msg || '未知错误'), {icon: 5});
|
|
}
|
|
}).fail(err => {
|
|
layer.msg('网络错误:' + err.statusText, {icon: 5});
|
|
});
|
|
});
|
|
</script> |