From 9981d4d90db5a6ee6b138eeea400502636f7f098 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 27 八月 2024 17:57:04 +0800
Subject: [PATCH] 完善业务类型创建索引&&完善系统配置模块(管理功能模块、业务功能模块、操作类型管理、系统配置、系统运行监控)

---
 Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue |  433 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 432 insertions(+), 1 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue b/Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue
index 54b19c1..5a5c1e1 100644
--- a/Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue
@@ -1,10 +1,441 @@
 <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>
 
+        <avue-crud
+          ref="crud"
+          :data="configData"
+          :option="nodeRow.id === 'firstNode'? firstOption : configOption"
+          :table-loading="configLoading"
+          @selection-change="selectChange"
+          @row-click="rowClickHandler">
+          <template slot="menuLeft">
+            <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">澧炲姞
+            </el-button>
+            <el-button icon="el-icon-close" plain size="small" type="danger" @click="delClickHandler">鍒犻櫎
+            </el-button>
+            <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭
+            </el-button>
+          </template>
+
+          <template #menu="{row,index,size}">
+            <el-button icon="el-icon-edit" size="small" type="text" @click.stop="rowEditHandler(row,index)">缂栬緫
+            </el-button>
+            <el-button icon="el-icon-delete" size="small" type="text" @click.stop="rowDeleteHandler(row)">鍒犻櫎</el-button>
+          </template>
+        </avue-crud>
+      </basic-container>
+    </el-main>
+    <el-dialog
+      v-dialogDrag
+      :title="nodeRow.id === 'firstNode' ? '閰嶇疆椤瑰垎绫�' : '閰嶇疆椤�'"
+      :visible.sync="addVisible"
+      append-to-body="true"
+      class="avue-dialog"
+      width="50%"
+      @close="addVisibleClose">
+      <el-form ref="form" :model="form" label-width="80px">
+        <el-form-item label="鍚嶇О锛�">
+          <el-input v-model="form.name"></el-input>
+        </el-form-item>
+        <el-form-item v-if="nodeRow.id !== 'firstNode'" label="key锛�">
+          <el-input v-model="form.key"></el-input>
+        </el-form-item>
+        <el-form-item v-if="nodeRow.id !== 'firstNode'" label="value锛�">
+          <el-input v-model="form.value"></el-input>
+        </el-form-item>
+        <el-form-item label="鎻忚堪锛�">
+          <el-input v-model="form.desc" type="textarea"></el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="addVisibleClose">鍙� 娑�</el-button>
+        <el-button size="small" type="primary" @click="addSaveClickHandler">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+
+    <!-- 瀵煎嚭绌挎妗� -->
+    <transfer ref="transfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData"
+              :select-list="selectList" :top-methods-obj="topMethodsObj" :transferTitle="transferTitle" title="瀵煎嚭"
+              @transferSend="exportSendHandler">
+    </transfer>
+  </el-container>
 </template>
 
 <script>
