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