From 336eb77c1a07ca3e3ead4482b51f848fa16ab3b7 Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期日, 12 十一月 2023 20:15:38 +0800 Subject: [PATCH] 自定义流水相关开发 --- Source/UBCS-WEB/src/views/system/user.vue | 395 +++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 247 insertions(+), 148 deletions(-) diff --git a/Source/UBCS-WEB/src/views/system/user.vue b/Source/UBCS-WEB/src/views/system/user.vue index b69c093..bbd3232 100644 --- a/Source/UBCS-WEB/src/views/system/user.vue +++ b/Source/UBCS-WEB/src/views/system/user.vue @@ -1,84 +1,95 @@ <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" + <el-button v-if="permissionList.delBtn" icon="el-icon-delete" plain size="small" type="danger" @click="handleDelete">鍒� 闄� </el-button> - <el-button v-if="permission.user_role" + <el-button v-if="permissionList.roleBtn" icon="el-icon-user" plain size="small" type="info" @click="handleGrant">瑙掕壊閰嶇疆 </el-button> - <el-button v-if="permission.user_reset" + <el-button v-if="permissionList.resetBtn" icon="el-icon-refresh" plain size="small" type="info" @click="handleReset">瀵嗙爜閲嶇疆 </el-button> - <el-button size="small" - v-if="userInfo.role_name.includes('admin')" + <el-button v-if="permissionList.pwdStrategyBtn" + size="small" type="success" icon="el-icon-setting" @click="handlepass"> 閰嶇疆瀵嗙爜绛栫暐 </el-button> - <el-button v-if="userInfo.role_name.includes('admin')" - icon="el-icon-coordinate" - plain - size="small" - type="info" - @click="handleLock">璐﹀彿瑙e皝 + <el-button v-if="permissionList.unsealBtn" + 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">瀵煎叆 + <el-button v-if="permissionList.importBtn" + 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">瀵煎嚭 + <el-button v-if="permissionList.exportBtn" + icon="el-icon-download" + plain + size="small" + type="warning" + @click="handleExport">瀵煎嚭 + </el-button> + <el-button v-if="permissionList.deactEnBtn" + size="small" + type="warning" + icon="el-icon-setting" + @click="updateUserStatus"> + 璐﹀彿鍋�/鍚敤 </el-button> </template> <template slot="tenantName" @@ -98,21 +109,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 +143,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 +156,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 +179,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 +216,7 @@ } }; return { + tenantId:'', form: {}, seoptions: [], sevalue:"", @@ -274,7 +254,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 +280,24 @@ } }, option: { - height: 'auto', + height:'auto', calcHeight: 80, tip: false, searchShow: true, searchMenuSpan: 6, + columnBtn:false, border: true, index: true, selection: true, + /* 涓嬮潰杩欎笁涓睘鎬ч粯璁よ缃负true锛� + 瀹為檯鏍规嵁permissionList涓鐓х殑灞炴�ц繘琛屾帶鍒剁殑 */ viewBtn: true, + editBtn: true, + delBtn: true, + addBtn: true, dialogType: 'drawer', dialogClickModal: false, + highlightCurrentRow: true, //琛岄�変腑鏃堕珮浜� column: [ { label: "鐧诲綍璐﹀彿", @@ -355,7 +344,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 +358,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 +381,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 +396,7 @@ trigger: "click" }], span: 24, + value:"" }, { label: "鐧诲綍璐﹀彿", @@ -410,11 +410,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 +428,7 @@ { label: '瀵嗙爜', prop: 'password', + type: "password", hide: true, editDisplay: false, viewDisplay: false, @@ -436,6 +438,7 @@ label: '纭瀵嗙爜', prop: 'password2', hide: true, + type: "password", editDisplay: false, viewDisplay: false, rules: [{required: true, validator: validatePass2, trigger: 'blur'}] @@ -560,7 +563,7 @@ trigger: "click" }] }, - { + /*{ label: "鎵�灞炲矖浣�", prop: "postId", type: "tree", @@ -571,11 +574,11 @@ value: "id" }, rules: [{ - required: true, + required: false, message: "璇烽�夋嫨鎵�灞炲矖浣�", trigger: "click" }], - }, + },*/ ] }, ] @@ -625,7 +628,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 +672,7 @@ res: 'data' }, tip: '璇蜂笂浼� .xls,.xlsx 鏍囧噯鏍煎紡鏂囦欢', - action: "/api/blade-user/import-user" + action: "/api/ubcs-user/import-user" }, { label: "鏁版嵁瑕嗙洊", @@ -709,40 +712,58 @@ 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}`; } } }, computed: { ...mapGetters(["userInfo", "permission"]), + /** 鎸夐挳鏄剧ず闅愯棌鎺у埗 */ permissionList() { return { - addBtn: this.vaildData(this.permission.user_add, false), - viewBtn: this.vaildData(this.permission.user_view, false), - delBtn: this.vaildData(this.permission.user_delete, false), - editBtn: this.vaildData(this.permission.user_edit, false) + addBtn: this.vaildData(this.permission.user.user_add, false), + viewBtn: this.vaildData(this.permission.user.user_view, false), + delBtn: this.vaildData(this.permission.user.user_delete, false), + editBtn: this.vaildData(this.permission.user.user_edit, false), + deactEnBtn: this.vaildData(this.permission.user.user_deact_en,false), + exportBtn: this.vaildData(this.permission.user.user_export,false), + pwdStrategyBtn: this.vaildData(this.permission.user.user_pwd_strategy,false), + importBtn: this.vaildData(this.permission.user.user_import,false), + resetBtn: this.vaildData(this.permission.user.user_reset,false), + roleBtn: this.vaildData(this.permission.user.user_role,false), + unsealBtn: this.vaildData(this.permission.user.user_unseal,false), }; }, - platformPermissionList() { - return { - addBtn: false, - viewBtn: false, - delBtn: false, - editBtn: this.vaildData(this.permission.user_edit, false) - }; - }, + // platformPermissionList() { + // return { + // addBtn: this.vaildData(this.permission.user.user_add, false), + // viewBtn: this.vaildData(this.permission.user.user_view, false), + // delBtn: this.vaildData(this.permission.user.user_delete, false), + // editBtn: this.vaildData(this.permission.user.user_edit, false), + // deactEnBtn: this.vaildData(this.permission.user.user_deact_en,false), + // exportBtn: this.vaildData(this.permission.user.user_export,false), + // pwdStrategyBtn: this.vaildData(this.permission.user.user_pwd_strategy,false), + // importBtn: this.vaildData(this.permission.user.user_import,false), + // resetBtn: this.vaildData(this.permission.user.user_reset,false), + // roleBtn: this.vaildData(this.permission.user.user_role,false), + // unsealBtn: this.vaildData(this.permission.user.user_unseal,false), + // }; + // }, ids() { let ids = []; this.selectionList.forEach(ele => { @@ -759,10 +780,64 @@ }, 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(list.length < 1){ + 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; + let msg = status ? "纭畾灏嗛�夋嫨璐﹀彿鍚敤":"纭畾灏嗛�夋嫨璐﹀彿鍋滅敤"+"锛�"; + // console.log(msg); + this.$confirm(msg, { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }) + .then(() => { + return updateUserStatus(userIds,status); + }) + .then(() => { + this.$message({ + type: "success", + message: "鎿嶄綔鎴愬姛!", + duration: 1000,// 璁剧疆娑堟伅鏄剧ず3绉掑悗鑷姩鍏抽棴 + onClose: () => { + // 鍦ㄦ秷鎭叧闂椂閲嶆柊鍔犺浇鏁版嵁 + this.onLoad(this.page); + } + }); + }); + }, //esc鍙栨秷閿搷浣� - handleClose(done) { + /*handleClose(done) { this.$confirm('纭鍏抽棴锛�') .then(() => { done(); @@ -771,7 +846,7 @@ done(); }); - }, + },*/ //鐐瑰嚮閰嶇疆瀵嗙爜绛栫暐 handlepass(){ if (this.selectionList.length === 0) { @@ -780,7 +855,6 @@ }else { this.passVisible=true; } - console.log("selectionList",this.selectionList) }, // 璁剧疆瀵嗙爜绛栫暐锛屼紶閫掍笅鎷夋鐨刬d鍜屽閫夋鐨刬d passhandle(){ @@ -791,7 +865,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 +873,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 +888,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 +929,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 +991,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 +1057,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 +1104,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 +1136,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 +1160,7 @@ this.page.total = data.total; this.data = data.records; this.loading = false; + this.tenantId=data.records[0].tenantId this.selectionClear(); }); }, @@ -1142,10 +1238,13 @@ overflow: scroll; } .selects{ - width: 400px; - margin-left: 92px; + width: 100%; } .seloption{ margin-left: 10px; } +.abox{ + height: 771px; +} + </style> -- Gitblit v1.9.3