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/StreamProxyList.vue |  179 ++++++++++++++++++++++++++++++++---------------------------
 1 files changed, 97 insertions(+), 82 deletions(-)

diff --git a/web_src/src/components/StreamProxyList.vue b/web_src/src/components/StreamProxyList.vue
old mode 100644
new mode 100755
index d553392..eb1f7d8
--- a/web_src/src/components/StreamProxyList.vue
+++ b/web_src/src/components/StreamProxyList.vue
@@ -5,14 +5,15 @@
       <div class="page-header-btn">
         <el-button icon="el-icon-plus" size="mini" style="margin-right: 1rem;" type="primary" @click="addStreamProxy">娣诲姞浠g悊</el-button>
         <el-button v-if="false" icon="el-icon-search" size="mini" style="margin-right: 1rem;" type="primary" @click="addOnvif">鎼滅储ONVIF</el-button>
+        <el-button icon="el-icon-refresh-right" circle size="mini" @click="refresh()"></el-button>
       </div>
     </div>
     <devicePlayer ref="devicePlayer"></devicePlayer>
-    <el-table :data="streamProxyList" border style="width: 100%" :height="winHeight">
-      <el-table-column prop="name" label="鍚嶇О" align="center" show-overflow-tooltip/>
-      <el-table-column prop="app" label="娴佸簲鐢ㄥ悕" align="center" show-overflow-tooltip/>
-      <el-table-column prop="stream" label="娴両D" align="center" show-overflow-tooltip/>
-      <el-table-column label="娴佸湴鍧�" width="400" align="center" show-overflow-tooltip >
+    <el-table :data="streamProxyList" style="width: 100%" :height="winHeight">
+      <el-table-column prop="name" label="鍚嶇О" min-width="120" show-overflow-tooltip/>
+      <el-table-column prop="app" label="娴佸簲鐢ㄥ悕" min-width="120" show-overflow-tooltip/>
+      <el-table-column prop="stream" label="娴両D" min-width="120" show-overflow-tooltip/>
+      <el-table-column label="娴佸湴鍧�" min-width="400"  show-overflow-tooltip >
         <template slot-scope="scope">
           <div slot="reference" class="name-wrapper">
 
@@ -21,23 +22,23 @@
               {{scope.row.url}}
             </el-tag>
             <el-tag size="medium" v-if="scope.row.type != 'default'">
-              <i class="cpoy-btn el-icon-document-copy"  title="鐐瑰嚮鎷疯礉" v-clipboard="scope.row.src_url" @success="$message({type:'success', message:'鎴愬姛鎷疯礉鍒扮矘璐存澘'})"></i>
-              {{scope.row.src_url}}
+              <i class="cpoy-btn el-icon-document-copy"  title="鐐瑰嚮鎷疯礉" v-clipboard="scope.row.srcUrl" @success="$message({type:'success', message:'鎴愬姛鎷疯礉鍒扮矘璐存澘'})"></i>
+              {{scope.row.srcUrl}}
             </el-tag>
           </div>
         </template>
       </el-table-column>
-      <el-table-column prop="mediaServerId" label="娴佸獟浣�" width="150" align="center"></el-table-column>
-      <el-table-column label="绫诲瀷" width="100" align="center">
+      <el-table-column prop="mediaServerId" label="娴佸獟浣�" min-width="180" ></el-table-column>
+      <el-table-column label="绫诲瀷" width="100" >
         <template slot-scope="scope">
           <div slot="reference" class="name-wrapper">
-            <el-tag size="medium">{{scope.row.type}}</el-tag>
+            <el-tag size="medium">{{scope.row.type === "default"? "鐩存帴浠g悊":"FFMPEG浠g悊"}}</el-tag>
           </div>
         </template>
       </el-table-column>
 
