|  | @@ -33,98 +33,156 @@
 | 
											
												
													
														|  |              <el-option label="流畅" :value="true"></el-option>
 |  |              <el-option label="流畅" :value="true"></el-option>
 | 
											
												
													
														|  |            </el-select>
 |  |            </el-select>
 | 
											
												
													
														|  |          </div>
 |  |          </div>
 | 
											
												
													
														|  | -      <el-button icon="el-icon-refresh-right" circle size="mini" @click="refresh()"></el-button>
 |  | 
 | 
											
												
													
														|  | -      <el-button v-if="showTree" icon="iconfont icon-list" circle size="mini" @click="switchList()"></el-button>
 |  | 
 | 
											
												
													
														|  | -      <el-button v-if="!showTree"  icon="iconfont icon-tree" circle size="mini" @click="switchTree()"></el-button>
 |  | 
 | 
											
												
													
														|  | 
 |  | +        <el-button icon="el-icon-refresh-right" circle size="mini" @click="refresh()"></el-button>
 | 
											
												
													
														|  | 
 |  | +        <el-button v-if="showTree" icon="iconfont icon-list" circle size="mini" @click="switchList()"></el-button>
 | 
											
												
													
														|  | 
 |  | +        <el-button v-if="!showTree" icon="iconfont icon-tree" circle size="mini" @click="switchTree()"></el-button>
 | 
											
												
													
														|  | 
 |  | +      </div>
 | 
											
												
													
														|  |      </div>
 |  |      </div>
 | 
											
												
													
														|  | -  </div>
 |  | 
 | 
											
												
													
														|  | -  <devicePlayer ref="devicePlayer" ></devicePlayer>
 |  | 
 | 
											
												
													
														|  | -  <el-container v-loading="isLoging" style="height: 82vh;">
 |  | 
 | 
											
												
													
														|  | -    <el-aside width="auto" style="height: 82vh; background-color: #ffffff; overflow: auto" v-if="showTree" >
 |  | 
 | 
											
												
													
														|  | -      <DeviceTree ref="deviceTree" :device="device" :onlyCatalog="true" :clickEvent="treeNodeClickEvent" ></DeviceTree>
 |  | 
 | 
											
												
													
														|  | -    </el-aside>
 |  | 
 | 
											
												
													
														|  | -    <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>
 |  | 
 | 
											
												
													
														|  | -        <el-table-column prop="deviceId" label="设备编号" min-width="200">
 |  | 
 | 
											
												
													
														|  | -        </el-table-column>
 |  | 
 | 
											
												
													
														|  | -        <el-table-column prop="name" label="通道名称" min-width="200">
 |  | 
 | 
											
												
													
														|  | -        </el-table-column>
 |  | 
 | 
											
												
													
														|  | -        <el-table-column label="快照" min-width="120">
 |  | 
 | 
											
												
													
														|  | -          <template v-slot:default="scope">
 |  | 
 | 
											
												
													
														|  | -            <el-image
 |  | 
 | 
											
												
													
														|  | -              :src="getSnap(scope.row)"
 |  | 
 | 
											
												
													
														|  | -              :preview-src-list="getBigSnap(scope.row)"
 |  | 
 | 
											
												
													
														|  | -              @error="getSnapErrorEvent(scope.row.deviceId, scope.row.channelId)"
 |  | 
 | 
											
												
													
														|  | -              :fit="'contain'"
 |  | 
 | 
											
												
													
														|  | -              style="width: 60px">
 |  | 
 | 
											
												
													
														|  | -              <div slot="error" class="image-slot">
 |  | 
 | 
											
												
													
														|  | -                <i class="el-icon-picture-outline"></i>
 |  | 
 | 
											
												
													
														|  | 
 |  | +    <devicePlayer ref="devicePlayer"></devicePlayer>
 | 
											
												
													
														|  | 
 |  | +    <el-container v-loading="isLoging" style="height: 82vh;">
 | 
											
												
													
														|  | 
 |  | +      <el-aside width="auto" style="height: 82vh; background-color: #ffffff; overflow: auto" v-if="showTree">
 | 
											
												
													
														|  | 
 |  | +        <DeviceTree ref="deviceTree" :device="device" :onlyCatalog="true" :clickEvent="treeNodeClickEvent"></DeviceTree>
 | 
											
												
													
														|  | 
 |  | +      </el-aside>
 | 
											
												
													
														|  | 
 |  | +      <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>
 | 
											
												
													
														|  | 
 |  | +          <el-table-column prop="deviceId" label="设备编号" min-width="200">
 | 
											
												
													
														|  | 
 |  | +          </el-table-column>
 | 
											
												
													
														|  | 
 |  | +          <el-table-column prop="name" label="通道名称" min-width="200">
 | 
											
												
													
														|  | 
 |  | +            <template v-slot:default="scope">
 | 
											
												
													
														|  | 
 |  | +              <el-input
 | 
											
												
													
														|  | 
 |  | +                v-show="scope.row.edit"
 | 
											
												
													
														|  | 
 |  | +                v-model="scope.row.name"
 | 
											
												
													
														|  | 
 |  | +                placeholder="通道名称"
 | 
											
												
													
														|  | 
 |  | +                :maxlength="255"
 | 
											
												
													
														|  | 
 |  | +                show-word-limit
 | 
											
												
													
														|  | 
 |  | +                clearable
 | 
											
												
													
														|  | 
 |  | +              />
 | 
											
												
													
														|  | 
 |  | +              <span v-show="!scope.row.edit">{{ scope.row.name }}</span>
 | 
											
												
													
														|  | 
 |  | +            </template>
 | 
											
												
													
														|  | 
 |  | +          </el-table-column>
 | 
											
												
													
														|  | 
 |  | +          <el-table-column label="快照" min-width="120">
 | 
											
												
													
														|  | 
 |  | +            <template v-slot:default="scope">
 | 
											
												
													
														|  | 
 |  | +              <el-image
 | 
											
												
													
														|  | 
 |  | +                :src="getSnap(scope.row)"
 | 
											
												
													
														|  | 
 |  | +                :preview-src-list="getBigSnap(scope.row)"
 | 
											
												
													
														|  | 
 |  | +                @error="getSnapErrorEvent(scope.row.deviceId, scope.row.channelId)"
 | 
											
												
													
														|  | 
 |  | +                :fit="'contain'"
 | 
											
												
													
														|  | 
 |  | +                style="width: 60px">
 | 
											
												
													
														|  | 
 |  | +                <div slot="error" class="image-slot">
 | 
											
												
													
														|  | 
 |  | +                  <i class="el-icon-picture-outline"></i>
 | 
											
												
													
														|  | 
 |  | +                </div>
 | 
											
												
													
														|  | 
 |  | +              </el-image>
 | 
											
												
													
														|  | 
 |  | +            </template>
 | 
											
												
													
														|  | 
 |  | +          </el-table-column>
 | 
											
												
													
														|  | 
 |  | +          <el-table-column prop="subCount" label="子节点数" min-width="120">
 | 
											
												
													
														|  | 
 |  | +          </el-table-column>
 | 
											
												
													
														|  | 
 |  | +          <el-table-column prop="manufacture" label="厂家" min-width="120">
 | 
											
												
													
														|  | 
 |  | +          </el-table-column>
 | 
											
												
													
														|  | 
 |  | +          <el-table-column label="位置信息" min-width="200">
 | 
											
												
													
														|  | 
 |  | +            <template v-slot:default="scope">
 | 
											
												
													
														|  | 
 |  | +              <el-input
 | 
											
												
													
														|  | 
 |  | +                v-show="scope.row.edit"
 | 
											
												
													
														|  | 
 |  | +                v-model="scope.row.location"
 | 
											
												
													
														|  | 
 |  | +                placeholder="例:117.234,36.378"
 | 
											
												
													
														|  | 
 |  | +                :maxlength="30"
 | 
											
												
													
														|  | 
 |  | +                show-word-limit
 | 
											
												
													
														|  | 
 |  | +                clearable
 | 
											
												
													
														|  | 
 |  | +              />
 | 
											
												
													
														|  | 
 |  | +              <span v-show="!scope.row.edit">{{ scope.row.location }}</span>
 | 
											
												
													
														|  | 
 |  | +            </template>
 | 
											
												
													
														|  | 
 |  | +          </el-table-column>
 | 
											
												
													
														|  | 
 |  | +          <el-table-column prop="PTZType" label="云台类型" min-width="120">
 | 
											
												
													
														|  | 
 |  | +            <template v-slot:default="scope">
 | 
											
												
													
														|  | 
 |  | +              <el-select v-show="scope.row.edit" v-model="scope.row.PTZType"
 | 
											
												
													
														|  | 
 |  | +                         placeholder="云台类型" filterable>
 | 
											
												
													
														|  | 
 |  | +                <el-option
 | 
											
												
													
														|  | 
 |  | +                  v-for="(value, key) in ptzTypes"
 | 
											
												
													
														|  | 
 |  | +                  :key="key"
 | 
											
												
													
														|  | 
 |  | +                  :label="value"
 | 
											
												
													
														|  | 
 |  | +                  :value="key"
 | 
											
												
													
														|  | 
 |  | +                />
 | 
											
												
													
														|  | 
 |  | +              </el-select>
 | 
											
												
													
														|  | 
 |  | +              <div v-show="!scope.row.edit">{{ scope.row.PTZTypeText }}</div>
 | 
											
												
													
														|  | 
 |  | +            </template>
 | 
											
												
													
														|  | 
 |  | +          </el-table-column>
 | 
											
												
													
														|  | 
 |  | +          <el-table-column label="开启音频" min-width="120">
 | 
											
												
													
														|  | 
 |  | +            <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">
 | 
											
												
													
														|  | 
 |  | +            <template slot-scope="scope">
 | 
											
												
													
														|  | 
 |  | +              <div slot="reference" class="name-wrapper">
 | 
											
												
													
														|  | 
 |  | +                <el-tag size="medium" v-if="scope.row.status === true">在线</el-tag>
 | 
											
												
													
														|  | 
 |  | +                <el-tag size="medium" type="info" v-if="scope.row.status === false">离线</el-tag>
 | 
											
												
													
														|  |                </div>
 |  |                </div>
 | 
											
												
													
														|  | -            </el-image>
 |  | 
 | 
											
												
													
														|  | -          </template>
 |  | 
 | 
											
												
													
														|  | -        </el-table-column>
 |  | 
 | 
											
												
													
														|  | -        <el-table-column prop="subCount" label="子节点数" min-width="120">
 |  | 
 | 
											
												
													
														|  | -        </el-table-column>
 |  | 
 | 
											
												
													
														|  | -        <el-table-column prop="manufacture" label="厂家" min-width="120">
 |  | 
 | 
											
												
													
														|  | -        </el-table-column>
 |  | 
 | 
											
												
													
														|  | -        <el-table-column label="位置信息"  min-width="200">
 |  | 
 | 
											
												
													
														|  | -          <template slot-scope="scope">
 |  | 
 | 
											
												
													
														|  | -            <span v-if="scope.row.longitude*scope.row.latitude > 0">{{ scope.row.longitude }},<br>{{ scope.row.latitude }}</span>
 |  | 
 | 
											
												
													
														|  | -            <span v-if="scope.row.longitude*scope.row.latitude === 0">无</span>
 |  | 
 | 
											
												
													
														|  | -          </template>
 |  | 
 | 
											
												
													
														|  | -        </el-table-column>
 |  | 
 | 
											
												
													
														|  | -        <el-table-column prop="PTZTypeText" label="云台类型" min-width="120"/>
 |  | 
 | 
											
												
													
														|  | -        <el-table-column label="开启音频" min-width="120">
 |  | 
 | 
											
												
													
														|  | -          <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">
 |  | 
 | 
											
												
													
														|  | -          <template slot-scope="scope">
 |  | 
 | 
											
												
													
														|  | -            <div slot="reference" class="name-wrapper">
 |  | 
 | 
											
												
													
														|  | -              <el-tag size="medium" v-if="scope.row.status === true">在线</el-tag>
 |  | 
 | 
											
												
													
														|  | -              <el-tag size="medium" type="info" v-if="scope.row.status === false">离线</el-tag>
 |  | 
 | 
											
												
													
														|  | -            </div>
 |  | 
 | 
											
												
													
														|  | -          </template>
 |  | 
 | 
											
												
													
														|  | -        </el-table-column>
 |  | 
 | 
											
												
													
														|  | 
 |  | +            </template>
 | 
											
												
													
														|  | 
 |  | +          </el-table-column>
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        <el-table-column label="操作" min-width="280" fixed="right">
 |  | 
 | 
											
												
													
														|  | -          <template slot-scope="scope">
 |  | 
 | 
											
												
													
														|  | -            <el-button size="medium" v-bind:disabled="device == null || device.online === 0" icon="el-icon-video-play" type="text" @click="sendDevicePush(scope.row)">播放</el-button>
 |  | 
 | 
											
												
													
														|  | -            <el-button size="medium" v-bind:disabled="device == null || device.online === 0" icon="el-icon-switch-button" type="text"  style="color: #f56c6c" v-if="!!scope.row.streamId"
 |  | 
 | 
											
												
													
														|  | -                       @click="stopDevicePush(scope.row)">停止
 |  | 
 | 
											
												
													
														|  | -            </el-button>
 |  | 
 | 
											
												
													
														|  | -            <el-divider direction="vertical"></el-divider>
 |  | 
 | 
											
												
													
														|  | -            <el-button size="medium" icon="el-icon-s-open" type="text" v-if="scope.row.subCount > 0 || scope.row.parental === 1"
 |  | 
 | 
											
												
													
														|  | -                       @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>
 |  | 
 | 
											
												
													
														|  | -          </template>
 |  | 
 | 
											
												
													
														|  | -        </el-table-column>
 |  | 
 | 
											
												
													
														|  | -      </el-table>
 |  | 
 | 
											
												
													
														|  | -      <el-pagination
 |  | 
 | 
											
												
													
														|  | -        style="float: right"
 |  | 
 | 
											
												
													
														|  | -        @size-change="handleSizeChange"
 |  | 
 | 
											
												
													
														|  | -        @current-change="currentChange"
 |  | 
 | 
											
												
													
														|  | -        :current-page="currentPage"
 |  | 
 | 
											
												
													
														|  | -        :page-size="count"
 |  | 
 | 
											
												
													
														|  | -        :page-sizes="[15, 25, 35, 50]"
 |  | 
 | 
											
												
													
														|  | -        layout="total, sizes, prev, pager, next"
 |  | 
 | 
											
												
													
														|  | -        :total="total">
 |  | 
 | 
											
												
													
														|  | -      </el-pagination>
 |  | 
 | 
											
												
													
														|  | -    </el-main>
 |  | 
 | 
											
												
													
														|  | -  </el-container>
 |  | 
 | 
											
												
													
														|  | 
 |  | +          <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"
 | 
											
												
													
														|  | 
 |  | +                         type="text" @click="sendDevicePush(scope.row)">播放
 | 
											
												
													
														|  | 
 |  | +              </el-button>
 | 
											
												
													
														|  | 
 |  | +              <el-button size="medium" v-bind:disabled="device == null || device.online === 0"
 | 
											
												
													
														|  | 
 |  | +                         icon="el-icon-switch-button"
 | 
											
												
													
														|  | 
 |  | +                         type="text" style="color: #f56c6c" v-if="!!scope.row.streamId"
 | 
											
												
													
														|  | 
 |  | +                         @click="stopDevicePush(scope.row)">停止
 | 
											
												
													
														|  | 
 |  | +              </el-button>
 | 
											
												
													
														|  | 
 |  | +              <el-divider direction="vertical"></el-divider>
 | 
											
												
													
														|  | 
 |  | +              <el-button
 | 
											
												
													
														|  | 
 |  | +                v-if="scope.row.edit"
 | 
											
												
													
														|  | 
 |  | +                size="medium"
 | 
											
												
													
														|  | 
 |  | +                type="text"
 | 
											
												
													
														|  | 
 |  | +                icon="el-icon-edit-outline"
 | 
											
												
													
														|  | 
 |  | +                @click="handleSave(scope.row)"
 | 
											
												
													
														|  | 
 |  | +              >
 | 
											
												
													
														|  | 
 |  | +                保存
 | 
											
												
													
														|  | 
 |  | +              </el-button>
 | 
											
												
													
														|  | 
 |  | +              <el-button
 | 
											
												
													
														|  | 
 |  | +                v-else
 | 
											
												
													
														|  | 
 |  | +                size="medium"
 | 
											
												
													
														|  | 
 |  | +                type="text"
 | 
											
												
													
														|  | 
 |  | +                icon="el-icon-edit"
 | 
											
												
													
														|  | 
 |  | +                @click="handleEdit(scope.row)"
 | 
											
												
													
														|  | 
 |  | +              >
 | 
											
												
													
														|  | 
 |  | +                编辑
 | 
											
												
													
														|  | 
 |  | +              </el-button>
 | 
											
												
													
														|  | 
 |  | +              <el-divider direction="vertical"></el-divider>
 | 
											
												
													
														|  | 
 |  | +              <el-button size="medium" icon="el-icon-s-open" type="text"
 | 
											
												
													
														|  | 
 |  | +                         v-if="scope.row.subCount > 0 || scope.row.parental === 1"
 | 
											
												
													
														|  | 
 |  | +                         @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>
 | 
											
												
													
														|  | 
 |  | +            </template>
 | 
											
												
													
														|  | 
 |  | +          </el-table-column>
 | 
											
												
													
														|  | 
 |  | +        </el-table>
 | 
											
												
													
														|  | 
 |  | +        <el-pagination
 | 
											
												
													
														|  | 
 |  | +          style="float: right"
 | 
											
												
													
														|  | 
 |  | +          @size-change="handleSizeChange"
 | 
											
												
													
														|  | 
 |  | +          @current-change="currentChange"
 | 
											
												
													
														|  | 
 |  | +          :current-page="currentPage"
 | 
											
												
													
														|  | 
 |  | +          :page-size="count"
 | 
											
												
													
														|  | 
 |  | +          :page-sizes="[15, 25, 35, 50]"
 | 
											
												
													
														|  | 
 |  | +          layout="total, sizes, prev, pager, next"
 | 
											
												
													
														|  | 
 |  | +          :total="total">
 | 
											
												
													
														|  | 
 |  | +        </el-pagination>
 | 
											
												
													
														|  | 
 |  | +      </el-main>
 | 
											
												
													
														|  | 
 |  | +    </el-container>
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -  <!--设备列表-->
 |  | 
 | 
											
												
													
														|  | 
 |  | +    <!--设备列表-->
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    </div>
 |  |    </div>
 | 
											
												
													
														|  |  </template>
 |  |  </template>
 | 
											
										
											
												
													
														|  | @@ -163,16 +221,23 @@ export default {
 | 
											
												
													
														|  |        beforeUrl: "/deviceList",
 |  |        beforeUrl: "/deviceList",
 | 
											
												
													
														|  |        isLoging: false,
 |  |        isLoging: false,
 | 
											
												
													
														|  |        showTree: false,
 |  |        showTree: false,
 | 
											
												
													
														|  | -      loadSnap: {}
 |  | 
 | 
											
												
													
														|  | 
 |  | +      loadSnap: {},
 | 
											
												
													
														|  | 
 |  | +      ptzTypes: {
 | 
											
												
													
														|  | 
 |  | +        0: "未知",
 | 
											
												
													
														|  | 
 |  | +        1: "球机",
 | 
											
												
													
														|  | 
 |  | +        2: "半球",
 | 
											
												
													
														|  | 
 |  | +        3: "固定枪机",
 | 
											
												
													
														|  | 
 |  | +        4: "遥控枪机"
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  |      };
 |  |      };
 | 
											
												
													
														|  |    },
 |  |    },
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |    mounted() {
 |  |    mounted() {
 | 
											
												
													
														|  |      if (this.deviceId) {
 |  |      if (this.deviceId) {
 | 
											
												
													
														|  | -      this.deviceService.getDevice(this.deviceId, (result)=>{
 |  | 
 | 
											
												
													
														|  | -          this.device = result;
 |  | 
 | 
											
												
													
														|  | 
 |  | +      this.deviceService.getDevice(this.deviceId, (result) => {
 | 
											
												
													
														|  | 
 |  | +        this.device = result;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -      }, (error)=>{
 |  | 
 | 
											
												
													
														|  | 
 |  | +      }, (error) => {
 | 
											
												
													
														|  |          console.log("获取设备信息失败")
 |  |          console.log("获取设备信息失败")
 | 
											
												
													
														|  |          console.error(error)
 |  |          console.error(error)
 | 
											
												
													
														|  |        })
 |  |        })
 | 
											
										
											
												
													
														|  | @@ -227,6 +292,14 @@ export default {
 | 
											
												
													
														|  |          if (res.data.code === 0) {
 |  |          if (res.data.code === 0) {
 | 
											
												
													
														|  |            that.total = res.data.data.total;
 |  |            that.total = res.data.data.total;
 | 
											
												
													
														|  |            that.deviceChannelList = res.data.data.list;
 |  |            that.deviceChannelList = res.data.data.list;
 | 
											
												
													
														|  | 
 |  | +          that.deviceChannelList.forEach(e => {
 | 
											
												
													
														|  | 
 |  | +            e.PTZType = e.PTZType + "";
 | 
											
												
													
														|  | 
 |  | +            that.$set(e, "edit", false);
 | 
											
												
													
														|  | 
 |  | +            that.$set(e, "location", "");
 | 
											
												
													
														|  | 
 |  | +            if (e.longitude && e.latitude) {
 | 
											
												
													
														|  | 
 |  | +              that.$set(e, "location", e.longitude + "," + e.latitude);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +          });
 | 
											
												
													
														|  |            // 防止出现表格错位
 |  |            // 防止出现表格错位
 | 
											
												
													
														|  |            that.$nextTick(() => {
 |  |            that.$nextTick(() => {
 | 
											
												
													
														|  |              that.$refs.channelListTable.doLayout();
 |  |              that.$refs.channelListTable.doLayout();
 | 
											
										
											
												
													
														|  | @@ -248,7 +321,7 @@ export default {
 | 
											
												
													
														|  |        this.$axios({
 |  |        this.$axios({
 | 
											
												
													
														|  |          method: 'get',
 |  |          method: 'get',
 | 
											
												
													
														|  |          url: '/api/play/start/' + deviceId + '/' + channelId,
 |  |          url: '/api/play/start/' + deviceId + '/' + channelId,
 | 
											
												
													
														|  | -        params:{
 |  | 
 | 
											
												
													
														|  | 
 |  | +        params: {
 | 
											
												
													
														|  |            isSubStream: this.isSubStream
 |  |            isSubStream: this.isSubStream
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |        }).then(function (res) {
 |  |        }).then(function (res) {
 | 
											
										
											
												
													
														|  | @@ -271,7 +344,7 @@ export default {
 | 
											
												
													
														|  |              that.initData();
 |  |              that.initData();
 | 
											
												
													
														|  |            }, 1000)
 |  |            }, 1000)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        }else{
 |  | 
 | 
											
												
													
														|  | 
 |  | +        } else {
 | 
											
												
													
														|  |            that.$message.error(res.data.msg);
 |  |            that.$message.error(res.data.msg);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |        }).catch(function (e) {
 |  |        }).catch(function (e) {
 | 
											
										
											
												
													
														|  | @@ -297,7 +370,7 @@ export default {
 | 
											
												
													
														|  |        this.$axios({
 |  |        this.$axios({
 | 
											
												
													
														|  |          method: 'get',
 |  |          method: 'get',
 | 
											
												
													
														|  |          url: '/api/play/stop/' + this.deviceId + "/" + itemData.channelId,
 |  |          url: '/api/play/stop/' + this.deviceId + "/" + itemData.channelId,
 | 
											
												
													
														|  | -        params:{
 |  | 
 | 
											
												
													
														|  | 
 |  | +        params: {
 | 
											
												
													
														|  |            isSubStream: this.isSubStream
 |  |            isSubStream: this.isSubStream
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |        }).then(function (res) {
 |  |        }).then(function (res) {
 | 
											
										
											
												
													
														|  | @@ -326,7 +399,7 @@ export default {
 | 
											
												
													
														|  |            return;
 |  |            return;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          setTimeout(() => {
 |  |          setTimeout(() => {
 | 
											
												
													
														|  | -          let url = (process.env.NODE_ENV === 'development'? "debug": "") + '/api/device/query/snap/' + deviceId + '/' + channelId
 |  | 
 | 
											
												
													
														|  | 
 |  | +          let url = (process.env.NODE_ENV === 'development' ? "debug" : "") + '/api/device/query/snap/' + deviceId + '/' + channelId
 | 
											
												
													
														|  |            this.loadSnap[deviceId + channelId]++
 |  |            this.loadSnap[deviceId + channelId]++
 | 
											
												
													
														|  |            document.getElementById(deviceId + channelId).setAttribute("src", url + '?' + new Date().getTime())
 |  |            document.getElementById(deviceId + channelId).setAttribute("src", url + '?' + new Date().getTime())
 | 
											
												
													
														|  |          }, 1000)
 |  |          }, 1000)
 | 
											
										
											
												
													
														|  | @@ -363,10 +436,18 @@ export default {
 | 
											
												
													
														|  |              online: this.online,
 |  |              online: this.online,
 | 
											
												
													
														|  |              channelType: this.channelType
 |  |              channelType: this.channelType
 | 
											
												
													
														|  |            }
 |  |            }
 | 
											
												
													
														|  | -        }).then( (res) =>{
 |  | 
 | 
											
												
													
														|  | 
 |  | +        }).then((res) => {
 | 
											
												
													
														|  |            if (res.data.code === 0) {
 |  |            if (res.data.code === 0) {
 | 
											
												
													
														|  |              this.total = res.data.data.total;
 |  |              this.total = res.data.data.total;
 | 
											
												
													
														|  |              this.deviceChannelList = res.data.data.list;
 |  |              this.deviceChannelList = res.data.data.list;
 | 
											
												
													
														|  | 
 |  | +            this.deviceChannelList.forEach(e => {
 | 
											
												
													
														|  | 
 |  | +              e.PTZType = e.PTZType + "";
 | 
											
												
													
														|  | 
 |  | +              this.$set(e, "edit", false);
 | 
											
												
													
														|  | 
 |  | +              this.$set(e, "location", "");
 | 
											
												
													
														|  | 
 |  | +              if (e.longitude && e.latitude) {
 | 
											
												
													
														|  | 
 |  | +                this.$set(e, "location", e.longitude + "," + e.latitude);
 | 
											
												
													
														|  | 
 |  | +              }
 | 
											
												
													
														|  | 
 |  | +            });
 | 
											
												
													
														|  |              // 防止出现表格错位
 |  |              // 防止出现表格错位
 | 
											
												
													
														|  |              this.$nextTick(() => {
 |  |              this.$nextTick(() => {
 | 
											
												
													
														|  |                this.$refs.channelListTable.doLayout();
 |  |                this.$refs.channelListTable.doLayout();
 | 
											
										
											
												
													
														|  | @@ -376,7 +457,7 @@ export default {
 | 
											
												
													
														|  |          }).catch(function (error) {
 |  |          }).catch(function (error) {
 | 
											
												
													
														|  |            console.log(error);
 |  |            console.log(error);
 | 
											
												
													
														|  |          });
 |  |          });
 | 
											
												
													
														|  | -      }else {
 |  | 
 | 
											
												
													
														|  | 
 |  | +      } else {
 | 
											
												
													
														|  |          this.$axios({
 |  |          this.$axios({
 | 
											
												
													
														|  |            method: 'get',
 |  |            method: 'get',
 | 
											
												
													
														|  |            url: `/api/device/query/tree/channel/${this.deviceId}`,
 |  |            url: `/api/device/query/tree/channel/${this.deviceId}`,
 | 
											
										
											
												
													
														|  | @@ -385,7 +466,7 @@ export default {
 | 
											
												
													
														|  |              page: this.currentPage,
 |  |              page: this.currentPage,
 | 
											
												
													
														|  |              count: this.count,
 |  |              count: this.count,
 | 
											
												
													
														|  |            }
 |  |            }
 | 
											
												
													
														|  | -        }).then((res)=> {
 |  | 
 | 
											
												
													
														|  | 
 |  | +        }).then((res) => {
 | 
											
												
													
														|  |            if (res.data.code === 0) {
 |  |            if (res.data.code === 0) {
 | 
											
												
													
														|  |              this.total = res.data.total;
 |  |              this.total = res.data.total;
 | 
											
												
													
														|  |              this.deviceChannelList = res.data.list;
 |  |              this.deviceChannelList = res.data.list;
 | 
											
										
											
												
													
														|  | @@ -417,14 +498,14 @@ export default {
 | 
											
												
													
														|  |      refresh: function () {
 |  |      refresh: function () {
 | 
											
												
													
														|  |        this.initData();
 |  |        this.initData();
 | 
											
												
													
														|  |      },
 |  |      },
 | 
											
												
													
														|  | -    switchTree: function (){
 |  | 
 | 
											
												
													
														|  | 
 |  | +    switchTree: function () {
 | 
											
												
													
														|  |        this.showTree = true;
 |  |        this.showTree = true;
 | 
											
												
													
														|  |        this.deviceChannelList = [];
 |  |        this.deviceChannelList = [];
 | 
											
												
													
														|  |        this.parentChannelId = 0;
 |  |        this.parentChannelId = 0;
 | 
											
												
													
														|  |        this.currentPage = 1;
 |  |        this.currentPage = 1;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      },
 |  |      },
 | 
											
												
													
														|  | -    switchList: function (){
 |  | 
 | 
											
												
													
														|  | 
 |  | +    switchList: function () {
 | 
											
												
													
														|  |        this.showTree = false;
 |  |        this.showTree = false;
 | 
											
												
													
														|  |        this.deviceChannelList = [];
 |  |        this.deviceChannelList = [];
 | 
											
												
													
														|  |        this.parentChannelId = 0;
 |  |        this.parentChannelId = 0;
 | 
											
										
											
												
													
														|  | @@ -435,12 +516,70 @@ export default {
 | 
											
												
													
														|  |        console.log(device)
 |  |        console.log(device)
 | 
											
												
													
														|  |        if (!!!data.channelId) {
 |  |        if (!!!data.channelId) {
 | 
											
												
													
														|  |          this.parentChannelId = device.deviceId;
 |  |          this.parentChannelId = device.deviceId;
 | 
											
												
													
														|  | -      }else {
 |  | 
 | 
											
												
													
														|  | 
 |  | +      } else {
 | 
											
												
													
														|  |          this.parentChannelId = data.channelId;
 |  |          this.parentChannelId = data.channelId;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |        this.initData();
 |  |        this.initData();
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    // 保存
 | 
											
												
													
														|  | 
 |  | +    handleSave(row) {
 | 
											
												
													
														|  | 
 |  | +      if (row.location) {
 | 
											
												
													
														|  | 
 |  | +        const segements = row.location.split(",");
 | 
											
												
													
														|  | 
 |  | +        if (segements.length !== 2) {
 | 
											
												
													
														|  | 
 |  | +          this.$message.warning("位置信息格式有误,例:117.234,36.378");
 | 
											
												
													
														|  | 
 |  | +          return;
 | 
											
												
													
														|  | 
 |  | +        } else {
 | 
											
												
													
														|  | 
 |  | +          row.longitude = parseFloat(segements[0]);
 | 
											
												
													
														|  | 
 |  | +          row.latitude = parseFloat(segements[1]);
 | 
											
												
													
														|  | 
 |  | +          if (!(row.longitude && row.latitude)) {
 | 
											
												
													
														|  | 
 |  | +            this.$message.warning("位置信息格式有误,例:117.234,36.378");
 | 
											
												
													
														|  | 
 |  | +            return;
 | 
											
												
													
														|  | 
 |  | +          }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +      } else {
 | 
											
												
													
														|  | 
 |  | +        delete row.longitude;
 | 
											
												
													
														|  | 
 |  | +        delete row.latitude;
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +      Object.keys(row).forEach(key => {
 | 
											
												
													
														|  | 
 |  | +        const value = row[key];
 | 
											
												
													
														|  | 
 |  | +        if (value === null || value === undefined || (typeof value === "string" && value.trim() === "")) {
 | 
											
												
													
														|  | 
 |  | +          delete row[key];
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +      });
 | 
											
												
													
														|  | 
 |  | +      this.$axios({
 | 
											
												
													
														|  | 
 |  | +        method: 'post',
 | 
											
												
													
														|  | 
 |  | +        url: `/api/device/query/channel/update/${this.deviceId}`,
 | 
											
												
													
														|  | 
 |  | +        params: row
 | 
											
												
													
														|  | 
 |  | +      }).then(response => {
 | 
											
												
													
														|  | 
 |  | +        if (response.data.code === 0) {
 | 
											
												
													
														|  | 
 |  | +          this.$message.success("修改成功!");
 | 
											
												
													
														|  | 
 |  | +          this.initData();
 | 
											
												
													
														|  | 
 |  | +        } else {
 | 
											
												
													
														|  | 
 |  | +          this.$message.error("修改失败!");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +      }).catch(_ => {
 | 
											
												
													
														|  | 
 |  | +        this.$message.error("修改失败!");
 | 
											
												
													
														|  | 
 |  | +      })
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    // 是否正在编辑
 | 
											
												
													
														|  | 
 |  | +    isEdit() {
 | 
											
												
													
														|  | 
 |  | +      let editing = false;
 | 
											
												
													
														|  | 
 |  | +      this.deviceChannelList.forEach(e => {
 | 
											
												
													
														|  | 
 |  | +        if (e.edit) {
 | 
											
												
													
														|  | 
 |  | +          editing = true;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +      });
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +      return editing;
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    // 编辑
 | 
											
												
													
														|  | 
 |  | +    handleEdit(row) {
 | 
											
												
													
														|  | 
 |  | +      if (this.isEdit()) {
 | 
											
												
													
														|  | 
 |  | +        this.$message.warning('请保存当前编辑项!');
 | 
											
												
													
														|  | 
 |  | +      } else {
 | 
											
												
													
														|  | 
 |  | +        row.edit = true;
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  };
 |  |  };
 | 
											
												
													
														|  |  </script>
 |  |  </script>
 |