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/chooseChannelForGb.vue |  323 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 323 insertions(+), 0 deletions(-)

diff --git a/web_src/src/components/dialog/chooseChannelForGb.vue b/web_src/src/components/dialog/chooseChannelForGb.vue
new file mode 100644
index 0000000..8464030
--- /dev/null
+++ b/web_src/src/components/dialog/chooseChannelForGb.vue
@@ -0,0 +1,323 @@
+<template>
+<div id="chooseChannelForGb" >
+  <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>
+            <el-option label="全部" value=""></el-option>
+            <el-option label="设备" value="false"></el-option>
+            <el-option label="子目录" value="true"></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-button v-if="catalogId !== null" icon="el-icon-delete" size="mini" style="margin-right: 1rem;" :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" style="margin-right: 1rem;" :disabled="gbChannels.length === 0 || multipleSelection.length === 0" @click="batchAdd">批量添加</el-button>
+    </div>
+
+    <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">
+        </el-table-column>
+        <el-table-column prop="deviceId" label="设备编号" width="180" align="center">
+        </el-table-column>
+        <el-table-column label="设备地址" width="180" align="center">
+            <template slot-scope="scope">
+                <div slot="reference" class="name-wrapper">
+                    <el-tag size="medium">{{ scope.row.hostAddress }}</el-tag>
+                </div>
+            </template>
+        </el-table-column>
+        <el-table-column prop="manufacture" label="厂家" align="center">
+        </el-table-column>
+        <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="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: {
+        // getPlayerShared: function () {
+        //     return {
+        //         sharedUrl: window.location.host + '/' + this.videoUrl,
+        //         sharedIframe: '<iframe src="' + window.location.host + '/' + this.videoUrl + '"></iframe>',
+        //         sharedRtmp: this.videoUrl
+        //     };
+        // }
+    },
+    props: ['platformId','catalogId',  'catalogName'],
+    created() {
+        this.initData();
+    },
+    components: {
+      getCatalog,
+    },
+    data() {
+        return {
+            gbChannels: [],
+            gbChoosechannel:{},
+            searchSrt: "",
+            channelType: "",
+            online: "",
+            choosed: "",
+            currentPage: 1,
+            count: 10,
+            total: 0,
+            eventEnable: false,
+            multipleSelection: [],
+            winHeight: window.innerHeight - 400,
+
+        };
+    },
+    watch:{
+        platformId(newData, oldData){
+            console.log(newData)
+            this.getChannelList()
+        },
+        catalogId(newData, oldData){
+          this.getChannelList()
+        },
+    },
+    methods: {
+        initData: function() {
+            this.getChannelList();
+        },
+        currentChange: function (val) {
+            this.currentPage = val;
+            this.initData();
+        },
+        handleSizeChange: function (val) {
+            this.count = val;
+            console.log(val)
+            this.initData();
+        },
+        add: function (row) {
+          this.getCatalogFromUser((catalogId)=> {
+            this.$axios({
+              method:"post",
+              url:"/api/platform/update_channel_for_gb",
+              data:{
+                platformId:  this.platformId,
+                channelReduces: [row],
+                catalogId: catalogId
+              }
+            }).then((res)=>{
+              console.log("保存成功")
+              this.getChannelList();
+            }).catch(function (error) {
+              console.log(error);
+            });
+          })
+
+        },
+        remove: function (row) {
+          console.log(row)
+
+          this.$axios({
+            method:"delete",
+            url:"/api/platform/del_channel_for_gb",
+            data:{
+              platformId:  this.platformId,
+              channelReduces: [row]
+            }
+          }).then((res)=>{
+            console.log("移除成功")
+            this.getChannelList();
+          }).catch(function (error) {
+            console.log(error);
+          });
+        },
+        // 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;
+
+            this.$axios({
+                    method:"get",
+                    url:`/api/platform/channel_list`,
+                    params: {
+                        page: that.currentPage,
+                        count: that.count,
+                        query: that.searchSrt,
+                        online: that.online,
+                        catalogId: that.catalogId,
+                        platformId: that.platformId,
+                        channelType: that.channelType
+                    }
+                })
+                .then(function (res) {
+                  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();
+                      that.eventEnable = true;
+                  })
+                })
+                .catch(function (error) {
+                    console.log(error);
+                });
+
+        },
+        search: function() {
+            this.initData();
+        },
+        handleGBSelectionChange: function() {
+            this.initData();
+        },
+      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>
+
+<style>
+
+</style>

--
Gitblit v1.9.3