From 391eec3114a17e68652434c6eae610799d80290e Mon Sep 17 00:00:00 2001 From: ludc <ludc@vci-tech.com> Date: 星期四, 16 一月 2025 11:13:43 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue | 485 +++++++++++++++++++++++++++++++++++------------------ 1 files changed, 320 insertions(+), 165 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue index aa97702..7be280b 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/Aciton/index.vue @@ -1,45 +1,80 @@ <template> <el-container> - <el-aside> <basic-container> - <div ref="TreeBox" style="height: calc(100vh - 144px);!important;"> - <div class="headerCon"> - <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addTreeClickHandler">鍒涘缓 - </el-button> - <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editTreeClickHandler">淇敼 - </el-button> - <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delTreeClickHandler">鍒犻櫎 - </el-button> - <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭 - </el-button> - <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadClickHandler">瀵煎叆 - </el-button> - </div> - <!-- 宸︿晶鏍� --> - <div style="height: calc(100vh - 280px);"> - <avue-tree - ref="tree" - v-model="treeForm" - :data="treeData" - :option="treeOption" - @save="rowTreeSaveHandler" - @update="rowTreeUpdataHandler" - @node-click="nodeClick"> + <!-- 宸︿晶鏍� --> + <div style="height: calc(100vh - 150px);"> + <avue-tree + ref="tree" + v-model="treeForm" + :data="treeData" + :option="treeOption" + @node-click="nodeClick"> <span slot-scope="{ node, data }" class="el-tree-node__label"> - <span style="font-size: 15px"> - <i class="el-icon-s-promotion"></i> + <span style="display: flex"> + <icon-show v-if="data.icon" :name="data.icon"></icon-show> {{ (node || {}).label }} </span> </span> - </avue-tree> - </div> + </avue-tree> </div> </basic-container> </el-aside> <el-main> - <basic-container> + <basic-container v-show="treeNodeRow.id === 'root' "> + <div> + <avue-crud + ref="treeCrud" + v-model="treeForm" + :data="treeData[0].children" + :option="treeCrudOption" + @row-del="rowTreeDelHandler" + @row-save="rowTreeSaveHandler" + @row-update="rowTreeUpdataHandler" + @refresh-change="handleRefresh"> + <template slot="menuLeft"> + <el-button v-if="permissionList.addBtn" class="button-custom-icon" plain size="small" type="primary" + @click="addTreeClickHandler(treeNodeRow)"> + <icon-show :name="permissionList.addBtn.source"></icon-show> + 鍒涘缓 + </el-button> + <!--<el-button v-if="permissionList.editBtn" icon="el-icon-edit" plain size="small" type="primary" @click="editTreeClickHandler">淇敼 + </el-button> + <el-button v-if="permissionList.delBtn" icon="el-icon-delete" plain size="small" type="danger" @click="delTreeClickHandler">鍒犻櫎 + </el-button>--> + <el-button v-if="permissionList.importBtn" class="button-custom-icon" plain size="small" type="primary" @click="uploadClickHandler"> + <icon-show :name="permissionList.importBtn.source"></icon-show> + 瀵煎叆 + </el-button> + <el-button v-if="permissionList.exportBtn" class="button-custom-icon" plain size="small" type="primary" @click="exportClickHandler"> + <icon-show :name="permissionList.exportBtn.source"></icon-show> + 瀵煎嚭 + </el-button> + </template> + <template #menu="{ row, index, size }"> + <el-button v-if="permissionList.editBtn" size="small" type="text" + @click="$refs.treeCrud.rowEdit(row, index)"> + <icon-show :name="permissionList.editBtn.source"></icon-show> + 缂栬緫 + </el-button> + <el-button v-if="permissionList.delBtn" size="small" type="text" + @click.stop="rowTreeDelHandler(row,index)"> + <icon-show :name="permissionList.delBtn.source"></icon-show> + 鍒犻櫎 + </el-button> + <el-button v-if="permissionList.addBtn" :size="size" + text + type="text" + @click="addTreeClickHandler(row)"> + <icon-show :name="permissionList.addBtn.source"></icon-show> + 鏂板瀛愮骇 + </el-button> + </template> + </avue-crud> + </div> + </basic-container> + <basic-container v-show="treeNodeRow.id !== 'root'"> <div> <avue-crud ref="crud" @@ -56,16 +91,40 @@ @refresh-change="handleRefresh" @selection-change="selectChangeHandler" @row-click="rowClickHandler"> + <template slot="plImage" slot-scope="{row}"> + <span class="avue-icon"> + <icon-show :name="row.plImage"></icon-show> + </span> + </template> + <template slot-scope="{type,disabled}" slot="plImageForm"> + <input-icon :disabled="disabled" v-model="form.plImage"></input-icon> + </template> <template slot="plTypeType" slot-scope="{row}"> <el-tag :type="row.plTypeType === 'business' ? '' : 'success'"> {{ row.plTypeType === 'business' ? '涓氬姟绫诲瀷' : '閾炬帴绫诲瀷' }} </el-tag> </template> <template slot="menuLeft" slot-scope="scope"> - <el-button v-if="treeNodeRow.id !== 'root'" icon="el-icon-plus" plain size="small" type="primary" - @click="addClickHandler">澧炲姞 + <el-button v-if="treeNodeRow.id !== 'root' && permissionList.actionTopAddBtn" class="button-custom-icon" plain size="small" type="primary" + @click="addClickHandler"> + <icon-show :name="permissionList.actionTopAddBtn.source"></icon-show> + 澧炲姞 </el-button> - <el-button icon="el-icon-download" plain size="small" type="success" @click="downLoadHandler">瀵煎嚭 + <el-button v-if="permissionList.actionTopExportBtn" class="button-custom-icon" plain size="small" type="success" @click="downLoadHandler"> + <icon-show :name="permissionList.actionTopExportBtn.source"></icon-show> + 瀵煎嚭 + </el-button> + </template> + <template #menu="{row,index,size}"> + <el-button v-if="permissionList.actionTopEditBtn" size="small" type="text" + @click="$refs.crud.rowEdit(row, index)"> + <icon-show :name="permissionList.actionTopEditBtn.source"></icon-show> + 缂栬緫 + </el-button> + <el-button v-if="permissionList.actionTopDelBtn" size="small" type="text" + @click.stop="rowDelHandler(row,index)"> + <icon-show :name="permissionList.actionTopDelBtn.source"></icon-show> + 鍒犻櫎 </el-button> </template> </avue-crud> @@ -83,7 +142,21 @@ @row-del="BottomRowDelHandler" > <template slot="menuLeft" slot-scope="scope"> - <el-button icon="el-icon-plus" plain size="small" type="primary" @click="bottomAddClickHandler">澧炲姞 + <el-button v-if="permissionList.actionBottomAddBtn" class="button-custom-icon" plain size="small" type="primary" @click="bottomAddClickHandler"> + <icon-show :name="permissionList.actionBottomAddBtn.source"></icon-show> + 澧炲姞 + </el-button> + </template> + <template #menu="{row,index,size}"> + <el-button v-if="permissionList.actionBottomEditBtn" size="small" type="text" + @click="$refs.BottomCrud.rowEdit(row, index)"> + <icon-show :name="permissionList.actionBottomEditBtn.source"></icon-show> + 缂栬緫 + </el-button> + <el-button v-if="permissionList.actionBottomDelBtn" size="small" type="text" + @click.stop="BottomRowDelHandler(row,index)"> + <icon-show :name="permissionList.actionBottomDelBtn.source"></icon-show> + 鍒犻櫎 </el-button> </template> <template slot="menuForm" slot-scope="scope"> @@ -134,6 +207,7 @@ } from '@/api/UI/Action/api' import func from "@/util/func"; import basicOption from "@/util/basic-option"; +import {mapGetters} from "vuex"; export default { name: "index", @@ -152,46 +226,91 @@ bottomTableLoading: false, bottomForm:{}, bottomData: [], - bottomOption: { - ...basicOption, - addBtn: false, - calcHeight: -30, - selection: false, - refreshBtn: false, - dialogWidth:'700', - saveBtn:false, - // height:'auto', - column: [ - { - label: '鍙傛暟鍚嶇О', - prop: 'name', - rules: [ - { - required: true, - message: '璇疯緭鍏ュ弬鏁板悕绉�', - trigger: 'blur' - } - ] - }, - { - label: '榛樿鍊�', - prop: 'defaultValue', - }, - { - label: '鎻愮ず淇℃伅', - prop: 'description', - span: 24, - type: 'textarea', - rows: 4 - }, - ], - }, tableLoading: false, lastIndex: null, selectList: [], data: [], - option: { + treeNodeRow: {}, + treeForm: {}, + treeOption: { + menu: false, + defaultExpandedKeys: ['root'], + props: { + label: 'name', + value: 'id', + children: 'children' + } + }, + treeData: [] + } + }, + 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), + importBtn: this.vaildData(this.permission[this.$route.query.id].IMPORT, false), + actionTopAddBtn: this.vaildData(this.permission[this.$route.query.id].ADD2, false), + actionTopDelBtn: this.vaildData(this.permission[this.$route.query.id].DELETE2, false), + actionTopEditBtn: this.vaildData(this.permission[this.$route.query.id].EDIT2, false), + actionTopExportBtn: this.vaildData(this.permission[this.$route.query.id].DOWNLOAD, false), + actionBottomAddBtn: this.vaildData(this.permission[this.$route.query.id].ADD3, false), + actionBottomDelBtn: this.vaildData(this.permission[this.$route.query.id].DELETE3, false), + actionBottomEditBtn: this.vaildData(this.permission[this.$route.query.id].EDIT3, false), + }; + }, + treeCrudOption(){ + return { ...basicOption, + editBtn: false, + delBtn: false, + addBtn: false, + calcHeight: -50, + highlightCurrentRow: true, + rowKey: 'id', + rowParentKey: 'pid', + menuWidth: 300, + span: 24, + labelWidth: 100, + dialogWidth: '800', + align:'left', + column: [{ + label: '鍒嗙被鍚嶇О', + prop: 'name', + rules: [{ + required: true, + message: '璇疯緭鍏ュ垎绫诲悕绉�', + trigger: 'blur' + }] + }, { + label: '鍒嗙被搴忓彿', + prop: 'serialno', + rules: [{ + required: true, + message: '璇疯緭鍏ュ垎绫诲簭鍙�', + trigger: 'blur' + }] + }, { + label: '鐖朵富绫�', + prop: 'pidName', + disabled: true, + span: 24 + }, { + label: '澶囨敞', + prop: 'description', + type: 'textarea', + span: 24 + }], + } + }, + option() { + return { + ...basicOption, + editBtn:false, + delBtn:false, addBtn: false, height: 350, highlightCurrentRow: true, @@ -203,6 +322,7 @@ { label: '缂栧彿', prop: 'plCode', + width: 220, overHidden: true, search: true, rules: [ @@ -227,14 +347,26 @@ ] }, { + label: '鍥炬爣', + prop: 'plImage', + width: 80, + rules: [ + { + required: true, + message: '璇烽�夋嫨鍥炬爣', + trigger: 'submit' + } + ] + }, + { label: '鍒嗙被', prop: 'plActionCls', type: 'tree', - hide: true, + defaultExpandedKeys:['root'], props: { label: 'name', value: 'id', - children: 'childs' + children: 'children' }, rules: [ { @@ -245,13 +377,13 @@ ], dicData: [] }, - { + /*{ label: 'C/S绫昏矾寰�', prop: 'plCSClass', - search: true, + hide:true, searchLabelWidth:120, overHidden: true, - }, + },*/ { label: 'B/S閾炬帴鍦板潃', prop: 'plBSUrl', @@ -288,70 +420,44 @@ type: 'textarea' }, ] - }, - treeNodeRow: {}, - treeForm: {}, - treeOption: { + } + }, + bottomOption(){ + return { + ...basicOption, addBtn: false, - defaultExpandedKeys: ['root'], - props: { - label: 'name', - value: 'id', - children: 'childs' - }, - dialogWidth:'800', - dialogMenuPosition: 'right', - formOption: { - dialogMenuPosition: 'right', - column: [ - { - label: '鍒嗙被鍚嶇О', - prop: 'name', - rules: [ - { - required: true, - message: '璇疯緭鍏ュ垎绫诲悕绉�', - trigger: 'blur' - } - ] - }, - { - label: '鍒嗙被搴忓彿', - prop: 'serialno', - rules: [ - { - required: true, - message: '璇疯緭鍏ュ垎绫诲簭鍙�', - trigger: 'blur' - } - ] - }, - { - label: '鍒涘缓鑰�', - prop: 'creator', - disabled: true, - }, - { - label: '鍒涘缓鏃堕棿', - prop: 'createTime', - disabled: true, - }, - { - label: '鐖朵富绫�', - prop: 'pidName', - disabled: true, - span:24 - }, - { - label: '澶囨敞', - prop: 'description', - type:'textarea', - span:24 - }, - ], - } - }, - treeData: [], + editBtn:false, + delBtn:false, + calcHeight: -20, + selection: false, + refreshBtn: false, + dialogWidth:'700', + saveBtn:false, + column: [ + { + label: '鍙傛暟鍚嶇О', + prop: 'name', + rules: [ + { + required: true, + message: '璇疯緭鍏ュ弬鏁板悕绉�', + trigger: 'blur' + } + ] + }, + { + label: '榛樿鍊�', + prop: 'defaultValue', + }, + { + label: '鎻愮ず淇℃伅', + prop: 'description', + span: 24, + type: 'textarea', + rows: 4 + }, + ], + } } }, created() { @@ -365,19 +471,34 @@ } getActionTree(params).then(res => { const data = res.data.obj; - this.treeData = [data]; + this.treeData = this.treeDataFormAtter([data],'Action鍒嗙被'); const selectTreeData = this.option.column.find(item => item.prop === 'plActionCls'); // 鎵惧埌action娣诲姞鍒嗙被鏍� - const dicData=[data]; - dicData[0].disabled=true;//鏍硅妭鐐逛笉鑳介�� + const dicData=this.treeData; + dicData[0].disabled=true;//鍒嗙被鏍硅妭鐐逛笉鑳介�� selectTreeData.dicData = dicData; + selectTreeData.hide=true;//闅愯棌鍒嗙被鍒椼�備笉鑳界洿鎺ュ湪option璁剧疆锛屼細瀵煎嚭dicData鍔犺浇涓嶅嚭 }) + }, + + treeDataFormAtter(items,pidName) { + return items.map(item => { + // 杞崲褰撳墠鑺傜偣鐨勫睘鎬� + const formList = { + ...item, + pidName:pidName, + children: item.childs && item.childs.length > 0 ? this.treeDataFormAtter(item.childs,item.name) : undefined + }; + return formList; + }); }, // 宸︿晶鏍戣鐐瑰嚮 nodeClick(row) { this.treeNodeRow = row; - this.getRightTableList(row); - this.bottomData = []; + if(this.treeNodeRow.id !== 'root'){ + this.getRightTableList(row); + this.bottomData = []; + } }, // 澶撮儴鍒锋柊鎸夐挳 @@ -392,7 +513,7 @@ getRightTableList(row) { this.tableLoading = true; const params = { - plactioncls: row.id + plactioncls: row.id ? row.id : '' } getActionTableData(params).then(res => { const data = res.data.data; @@ -417,7 +538,7 @@ this.lastIndex = newIndex; }, () => { - this.selectList = []; + this.selectList = [row]; } ); @@ -433,7 +554,7 @@ } this.tableLoading = true; const apiParams = { - plactioncls: this.treeNodeRow.id === 'root' ? '' : this.treeNodeRow.id, + plactioncls: this.treeNodeRow.id === 'root' ? '' : this.treeNodeRow.id ? this.treeNodeRow.id : '', ...params } @@ -457,13 +578,12 @@ beforeOpen(done, type, loading) { if ([ 'edit'].includes(type)) { // 缂栬緫閫昏緫 - this.$set(this.option.column[2],'disabled',false); + this.$set(this.option.column[3],'disabled',false); } else { // 鏂板閫昏緫 - this.$set(this.option.column[2],'disabled',true); + this.$set(this.option.column[3],'disabled',true); } done(); - console.log(this.option.column) }, // action鍒楄〃澧炲姞 addClickHandler() { @@ -537,9 +657,7 @@ exportAction(params).then(res => { func.downloadFileByBlobHandler(res); this.$message.success('瀵煎嚭鎴愬姛'); - }).catch(err => { - this.$message.error(err); - }) + }); }, // action鍒楄〃琛屽垹闄� @@ -646,33 +764,37 @@ }, // 宸︿晶鏍戝垱寤� - addTreeClickHandler() { - if (func.isEmptyObject(this.treeNodeRow)) { + addTreeClickHandler(row) { + let parentRow=row; + if(!row || !row.id){ + parentRow=this.treeNodeRow + } + if (func.isEmptyObject(parentRow)) { this.$message.error('璇烽�夋嫨涓�鏉″垎绫昏繘琛屾坊鍔�'); return; } - if (!this.treeNodeRow.id && this.treeNodeRow.name=='鏈垎绫�') { + if (!parentRow.id && parentRow.name=='鏈垎绫�') { this.$message.error('鏈垎绫讳笅涓嶈兘鍒涘缓瀛愬垎绫�'); return; } - const {createTime, creator, name, id, description} = this.treeNodeRow; + const {createTime, creator, name, id, description} = parentRow; this.$set(this.treeForm, 'createTime', func.formattedDate(createTime)); this.$set(this.treeForm, 'creator', creator); this.$set(this.treeForm, 'pid', id); this.$set(this.treeForm, 'pidName', name); - this.$refs.tree.rowAdd(); + this.$refs.treeCrud.rowAdd(); }, // action鍒嗙被淇濆瓨 - rowTreeSaveHandler(node, data, done, loading) { - saveActionCls(data).then(res => { + rowTreeSaveHandler(row, done, loading) { + saveActionCls(row).then(res => { if (res.data.code === 200) { this.$message.success('鍒嗙被鍒涘缓鎴愬姛'); this.getTreeList(); } - done(); }) + done(); loading(); }, @@ -702,15 +824,15 @@ this.$set(this.treeForm, 'pidName', pidName); this.$set(this.treeForm, 'description', description); - this.$refs.tree.rowEdit(); + this.$refs.treeCrud.rowEdit(); }, // action鍒嗙被淇敼淇濆瓨 - rowTreeUpdataHandler(node, data, done, loading) { - updateActionCls(data).then(res => { + rowTreeUpdataHandler(row, done, loading) { + updateActionCls(row).then(res => { if (res.data.code === 200) { this.$message.success('淇敼鎴愬姛'); - //this.getBottomList(); + this.getTreeList(); } done(); }) @@ -731,6 +853,32 @@ } } return 'null'; + }, + + // action鍒嗙被淇敼淇濆瓨 + rowTreeDelHandler( row) { + if (row.id === 'root') { + this.$message.error('鏍硅妭鐐逛笉鑳藉垹闄�'); + return; + } + + this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎褰撳墠鏁版嵁鍚楋紵', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + deleteActionCls(row).then(res => { + if (res.data.code === 200) { + this.$message.success('鍒嗙被鍒犻櫎鎴愬姛'); + this.getTreeList(); + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); }, // action鍒嗙被鍒犻櫎 @@ -766,12 +914,18 @@ // action鍒嗙被瀵煎嚭 exportClickHandler() { - + this.$message({ + type: 'info', + message: '寰呭疄鐜�' + }); }, // action鍒嗙被瀵煎叆 uploadClickHandler() { - + this.$message({ + type: 'info', + message: '寰呭疄鐜�' + }); } } @@ -783,8 +937,9 @@ .el-scrollbar__wrap { overflow: auto !important; } + .avue-dialog .el-dialog__body .avue-form{ - margin: 0 auto; + margin: 0 auto !important; } } </style> -- Gitblit v1.9.3