1 line
22 KiB
JSON
1 line
22 KiB
JSON
{"remainingRequest":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\src\\views\\system\\user\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\src\\views\\system\\user\\index.vue","mtime":1732871026807},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1732872824662},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1732872825017},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1732872824662},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1732872825835}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport crudUser from '@/views/system/user/user'\r\nimport crudDept from '@/api/system/dept'\r\nimport crudDataPermission from '@/views/system/dataPermission/dataPermission'\r\nimport { getAll, getLevel } from '@/views/system/role/role'\r\nimport CRUD, { crud, form, header, presenter } from '@crud/crud'\r\nimport rrOperation from '@crud/RR.operation'\r\nimport crudOperation from '@crud/CRUD.operation'\r\nimport pagination from '@crud/Pagination'\r\nimport Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'\r\nimport { mapGetters } from 'vuex'\r\nimport '@riophae/vue-treeselect/dist/vue-treeselect.css'\r\nimport RelevanceUserDialog from '@/views/system/user/dialog/relevanceUserDialog'\r\nimport RelevanceDeptDialog from '@/views/system/user/dialog/relevanceDeptDialog'\r\nimport i18n from '@/i18n'\r\n\r\nlet userRoles = []\r\nconst defaultForm = {\r\n dept_id: null,\r\n depts: [],\r\n username: null,\r\n person_name: null,\r\n gender: '男',\r\n email: null,\r\n is_used: true,\r\n roles: [],\r\n phone: null,\r\n password: null\r\n}\r\nexport default {\r\n name: 'User',\r\n components: { RelevanceDeptDialog, RelevanceUserDialog, Treeselect, crudOperation, rrOperation, pagination },\r\n cruds() {\r\n return CRUD({ title: i18n.t('user.table_value.User'), idField: 'user_id', url: 'api/users', crudMethod: { ...crudUser }})\r\n },\r\n mixins: [presenter(), header(), form(defaultForm), crud()],\r\n // 数据字典\r\n dicts: ['user_status', 'permission_scope_type'],\r\n data() {\r\n return {\r\n height: document.documentElement.clientHeight - 180 + 'px;',\r\n deptName: '', depts: [], deptDatas: [], level: 3, roles: [],\r\n roleDatas: [], // 多选时使用\r\n defaultProps: { children: 'children', label: this.$langPre.computedProp('name') },\r\n deptProps: { children: 'children', label: 'name' },\r\n permission: {\r\n add: ['admin', 'user:add'],\r\n edit: ['admin', 'user:edit'],\r\n del: ['admin', 'user:del']\r\n },\r\n enabledTypeOptions: [\r\n { key: true, display_name: i18n.t('user.table_value.activation') },\r\n { key: false, display_name: i18n.t('user.table_value.lock') }\r\n ],\r\n rules: {\r\n username: [\r\n { required: true, message: '请输入用户名', trigger: 'blur' },\r\n { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }\r\n ],\r\n person_name: [\r\n { required: true, message: '请输入用户姓名', trigger: 'blur' },\r\n { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }\r\n ]\r\n },\r\n syncDrawer: false,\r\n depChecked: [],\r\n depCheckedId: '',\r\n deptsDatas: [],\r\n rolesDatas: [],\r\n drawerTitle: '',\r\n flag: true,\r\n dataPerm: false,\r\n dataDialog: {},\r\n permissions: [],\r\n permission_id: '',\r\n multipleSelection: [], // 选中\r\n relevanceUser: false, // 关联用户\r\n rowData: {}, // 当行数据\r\n relevanceDept: false, // 关联部门\r\n deptIds: [],\r\n userIds: [],\r\n showData: false,\r\n dataPermissions: [],\r\n dataPermissionTitle: '数据权限'\r\n }\r\n },\r\n computed: {\r\n ...mapGetters([\r\n 'user'\r\n ])\r\n },\r\n beforeMount() {\r\n this.deptTree()\r\n },\r\n created() {\r\n this.crud.msg.add = '新增成功'\r\n },\r\n mounted: function() {\r\n const that = this\r\n window.onresize = function temp() {\r\n that.height = document.documentElement.clientHeight - 180 + 'px;'\r\n }\r\n },\r\n methods: {\r\n changeRole(value) {\r\n userRoles = []\r\n value.forEach(function(data, index) {\r\n const role = { id: data }\r\n userRoles.push(role)\r\n })\r\n },\r\n deleteTag(value) {\r\n userRoles.forEach(function(data, index) {\r\n if (data.id === value) {\r\n userRoles.splice(index, value)\r\n }\r\n })\r\n },\r\n caseStatusColorFilter(is_used) {\r\n if (is_used === true) {\r\n return '#378be2'\r\n }\r\n return '#F56C6C'\r\n },\r\n handdeleted(datas) {\r\n this.$confirm(`确认删除选中的1条数据?`, '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n this.crud.delAllLoading = true\r\n this.crud.doDelete(datas)\r\n }).catch(() => {\r\n })\r\n },\r\n // 新增与编辑前做的操作\r\n [CRUD.HOOK.afterToCU](crud, form) {\r\n this.getRoles()\r\n if (form.dept_id == null) {\r\n crudDept.getDepts()\r\n } else {\r\n this.getSupDepts(form.dept_id)\r\n }\r\n // this.getRoleLevel() 暂时不用\r\n // form.is_used = form.enabled.toString()\r\n },\r\n // 新增前将多选的值设置为空\r\n [CRUD.HOOK.beforeToAdd]() {\r\n this.form.password = '123456'\r\n this.roleDatas = []\r\n },\r\n // 初始化编辑时候的角色与岗位\r\n [CRUD.HOOK.beforeToEdit](crud, form) {\r\n crud.status.edit\r\n this.roleDatas = []\r\n userRoles = []\r\n const _this = this\r\n if (form.roles !== null && form.roles.length > 0) {\r\n form.roles.forEach(function(role, index) {\r\n _this.roleDatas.push(role)\r\n const rol = { id: role }\r\n userRoles.push(rol)\r\n })\r\n }\r\n },\r\n // 提交前做的操作\r\n [CRUD.HOOK.afterValidateCU](crud) {\r\n if (!crud.form.depts) {\r\n this.$message({\r\n message: '部门不能为空',\r\n type: 'warning'\r\n })\r\n return false\r\n } else if (this.roleDatas.length === 0) {\r\n this.$message({\r\n message: '角色不能为空',\r\n type: 'warning'\r\n })\r\n return false\r\n }\r\n const roles = []\r\n userRoles.forEach(function(data, index) {\r\n roles.push(data.id)\r\n })\r\n crud.form.roles = roles\r\n return true\r\n },\r\n // 获取左侧部门数据\r\n getDeptDatas(node, resolve) {\r\n setTimeout(() => {\r\n var q = {}\r\n // eslint-disable-next-line eqeqeq\r\n if (node != '') {\r\n q = { name: node }\r\n }\r\n crudDept.getDeptTree(q).then(res => {\r\n if (resolve) {\r\n resolve(res.content)\r\n } else {\r\n this.deptDatas = res.content\r\n }\r\n })\r\n }, 100)\r\n },\r\n\r\n deptTree() {\r\n setTimeout(() => {\r\n crudDept.getDeptTree().then(res => {\r\n this.deptDatas = res.content\r\n })\r\n }, 100)\r\n },\r\n getDepts() {\r\n crudDept.getDepts({ is_used: true }).then(res => {\r\n this.depts = res.content.map(function(obj) {\r\n if (obj.hasChildren) {\r\n obj.children = null\r\n }\r\n return obj\r\n })\r\n })\r\n },\r\n getSupDepts(deptId) {\r\n crudDept.getDeptSuperior(deptId).then(res => {\r\n const date = res.content\r\n this.buildDepts(date)\r\n this.depts = date\r\n })\r\n },\r\n buildDepts(depts) {\r\n depts.forEach(data => {\r\n if (data.children) {\r\n this.buildDepts(data.children)\r\n }\r\n if (data.hasChildren && !data.children) {\r\n data.children = null\r\n }\r\n })\r\n },\r\n // 获取弹窗内部门数据\r\n loadDepts({ action, parentNode, callback }) {\r\n if (action === LOAD_CHILDREN_OPTIONS) {\r\n crudDept.getDeptvo({ is_used: true, pid: parentNode.dept_id }).then(res => {\r\n parentNode.children = res.content.map(function(obj) {\r\n obj.children = null\r\n return obj\r\n })\r\n setTimeout(() => {\r\n callback()\r\n }, 100)\r\n })\r\n }\r\n },\r\n normalizer(node) {\r\n return {\r\n id: node.dept_id,\r\n label: node.name,\r\n children: node.children\r\n }\r\n },\r\n // 切换部门\r\n handleNodeClick(data) {\r\n this.query.dept_id = data.dept_id\r\n this.query.needAll = true\r\n this.crud.toQuery()\r\n this.query.dept_id = null\r\n },\r\n // 改变状态\r\n changeEnabled(row) {\r\n const satus = this.enabledTypeOptions.find(item => { return item.key !== row.is_used })\r\n this.$confirm('此操作将' + satus.display_name + '账号:' + row.username + ', 是否继续?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n row.is_used = satus.key\r\n crudUser.edit(row).then(res => {\r\n this.crud.toQuery()\r\n this.crud.notify('账号' + row.username + '已' + satus.display_name)\r\n })\r\n })\r\n },\r\n // 获取弹窗内角色数据\r\n getRoles() {\r\n getAll().then(res => {\r\n this.roles = res\r\n }).catch(() => {\r\n })\r\n },\r\n // 获取权限级别\r\n getRoleLevel() {\r\n getLevel().then(res => {\r\n this.level = res.level\r\n }).catch(() => {\r\n })\r\n },\r\n checkboxT(row, rowIndex) {\r\n // return row.id !== this.user.id\r\n return true\r\n },\r\n resetPassword(row) {\r\n this.$confirm(`确认重置密码?`, '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n row.password = '123456'\r\n crudUser.edit(row).then(res => {\r\n this.crud.toQuery()\r\n this.crud.notify('密码重置成功,密码:123456', CRUD.NOTIFICATION_TYPE.SUCCESS)\r\n })\r\n })\r\n },\r\n // 部门权限\r\n openDeptDrawer(row) {\r\n crudDept.getDeptTree().then(res => {\r\n this.deptsDatas = res.content\r\n })\r\n this.openDrawer() // 打开抽屉\r\n this.drawerTitle = '分配部门权限'\r\n this.flag = true\r\n // 默认选中\r\n const deptIds = []\r\n for (var index in row.depts) {\r\n deptIds.push(row.depts[index].dept_id)\r\n }\r\n this.$nextTick(() => {\r\n this.$refs.deptUser.setCheckedKeys(deptIds)\r\n })\r\n this.giveValue(row)\r\n },\r\n // 角色权限\r\n openRoleDrawer(row) {\r\n this.rolesDatas = []\r\n getAll().then(res => {\r\n this.rolesDatas = res\r\n // 回显默认选中\r\n this.$nextTick(function() {\r\n for (let j = 0; j < row.roles.length; j++) {\r\n for (let i = 0; i < this.rolesDatas.length; i++) {\r\n if (this.rolesDatas[i].roleId === row.roles[j].roleId) {\r\n this.$refs.roleTable.toggleRowSelection(this.rolesDatas[i], true)\r\n break\r\n }\r\n }\r\n }\r\n })\r\n })\r\n this.openDrawer()\r\n this.drawerTitle = '分配角色权限'\r\n this.flag = false\r\n this.giveValue(row)\r\n },\r\n openDataDialog(row) {\r\n // 清空数据 应该需要初始化赋值\r\n this.dataDialog = {}\r\n this.multipleSelection = []\r\n // 获取权限范围\r\n crudDataPermission.getDataScopeType().then(res => {\r\n console.log('权限范围', res)\r\n this.dataDialog.dataScopeType = res\r\n // permissions\r\n crudDataPermission.getDataPermissionOption().then(res => {\r\n console.log('数据权限', res)\r\n this.permissions = res\r\n this.dataDialog.person_name = row.person_name\r\n this.dataDialog.username = row.username\r\n this.dataDialog.user_id = row.user_id\r\n this.dataPermissionTitle = '[' + row.person_name + '] 数据权限'\r\n this.dataPerm = true\r\n // 回显数据\r\n crudDataPermission.getDataShow(row.user_id).then(res => {\r\n console.log('要回显的数据', res)\r\n this.$nextTick(function() {\r\n for (var index = 0; index < res.length; index++) {\r\n for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {\r\n if (this.dataDialog.dataScopeType[i].value === res[index].permissionScopeType) {\r\n this.dataDialog.dataScopeType[i].permission_id = res[index].permission_id\r\n if (res[index].users) this.dataDialog.dataScopeType[i].users = res[index].users\r\n if (res[index].depts) this.dataDialog.dataScopeType[i].depts = res[index].depts\r\n // 选中\r\n this.$refs.dialogTable.toggleRowSelection(this.dataDialog.dataScopeType[i], true)\r\n break\r\n }\r\n }\r\n }\r\n })\r\n })\r\n })\r\n })\r\n },\r\n getRows(val) { // 获取行数据\r\n this.multipleSelection = val\r\n },\r\n openRelevance(row, index) {\r\n for (var i = 0; i < this.permissions.length; i++) {\r\n if (this.permissions[i].permission_id !== undefined && this.permissions[i].permission_id && this.permissions[i].permission_id !== row.permission_id) {\r\n this.$delete(this.dataDialog.dataScopeType[index], this.permissions[i].permission_id.toString())\r\n }\r\n }\r\n this.$set(this.dataDialog.dataScopeType[index], this.dataDialog.dataScopeType[index].permission_id, row.permission_id)\r\n this.rowData = {}\r\n this.deptIds = []\r\n this.userIds = []\r\n if (row.permission_id === '1605129738328870912') { // 选择用户\r\n this.userIds = this.dataDialog.dataScopeType[index].users\r\n this.rowData = row\r\n this.relevanceUser = true\r\n } else if (row.permission_id === '1605129882164137984') { // 选择部门\r\n this.deptIds = this.dataDialog.dataScopeType[index].depts\r\n this.rowData = row\r\n this.relevanceDept = true\r\n } else if (row.permission_id === '1605128919449735168') { // 自身\r\n const param = {\r\n userId: this.dataDialog.userId\r\n }\r\n this.dataDialog.dataScopeType[index].users = []\r\n this.dataDialog.dataScopeType[index].users.push(param)\r\n } else { // 其他应该清空\r\n this.dataDialog.dataScopeType[index].depts = []\r\n this.dataDialog.dataScopeType[index].users = []\r\n }\r\n },\r\n selectUsers(row) { // row对话框传来的数据\r\n for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {\r\n if (this.dataDialog.dataScopeType[i].dict_id === this.rowData.dict_id) {\r\n if (this.dataDialog.dataScopeType[i].depts !== undefined && this.dataDialog.dataScopeType[i].depts.length > 0) this.dataDialog.dataScopeType[i].depts = []\r\n this.dataDialog.dataScopeType[i].users = row\r\n break\r\n }\r\n }\r\n this.rowData = {}\r\n },\r\n selectDepts(row) {\r\n for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {\r\n if (this.dataDialog.dataScopeType[i].dict_id === this.rowData.dictId) {\r\n if (this.dataDialog.dataScopeType[i].users !== undefined && this.dataDialog.dataScopeType[i].users.length > 0) this.dataDialog.dataScopeType[i].users = []\r\n this.dataDialog.dataScopeType[i].depts = row\r\n break\r\n }\r\n }\r\n this.rowData = {}\r\n },\r\n cancelDataPerm() {\r\n this.dataPerm = false\r\n },\r\n savePermise() {\r\n const param = {\r\n user_id: this.dataDialog.user_id,\r\n datas: this.multipleSelection\r\n }\r\n crudDataPermission.saveDataPermission(param).then(res => {\r\n this.dataPerm = false\r\n this.crud.notify('添加数据权限成功', CRUD.NOTIFICATION_TYPE.SUCCESS)\r\n this.crud.toQuery()\r\n })\r\n },\r\n openDrawer() {\r\n this.syncDrawer = true\r\n this.depCheckedId = ''\r\n this.depChecked = []\r\n },\r\n giveValue(row) {\r\n this.depCheckedId = row.user_id\r\n },\r\n clearCheck() { // 清空选中\r\n if (this.flag) this.$refs.deptUser.setCheckedKeys([])\r\n },\r\n handleClose(done) {\r\n this.$confirm('确认关闭?')\r\n .then(_ => {\r\n done()\r\n })\r\n .catch(_ => {})\r\n },\r\n cancelForm() { // 关闭\r\n this.syncDrawer = false\r\n if (this.flag) this.clearCheck()\r\n },\r\n saveChecked() {\r\n const user = {\r\n user_id: this.depCheckedId\r\n }\r\n if (this.flag) {\r\n user.deptIds = this.$refs.deptUser.getCheckedKeys()\r\n } else {\r\n user.rolesIds = this.crud.selections.map(item => (item.role_id))\r\n }\r\n crudUser.edit(user).then(res => {\r\n this.cancelForm()\r\n this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS)\r\n this.crud.toQuery()\r\n })\r\n },\r\n // 覆盖原有勾选功能,父与子关联,子与父不关联\r\n handCheck(data, node) {\r\n this.hanleCheck(data, node, 'deptUser')\r\n },\r\n hanleCheck(data, node, treeName) {\r\n const _this = this\r\n // 获取当前节点是否被选中\r\n const isChecked = _this.$refs[treeName].getNode(data).checked\r\n // 如果当前节点被选中,则遍历下级子节点并选中,如果当前节点取消选中,则遍历下级节点并取消\r\n if (isChecked) {\r\n // 判断该节点是否有下级节点,如果有那么遍历设置下级节点为选中\r\n data.children && data.children.length > 0 && setChildreChecked(data.children, true)\r\n } else {\r\n // 如果节点取消选中,则取消该节点下的子节点选中\r\n data.children && data.children.length > 0 && setChildreChecked(data.children, false)\r\n }\r\n function setChildreChecked(node, isChecked) {\r\n node.forEach(item => {\r\n item.children && item.children.length > 0 && setChildreChecked(item.children, isChecked)\r\n // 修改勾选状态\r\n _this.$refs[treeName].setChecked(item.name, isChecked)\r\n })\r\n }\r\n },\r\n checkChange(data, checked, indeterminate) {\r\n const _this = this\r\n // console.log(data, checked, indeterminate);\r\n // 选中全部子节点,父节点也默认选中,但是子节点再次取消勾选或者全部子节点取消勾选也不会影响父节点勾选状态\r\n const checkNode = _this.$refs.deptUser.getNode(data)// 获取当前节点\r\n // 勾选部分子节点,父节点变为半选状态\r\n if (checkNode.parent && checkNode.parent.childNodes.some(ele => ele.checked)) {\r\n checkNode.parent.indeterminate = true\r\n }\r\n // 勾选全部子节点,父节点变为全选状态\r\n if (checkNode.parent && checkNode.parent.childNodes.every(ele => ele.checked)) {\r\n checkNode.parent.checked = true\r\n checkNode.parent.indeterminate = false\r\n }\r\n // 如果取消所有第二节点的勾选状态,则第一层父节点也取消勾选\r\n if (checkNode.level === 2 && checkNode.parent.childNodes.every(ele => !ele.checked)) {\r\n checkNode.parent.checked = false\r\n checkNode.parent.indeterminate = false\r\n }\r\n },\r\n showDatas(row) {\r\n const param = {\r\n userId: this.dataDialog.userId,\r\n permissionScopeType: row.value\r\n }\r\n crudDataPermission.getDataDetail(param).then(res => {\r\n this.dataPermissions = res\r\n })\r\n this.showData = true\r\n }\r\n }\r\n}\r\n",null]} |