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