From aa6ff1fab7bbfaaaa771c87eda6f716b300f4dc5 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期五, 23 八月 2024 18:00:00 +0800 Subject: [PATCH] 管理功能模块 && 业务功能模块 --- Source/plt-web/plt-web-ui/src/api/systemModel/mangeModel/api.js | 58 ++ Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue | 0 /dev/null | 13 Source/plt-web/plt-web-ui/src/views/systemModel/systemMonitor/index.vue | 0 Source/plt-web/plt-web-ui/src/views/systemModel/businessModel/index.vue | 456 ++++++++++++++++++++++ Source/plt-web/plt-web-ui/src/views/systemModel/operateType/index.vue | 189 +++++++++ Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue | 456 ++++++++++++++++++++++ 7 files changed, 1,159 insertions(+), 13 deletions(-) diff --git a/Bin/jre-linux/lib/security/trusted.libraries b/Bin/jre-linux/lib/security/trusted.libraries deleted file mode 100644 index e69de29..0000000 --- a/Bin/jre-linux/lib/security/trusted.libraries +++ /dev/null diff --git a/Source/plt-web/plt-web-ui/src/api/systemModel/mangeModel/api.js b/Source/plt-web/plt-web-ui/src/api/systemModel/mangeModel/api.js new file mode 100644 index 0000000..ec4b2c1 --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/api/systemModel/mangeModel/api.js @@ -0,0 +1,58 @@ +import request from '@/router/axios'; + +// 鍒楄〃鏌ヨ +export function getSysModelTreeMenuByPID(params) { + return request({ + url: "/api/hmSysModConfigController/getSysModelTreeMenuByPID", + method: "get", + params + }); +} + +// 鏂板 +export function addModel(params) { + return request({ + url: "/api/hmSysModConfigController/addModel", + method: "post", + data:params + }); +} + +// 淇敼 +export function updateModel(params) { + return request({ + url: "/api/hmSysModConfigController/updateModel", + method: "put", + data:params + }); +} + +// 鍒犻櫎 +export function delModule(params) { + return request({ + url: "/api/hmSysModConfigController/delModule", + method: "delete", + data:params + }); +} + +// 瀵煎嚭sql +export function exportFunctionSql (params) { + return request({ + url: '/api/hmSysModConfigController/exportFunctionSql', + method: 'get', + headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}, + responseType: 'blob', + params + }) +} + +// 澧炲姞鎿嶄綔绫诲瀷 +export function addOperationType(data) { + return request({ + url: "/api/hmSysModConfigController/addOperationType", + method: "post", + data + }); +} + diff --git a/Source/plt-web/plt-web-ui/src/views/systemModel/businessModel/index.vue b/Source/plt-web/plt-web-ui/src/views/systemModel/businessModel/index.vue new file mode 100644 index 0000000..548091c --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/views/systemModel/businessModel/index.vue @@ -0,0 +1,456 @@ +<template> + <el-container> + <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"> + <span slot-scope="{ node, data }" class="el-tree-node__label"> + <span style="font-size: 15px"> + <i class="el-icon-s-promotion"></i> + {{ (node || {}).label }} + </span> + </span> + </avue-tree> + </div> + </basic-container> + </el-aside> + + <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 + 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" + @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">鍒犻櫎 + </el-button> + <el-button :disabled="mangeShowBtn ? true : childTypeBtn" icon="el-icon-circle-plus-outline" plain + 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" + type="danger" + @click="addClickHandler">鍒犻櫎闈炵郴缁熸ā鍧� + </el-button> + <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small" + type="danger" + @click="addClickHandler">鍒犻櫎涓氬姟妯″潡 + </el-button> + <el-button :disabled="!mangeShowBtn" icon="el-icon-upload2" plain size="small" type="primary" + @click="upLoadClickHandler">瀵煎叆 + </el-button> + <el-button :disabled="!mangeShowBtn" 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="sqlClickExportClick">瀵煎嚭sql + </el-button> + </div> + <div v-if="form.childType === 0" class="btnBox"> + <el-button icon="el-icon-edit" plain size="small" type="primary">淇敼鍒悕 + </el-button> + <el-button icon="el-icon-close" plain size="small" type="danger">鍒犻櫎 + </el-button> + </div> + </basic-container> + </el-main> + <el-dialog + v-dialogDrag + :visible.sync="methodsVisble" + append-to-body="true" + class="avue-dialog" + title="鎿嶄綔鍒嗙被" + width="60%" + > + <avue-crud + ref="methodsCrud" + :data="methodsData" + :option="methodsOption" + :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> + </span> + </el-dialog> + </el-container> +</template> + +<script> +//绠$悊鍔熻兘妯″潡 +import { + getSysModelTreeMenuByPID, + addModel, + updateModel, + delModule, + exportFunctionSql, + addOperationType +} from "@/api/systemModel/mangeModel/api" +import func from "@/util/func"; +import basicOption from "@/util/basic-option"; + +export default { + name: "index", + data() { + return { + lastIndex: null, + methodsList: [], + methodsData: [], + methodsOption: { + ...basicOption, + addBtn: false, + menu: false, + height: 500, + column: [ + { + label: '鎿嶄綔鍒嗙被', + prop: 'name', + sortable: true, + } + ] + }, + methodsLoading: false, + methodsVisble: false, + defalutName: ['name', 'alias', 'pathC', 'path', 'resourceDotNet', 'resourceMobile', 'sort', 'source', 'remark', 'code'], + refresh: Math.random(), + addStatus: false, + editStatus: false, + nodeRow: {}, + form: {}, + treeData: [], + treeOption: { + height: 'auto', + menu: false, + addBtn: false, + defaultExpandAll: false, + props: { + label: 'name', + value: 'id', + children: 'children', + }, + lazy: true, + treeLoad: (node, resolve) => { + const params = { + parentId: node.level === 0 ? "modelManagmentNode" : 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 + } + })) + }) + } + }, + } + }, + created() { + }, + computed: { + /** + * childType + * 涓�-1 鍏ㄩ儴鎸夐挳灞曠ず 绂佺敤淇敼 鍒犻櫎 澧炲姞鎿嶄綔绫诲瀷 + * 涓嶄负-1 闅愯棌 鍒犻櫎闈炵郴缁熸ā鍧� 鍒犻櫎涓氬姟妯″潡 + * 涓�1鏃� 绂佺敤鎿嶄綔绫诲瀷銆佸鍏ャ�佸鍑� + * 涓�2鏃� 绂佺敤澧炲姞 瀵煎叆 瀵煎嚭 + * mangeShowBtn 涓� true 璇存槑鏄《灞傝妭鐐� 鍏ㄩ儴鎸夐挳灞曠ず 绂佺敤淇敼 鍒犻櫎 澧炲姞鎿嶄綔绫诲瀷 + * @returns {Number} + */ + mangeShowBtn() { + return this.form.childType === -1; + }, + childTypeBtn() { + return this.form.childType === 1; + } + }, + methods: { + // 鏍戣鐐瑰嚮 + nodeClick(row) { + console.log(row.childType); + this.form = {...row}; + this.nodeRow = {...row}; + this.addStatus = false; + this.editStatus = false; + }, + + // 鏂板鎸夐挳 + addClickHandler() { + this.resetFormValue(); + this.addStatus = true; + this.editStatus = false; + }, + + // 娓呯┖琛ㄥ崟缁戝畾鍊� + resetFormValue() { + this.defalutName.forEach(key => { + this.form[key] = null; + }) + this.form.isValid = false; + }, + + // 鏂板淇濆瓨鎸夐挳 + addSaveClickHandler() { + if (!this.form.name) { + this.$message.error('妯″潡鍚嶄笉鑳戒负绌�'); + return + } + if (this.form.name.length > 128) { + this.$message.error('妯″潡鍚嶉暱搴﹁秴杩�128锛�'); + return + } + if (this.form.remark && this.form.remark.length > 255) { + this.$message.error('鎻忚堪闀垮害瓒呰繃255锛�'); + return + } + if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) { + this.$message.error('.NET鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + if (this.form.pathC && this.form.pathC.length > 255) { + this.$message.error('C/S鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + if (this.form.resourceMobile && this.form.resourceMobile.length > 255) { + this.$message.error('Mobile鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + this.form.parentId = this.form.id; + addModel(this.form).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.msg); + this.addStatus = false; + this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� + } + }) + }, + + // 淇敼鎸夐挳 + editClickHandler() { + console.log(this.form); + this.editStatus = true; + this.addStatus = false; + }, + + // 淇敼淇濆瓨 + editSaveClickHandler() { + if (!this.form.name) { + this.$message.error('妯″潡鍚嶄笉鑳戒负绌�'); + return + } + if (this.form.name.length > 128) { + this.$message.error('妯″潡鍚嶉暱搴﹁秴杩�128锛�'); + return + } + if (this.form.remark && this.form.remark.length > 255) { + this.$message.error('鎻忚堪闀垮害瓒呰繃255锛�'); + return + } + if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) { + this.$message.error('.NET鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + if (this.form.pathC && this.form.pathC.length > 255) { + this.$message.error('C/S鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + if (this.form.resourceMobile && this.form.resourceMobile.length > 255) { + this.$message.error('Mobile鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + + updateModel(this.form).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.msg); + this.editStatus = false; + this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� + } + }) + }, + + // 鍒犻櫎鎸夐挳 + delClickHandler() { + this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + 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.addStatus = false; + this.editStatus = false; + this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + + // 瀵煎嚭sql + sqlClickExportClick() { + exportFunctionSql({isFunction: true}).then(res => { + func.downloadFileByBlobHandler(res); + this.$message.success('瀵煎嚭鎴愬姛'); + }).catch(err => { + this.$message.error(err); + }); + }, + + // 鎿嶄綔鍒嗙被澶氶�� + selectMethodsChange(list) { + this.methodsList = list; + }, + + // 澧炲姞鎿嶄綔绫诲瀷 + addMethodsClickHandler() { + this.methodsLoading = true; + getSysModelTreeMenuByPID({parentId: 'sysOptionNode'}).then(res => { + if (res.data.code === 200) { + this.methodsVisble = true; + const data = res.data.data[0].children; + this.methodsData = data; + this.methodsLoading = false; + } + }) + }, + + // 澧炲姞鎿嶄綔绫诲瀷淇濆瓨 + methodsSaveClickHandler() { + let list = this.methodsList.map(item => { + return { + funcId: this.nodeRow.id, + operId: item.id, + operName: item.name, + operIndentify: item.code, + operAlias: item.alias, + operDesc: item.remark + } + }) + 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; + } + }) + }, + + // 鐐瑰嚮琛� + rowMethodsClickHandler(row) { + func.rowClickHandler( + row, + this.$refs.methodsCrud, + this.lastIndex, + (newIndex) => { + this.lastIndex = newIndex; + }, + () => { + this.methodsList = []; + } + ); + }, + } +} +</script> + +<style lang="scss" scoped> +::v-deep { + .el-form-item .el-select { + width: 100%; + } +} + +.btnBox { + display: flex; + justify-content: center; +} +</style> 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 new file mode 100644 index 0000000..8709445 --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue @@ -0,0 +1,456 @@ +<template> + <el-container> + <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"> + <span slot-scope="{ node, data }" class="el-tree-node__label"> + <span style="font-size: 15px"> + <i class="el-icon-s-promotion"></i> + {{ (node || {}).label }} + </span> + </span> + </avue-tree> + </div> + </basic-container> + </el-aside> + + <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 + 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" + @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">鍒犻櫎 + </el-button> + <el-button :disabled="mangeShowBtn ? true : childTypeBtn" icon="el-icon-circle-plus-outline" plain + 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" + type="danger" + @click="addClickHandler">鍒犻櫎闈炵郴缁熸ā鍧� + </el-button> + <el-button v-if="this.form.childType ? mangeShowBtn :true" icon="el-icon-circle-close" plain size="small" + type="danger" + @click="addClickHandler">鍒犻櫎涓氬姟妯″潡 + </el-button> + <el-button :disabled="!mangeShowBtn" icon="el-icon-upload2" plain size="small" type="primary" + @click="upLoadClickHandler">瀵煎叆 + </el-button> + <el-button :disabled="!mangeShowBtn" 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="sqlClickExportClick">瀵煎嚭sql + </el-button> + </div> + <div v-if="form.childType === 0" class="btnBox"> + <el-button icon="el-icon-edit" plain size="small" type="primary">淇敼鍒悕 + </el-button> + <el-button icon="el-icon-close" plain size="small" type="danger">鍒犻櫎 + </el-button> + </div> + </basic-container> + </el-main> + <el-dialog + v-dialogDrag + :visible.sync="methodsVisble" + append-to-body="true" + class="avue-dialog" + title="鎿嶄綔鍒嗙被" + width="60%" + > + <avue-crud + ref="methodsCrud" + :data="methodsData" + :option="methodsOption" + :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> + </span> + </el-dialog> + </el-container> +</template> + +<script> +//绠$悊鍔熻兘妯″潡 +import { + getSysModelTreeMenuByPID, + addModel, + updateModel, + delModule, + exportFunctionSql, + addOperationType +} from "@/api/systemModel/mangeModel/api" +import func from "@/util/func"; +import basicOption from "@/util/basic-option"; + +export default { + name: "index", + data() { + return { + lastIndex: null, + methodsList: [], + methodsData: [], + methodsOption: { + ...basicOption, + addBtn: false, + menu: false, + height: 500, + column: [ + { + label: '鎿嶄綔鍒嗙被', + prop: 'name', + sortable: true, + } + ] + }, + methodsLoading: false, + methodsVisble: false, + defalutName: ['name', 'alias', 'pathC', 'path', 'resourceDotNet', 'resourceMobile', 'sort', 'source', 'remark', 'code'], + refresh: Math.random(), + addStatus: false, + editStatus: false, + nodeRow: {}, + form: {}, + treeData: [], + treeOption: { + height: 'auto', + menu: false, + addBtn: false, + defaultExpandAll: false, + props: { + label: 'name', + value: 'id', + children: 'children', + }, + lazy: true, + treeLoad: (node, resolve) => { + const params = { + parentId: node.level === 0 ? "systemManagmentNode" : 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 + } + })) + }) + } + }, + } + }, + created() { + }, + computed: { + /** + * childType + * 涓�-1 鍏ㄩ儴鎸夐挳灞曠ず 绂佺敤淇敼 鍒犻櫎 澧炲姞鎿嶄綔绫诲瀷 + * 涓嶄负-1 闅愯棌 鍒犻櫎闈炵郴缁熸ā鍧� 鍒犻櫎涓氬姟妯″潡 + * 涓�1鏃� 绂佺敤鎿嶄綔绫诲瀷銆佸鍏ャ�佸鍑� + * 涓�2鏃� 绂佺敤澧炲姞 瀵煎叆 瀵煎嚭 + * mangeShowBtn 涓� true 璇存槑鏄《灞傝妭鐐� 鍏ㄩ儴鎸夐挳灞曠ず 绂佺敤淇敼 鍒犻櫎 澧炲姞鎿嶄綔绫诲瀷 + * @returns {Number} + */ + mangeShowBtn() { + return this.form.childType === -1; + }, + childTypeBtn() { + return this.form.childType === 1; + } + }, + methods: { + // 鏍戣鐐瑰嚮 + nodeClick(row) { + console.log(row.childType); + this.form = {...row}; + this.nodeRow = {...row}; + this.addStatus = false; + this.editStatus = false; + }, + + // 鏂板鎸夐挳 + addClickHandler() { + this.resetFormValue(); + this.addStatus = true; + this.editStatus = false; + }, + + // 娓呯┖琛ㄥ崟缁戝畾鍊� + resetFormValue() { + this.defalutName.forEach(key => { + this.form[key] = null; + }) + this.form.isValid = false; + }, + + // 鏂板淇濆瓨鎸夐挳 + addSaveClickHandler() { + if (!this.form.name) { + this.$message.error('妯″潡鍚嶄笉鑳戒负绌�'); + return + } + if (this.form.name.length > 128) { + this.$message.error('妯″潡鍚嶉暱搴﹁秴杩�128锛�'); + return + } + if (this.form.remark && this.form.remark.length > 255) { + this.$message.error('鎻忚堪闀垮害瓒呰繃255锛�'); + return + } + if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) { + this.$message.error('.NET鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + if (this.form.pathC && this.form.pathC.length > 255) { + this.$message.error('C/S鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + if (this.form.resourceMobile && this.form.resourceMobile.length > 255) { + this.$message.error('Mobile鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + this.form.parentId = this.form.id; + addModel(this.form).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.msg); + this.addStatus = false; + this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� + } + }) + }, + + // 淇敼鎸夐挳 + editClickHandler() { + console.log(this.form); + this.editStatus = true; + this.addStatus = false; + }, + + // 淇敼淇濆瓨 + editSaveClickHandler() { + if (!this.form.name) { + this.$message.error('妯″潡鍚嶄笉鑳戒负绌�'); + return + } + if (this.form.name.length > 128) { + this.$message.error('妯″潡鍚嶉暱搴﹁秴杩�128锛�'); + return + } + if (this.form.remark && this.form.remark.length > 255) { + this.$message.error('鎻忚堪闀垮害瓒呰繃255锛�'); + return + } + if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) { + this.$message.error('.NET鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + if (this.form.pathC && this.form.pathC.length > 255) { + this.$message.error('C/S鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + if (this.form.resourceMobile && this.form.resourceMobile.length > 255) { + this.$message.error('Mobile鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + + updateModel(this.form).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.msg); + this.editStatus = false; + this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� + } + }) + }, + + // 鍒犻櫎鎸夐挳 + delClickHandler() { + this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + 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.addStatus = false; + this.editStatus = false; + this.refresh = Math.random(); // 鍒锋柊宸︿晶鏍� + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + + // 瀵煎嚭sql + sqlClickExportClick() { + exportFunctionSql({isFunction: true}).then(res => { + func.downloadFileByBlobHandler(res); + this.$message.success('瀵煎嚭鎴愬姛'); + }).catch(err => { + this.$message.error(err); + }); + }, + + // 鎿嶄綔鍒嗙被澶氶�� + selectMethodsChange(list) { + this.methodsList = list; + }, + + // 澧炲姞鎿嶄綔绫诲瀷 + addMethodsClickHandler() { + this.methodsLoading = true; + getSysModelTreeMenuByPID({parentId: 'sysOptionNode'}).then(res => { + if (res.data.code === 200) { + this.methodsVisble = true; + const data = res.data.data[0].children; + this.methodsData = data; + this.methodsLoading = false; + } + }) + }, + + // 澧炲姞鎿嶄綔绫诲瀷淇濆瓨 + methodsSaveClickHandler() { + let list = this.methodsList.map(item => { + return { + funcId: this.nodeRow.id, + operId: item.id, + operName: item.name, + operIndentify: item.code, + operAlias: item.alias, + operDesc: item.remark + } + }) + 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; + } + }) + }, + + // 鐐瑰嚮琛� + rowMethodsClickHandler(row) { + func.rowClickHandler( + row, + this.$refs.methodsCrud, + this.lastIndex, + (newIndex) => { + this.lastIndex = newIndex; + }, + () => { + this.methodsList = []; + } + ); + }, + } +} +</script> + +<style lang="scss" scoped> +::v-deep { + .el-form-item .el-select { + width: 100%; + } +} + +.btnBox { + display: flex; + justify-content: center; +} +</style> diff --git a/Source/plt-web/plt-web-ui/src/views/systemModel/operateType/index.vue b/Source/plt-web/plt-web-ui/src/views/systemModel/operateType/index.vue new file mode 100644 index 0000000..281ec3b --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/views/systemModel/operateType/index.vue @@ -0,0 +1,189 @@ +<template> + <el-container> + <el-aside> + <basic-container> + <div style="max-height: calc(100vh - 170px);overflow: auto"> + <avue-tree ref="tree" :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> + {{ (node || {}).label }} + </span> + </span> + </avue-tree> + </div> + </basic-container> + </el-aside> + + <el-main> + <basic-container> + <el-form ref="form" :model="form" label-width="85px" style="height: 79vh"> + <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.code" 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" placeholder="璇疯緭鍏ョ紪鍙�"></el-input> + </el-form-item> + <el-form-item label="鎻忚堪锛�"> + <el-input v-model="form.remark" placeholder="璇疯緭鍏ユ弿杩�"></el-input> + </el-form-item> + </el-form> + <div class="btnBox"> + <el-button v-if="!addStatus" :disabled="mangeShowBtn ? 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 :disabled="mangeShowBtn" icon="el-icon-edit" plain size="small" type="primary" + @click="addClickHandler">淇敼 + </el-button> + <el-button :disabled="mangeShowBtn" icon="el-icon-close" plain size="small" type="danger" + @click="addClickHandler">鍒犻櫎 + </el-button> + <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆sql + </el-button> + </div> + </basic-container> + </el-main> + </el-container> +</template> + +<script> +//绠$悊鍔熻兘妯″潡 +import {getSysModelTreeMenuByPID, addModel} from "@/api/systemModel/mangeModel/api" + +export default { + name: "index", + data() { + return { + addStatus: false, + nodeRow: {}, + form: {}, + treeData: [], + treeOption: { + height: 'auto', + menu: false, + addBtn: false, + defaultExpandAll: false, + props: { + label: 'name', + value: 'id', + children: 'children', + }, + lazy: true, + treeLoad: (node, resolve) => { + const params = { + parentId: node.level === 0 ? "operateNode" : 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 + } + })) + }) + } + }, + } + }, + created() { + }, + computed: { + /** + * childType + * 涓�-1 鍏ㄩ儴鎸夐挳灞曠ず 绂佺敤淇敼 鍒犻櫎 澧炲姞鎿嶄綔绫诲瀷 + * 涓嶄负-1 闅愯棌 鍒犻櫎闈炵郴缁熸ā鍧� 鍒犻櫎涓氬姟妯″潡 + * 涓�1鏃� 绂佺敤鎿嶄綔绫诲瀷銆佸鍏ャ�佸鍑� + * 涓�2鏃� 绂佺敤澧炲姞 瀵煎叆 瀵煎嚭 + * mangeShowBtn 涓� true 璇存槑鏄《灞傝妭鐐� 鍏ㄩ儴鎸夐挳灞曠ず 绂佺敤淇敼 鍒犻櫎 澧炲姞鎿嶄綔绫诲瀷 + * @returns {Number} + */ + mangeShowBtn() { + return this.form.childType === -1; + }, + childTypeBtn() { + return this.form.childType === 1; + } + }, + methods: { + // 鏍戣鐐瑰嚮 + nodeClick(row) { + console.log(row); + this.form = {...row}; + this.nodeRow = {...row}; + this.addStatus = false; + }, + + // 鏂板鎸夐挳 + addClickHandler() { + for (const key in this.form) { + if (this.form.hasOwnProperty(key)) { + this.form[key] = null; + } + } + this.addStatus = true; + }, + + // 淇濆瓨鎸夐挳 + addSaveClickHandler() { + console.log(this.form) + if (!this.form.name) { + this.$message.error('妯″潡鍚嶄笉鑳戒负绌�'); + return + } + if (this.form.name.length > 128) { + this.$message.error('妯″潡鍚嶉暱搴﹁秴杩�128锛�'); + return + } + if (this.form.remark && this.form.remark.length > 255) { + this.$message.error('鎻忚堪闀垮害瓒呰繃255锛�'); + return + } + if (this.form.resourceDotNet && this.form.resourceDotNet.length > 255) { + this.$message.error('.NET鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + if (this.form.pathc && this.form.pathc.length > 255) { + this.$message.error('C/S鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + if (this.form.resourceMobile && this.form.resourceMobile.length > 255) { + this.$message.error('Mobile鏍囪瘑闀垮害涓嶈兘255锛�'); + return + } + console.log(this.nodeRow); + this.form.parentId = this.nodeRow.id; + this.form.modeType = this.nodeRow.modeType; + addModel(this.form).then(res => { + console.log(res) + this.addStatus = false; + }) + } + } +} +</script> + +<style lang="scss" scoped> +::v-deep { + .el-form-item .el-select { + width: 100%; + } +} + +.btnBox { + display: flex; + justify-content: center; +} +</style> diff --git a/Source/plt-web/plt-web-ui/src/views/systemModule/systemConfig/index.vue b/Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue similarity index 100% rename from Source/plt-web/plt-web-ui/src/views/systemModule/systemConfig/index.vue rename to Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue diff --git a/Source/plt-web/plt-web-ui/src/views/systemModule/systemMonitor/index.vue b/Source/plt-web/plt-web-ui/src/views/systemModel/systemMonitor/index.vue similarity index 100% rename from Source/plt-web/plt-web-ui/src/views/systemModule/systemMonitor/index.vue rename to Source/plt-web/plt-web-ui/src/views/systemModel/systemMonitor/index.vue diff --git a/Source/plt-web/plt-web-ui/src/views/systemModule/businessModel/index.vue b/Source/plt-web/plt-web-ui/src/views/systemModule/businessModel/index.vue deleted file mode 100644 index 54b19c1..0000000 --- a/Source/plt-web/plt-web-ui/src/views/systemModule/businessModel/index.vue +++ /dev/null @@ -1,13 +0,0 @@ -<template> - -</template> - -<script> -export default { - name: "index" -} -</script> - -<style scoped> - -</style> diff --git a/Source/plt-web/plt-web-ui/src/views/systemModule/mangeModel/index.vue b/Source/plt-web/plt-web-ui/src/views/systemModule/mangeModel/index.vue deleted file mode 100644 index 82a0b37..0000000 --- a/Source/plt-web/plt-web-ui/src/views/systemModule/mangeModel/index.vue +++ /dev/null @@ -1,13 +0,0 @@ -<template> - -</template> - -<script> -export default { -name: "index" -} -</script> - -<style scoped> - -</style> diff --git a/Source/plt-web/plt-web-ui/src/views/systemModule/operateType/index.vue b/Source/plt-web/plt-web-ui/src/views/systemModule/operateType/index.vue deleted file mode 100644 index 54b19c1..0000000 --- a/Source/plt-web/plt-web-ui/src/views/systemModule/operateType/index.vue +++ /dev/null @@ -1,13 +0,0 @@ -<template> - -</template> - -<script> -export default { - name: "index" -} -</script> - -<style scoped> - -</style> -- Gitblit v1.9.3