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