/** * 用户管理页面 * @author weidy * @date 2020-08-13 */ layui.define(['layer','element','form','table','dynamicCondition','upload' ],function(exports){ var webUtil = $webUtil; var Class = function(){ this.MODELNAME = "platform/securityManage/VciSmUser"; this.moduleKey = "SmUser"; this.backPath = configData.compatibility?path:configData.frameworkPath; this.url = { refDepartment:'departmentQueryController/refTree', controller:'smUserController/', dataGrid:'gridSmUser', addSave:'addSave', editSave:'editSave', deleteUrl:'deleteData', enableData: 'enableData', disableData: 'disableData', downloadImportTemplate:'downloadImportTemplate', importData : 'importData', exportData : 'exportData', unlock:'unlockUser', lock:'lockUser', getObjectByOid:'getObjectByOid', batchSetUserDept:'batchSetUserDept', batchSetSecretGrade:'batchSetSecretGrade', batchSetWorkType:'batchSetWorkType', batchSetPasswordStrategy:'batchSetPasswordStrategy' }; this.getContent=function(){ var that = this; var html = ""; html = [ '
', that.getWestToolbarHtml(), '
', '', '
', '
', '
', that.getToolbarHtml(), '
', '', '
', '
', '
', '
', '', '
', '
', '
', '
' ].join(""); return html; }; this.getWestToolbarHtml = function(){ var that = this; var html = [ '
', '
' ].join(""); return html; }; this.getToolbarHtml =function(){ var that = this; var html = [ '
', '', // '', // '', // '', // '', '', '', '', '', '', '', '', '', '', '
' ]; return html.join(""); }; this.createSearchHtml = function () { var that = this; webUtil.bindDefultButtonLisenter(that, that.id); webUtil.createSearchHtml({id:"用户名",name:"姓名"} ,$("[layui-filter='toolbar_" + that.id + "']"), "table_" + that.id); }; this.init = function(){ var that = this; webUtil.copyConfig(that,that.moduleKey); that.initTree(); that.initMainTable(); that.createSearchHtml(); that.advancedQuery(); that.initSourceTable('111'); }; this.initMainTable = function (parentFieldName) { var that = this; var table = layui.table; that.checkColumns(); var tableWidth = $("#border_" + that.id).width(); var options = { elem: '#table_' + that.id, id: 'table_' + that.id, backPath:that.backPath, url: that.url.controller + that.url.dataGrid, page: { limit: 20, page: 1 }, width:tableWidth, selectMode:table.selectMode.muti, cols: [that.columns], done:function(res,cur,total){ if(!that.fristMainLoad ){ table.on('tool(' + that.id + ')',function(obj){ var data = obj.data;//当前选择行的数据 var layEvent = obj.event;//点的是什么按钮 if(layEvent == 'edit'){ that.addOrEdit(false,data.oid); }else if(layEvent =='delete'){ that.DEL(data.oid,data.ts); }else if(layEvent == 'unlock'){ that.UNLOCK(data.oid); }else if(layEvent == 'lock'){ that.LOCK(data.oid); }else if(layEvent == 'ENABLE'){ // 启用 that.ENABLE(data); }else if(layEvent == 'DISABLE'){ // 停用 that.DISABLE(data); } }); }else{ if(total>0) { table.selectRecord('table_' + that.id, {index:0}); } } that.fristMainLoad = true; }, rowClick:function(thisTableFilter,record){ table.reload("table_source_" + that.id, { extraParams: { "conditionMap['userOid']": record.oid } }); } }; if(parentFieldName){ options.treeConfig = { treepid:parentFieldName, treeid:'id', showField:'name' }; } table.render(options); // document.getElementById("toolbar_column_" + that.id).innerHTML = // '编辑'; }; this.checkColumns = function(){ var that = this; var table = layui.table; if(that.columns==null || that.columns.length==0){ that.columns = [table.getIndexColumn(),table.getCheckColumn(), { title: '用户名', field: 'id', width: 150 },{ title: '姓名', field: 'name', width: 90 },{ title: '工号', field: 'workNo', width: 100 },{ title: '邮件地址', field: 'email', width: 150 },{ title: '电话', field: 'tel', width: 110 },{ title: '所属密码安全策略', field: 'pkPasswordStrategyName', width: 150 },{ title: '性别', field: 'sexText', width: 50 },{ title: '语言编码', field: 'langCodeText', width: 100 },{ title: '锁定', field: 'lockFlag', width: 50, templet: function (d) { return webUtil.formateBoolean(d.lockFlag); } },{ title: '所属工种', field: 'pkWorkTypeText', width: 150 },{ title: '状态', field: 'lcStatusText', width: 60 },{ title: '密级', field: 'secretGradeText', width: 50 },{ title: '失效日期', field: 'disabledate', width: 110, hidden:true, templet: function (d) { return webUtil.formateDate(d.disabledate); } },{ title: '描述', field: 'description', width: 150 },{ title: '实时通讯软件账号', field: 'iMNo', hidden:true, width: 150 },{ title:'操作', field:'options', width: 200, fixed:'right', templet:function(d){ var btns =[]; if(d.lockFlag){ btns.push('解锁'); }else{ btns.push('锁定'); } if(d.lcStatus != 'Enabled') { btns.push('启用'); } else { btns.push('停用'); } btns.push('编辑'); btns.push('删除'); return btns.join(""); } }]; } }; this.initTree = function () { var that = this; var tree = layui.tree; var scrollHeight = window.innerHeight; var treeUL = $('[layui-filter="tree_' + that.id + '"]'); var treeHeight = scrollHeight - 200; treeUL.parent().height(treeHeight); tree.init("tree_" + that.id, treeUL, { url: that.url.refDepartment, backPath: that.backPath, extraParams: { isMuti: false, isQueryAllColumn: true }, showSearch:true, click: function (item, elem, options) { that.currentItemOid = item.oid; that.currentItemAttributes = item.attributes; that.setFormValues(); } }); }; this.setFormValues = function () { var that = this; layui.table.reload('table_' + that.id,{ extraParams:{pkDepartment:that.currentItemAttributes.oid}, page: { curr: 1 } }); }; this.getFormItems = function(onlyShow,isEdit) { var that = this; var table = layui.table; return [ { field: 'id', title: '用户名', required: true, type: 'text', readOnly:(onlyShow||isEdit) } , { field: 'name', title: '姓名', required: true, type: 'text', readOnly:onlyShow }, { field: 'password', title: '用户密码', required: !isEdit, type: 'password', hidden:isEdit, readOnly:onlyShow }, { field: 'confirmPassword', title: '确认密码', required: !isEdit, type: 'password', hidden:isEdit, readOnly:onlyShow } , { field: 'pkDepartment', title: '所属部门', required: true, type: 'refer', showField: 'pkDepartmentName', referConfig: { textField: 'name', valueField: 'oid', backPath: that.backPath, isMuti: false, type: 'tree', url: that.url.refDepartment }, readOnly:onlyShow } , { field: 'sex', title: '性别', required: false, type: 'combox', comboxKey: 'sex', readOnly:onlyShow } , { field: 'langCode', title: '默认的语言编码', required: false, type: 'combox', comboxKey: 'langCode', readOnly:onlyShow } , { field: 'pkWorkType', title: '所属工种', required: false, type: 'refer', showField: 'pkWorkTypeText', referConfig: { type:layui.vciAlias.referRegister.workTypeRefer }, readOnly:onlyShow },{ field:'workNo', title:'工号', readOnly: onlyShow } , { field: 'pkPasswordStrategy', title: '所属密码安全策略', required: true, type: 'refer', showField: 'pkPasswordStrategyName', referConfig: { textField: 'name', valueField: 'oid', backPath: that.backPath,//注意这里需要修改参照的对应路径 isMuti: false, type: 'grid', tableConfig:{ page:{ limit:15, page:1 }, cols:[table.getIndexColumn(),table.getCheckColumn(),{ field:'id', title:'策略编号', width:180 },{ field:'name', title:'策略名称', width:180 }], queryColumns:[{ field:'id', title:'策略编号' },{ field:'name', title:'策略名称' }] }, url: 'smPasswordStrategyController/refDataGrid' }, readOnly:onlyShow } , { field: 'disabledate', title: '失效日期', type: 'date', readOnly:onlyShow } , { field: 'email', title: '邮件地址', required: false, type: 'text', readOnly:onlyShow } , { field: 'tel', title: '电话', required: false, type: 'text', readOnly:onlyShow } , { field: 'rtxNo', title: 'RTX联系号', required: false, type: 'text', readOnly:onlyShow } , { field: 'iMNo', title: '实时通讯软件账号', required: false, type: 'text', readOnly:onlyShow } , { field: 'description', title: '描述', required: false, type: 'text', readOnly:onlyShow } , { field: 'secretGrade', title: '用户密级', required: true, readOnly:onlyShow, type:'combox', data:[{"key":"10","value":"内部"},{"key":"20","value":"一般"},{"key":"30","value":"重要"}] }]; }; this.initSourceTable = function (oid) { var table = layui.table; var that = this; that.checkSourceColumns(that); table.render({ elem: '#table_source_' + that.id, id: 'table_source_' + that.id, url: configData.frameworkPath + 'roleQueryController/gridRoleByUserOid', page: { limit: 20, page: 1 }, method:'post', cols: [that.sourceColumns], where:{ "conditionMap['userOid']": oid } }); }; this.checkSourceColumns = function (that) { var table = layui.table; if(that.sourceColumns==null || that.sourceColumns.length==0) { that.sourceColumns = [table.getIndexColumn(), { field: 'id', title: '角色编码', width: 180 },{ field: 'name', title: '角色名称', width: 180 },{ field: 'roleClassifyText', title: '角色类型', width: 100 },{ field: 'roleControlAreaText', title: '角色管理范围', width: 100 }]; } }; this.ADD = function () { var that = this; that.addOrEdit(true); }; this.EDIT = function(){ var that = this; var oid = webUtil.getOidFromGrid("table_" + that.id,true,true); if(!oid){ return false; } that.addOrEdit(false,oid); }; this.addOrEdit = function(add,oid) { var that = this; var form = layui.form; var filter ="form_" + that.id; var addSaveIndex =webUtil.dialog({ title:add?'添加用户管理':'修改用户管理', btn:['保存','取消'], skin:'layui-layer-lan', content:'
', area:['1210px','500px'], resizing:function(layero){ form.doResize(filter); }, success:function(layero) { form.addItems(filter,that.getFormItems(false,!add), function () { if(!add){ form.load(filter,{ backPath:that.backPath, url:that.url.controller + that.url.getObjectByOid, method:'get', params:{ oid:oid } }); }else{ var defaultValues = { sex:'sex_man', langCode:'zh_CN', pkDepartment:(that.currentItemAttributes?that.currentItemAttributes.oid:""), pkDepartmentName:(that.currentItemAttributes?that.currentItemAttributes.name:""), }; //可以手动在此处添加默认值 form.setValues(defaultValues,filter); } }, {}, {defaultColumnOneRow: 3}); }, yes:function(layero){ if(form.validata(filter)){ var values = form.getValues(filter,true); if(values['password'] != values['confirmPassword']){ $webUtil.showErrorMsg("两次密码输入不一致"); return false; } var url = that.url.controller + (add?that.url.addSave:that.url.editSave); webUtil.ajax(add?'post':'put',url,values,function(result){ if(result.success){ webUtil.showMsgFromResult(result,(add ? "添加成功" : "修改成功")); layer.close(addSaveIndex); that.refresh(); }else{ webUtil.showErrorMsg(result.msg); } },function(xhr,err){ webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },that.backPath); } }, btn2:function(layero){ layer.close(addSaveIndex); } }); }; this.DEL = function(oid,ts){ var that = this; // var oid = webUtil.getOidFromGrid("table_" +that.id,true,true); // if(!oid){ // return false; // } //var ts= webUtil.getOidFromGrid("table_" +that.id,false,false,"ts"); webUtil.showConfirmMsg("是否删除这条数据?如果被引用将不能被删除!",function () { webUtil.deleteRequest(that.url.controller + that.url.deleteUrl,{oid:oid,ts:ts},function(result){ if(result.success){ webUtil.showMsgFromResult(result,"删除成功"); that.refresh(); }else{ webUtil.showErrorMsg(result.msg); } },function(xhr,err){ webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },that.backPath); }); }; this.UNLOCK = function (oid){ var that = this; webUtil.showConfirmMsg("是否解锁这个用户",function (){ webUtil.post(that.url.controller + that.url.unlock,{oid:oid},function (result){ if(result.success){ webUtil.showMsgFromResult(result,"解锁用户成功"); that.refresh(); }else{ webUtil.showErrorMsg(result.msg); } },function(xhr,err){ webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },that.backPath); }); }; this.LOCK = function (oid){ var that = this; webUtil.showConfirmMsg("是否锁定这个用户",function (){ webUtil.post(that.url.controller + that.url.lock,{oid:oid},function (result){ if(result.success){ webUtil.showMsgFromResult(result,"锁定用户成功"); that.refresh(); }else{ webUtil.showErrorMsg(result.msg); } },function(xhr,err){ webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },that.backPath); }); }; this.refresh = function () { var that = this; layui.table.reload("table_" + that.id); }; this.DISABLE = function (data) { var that = this; if(data.lcStatus == 'Disabled') { $webUtil.showMsg($webUtil.starORstop(data.lcStatus)) return false; } that.disableOrEnable(false,data); }; this.ENABLE = function (data) { var that = this; if(data.lcStatus == 'Enabled') { $webUtil.showMsg($webUtil.starORstop(data.lcStatus)) return false; } that.disableOrEnable(true,data); }; this.disableOrEnable = function (enable,data) { var that = this; webUtil.post(that.url.controller + (enable?that.url.enableData:that.url.disableData),{ oid:data.oid, ts:data.ts },function(result){ if(result.success){ webUtil.showMsgFromResult(result,(enable?'启用成功':'停用成功')); that.refresh(); }else{ webUtil.showErrorMsg(result.msg); } },function(xhr,err){ webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },that.backPath); }; this.EXPORT = function () { var that = this; var iframeId = MD5("export" +webUtil.getSystemVar(webUtil.systemValueKey.currentDateTimeSSS) +webUtil.getSystemVar(webUtil.systemValueKey.userOid)); var data = {}; data[TOKEN_KEY] = $webUtil.getToken() ; data['downloadUUID'] = iframeId; webUtil.fileDownloadPost(that.backPath + that.url.controller + that.url.exportData,data); }; this.IMPORT = function () { var that = this; var filter =that.id + "_upload"; var form = layui.form; var uploadIndex = webUtil.dialog({ title:'导入用户管理', btn:['下载导入模板','取消'], content:'
', area: ['300px', '300px'], resize:false, success:function(layero){ //如果导入有其他操作,在第二个参数中添加 form.addItems(filter,[],function(){ $("#form_" + filter).append('    '); var upload = layui.upload; //执行实例 var uploadInst = upload.render({ elem: '#' + that.id + '_upload_form_file' //绑定元素 ,accept:'file' ,acceptMime:'file/*' ,exts:'xls|xlsx' ,auto:true ,url: that.backPath + that.url.controller + that.url.importData ,before:function(obj){ obj.setData(); return true; } ,done: function(result){ if(result.success){ layer.close(uploadIndex); webUtil.showMsgFromResult(result,"导入成功"); that.refresh(); }else{ webUtil.showErrorMsg(result.msg); } } ,error: function(){ //请求异常回调 webUtil.showErrorMsg("上传异常"); } }); },{},{ defaultColumnOneRow:1 }); }, yes:function(){ var iframeId = MD5("downloadImportTemplate" +webUtil.getSystemVar(webUtil.systemValueKey.currentDateTimeSSS) +webUtil.getSystemVar(webUtil.systemValueKey.userOid)); webUtil.fileDownload(that.backPath + that.url.controller + that.url.downloadImportTemplate+ "?" + TOKEN_KEY + "=" + $webUtil.getToken() + "&downloadUUID=" + iframeId ); } }); }; this.ADVQUERY = function(){//高级查询 var that = this; that.serinorQueryInstance.open(); }; this.advancedQuery = function(){ var that = this; var dynamicCondition = layui.dynamicCondition; var smUserTable = JSON.parse(JSON.stringify(that.columns)); $('[layui-filter="toolbar_' + that.id + '"]').append('
'); that.serinorQueryInstance = dynamicCondition.create({ fields : smUserTable//查询字段 ,tableId:"table_"+that.id//需要查询的表格 ,type:"complex" //type:"simple"/"complex" 查询的方法 暂时写死为 complex // ,conditionTextId:"#toolbar"+that.id//高级查询 按钮所在的div // ,popupShowQueryBtn: true//显示高级查询按钮 ,queryCallBack:function(requestData){//查询之后的callback //console.log(JSON.stringify(requestData)) } }); }; this.refresh = function(){ var that = this; layui.table.reload("table_" + that.id); }; this.ALLOTDEPT = function() { // 批量设置部门 var that = this; var selectData = layui.table.checkStatus("table_" + that.id).data; if(selectData.length <= 0) { webUtil.showErrorMsg('请至少选择一名用户!'); return false; } var seleArr = [] $.each(selectData,function(k,v){ seleArr.push(v.oid) }); var form = layui.form; var filter ="form_" + that.id; var addSaveIndex = layer.open({ type:1, title:'批量设置部门', btn:['保存','取消'], skin:'layui-layer-lan', content:'
', area: ['600px', '350px'], closeBtn: 2, shade: true, shadeClose: true, resize: false, resizing:function(layero){ form.doResize(filter); }, success:function(layero) { form.addItems(filter,[{ field: 'useDeptId', title: '使用部门', required: true, type: 'refer', showField: 'useDeptName', referConfig: { type:'tree', url:'/departmentQueryController/refTree', backPath:configData.frameworkPath, textField:'name', valueField:'oid', isMuti:false } }], function () {}, {}, {defaultColumnOneRow: 1}); }, yes:function(layero){ if(form.validata(filter)){ var values = form.getValues(filter,true); values.deptOid = values.useDeptId; values.userOidS = seleArr.join(','); var url = that.url.controller +that.url.batchSetUserDept; webUtil.ajax('post',url,values,function(result){ if(result.success){ webUtil.showMsgFromResult(result,("设置成功!")); layer.close(addSaveIndex); that.refresh(); }else{ webUtil.showErrorMsg(result.msg); } },function(xhr,err){ webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },that.backPath); } }, btn2:function(layero){ layer.close(addSaveIndex); } }); } this.ALLOTSECRET = function() { // 批量设置密级 var that = this; var selectData = layui.table.checkStatus("table_" + that.id).data; if(selectData.length <= 0) { webUtil.showErrorMsg('请至少选择一名用户!'); return false; } var seleArr = [] $.each(selectData,function(k,v){ seleArr.push(v.oid) }); var form = layui.form; var filter ="form_" + that.id; var addSaveIndex = layer.open({ type:1, title:'批量设置密级', btn:['保存','取消'], skin:'layui-layer-lan', content:'
', area: ['600px', '350px'], closeBtn: 2, shade: true, shadeClose: true, resize: false, resizing:function(layero){ form.doResize(filter); }, success:function(layero) { form.addItems(filter,[{ field: 'secretGrade', title: '用户密级', required: true, type:'combox', data:[{"key":"10","value":"内部"},{"key":"20","value":"一般"},{"key":"30","value":"重要"}] }], function () {}, {}, {defaultColumnOneRow: 1}); }, yes:function(layero){ if(form.validata(filter)){ var values = form.getValues(filter,true); values.userOidS = seleArr.join(','); var url = that.url.controller + that.url.batchSetSecretGrade; webUtil.ajax('post',url,values,function(result){ if(result.success){ webUtil.showMsgFromResult(result,("设置成功!")); layer.close(addSaveIndex); that.refresh(); }else{ webUtil.showErrorMsg(result.msg); } },function(xhr,err){ webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },that.backPath); } }, btn2:function(layero){ layer.close(addSaveIndex); } }); } this.ALLOTWORKTYPE = function() { // 批量设置工种 var that = this; var selectData = layui.table.checkStatus("table_" + that.id).data; if(selectData.length <= 0) { webUtil.showErrorMsg('请至少选择一名用户!'); return false; } var seleArr = [] $.each(selectData,function(k,v){ seleArr.push(v.oid); }); var target = { setValue: function (filter, name, value, rawValue, isClose, allSelectValues) { var values = {}; values.userOidS = seleArr.join(','); var workTypeOids= []; layui.each(allSelectValues,function (_index,_item){ workTypeOids.push(_item.oid); }); values.workTypeOid = workTypeOids.join(','); var url = that.url.controller + that.url.batchSetWorkType; webUtil.ajax('post',url,values,function(result){ if(result.success){ webUtil.showMsgFromResult(result,("设置成功!")); that.refresh(); }else{ webUtil.showErrorMsg(result.msg); } },function(xhr,err){ webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },that.backPath); } } var filter ="form_" + that.id; var referConfig = { filter:filter, name:'worktype', title:'批量设置工种', options: { filter:filter, name:'worktype', }, isMuti:false, target:target, value:'', text:'' }; layui[layui.vciAlias.referRegister.workTypeRefer].showReferDialog(referConfig); } this.ALLOTPOLICY = function() { // 批量设置安全策略 var that = this; var selectData = layui.table.checkStatus("table_" + that.id).data; if(selectData.length <= 0) { webUtil.showErrorMsg('请至少选择一名用户!'); return false; } var seleArr = [] $.each(selectData,function(k,v){ seleArr.push(v.oid) }); var form = layui.form; var table = layui.table; var filter ="form_" + that.id; var addSaveIndex = layer.open({ type:1, title:'批量设置工种', btn:['保存','取消'], skin:'layui-layer-lan', content:'
', area: ['650px', '350px'], closeBtn: 2, shade: true, shadeClose: true, resize: false, resizing:function(layero){ form.doResize(filter); }, success:function(layero) { form.addItems(filter,[{ field: 'passwordStrategy', title: '所属密码安全策略', required: true, type: 'refer', showField: 'pkPasswordStrategyName', referConfig: { textField: 'name', valueField: 'oid', backPath: that.backPath,//注意这里需要修改参照的对应路径 isMuti: false, type: 'grid', tableConfig:{ page:{ limit:15, page:1 }, cols:[table.getIndexColumn(),table.getCheckColumn(),{ field:'id', title:'策略编号', width:180 },{ field:'name', title:'策略名称', width:180 }], queryColumns:[{ field:'id', title:'策略编号' },{ field:'name', title:'策略名称' }] }, url: 'smPasswordStrategyController/refDataGrid' } }], function () {}, {}, {defaultColumnOneRow: 1,defaultLabelWidth:200}); }, yes:function(layero){ if(form.validata(filter)){ var values = form.getValues(filter,true); values.userOidS = seleArr.join(','); var url = that.url.controller + that.url.batchSetPasswordStrategy; webUtil.ajax('post',url,values,function(result){ if(result.success){ webUtil.showMsgFromResult(result,("设置成功!")); layer.close(addSaveIndex); that.refresh(); }else{ webUtil.showErrorMsg(result.msg); } },function(xhr,err){ webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },that.backPath); } }, btn2:function(layero){ layer.close(addSaveIndex); } }); } this.ALLOTPASSWORD = function() { // 批量重置密码 var that = this; var selectData = layui.table.checkStatus("table_" + that.id).data; if(selectData.length <= 0) { webUtil.showErrorMsg('请至少选择一名用户!'); return false; } var seleArr = [] $.each(selectData,function(k,v){ seleArr.push(v.oid) }); var values = { usersOid:seleArr.join(',') } var url = 'userQueryController/resetPassword'; webUtil.ajax('post',url,values,function(result){ if(result.success){ webUtil.showMsgFromResult(result,("重置密码成功!")); that.refresh(); }else{ webUtil.showErrorMsg(result.msg); } },function(xhr,err){ webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },that.backPath); } }; var cs = new Class(); exports(cs.MODELNAME,cs); });