From 404966637eda6881a0f17683c5aacc7c1c34aed8 Mon Sep 17 00:00:00 2001 From: 田源 <tianyuan@vci-tech.com> Date: 星期四, 16 一月 2025 16:18:34 +0800 Subject: [PATCH] 增加操作类型 --- Source/plt-web/plt-web-ui/src/views/system/role/index.vue | 213 ++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 153 insertions(+), 60 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/views/system/role/index.vue b/Source/plt-web/plt-web-ui/src/views/system/role/index.vue index 19ec3c8..2cc1f1b 100644 --- a/Source/plt-web/plt-web-ui/src/views/system/role/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/system/role/index.vue @@ -14,15 +14,62 @@ @row-click="rowClickHandler" @row-save="rowSaveHandler" @row-update="rowUpdateHandler" - @row-del="rowDeleteHandler" > <template slot="menuLeft" slot-scope="scope"> - <el-button icon="el-icon-delete" plain size="small" type="danger" @click="allDelHandler">鍒犻櫎</el-button> - <el-button icon="el-icon-school" plain size="small" type="primary" @click="assignMembersHandler">鍒嗛厤鎴愬憳 + <el-button v-if="permissionList.addBtn" class="button-custom-icon" size="small" type="primary" + @click="$refs.roleCrud.rowAdd()"> + <icon-show :name="permissionList.addBtn.source"></icon-show> + 鏂� 澧� </el-button> - <el-button icon="el-icon-user" plain size="small" type="primary" @click="statisticsHandler">缁熻</el-button> - <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadRole">瀵煎叆瑙掕壊</el-button> - <el-button icon="el-icon-download" plain size="small" type="primary">瀵煎嚭</el-button> + <el-button v-if="permissionList.delBtn" class="button-custom-icon" plain size="small" type="danger" + @click="allDelHandler"> + <icon-show :name="permissionList.delBtn.source"></icon-show> + 鍒犻櫎 + </el-button> + <el-button v-if="permissionList.statisticsBtn" class="button-custom-icon" plain size="small" type="primary" + @click="statisticsHandler"> + <icon-show :name="permissionList.statisticsBtn.source"></icon-show> + 缁熻 + </el-button> + <el-button v-if="permissionList.importRoleBtn" class="button-custom-icon" plain size="small" type="primary" + @click="upLoadRole"> + <icon-show :name="permissionList.importRoleBtn.source"></icon-show> + 瀵煎叆瑙掕壊 + </el-button> + <el-button v-if="permissionList.exportBtn" class="button-custom-icon" plain size="small" type="primary"> + <icon-show :name="permissionList.exportBtn.source"></icon-show> + 瀵煎嚭 + </el-button> + </template> + + <template slot="menu" slot-scope="{ row, index }"> + <el-button + v-if="permissionList.assignMembersBtn" + size="small" + type="text" + @click="assignMembersHandler(row, index)" + > + <icon-show :name="permissionList.assignMembersBtn.source"></icon-show> + 鍒嗛厤鎴愬憳 + </el-button> + <el-button + v-if="permissionList.editBtn" + size="small" + type="text" + @click="handleEdit(row, index)" + > + <icon-show :name="permissionList.editBtn.source"></icon-show> + 缂栬緫 + </el-button> + <el-button + v-if="permissionList.delBtn" + size="small" + type="text" + @click="handleDel(row, index)" + > + <icon-show :name="permissionList.delBtn.source"></icon-show> + 鍒犻櫎 + </el-button> </template> <template slot="roleClassifyText" slot-scope="{row}"> @@ -30,7 +77,7 @@ </template> </avue-crud> - <!-- 鍒嗛厤瑙掕壊绌挎妗� --> + <!-- 鍒嗛厤鎴愬憳绌挎妗� --> <transfer ref="transfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData" :transferTitle="transferTitle" title="瑙掕壊娣诲姞鎴愬憳" @transferSend="roleSendHandler"> @@ -40,7 +87,6 @@ <el-dialog v-dialogDrag v-loading="statisticsLoading" - :destroy-on-close="true" :visible.sync="statisticsVisible" append-to-body="true" class="avue-dialog" @@ -54,14 +100,15 @@ </avue-crud> <div slot="footer" class="dialog-footer" style="display: flex;gap: 20px;justify-content: center"> <div> - <el-tag>褰撳墠瑙掕壊鎬讳汉鏁�: {{this.countData.length}}</el-tag> + <el-tag>褰撳墠瑙掕壊鎬讳汉鏁�: {{ this.countData.length }}</el-tag> </div> - <el-button size="small" @click="statisticsVisible = false" icon="el-icon-close" type="danger">鍏� 闂�</el-button> + <el-button icon="el-icon-close" size="small" type="danger" @click="statisticsVisible = false">鍏� 闂�</el-button> </div> </el-dialog> <!-- 瀵煎叆瑙掕壊 --> - <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" @updata="getTableList" title="瀵煎叆瑙掕壊"></upload-file> + <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="瀵煎叆瑙掕壊" + @updata="getTableList"></upload-file> </basic-container> </template> @@ -78,19 +125,14 @@ } from '@/api/system/role/api' import basicOption from "@/util/basic-option"; import {column} from "@/views/system/role/option"; +import func from "@/util/func"; +import {mapGetters} from "vuex"; export default { name: "index", data() { return { tableData: [], - option: { - ...basicOption, - dialogTop: 0, - dialogWidth: '30%', - calcHeight: -60, - column: column - }, page: { currentPage: 1, pageSize: 10, @@ -108,10 +150,11 @@ countData: [], countOption: { ...basicOption, - selection:false, + selection: false, refreshBtn: false, - addBtn:false, - menu:false, + addBtn: false, + menu: false, + header: false, column: [ { label: '閮ㄩ棬', @@ -132,11 +175,39 @@ label: '瑙掕壊', prop: 'pkPersonName', sortable: true, + overHidden: true, }, ] }, upFileType: ['xls', 'xlsx'], fileUrl: 'api/roleQueryController/importRole', + tipList: ["瑙掕壊瀵煎叆鍙湁 鍚嶇О 鍜� 鎻忚堪 涓ゅ垪锛屼笖鍚嶇О涓哄繀杈撻」涓嶈兘涓虹┖"] + } + }, + computed: { + ...mapGetters(["permission"]), + permissionList() { + return { + addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false), + delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false), + editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false), + exportBtn: this.vaildData(this.permission[this.$route.query.id].EXPORT, false), + assignMembersBtn: this.vaildData(this.permission[this.$route.query.id].ASSIGN, false), + importRoleBtn: this.vaildData(this.permission[this.$route.query.id].IMPORT, false), + statisticsBtn: this.vaildData(this.permission[this.$route.query.id].DISCARD, false), + }; + }, + option() { + return { + ...basicOption, + addBtn: false, + delBtn: false, + editBtn: false, + dialogTop: 0, + dialogWidth: '30%', + column: column, + calcHeight: -60, + } } }, methods: { @@ -149,6 +220,11 @@ this.page.total = res.data.total; this.tableLoading = false; }) + }, + + // 缂栬緫鎸夐挳 + handleEdit(row, index) { + this.$refs.roleCrud.rowEdit(row, index); }, // 鍒楀ご鍒锋柊 @@ -173,49 +249,71 @@ // 琛屽崟閫� rowClickHandler(row) { - this.$refs.roleCrud.toggleRowSelection(row); + func.rowClickHandler( + row, + this.$refs.roleCrud, + this.lastIndex, + (newIndex) => { + this.lastIndex = newIndex; + }, + () => { + this.selectList = [row]; + } + ); }, // 娣诲姞 - rowSaveHandler(row, done) { + rowSaveHandler(row, done, loading) { delete row.roleClassifyText; addRole(row).then(res => { - console.log(res) if (res.data.code === 200) { this.$message.success(res.data.obj); this.getTableList(); + done(); } + }).catch(err => { + console.log(err); + loading(); }) - done(); }, // 缂栬緫 - rowUpdateHandler(row, index, done) { + rowUpdateHandler(row, index, done, loading) { delete row.roleClassifyText; updateRole(row).then(res => { if (res.data.code === 200) { this.$message.success(res.data.obj); this.getTableList(); + done(); } }).catch(err => { - console.log(err); + loading(); }); - done() }, // 鍒犻櫎 - rowDeleteHandler(row) { + handleDel(row, index) { let params = { ids: row.oid } - deleteRole(params).then(res => { - if (res.data.code === 200) { - this.$message.success(res.data.obj); - this.getTableList(); - } - }).catch(err => { - console.log(err); - }) + + this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎褰撳墠瑙掕壊鍚楋紵', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + deleteRole(params).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.getTableList(); + } + }); + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); }, // 澶氶�夊垹闄� @@ -247,20 +345,22 @@ }, // 鍒嗛厤鎴愬憳 - assignMembersHandler() { - if (this.selectList.length <= 0) { - this.$message.warning('璇烽�夋嫨瑙掕壊杩涜鎴愬憳鍒嗛厤锛�'); - return; - } - - if (this.selectList.length > 1) { - this.$message.warning('涓�娆″彧鑳藉涓�涓鑹茶繘琛屽垎閰嶆垚鍛樻搷浣滐紒'); - return; - } + assignMembersHandler(row,index) { + // if (this.selectList.length <= 0) { + // this.$message.warning('璇烽�夋嫨瑙掕壊杩涜鎴愬憳鍒嗛厤锛�'); + // return; + // } + // + // if (this.selectList.length > 1) { + // this.$message.warning('涓�娆″彧鑳藉涓�涓鑹茶繘琛屽垎閰嶆垚鍛樻搷浣滐紒'); + // return; + // } Promise.all([ - listUserUnInRoleOid({pkRole: this.selectList[0].oid}), - listUserByRoleOid({pkRole: this.selectList[0].oid}) + listUserUnInRoleOid({pkRole: row.oid}), + listUserByRoleOid({pkRole: row.oid}) ]).then(([unInRoleRes, byRoleRes]) => { + this.leftRoleData = []; + this.rightRoleData = []; if (unInRoleRes.data.code === 200 && byRoleRes.data.code === 200) { const leftData = [...unInRoleRes.data.data, ...byRoleRes.data.data]; // 缁勮濂界┛姊鍙敤鏁版嵁 @@ -273,8 +373,6 @@ this.rightRoleData = byRoleRes.data.data.map(item => item.oid); this.$refs.transfer.visible = true; } - }).catch(err => { - console.error(err); }); }, @@ -288,8 +386,6 @@ saveRight(params).then(res => { this.$message.success(res.data.obj); this.getTableList(); - }).catch(err => { - this.$message.error(err) }) }, @@ -305,26 +401,23 @@ return; } listUserByRoleOid({pkRole: this.selectList[0].oid}).then(res => { - console.log(res) if (res.data.code === 200) { const data = res.data.data; this.countData = data.map(item => { return { pkDepartmentName: item.pkDepartmentName, - name:item.name, - id:item.id, - pkPersonName:this.selectList[0].name + name: item.name, + id: item.id, + pkPersonName: this.selectList[0].name } }); this.statisticsVisible = true; } - }).catch(err => { - console.log(err) }) }, // 瀵煎叆瑙掕壊 - upLoadRole(){ + upLoadRole() { this.$refs.upload.visible = true; } } -- Gitblit v1.9.3