From 9f16b5c553b479ea12fe368a7ecc748872ea8b98 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 12 六月 2025 11:11:27 +0800
Subject: [PATCH] 修改配置文件

---
 web_src/src/components/dialog/chooseChannelForGb.vue |  372 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 217 insertions(+), 155 deletions(-)

diff --git a/web_src/src/components/dialog/chooseChannelForGb.vue b/web_src/src/components/dialog/chooseChannelForGb.vue
old mode 100644
new mode 100755
index e46d3e5..bc71577
--- a/web_src/src/components/dialog/chooseChannelForGb.vue
+++ b/web_src/src/components/dialog/chooseChannelForGb.vue
@@ -1,6 +1,10 @@
 <template>
-<div id="chooseChannelForGb" >
-   <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;font-size: 14px;">
+<div id="chooseChannelForGb" v-loading="loading">
+  <div style="font-size: 17px; color: #606060; white-space: nowrap; line-height: 30px; font-family: monospace;">
+    <span v-if="catalogId == null">{{catalogName}}鐨勫浗鏍囬�氶亾</span>
+    <span v-if="catalogId != null">{{catalogName}}({{catalogId}})鐨勫浗鏍囬�氶亾</span>
+  </div>
+   <div style="background-color: #FFFFFF; position: relative; padding: 0.5rem; text-align: left;font-size: 14px;">
         鎼滅储: <el-input @input="search" style="margin-right: 1rem; width: auto;" size="mini" placeholder="鍏抽敭瀛�" prefix-icon="el-icon-search" v-model="searchSrt" clearable> </el-input>
 
         閫氶亾绫诲瀷: <el-select size="mini" @change="search" style="margin-right: 1rem; width:6rem" v-model="channelType" placeholder="璇烽�夋嫨" default-first-option>
@@ -9,21 +13,20 @@
             <el-option label="瀛愮洰褰�" value="true"></el-option>
         </el-select>
 
-        閫夋嫨鐘舵��: <el-select size="mini"  style="margin-right: 1rem; width:6rem" v-model="choosed"  @change="search" placeholder="璇烽�夋嫨" default-first-option>
-        <el-option label="鍏ㄩ儴" value=""></el-option>
-        <el-option label="宸查�夋嫨" value="true"></el-option>
-        <el-option label="鏈�夋嫨" value="false"></el-option>
-        </el-select>
-
         鍦ㄧ嚎鐘舵��: <el-select size="mini" style="margin-right: 1rem; width:6rem" @change="search" v-model="online" placeholder="璇烽�夋嫨" default-first-option>
             <el-option label="鍏ㄩ儴" value=""></el-option>
             <el-option label="鍦ㄧ嚎" value="true"></el-option>
             <el-option label="绂荤嚎" value="false"></el-option>
         </el-select>
-
-<!--        <el-checkbox @change="shareAllCheckedChange">鍏ㄩ儴鍏变韩</el-checkbox>-->
+     <el-button v-if="catalogId !== null" icon="el-icon-delete" size="mini" :disabled="gbChannels.length === 0 || multipleSelection.length === 0" type="danger" @click="batchDel">鎵归噺绉婚櫎</el-button>
+     <el-button v-if="catalogId === null" icon="el-icon-plus" size="mini" :disabled="gbChannels.length === 0 || multipleSelection.length === 0" @click="batchAdd">鎵归噺娣诲姞</el-button>
+     <el-button v-if="catalogId === null" icon="el-icon-plus" size="mini" @click="add()">鍏ㄩ儴娣诲姞</el-button>
+     <el-button v-if="catalogId !== null" type="danger" icon="el-icon-delete" size="mini" @click="remove()">鍏ㄩ儴绉婚櫎</el-button>
     </div>
-    <el-table ref="gbChannelsTable" :data="gbChannels" border style="width: 100%" :height="winHeight">
+
+    <el-table ref="gbChannelsTable" :data="gbChannels" border style="width: 100%" :height="winHeight" :row-key="(row)=> row.deviceId + row.channelId" @selection-change="handleSelectionChange">
+        <el-table-column align="center" type="selection" :reserve-selection="true" width="55">
+        </el-table-column>
         <el-table-column prop="channelId" label="閫氶亾缂栧彿" width="180" align="center">
         </el-table-column>
         <el-table-column prop="name" label="閫氶亾鍚嶇О" show-overflow-tooltip align="center">
@@ -42,18 +45,20 @@
         <el-table-column label="鎿嶄綔" width="100" align="center" fixed="right">
           <template slot-scope="scope">
             <el-button-group>
