From cb897aaeed0f3a24f91dc4265b8ff0d2b31284c6 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期日, 23 四月 2023 17:35:00 +0800
Subject: [PATCH] Merge pull request #829 from kairlec/wvp-28181-2.0

---
 web_src/src/components/StreamProxyList.vue |  132 ++++++++++++++++++++++---------------------
 1 files changed, 67 insertions(+), 65 deletions(-)

diff --git a/web_src/src/components/StreamProxyList.vue b/web_src/src/components/StreamProxyList.vue
index d553392..47ccde8 100644
--- 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">
 
@@ -27,17 +28,17 @@
           </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,16 +54,16 @@
           </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.enable_audio">宸插惎鐢�</el-tag>
+            <el-tag size="medium" type="info" v-if="!scope.row.enable_audio">鏈惎鐢�</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>
@@ -70,24 +71,26 @@
           </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.enable_remove_none_reader">绉婚櫎</el-tag>
+            <el-tag size="medium" v-if="scope.row.enable_disable_none_reader">鍋滅敤</el-tag>
+            <el-tag size="medium" type="info" v-if="!scope.row.enable_remove_none_reader && !scope.row.enable_disable_none_reader">涓嶅仛澶勭悊</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>
         </template>
       </el-table-column>
     </el-table>
@@ -129,15 +132,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 +149,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 +165,6 @@
 			},
 			getStreamProxyList: function() {
 				let that = this;
-				this.getListLoading = true;
 				this.$axios({
 					method: 'get',
 					url:`/api/proxy/list`,
@@ -166,26 +173,26 @@
 						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) {
@@ -201,7 +208,6 @@
           }
 
         }).catch((error)=> {
-          this.getListLoading = false;
           this.$message.error(error.response.data.msg);
         });
 
@@ -210,17 +216,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,13 +240,11 @@
 
 				}).catch(function (error) {
 					console.log(error);
-					that.getListLoading = false;
 				});
 
 			},
 			deleteStreamProxy: function(row){
 				let that = this;
-				this.getListLoading = true;
 				that.$axios({
                     method:"delete",
                     url:"/api/proxy/del",
@@ -251,17 +253,14 @@
                       stream: row.stream
                     }
                 }).then((res)=>{
-                    that.getListLoading = false;
 					          that.initData()
                 }).catch(function (error) {
                     console.log(error);
-					          that.getListLoading = false;
                 });
 			},
 			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 +268,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 +301,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