2023-05-15 16:28:59 +08:00

2139 lines
64 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="fullHeight">
<div class="changeVideoTypeBox whiteBlock" v-if="COMPANY != 'zhongjian'">
<!--#{{videoType}}-->
<p class="tips">{{ $t('message.videoManage.video_type_tips') }}</p>
<div class="videoType">
<p
v-for="(item, index) in videoTypeList"
:key="index"
@click="beforeCut(index + 1, item)"
>
<span>{{ item }}</span>
<img
v-show="videoType != index + 1"
src="@/assets/images/switch.png"
class="switch"
/>
<img
v-show="videoType == index + 1"
src="@/assets/images/switch_active.png"
class="switch"
/>
</p>
</div>
</div>
<div
class="videoList"
:class="COMPANY == 'zhongjian' ? 'zhongjianvideoList' : ''"
>
<!--视频列表-->
<div class="fullHeight">
<div class="videoGroupBox fullHeight whiteBlock">
<div class="title">
<!-- 视频分组 -->
<span>{{ $t('message.videoManage.videoGrouping') }}</span>
</div>
<div class="list_content">
<vue-scroll v-if="groupList.length > 0">
<div
class="flex content_data"
:class="{ active: activeGroupIndex === '' }"
@click="changeGroupFn(null, '')"
>
<!-- 全部 -->
{{ $t('message.videoManage.whole') }}
</div>
<div
class="flex content_data"
v-for="(item, index) in groupList"
:key="index"
:class="{ active: activeGroupIndex === index }"
@click="changeGroupFn(item, index)"
>
<div
:title="item.groupName"
style="
width: 110px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"
>
{{ item.groupName }}
</div>
<div class="flex2">
<img
@click.stop="editGroupFn(item)"
src="@/assets/images/icon-edit.png"
style="margin-right: 16px"
class="icon"
/>
<img
@click.stop="deleteGroupFn(item)"
src="@/assets/images/icon-delete.png"
class="icon"
/>
</div>
</div>
</vue-scroll>
<div class="placeholderBox" v-else>
{{ $t('message.personnelPosition.mapManage.no_data') }}
</div>
</div>
<div
class="addFirm"
@click="
addGroupDialog = true
isAddGroup = true
addGroupForm.groupName = ''
"
>
<!-- 新增分组 -->
{{ $t('message.videoManage.newGrouping') }}
</div>
</div>
<div class="rightVideo whiteBlock">
<div>
<el-button type="primary" @click="addVideoBtn" size="medium"
>{{ $t('message.videoManage.dialog_newVideo.operation.add') }}
<!-- {{$t('message.videoManage.add')}}{{$t('message.videoManage.video')}} -->
</el-button>
<el-button
type="primary"
@click="Popup.accountConfig = true"
size="medium"
>{{ $t('message.videoManage.configAccount') }}
</el-button>
<el-button
v-if="videoType == 3"
type="primary"
@click="aiOperate"
size="medium"
>
<!-- AI布防 -->
{{ $t('message.videoManage.aiDeployment') }}
</el-button>
<el-button
v-if="videoType == 3"
type="primary"
@click="getOrganizationID"
size="medium"
>
<!-- 获取组织id -->
{{ $t('message.videoManage.getOrganId') }}
</el-button>
<el-button
v-if="videoType == 3"
type="primary"
@click="Popup.equipment = true"
size="medium"
>{{ $t('message.videoManage.syncDev') }}
</el-button>
<el-button
v-if="videoType == 1"
type="primary"
@click="Popup.playPattern = true"
size="medium"
>{{ $t('message.videoManage.configPlayMode') }}
</el-button>
<el-button
v-if="videoType != 7"
type="primary"
@click="uploadThirdParty"
size="medium"
>
<!-- 上传第三方平台 -->
{{ $t('message.videoManage.uploadThirdParty') }}
</el-button>
<!-- nvr设备管理-->
<el-button @click="nvrDeviceManage" type="primary" size="medium">
{{ $t('message.videoManage.nvrDeviceManage') }}
</el-button>
<!-- 设备监测插件管理-->
<el-button @click="pluginManage" type="primary" size="medium">
{{ $t('message.videoManage.pluginManage') }}
</el-button>
</div>
<vue-scroll style="height: calc(100% - 34px)">
<camera-list
v-if="videoType === 1"
@editDevice="edit"
ref="camera"
></camera-list>
<camera-list-lc
v-if="videoType === 2 || videoType === 3 || videoType === 7"
@editDevice="edit"
ref="cameralc"
></camera-list-lc>
</vue-scroll>
</div>
</div>
</div>
<!-- nvr -->
<el-dialog
:modal-append-to-body="false"
title="nvr设备管理"
:visible.sync="nvrDevice"
width="1200px"
:close-on-click-modal="false"
>
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="nvr名称">
<el-input
v-model="formInline.name"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="nvr编号">
<el-input
v-model="formInline.nvrSn"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="硬件ip">
<el-input
v-model="formInline.ip"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSearch">查询</el-button>
<el-button type="primary" @click="onAdd">新增</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="name" label="nvr名称"></el-table-column>
<el-table-column prop="nvrSn" label="nvr编号"></el-table-column>
<el-table-column prop="ip" label="硬件ip"></el-table-column>
<el-table-column prop="deviceState" label="设备状态">
<template slot-scope="scope">
{{ scope.row.deviceState == 1 ? '在线' : '离线' }}
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="editBtn(scope.row, 1)"
>编辑</el-button
>
<el-button
size="mini"
type="danger"
@click="deleteBtn(scope.row, 1)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<div class="pagerBox">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageNo"
:page-sizes="pageSizes"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
background
:total="Number(total)"
>
</el-pagination>
</div>
</el-dialog>
<!-- 新增的弹窗 -->
<el-dialog
:modal-append-to-body="false"
:title="nvrTitle"
:visible.sync="addDevice"
width="667px"
:close-on-click-modal="false"
>
<el-form
ref="addForm"
:rules="rules1"
size="medium"
label-width="140px"
label-position="right"
:model="addFormData"
>
<el-form-item label="硬件ip" prop="ip">
<el-input
clearable
type="text"
v-model="addFormData.ip"
placeholder="请输入硬件ip"
></el-input>
</el-form-item>
<el-form-item label="nvr名称" prop="name">
<el-input
clearable
type="text"
v-model="addFormData.name"
placeholder="请输入nvr名称"
></el-input>
</el-form-item>
<el-form-item label="nvr编号" prop="nvrSn">
<el-input
clearable
type="text"
v-model="addFormData.nvrSn"
placeholder="请输入nvr编号"
></el-input>
</el-form-item>
<el-form-item label="设备状态" prop="deviceState">
<el-select v-model="addFormData.deviceState" placeholder="请选择">
<el-option label="在线" :value="1"></el-option>
<el-option label="离线" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="addDevice = false">取 消</el-button>
<el-button type="primary" @click="addDeviceSubmit">确 定</el-button>
</el-form-item>
</el-form>
</el-dialog>
<!-- 插件配置 -->
<el-dialog
:modal-append-to-body="false"
title="设备监测插件管理"
:visible.sync="pluginDevice"
width="1200px"
:close-on-click-modal="false"
>
<el-form :inline="true" :model="formInline1" class="demo-form-inline">
<!-- <el-form-item label="插件名称">
<el-input v-model="formInline1.name" placeholder="请输入" clearable></el-input>
</el-form-item> -->
<el-form-item label="ip">
<el-input
v-model="formInline1.ip"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="插件sn">
<el-input
v-model="formInline1.sn"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="时间">
<el-date-picker
v-model="timeRange"
type="datetimerange"
value-format="yyyy-MM-dd hh:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSearch1">查询</el-button>
<el-button type="primary" @click="onAdd1">新增</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData1" style="width: 100%">
<el-table-column prop="name" label="插件名称"></el-table-column>
<el-table-column prop="sn" label="插件sn"></el-table-column>
<el-table-column prop="ip" label="插件所在ip"></el-table-column>
<el-table-column
prop="lastDataTime"
label="最后一次更新时间"
></el-table-column>
<el-table-column prop="deviceState" label="设备状态" align="center">
<template slot-scope="scope">
{{ scope.row.deviceState == 1 ? '在线' : '离线' }}
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="editBtn(scope.row, 2)"
>编辑</el-button
>
<el-button
size="mini"
type="danger"
@click="deleteBtn(scope.row, 2)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<div class="pagerBox">
<el-pagination
@size-change="handleSizeChange1"
@current-change="handleCurrentChange1"
:current-page="pageNo1"
:page-sizes="pageSizes"
:page-size="pageSize1"
layout="total, sizes, prev, pager, next, jumper"
background
:total="Number(total1)"
>
</el-pagination>
</div>
</el-dialog>
<!-- 新增插件配置的弹窗 -->
<el-dialog
:modal-append-to-body="false"
:title="pluginTitle"
:visible.sync="addPlugin"
width="667px"
:close-on-click-modal="false"
>
<el-form
ref="addForm"
:rules="rules2"
size="medium"
label-width="140px"
label-position="right"
:model="addPluginData"
>
<el-form-item label="插件名称" prop="name">
<el-input
clearable
type="text"
v-model="addPluginData.name"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="插件所在ip" prop="ip">
<el-input
clearable
type="text"
v-model="addPluginData.ip"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="插件sn" prop="sn">
<el-input
clearable
type="text"
v-model="addPluginData.sn"
placeholder="请输入插件编号"
></el-input>
</el-form-item>
<el-form-item label="设备状态" prop="deviceState">
<el-select v-model="addPluginData.deviceState" placeholder="请选择">
<el-option label="在线" :value="1"></el-option>
<el-option label="离线" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="addPlugin = false"> </el-button>
<el-button type="primary" @click="addPluginSubmit"> </el-button>
</el-form-item>
</el-form>
</el-dialog>
<!-- 配置视频类型 -->
<el-dialog
:modal-append-to-body="false"
:title="$t('message.videoManage.dialog_video_config.title')"
:visible.sync="configDialog"
width="667px"
:close-on-click-modal="false"
:show-close="false"
>
<div class="dialog_content">
<p>{{ $t('message.videoManage.dialog_video_config.content') }}</p>
<el-radio-group v-model="videoType" class="videoTypeGroup">
<el-radio
:label="index + 1"
v-for="(item, index) in videoTypeList"
:key="index"
>{{ item }}</el-radio
>
</el-radio-group>
<p style="opacity: 0.5; font-size: 13px">
{{ $t('message.videoManage.dialog_video_config.tips') }}
</p>
<div class="dialog-footer">
<el-button
type="primary"
icon="el-icon-circle-check"
@click="saveVideoConfigFn"
size="medium"
>{{ $t('message.companyDiagram.determine') }}
</el-button>
</div>
</div>
</el-dialog>
<!--新增设备--><!--:title="operation==='edit'?'编辑设备':'新增设备'"-->
<el-dialog
:modal-append-to-body="false"
@close="emptyInfo"
:title="$t('message.videoManage.dialog_newVideo.operation')[operation]"
:visible.sync="Popup.newVideo"
width="667px"
>
<div class="dialog_content">
<el-form
class="dialogFormBox"
label-width="100px"
size="medium"
:model="currentVideoTypeDetail"
:rules="formRules"
>
<!-- 所属分组 -->
<el-form-item :label="$t('message.videoManage.group')" prop="groupId">
<el-select
v-model="currentVideoTypeDetail.groupId"
:placeholder="$t('message.videoManage.pleaseSelect')"
:clearable="true"
>
<el-option
v-for="item in groupList"
:key="item.id"
:label="item.groupName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
:label="$t('message.videoManage.dialog_newVideo.equipment_name')"
prop="videoName"
>
<el-input
v-model="currentVideoTypeDetail.videoName"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<el-form-item
v-if="videoType == '1'"
:label="$t('message.videoManage.dialog_newVideo.serialNumber')"
>
<el-input
:disabled="operation === 'edit'"
v-model="currentVideoTypeDetail.serialNumber"
:placeholder="
$t(
'message.videoManage.dialog_newVideo.serialNumber_placeholder'
)
"
></el-input>
</el-form-item>
<el-form-item
v-if="videoType == '3' || videoType == '7'"
:label="$t('message.videoManage.dialog_newVideo.cameraCode')"
>
<el-input
:disabled="operation === 'edit'"
v-model="currentVideoTypeDetail.serialNumber"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<el-form-item
v-if="videoType != '1'"
:label="$t('message.videoManage.dialog_newVideo.verificationCode')"
>
<el-input
:disabled="operation === 'edit'"
v-model="currentVideoTypeDetail.verificationCode"
:placeholder="
$t(
'message.videoManage.dialog_newVideo.verificationCode_placeholder'
)
"
></el-input>
</el-form-item>
<!-- 萤石云设备验证码 -->
<el-form-item v-if="videoType == '1'" label="通道号">
<el-input
v-model="currentVideoTypeDetail.verificationCode"
placeholder="请输入"
></el-input>
</el-form-item>
<!-- <el-form-item v-else :label="$t('message.videoManage.dialog_newVideo.channelId')">
<el-input :disabled="operation==='edit'"
v-model="currentVideoTypeDetail.channelId"
:placeholder="$t('message.videoManage.placeholder')"></el-input>
</el-form-item> -->
<el-form-item
:label="$t('message.videoManage.dialog_newVideo.deviceType')"
class="zdy-radio-group-3rows"
>
<el-radio-group v-model="currentVideoTypeDetail.deviceType">
<el-radio
:label="index + 1"
v-for="(item, index) in deviceTypeList"
:key="index"
>{{ item }}
</el-radio>
</el-radio-group>
</el-form-item>
<!-- 是否具有AI识别功能 -->
<el-form-item
:label="$t('message.videoManage.isAiDistinguish')"
class="zdy-radio-group-3rows"
>
<el-radio-group v-model="currentVideoTypeDetail.aiFunctionType">
<el-radio
:label="item.value"
v-for="(item, index) in isCreateNewUser"
:key="index"
>{{ item.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<!-- 直播url -->
<el-form-item
:label="$t('message.videoManage.liveUrl')"
v-if="videoType == '2'"
>
<el-input
v-model="currentVideoTypeDetail.liveRadioUrl"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<!-- 报警推送人 -->
<el-form-item
:label="$t('message.videoManage.alarmPusher')"
prop="roleId"
>
<el-select
v-model="currentVideoTypeDetail.alarmPushWorkerId"
:placeholder="$t('message.videoManage.pleaseSelect')"
multiple
filterable
>
<el-option
v-for="item in accountList"
:key="item.workerId"
:label="item.workerName"
:value="item.userId + ''"
>
</el-option>
</el-select>
</el-form-item>
<!-- 排序 -->
<el-form-item :label="$t('message.videoManage.sort')">
<el-input-number
style="width: auto"
v-model="currentVideoTypeDetail.sortNum"
:placeholder="$t('message.videoManage.theSmaller')"
></el-input-number>
</el-form-item>
<!-- 设备ip -->
<el-form-item label="设备ip" prop="ip">
<el-input
v-model="currentVideoTypeDetail.ip"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<!-- 设备NVR -->
<el-form-item label="设备NVR" prop="nvrId">
<el-select
v-model="currentVideoTypeDetail.nvrId"
:placeholder="$t('message.videoManage.pleaseSelect')"
:clearable="true"
>
<el-option
v-for="item in nvrList"
:key="item.id"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<!-- <el-input
v-model="currentVideoTypeDetail.nvrId"
:placeholder="$t('message.videoManage.placeholder')">-->
</el-form-item>
<!-- 云联万物项目字段 -->
<el-form-item
v-if="COMPANY == 'yunlian'"
label="监控点编号(结构化数据)"
prop="monitoringPointCode"
>
<el-input
v-model="currentVideoTypeDetail.monitoringPointCode"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item
v-if="COMPANY == 'yunlian'"
label="监控点位置(结构化数据)"
prop="monitoringPointLocation"
>
<el-select
v-model="currentVideoTypeDetail.monitoringPointLocation"
placeholder="请选择"
:clearable="true"
>
<el-option
v-for="item in monitorinList"
:key="item.id"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<!-- 经度 -->
<el-form-item
v-if="COMPANY == 'yunlian'"
label="经度位置"
prop="longitude"
>
<el-input disabled v-model="currentVideoTypeDetail.longitude">
<template slot="append">
<el-link type="primary" @click="toGetLocalFn">
{{
$t(
'message.companyDiagram.dialog_ProjectPop_up.coordinatePicking'
)
}}
</el-link>
</template>
</el-input>
</el-form-item>
<!-- 纬度 -->
<el-form-item
v-if="COMPANY == 'yunlian'"
label="纬度位置"
prop="latitude"
>
<el-input
v-model="currentVideoTypeDetail.latitude"
disabled
></el-input>
</el-form-item>
<!-- 视频封面 -->
<el-form-item :label="$t('message.videoManage.videoCover')">
<el-upload
class="avatar-uploader"
:action="$store.state.UPLOADURL"
:show-file-list="false"
:before-upload="beforeAvatarUpload"
:on-success="handleUploadSuccess"
name="files"
>
<div v-if="isRouterAlive||currentVideoTypeDetail.coverUrl" class="imgBox">
<img :src="currentVideoTypeDetail.coverUrl" class="avatar" />
<!-- <i
class="el-icon-error redText"
@click.stop="closeImg"
></i> -->
</div>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-form>
<div class="dialog-footer">
<!--取消-->
<el-button
class="zdy-btn"
@click="Popup.newVideo = false"
size="medium"
>
<div>
<img src="../../../assets/images/cancel.png" alt="" />
<span>{{ $t('message.videoManage.btn_cancel') }}</span>
</div>
</el-button>
<!--确定-->
<el-button
type="primary"
icon="el-icon-circle-check"
@click="addVideo"
size="medium"
>{{ $t('message.videoManage.btn_determine') }}
</el-button>
</div>
</div>
</el-dialog>
<!--配置账号-->
<el-dialog
:modal-append-to-body="false"
:title="$t('message.videoManage.dialog_account_config.title')"
:visible.sync="Popup.accountConfig"
width="667px"
>
<div class="dialog_content">
<el-form label-width="100px" class="dialogFormBox" size="medium">
<el-form-item
:label="
videoType == '3'
? 'ip'
: $t('message.videoManage.dialog_account_config.account')
"
>
<el-input
v-model="currentVideoTypeDetail.account"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<el-form-item
:label="
videoType == '3'
? 'port'
: $t('message.videoManage.dialog_account_config.password')
"
>
<el-input
v-model="currentVideoTypeDetail.password"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<!-- 萤石云设备验证码 -->
<el-form-item v-if="videoType == '1'" label="AppKey">
<el-input
v-model="currentVideoTypeDetail.appId"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item
v-if="videoType != '1' && videoType != '7'"
:label="
videoType == '3'
? 'APP Key'
: $t('message.videoManage.dialog_account_config.appId')
"
>
<el-input
v-model="currentVideoTypeDetail.appId"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<el-form-item
v-if="videoType != '7'"
:label="$t('message.videoManage.dialog_account_config.appSecret')"
>
<el-input
v-model="currentVideoTypeDetail.appSecret"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<el-form-item v-if="videoType == '7'" label="ip">
<el-input
v-model="currentVideoTypeDetail.appId"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<el-form-item v-if="videoType == '7'" label="端口号">
<el-input
v-model="currentVideoTypeDetail.appSecret"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
</el-form>
<div class="dialog-footer">
<el-button
class="zdy-btn"
@click="Popup.accountConfig = false"
size="medium"
>
<div>
<img src="../../../assets/images/cancel.png" alt="" />
<span>{{ $t('message.videoManage.btn_cancel') }}</span>
</div>
</el-button>
<el-button
type="primary"
icon="el-icon-circle-check"
@click="saveAccountConfig"
size="medium"
>{{ $t('message.videoManage.btn_determine') }}
</el-button>
</div>
</div>
</el-dialog>
<!-- 同步设备 -->
<el-dialog
:modal-append-to-body="false"
:ltitle="$t('message.videoManage.syncEquipment')"
:visible.sync="Popup.equipment"
width="667px"
>
<div class="dialog_content zdy-radio-group">
<!-- <el-form label-position="right" label-width="100px">
<div style="display: flex;justify-content: center;align-items: center;">
<img src="../../../assets/images/sync_success.png" alt="">
<img src="../../../assets/images/sync_error.png" alt="">
</div>
</el-form> -->
<!-- 请输入组织ID -->
<el-input
v-model="organizationID"
:placeholder="$t('message.videoManage.organizationId')"
></el-input>
<div class="dialog-footer">
<el-button
class="zdy-btn"
@click="Popup.equipment = false"
size="medium"
>
<div>
<img src="../../../assets/images/cancel.png" alt="" />
<!-- 取消 -->
<span>{{ $t('message.videoManage.btn_cancel') }}</span>
</div>
</el-button>
<el-button
type="primary"
icon="el-icon-circle-check"
@click="pullEquipmentFn"
size="medium"
>
<!-- 拉取设备 -->
{{ $t('message.videoManage.pullingEquipment') }}
</el-button>
</div>
</div>
</el-dialog>
<!--配置播放模式-->
<el-dialog
:modal-append-to-body="false"
:title="$t('message.videoManage.dialog_play_config.title')"
:visible.sync="Popup.playPattern"
width="667px"
:close-on-click-modal="false"
:show-close="false"
>
<div class="dialog_content zdy-radio-group">
<el-form label-position="right" label-width="100px">
<el-form-item
:label="$t('message.videoManage.dialog_play_config.playTypeTitle')"
>
<el-radio-group v-model="currentVideoTypeDetail.playType">
<el-radio
:label="index + 1"
v-for="(item, index) in playTypeList"
:key="index"
>{{ item }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div class="dialog-footer">
<el-button
class="zdy-btn"
@click="Popup.playPattern = false"
size="medium"
>
<div>
<img src="../../../assets/images/cancel.png" alt="" />
<span>{{ $t('message.videoManage.btn_cancel') }}</span>
</div>
</el-button>
<el-button
type="primary"
icon="el-icon-circle-check"
@click="saveAccountConfig"
size="medium"
>{{ $t('message.videoManage.btn_determine') }}
</el-button>
</div>
</div>
</el-dialog>
<!--切换其它平台之前的提示-->
<el-dialog
:modal-append-to-body="false"
:title="$t('message.videoManage.switch_platforms.title')"
:visible.sync="Popup.platforms"
width="667px"
>
<div class="dialog_content">
<div class="platforms-title">
{{ $t('message.videoManage.switch_platforms.platformsTitle') }}"{{
Popup.name
}}"
</div>
<div class="platforms-msg">
{{ $t('message.videoManage.switch_platforms.platformsMsg') }}
</div>
<div class="dialog-footer">
<el-button
class="zdy-btn"
@click="Popup.platforms = false"
size="medium"
>
<div>
<img src="../../../assets/images/cancel.png" alt="" />
<span>{{ $t('message.videoManage.btn_cancel') }}</span>
</div>
</el-button>
<el-button
type="primary"
icon="el-icon-circle-check"
@click="cut"
size="medium"
>{{ $t('message.videoManage.btn_determine') }}
</el-button>
</div>
</div>
</el-dialog>
<!-- 添加视频分组 -->
<!-- '添加分组':'编辑分组' -->
<el-dialog
:modal-append-to-body="false"
:title="
isAddGroup
? $t('message.videoManage.addGroup')
: $t('message.videoManage.editGroup')
"
:visible.sync="addGroupDialog"
width="667px"
>
<div class="dialog_content">
<el-form
size="medium"
:model="addGroupForm"
ref="addGroupForm"
:rules="addGroupFormRules"
label-width="120px"
class="dialogFormBox"
>
<!-- 分组名称 -->
<el-form-item
:label="$t('message.videoManage.groupName')"
prop="groupName"
>
<el-input
v-model="addGroupForm.groupName"
:placeholder="$t('message.personnelPosition.please_enter')"
></el-input>
</el-form-item>
<div class="dialog-footer">
<el-button
class="cancleBtn"
@click="addGroupDialog = false"
icon="el-icon-circle-close"
size="medium"
>{{ $t('message.personnelPosition.cancel') }}
</el-button>
<el-button
type="primary"
icon="el-icon-circle-check"
@click="saveGroupFn"
size="medium"
>{{ $t('message.personnelPosition.determine') }}
</el-button>
</div>
</el-form>
</div>
</el-dialog>
<!--高德地图-->
<gd-map
v-if="showMap"
:addProjectForm="addProjectForm"
@closeMap="closeMap"
@save="getLngLat"
></gd-map>
</div>
</template>
<script>
import gdMap from '@/components/map/gd-map.vue'
import {
addVideoItemApi,
editVideoItemApi,
deleteVideoItemApi,
selectVideoItemListByTypeApi,
selectEnableVideoItemListApi,
updateVideoConfigEnableApi,
editProjectVideoConfigApi,
projectVideoConfigListApi,
setHikSubscriptionByEventApi,
getHikVideoRegionsApi,
saveHikVideoCamerasInfoListApi,
addVideoGroupApi,
deleteVideoGroupApi,
editVideoGroupApi,
getVideoGroupApi,
sendVideoInfoApi,
getvideoNvrApi,
addvideoNvrApi,
editvideoNvrApi,
delvideoNvrApi,
addPluginApi,
getPluginApi,
editPluginApi,
delPluginApi,
getAllNvrApi
} from '@/assets/js/api/equipmentCenter/cameraList'
import { getProjectChilderSystemUserListApi } from '@/assets/js/api/configManage'
import cameraList from './cameraList'
import cameraListLc from './cameraList_lc'
export default {
data() {
return {
configInfoParams: {}, //储存配置信息参数,给新增和编辑使用
operation: 'add', //新增或者编辑的判断
Popup: {
platforms: false,
newVideo: false,
accountConfig: false,
equipment: false,
playPattern: false,
name: ''
},
nvrDevice: false, //nvr弹窗
formInline: {
name: '',
nvrSn: '',
ip: ''
},
addFormData: {
ip: '',
deviceState: '', //设备在线状态
name: '',
nvrSn: ''
},
addDevice: false,
nvrTitle: '',
pluginTitle: '',
mode: 1,
pageNo: 1,
pageSizes: [5, 10, 20, 50],
pageSize: 10,
total: 0,
pageNo1: 1,
pageSize1: 10,
total1: 0,
tableData: [],
tableData1: [],
pluginDevice: false, // 插件弹窗
formInline1: {
name: '',
ip: '',
sn: ''
},
timeRange: [],
addPlugin: false,
addPluginData: {
name: '',
ip: '',
sn: '',
deviceState: ''
},
rules1: {
ip: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
}
],
deviceState: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
}
],
name: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
}
],
nvrSn: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
}
]
},
rules2: {
ip: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
}
],
deviceState: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
}
],
name: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
}
],
sn: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
}
]
},
account_Config: {},
projectVideoConfigList: [],
configDialog: false,
deviceType: '',
deviceTypeList: this.$t('message.videoManage.deviceType'), //['枪机', '球机', '热成像', '单兵', '全景', '无人机']
videoTypeList: this.$t('message.videoManage.videoTypeList'), //['萤石云', '乐橙', 'ISC', '大华', '宇视', '国标']
playTypeList: this.$t('message.videoManage.playTypeList'), //['RTMP高清', 'RTMP流畅', 'HLS高清', 'HLS流畅', '高清轻量级插件(高清)', '流畅轻量级插件(流畅)']
videoType: 1, //默认为1吗?
currentVideoTypeDetail: {
videoName: '',
alarmPushWorkerId: [],
sortNum: '',
groupId: '',
ip: '',
nvrId: '',
aiFunctionType: 0,
latitude: '', //纬度
longitude: '', //经度
coverUr:'',
// appSecret: '0a5836c68a7edabcc78e6a18f05bb317'
},
isCreateNewUser: [
{ label: this.$t('message.videoManage.yes'), value: 1 }, // 是
{ label: this.$t('message.videoManage.deny'), value: 0 } // 否
],
formRules: {
videoName: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
} // 必填
],
latitude: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
} // 必填
],
longitude: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
} // 必填
],
monitoringPointCode: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
} // 必填
],
monitoringPointLocation: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
} // 必填
]
// ip:[
// { required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' }, // 必填
// ],
// nvrId:[
// { required: true, message: this.$t('message.videoManage.required'), trigger: 'blur' }, // 必填
// ],
},
COMPANY: COMPANY,
accountList: [],
organizationID: '',
groupList: [],
nvrList: [],
activeGroupIndex: '',
currentGroupInfo: null,
isAddGroup: true,
addGroupDialog: false,
addGroupForm: {
groupName: ''
},
addGroupFormRules: {
groupName: [
{
required: true,
message: this.$t('message.videoManage.required'),
trigger: 'blur'
} // 必填
]
},
projectSn: '',
monitorinList: [
{
label: '作业面',
value: 'JKDWZ001'
},
{
label: '料场',
value: 'JKDWZ002'
},
{
label: '车辆出入口',
value: 'JKDWZ003'
},
{
label: '人员出入口',
value: 'JKDWZ004'
},
{
label: '洗轮机',
value: 'JKDWZ005'
},
{
label: '围墙',
value: 'JKDWZ006'
},
{
label: '塔吊',
value: 'JKDWZ007'
},
{
label: '其他',
value: 'JKDWZ008'
}
], //监控点位置(结构化数据)
showMap: false,
addProjectForm: {
placeCode: '',
areaCode: '',
buildingNum: '',
bulidStatus: '',
cityCode: '',
companySn: '',
constructionStage: '',
engineeringPurpose: '',
households: '',
latitude: '',
layoutImage: '',
longitude: '',
projectAcreage: '',
projectAddress: '',
projectName: '',
projectNumber: '',
projectType: '',
provincesCode: '',
saleAcreage: '',
startWorkDate: '',
structureType: '',
projectManage: '',
projectTel: '',
majorProjectType: 0,
constructionPermit: '',
streetTownshipTownCode: '',
streetTownshipTown: ''
},
COMPANY: COMPANY,
isRouterAlive: false,
}
},
created() {
this.projectSn = this.$store.state.projectSn
this.getProjectVideoConfigList()
this.getAccountList()
this.getVideoGroup()
this.getAll()
},
components: { cameraList, cameraListLc, gdMap },
methods: {
closeImg(){
this.currentVideoTypeDetail.coverUr=''
this.isRouterAlive=false
},
getLngLat(v) {
this.showMap = false
if (this.Popup.newVideo) {
this.currentVideoTypeDetail.longitude = v.lng
this.currentVideoTypeDetail.latitude = v.lat
} else {
this.addProjectForm.longitude = v.lng
this.addProjectForm.latitude = v.lat
}
},
closeMap(val) {
this.showMap = val
console.log('打印子组件', val)
},
//打开地图
toGetLocalFn() {
this.showMap = true
},
// nvr设备管理弹窗
nvrDeviceManage() {
this.nvrDevice = true
this.getvideoNvrList()
},
addVideoBtn() {
this.Popup.newVideo = true
this.getAll()
this.currentVideoTypeDetail.coverUr=''
this.isRouterAlive=false
},
//获取nvr列表
getAll() {
getAllNvrApi({ projectSn: this.projectSn }).then((res) => {
this.nvrList = res.result.map((item, index) => {
return { value: item.id, label: index }
})
})
},
getvideoNvrList() {
let data = this.formInline
data.projectSn = this.projectSn
data.size = this.pageSize
; (data.current = this.pageNo),
getvideoNvrApi(data).then((res) => {
this.tableData = res.result.records
this.total = res.result.total
})
},
handleSizeChange(val) {
this.pageSize = val
this.getvideoNvrList()
},
handleCurrentChange(val) {
this.pageNo = val
this.getvideoNvrList()
},
onSearch() {
this.getvideoNvrList()
},
onAdd() {
this.addFormData = {}
; (this.addDevice = true), (this.nvrTitle = '新增nvr设备')
this.mode = 1
},
editBtn(val, type) {
if (type == 1) {
this.addFormData = val
; (this.addDevice = true), (this.nvrTitle = '编辑nvr设备')
this.mode = 2
} else {
this.addPluginData.ip = val.ip
this.addPluginData.deviceState = val.deviceState
this.addPluginData.sn = val.sn
this.addPluginData.name = val.name
this.addPluginData.id = val.id
console.log('this.addPluginData', this.addPluginData)
this.addPlugin = true
this.pluginTitle = '编辑监控插件'
this.mode = 4
}
},
deleteBtn(val, type) {
if (type == 1) {
this.$confirm(
'删除当前nvr设备,相关联的摄像头也将被删除,确认删除吗?, 是否继续?',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}
)
.then(() => {
delvideoNvrApi({ id: val.id }).then((res) => {
if (res.code == 200) {
this.$message({
type: 'success',
message: '删除成功!'
})
this.getvideoNvrList()
}
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
} else {
this.$confirm(
'删除当前插件会导致对应编号工地推送数据异常,确认删除吗?, 是否继续?',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}
)
.then(() => {
delPluginApi({ id: val.id }).then((res) => {
if (res.code == 200) {
this.$message({
type: 'success',
message: '删除成功!'
})
this.getPluginList()
}
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
}
},
addDeviceSubmit() {
let data = this.addFormData
data.projectSn = this.projectSn
if (this.mode == 1) {
addvideoNvrApi(data).then((res) => {
if (res.code == 200) {
this.$message.success('新增成功!')
this.getvideoNvrList()
this.addDevice = false
}
})
} else if (this.mode == 2) {
editvideoNvrApi(data).then((res) => {
if (res.code == 200) {
this.$message.success('编辑成功!')
this.getvideoNvrList()
this.addDevice = false
}
})
}
},
// 插件
pluginManage() {
this.pluginDevice = true
this.getPluginList()
},
getPluginList() {
let data = this.formInline1
data.projectSn = this.projectSn
data.size = this.pageSize1
; (data.current = this.pageNo1),
(data.startLastDataTime =
this.timeRange != null ? this.timeRange[0] : ''),
(data.endLastDataTime =
this.timeRange != null ? this.timeRange[1] : ''),
getPluginApi(data).then((res) => {
console.log('查询结果', res)
if (res.code == 200) {
this.tableData1 = res.result.records
this.total1 = res.result.total
}
})
},
onSearch1() {
this.getPluginList()
},
handleSizeChange1(val) {
this.pageSize1 = val
this.getPluginList()
},
handleCurrentChange1(val) {
this.pageNo1 = val
this.getPluginList()
},
onAdd1() {
this.addPluginData = {}
this.addPlugin = true
this.pluginTitle = '新增监控插件'
this.mode = 3
this.currentVideoTypeDetail.coverUr=''
this.isRouterAlive=false
},
addPluginSubmit() {
let data = this.addPluginData
data.projectSn = this.projectSn
if (this.mode == 3) {
addPluginApi(data).then((res) => {
if (res.code == 200) {
this.$message.success('新增成功!')
}
this.addPlugin = false
this.getPluginList()
})
} else if (this.mode == 4) {
console.log('编辑参数', data)
editPluginApi(data).then((res) => {
if (res.code == 200) {
console.log('编辑的结果', res)
this.$message.success('编辑成功!')
this.getPluginList()
this.addPlugin = false
}
})
}
},
uploadThirdParty() {
sendVideoInfoApi({ projectSn: this.projectSn }).then((res) => {
// console.log(res)
if (res.code == 200) {
this.$message.success(this.$t('message.videoManage.uploadSuccess')) // 上传成功!
}
})
},
editGroupFn(item) {
this.isAddGroup = false
this.addGroupDialog = true
this.addGroupForm = JSON.parse(JSON.stringify(item))
},
deleteGroupFn(item) {
// 确定删除分组
this.$confirm(
this.$t('message.videoManage.determineDelGroup') +
'【' +
item.groupName +
'】?',
this.$t('message.personnelPosition.mapManage.Tips'),
{
//确定删除楼栋
confirmButtonText: this.$t(
'message.personnelPosition.confirmButtonText'
),
cancelButtonText: this.$t(
'message.personnelPosition.cancelButtonText'
),
type: 'warning'
}
).then(() => {
deleteVideoGroupApi({ id: item.id }).then((res) => {
let a = parseInt(this.activeGroupIndex)
if (a == this.groupList.length - 1) {
a--
this.activeGroupIndex = a
this.getVideoList()
}
if (this.activeGroupIndex === -1) {
this.activeGroupIndex = ''
}
this.getVideoGroup()
this.$message.success(
this.$t('message.personnelPosition.delete_success')
) //删除成功!
})
})
},
//新增或编辑楼栋
saveGroupFn() {
this.$refs['addGroupForm'].validate((valid) => {
if (valid) {
if (this.isAddGroup) {
this.addGroupForm.projectSn = this.$store.state.projectSn
addVideoGroupApi(this.addGroupForm).then((res) => {
this.addGroupDialog = false
this.getVideoGroup()
this.$message.success(
this.$t('message.personnelPosition.add_success')
) //添加成功!
})
} else {
editVideoGroupApi(this.addGroupForm).then((res) => {
this.addGroupDialog = false
this.getVideoGroup()
this.$message.success(
this.$t('message.personnelPosition.edit_success')
) //编辑成功!
})
}
} else {
console.log('error submit!!')
return false
}
})
},
//切换分组
changeGroupFn(item, index) {
this.activeGroupIndex = index
this.currentGroupInfo = item
this.getVideoList()
},
//获取视频分组列表
getVideoGroup() {
getVideoGroupApi({ projectSn: this.$store.state.projectSn }).then(
(res) => {
console.log('获取视频分组列表', res)
this.groupList = res.result
}
)
},
getOrganizationID() {
getHikVideoRegionsApi({ projectSn: this.$store.state.projectSn }).then(
(result) => {
var dw
dw = window.open()
dw.document.open()
// 一个新的窗口
dw.document.write(
'<html><head><title>' +
this.$t('message.videoManage.aNewWindow') +
'</title>'
)
dw.document.write('<body>')
// dw.document.write("<img name='i1' src='Temp.jpg'> <br>")
dw.document.write(result.result + '<br>')
dw.document.write('</body></html>')
dw.document.close()
}
)
},
pullEquipmentFn() {
saveHikVideoCamerasInfoListApi({
projectSn: this.$store.state.projectSn,
regionIndexCode: this.organizationID
}).then((result) => {
this.$message.success(this.$t('message.videoManage.success1')) // 拉取设备成功!
this.Popup.equipment = false
this.$refs.cameralc.getSelectVideoItemListByTypeApi()
})
},
getAccountList() {
getProjectChilderSystemUserListApi({
projectSn: this.$store.state.projectSn
}).then((result) => {
this.accountList = result.result
})
},
aiOperate() {
setHikSubscriptionByEventApi({
projectSn: this.$store.state.projectSn
}).then((res) => {
this.$message.success(this.$t('message.videoManage.success2')) // AI布防成功
})
},
beforeAvatarUpload(file) {
if (
file.type != 'image/jpeg' &&
file.type != 'image/png' &&
file.type != 'image/jpg' &&
file.type != 'image/bmp'
) {
this.$message.error(this.$t('message.companyDiagram.uploadMsg')) //只能上传图片
return false
} else {
return true
}
},
handleUploadSuccess(res) {
this.isRouterAlive = false;
this.$nextTick(() => {
this.currentVideoTypeDetail.coverUrl =
this.$store.state.FILEURL + res.data[0].imageUrl
this.isRouterAlive = true;
})
},
//获取视频列表
getVideoList() {
let id = ''
if (this.activeGroupIndex !== '') {
id = this.groupList[parseInt(this.activeGroupIndex)].id
}
this.$nextTick(() => {
if (this.videoType === 1) {
//萤石云
this.$refs.camera.getSelectVideoItemListByTypeApi(id)
}
if (
this.videoType === 2 ||
this.videoType === 3 ||
this.videoType === 7
) {
//乐橙云、isc
this.$refs.cameralc.getSelectVideoItemListByTypeApi(id)
}
})
},
//查询项目各类型的视频配置信息
getProjectVideoConfigList() {
projectVideoConfigListApi({
projectSn: this.$store.state.projectSn
}).then((res) => {
// this.projectVideoConfigList = res.result;
//
if (!res.result) {
if (COMPANY == 'zhongjian') {
this.videoType = 3
this.saveVideoConfigFn()
} else {
this.configDialog = true
}
} else {
// this.currentVideoTypeDetail = res.result[0];
this.currentVideoTypeDetail = res.result
console.log('配置信息', this.currentVideoTypeDetail)
localStorage.setItem(
'configInfo',
JSON.stringify(this.currentVideoTypeDetail)
)
this.configInfoParams = res.result
// this.videoType = res.result[0].videoType;
this.videoType = res.result.videoType
// console.log('查询项目各类型的视频配置信息', res.result)
this.$nextTick(() => {
if (this.videoType === 1) {
//萤石云
this.$refs.camera.setVideoInfo(res.result)
}
if (
this.videoType === 2 ||
this.videoType === 3 ||
this.videoType === 7
) {
//乐橙云、isc 、xiongmai
this.$refs.cameralc.setVideoInfo(res.result)
}
})
}
})
},
saveVideoConfigFn() {
updateVideoConfigEnableApi({
projectSn: this.$store.state.projectSn,
videoType: this.videoType
}).then((res) => {
this.configDialog = false
this.getProjectVideoConfigList()
})
},
addVideo() {
// this.currentVideoTypeDetail.videoId = this.currentVideoTypeDetail.id;
let params = {
videoName: this.currentVideoTypeDetail.videoName,
serialNumber: this.currentVideoTypeDetail.serialNumber,
verificationCode: this.currentVideoTypeDetail.verificationCode,
deviceType: this.currentVideoTypeDetail.deviceType,
channelId: this.currentVideoTypeDetail.channelId,
videoId: this.configInfoParams.id,
appSecret: this.configInfoParams.appSecret,
liveRadioUrl: this.currentVideoTypeDetail.liveRadioUrl,
coverUrl: this.currentVideoTypeDetail.coverUrl,
groupId: this.currentVideoTypeDetail.groupId,
sortNum: this.currentVideoTypeDetail.sortNum,
aiFunctionType: this.currentVideoTypeDetail.aiFunctionType,
ip: this.currentVideoTypeDetail.ip,
nvrId: this.currentVideoTypeDetail.nvrId,
monitoringPointCode: this.currentVideoTypeDetail.monitoringPointCode,
monitoringPointLocation:
this.currentVideoTypeDetail.monitoringPointLocation,
latitude: this.currentVideoTypeDetail.latitude,
longitude: this.currentVideoTypeDetail.longitude
}
console.log('传入的参数', params)
console.log(this.currentVideoTypeDetail.aiFunctionType)
if (
this.currentVideoTypeDetail.alarmPushWorkerId &&
this.currentVideoTypeDetail.alarmPushWorkerId.length > 0
) {
params.alarmPushWorkerId =
this.currentVideoTypeDetail.alarmPushWorkerId.join(',')
}
if (this.operation === 'edit') {
//编辑
params.projectSn = this.configInfoParams.projectSn
params.itemId = this.currentVideoTypeDetail.itemId
console.log('编辑内容', this.currentVideoTypeDetail)
editVideoItemApi(params).then((res) => {
console.log('编辑成功', res)
if (res.success) {
this.$message.success(res.message)
this.Popup.newVideo = false
this.getVideoList()
}
})
} else {
//新增
addVideoItemApi(params).then((res) => {
console.log('新增成功', res)
if (res.success) {
this.$message.success(res.message)
this.Popup.newVideo = false
this.getVideoList()
}
})
}
},
saveAccountConfig() {
// console.log('saveAccountConfig', this.currentVideoTypeDetail.appId)
// this.currentVideoTypeDetail.account = 'C86695622';
// this.currentVideoTypeDetail.password = '123456';
// this.currentVideoTypeDetail.appId = '66b4fc1d6703468c8ee93b2919a3f20b';
// this.currentVideoTypeDetail.appSecret = '0a5836c68a7edabcc78e6a18f05bb317';
editProjectVideoConfigApi(this.currentVideoTypeDetail).then((res) => {
console.log('新添加服务配置', res)
this.Popup.playPattern = false
this.Popup.accountConfig = false
})
// console.log('this.currentVideoTypeDetail', this.currentVideoTypeDetail)
},
beforeCut(index, item) {
if (index !== this.videoType) {
this.Popup.platforms = true
this.Popup.name = item
this.Popup.videoType = index
}
},
cut() {
this.videoType = this.Popup.videoType
this.Popup.platforms = false
console.log('当前videoType', this.videoType)
this.saveVideoConfigFn()
},
edit(obj) {
this.operation = 'edit'
this.Popup.newVideo = true
this.currentVideoTypeDetail = JSON.parse(JSON.stringify(obj))
if (this.currentVideoTypeDetail.alarmPushWorkerId) {
if (this.currentVideoTypeDetail.alarmPushWorkerId.indexOf(',') != -1) {
this.currentVideoTypeDetail.alarmPushWorkerId =
this.currentVideoTypeDetail.alarmPushWorkerId.split(',')
} else {
this.currentVideoTypeDetail.alarmPushWorkerId = [
this.currentVideoTypeDetail.alarmPushWorkerId
]
}
} else {
this.currentVideoTypeDetail.alarmPushWorkerId = []
}
console.log('编辑内容', obj)
},
emptyInfo() {
this.operation = 'add' //关闭弹窗就默认设置为add编辑会设置edit
this.currentVideoTypeDetail = {} //关闭弹窗就清除数据避免影响了编辑被禁止修改的内容
// console.log('查看', this.currentVideoTypeDetail, '和', this.configInfoParams);
}
}
}
</script>
<style lang="less" scoped>
.flex {
display: flex;
}
.changeVideoTypeBox {
padding: 17px 30px 21px;
.videoType {
margin-top: 14px;
font-size: 15px;
> p > img {
cursor: pointer;
}
p {
display: inline-flex;
align-content: center;
margin-right: 68px;
.switch {
margin-left: 16px;
}
}
}
}
.platforms-title {
color: rgba(42, 46, 63, 1);
font-size: 17px;
}
.platforms-msg {
color: rgba(230, 69, 69, 1);
font-size: 14px;
margin-top: 16px;
}
.videoList {
// padding: 22px 25px;
margin-top: 14px;
height: calc(100% - 14px - 97px);
position: relative;
}
.zhongjianvideoList {
height: calc(100% - 14px);
}
.zdy-radio-group {
/deep/ .el-form-item__label {
line-height: normal;
}
/deep/ .el-radio-group {
.flex;
flex-wrap: wrap;
> label {
width: 50%;
margin: 0 0 15px 0;
}
}
}
.zdy-radio-group-3rows {
.zdy-radio-group;
/deep/ .el-radio-group > label {
width: 30%;
}
}
.zdy-btn {
div {
display: flex;
align-items: center;
img {
width: 14px;
height: 14px;
margin-right: 6px;
}
}
}
.videoTypeGroup {
margin: 30px 0;
}
.avatar-uploader {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
// overflow: hidden;
height: 178px;
width: 178px;
margin-left: 10px;
}
.avatar-uploader:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
.imgBox {
position: relative;
.el-icon-error {
font-size: 20px;
position: absolute;
right: -13px;
top: -8px;
cursor: pointer;
}
}
.videoGroupBox {
width: 212px;
float: left;
}
.rightVideo {
width: calc(100% - 212px - 15px - 30px);
height: calc(100% - 30px);
margin-left: 15px;
float: left;
padding: 15px;
}
.list_content {
padding: 10px 0;
height: calc(100% - 87px - 20px);
position: relative;
}
.content_data {
padding: 0 20px;
box-sizing: border-box;
height: 43px;
line-height: 43px;
cursor: pointer;
position: relative;
&.active {
background-color: rgba(81, 129, 246, 0.1);
&::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 4px;
height: 100%;
background-color: @--color-primary;
border-radius: 2px;
}
}
}
.addFirm {
height: 45px;
line-height: 45px;
color: @--color-primary;
font-size: 15px;
text-align: center;
background: #fff;
border-top: 1px solid #dce6fd;
font-family: PingFangSC-Regular;
cursor: pointer;
}
.title {
border-bottom: 1px solid rgba(220, 230, 253, 1);
color: @--color-primary;
padding-left: 24px;
font-size: 14px;
span {
position: relative;
padding: 16px 0 5px;
display: inline-block;
&::before {
content: '';
position: absolute;
bottom: -1px;
left: 0;
width: 100%;
height: 2px;
background-color: @--color-primary;
z-index: 2;
}
}
}
.flex {
display: flex;
align-items: center;
justify-content: space-between;
}
.flex2 {
display: flex;
align-items: center;
}
::v-deep .el-form-item__label {
width: 110px !important;
text-align: center !important;
}
::v-deep .el-input-number .el-input-number--medium {
margin-left: -10px !important;
}
</style>