-      <el-table-column prop="gbId" label="鍥芥爣缂栫爜" width="180" align="center" show-overflow-tooltip/>
-      <el-table-column label="鐘舵��" width="120" align="center">
+      <el-table-column prop="gbId" label="鍥芥爣缂栫爜" min-width="180"  show-overflow-tooltip/>
+      <el-table-column label="鐘舵��" min-width="120" >
         <template slot-scope="scope">
           <div slot="reference" class="name-wrapper">
             <el-tag size="medium" v-if="scope.row.status">鍦ㄧ嚎</el-tag>
@@ -45,7 +46,7 @@
           </div>
         </template>
       </el-table-column>
-      <el-table-column label="鍚敤" width="120" align="center">
+      <el-table-column label="鍚敤" min-width="120" >
         <template slot-scope="scope">
           <div slot="reference" class="name-wrapper">
             <el-tag size="medium" v-if="scope.row.enable">宸插惎鐢�</el-tag>
@@ -53,41 +54,45 @@
           </div>
         </template>
       </el-table-column>
-      <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" align="center" width="150" show-overflow-tooltip/>
-      <el-table-column label="杞琀LS" width="120" align="center">
+      <el-table-column prop="createTime" label="鍒涘缓鏃堕棿"  min-width="150" show-overflow-tooltip/>
+      <el-table-column label="闊抽" min-width="120" >
         <template slot-scope="scope">
           <div slot="reference" class="name-wrapper">
-            <el-tag size="medium" v-if="scope.row.enable_hls">宸插惎鐢�</el-tag>
-            <el-tag size="medium" type="info" v-if="!scope.row.enable_hls">鏈惎鐢�</el-tag>
+            <el-tag size="medium" v-if="scope.row.enableAudio">宸插惎鐢�</el-tag>
+            <el-tag size="medium" type="info" v-if="!scope.row.enableAudio">鏈惎鐢�</el-tag>
           </div>
         </template>
       </el-table-column>
-      <el-table-column label="MP4褰曞埗" width="120" align="center">
+      <el-table-column label="褰曞埗" min-width="120" >
         <template slot-scope="scope">
           <div slot="reference" class="name-wrapper">
-            <el-tag size="medium" v-if="scope.row.enable_mp4">宸插惎鐢�</el-tag>
-            <el-tag size="medium" type="info" v-if="!scope.row.enable_mp4">鏈惎鐢�</el-tag>
+            <el-tag size="medium" v-if="scope.row.enableMp4">宸插惎鐢�</el-tag>
+            <el-tag size="medium" type="info" v-if="!scope.row.enableMp4">鏈惎鐢�</el-tag>
           </div>
         </template>
       </el-table-column>
-      <el-table-column label="鏃犱汉瑙傜湅鑷姩鍒犻櫎" width="160" align="center">
+      <el-table-column label="鏃犱汉瑙傜湅" min-width="160" >
         <template slot-scope="scope">
           <div slot="reference" class="name-wrapper">
-            <el-tag size="medium" v-if="scope.row.enable_remove_none_reader">宸插惎鐢�</el-tag>
-            <el-tag size="medium" type="info" v-if="!scope.row.enable_remove_none_reader">鏈惎鐢�</el-tag>
+            <el-tag size="medium" v-if="scope.row.enableRemoveNoneReader">绉婚櫎</el-tag>
+            <el-tag size="medium" v-if="scope.row.enableDisableNoneReader">鍋滅敤</el-tag>
+            <el-tag size="medium" type="info" v-if="!scope.row.enableRemoveNoneReader && !scope.row.enableDisableNoneReader">涓嶅仛澶勭悊</el-tag>
           </div>
         </template>
       </el-table-column>
 
 
-      <el-table-column label="鎿嶄綔" width="360" align="center" fixed="right">
+      <el-table-column label="鎿嶄綔" width="360"  fixed="right">
         <template slot-scope="scope">
