From f1d079f9c0b3d384090477ca54e0548373d62b57 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 16 Jan 2025 11:56:39 +0800
Subject: [PATCH] 配置修改

---
 web_src/src/components/dialog/chooseChannelForCatalog.vue |  316 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 316 insertions(+), 0 deletions(-)

diff --git a/web_src/src/components/dialog/chooseChannelForCatalog.vue b/web_src/src/components/dialog/chooseChannelForCatalog.vue
new file mode 100644
index 0000000..c634b77
--- /dev/null
+++ b/web_src/src/components/dialog/chooseChannelForCatalog.vue
@@ -0,0 +1,316 @@
+<template>
+<div id="chooseChannelForCatalog" >
+   <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;font-size: 14px;">
+     <el-tree class="el-scrollbar"
+       ref="tree"
+       id="catalogTree"
+       empty-text="未知节点"
+       node-key="id"
+       default-expand-all
+       :highlight-current="false"
+       :expand-on-click-node="false"
+       :props="props"
+       :load="loadNode"
+       @node-contextmenu="contextmenuEventHandler"
+       @node-click="nodeClickHandler"
+       lazy>
+       <span class="custom-tree-node" slot-scope="{ node, data }" style="width: 100%">
+         <el-radio v-if="node.data.type === 0 || node.data.type === -1" style="margin-right: 0" v-model="chooseId" :label="node.data.id">{{''}}</el-radio>
+         <span v-if="node.data.type === -1 && node.level === 1" style="font-size: 12px" class="iconfont icon-ziyuan"></span>
+         <span v-if="node.data.type === 0 && node.level === 1" class="el-icon-s-home"></span>
+         <span v-if="node.data.type === 0 && node.level > 1"  class="el-icon-folder-opened"></span>
+         <span v-if="node.data.type === 1" class="iconfont icon-shexiangtou"></span>
+         <span v-if="node.data.type === 2" class="iconfont icon-zhibo"></span>
+        <span style=" padding-left: 1px">{{ node.label }}</span>
+        <span>
+          <i style="margin-left: 5rem; color: #9d9d9d; padding-right: 20px" v-if="node.data.id === defaultCatalogIdSign">默认</i>
+        </span>
+      </span>
+     </el-tree>
+   </div>
+    <catalogEdit ref="catalogEdit" :platformId="platformId"></catalogEdit>
+</div>
+</template>
+
+
+<script>
+
+import catalogEdit from './catalogEdit.vue'
+export default {
+    name: 'chooseChannelForCatalog',
+    props: ['platformId', 'platformDeviceId', 'platformName', 'defaultCatalogId', 'catalogIdChange', 'treeType'],
+    created() {
+        this.chooseId = this.defaultCatalogId;
+        this.defaultCatalogIdSign = this.defaultCatalogId;
+        this.initData();
+        setTimeout(()=>{
+          if (this.catalogIdChange)this.catalogIdChange(this.defaultCatalogId, this.platformName);
+        }, 100)
+
+    },
+    components: {
+      catalogEdit,
+    },
+    data() {
+        return {
+          props: {
+            label: 'name',
+            children: 'children',
+            isLeaf: 'leaf'
+          },
+          defaultCatalogIdSign: null,
+          chooseNode: null,
+          chooseId: "",
+          chooseName: "",
+          catalogTree: null,
+          contextmenuShow: false
+
+        };
+    },
+    watch:{
+        platformId(newData, oldData){
+            console.log(newData)
+            this.initData()
+        },
+    },
+    methods: {
+        initData: function () {
+            this.getCatalog();
+        },
+
+        getCatalog: function(parentId, callback) {
+            let that = this;
+            this.$axios({
+                    method:"get",
+                    url:`/api/platform/catalog`,
+                    params: {
+                        platformId: that.platformId,
+                        parentId: parentId
+                    }
+                }).then((res)=> {
+                  if (res.data.code === 0) {
+                    if (typeof(callback) === 'function') {
+                      callback(res.data.data)
+                    }
+                  }
+                })
+                .catch(function (error) {
+                    console.log(error);
+                });
+
+        },
+        addCatalog: function (parentId, node){
+          let that = this;
+          console.log(this.treeType)
+          // 打开添加弹窗
+          that.$refs.catalogEdit.openDialog(false, null, null, parentId, this.treeType, node.level, ()=>{
+            node.loaded = false
+            node.expand();
+          });
+
+        },
+        refreshCatalog: function (node){
+          node.loaded = false
+          node.expand();
+        },
+        refreshCatalogById: function (id) {
+          if (id) {
+            let node = this.$refs.tree.getNode(id);
+            this.refreshCatalog(node);
+          }
+        },
+        editCatalog: function (data, node){
+          let that = this;
+          // 打开添加弹窗
+          that.$refs.catalogEdit.openDialog(true, data.id, data.name, data.parentId, (newData)=>{
+            node.parent.loaded = false
+            node.parent.expand();
+            if (data.id === this.chooseId && newData.name !== data.name) {
+              if (this.catalogIdChange)this.catalogIdChange(this.chooseId, newData.name);
+            }
+          });
+
+        },
+        removeCatalog: function (id, node){
+          this.$axios({
+            method:"delete",
+            url:`/api/platform/catalog/del`,
+            params: {
+              id: id,
+              platformId: this.platformId,
+            }
+          }).then((res) => {
+              if (res.data.code === 0) {
+                console.log("移除成功")
+                node.parent.loaded = false
+                node.parent.expand();
+                if (res.data.data) {
+                  this.defaultCatalogIdSign = res.data.data;
+                }
+              }
+            })
+            .catch(function (error) {
+              console.log(error);
+            });
+        },
+        setDefaultCatalog: function (id){
+          this.$axios({
+            method:"post",
+            url:`/api/platform/catalog/default/update`,
+            params: {
+              platformId: this.platformId,
+              catalogId: id,
+            }
+          }).then((res)=> {
+              if (res.data.code === 0) {
+                this.defaultCatalogIdSign = id;
+              }
+            })
+            .catch(function (error) {
+              console.log(error);
+            });
+        },
+        loadNode: function(node, resolve){
+          console.log("this.platformDeviceId: " + this.platformDeviceId)
+          if (node.level === 0) {
+            resolve([
+              {
+              name: "未分配",
+              id:  null,
+              type:  -1
+              },{
+                name: this.platformName,
+                id:   this.platformDeviceId,
+                type:  0
+              }
+            ]);
+          }
+          if (node.level >= 1){
+            this.getCatalog(node.data.id, resolve)
+          }
+        },
+      contextmenuEventHandler: function (event,data,node,element){
+          if (node.data.type !== 0) {
+            data.parentId = node.parent.data.id;
+            this.$contextmenu({
+              items: [
+                {
+                  label: "移除通道",
+                  icon: "el-icon-delete",
+                  disabled: false,
+                  onClick: () => {
+                    this.$axios({
+                      method:"delete",
+                      url:"/api/platform/catalog/relation/del",
+                      data: data
+                    }).then((res)=>{
+                      console.log("移除成功")
+                      node.parent.loaded = false
+                      node.parent.expand();
+                    }).catch(function (error) {
+                      console.log(error);
+                    });
+                  }
+                }
+              ],
+              event, // 鼠标事件信息
+              customClass: "custom-class", // 自定义菜单 class
+              zIndex: 3000, // 菜单样式 z-index
+            });
+          }else {
+            this.$contextmenu({
+              items: [
+                {
+                  label: "刷新节点",
+                  icon: "el-icon-refresh",
+                  disabled: false,
+                  onClick: () => {
+                    this.refreshCatalog(node);
+                  }
+                },
+                {
+                  label: "新建节点",
+                  icon: "el-icon-plus",
+                  disabled: false,
+                  onClick: () => {
+                    this.addCatalog(data.id, node);
+                  }
+                },
+                {
+                  label: "修改节点",
+                  icon: "el-icon-edit",
+                  disabled: node.level === 1,
+                  onClick: () => {
+                    this.editCatalog(data, node);
+                  }
+                },
+                {
+                  label: "删除节点",
+                  icon: "el-icon-delete",
+                  disabled: node.level === 1,
+                  divided: true,
+                  onClick: () => {
+                    this.$confirm('确定删除?', '提示', {
+                      confirmButtonText: '确定',
+                      cancelButtonText: '取消',
+                      type: 'warning'
+                    }).then(() => {
+                      this.removeCatalog(data.id, node)
+                    }).catch(() => {
+
+                    });
+                  }
+                },
+                {
+                  label: "设为默认",
+                  icon: "el-icon-folder-checked",
+                  disabled: node.data.id === this.defaultCatalogIdSign,
+                  onClick: () => {
+                    this.setDefaultCatalog(data.id)
+                  },
+                },
+                // {
+                //   label: "导出",
+                //   icon: "el-icon-download",
+                //   disabled: false,
+                //   children: [
+                //     {
+                //       label: "导出到文件",
+                //       onClick: () => {
+                //
+                //       },
+                //     },
+                //     {
+                //       label: "导出到其他平台",
+                //       onClick: () => {
+                //
+                //       },
+                //     }
+                //   ]
+                // },
+
+              ],
+              event, // 鼠标事件信息
+              customClass: "custom-class", // 自定义菜单 class
+              zIndex: 3000, // 菜单样式 z-index
+            });
+          }
+
+        return false;
+      },
+      nodeClickHandler: function (data, node, tree){
+          console.log(data)
+          console.log(node)
+       this.chooseId = data.id;
+       this.chooseName = data.name;
+       if (this.catalogIdChange)this.catalogIdChange(this.chooseId, this.chooseName);
+      }
+    }
+};
+</script>
+
+<style>
+#catalogTree{
+  display: inline-block;
+}
+</style>

--
Gitblit v1.9.3