Files
SMANAGE/backup/GERP old/WorkGroup/DepartmentMember.html
T

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>