-          <el-button-group>
-            <el-button size="mini" icon="el-icon-video-play" v-if="scope.row.enable" @click="play(scope.row)">鎾斁</el-button>
-            <el-button size="mini" icon="el-icon-close" type="success" v-if="scope.row.enable" @click="stop(scope.row)">鍋滅敤</el-button>
-            <el-button size="mini" icon="el-icon-check" type="primary" :loading="startBtnLaoding" v-if="!scope.row.enable" @click="start(scope.row)">鍚敤</el-button>
-            <el-button size="mini" icon="el-icon-delete" type="danger"  @click="deleteStreamProxy(scope.row)">鍒犻櫎</el-button>
-          </el-button-group>
+          <el-button size="medium" icon="el-icon-video-play" type="text" v-if="scope.row.enable" @click="play(scope.row)">鎾斁</el-button>
+          <el-divider direction="vertical"></el-divider>
+          <el-button size="medium" icon="el-icon-switch-button" type="text" v-if="scope.row.enable" @click="stop(scope.row)">鍋滅敤</el-button>
+          <el-divider direction="vertical"></el-divider>
+          <el-button size="medium" icon="el-icon-check" type="text" :loading="scope.row.startBtnLoading" v-if="!scope.row.enable" @click="start(scope.row)">鍚敤</el-button>
+          <el-divider v-if="!scope.row.enable" direction="vertical"></el-divider>
+          <el-button size="medium" icon="el-icon-delete" type="text" style="color: #f56c6c" @click="deleteStreamProxy(scope.row)">鍒犻櫎</el-button>
+          <el-button size="medium" icon="el-icon-cloudy" type="text" @click="queryCloudRecords(scope.row)">浜戠褰曞儚
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -129,15 +134,14 @@
 				currentPage:1,
 				count:15,
 				total:0,
