diff --git a/base-server/src/main/resources/template/js/teamBusiness/teamBusinessDetails.js b/base-server/src/main/resources/template/js/teamBusiness/teamBusinessDetails.js new file mode 100644 index 0000000000000000000000000000000000000000..22f1eeba50588fded191ea0062043bf7b4edfb46 --- /dev/null +++ b/base-server/src/main/resources/template/js/teamBusiness/teamBusinessDetails.js @@ -0,0 +1,136 @@ + +layui.config({ + base: basePath, + version: skyeyeVersion +}).extend({ + window: 'js/winui.window' +}).define(['window', 'jquery', 'winui', 'tableTreeDj', 'form'], function (exports) { + winui.renderColor(); + var index = parent.layer.getFrameIndex(window.name); + var $ = layui.$, + tableTree = layui.tableTreeDj, + form = layui.form; + var objectKey = GetUrlParam("objectKey"); + var objectId = GetUrlParam("id"); + + var treeTableData = []; + // 已经选中的权限对应关系 + var checkTrueList = []; + + showGrid({ + id: "showForm", + url: reqBasePath + "queryTeamBusiness", + params: {businessId: objectId}, + pagination: false, + method: "GET", + template: $("#showTemplate").html(), + ajaxSendLoadBefore: function(hdb, json) {}, + ajaxSendAfter: function (json) { + loadTreeTable(); + // 解析成员信息 + $.each(json.bean.teamRoleList, function (i, item) { + treeTableData.push({ + id: item.roleId, + pId: '0', + name: item.name + }); + $.each(item.teamRoleUserList, function (j, bean) { + treeTableData.push({ + id: bean.userId, + pId: item.roleId, + name: bean.userMation.name, + departmentName: bean.userMation.departmentName, + phone: bean.userMation.phone, + email: bean.userMation.email + }); + }); + }); + + // 解析权限信息 + $.each(json.bean.teamObjectPermissionList, function (i, item) { + var authGroupKey = item.permissionKey; + var authKey = item.permissionValue; + var checkParams = getInPoingArr(treeTableData, "id", item.ownerId); + if (checkParams != null) { + var roleId = checkParams.pId == '0' ? checkParams.id : checkParams.pId; + var userId = checkParams.pId == '0' ? '' : checkParams.id; + var id = authGroupKey + '_' + authKey + '_' + roleId + '_' + userId; + checkTrueList.push(id); + } + }); + + reloadTreeTable(json.bean.objectType); + matchingLanguage(); + form.render(); + } + }); + + function loadTreeTable() { + tableTree.render({ + id: 'messageTable', + elem: '#messageTable', + data: [], + // 该参数不能删除,分页参数无效,目前只能通过设置10000来保证当前页最大的数据量 + limit: 10000, + cols: [[ + { field: 'name', title: '名称', width: 160 }, + { field: 'departmentName', title: '部门', width: 120 }, + { field: 'phone', title: '联系方式', width: 140 }, + { field: 'email', title: '邮箱', width: 200 } + ]], + done: function(json) { + matchingLanguage(); + } + }, { + keyId: 'id', + keyPid: 'pId', + title: 'name', + defaultShow: true, + }); + } + + // 刷新成员树表格 + function reloadTreeTable(objectType) { + var data = $.extend(true, [], treeTableData); + tableTree.reload("messageTable", {data: data}); + loadAuthList(objectType); + } + + function loadAuthList(objectType) { + // 加载该受用类型的团队可以设置哪些权限 + var colsList = teamObjectPermissionUtil.getAuthColsDetails(objectType); + $('#authList').html(getDataUseHandlebars($('#authTableTemplate').html(), {list: colsList})); + $.each(colsList, function (i, item) { + var data = $.extend(true, [], treeTableData); + // 给数据设置权限组的key, + $.each(data, function (j, bean) { + bean.authGroupKey = item.id; + }); + loadAuthTreeTable(item.id, item.cols, data); + }); + + $.each(checkTrueList, function (i, id) { + $(`div[id='${id}']`).html(``); + }); + } + + function loadAuthTreeTable(id, cols, data) { + tableTree.render({ + id: id, + elem: '#' + id, + data: data, + // 该参数不能删除,分页参数无效,目前只能通过设置10000来保证当前页最大的数据量 + limit: 10000, + cols: [cols], + }, { + keyId: 'id', + keyPid: 'pId', + title: 'name', + defaultShow: true, + }); + } + + $("body").on("click", "#cancle", function() { + parent.layer.close(index); + }); +}); \ No newline at end of file diff --git a/base-server/src/main/resources/template/js/teamBusiness/teamBusinessEdit.js b/base-server/src/main/resources/template/js/teamBusiness/teamBusinessEdit.js new file mode 100644 index 0000000000000000000000000000000000000000..4ba4f79241d5167c0d33aba56889a667b1839e18 --- /dev/null +++ b/base-server/src/main/resources/template/js/teamBusiness/teamBusinessEdit.js @@ -0,0 +1,317 @@ + +layui.config({ + base: basePath, + version: skyeyeVersion +}).extend({ + window: 'js/winui.window' +}).define(['window', 'jquery', 'winui', 'textool', 'tableTreeDj', 'form'], function (exports) { + winui.renderColor(); + var index = parent.layer.getFrameIndex(window.name); + var $ = layui.$, + textool = layui.textool, + tableTree = layui.tableTreeDj, + form = layui.form; + var objectKey = GetUrlParam("objectKey"); + var objectId = GetUrlParam("id"); + + var treeTableData = []; + // 已经选中的权限对应关系 + var checkTrueList = []; + + showGrid({ + id: "showForm", + url: reqBasePath + "queryTeamBusiness", + params: {businessId: objectId}, + pagination: false, + method: "GET", + template: $("#showTemplate").html(), + ajaxSendLoadBefore: function(hdb, json) {}, + ajaxSendAfter: function (json) { + loadTreeTable(); + // 解析成员信息 + $.each(json.bean.teamRoleList, function (i, item) { + treeTableData.push({ + id: item.roleId, + pId: '0', + name: item.name + }); + $.each(item.teamRoleUserList, function (j, bean) { + treeTableData.push({ + id: bean.userId, + pId: item.roleId, + name: bean.userMation.name, + departmentName: bean.userMation.departmentName, + phone: bean.userMation.phone, + email: bean.userMation.email + }); + }); + }); + + // 解析权限信息 + $.each(json.bean.teamObjectPermissionList, function (i, item) { + var authGroupKey = item.permissionKey; + var authKey = item.permissionValue; + var checkParams = getInPoingArr(treeTableData, "id", item.ownerId); + if (checkParams != null) { + var roleId = checkParams.pId == '0' ? checkParams.id : checkParams.pId; + var userId = checkParams.pId == '0' ? '' : checkParams.id; + var id = authGroupKey + '_' + authKey + '_' + roleId + '_' + userId; + checkTrueList.push(id); + } + }); + + reloadTreeTable(); + + textool.init({eleId: 'remark', maxlength: 200}); + matchingLanguage(); + form.render(); + form.on('submit(formEditBean)', function (data) { + if (winui.verifyForm(data.elem)) { + var teamRoleList = getTeamRoleList(); + if (teamRoleList.length == 0) { + winui.window.msg('团队成员不能为空', {icon: 2, time: 2000}); + return false; + } + var teamObjectPermissionList = getTeamObjectPermissionList(); + var params = { + id: json.bean.id, + businessId: objectId, + businessKey: objectKey, + teamRoleList: JSON.stringify(teamRoleList), + teamObjectPermissionList: JSON.stringify(teamObjectPermissionList) + }; + AjaxPostUtil.request({url: reqBasePath + "updateTeamBusiness", params: params, type: 'json', method: "POST", callback: function (json) { + parent.layer.close(index); + parent.refreshCode = '0'; + }}); + } + return false; + }); + } + }); + + function loadTreeTable() { + tableTree.render({ + id: 'messageTable', + elem: '#messageTable', + data: [], + // 该参数不能删除,分页参数无效,目前只能通过设置10000来保证当前页最大的数据量 + limit: 10000, + cols: [[ + { field: 'name', title: '名称', width: 160 }, + { field: 'departmentName', title: '部门', width: 120 }, + { field: 'phone', title: '联系方式', width: 140 }, + { field: 'email', title: '邮箱', width: 200 }, + { title: systemLanguage["com.skyeye.operation"][languageType], fixed: 'right', align: 'center', width: 150, toolbar: '#tableBar' } + ]], + done: function(json) { + matchingLanguage(); + } + }, { + keyId: 'id', + keyPid: 'pId', + title: 'name', + defaultShow: true, + }); + + tableTree.getTable().on('tool(messageTable)', function (obj) { + var data = obj.data; + var layEvent = obj.event; + if (layEvent === 'removeRole') { + // 移除角色和该角色下的用户 + $.each(treeTableData, function(index, item) { + if (item.id == data.id || item.pId == data.id) { + treeTableData.splice(index, 1); + } + }); + restCheckbox(); + reloadTreeTable(); + } else if (layEvent === 'addUser') { // 添加成员 + var roleId = data.id; + systemCommonUtil.userReturnList = []; + systemCommonUtil.chooseOrNotMy = "1"; // 人员列表中是否包含自己--1.包含;其他参数不包含 + systemCommonUtil.chooseOrNotEmail = "2"; // 人员列表中是否必须绑定邮箱--1.必须;其他参数没必要 + systemCommonUtil.checkType = "1"; // 人员选择类型,1.多选;其他。单选 + systemCommonUtil.openSysUserStaffChoosePage(function (userReturnList) { + var userList = [].concat(userReturnList); + $.each(userList, function (i, item) { + // 一个用户在一个团队中只能属于一个角色 + var checkParams = getInPoingArr(treeTableData, "id", item.id); + if (checkParams == null) { + item['pId'] = roleId; + treeTableData.push(item); + } + }); + restCheckbox(); + reloadTreeTable(); + }); + } else if (layEvent === 'removeUser') { // 移除成员 + var roleId = data.pId; + var userId = data.id; + $.each(treeTableData, function(index, item) { + if (!isNull(item) && item.pId == roleId && item.id == userId) { + treeTableData.splice(index, 1); + } + }); + restCheckbox(); + reloadTreeTable(); + } + }); + } + + // 刷新成员树表格 + function reloadTreeTable() { + var data = $.extend(true, [], treeTableData); + tableTree.reload("messageTable", {data: data}); + loadAuthList(); + } + + loadAuthList(); + form.on('select(objectType)', function(data) { + checkTrueList = []; + loadAuthList(); + }); + + function getTeamRoleList() { + var teamRoleList = []; + $.each(treeTableData, function (i, item) { + var teamRole = {}; + if (item.pId == '0') { + // 角色 + teamRole['roleId'] = item.id; + // 查询这个角色下的用户 + var roleUserList = []; + $.each(treeTableData, function (j, bean) { + if (bean.pId == item.id) { + roleUserList.push({ + userId: bean.id + }); + } + }); + teamRole['teamRoleUserList'] = roleUserList; + teamRoleList.push(teamRole); + } + }); + return teamRoleList; + } + + function getTeamObjectPermissionList() { + var checkRow = $("#authList input[type='checkbox']:checked"); + var teamObjectPermissionList = []; + $.each(checkRow, function (i, item) { + var id = $(item).attr('id'); + var str = id.split('_'); + var authGroupKey = str[0]; + var authKey = str[1]; + var roleId = str[2]; + var userId = str[3]; + teamObjectPermissionList.push({ + permissionKey: authGroupKey, + permissionValue: authKey, + ownerId: isNull(userId) ? roleId : userId, + ownerKey: isNull(userId) ? sysServiceMation["dictData"]["key"] : sysServiceMation["userInfo"]["key"], + fromType: 1 + }); + }); + return teamObjectPermissionList; + } + + function loadAuthList() { + var objectType = $('#objectType').val(); + // 加载该受用类型的团队可以设置哪些权限 + var colsList = teamObjectPermissionUtil.getAuthCols(objectType); + $('#authList').html(getDataUseHandlebars($('#authTableTemplate').html(), {list: colsList})); + $.each(colsList, function (i, item) { + var data = $.extend(true, [], treeTableData); + // 给数据设置权限组的key, + $.each(data, function (j, bean) { + bean.authGroupKey = item.id; + }); + loadAuthTreeTable(item.id, item.cols, data); + }); + + $.each(checkTrueList, function (i, id) { + $(`input[id='${id}']`).prop("checked", true); + }); + form.render('checkbox'); + + form.on('checkbox(checkClick)', function(obj) { + var id = $(this).attr('id'); + var str = id.split('_'); + var authGroupKey = str[0]; + var authKey = str[1]; + var roleId = str[2]; + var userId = str[3]; + var name = authGroupKey + '_' + authKey + '_' + roleId; + var _table = $(`div[lay-id='${authGroupKey}']`); + if (isNull(userId)) { + // 如果用户id为空,代表点击的是角色的选择box,需要把name是这个的都选中 + if (obj.elem.checked) { + _table.find(`input[name='${name}']`).prop("checked", true); + } else { + _table.find(`input[name='${name}']`).prop("checked", false); + } + } else { + if (obj.elem.checked) { + if (_table.find(`input[name='${name}']:checked`).length + == _table.find(`input[name='${name}']`).length - 1) { + $(`input[id='${name}_']`).prop("checked", true); + } + } else { + $(`input[id='${name}_']`).prop("checked", false); + } + } + + restCheckbox(); + form.render('checkbox'); + }); + } + + function restCheckbox() { + // 将所有选中的重新放入 checkTrueList 中,防止出现操作成员信息时无法回显 + var checkRow = $("#authList input[type='checkbox']:checked"); + checkTrueList = []; + $.each(checkRow, function (i, item) { + checkTrueList.push($(item).attr('id')); + }); + } + + function loadAuthTreeTable(id, cols, data) { + tableTree.render({ + id: id, + elem: '#' + id, + data: data, + // 该参数不能删除,分页参数无效,目前只能通过设置10000来保证当前页最大的数据量 + limit: 10000, + cols: [cols], + }, { + keyId: 'id', + keyPid: 'pId', + title: 'name', + defaultShow: true, + }); + } + + $("body").on("click", "#addRole", function() { + _openNewWindows({ + url: "../../tpl/sysDictData/sysDictDataSelectChoose.html?sysDictType=teamRole", + title: '选择角色', + pageId: "sysDictDataSelectChoose", + area: ['50vw', '50vh'], + callBack: function (refreshCode, turnData) { + var checkParams = getInPoingArr(treeTableData, "id", turnData.id); + if (checkParams == null) { + turnData["pId"] = '0'; + turnData["lay_is_open"] = true; + treeTableData.push(turnData); + reloadTreeTable(); + } else { + winui.window.msg("角色重复", {icon: 2, time: 2000}); + } + }}); + }); + + $("body").on("click", "#cancle", function() { + parent.layer.close(index); + }); +}); \ No newline at end of file diff --git a/base-server/src/main/resources/template/tpl/teamBusiness/teamBusinessDetails.html b/base-server/src/main/resources/template/tpl/teamBusiness/teamBusinessDetails.html new file mode 100644 index 0000000000000000000000000000000000000000..673e85d7b01f23795a5fc66de076622a94199161 --- /dev/null +++ b/base-server/src/main/resources/template/tpl/teamBusiness/teamBusinessDetails.html @@ -0,0 +1,57 @@ + + + + + + + + + +
+
+ +
+
+ + + + + + + + + + \ No newline at end of file diff --git a/base-server/src/main/resources/template/tpl/teamBusiness/teamBusinessEdit.html b/base-server/src/main/resources/template/tpl/teamBusiness/teamBusinessEdit.html new file mode 100644 index 0000000000000000000000000000000000000000..f6cb33ec2ec787fe406c67ac206821c9a6c51ff6 --- /dev/null +++ b/base-server/src/main/resources/template/tpl/teamBusiness/teamBusinessEdit.html @@ -0,0 +1,77 @@ + + + + + + + + + +
+
+ +
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/crm/src/main/resources/template/js/customerManage/customerManage.js b/crm/src/main/resources/template/js/customerManage/customerManage.js index fbab1a0238cac391cc14ee850cc59da55eef9bfd..2b58576b98bc548c4712a65a7399c915b0e3d653 100644 --- a/crm/src/main/resources/template/js/customerManage/customerManage.js +++ b/crm/src/main/resources/template/js/customerManage/customerManage.js @@ -18,7 +18,10 @@ layui.config({ title: '详情', pageUrl: '../../tpl/customerManage/customerDetails.html' }], - suffixData: [], + suffixData: [{ + title: '团队', + pageUrl: '../../tpl/teamBusiness/teamBusinessDetails.html' + }], element: layui.element, objectType: "1", object: { diff --git a/web/src/main/resources/template/assets/lib/layui/customer/common/systemCommonUtil.js b/web/src/main/resources/template/assets/lib/layui/customer/common/systemCommonUtil.js index a188803cdd2678226c19f3a542f22a8a719a0e15..0b86f2cdfad24339f469d1526b0679da1c9f6486 100644 --- a/web/src/main/resources/template/assets/lib/layui/customer/common/systemCommonUtil.js +++ b/web/src/main/resources/template/assets/lib/layui/customer/common/systemCommonUtil.js @@ -784,13 +784,17 @@ var tabPageUtil = { pageList = tabPageUtil.addPageMation(pageList); tabPageUtil.config.pageList = pageList; + + $(`#${tabPageUtil.config.id}`).html(tabPageUtil.manageTabHtml); // 初始化设置第一个为默认页面 - $("#manageTab").find(".layui-tab-title").html(getDataUseHandlebars($('#headerTemplate').html(), {rows: pageList})); + $("#manageTab").find(".layui-tab-title").html(getDataUseHandlebars(tabPageUtil.headerTemplate, {rows: pageList})); $("#manageTab").find(".layui-tab-title").find('li').eq(0).addClass('layui-this'); - $("#manageTab").find(".layui-tab-content").html(getDataUseHandlebars($('#contentTemplate').html(), {rows: pageList})); + $("#manageTab").find(".layui-tab-content").html(getDataUseHandlebars(tabPageUtil.contentTemplate, {rows: pageList})); $("#manageTab").find(".layui-tab-content").find('.layui-tab-item').eq(0).addClass('layui-show'); tabPageUtil.setPageUrl(pageList[0]); + + tabPageUtil.initEvent(); }, initEvent: function () { @@ -820,6 +824,10 @@ var tabPageUtil = { pageList.push(item); }); } + // 移除权限文字 + $.each(pageList, function (i, item) { + item.title = item.title.replace('权限', ''); + }); return pageList; }