2025-09-29 09:24:19 +08:00

2213 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}}-->
<div class="videoType">
<p>类型:</p>
<p
v-for="(item, index) in videoTypeList"
:key="index"
@click="beforeCut(index + 1, item)"
v-if="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>
<p class="tips">
智能广播服务商(仅可启用一种短信服务商。切换服务商时,原服务商将自动失效)
</p>
</div>
<div
class="videoList"
:class="COMPANY == 'zhongjian' ? 'zhongjianvideoList' : ''"
>
<!--视频列表-->
<div class="fullHeight">
<div class="videoGroupBox fullHeight whiteBlock">
<div class="header-title">
<p class="pageTitle">广播分组</p>
<el-button type="primary" @click="onAddClick" size="medium">
新增
</el-button>
</div>
<el-form size="medium" ref="riskListForm" :model="riskListForm">
<el-form-item class="flex-box">
<el-input
@input="getVideoTreeGroup"
suffix-icon="el-icon-search"
v-model="riskListForm.groupName"
placeholder="请输入内容"
></el-input>
</el-form-item>
</el-form>
<div class="list_content">
<vue-scroll v-if="videoTreeData.length > 0">
<el-tree
:data="videoTreeData"
node-key="id"
ref="treeNode"
label="groupName"
:expand-on-click-node="false"
:default-expand-all="true"
@node-click="checkVideo"
>
<span class="custom-tree-node" slot-scope="{ node, data }">
<span :title="data.groupName">{{ data.groupName }}</span>
<!-- 企业删除与修改 -->
<div class="flex2">
<img
src="@/assets/images/icon-edit.png"
style="margin-right: 16px"
class="icon"
@click.stop="editGroupFn(data)"
/>
<img
src="@/assets/images/icon-delete.png"
class="icon"
@click.stop="deleteGroupFn(data)"
/>
</div>
</span>
</el-tree>
</vue-scroll>
<div class="placeholderBox" v-else>
<img src="@/assets/images/noData2.png" alt="" srcset="" />
<p>{{ $t("message.videoManage.empty") }}</p>
</div>
</div>
</div>
<div class="rightVideo whiteBlock">
<div class="pageTitle">告警规则</div>
<el-form
:inline="true"
size="medium"
:model="formInline"
class="demo-form-inline"
>
<el-form-item label="设备名称">
<el-input
v-model="formInline.deviceName"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item label="设备编号">
<el-input
v-model="formInline.deviceId"
placeholder="请输入"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" plain @click="onQuery">查询</el-button>
<el-button type="warning" plain @click="onRefresh"
>刷新</el-button
>
<el-button
type="primary"
@click="addVideoBtn"
size="medium"
:disabled="!currentGroupInfo"
>
新增
</el-button>
<el-button
:disabled="selectionList.length == 0"
:type="selectionList.length == 0 ? 'info' : 'danger'"
size="medium"
class="delete_btn"
plain
@click="deleteAttendanceBatch"
>删除</el-button
>
</el-form-item>
<el-button type="primary" @click="accountServerObj(2)" size="medium"
>配置服务器
</el-button>
</el-form>
<vue-scroll style="height: calc(100% - 34px - 56px)">
<camera-list
@editDevice="edit"
@selectDevice="selectDevice"
:currentGroupInfo="currentGroupInfo"
ref="camera"
></camera-list>
</vue-scroll>
</div>
</div>
</div>
<!-- 新增的弹窗 -->
<el-dialog
:modal-append-to-body="false"
:title="nvrTitle"
:visible.sync="addDevice"
width="667px"
:close-on-click-modal="false"
@close="close"
>
<el-form
ref="addNvrForm"
: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="awaitAddNvr">确 定</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"
@close="close"
>
<el-form
ref="videoPlugin"
: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="awaitPluginSubmit">确 定</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>请选择您的智能广播服务商(以下智能广播服务商同时只可开启一种)</p>
<el-radio-group v-model="videoType" class="videoTypeGroup">
<el-radio
:label="index + 1"
v-for="(item, index) in videoTypeList"
:key="index"
v-if="item !== '乐橙'"
>{{ item }}</el-radio
>
</el-radio-group>
<p style="opacity: 0.5; font-size: 13px">
注:选择智能广播服务商,配置完成后才可使用其他功能。
</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 dialogFormBox1"
ref="addVideoDialog"
label-width="140px"
size="medium"
:model="currentVideoTypeDetail"
:rules="formRules"
>
<!-- 所属分组 -->
<!-- <el-form-item :label="$t('message.videoManage.group')" prop="groupId">
<el-select
v-model="selectFormVal"
placeholder="请选择"
clearable
@change="selectFormChange"
>
<el-option style="height: auto" :value="[]">
<el-tree
:data="videoTreeData"
node-key="id"
ref="groupFormTree"
highlight-current
:props="defaultProps"
:default-expand-all="false"
@node-click="treeFormClick"
>
</el-tree>
</el-option>
</el-select>
</el-form-item> -->
<el-form-item
:label="$t('message.videoManage.dialog_newVideo.equipment_name')"
prop="deviceName"
>
<el-input
v-model="currentVideoTypeDetail.deviceName"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<el-form-item label="设备类型" prop="deviceType">
<el-input
v-model="currentVideoTypeDetail.deviceType"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<el-form-item label="设备IP" prop="deviceIp">
<el-input
v-model="currentVideoTypeDetail.deviceIp"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<el-form-item label="设备编号" prop="deviceId">
<el-input
v-model="currentVideoTypeDetail.deviceId"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<el-form-item label="安装位置" prop="installationLocation">
<el-input
v-model="currentVideoTypeDetail.installationLocation"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<!-- <el-form-item label="是否开启低电量推送" prop="enableLowBatteryPushNotification" class="zdy-radio-group-3rows">
<el-radio-group v-model="currentVideoTypeDetail.enableLowBatteryPushNotification">
<el-radio :label="1">是</el-radio>
<el-radio label="0">否</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="推送人" prop="pushers">
<el-select v-model="currentVideoTypeDetail.pushers" :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="使用人" prop="users">
<el-select v-model="currentVideoTypeDetail.users" multiple filterable placeholder="请选择">
<el-option v-for="item in laborManagementInfoList" :key="item.id" :label="item.workerName"
:value="item.id + ''">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="SD卡容量" prop="sdCardCapacity">
<el-select v-model="currentVideoTypeDetail.sdCardCapacity" filterable placeholder="请选择">
<el-option :label="item" :value="item" v-for="(item, index) in sdCardCapacityList" :key="index">
</el-option>
</el-select>
</el-form-item> -->
<el-form-item label="上传图片">
<el-upload
:action="$store.state.UPLOADURL"
list-type="picture-card"
multiple
name="files"
:limit="1"
:file-list="fileList"
:on-success="(file) => handleSuccess(file)"
:on-remove="handleRemove"
>
<i class="el-icon-plus"></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="awaitAddVideo"
size="medium"
>{{ $t("message.videoManage.btn_determine") }}
</el-button>
</div>
</div>
</el-dialog>
<el-dialog
:modal-append-to-body="false"
title="配置服务器"
:visible.sync="Popup2.accountServer"
width="667px"
>
<div class="dialog_content">
<el-form label-width="100px" class="dialogFormBox" size="medium">
<!-- <el-form-item label="apiKey">
<el-input
v-model="policeCameraVideoInfo.apiKey"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item> -->
<el-form-item label="appId">
<el-input
v-model="policeCameraVideoInfo.appId"
:placeholder="$t('message.videoManage.placeholder')"
></el-input>
</el-form-item>
<el-form-item label="appCode">
<el-input
v-model="policeCameraVideoInfo.appCode"
placeholder="请输入"
></el-input>
</el-form-item>
</el-form>
<div class="dialog-footer">
<el-button
class="zdy-btn"
@click="Popup2.accountServer = 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="saveAccountConfig2"
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"
@close="close"
>
<div class="dialog_content">
<el-form
size="medium"
:model="addGroupForm"
ref="addGroupForm"
:rules="addGroupFormRules"
label-width="120px"
class="dialogFormBox"
>
<!-- <el-form-item label="选择父级" prop="parentId">
<el-select
v-model="selectVal"
placeholder="请选择"
clearable
@change="selectChange"
>
<el-option style="height: auto" :value="[]">
<el-tree
:data="videoTreeData"
node-key="id"
ref="groupTree"
highlight-current
:props="defaultProps"
:default-expand-all="false"
@node-click="treeClick"
>
</el-tree>
</el-option>
</el-select>
</el-form-item> -->
<!-- 分组名称 -->
<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,
getVideoTreeGroupApi,
sendVideoInfoApi,
getvideoNvrApi,
addvideoNvrApi,
editvideoNvrApi,
delvideoNvrApi,
addPluginApi,
getPluginApi,
editPluginApi,
delPluginApi,
getAllNvrApi,
} from "@/assets/js/api/equipmentCenter/cameraList";
import { getEnterpriseInfoListApi } from "@/assets/js/api/specialWork";
import { getProjectChilderSystemUserListApi } from "@/assets/js/api/configManage";
import { getSelectWorkerInfoListApi } from "@/assets/js/api/laborPerson";
import {
getUseSmartBroadcastConfigApi,
getUpdateSmartBroadcastConfigEnableApi,
editSmartBroadcastConfigApi,
getSmartBroadcastGroupListApi,
addSmartBroadcastGroupApi,
editSmartBroadcastGroupApi,
deleteSmartBroadcastGroupApi,
addSmartBroadcastDevApi,
editSmartBroadcastDevApi,
deleteBatchSmartBroadcastDevApi,
savePoliceCameraVideoConfigApi,
getPoliceCameraVideoConfigListApi,
} from "@/assets/js/api/bodyWornCamera";
import {
getProjectConfigListApi,
editProjectConfigListApi,
} from "@/assets/js/api/project.js";
import cameraList from "./cameraList";
export default {
data() {
return {
enterpriseList: [],
// 对应的字段
defaultProps: {
children: "children",
label: "groupName",
},
selectTreeData: {},
selectVal: "",
videoTreeData: [],
selectFormTreeData: {},
selectFormVal: "",
configInfoParams: {}, //储存配置信息参数,给新增和编辑使用
operation: "add", //新增或者编辑的判断
Popup: {
platforms: false,
newVideo: false,
accountConfig: false,
equipment: false,
playPattern: false,
name: "",
accountServer: false,
},
Popup2: {
accountServer: false,
},
policeCameraVideoInfo: {
apiKey: "",
appCode: "",
appId: "",
},
nvrDevice: false, //nvr弹窗
formInline: {
deviceName: "",
deviceId: "",
},
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: ["SZW"], //['萤石云', '乐橙', 'ISC', '大华', '宇视', '国标'] 智极星
playTypeList: this.$t("message.videoManage.playTypeList"), //['RTMP高清', 'RTMP流畅', 'HLS高清', 'HLS流畅', '高清轻量级插件(高清)', '流畅轻量级插件(流畅)']
videoType: 1, //默认为1吗?
currentVideoTypeDetail: {
groupId: "",
deviceName: "",
deviceType: "",
deviceIp: "",
deviceId: "",
installationLocation: "",
// appSecret: '0a5836c68a7edabcc78e6a18f05bb317'
},
isCreateNewUser: [
{ label: this.$t("message.videoManage.yes"), value: 1 }, // 是
{ label: this.$t("message.videoManage.deny"), value: 0 }, // 否
],
formRules: {
groupId: [
{
required: true,
validator: (rule, value, callback) => {
if (!this.currentVideoTypeDetail.groupId) {
callback(new Error("请输入"));
} else {
callback();
}
},
trigger: "change",
},
],
deviceName: [
{
required: true,
message: this.$t("message.videoManage.required"),
trigger: "blur",
}, // 必填
],
deviceType: [
{
required: true,
message: this.$t("message.videoManage.required"),
trigger: "blur",
}, // 必填
],
},
COMPANY: COMPANY,
accountList: [],
laborManagementInfoList: [],
organizationID: "",
groupList: [],
nvrList: [],
activeGroupIndex: 0,
currentGroupInfo: null,
isAddGroup: true,
addGroupDialog: false,
addGroupForm: {
groupName: "",
parentId: "",
},
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,
riskListForm: {
groupName: "",
},
sdCardCapacityList: [8, 16, 32, 64, 128, 256, 512],
workTicketBindCamera: 0,
fileList: [],
selectionList: [],
};
},
created() {
this.projectSn = this.$store.state.projectSn;
// this.getVideoGroup()
this.getEnterpriseList();
this.getVideoTreeGroup();
this.getAccountList();
this.getAll();
this.getProjectSetting();
},
components: { cameraList, gdMap },
methods: {
onQuery() {
this.$refs.camera.onQuery(this.formInline);
},
onRefresh() {
this.formInline.deviceName = "";
this.formInline.deviceId = "";
this.$refs.camera.onRefresh(this.formInline);
},
selectDevice(event) {
console.log(event);
this.selectionList = event;
},
deleteAttendanceBatch() {
if (this.selectionList.length === 0)
return this.$message.warning("请勾选需要删除的数据");
this.$confirm("删除后操作不可恢复请谨慎操作", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
console.log(this.selectionList);
const ids = this.selectionList.map((item) => item.id).join(",");
deleteBatchSmartBroadcastDevApi({ ids }).then((res) => {
this.selectionList = [];
this.$refs.camera.getSelectVideoItemListByTypeApi();
});
})
.catch(() => {});
},
handleSuccess(file) {
console.log("图片上传成功", file);
let data = {
name: file.data[0].imageUrl,
url: this.$store.state.FILEURL + file.data[0].imageUrl,
};
this.fileList = [data];
},
handleRemove(response, fileList) {
this.fileList = fileList;
},
//获取项目配置信息
getProjectSetting() {
getProjectConfigListApi({
projectSn: this.projectSn,
}).then((res) => {
if (!res.result || res.result.length == 0) {
this.workTicketBindCamera = 0;
} else {
let workTicketBindCamera = res.result[0].workTicketBindCamera;
this.workTicketBindCamera = workTicketBindCamera;
}
});
},
/** 查询企业列表 */
getEnterpriseList() {
const params = {
projectSn: this.projectSn,
enterpriseName: undefined,
userEnterpriseId: this.$store.state.userInfo.userEnterpriseId,
enterpriseTypeId: undefined,
};
getEnterpriseInfoListApi(params).then((res) => {
console.log("查询企业列表: ", res);
this.enterpriseList = res.result;
});
},
validateGroupId() {},
// 树形控件点击
treeFormClick(data) {
this.selectFormVal = data.groupName;
this.selectFormTreeData = data;
this.currentVideoTypeDetail.groupId = data.id;
},
// 树形控件点击
treeClick(data) {
this.selectVal = data.groupName;
delete data.parentObj;
this.selectTreeData = data;
this.addGroupForm.parentId = data.id;
},
// 选择父级组件框值修改
selectFormChange(e) {
console.log(e, 666777);
if (!e) {
this.selectFormVal = "";
this.selectFormTreeData = {};
this.currentVideoTypeDetail.groupId = "";
this.$refs.groupFormTree.setCurrentKey(null);
}
},
// 选择父级组件框值修改
selectChange(e) {
if (!e) {
this.selectVal = "";
this.selectTreeData = {};
this.addGroupForm.parentId = "";
this.$refs.groupTree.setCurrentKey(null);
}
},
// 切换视频分组
checkVideo(value) {
this.currentGroupInfo = value;
this.getVideoList();
},
//获取视频分组列表
getVideoTreeGroup() {
getSmartBroadcastGroupListApi({
projectSn: this.$store.state.projectSn,
groupName: this.riskListForm.groupName,
}).then((res) => {
console.log("获取视频分组列表", res);
this.videoTreeData = res.result;
if (this.videoTreeData.length > 0) {
this.currentGroupInfo = this.videoTreeData[0];
this.$nextTick(() => {
this.$refs.treeNode.setCurrentKey(this.currentGroupInfo.id);
this.checkVideo(this.videoTreeData[0]);
});
}
this.getProjectVideoConfigList();
});
},
//打开配置服务器弹框
accountServerObj(type) {
if (type == 1) {
this.getProjectVideoConfigList();
this.Popup.accountServer = true;
} else if (type == 2) {
const params = {
projectSn: this.projectSn,
};
getUseSmartBroadcastConfigApi(params).then((res) => {
console.log("查询企业列表: ", res);
if (res.result) {
this.policeCameraVideoInfo = res.result;
} else {
this.policeCameraVideoInfo = {
ip: "",
port: "",
appId: "",
appSecret: "",
};
}
});
this.Popup2.accountServer = true;
}
},
// 保存
awaitAddVideo() {
this.$refs.addVideoDialog.validate((valid) => {
if (valid) {
this.addVideo();
} else {
console.log("error submit!!");
return false;
}
});
},
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.selectFormVal = "";
this.selectFormTreeData = {};
this.Popup.newVideo = true;
this.getAll();
this.currentVideoTypeDetail.coverUr = "";
this.currentVideoTypeDetail.groupId = "";
this.isRouterAlive = false;
this.$nextTick(() => {
this.$refs.addVideoDialog.clearValidate();
});
},
//获取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: "已取消删除",
});
});
}
},
close() {
this.$nextTick(() => {
this.$refs.addNvrForm.clearValidate();
});
this.$nextTick(() => {
this.$refs.videoPlugin.clearValidate();
});
this.$nextTick(() => {
this.$refs.addGroupForm.clearValidate();
});
},
// 新增nvr 验证
awaitAddNvr() {
this.$refs.addNvrForm.validate((valid) => {
if (valid) {
this.addDeviceSubmit();
} else {
console.log("error submit!!");
return false;
}
});
},
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;
},
awaitPluginSubmit() {
this.$refs.videoPlugin.validate((valid) => {
if (valid) {
this.addPluginSubmit();
} else {
console.log("error submit!!");
return 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) {
console.log(item, 888999);
this.isAddGroup = false;
this.addGroupDialog = true;
this.addGroupForm = JSON.parse(JSON.stringify(item));
this.$nextTick(() => {
if (this.addGroupForm.parentObj) {
this.selectVal = JSON.parse(this.addGroupForm.parentObj).groupName;
this.$refs.groupTree.setCurrentKey(this.addGroupForm.parentId);
}
});
},
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(() => {
deleteSmartBroadcastGroupApi({ 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.getVideoTreeGroup();
this.$message.success(
this.$t("message.personnelPosition.delete_success")
); //删除成功!
});
});
},
//新增或编辑楼栋
saveGroupFn() {
this.$refs["addGroupForm"].validate((valid) => {
if (valid) {
let requestData = { ...this.addGroupForm };
requestData.parentObj = JSON.stringify(this.selectTreeData);
if (this.isAddGroup) {
requestData.projectSn = this.$store.state.projectSn;
addSmartBroadcastGroupApi(requestData).then((res) => {
this.addGroupDialog = false;
// this.getVideoGroup()
this.getVideoTreeGroup();
this.$message.success(
this.$t("message.personnelPosition.add_success")
); //添加成功!
});
} else {
editSmartBroadcastGroupApi(requestData).then((res) => {
this.addGroupDialog = false;
// this.getVideoGroup()
this.getVideoTreeGroup();
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;
if (this.groupList.length > 0) {
this.currentGroupInfo = this.groupList[0];
this.getProjectVideoConfigList();
}
}
);
},
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;
});
getSelectWorkerInfoListApi({
projectSn: this.$store.state.projectSn,
}).then((result) => {
this.laborManagementInfoList = result.result.records;
});
},
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
// }
console.log(this.currentGroupInfo, 77777777);
let id = this.currentGroupInfo.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() {
getUseSmartBroadcastConfigApi({
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,
httpType: res.result.httpType ? res.result.httpType : 1,
};
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.isEnable;
}
});
},
saveVideoConfigFn() {
getUpdateSmartBroadcastConfigEnableApi({
projectSn: this.$store.state.projectSn,
factoryType: this.videoType,
}).then((res) => {
this.configDialog = false;
this.getProjectVideoConfigList();
});
},
addVideo() {
// this.currentVideoTypeDetail.videoId = this.currentVideoTypeDetail.id;
let params = {
...this.currentVideoTypeDetail,
groupId: this.currentGroupInfo.id,
projectSn: this.projectSn,
};
if (this.fileList.length > 0) {
params.uploadImage = this.fileList[0].name;
}
console.log("传入的参数", params);
if (this.operation === "edit") {
// params.itemId = this.currentVideoTypeDetail.itemId;
// params.parentObj = JSON.stringify(this.selectFormTreeData);
console.log("编辑内容", this.currentVideoTypeDetail);
editSmartBroadcastDevApi(params).then((res) => {
console.log("编辑成功", res);
if (res.success) {
this.$message.success(res.message);
this.Popup.newVideo = false;
this.getVideoList();
}
});
} else {
params.configId = this.configInfoParams.id;
addSmartBroadcastDevApi(params).then((res) => {
console.log("新增成功", res);
if (res.success) {
this.$message.success(res.message);
this.Popup.newVideo = false;
this.getVideoList();
}
});
}
},
saveAccountConfig2() {
editSmartBroadcastConfigApi({
...this.currentVideoTypeDetail,
...this.policeCameraVideoInfo,
projectSn: this.projectSn,
}).then((res) => {
if (res.code == 200) {
this.$message.success(res.message);
console.log("新添加服务配置", res);
this.Popup2.accountServer = false;
}
});
},
saveAccountConfig() {
// console.log('saveAccountConfig', this.currentVideoTypeDetail.appId)
// this.currentVideoTypeDetail.account = 'C86695622';
// this.currentVideoTypeDetail.password = '123456';
// this.currentVideoTypeDetail.appId = '66b4fc1d6703468c8ee93b2919a3f20b';
// this.currentVideoTypeDetail.appSecret = '0a5836c68a7edabcc78e6a18f05bb317';
editSmartBroadcastConfigApi(this.currentVideoTypeDetail).then((res) => {
console.log("新添加服务配置", res);
if (res.code == 200) {
this.Popup.playPattern = false;
this.Popup.accountConfig = false;
this.Popup.accountServer = false;
this.$message.success(res.message);
}
});
// 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();
},
initData() {
this.currentVideoTypeDetail = {
// devName: "",
// enterpriseIds: [],
// alarmPushWorkerId: [],
// sortNum: "",
groupId: "",
deviceName: "",
deviceType: "",
deviceIp: "",
deviceId: "",
installationLocation: "",
};
this.fileList = [];
},
onAddClick() {
this.initData();
this.addGroupDialog = true;
this.isAddGroup = true;
this.addGroupForm.groupName = "";
this.selectVal = "";
this.selectTreeData = {};
},
edit(obj) {
console.log(obj, 777888);
this.operation = "edit";
this.selectFormVal = "";
this.selectFormTreeData = {};
this.Popup.newVideo = true;
this.currentVideoTypeDetail = JSON.parse(JSON.stringify(obj));
if (obj.uploadImage) {
this.fileList = [
{
name: obj.uploadImage,
url: this.$store.state.FILEURL + obj.uploadImage,
},
];
}
console.log("编辑内容", obj);
},
emptyInfo() {
this.operation = "add"; //关闭弹窗就默认设置为add编辑会设置edit
this.initData(); //关闭弹窗就清除数据避免影响了编辑被禁止修改的内容
// console.log('查看', this.currentVideoTypeDetail, '和', this.configInfoParams);
this.$nextTick(() => {
this.$refs.addVideoDialog.clearValidate();
});
},
},
};
</script>
<style lang="less" scoped>
.flex {
display: flex;
}
.delete_btn {
background-color: transparent;
color: #f56c6c;
border-color: #f56c6c;
}
.changeVideoTypeBox {
padding: 20px;
.tips {
margin-top: 14px;
font-weight: 800;
font-size: 12px;
color: #b2b8c2;
}
.videoType {
font-size: 16px;
> p > img {
cursor: pointer;
}
p {
display: inline-flex;
align-content: center;
margin-right: 20px;
font-size: 14px;
color: #1d1d1d;
.switch {
margin-left: 16px;
width: 33px;
height: 16px;
}
}
}
}
.platforms-title {
color: rgba(42, 46, 63, 1);
font-size: 17px;
}
.isbind {
display: flex;
margin-left: 15px;
align-items: center;
> div:first-child {
margin-right: 15px;
}
}
.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;
}
.dialogFormBox1 {
width: initial;
}
.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: 260px;
padding: 15px 15px;
height: calc(100% - 30px);
float: left;
}
.rightVideo {
width: calc(100% - 290px - 15px - 30px);
height: calc(100% - 30px);
margin-left: 15px;
float: left;
padding: 15px;
}
.el-form-item {
margin-bottom: 20px;
}
.list_content {
padding: 10px 0;
height: calc(100% - 94px - 34px);
background-color: rgba(216, 216, 216, 0.2);
position: relative;
.custom-tree-node {
display: flex;
justify-content: space-between;
align-items: center;
width: 90%;
padding-right: 10px;
box-sizing: border-box;
> span {
width: 150px;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
/deep/.el-tree-node.is-current > .el-tree-node__content {
background-color: rgba(168, 191, 230, 0.69) !important;
}
}
.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;
}
}
}
.header-title {
display: flex;
// align-items: center;
align-items: flex-start;
justify-content: space-between;
margin-bottom: 15px;
.pageTitle {
margin-bottom: 0;
}
}
.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;
}
// 下拉框样式修改
/deep/.el-select-dropdown__item.hover,
.el-select-dropdown__item.hover,
.el-select-dropdown__item:hover {
background-color: transparent;
}
</style>