From 90b486ba54098be293a256d9313d201a3bd5221f Mon Sep 17 00:00:00 2001 From: ludc Date: 星期三, 18 十月 2023 21:31:02 +0800 Subject: [PATCH] 1、编码规则增加显示所有者列,高级查询中增加所有者; 2、用户管理界面添加停用启用按钮。 --- Source/UBCS-WEB/src/views/system/user.vue | 316 +++++++++++++++++++++++++++++++--------------------- 1 files changed, 190 insertions(+), 126 deletions(-) diff --git a/Source/UBCS-WEB/src/views/system/user.vue b/Source/UBCS-WEB/src/views/system/user.vue index b69c093..9b3f3a2 100644 --- a/Source/UBCS-WEB/src/views/system/user.vue +++ b/Source/UBCS-WEB/src/views/system/user.vue @@ -1,35 +1,39 @@ <template> <el-row> - <el-col :span="5"> + <el-col :span="5" v-if="userflag"> <div class="box"> - <el-scrollbar> + <el-scrollbar style="height: auto;border-bottom-right-radius:8px "> <basic-container> - <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick"/> + <div class="abox"> + <avue-tree ref="tree" :data="treeData" :option="treeOption" @node-click="nodeClick"/> + </div> </basic-container> </el-scrollbar> </div> </el-col> - <el-col :span="19"> + <el-col :span="usernumber"> <basic-container> + <div class="bbox"> <avue-crud ref="crud" - v-model="form" - :before-open="beforeOpen" - :data="data" - :option="option" - :page.sync="page" - :permission="permissionList" - :search.sync="search" - :table-loading="loading" - @row-del="rowDel" - @row-update="rowUpdate" - @row-save="rowSave" - @search-change="searchChange" - @search-reset="searchReset" - @selection-change="selectionChange" - @current-change="currentChange" - @size-change="sizeChange" - @refresh-change="refreshChange" - @on-load="onLoad"> + v-model="form" + :before-open="beforeOpen" + :data="data" + :option="option" + :page.sync="page" + :permission="permissionList" + :search.sync="search" + :table-loading="loading" + @row-del="rowDel" + @row-update="rowUpdate" + @row-save="rowSave" + @search-change="searchChange" + @search-reset="searchReset" + @row-click="clickRowChange" + @selection-change="selectionChange" + @current-change="currentChange" + @size-change="sizeChange" + @refresh-change="refreshChange" + @on-load="onLoad"> <template slot="menuLeft"> <el-button v-if="permission.user_delete" icon="el-icon-delete" @@ -60,25 +64,31 @@ 閰嶇疆瀵嗙爜绛栫暐 </el-button> <el-button v-if="userInfo.role_name.includes('admin')" - icon="el-icon-coordinate" - plain - size="small" - type="info" - @click="handleLock">璐﹀彿瑙e皝 + icon="el-icon-coordinate" + plain + size="small" + type="info" + @click="handleLock">璐﹀彿瑙e皝 </el-button> <el-button v-if="userInfo.role_name.includes('admin')" - icon="el-icon-upload2" - plain - size="small" - type="success" - @click="handleImport">瀵煎叆 + icon="el-icon-upload2" + plain + size="small" + type="success" + @click="handleImport">瀵煎叆 </el-button> <el-button v-if="userInfo.role_name.includes('admin')" - icon="el-icon-download" - plain - size="small" - type="warning" - @click="handleExport">瀵煎嚭 + icon="el-icon-download" + plain + size="small" + type="warning" + @click="handleExport">瀵煎嚭 + </el-button> + <el-button size="small" + type="warning" + icon="el-icon-setting" + @click="updateUserStatus"> + 璐﹀彿鍋�/鍚敤 </el-button> </template> <template slot="tenantName" @@ -98,21 +108,20 @@ <el-tag>{{ row.userTypeName }}</el-tag> </template> </avue-crud> + </div> <el-dialog :visible.sync="roleBox" - append-to-body - title="鐢ㄦ埛瑙掕壊閰嶇疆" - width="345px"> - + append-to-body + title="鐢ㄦ埛瑙掕壊閰嶇疆" + width="345px"> <el-tree ref="treeRole" - :data="roleGrantList" - :default-checked-keys="roleTreeObj" - :props="props" - check-strictly - default-expand-all - node-key="id" - show-checkbox> + :data="roleGrantList" + :default-checked-keys="roleTreeObj" + :props="props" + check-strictly + default-expand-all + node-key="id" + show-checkbox> </el-tree> - <span slot="footer" class="dialog-footer"> <el-button @click="roleBox = false">鍙� 娑�</el-button> <el-button type="primary" @@ -133,13 +142,11 @@ </el-dialog> <!-- 璁剧疆瀵嗙爜绛栫暐寮瑰嚭妗�--> <el-dialog - :before-close="handleClose" :visible.sync="passVisible" class="passdialog" append-to-body title="璁剧疆瀵嗙爜绛栫暐" - width="30%" - > + width="30%"> <el-select v-model="sevalue" placeholder="璇烽�夋嫨" class="selects" @change="selChange" > <el-option v-for="item in seoptions" @@ -148,44 +155,13 @@ :value="item.id" class="seloption" > - </el-option> </el-select> <span slot="footer" class="dialog-footer"> - <el-button @click="passVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="passhandle">纭� 瀹�</el-button> - </span> + <el-button @click="passVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="passhandle">纭� 瀹�</el-button> + </span> </el-dialog> - <!-- <el-dialog title="鐢ㄦ埛骞冲彴閰嶇疆"--> - <!-- append-to-body--> - <!-- :visible.sync="platformBox">--> - <!-- <avue-crud :option="platformOption"--> - <!-- :table-loading="platformLoading"--> - <!-- :data="platformData"--> - <!-- ref="platformCrud"--> - <!-- v-model="platformForm"--> - <!-- :before-open="platformBeforeOpen"--> - <!-- :page.sync="platformPage"--> - <!-- :permission="platformPermissionList"--> - <!-- @row-update="platformRowUpdate"--> - <!-- @search-change="platformSearchChange"--> - <!-- @search-reset="platformSearchReset"--> - <!-- @selection-change="platformSelectionChange"--> - <!-- @current-change="platformCurrentChange"--> - <!-- @size-change="platformSizeChange"--> - <!-- @refresh-change="platformRefreshChange"--> - <!-- @on-load="platformOnLoad">--> - <!-- <template slot-scope="{row}"--> - <!-- slot="tenantName">--> - <!-- <el-tag>{{row.tenantName}}</el-tag>--> - <!-- </template>--> - <!-- <template slot-scope="{row}"--> - <!-- slot="userTypeName">--> - <!-- <el-tag>{{row.userTypeName}}</el-tag>--> - <!-- </template>--> - <!-- --> - <!-- </avue-crud>--> - <!-- </el-dialog>--> </basic-container> </el-col> </el-row> @@ -202,7 +178,9 @@ updatePlatform, add, grant, - resetPassword, unlock + resetPassword, + unlock, + updateUserStatus } from "@/api/system/user"; import {exportBlob} from "@/api/common"; import {getDeptTree, getDeptLazyTree} from "@/api/system/dept"; @@ -237,6 +215,7 @@ } }; return { + tenantId:'', form: {}, seoptions: [], sevalue:"", @@ -274,7 +253,9 @@ treeDeptId: '', treeData: [], treeOption: { + height:"auto", nodeKey: 'id', + border: true, lazy: true, treeLoad: function (node, resolve) { const parentId = (node.level === 0) ? 0 : node.data.id; @@ -298,17 +279,19 @@ } }, option: { - height: 'auto', + height:'auto', calcHeight: 80, tip: false, searchShow: true, searchMenuSpan: 6, + columnBtn:false, border: true, index: true, selection: true, viewBtn: true, dialogType: 'drawer', dialogClickModal: false, + highlightCurrentRow: true, //琛岄�変腑鏃堕珮浜� column: [ { label: "鐧诲綍璐﹀彿", @@ -355,7 +338,7 @@ { label: "鐢ㄦ埛骞冲彴", type: "select", - dicUrl: "/api/blade-system/dict/dictionary?code=user_type", + dicUrl: "/api/ubcs-system/dict/dictionary?code=user_type", props: { label: "dictValue", value: "dictKey" @@ -369,7 +352,17 @@ required: true, message: "璇烽�夋嫨鐢ㄦ埛骞冲彴", trigger: "blur" - }] + }], + }, + { + label: "鐘舵��", + display: false, + sortable:true, + html:true, + prop: "userStatus", + formatter : function (row, column) { + return row.userStatus == 0 ? '<i class="el-icon-check" style="color: #32cd32;font-size: 20px;font-weight: 800"></i>' : '<i class="el-icon-close" style="color: #ff0000;font-size: 20px;font-weight: 800"></i>' + } }, ], group: [ @@ -382,7 +375,7 @@ label: "鎵�灞炵鎴�", prop: "tenantId", type: "tree", - dicUrl: "/api/blade-system/tenant/select", + dicUrl: "/api/ubcs-system/tenant/select", props: { label: "tenantName", value: "tenantId" @@ -397,6 +390,7 @@ trigger: "click" }], span: 24, + value:"" }, { label: "鐧诲綍璐﹀彿", @@ -410,11 +404,12 @@ { label: "鐢ㄦ埛骞冲彴", type: "select", - dicUrl: "/api/blade-system/dict/dictionary?code=user_type", + dicUrl: "/api/ubcs-system/dict/dictionary?code=user_type", props: { label: "dictValue", value: "dictKey" }, + value:'1', dataType: "number", slot: true, prop: "userType", @@ -427,6 +422,7 @@ { label: '瀵嗙爜', prop: 'password', + type: "password", hide: true, editDisplay: false, viewDisplay: false, @@ -436,6 +432,7 @@ label: '纭瀵嗙爜', prop: 'password2', hide: true, + type: "password", editDisplay: false, viewDisplay: false, rules: [{required: true, validator: validatePass2, trigger: 'blur'}] @@ -571,7 +568,7 @@ value: "id" }, rules: [{ - required: true, + required: false, message: "璇烽�夋嫨鎵�灞炲矖浣�", trigger: "click" }], @@ -625,7 +622,7 @@ { label: "鐢ㄦ埛骞冲彴", type: "select", - dicUrl: "/api/blade-system/dict/dictionary?code=user_type", + dicUrl: "/api/ubcs-system/dict/dictionary?code=user_type", props: { label: "dictValue", value: "dictKey" @@ -669,7 +666,7 @@ res: 'data' }, tip: '璇蜂笂浼� .xls,.xlsx 鏍囧噯鏍煎紡鏂囦欢', - action: "/api/blade-user/import-user" + action: "/api/ubcs-user/import-user" }, { label: "鏁版嵁瑕嗙洊", @@ -709,19 +706,22 @@ UserPwdstrategyVO:{ userIds:[], pwdstrategyId:'' - } + }, + userflag:true, + usernumber:0 }; }, watch: { 'form.tenantId'() { if (this.form.tenantId !== '' && this.initFlag) { this.initData(this.form.tenantId); + console.log('this.form.tenantId',this.form.tenantId) } }, 'excelForm.isCovered'() { if (this.excelForm.isCovered !== '') { const column = this.findObject(this.excelOption.column, "excelFile"); - column.action = `/api/blade-user/import-user?isCovered=${this.excelForm.isCovered}`; + column.action = `/api/ubcs-user/import-user?isCovered=${this.excelForm.isCovered}`; } } }, @@ -759,10 +759,50 @@ }, created() { this.selecload() + const arr=JSON.parse(localStorage.getItem("updataid")) + if(arr.user_id != '0' && arr.tenant_id !== '000000'){ + this.userflag=false + this.usernumber=24 + }else { + this.userflag=true + this.usernumber=19 + } }, methods: { + + // beOpen(done,type){ + // console.log(done,type) + // }, + // 鐢ㄦ埛鍋滅敤鍚敤鐘舵�� + /** 淇敼鐢ㄦ埛鐘舵�� */ + updateUserStatus(){ + let list = this.selectionList; + if(func.isEmpty(list)){ + this.$message({ + type: "warning", + message: "璇疯嚦灏戦�夋嫨涓�鏉$敤鎴锋暟鎹紒" + }); + return; + } + if(func.isAttrInconsistent(list,"userStatus")){ + this.$message({ + type: "warning", + message: "鎵归噺鎿嶄綔鐢ㄦ埛鐘舵�佹椂锛岃閫夋嫨鐢ㄦ埛鐘舵�佷竴鑷寸殑鏁版嵁锛�" + }); + return; + } + let userIds = func.joinedString(list,"id"); + let status = list[0].userStatus == 1 ? true:false; + updateUserStatus(userIds,status).then(res=>{ + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!" + }); + this.onLoad(this.page); + }) + }, //esc鍙栨秷閿搷浣� - handleClose(done) { + /*handleClose(done) { this.$confirm('纭鍏抽棴锛�') .then(() => { done(); @@ -771,7 +811,7 @@ done(); }); - }, + },*/ //鐐瑰嚮閰嶇疆瀵嗙爜绛栫暐 handlepass(){ if (this.selectionList.length === 0) { @@ -780,7 +820,6 @@ }else { this.passVisible=true; } - console.log("selectionList",this.selectionList) }, // 璁剧疆瀵嗙爜绛栫暐锛屼紶閫掍笅鎷夋鐨刬d鍜屽閫夋鐨刬d passhandle(){ @@ -791,7 +830,7 @@ //瑕佷紶閫掔殑id锛屼竴涓槸鏁扮粍鍙︿竴涓槸瀛楃涓� this.UserPwdstrategyVO.userIds=this.selid; this.UserPwdstrategyVO.pwdstrategyId=this.id - console.log(this.UserPwdstrategyVO) + //璇锋眰 insert(this.UserPwdstrategyVO).then(()=>{ this.passVisible=false @@ -799,10 +838,10 @@ type: "success", message: "閰嶇疆鎴愬姛!" }); - this.selectionList=[] this.onLoad(this.page) - console.log("selectionList",this.selectionList) + this.selid=[] }).catch(res=>{ + this.selid=[] this.$message({ type: "warning", message: res @@ -814,13 +853,15 @@ selChange(row){ this.id=row }, - selecload(page, params = {}) { - getPage(this.page.currentPage, this.page.pageSize, Object.assign(params, this.query)).then(res => { - console.log(res) - this.seoptions=res.data.data.content + selecload() { + getPage(1, -1).then(res => { + // console.log(res) + this.seoptions=res.data.data.records }); }, nodeClick(data) { + console.log(data) + console.log(this.form.tenantId) this.treeDeptId = data.id; this.page.currentPage = 1; this.onLoad(this.page); @@ -853,21 +894,22 @@ }); }, rowSave(row, done, loading) { - row.deptId = row.deptId.join(","); - row.roleId = row.roleId.join(","); - row.postId = row.postId.join(","); - add(row).then(() => { - this.initFlag = false; - this.onLoad(this.page); - this.$message({ - type: "success", - message: "鎿嶄綔鎴愬姛!" + row.deptId = row.deptId.join(","); + row.roleId = row.roleId.join(","); + row.postId = row.postId.join(","); + console.log('3',row) + add(row).then(() => { + this.initFlag = false; + this.onLoad(this.page); + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!" + }); + done(); + }, error => { + window.console.log(error); + loading(); }); - done(); - }, error => { - window.console.log(error); - loading(); - }); }, rowUpdate(row, index, done, loading) { row.deptId = row.deptId.join(","); @@ -914,8 +956,15 @@ this.onLoad(this.page, params); done(); }, + clickRowChange(row){ + this.$refs.crud.toggleSelection(); + this.selectionList = row; + this.$refs.crud.setCurrentRow(row); + this.$refs.crud.toggleRowSelection(row); //閫変腑褰撳墠琛� + }, selectionChange(list) { this.selectionList = list; + this.$refs.crud.setCurrentRow(this.selectionList[list.length-1]); }, selectionClear() { this.selectionList = []; @@ -973,7 +1022,7 @@ if (this.selectionList.length === 1) { this.roleTreeObj = this.selectionList[0].roleId.split(","); } - getRoleTree().then(res => { + getRoleTree(this.selectionList[0].tenantId).then(res => { this.roleGrantList = res.data.data; this.roleBox = true; @@ -1020,18 +1069,24 @@ type: "warning" }).then(() => { NProgress.start(); - exportBlob(`/api/blade-user/export-user?${this.website.tokenHeader}=${getToken()}&account=${account}&realName=${realName}`).then(res => { + exportBlob(`/api/ubcs-user/export-user?${this.website.tokenHeader}=${getToken()}&account=${account}&realName=${realName}`).then(res => { downloadXls(res.data, `鐢ㄦ埛鏁版嵁琛�${dateNow()}.xlsx`); NProgress.done(); }) }); }, handleTemplate() { - exportBlob(`/api/blade-user/export-template?${this.website.tokenHeader}=${getToken()}`).then(res => { + exportBlob(`/api/ubcs-user/export-template?${this.website.tokenHeader}=${getToken()}`).then(res => { downloadXls(res.data, "鐢ㄦ埛鏁版嵁妯℃澘.xlsx"); }) }, beforeOpen(done, type) { + //console.log(type) + // console.log('this.tenantId',this.tenantId) + // const column = this.findObject(this.option.group,'tenantId'); + // column.value=this.tenantId; + // console.log('column',column) + // if(this.treeDeptId){ if (["edit", "view"].includes(type)) { getUser(this.form.id).then(res => { this.form = res.data.data; @@ -1046,8 +1101,13 @@ } }); } + const prop = this.findObject(this.option.group, 'tenantId'); + //console.log('1',prop) this.initFlag = true; done(); + // }else { + // this.$message.warning('璇烽�夋嫨涓�鏉℃墍灞炵鎴�') + // } }, currentChange(currentPage) { this.page.currentPage = currentPage; @@ -1065,6 +1125,7 @@ this.page.total = data.total; this.data = data.records; this.loading = false; + this.tenantId=data.records[0].tenantId this.selectionClear(); }); }, @@ -1142,10 +1203,13 @@ overflow: scroll; } .selects{ - width: 400px; - margin-left: 92px; + width: 100%; } .seloption{ margin-left: 10px; } +.abox{ + height: 771px; +} + </style> -- Gitblit v1.9.3