-				getListLoading: false,
-				startBtnLaoding: false
+        startBtnLoading: false
 			};
 		},
 		computed: {
 		},
 		mounted() {
 			this.initData();
-			this.updateLooper = setInterval(this.initData, 1000);
+			this.startUpdateList()
 		},
 		destroyed() {
 			this.$destroy('videojs');
@@ -147,6 +151,12 @@
 			initData: function() {
 				this.getStreamProxyList();
 			},
+      stopUpdateList: function (){
+        window.clearInterval(this.updateLooper)
+      },
+      startUpdateList: function (){
+        this.updateLooper = setInterval(this.initData, 1000);
+      },
 			currentChange: function(val){
 				this.currentPage = val;
 				this.getStreamProxyList();
@@ -157,7 +167,6 @@
 			},
 			getStreamProxyList: function() {
 				let that = this;
-				this.getListLoading = true;
 				this.$axios({
 					method: 'get',
 					url:`/api/proxy/list`,
@@ -166,31 +175,31 @@
 						count: that.count
 					}
 				}).then(function (res) {
-					that.total = res.data.total;
-					that.streamProxyList = res.data.list;
-					that.getListLoading = false;
+          if (res.data.code === 0) {
+            that.total = res.data.data.total;
+            for (let i = 0; i < res.data.data.list.length; i++) {
+              res.data.data.list[i]["startBtnLoading"] = false;
+            }
+            that.streamProxyList = res.data.data.list;
+          }
 				}).catch(function (error) {
 					console.log(error);
-					that.getListLoading = false;
 				});
 			},
 			addStreamProxy: function(){
 				this.$refs.streamProxyEdit.openDialog(null, this.initData)
 			},
       addOnvif: function(){
-        this.getListLoading = true;
-        this.getListLoading = true;
         this.$axios({
           method: 'get',
           url:`/api/onvif/search?timeout=3000`,
         }).then((res) =>{
-          this.getListLoading = false;
-          if (res.data.code == 0 ){
+          if (res.data.code === 0 ){
             if (res.data.data.length > 0) {
               this.$refs.onvifEdit.openDialog(res.data.data, (url)=>{
                   if (url != null) {
                     this.$refs.onvifEdit.close();
-                    this.$refs.streamProxyEdit.openDialog({type: "default", url: url, src_url: url}, this.initData())
+                    this.$refs.streamProxyEdit.openDialog({type: "default", url: url, srcUrl: url}, this.initData())
                   }
               })
             }else {
@@ -201,7 +210,6 @@
           }
 
         }).catch((error)=> {
-          this.getListLoading = false;
           this.$message.error(error.response.data.msg);
         });
 
@@ -210,17 +218,15 @@
 			},
 			play: function(row){
 				let that = this;
-				this.getListLoading = true;
 				this.$axios({
 					method: 'get',
-					url:`/api/media/stream_info_by_app_and_stream`,
+					url:`/api/push/getPlayUrl`,
 					params: {
 						app: row.app,
 						stream: row.stream,
             mediaServerId: row.mediaServerId
 					}
 				}).then(function (res) {
-					that.getListLoading = false;
 					if (res.data.code === 0) {
             that.$refs.devicePlayer.openDialog("streamPlay", null, null, {
               streamInfo: res.data.data,
@@ -236,32 +242,38 @@
 
 				}).catch(function (error) {
 					console.log(error);
-					that.getListLoading = false;
 				});
 
 			},
+      queryCloudRecords: function (row) {
+
+        this.$router.push(`/cloudRecordDetail/${row.app}/${row.stream}`)
+      },
 			deleteStreamProxy: function(row){
 				let that = this;
-				this.getListLoading = true;
-				that.$axios({
-                    method:"delete",
-                    url:"/api/proxy/del",
-                    params:{
-                      app: row.app,
-                      stream: row.stream
-                    }
-                }).then((res)=>{
-                    that.getListLoading = false;
-					          that.initData()
-                }).catch(function (error) {
-                    console.log(error);
-					          that.getListLoading = false;
-                });
+        this.$confirm('纭畾鍒犻櫎姝や唬鐞嗗悧锛�', '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          that.$axios({
+            method:"delete",
+            url:"/api/proxy/del",
+            params:{
+              app: row.app,
+              stream: row.stream
+            }
+          }).then((res)=>{
+            that.initData()
+          }).catch(function (error) {
+            console.log(error);
+          });
+        }).catch(() => {
+        });
 			},
 			start: function(row){
-				let that = this;
-				this.getListLoading = true;
-				this.startBtnLaoding = true;
+        this.stopUpdateList()
+        this.$set(row, 'startBtnLoading', true)
 				this.$axios({
 					method: 'get',
 					url:`/api/proxy/start`,
@@ -269,28 +281,31 @@
 						app: row.app,
 						stream: row.stream
 					}
-				}).then(function (res) {
-          that.getListLoading = false;
-          that.startBtnLaoding = false;
-				  if (res.data == "success"){
-            that.initData()
+				}).then((res)=> {
+				  if (res.data.code === 0){
+            this.initData()
           }else {
-            that.$message({
+            this.$message({
               showClose: true,
-              message: "淇濆瓨澶辫触锛岃妫�鏌ュ湴鍧�鏄惁鍙敤锛�",
+              message: "鍚姩澶辫触锛岃妫�鏌ュ湴鍧�鏄惁鍙敤锛�",
               type: "error",
             });
           }
-
-				}).catch(function (error) {
+          this.$set(row, 'startBtnLoading', false)
+          this.startUpdateList()
+				}).catch((error)=> {
 					console.log(error);
-					that.getListLoading = false;
-					that.startBtnLaoding = false;
+          this.$message({
+            showClose: true,
+            message: "鍚姩澶辫触锛岃妫�鏌ュ湴鍧�鏄惁鍙敤锛�",
+            type: "error",
+          });
+          this.$set(row, 'startBtnLoading', false)
+          this.startUpdateList()
 				});
 			},
 			stop: function(row){
 				let that = this;
-				this.getListLoading = true;
 				this.$axios({
 					method: 'get',
 					url:`/api/proxy/stop`,
@@ -299,14 +314,14 @@
 						stream: row.stream
 					}
 				}).then(function (res) {
-					that.getListLoading = false;
 					that.initData()
 				}).catch(function (error) {
 					console.log(error);
-					that.getListLoading = false;
 				});
-			}
-
+			},
+      refresh: function (){
+        this.initData();
+      }
 		}
 	};
 </script>

--
Gitblit v1.8.0