+import {
+  getAppConfigCategoryInfo,
+  getAppConfigDetailsByID,
+  addAppConf,
+  updateAppConf,
+  exportSysConf
+} from "@/api/systemModel/systemConfig/api"
+import basicOption from "@/util/basic-option";
+import func from "@/util/func";
+
 export default {
-  name: "index"
+  name: "index",
+  data() {
+    return {
+      topMethodsObj: {
+        select: true,
+        all: true,
+        page: false
+      },
+      transferTitle: ['鏈�夋嫨', '宸查�夋嫨'],
+      leftRoleData: [],
+      rightRoleData: [],
+      editStatus: false,
+      form: {
+        name: "",
+        desc: ""
+      },
+      addVisible: false,
+      nodeRow: {},
+      configLoading: false,
+      configData: [],
+      configOption: {
+        ...basicOption,
+        addBtn: false,
+        editBtn: false,
+        delBtn: false,
+        column: [
+          {
+            label: '鍚嶇О',
+            prop: 'name',
+            sortable: true
+          },
+          {
+            label: 'key',
+            prop: 'key',
+            sortable: true
+          },
+          {
+            label: 'value',
+            prop: 'value',
+            overHidden: true,
+            sortable: true
+          },
+          {
+            label: '鎻忚堪',
+            overHidden: true,
+            prop: 'desc',
+          }
+        ]
+      },
+      defaultData: [], // 椤跺眰鑺傜偣鏂板鍚庤祴鍊兼暟缁�
+      firstOption: {
+        ...basicOption,
+        addBtn: false,
+        editBtn: false,
+        delBtn: false,
+        column: [
+          {
+            label: '鍚嶇О',
+            prop: 'name',
+            sortable: true
+          },
+          {
+            label: '鎻忚堪',
+            prop: 'desc',
+          }
+        ]
+      },
+      refresh: Math.random(),
+      treeOption: {
+        height: 'auto',
+        menu: false,
+        addBtn: false,
+        defaultExpandAll: true,
+        props: {
+          label: 'name',
+          value: 'id',
+          children: 'children',
+        },
+      },
+      treeData: [
+        {
+          name: '绯荤粺閰嶇疆鍒嗙被',
+          id: 'firstNode',
+          children: []
+        }
+      ],
+      selectList: [],
+      lastIndex: null
+    }
+  },
+  created() {
+    this.getTreeList();
+  },
+  methods: {
+    // 宸︿晶鏍戞煡璇�
+    getTreeList(val) {
+      getAppConfigCategoryInfo().then(res => {
+        if (res.data.code === 200) {
+          const data = res.data.data;
+          this.treeData[0].children = data;
+          if (val === 'save') {
+            this.configData = data;
+          }
+        }
+      })
+    },
+
+    // 鏍戣妭鐐圭偣鍑�
+    nodeClick(row) {
+      console.log(row);
+      this.nodeRow = row;
+      if (row.id === 'firstNode') {
+        this.configData = row.children;
+      } else {
+        this.configLoading = true;
+        getAppConfigDetailsByID({clsId: row.id}).then(res => {
+          if (res.data.code === 200) {
+            const data = res.data.data;
+            this.configData = data;
+            this.configLoading = false;
+          }
+        })
+      }
+    },
+
+    // 澧炲姞鎸夐挳
+    addClickHandler() {
+      if (func.isEmptyObject(this.nodeRow)) {
+        this.$message.error('璇烽�夋嫨涓�鏉¤妭鐐硅繘琛屾坊鍔狅紒')
+        return;
+      }
+      this.addVisible = true;
+      this.editStatus = false;
+    },
+
+    // 鏂板瀵硅瘽妗嗗叧闂�
+    addVisibleClose() {
+      Object.keys(this.form).forEach(key => {
+        this.form[key] = "";
+      })
+      this.addVisible = false;
+    },
+
+    // 淇濆瓨
+    addSaveClickHandler() {
+      if (this.nodeRow.id === 'firstNode') {
+        if (!this.form.name) {
+          this.$message.error('鍚嶇О涓嶈兘涓虹┖锛�');
+          return;
+        }
+      } else {
+        if (!this.form.name) {
+          this.$message.error('鍚嶇О涓嶈兘涓虹┖锛�');
+          return;
+        }
+        if (!this.form.key) {
+          this.$message.error('key鍊间笉鑳戒负绌猴紒');
+          return;
+        }
+        if (!this.form.value) {
+          this.$message.error('value鍊间笉鑳戒负绌猴紒');
+          return;
+        }
+      }
+
+      const params = this.nodeRow.id === 'firstNode' ? {
+        appConfigDetailInfo: {
+          name: this.form.name,
+          desc: this.form.desc,
+          id: this.editStatus ? this.form.id : null
+        },
+        isConfCategorys: true //true琛ㄧず缁欓《灞傛坊鍔犻厤缃」鍒嗙被
+      } : {
+        appConfigDetailInfo: {
+          categoryId: this.nodeRow.id,
+          name: this.form.name,
+          desc: this.form.desc,
+          key: this.form.key,
+          value: this.form.value,
+          id: this.editStatus ? this.form.id : null
+        },
+        isConfCategorys: false //true琛ㄧず缁欓《灞傛坊鍔犻厤缃」鍒嗙被
+      }
+      const saveApi = this.editStatus ? updateAppConf : addAppConf;
+      saveApi(params).then(res => {
+        if (res.data.code === 200) {
+          this.$message.success(res.data.obj);
+          this.addVisibleClose();
+          if (this.nodeRow.id === 'firstNode') {
+            this.getTreeList('save');
+          } else {
+            this.configLoading = true;
+            getAppConfigDetailsByID({clsId: this.nodeRow.id}).then(res => {
+              if (res.data.code === 200) {
+                const data = res.data.data;
+                this.configData = data;
+                this.configLoading = false;
+              }
+            })
+          }
+        }
+      })
+    },
+
+    // 缂栬緫鎸夐挳
+    rowEditHandler(row) {
+      this.addVisible = true;
+      this.form = {...row};
+      this.editStatus = true;
+    },
+
+    // 琛屽垹闄�
+    rowDeleteHandler(row) {
+      const params = {
+        ids: row.id,
+        isConfCategorys: this.nodeRow.id === 'firstNode' ? true : false
+      }
+      getAppConfigCategoryInfo(params).then(res => {
+        console.log(res)
+        if (res.data.code === 200) {
+          this.$message.success('鍒犻櫎鎴愬姛');
+          if (this.nodeRow.id === 'firstNode') {
+            this.getTreeList('save');
+          } else {
+            this.configLoading = true;
+            getAppConfigDetailsByID({clsId: this.nodeRow.id}).then(res => {
+              if (res.data.code === 200) {
+                const data = res.data.data;
+                this.configData = data;
+                this.configLoading = false;
+              }
+            })
+          }
+        }
+      })
+    },
+
+    // 閫夋嫨妗�
+    selectChange(row) {
+      this.selectList = row;
+    },
+
+    // 鐐瑰嚮琛�
+    rowClickHandler(row) {
+      func.rowClickHandler(
+        row,
+        this.$refs.crud,
+        this.lastIndex,
+        (newIndex) => {
+          this.lastIndex = newIndex;
+        },
+        () => {
+          this.selectList = [];
+        }
+      );
+    },
+
+    // 澶氶�夊垹闄�
+    delClickHandler() {
+      if (this.selectList.length <= 0) {
+        this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
+        return;
+      }
+      const params = {
+        ids: this.selectList.map(item => {
+          return item.id
+        }).join(','),
+        isConfCategorys: this.nodeRow.id === 'firstNode' ? true : false
+      }
+      getAppConfigCategoryInfo(params).then(res => {
+        console.log(res)
+        if (res.data.code === 200) {
+          this.$message.success('鍒犻櫎鎴愬姛');
+          if (this.nodeRow.id === 'firstNode') {
+            this.getTreeList('save');
+          } else {
+            this.configLoading = true;
+            getAppConfigDetailsByID({clsId: this.nodeRow.id}).then(res => {
+              if (res.data.code === 200) {
+                const data = res.data.data;
+                this.configData = data;
+                this.configLoading = false;
+              }
+            })
+          }
+        }
+      })
+    },
+
+    // 瀵煎嚭鎸夐挳
+    exportClickHandler() {
+      if (func.isEmptyObject(this.nodeRow)) {
+        this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
+        return;
+      }
+      this.leftRoleData = this.nodeRow.id === 'firstNode' ? [
+        {
+          name: '鍚嶇О',
+          oid: 'name'
+        },
+        {
+          name: '鎻忚堪',
+          oid: 'desc'
+        }
+      ] : [
+        {
+          name: '鍚嶇О',
+          oid: 'name'
+        },
+        {
+          name: 'key',
+          oid: 'key'
+        },
+        {
+          name: 'value',
+          oid: 'value'
+        },
+        {
+          name: '鎻忚堪',
+          oid: 'desc'
+        }
+      ]
+      this.$refs.transfer.visible = true;
+    },
+
+    // 瀵煎嚭淇濆瓨
+    exportSendHandler(row, index) {
+      console.log(row, index);
+      const params = {
+        expType: index === 0 ? 'select' : index === 1 ? 'all' : '',
+        expAttrNames: row,
+        selectDataIdentify: index === 0 ? this.selectList.map(item => {
+          return item.id
+        }) : null,
+        conditionMap: {
+          "isExpAppConfDetail": this.nodeRow.id === 'firstNode' ? false : true,
+          "clsId": this.nodeRow.id !== 'firstNode' ? this.nodeRow.id : null
+        }
+      }
+      exportSysConf(params).then(res => {
+        func.downloadFileByBlobHandler(res);
+        this.$message.success('瀵煎嚭鎴愬姛');
+      }).catch(err => {
+        this.$message.error(err);
+      })
+    }
+  }
 }
 </script>
 

--
Gitblit v1.9.3