From c659560c7ee8d8f8278b938421de13bf65d1e1b1 Mon Sep 17 00:00:00 2001 From: ludc <ludc@vci-tech.com> Date: 星期三, 15 一月 2025 14:28:25 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue | 377 +++++++++++++++++++++++++++++++++++------------------ 1 files changed, 250 insertions(+), 127 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue b/Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue index 8709445..8bb7e72 100644 --- a/Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue @@ -1,12 +1,14 @@ <template> - <el-container> + <el-container v-loading="createdLoading"> <el-aside> <basic-container> - <div style="max-height: calc(100vh - 170px);overflow: auto"> - <avue-tree :key="refresh" ref="tree" :data="treeData" :option="treeOption" @node-click="nodeClick"> + <div style="max-height: calc(100vh - 150px);overflow: auto"> + <avue-tree :key="refresh" ref="tree" :data="treeData" :option="treeOption" node-key="id" + @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.iconType=='svg'" :name="data.icon"></icon-show> + <i v-else :class="data.icon"></i> {{ (node || {}).label }} </span> </span> @@ -17,83 +19,15 @@ <el-main> <basic-container> - <el-form ref="form" :model="form" label-width="85px" style="height: 79vh"> - <span v-if="form.childType !== 0"> - <el-form-item label="妯″潡鍚嶏細"> - <el-input v-model="form.name" placeholder="璇疯緭鍏ユā鍧楀悕"></el-input> - </el-form-item> - <el-form-item label="妯″潡鍒悕锛�"> - <el-input v-model="form.alias" placeholder="妯″潡鍒悕鐢ㄦ潵璁板綍鏃ュ織浣跨敤"></el-input> - </el-form-item> - <el-form-item label="C/S锛�"> - <el-input v-model="form.pathC" :rows="3" placeholder="璇疯緭鍏/S璺緞" type="textarea"></el-input> - </el-form-item> - <el-form-item label="B/S锛�"> - <el-input v-model="form.path" :rows="3" placeholder="璇疯緭鍏/S璺緞" type="textarea"></el-input> - </el-form-item> - <el-form-item label=".NET锛�"> - <el-input v-model="form.resourceDotNet" :rows="3" placeholder="璇疯緭鍏�.NET" type="textarea"></el-input> - </el-form-item> - <el-form-item label="Mobile锛�"> - <el-input v-model="form.resourceMobile" :rows="3" placeholder="璇疯緭鍏obile" type="textarea"></el-input> - </el-form-item> - <el-form-item label="搴忓彿锛�"> - <el-input v-model="form.sort" placeholder="鏁板瓧锛屾弿杩拌妯″潡鍦ㄥ叾鐖舵ā鍧椾笅鐨勬樉绀洪『搴�"></el-input> - </el-form-item> - <el-form-item label="绠�鍥撅細"> - <el-input v-model="form.source"></el-input> - </el-form-item> - <el-form-item label="鎻忚堪锛�"> - <el-input v-model="form.remark" :rows="3" placeholder="璇疯緭鍏ユ弿杩�" type="textarea"></el-input> - </el-form-item> - <el-form-item label="鏄惁鏈夋晥锛�"> - <el-switch - v-model="form.isValid" - active-color="#13ce66" - inactive-color="#ff4949"> - </el-switch> - <el-link :underline="false" style="margin-left: 20px" type="danger">涓嶇敓鏁堬紙涓嶉�夋嫨锛夋椂锛岃妯″潡鍦ㄥ姛鑳芥ā鍧楁巿鏉冮噷涓嶆樉绀�</el-link> - </el-form-item> - </span> - <span v-if="form.childType === 0"> - <el-form-item label="鍚嶇О锛�"> - <el-input v-model="form.name" :disabled="form.childType === 0" placeholder="璇疯緭鍏ュ悕绉�"></el-input> - </el-form-item> - <el-form-item label="鏍囪瘑锛�"> - <el-input v-model="form.code" :disabled="form.childType === 0" placeholder="璇疯緭鍏ユ爣璇�"></el-input> - </el-form-item> - <el-form-item label="鍒悕锛�"> - <el-input v-model="form.alias" placeholder="璇疯緭鍏ュ埆鍚�"></el-input> - </el-form-item> - <el-form-item label="缂栧彿锛�"> - <el-input v-model="form.sort" :disabled="form.childType === 0" placeholder="璇疯緭鍏ョ紪鍙�"></el-input> - </el-form-item> - <el-form-item label="鎻忚堪锛�"> - <el-input v-model="form.remark" :disabled="form.childType === 0" placeholder="璇疯緭鍏ユ弿杩�"></el-input> - </el-form-item> - <el-form-item label="鏄惁鏈夋晥锛�"> - <el-switch - v-model="form.isValid" - active-color="#13ce66" - inactive-color="#ff4949"> - </el-switch> - - </el-form-item> - </span> - </el-form> - <div v-if="form.childType && form.childType !== 0" class="btnBox"> - <el-button v-if="!addStatus" :disabled="mangeShowBtn ? false : !childTypeBtn" icon="el-icon-plus" plain + <div v-if="(form.childType || form.childType === 0) && !addStatus && !editStatus && form.category !== 1" + class="btnBox"> + <el-button :disabled="(mangeShowBtn || form.childType === 0) ? false : !childTypeBtn" icon="el-icon-plus" + plain size="small" type="primary" @click="addClickHandler">澧炲姞 </el-button> - <el-button v-if="addStatus" icon="el-icon-check" plain size="small" - type="success" @click="addSaveClickHandler">淇濆瓨 - </el-button> - <el-button v-if="!editStatus" :disabled="mangeShowBtn" icon="el-icon-edit" plain size="small" type="primary" + <el-button :disabled="mangeShowBtn" icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼 - </el-button> - <el-button v-if="editStatus" icon="el-icon-check" plain size="small" - type="success" @click="editSaveClickHandler">淇濆瓨 </el-button> <el-button :disabled="mangeShowBtn" icon="el-icon-close" plain size="small" type="danger" @click="delClickHandler">鍒犻櫎 @@ -102,11 +36,11 @@ size="small" type="primary" @click="addMethodsClickHandler">澧炲姞鎿嶄綔绫诲瀷 </el-button> - <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small" + <el-button v-if=" mangeShowBtn" icon="el-icon-circle-close" plain size="small" type="danger" @click="addClickHandler">鍒犻櫎闈炵郴缁熸ā鍧� </el-button> - <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small" + <el-button v-if="mangeShowBtn " icon="el-icon-circle-close" plain size="small" type="danger" @click="addClickHandler">鍒犻櫎涓氬姟妯″潡 </el-button> @@ -119,12 +53,107 @@ <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="sqlClickExportClick">瀵煎嚭sql </el-button> </div> - <div v-if="form.childType === 0" class="btnBox"> - <el-button icon="el-icon-edit" plain size="small" type="primary">淇敼鍒悕 + <div v-else-if="(form.childType || form.childType === 0) && (addStatus || editStatus)" class="btnBox"> + <el-button v-if="addStatus" icon="el-icon-check" plain size="small" + type="success" @click="addSaveClickHandler">淇濆瓨 </el-button> - <el-button icon="el-icon-close" plain size="small" type="danger">鍒犻櫎 + <el-button v-if="editStatus" icon="el-icon-check" plain size="small" + type="success" @click="editSaveClickHandler">淇濆瓨 + </el-button> + <el-button icon="el-icon-close" plain size="small" + type="danger" @click="addStatus=false;editStatus=false;">鍙栨秷 </el-button> </div> + <div v-if="form.category === 1" class="btnBox"> + <el-button icon="el-icon-edit" plain size="small" type="primary" @click="updataAliasClickHandler">淇敼鍒悕 + </el-button> + <el-button icon="el-icon-close" plain size="small" type="danger" @click="deleteOperationClickHandler">鍒犻櫎 + </el-button> + </div> + <el-form ref="form" :model="form" label-width="100px" style="max-height: calc(100vh - 200px);overflow: auto;"> + <span v-if="form.category !== 1"> + <el-form-item class="is-required"> + <span slot="label">妯″潡鍚嶏細</span> + <el-input v-model="form.name" :disabled="!editStatus && !addStatus" placeholder="璇疯緭鍏ユā鍧楀悕"></el-input> + </el-form-item> + <el-form-item class="is-required"> + <span slot="label">妯″潡鍒悕锛�</span> + <el-input v-model="form.alias" :disabled="!editStatus && !addStatus" placeholder="璇疯緭鍏ユā鍧楀埆鍚�"></el-input> + </el-form-item> + <el-form-item class="is-required"> + <span slot="label">搴忓彿锛�</span> + <el-input-number v-model="form.sort" :disabled="!editStatus && !addStatus"></el-input-number> + <el-link :underline="false" style="margin-left: 20px" type="danger">鏁板瓧锛屾弿杩拌妯″潡鍦ㄥ叾鐖舵ā鍧椾笅鐨勬樉绀洪『搴�</el-link> + </el-form-item> + <el-form-item v-if="form.functionType === 0" label="C/S锛�"> + <el-input v-model="form.pathC" :disabled="!editStatus && !addStatus" :rows="2" placeholder="璇疯緭鍏/S璺緞" + type="textarea"></el-input> + </el-form-item> + <el-form-item v-if="form.functionType === 0" label="B/S锛�"> + <el-input v-model="form.path" :disabled="!editStatus && !addStatus" :rows="2" placeholder="璇疯緭鍏/S璺緞" + type="textarea"></el-input> + </el-form-item> + <el-form-item v-if="form.functionType === 0" label=".NET锛�"> + <el-input v-model="form.resourceDotNet" :disabled="!editStatus && !addStatus" :rows="2" + placeholder="璇疯緭鍏�.NET" type="textarea"></el-input> + </el-form-item> + <el-form-item label="鍥炬爣锛�"> + <input-icon v-model="form.source" :disabled="!editStatus && !addStatus" placeholder="璇烽�夋嫨鍥炬爣"> + </input-icon> + </el-form-item> + <el-form-item label="鎻忚堪锛�"> + <el-input v-model="form.remark" :disabled="!editStatus && !addStatus" :rows="3" placeholder="璇疯緭鍏ユ弿杩�" + type="textarea"></el-input> + </el-form-item> + <el-form-item label="鏄惁鑿滃崟锛�"> + <el-switch + v-model="form.functionType" + :active-value="0" + :disabled="!editStatus && !addStatus" + :inactive-value="1" + active-color="#13ce66" + inactive-color="#ff4949"> + </el-switch> + </el-form-item> + <el-form-item label="鏄惁鏈夋晥锛�"> + <el-switch + v-model="form.isValid" + :disabled="!editStatus && !addStatus" + active-color="#13ce66" + inactive-color="#ff4949"> + </el-switch> + <el-link :underline="false" style="margin-left: 20px" type="danger">涓嶇敓鏁堬紙涓嶉�夋嫨锛夋椂锛岃妯″潡鍦ㄥ姛鑳芥ā鍧楁巿鏉冮噷涓嶆樉绀�</el-link> + </el-form-item> + </span> + <span v-if="form.category === 1"> + <el-form-item label="鍚嶇О锛�" class="is-required"> + <el-input v-model="form.name" :disabled="form.category === 1" placeholder="璇疯緭鍏ュ悕绉�"></el-input> + </el-form-item> + <el-form-item label="鏍囪瘑锛�" class="is-required"> + <el-input v-model="form.code" :disabled="form.category === 1" placeholder="璇疯緭鍏ユ爣璇�"></el-input> + </el-form-item> + <el-form-item label="鍒悕锛�" class="is-required"> + <el-input v-model="form.alias" placeholder="璇疯緭鍏ュ埆鍚�"></el-input> + </el-form-item> + <el-form-item label="鍥炬爣锛�"> + <input-icon v-model="form.source" placeholder="璇烽�夋嫨鍥炬爣"> + </input-icon> + </el-form-item> + <el-form-item label="缂栧彿锛�" class="is-required"> + <el-input-number v-model="form.sort" :disabled="form.category === 1" :max="63" :min="1"></el-input-number> + </el-form-item> + <el-form-item label="鎻忚堪锛�"> + <el-input v-model="form.remark" :disabled="form.category === 1" placeholder="璇疯緭鍏ユ弿杩�"></el-input> + </el-form-item> + <el-form-item label="鏄惁鏈夋晥锛�"> + <el-switch + v-model="form.isValid" + active-color="#13ce66" + inactive-color="#ff4949"> + </el-switch> + </el-form-item> + </span> + </el-form> </basic-container> </el-main> <el-dialog @@ -133,7 +162,7 @@ append-to-body="true" class="avue-dialog" title="鎿嶄綔鍒嗙被" - width="60%" + width="900px" > <avue-crud ref="methodsCrud" @@ -142,13 +171,15 @@ :table-loading="methodsLoading" @row-click="rowMethodsClickHandler" @selection-change="selectMethodsChange"> - </avue-crud> <span slot="footer" class="dialog-footer"> - <el-button @click="methodsVisble = false">鍙� 娑�</el-button> <el-button type="primary" @click="methodsSaveClickHandler">淇� 瀛�</el-button> + <el-button @click="methodsVisble = false">鍙� 娑�</el-button> </span> </el-dialog> + <!--瀵煎叆 --> + <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" fileName="files" title="瀵煎叆" + @updata="resetFormValue"></upload-file> </el-container> </template> @@ -160,7 +191,10 @@ updateModel, delModule, exportFunctionSql, - addOperationType + addOperationType, + exportModule, + updateAlias, + delFuncOperation } from "@/api/systemModel/mangeModel/api" import func from "@/util/func"; import basicOption from "@/util/basic-option"; @@ -169,6 +203,10 @@ name: "index", data() { return { + tipList: [], + upFileType: ['xls', 'xlsx'], + fileUrl: 'api/hmSysModConfigController/importModule', + createdLoading: false, lastIndex: null, methodsList: [], methodsData: [], @@ -177,13 +215,20 @@ addBtn: false, menu: false, height: 500, - column: [ - { - label: '鎿嶄綔鍒嗙被', - prop: 'name', - sortable: true, - } - ] + header: false, + column: [{ + label: '鍚嶇О', + prop: 'name', + width:180, + sortable: true, + }, { + label: '鏍囪瘑', + prop: 'code', + width:180, + }, { + label: '鎻忚堪', + prop: 'remark' + }] }, methodsLoading: false, methodsVisble: false, @@ -192,6 +237,7 @@ addStatus: false, editStatus: false, nodeRow: {}, + currentClickNode: null, form: {}, treeData: [], treeOption: { @@ -199,24 +245,26 @@ menu: false, addBtn: false, defaultExpandAll: false, + defaultExpandedKeys:['system'], props: { - label: 'name', + label: 'label', value: 'id', children: 'children', }, lazy: true, treeLoad: (node, resolve) => { const params = { - parentId: node.level === 0 ? "systemManagmentNode" : node.data.id, + parentId: node.level === 0 ? "system" : node.data.id, modeType: node.level === 0 ? "firstNode" : node.data.modeType, } getSysModelTreeMenuByPID(params).then(res => { resolve(res.data.data.map(item => { return { ...item, - id: item.id, - name: item.name, - leaf: !item.hasChildren + label: item.category!=1?item.name:item.alias, + leaf: !item.hasChildren, + icon: item.source || (node.level === 0?'el-icon-s-home':'el-icon-s-tools'), + iconType:item.source?'svg':'iconfont' } })) }) @@ -245,27 +293,29 @@ }, methods: { // 鏍戣鐐瑰嚮 - nodeClick(row) { - console.log(row.childType); + nodeClick(row, node) { this.form = {...row}; this.nodeRow = {...row}; + this.currentClickNode = node; this.addStatus = false; this.editStatus = false; }, // 鏂板鎸夐挳 addClickHandler() { - this.resetFormValue(); + // this.resetFormValue(); + this.defalutName.forEach(key => { + this.form[key] = null; + }) + this.form.isValid = false; this.addStatus = true; this.editStatus = false; }, // 娓呯┖琛ㄥ崟缁戝畾鍊� resetFormValue() { - this.defalutName.forEach(key => { - this.form[key] = null; - }) - this.form.isValid = false; + this.form = {}; + this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� }, // 鏂板淇濆瓨鎸夐挳 @@ -274,24 +324,28 @@ this.$message.error('妯″潡鍚嶄笉鑳戒负绌�'); return } + if (!this.form.alias) { + this.$message.error('鑿滃崟鏍囪瘑涓嶈兘涓虹┖'); + return + } if (this.form.name.length > 128) { - this.$message.error('妯″潡鍚嶉暱搴﹁秴杩�128锛�'); + this.$message.error('妯″潡鍚嶉暱搴︿笉鑳借秴杩�128锛�'); return } if (this.form.remark && this.form.remark.length > 255) { - this.$message.error('鎻忚堪闀垮害瓒呰繃255锛�'); + this.$message.error('鎻忚堪闀垮害涓嶈兘瓒呰繃255锛�'); return } if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) { - this.$message.error('.NET鏍囪瘑闀垮害涓嶈兘255锛�'); + this.$message.error('.NET鏍囪瘑闀垮害涓嶈兘瓒呰繃255锛�'); return } if (this.form.pathC && this.form.pathC.length > 255) { - this.$message.error('C/S鏍囪瘑闀垮害涓嶈兘255锛�'); + this.$message.error('C/S鏍囪瘑闀垮害涓嶈兘瓒呰繃255锛�'); return } if (this.form.resourceMobile && this.form.resourceMobile.length > 255) { - this.$message.error('Mobile鏍囪瘑闀垮害涓嶈兘255锛�'); + this.$message.error('Mobile鏍囪瘑闀垮害涓嶈兘瓒呰繃255锛�'); return } this.form.parentId = this.form.id; @@ -299,14 +353,15 @@ if (res.data.code === 200) { this.$message.success(res.data.msg); this.addStatus = false; - this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� + // this.resetFormValue(); + this.form.childType = null; + this.handleRefreshTree('add') } }) }, // 淇敼鎸夐挳 editClickHandler() { - console.log(this.form); this.editStatus = true; this.addStatus = false; }, @@ -315,6 +370,10 @@ editSaveClickHandler() { if (!this.form.name) { this.$message.error('妯″潡鍚嶄笉鑳戒负绌�'); + return + } + if (!this.form.alias) { + this.$message.error('鑿滃崟鏍囪瘑涓嶈兘涓虹┖'); return } if (this.form.name.length > 128) { @@ -342,7 +401,9 @@ if (res.data.code === 200) { this.$message.success(res.data.msg); this.editStatus = false; - this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� + // this.resetFormValue(); + this.form.childType = null; + this.handleRefreshTree('edit') } }) }, @@ -355,13 +416,11 @@ type: 'warning' }).then(() => { delModule(this.form).then(res => { - console.log(res); if (res.data.code === 200) { this.$message.success(res.data.msg); - this.resetFormValue(); + this.handleRefreshTree('del') this.addStatus = false; this.editStatus = false; - this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� } }) }).catch(() => { @@ -377,8 +436,6 @@ exportFunctionSql({isFunction: true}).then(res => { func.downloadFileByBlobHandler(res); this.$message.success('瀵煎嚭鎴愬姛'); - }).catch(err => { - this.$message.error(err); }); }, @@ -390,12 +447,14 @@ // 澧炲姞鎿嶄綔绫诲瀷 addMethodsClickHandler() { this.methodsLoading = true; - getSysModelTreeMenuByPID({parentId: 'sysOptionNode'}).then(res => { - if (res.data.code === 200) { + getSysModelTreeMenuByPID({parentId: 'operateNode'}).then(res => { + if (res.data.code === 200 && res.data.data.length > 0) { this.methodsVisble = true; - const data = res.data.data[0].children; + const data = res.data.data; this.methodsData = data; this.methodsLoading = false; + } else { + this.$message.error('鏈壘鍒板彲澧炲姞鐨勬搷浣滅被鍨�'); } }) }, @@ -413,13 +472,11 @@ } }) addOperationType(list).then(res => { - console.log(res) if (res.data.code === 200) { this.methodsVisble = false; this.$message.success(res.data.msg); - this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� - this.resetFormValue(); this.form.childType = null; + this.handleRefreshTree('add') } }) }, @@ -434,10 +491,75 @@ this.lastIndex = newIndex; }, () => { - this.methodsList = []; + this.methodsList = [row]; } ); }, + + // 淇敼鍒悕 + updataAliasClickHandler() { + const params = { + id: this.form.id, + isValid: this.form.isValid, + source:this.form.source, + alias: this.form.alias + } + updateAlias(params).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.msg); + this.handleRefreshTree('edit') + } + }) + }, + + // 鍒犻櫎妯″潡涓嬪叧鑱旂殑鎿嶄綔绫诲瀷 + deleteOperationClickHandler() { + const params = { + funcId: this.form.funcId, + operId: this.form.operId + } + delFuncOperation(params).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.msg); + this.handleRefreshTree('del'); + } + }) + }, + + // 瀵煎嚭 + exportClickHandler() { + this.createdLoading = true; + exportModule().then(res => { + func.downloadFileByBlobHandler(res); + this.createdLoading = false + this.$message.success('瀵煎嚭鎴愬姛'); + }) + }, + + // 瀵煎叆 + upLoadClickHandler() { + this.$refs.upload.visible = true; + }, + + handleRefreshTree(type) { + //type:add\edit\del + if (type == "del") { + this.$refs.tree.remove(this.currentClickNode); + this.currentClickNode = null; + this.form = {}; + } else { + if (this.currentClickNode) { + let node = this.currentClickNode.parent; + node.loaded = false; + node.expand(); + this.$nextTick(()=>{ + this.$refs.tree.setCurrentKey(this.currentClickNode.data.id); + }); + } else { + this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� + } + } + } } } </script> @@ -451,6 +573,7 @@ .btnBox { display: flex; - justify-content: center; + justify-content: left; + margin-bottom: 15px; } </style> -- Gitblit v1.9.3