From 3955e6ed53d450f8faf488d4b74ba0c0c83c5aaa Mon Sep 17 00:00:00 2001 From: 648540858 <456panlinlin> Date: 星期二, 12 四月 2022 21:06:21 +0800 Subject: [PATCH] 异步通道刷新,优化ui效果 --- web_src/src/components/DeviceList.vue | 159 +++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 113 insertions(+), 46 deletions(-) diff --git a/web_src/src/components/DeviceList.vue b/web_src/src/components/DeviceList.vue index 40d2146..4f8b460 100644 --- a/web_src/src/components/DeviceList.vue +++ b/web_src/src/components/DeviceList.vue @@ -13,23 +13,21 @@ </div> <!-- <devicePlayer ref="devicePlayer"></devicePlayer> --> <!--璁惧鍒楄〃--> - <el-table :data="deviceList" border style="width: 100%" :height="winHeight"> - <el-table-column prop="name" label="鍚嶇О" width="180" align="center"> + <el-table :data="deviceList" border style="width: 100%;font-size: 12px;" :height="winHeight"> + <el-table-column prop="name" label="鍚嶇О" align="center"> </el-table-column> - <el-table-column prop="deviceId" label="璁惧缂栧彿" width="240" align="center"> + <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 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="manufacturer" label="鍘傚" align="center"> </el-table-column> - <el-table-column prop="model" label="鍥轰欢鐗堟湰" align="center"> - </el-table-column> - <el-table-column label="娴佷紶杈撴ā寮�" align="center" width="160"> + <el-table-column label="娴佷紶杈撴ā寮�" align="center" width="120"> <template slot-scope="scope"> <el-select size="mini" @change="transportChange(scope.row)" v-model="scope.row.streamMode" placeholder="璇烽�夋嫨"> <el-option key="UDP" label="UDP" value="UDP"></el-option> @@ -40,7 +38,7 @@ </el-table-column> <el-table-column prop="channelCount" label="閫氶亾鏁�" align="center"> </el-table-column> - <el-table-column label="鐘舵��" width="80" align="center"> + <el-table-column label="鐘舵��" width="120" align="center"> <template slot-scope="scope"> <div slot="reference" class="name-wrapper"> <el-tag size="medium" v-if="scope.row.online == 1">鍦ㄧ嚎</el-tag> @@ -48,14 +46,23 @@ </div> </template> </el-table-column> + <el-table-column prop="keepaliveTime" label="鏈�杩戝績璺�" align="center" width="140"> + </el-table-column> + <el-table-column prop="registerTime" label="鏈�杩戞敞鍐�" align="center" width="140"> + </el-table-column> + <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" align="center" width="140"> + </el-table-column> + <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" align="center" width="140"> + </el-table-column> - <el-table-column label="鎿嶄綔" width="360" align="center" fixed="right"> + <el-table-column label="鎿嶄綔" width="450" align="center" fixed="right"> <template slot-scope="scope"> - <el-button size="mini" :ref="scope.row.deviceId + 'refbtn' " icon="el-icon-refresh" @click="refDevice(scope.row)">鍒锋柊</el-button> + <el-button size="mini" v-if="scope.row.online!=0" icon="el-icon-refresh" @click="refDevice(scope.row)" @mouseover="getTooltipContent(scope.row.deviceId)">鍒锋柊</el-button> <el-button-group> - <el-button size="mini" icon="el-icon-video-camera-solid" v-bind:disabled="scope.row.online==0" type="primary" @click="showChannelList(scope.row)">閫氶亾</el-button> - <el-button size="mini" icon="el-icon-location" v-bind:disabled="scope.row.online==0" type="primary" @click="showDevicePosition(scope.row)">瀹氫綅</el-button> - <el-button size="mini" icon="el-icon-s-tools" v-bind:disabled="scope.row.online==0" type="primary">鎺у埗</el-button> + <el-button size="mini" icon="el-icon-video-camera-solid" v-bind:disabled="scope.row.online==0" type="primary" @click="showChannelList(scope.row)">閫氶亾</el-button> + <el-button size="mini" icon="el-icon-location" v-bind:disabled="scope.row.online==0" type="primary" @click="showDevicePosition(scope.row)">瀹氫綅</el-button> + <el-button size="mini" icon="el-icon-edit" type="primary" @click="edit(scope.row)">缂栬緫</el-button> + <el-button size="mini" icon="el-icon-delete" type="danger" @click="deleteDevice(scope.row)">鍒犻櫎</el-button> </el-button-group> </template> </el-table-column> @@ -70,7 +77,8 @@ layout="total, sizes, prev, pager, next" :total="total"> </el-pagination> - + <deviceEdit ref="deviceEdit" ></deviceEdit> + <syncChannelProgress ref="syncChannelProgress" ></syncChannelProgress> </el-main> </el-container> </div> @@ -78,10 +86,14 @@ <script> import uiHeader from './UiHeader.vue' + import deviceEdit from './dialog/deviceEdit.vue' + import syncChannelProgress from './dialog/SyncChannelProgress.vue' export default { name: 'app', components: { - uiHeader + uiHeader, + deviceEdit, + syncChannelProgress, }, data() { return { @@ -95,7 +107,7 @@ currentPage:1, count:15, total:0, - getDeviceListLoading: false + getDeviceListLoading: false, }; }, computed: { @@ -108,8 +120,6 @@ }); this.currentDeviceChannelsLenth = channels.length; } - - console.log("鏁版嵁锛�" + JSON.stringify(channels)); return channels; } }, @@ -144,23 +154,45 @@ count: that.count } }).then(function (res) { - console.log(res); - console.log(res.data.list); that.total = res.data.total; that.deviceList = res.data.list; that.getDeviceListLoading = false; }).catch(function (error) { - console.log(error); + console.error(error); that.getDeviceListLoading = false; }); }, + deleteDevice: function(row) { + let msg = "纭畾鍒犻櫎姝よ澶囷紵" + if (row.online !== 0) { + msg = "鍦ㄧ嚎璁惧鍒犻櫎鍚庝粛鍙�氳繃娉ㄥ唽鍐嶆涓婄嚎銆�<br/>濡傞渶褰诲簳鍒犻櫎璇峰厛灏嗚澶囩绾裤��<br/><strong>纭畾鍒犻櫎姝よ澶囷紵</strong>" + } + this.$confirm(msg, '鎻愮ず', { + dangerouslyUseHTMLString : true, + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + center: true, + type: 'warning' + }).then(() => { + this.$axios({ + method: 'delete', + url:`/api/device/query/devices/${row.deviceId}/delete` + }).then((res)=>{ + this.getDeviceList(); + }).catch((error) =>{ + console.error(error); + }); + }).catch(() => { + + }); + + + }, showChannelList: function(row) { - console.log(JSON.stringify(row)) this.$router.push(`/channelList/${row.deviceId}/0/15/1`); }, showDevicePosition: function(row) { - console.log(JSON.stringify(row)) this.$router.push(`/devicePosition/${row.deviceId}/0/15/1`); }, @@ -168,33 +200,57 @@ //鍒锋柊璁惧淇℃伅 refDevice: function(itemData) { console.log("鍒锋柊瀵瑰簲璁惧:" + itemData.deviceId); - var that = this; - that.$refs[itemData.deviceId + 'refbtn' ].loading = true; + let that = this; this.$axios({ method: 'post', url: '/api/device/query/devices/' + itemData.deviceId + '/sync' - }).then(function(res) { + }).then((res) => { console.log("鍒锋柊璁惧缁撴灉锛�"+JSON.stringify(res)); - if (!res.data.deviceId) { + if (res.data.code !==0) { that.$message({ showClose: true, - message: res.data, + message: res.data.msg, type: 'error' }); }else{ - that.$message({ - showClose: true, - message: '璇锋眰鎴愬姛', - type: 'success' - }); + // that.$message({ + // showClose: true, + // message: res.data.msg, + // type: 'success' + // }); + this.$refs.syncChannelProgress.openDialog(itemData.deviceId) } that.initData() - that.$refs[itemData.deviceId + 'refbtn' ].loading = false; - }).catch(function(e) { + }).catch((e) => { console.error(e) - that.$refs[itemData.deviceId + 'refbtn' ].loading = false; - });; + that.$message({ + showClose: true, + message: e, + type: 'error' + }); + }); + }, + + getTooltipContent: async function (deviceId){ + let result = ""; + await this.$axios({ + method: 'get', + async: false, + url:`/api/device/query/${deviceId}/sync_status/`, + }).then((res) => { + if (res.data.code == 0) { + if (res.data.data.errorMsg !== null) { + result = res.data.data.errorMsg + } else if (res.data.msg !== null) { + result = res.data.msg + } else { + result = `鍚屾涓�...[${res.data.data.current}/${res.data.data.total}]`; + } + } + }) + return result; + }, //閫氱煡璁惧涓婁紶濯掍綋娴� sendDevicePush: function(itemData) { // let deviceId = this.currentDevice.deviceId; @@ -211,16 +267,27 @@ // }); }, transportChange: function (row) { - console.log(row); console.log(`淇敼浼犺緭鏂瑰紡涓� ${row.streamMode}锛�${row.deviceId} `); let that = this; this.$axios({ - method: 'get', - url: '/api/device/query/transport' + row.deviceId + '/' + row.streamMode + method: 'post', + url: '/api/device/query/transport/' + row.deviceId + '/' + row.streamMode }).then(function(res) { }).catch(function(e) { }); + }, + edit: function (row) { + this.$refs.deviceEdit.openDialog(row, ()=>{ + this.$refs.deviceEdit.close(); + this.$message({ + showClose: true, + message: "璁惧淇敼鎴愬姛锛岄�氶亾瀛楃闆嗗皢鍦ㄤ笅娆℃洿鏂扮敓鏁�", + type: "success", + }); + setTimeout(this.getDeviceList, 200) + + }) } } -- Gitblit v1.8.0