|  |  |  | 
|---|
|  |  |  | prefix-icon="el-icon-search" v-model="searchSrt" clearable></el-input> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 通道类型: | 
|---|
|  |  |  | <el-select size="mini" @change="search" style="margin-right: 1rem;" v-model="channelType" placeholder="请选择" | 
|---|
|  |  |  | <el-select size="mini" @change="search" style="width: 8rem; margin-right: 1rem;" 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;" @change="search" v-model="online" placeholder="请选择" | 
|---|
|  |  |  | <el-select size="mini" style="width: 8rem; margin-right: 1rem;" @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-select size="mini" style="margin-right: 1rem;" @change="search" v-model="isSubStream" placeholder="请选择" | 
|---|
|  |  |  | default-first-option> | 
|---|
|  |  |  | <el-option label="原画" :value="false"></el-option> | 
|---|
|  |  |  | <el-option label="流畅" :value="true"></el-option> | 
|---|
|  |  |  | 码流类型重置: | 
|---|
|  |  |  | <el-select size="mini" style="width: 16rem; margin-right: 1rem;" @change="subStreamChange" v-model="subStream" | 
|---|
|  |  |  | placeholder="请选择码流类型" default-first-option > | 
|---|
|  |  |  | <el-option label="stream:0(主码流)" value="stream:0"></el-option> | 
|---|
|  |  |  | <el-option label="stream:1(子码流)" value="stream:1"></el-option> | 
|---|
|  |  |  | <el-option label="streamnumber:0(主码流-2022)" value="streamnumber:0"></el-option> | 
|---|
|  |  |  | <el-option label="streamnumber:1(子码流-2022)" value="streamnumber:1"></el-option> | 
|---|
|  |  |  | <el-option label="streamprofile:0(主码流-大华)" value="streamprofile:0"></el-option> | 
|---|
|  |  |  | <el-option label="streamprofile:1(子码流-大华)" value="streamprofile:1"></el-option> | 
|---|
|  |  |  | <el-option label="streamMode:main(主码流-水星+TP-LINK)" value="streamMode:main"></el-option> | 
|---|
|  |  |  | <el-option label="streamMode:sub(子码流-水星+TP-LINK)" value="streamMode:sub"></el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <el-button icon="el-icon-refresh-right" circle size="mini" @click="refresh()"></el-button> | 
|---|
|  |  |  | 
|---|
|  |  |  | <el-main style="padding: 5px;"> | 
|---|
|  |  |  | <el-table ref="channelListTable" :data="deviceChannelList" :height="winHeight" style="width: 100%" | 
|---|
|  |  |  | header-row-class-name="table-header"> | 
|---|
|  |  |  | <el-table-column prop="channelId" label="通道编号" min-width="200"> | 
|---|
|  |  |  | <el-table-column prop="channelId" label="通道编号" min-width="180"> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="deviceId" label="设备编号" min-width="200"> | 
|---|
|  |  |  | <el-table-column prop="deviceId" label="设备编号" min-width="180"> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="name" label="通道名称" min-width="200"> | 
|---|
|  |  |  | <el-table-column prop="name" label="通道名称" min-width="180"> | 
|---|
|  |  |  | <template v-slot:default="scope"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-show="scope.row.edit" | 
|---|
|  |  |  | 
|---|
|  |  |  | <span v-show="!scope.row.edit">{{ scope.row.name }}</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="快照" min-width="120"> | 
|---|
|  |  |  | <el-table-column label="快照" min-width="100"> | 
|---|
|  |  |  | <template v-slot:default="scope"> | 
|---|
|  |  |  | <el-image | 
|---|
|  |  |  | :src="getSnap(scope.row)" | 
|---|
|  |  |  | 
|---|
|  |  |  | </el-image> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="subCount" label="子节点数" min-width="120"> | 
|---|
|  |  |  | <el-table-column prop="subCount" label="子节点数" min-width="100"> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="manufacture" label="厂家" min-width="120"> | 
|---|
|  |  |  | <el-table-column prop="manufacture" label="厂家" min-width="100"> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="位置信息" min-width="200"> | 
|---|
|  |  |  | <el-table-column label="位置信息" min-width="120"> | 
|---|
|  |  |  | <template v-slot:default="scope"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-show="scope.row.edit" | 
|---|
|  |  |  | 
|---|
|  |  |  | <span v-show="!scope.row.edit">{{ scope.row.location }}</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="PTZType" label="云台类型" min-width="120"> | 
|---|
|  |  |  | <el-table-column prop="ptzType" label="云台类型" min-width="100"> | 
|---|
|  |  |  | <template v-slot:default="scope"> | 
|---|
|  |  |  | <el-select v-show="scope.row.edit" v-model="scope.row.PTZType" | 
|---|
|  |  |  | <el-select v-show="scope.row.edit" v-model="scope.row.ptzType" | 
|---|
|  |  |  | placeholder="云台类型" filterable> | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="(value, key) in ptzTypes" | 
|---|
|  |  |  | 
|---|
|  |  |  | :value="key" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | <div v-show="!scope.row.edit">{{ scope.row.PTZTypeText }}</div> | 
|---|
|  |  |  | <div v-show="!scope.row.edit">{{ scope.row.ptzTypeText }}</div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="开启音频" min-width="120"> | 
|---|
|  |  |  | <el-table-column label="开启音频" min-width="100"> | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-switch @change="updateChannel(scope.row)" v-model="scope.row.hasAudio" active-color="#409EFF"> | 
|---|
|  |  |  | </el-switch> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="状态" min-width="120"> | 
|---|
|  |  |  | <el-table-column label="码流类型" min-width="180"> | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-select size="mini" style="margin-right: 1rem;" @change="channelSubStreamChange(scope.row)" v-model="scope.row.streamIdentification" | 
|---|
|  |  |  | placeholder="请选择码流类型" default-first-option > | 
|---|
|  |  |  | <el-option label="stream:0(主码流)" value="stream:0"></el-option> | 
|---|
|  |  |  | <el-option label="stream:1(子码流)" value="stream:1"></el-option> | 
|---|
|  |  |  | <el-option label="streamnumber:0(主码流-2022)" value="streamnumber:0"></el-option> | 
|---|
|  |  |  | <el-option label="streamnumber:1(子码流-2022)" value="streamnumber:1"></el-option> | 
|---|
|  |  |  | <el-option label="streamprofile:0(主码流-大华)" value="streamprofile:0"></el-option> | 
|---|
|  |  |  | <el-option label="streamprofile:1(子码流-大华)" value="streamprofile:1"></el-option> | 
|---|
|  |  |  | <el-option label="streamMode:main(主码流-水星+TP-LINK)" value="streamMode:main"></el-option> | 
|---|
|  |  |  | <el-option label="streamMode:sub(子码流-水星+TP-LINK)" value="streamMode:sub"></el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="状态" min-width="100"> | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <div slot="reference" class="name-wrapper"> | 
|---|
|  |  |  | <el-tag size="medium" v-if="scope.row.status === true">在线</el-tag> | 
|---|
|  |  |  | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <el-table-column label="操作" min-width="340" fixed="right"> | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-button size="medium" v-bind:disabled="device == null || device.online === 0" icon="el-icon-video-play" | 
|---|
|  |  |  | 
|---|
|  |  |  | @click="changeSubchannel(scope.row)">查看 | 
|---|
|  |  |  | </el-button> | 
|---|
|  |  |  | <el-divider v-if="scope.row.subCount > 0 || scope.row.parental === 1" direction="vertical"></el-divider> | 
|---|
|  |  |  | <el-button size="medium" v-bind:disabled="device == null || device.online === 0" | 
|---|
|  |  |  | icon="el-icon-video-camera" | 
|---|
|  |  |  | type="text" @click="queryRecords(scope.row)">设备录像 | 
|---|
|  |  |  | </el-button> | 
|---|
|  |  |  | <el-button size="medium" v-bind:disabled="device == null || device.online === 0" icon="el-icon-cloudy" | 
|---|
|  |  |  | type="text" @click="queryCloudRecords(scope.row)">云端录像 | 
|---|
|  |  |  | </el-button> | 
|---|
|  |  |  | <!--              <el-button size="medium" v-bind:disabled="device == null || device.online === 0"--> | 
|---|
|  |  |  | <!--                         icon="el-icon-video-camera"--> | 
|---|
|  |  |  | <!--                         type="text" @click="queryRecords(scope.row)">设备录像--> | 
|---|
|  |  |  | <!--              </el-button>--> | 
|---|
|  |  |  | <!--              <el-button size="medium" v-bind:disabled="device == null || device.online === 0" icon="el-icon-cloudy"--> | 
|---|
|  |  |  | <!--                         type="text" @click="queryCloudRecords(scope.row)">云端录像--> | 
|---|
|  |  |  | <!--              </el-button>--> | 
|---|
|  |  |  | <el-dropdown @command="(command)=>{moreClick(command, scope.row)}"> | 
|---|
|  |  |  | <el-button size="medium" type="text" > | 
|---|
|  |  |  | 更多功能<i class="el-icon-arrow-down el-icon--right"></i> | 
|---|
|  |  |  | </el-button> | 
|---|
|  |  |  | <el-dropdown-menu slot="dropdown"> | 
|---|
|  |  |  | <el-dropdown-item command="records" v-bind:disabled="device == null || device.online === 0"> | 
|---|
|  |  |  | 设备录像</el-dropdown-item> | 
|---|
|  |  |  | <el-dropdown-item command="cloudRecords" v-bind:disabled="device == null || device.online === 0" > | 
|---|
|  |  |  | 云端录像</el-dropdown-item> | 
|---|
|  |  |  | </el-dropdown-menu> | 
|---|
|  |  |  | </el-dropdown> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | </el-table> | 
|---|
|  |  |  | 
|---|
|  |  |  | searchSrt: "", | 
|---|
|  |  |  | channelType: "", | 
|---|
|  |  |  | online: "", | 
|---|
|  |  |  | isSubStream: false, | 
|---|
|  |  |  | subStream: "", | 
|---|
|  |  |  | winHeight: window.innerHeight - 200, | 
|---|
|  |  |  | currentPage: 1, | 
|---|
|  |  |  | count: 15, | 
|---|
|  |  |  | 
|---|
|  |  |  | that.total = res.data.data.total; | 
|---|
|  |  |  | that.deviceChannelList = res.data.data.list; | 
|---|
|  |  |  | that.deviceChannelList.forEach(e => { | 
|---|
|  |  |  | e.PTZType = e.PTZType + ""; | 
|---|
|  |  |  | e.ptzType = e.ptzType + ""; | 
|---|
|  |  |  | that.$set(e, "edit", false); | 
|---|
|  |  |  | that.$set(e, "location", ""); | 
|---|
|  |  |  | if (e.longitude && e.latitude) { | 
|---|
|  |  |  | 
|---|
|  |  |  | that.isLoging = false; | 
|---|
|  |  |  | // that.$message.error("请求超时"); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | moreClick: function (command, itemData) { | 
|---|
|  |  |  | if (command === "records") { | 
|---|
|  |  |  | this.queryRecords(itemData) | 
|---|
|  |  |  | }else if (command === "cloudRecords") { | 
|---|
|  |  |  | this.queryCloudRecords(itemData) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | queryRecords: function (itemData) { | 
|---|
|  |  |  | let deviceId = this.deviceId; | 
|---|
|  |  |  | 
|---|
|  |  |  | this.total = res.data.data.total; | 
|---|
|  |  |  | this.deviceChannelList = res.data.data.list; | 
|---|
|  |  |  | this.deviceChannelList.forEach(e => { | 
|---|
|  |  |  | e.PTZType = e.PTZType + ""; | 
|---|
|  |  |  | e.ptzType = e.ptzType + ""; | 
|---|
|  |  |  | this.$set(e, "edit", false); | 
|---|
|  |  |  | this.$set(e, "location", ""); | 
|---|
|  |  |  | if (e.longitude && e.latitude) { | 
|---|
|  |  |  | 
|---|
|  |  |  | console.log(JSON.stringify(res)); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | subStreamChange: function () { | 
|---|
|  |  |  | this.$confirm('确定重置所有通道的码流类型?', '提示', { | 
|---|
|  |  |  | confirmButtonText: '确定', | 
|---|
|  |  |  | cancelButtonText: '取消', | 
|---|
|  |  |  | type: 'warning' | 
|---|
|  |  |  | }).then(() => { | 
|---|
|  |  |  | this.$axios({ | 
|---|
|  |  |  | method: 'post', | 
|---|
|  |  |  | url: `/api/device/query/channel/stream/identification/update/`, | 
|---|
|  |  |  | params: { | 
|---|
|  |  |  | deviceId: this.deviceId, | 
|---|
|  |  |  | streamIdentification: this.subStream | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).then((res)=> { | 
|---|
|  |  |  | console.log(JSON.stringify(res)); | 
|---|
|  |  |  | this.initData() | 
|---|
|  |  |  | }).finally(()=>{ | 
|---|
|  |  |  | this.subStream = "" | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }).catch(() => { | 
|---|
|  |  |  | this.subStream = "" | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | channelSubStreamChange: function (row) { | 
|---|
|  |  |  | this.$axios({ | 
|---|
|  |  |  | method: 'post', | 
|---|
|  |  |  | url: `/api/device/query/channel/stream/identification/update/`, | 
|---|
|  |  |  | params: { | 
|---|
|  |  |  | deviceId: this.deviceId, | 
|---|
|  |  |  | channelId: row.channelId, | 
|---|
|  |  |  | streamIdentification: row.streamIdentification | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).then(function (res) { | 
|---|
|  |  |  | console.log(JSON.stringify(res)); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | refresh: function () { | 
|---|
|  |  |  | this.initData(); | 
|---|
|  |  |  | }, | 
|---|