-              <el-button size="mini" icon="el-icon-plus" v-if="!scope.row.platformId" @click="add(scope.row)">娣诲姞</el-button>
-              <el-button size="mini" icon="el-icon-delete" v-if="scope.row.platformId" type="danger" @click="remove(scope.row)">绉婚櫎</el-button>
+              <el-button size="mini" icon="el-icon-plus" v-if="catalogId === null" @click="add(scope.row)">娣诲姞</el-button>
+              <el-button size="mini" icon="el-icon-delete" v-if="catalogId !== null" type="danger" @click="remove(scope.row)">绉婚櫎</el-button>
             </el-button-group>
           </template>
         </el-table-column>
     </el-table>
     <el-pagination style="float: right;margin-top: 1rem;" @size-change="handleSizeChange" @current-change="currentChange" :current-page="currentPage" :page-size="count" :page-sizes="[10, 20, 30, 50]" layout="total, sizes, prev, pager, next" :total="total">
     </el-pagination>
+    <getCatalog ref="getCatalog" :platformId="platformId" ></getCatalog>
 </div>
 </template>
 
 <script>
+import getCatalog from './getCatalog'
 export default {
     name: 'chooseChannelForGb',
     computed: {
@@ -65,12 +70,16 @@
         //     };
         // }
     },
-    props: ['platformId','catalogId', 'updateChoosedCallback'],
+    props: ['platformId','catalogId',  'catalogName'],
     created() {
         this.initData();
     },
+    components: {
+      getCatalog,
+    },
     data() {
         return {
+            loading: false,
             gbChannels: [],
             gbChoosechannel:{},
             searchSrt: "",
@@ -80,7 +89,8 @@
             currentPage: 1,
             count: 10,
             total: 0,
-            eventEnanle: false,
+            eventEnable: false,
+            multipleSelection: [],
             winHeight: window.innerHeight - 400,
 
         };
@@ -88,8 +98,10 @@
     watch:{
         platformId(newData, oldData){
             console.log(newData)
-            this.initData()
-
+            this.getChannelList()
+        },
+        catalogId(newData, oldData){
+          this.getChannelList()
         },
     },
     methods: {
@@ -105,126 +117,143 @@
             console.log(val)
             this.initData();
         },
-        rowcheckedChange: function (val, row) {
-            console.log(val)
-            console.log(row)
-        },
         add: function (row) {
-          console.log(row)
-          row.catalogId = this.catalogId
-          row.platformId = this.platformId
-          this.$axios({
-            method:"post",
-            url:"/api/platform/update_channel_for_gb",
-            data:{
-              platformId:  this.platformId,
-              channelReduces: [row],
-              catalogId: this.catalogId
-            }
-          }).then((res)=>{
-            console.log("淇濆瓨鎴愬姛")
-            if(this.updateChoosedCallback)this.updateChoosedCallback(this.catalogId)
-          }).catch(function (error) {
-            console.log(error);
-          });
+          let all = typeof(row) === "undefined"
+
+          this.getCatalogFromUser((catalogId)=> {
+            let task = null;
+            this.$axios({
+              method:"post",
+              url:"/api/platform/update_channel_for_gb",
+              data:{
+                platformId:  this.platformId,
+                all: all,
+                channelReduces: all?[]:[row],
+                catalogId: catalogId
+              }
+            }).then((res)=>{
+              console.log("淇濆瓨鎴愬姛")
+              window.clearTimeout(task);
+              this.loading = false;
+              this.getChannelList();
+            }).catch((error)=> {
+              window.clearTimeout(task);
+              this.loading = false;
+              console.log(error);
+            });
+            task= setTimeout(()=>{
+              this.loading = true;
+            }, 200)
+          })
+
+
         },
         remove: function (row) {
-          console.log(row)
+          let all = typeof(row) === "undefined"
+          this.$confirm(`纭畾绉婚櫎${all?"鎵�鏈夐�氶亾":""}鍚楋紵`, '鎻愮ず', {
+            dangerouslyUseHTMLString: true,
+            confirmButtonText: '纭畾',
+            cancelButtonText: '鍙栨秷',
+            type: 'warning'
+          }).then(() => {
+            console.log(row)
 
-          this.$axios({
-            method:"delete",
-            url:"/api/platform/del_channel_for_gb",
-            data:{
-              platformId:  this.platformId,
-              channelReduces: [row]
-            }
-          }).then((res)=>{
-            console.log("绉婚櫎鎴愬姛")
-            if(this.updateChoosedCallback)this.updateChoosedCallback(row.catalogId)
-            row.platformId = null;
-            row.catalogId = null
-          }).catch(function (error) {
-            console.log(error);
+            this.$axios({
+              method:"delete",
+              url:"/api/platform/del_channel_for_gb",
+              data:{
+                platformId:  this.platformId,
+                all: all,
+                channelReduces: all?[]:[row],
+              }
+            }).then((res)=>{
+              console.log("绉婚櫎鎴愬姛")
+              this.getChannelList();
+            }).catch(function (error) {
+              console.log(error);
+            });
+          }).catch(() => {
+
           });
-        },
-        checkedChange: function (val) {
-            let that = this;
-            if (!that.eventEnanle) {
-                return;
-            }
-            let newData = {};
-            let addData = [];
-            let delData = [];
-            if (val.length > 0) {
-                for (let i = 0; i < val.length; i++) {
-                    const element = val[i];
-                    let key = element.deviceId + "_" + element.channelId;
-                    newData[key] = element;
-                    if (!!!that.gbChoosechannel[key]){
-                        addData.push(element)
-                    }else{
-                        delete that.gbChoosechannel[key]
-                    }
-                }
 
-                let oldKeys = Object.keys(that.gbChoosechannel);
-                if (oldKeys.length > 0) {
-                    for (let i = 0; i < oldKeys.length; i++) {
-                        const key = oldKeys[i];
-                        delData.push(that.gbChoosechannel[key])
-                    }
-                }
-
-            }else{
-                let oldKeys = Object.keys(that.gbChoosechannel);
-                if (oldKeys.length > 0) {
-                    for (let i = 0; i < oldKeys.length; i++) {
-                        const key = oldKeys[i];
-                        delData.push(that.gbChoosechannel[key])
-                    }
-                }
-            }
-
-            that.gbChoosechannel = newData;
-            if (Object.keys(addData).length >0) {
-                that.$axios({
-                    method:"post",
-                    url:"/api/platform/update_channel_for_gb",
-                    data:{
-                        platformId:  that.platformId,
-                        channelReduces: addData,
-                        catalogId: that.catalogId
-                    }
-                }).then((res)=>{
-                    console.log("淇濆瓨鎴愬姛")
-                    if(that.updateChoosedCallback)that.updateChoosedCallback(that.catalogId)
-                }).catch(function (error) {
-                    console.log(error);
-                });
-            }
-            if (delData.length >0) {
-                 that.$axios({
-                    method:"delete",
-                    url:"/api/platform/del_channel_for_gb",
-                    data:{
-                        platformId:  that.platformId,
-                        channelReduces: delData
-                    }
-                }).then((res)=>{
-                    console.log("绉婚櫎鎴愬姛")
-                   let nodeIds = new Array();
-                   for (let i = 0; i < delData.length; i++) {
-                     nodeIds.push(delData[i].channelId)
-                   }
-                   if(that.updateChoosedCallback)that.updateChoosedCallback(null, nodeIds)
-                }).catch(function (error) {
-                    console.log(error);
-                });
-            }
-        },
-        shareAllCheckedChange: function (val) {
 
         },
+        // checkedChange: function (val) {
+        //     let that = this;
+        //     if (!that.eventEnable) {
+        //         return;
+        //     }
+        //     let newData = {};
+        //     let addData = [];
+        //     let delData = [];
+        //     if (val.length > 0) {
+        //         for (let i = 0; i < val.length; i++) {
+        //             const element = val[i];
+        //             let key = element.deviceId + "_" + element.channelId;
+        //             newData[key] = element;
+        //             if (!!!that.gbChoosechannel[key]){
+        //                 addData.push(element)
+        //             }else{
+        //                 delete that.gbChoosechannel[key]
+        //             }
+        //         }
+        //
+        //         let oldKeys = Object.keys(that.gbChoosechannel);
+        //         if (oldKeys.length > 0) {
+        //             for (let i = 0; i < oldKeys.length; i++) {
+        //                 const key = oldKeys[i];
+        //                 delData.push(that.gbChoosechannel[key])
+        //             }
+        //         }
+        //
+        //     }else{
+        //         let oldKeys = Object.keys(that.gbChoosechannel);
+        //         if (oldKeys.length > 0) {
+        //             for (let i = 0; i < oldKeys.length; i++) {
+        //                 const key = oldKeys[i];
+        //                 delData.push(that.gbChoosechannel[key])
+        //             }
+        //         }
+        //     }
+        //
+        //     that.gbChoosechannel = newData;
+        //     if (Object.keys(addData).length >0) {
+        //         that.$axios({
+        //             method:"post",
+        //             url:"/api/platform/update_channel_for_gb",
+        //             data:{
+        //                 platformId:  that.platformId,
+        //                 channelReduces: addData,
+        //                 catalogId: that.catalogId
+        //             }
+        //         }).then((res)=>{
+        //             console.log("淇濆瓨鎴愬姛")
+        //         }).catch(function (error) {
+        //             console.log(error);
+        //         });
+        //     }
+        //     if (delData.length >0) {
+        //          that.$axios({
+        //             method:"delete",
+        //             url:"/api/platform/del_channel_for_gb",
+        //             data:{
+        //                 platformId:  that.platformId,
+        //                 channelReduces: delData
+        //             }
+        //         }).then((res)=>{
+        //             console.log("绉婚櫎鎴愬姛")
+        //            let nodeIds = new Array();
+        //            for (let i = 0; i < delData.length; i++) {
+        //              nodeIds.push(delData[i].channelId)
+        //            }
+        //         }).catch(function (error) {
+        //             console.log(error);
+        //         });
+        //     }
+        // },
+        // shareAllCheckedChange: function (val) {
+        //
+        // },
         getChannelList: function () {
             let that = this;
 
@@ -236,34 +265,22 @@
                         count: that.count,
                         query: that.searchSrt,
                         online: that.online,
-                        choosed: that.choosed,
+                        catalogId: that.catalogId,
                         platformId: that.platformId,
                         channelType: that.channelType
                     }
                 })
                 .then(function (res) {
-                    that.total = res.data.total;
-                    that.gbChannels = res.data.list;
+                  if (res.data.code === 0 ) {
+                    that.total = res.data.data.total;
+                    that.gbChannels = res.data.data.list;
                     that.gbChoosechannel = {};
-                    // 闃叉鍑虹幇琛ㄦ牸閿欎綅
-                    that.$nextTick(() => {
-                        that.$refs.gbChannelsTable.doLayout();
-                        // 榛樿閫変腑
-                        var chooseGBS = [];
-                        for (let i = 0; i < res.data.list.length; i++) {
-                            const row = res.data.list[i];
-                            console.log(row.platformId)
-                            if (row.platformId == that.platformId) {
-                                that.$refs.gbChannelsTable.toggleRowSelection(row, true);
-                                chooseGBS.push(row)
-                                that.gbChoosechannel[row.deviceId+ "_" + row.channelId] = row;
-
-                            }
-                        }
-                         that.eventEnanle = true;
-                        // that.checkedChange(chooseGBS)
-                    })
-                    console.log(that.gbChoosechannel)
+                  }
+                  // 闃叉鍑虹幇琛ㄦ牸閿欎綅
+                  that.$nextTick(() => {
+                      that.$refs.gbChannelsTable.doLayout();
+                      that.eventEnable = true;
+                  })
                 })
                 .catch(function (error) {
                     console.log(error);
@@ -276,10 +293,55 @@
         handleGBSelectionChange: function() {
             this.initData();
         },
-        // catalogIdChange: function(id) {
-        //     this.catalogId = id;
-        //     console.log("閫氶亾閫夋嫨妯″潡鏀跺埌锛� " + id)
-        // },
+      batchDel: function() {
+        this.$confirm(`纭杩�${this.multipleSelection.length}涓�氶亾鍚楋紵`, '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          this.$axios({
+            method:"delete",
+            url:"/api/platform/del_channel_for_gb",
+            data:{
+              platformId:  this.platformId,
+              channelReduces: this.multipleSelection
+            }
+          }).then((res)=>{
+            console.log("绉婚櫎鎴愬姛")
+            this.$refs.gbChannelsTable.clearSelection()
+            this.getChannelList();
+          }).catch(function (error) {
+            console.log(error);
+          });
+        }).catch(() => {
+        });
+      },
+      batchAdd: function() {
+        this.getCatalogFromUser((catalogId)=> {
+
+          this.$axios({
+            method: "post",
+            url: "/api/platform/update_channel_for_gb",
+            data: {
+              platformId: this.platformId,
+              channelReduces: this.multipleSelection,
+              catalogId: catalogId,
+            }
+          }).then((res) => {
+            console.log("淇濆瓨鎴愬姛")
+            this.$refs.gbChannelsTable.clearSelection()
+            this.getChannelList();
+          }).catch(function (error) {
+            console.log(error);
+          });
+        });
+      },
+      handleSelectionChange: function (val) {
+        this.multipleSelection = val;
+      },
+      getCatalogFromUser(callback){
+        this.$refs.getCatalog.openDialog(callback)
+      },
     }
 };
 </script>

--
Gitblit v1.8.0