zhangzengfei
2022-08-05 649a012bd1f445afd51e3aad8e137d43c36434e0
检索导出添加组织字段
3个文件已修改
574 ■■■■■ 已修改文件
src/Pool/TreeData.ts 114 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hashrate/CameraManage/CameraInfo/index.vue 438 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/search/Searching.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Pool/TreeData.ts
@@ -9,9 +9,9 @@
  refreshGB28181Tree,
  updateCameraArea,
  getCameraBaseImage
} from '@/api/area'
} from "@/api/area"
import {getClusterDevList} from '@/api/clusterManage'
import { getClusterDevList } from "@/api/clusterManage"
export default class TreeDataPool {
  public openeds: Array<boolean>
@@ -32,7 +32,7 @@
  public readonly: boolean
  public gbReadonly: boolean
  public multiple: boolean
  public searchFrom: string = ''
  public searchFrom: string = ""
  public showTreeBox: boolean
  public selectedNodes: Array<string>
  public selectedNode: any
@@ -70,6 +70,8 @@
  public clusterId: string
  public devId: string
  // 记录摄像机所属的父节点名称
  public cameraParents: object
  constructor() {
    this.openeds = [true, true, false]
@@ -80,11 +82,11 @@
    this.treeDataPure = []
    this.gb28181DataPure = []
    this.clusterDataPure = []
    this.videoArr = ['']
    this.videoArr = [""]
    this.searchCamType = 0
    this.searchInput = ''
    this.activeVideoIndex = ''
    this.activeVideoId = ''
    this.searchInput = ""
    this.activeVideoIndex = ""
    this.activeVideoId = ""
    this.activeForceChoose = false
    this.showTreeBox = true
    this.readonly = true
@@ -92,15 +94,15 @@
    this.multiple = false
    this.selectedNodes = []
    this.selectedNode = {}
    this.treeType = ''
    this.treeType = ""
    this.foldNodeList = {}
    this.treeActiveName = 'camera'
    this.treeActiveName = "camera"
    this.searchLocalType = 0
    //1:暂停状态;2:等待状态;3:置灰
    this.btnStaus = '3'
    this.ctrlCameraId = ''
    this.ctrlCameraName = ''
    this.btnStaus = "3"
    this.ctrlCameraId = ""
    this.ctrlCameraName = ""
    this.zTree = false
    this.checkedTreeNode = []
    this.gb28181CheckedCount = 0
@@ -109,13 +111,11 @@
    this.cameraNameForBaseImage = ""
    this.gb28181CameraBaseImage = ""
    this.baseImageLoading = false
    this.activeNode = ''
    this.clusterId = ''
    this.devId = ''
    this.activeNode = ""
    this.clusterId = ""
    this.devId = ""
    this.cameraParents = {}
  }
  setVideoArr(index: number, value: object, vue: any): void {
    vue.$set(this.videoArr, index, value)
@@ -130,9 +130,9 @@
    }
    let _selected = this.selectedNodes
    function nodeFilter(node: any) {
      if (node.type === '4' && node.selected) {
      if (node.type === "4" && node.selected) {
        _selected.push(node.id)
        sessionStorage.setItem('cameraDevId',node.devId)
        sessionStorage.setItem("cameraDevId", node.devId)
      }
      if (node.children) {
        node.children.forEach((n: any) => {
@@ -142,11 +142,11 @@
    }
    if (this.selectedNode.cameraType === 0) {
      //摄像机树
      if (this.treeActiveName == 'camera') {
      if (this.treeActiveName == "camera") {
        this.treeData.forEach((n: any) => {
          nodeFilter(n)
        })
      } else if (this.treeActiveName == 'cluster') {
      } else if (this.treeActiveName == "cluster") {
        //集群树
        this.clusterData.forEach((n: any) => {
          nodeFilter(n)
@@ -174,8 +174,8 @@
    }
    function nodeFilter(node: any) {
      if (node.type === '4' && (node.selected || node.checked)) {
      sessionStorage.setItem("cameraDevId", node.devId);
      if (node.type === "4" && (node.selected || node.checked)) {
        sessionStorage.setItem("cameraDevId", node.devId)
        _this.selectedNodes.push(node.id)
      }
      if (node.children) {
@@ -247,7 +247,7 @@
  }
  getParent(id: string, isGB: boolean): string {
    let parent = '0'
    let parent = "0"
    function nodeFilter(node: Array<any>): any {
      for (let i = 0; i < node.length; i++) {
@@ -283,10 +283,10 @@
  }
  cleanTree(tree) {
    if (tree === 'localTree') {
    if (tree === "localTree") {
      this.treeData = JSON.parse(JSON.stringify(this.treeDataPure))
    }
    if (tree === 'gb28182Tree') {
    if (tree === "gb28182Tree") {
      this.gb28181Data = JSON.parse(JSON.stringify(this.gb28181DataPure))
    }
  }
@@ -295,7 +295,7 @@
    if (!node) {
      return
    }
    node.forEach(n => {
    node.forEach((n) => {
      // vue-js-tree 默认展开,控制部分折叠. z-tree 默认折叠, 控制部分展开
      if (this.foldNodeList[n.id]) {
        if (this.zTree) {
@@ -314,22 +314,22 @@
    if (!node) {
      return
    }
    node.forEach(n => {
    node.forEach((n) => {
      if (n.children && n.children.length > 0) {
        this.setDropDisable(n.children)
      } else {
        if (n.type === '4') {
        if (n.type === "4") {
          n.dropDisabled = true
        }
      }
    })
  }
  sortTreeData(node) {
  sortTreeData(node, parentName = "") {
    if (!node) {
      return
    }
    node.sort(function (obj1: any, obj2: any) {
    node.sort(function(obj1: any, obj2: any) {
      var val1 = obj1.name
      var val2 = obj2.name
      if (val1 < val2) {
@@ -341,36 +341,41 @@
      }
    })
    node.forEach(n => {
    node.forEach((n) => {
      if (n.children && n.children.length > 0) {
        if (this.zTree) {
          n.open = true
        }
        this.sortTreeData(n.children)
        let pname = parentName === "" ? n.name : parentName + "/" + n.name
        // console.log("pname", pname)
        this.sortTreeData(n.children, pname)
      } else {
        if (n.type != "MENU") {
          this.cameraParents[n.id] = parentName
        }
      }
    })
  }
  async fetchLocalTree() {
    let params: any = {
      parentId:"",
      parentId: "",
      searchType: this.searchCamType,
      cameraName: this.searchInput,
      cameraName: this.searchInput
      //isPlatform: 1
    }
    if (this.searchFrom == 'cluster') {
    if (this.searchFrom == "cluster") {
      params.isPlatform = 1
    }
    const rsp: any = await getLocalCameraTree(params)
    if (rsp && rsp.success) {
      this.treeData = rsp.data.treeMenu ? rsp.data.treeMenu : []
      if (this.treeData && this.treeData.length > 0) {
        this.sortTreeData(this.treeData)
        // console.log("cameraParents", this.cameraParents)
      }
      // 设置禁止拖拽摄像机到摄像机节点
@@ -414,6 +419,7 @@
  }
  async fetchTreeData() {
    this.cameraParents = {}
    if (this.openeds[0]) {
      this.fetchLocalTree()
    }
@@ -425,7 +431,7 @@
  async add(name: string, parent: string) {
    await addAreaTreeData({
      name: name,
      parentId: parent,
      parentId: parent
    })
    this.fetchTreeData()
@@ -433,7 +439,7 @@
  async del(id: string) {
    await delAreaTreeData({
      id: id,
      id: id
    })
    this.fetchTreeData()
@@ -444,7 +450,7 @@
      id: id,
      name: name,
      parentId: this.getParent(id, isGb),
      alias: alias,
      alias: alias
    })
    this.fetchTreeData()
@@ -461,20 +467,20 @@
  getAllChildrenNodes(treeNode, arr) {
    for (var i = 0; i < treeNode.length; i++) {
      var sonList = treeNode[i].children;
      var sonList = treeNode[i].children
      if (!sonList) {
        if (treeNode[i].type == "camera") {
          arr.push(treeNode[i]);
          arr.push(treeNode[i])
          if (treeNode[i].checked) {
            this.gb28181CheckedCount += 1;
            this.gb28181CheckedCount += 1
          }
        }
      } else {
        this.getAllChildrenNodes(sonList, arr);
        this.getAllChildrenNodes(sonList, arr)
      }
    }
    return arr;
    return arr
  }
  countChildrenNodes(treeNode) {
    let arry = []
@@ -490,8 +496,8 @@
      fn = refreshGB28181Tree
    }
    const rsp: any = await fn({
      clusterId:this.clusterId,
      devId:this.devId,
      clusterId: this.clusterId,
      devId: this.devId
    })
    if (rsp && rsp.success) {
@@ -512,7 +518,7 @@
  }
  removeNoCheckedNode(nodes: Array<any>) {
    for (let i = 0; i < nodes.length;) {
    for (let i = 0; i < nodes.length; ) {
      if (!nodes[i].checked) {
        nodes.splice(i, 1)
        continue
@@ -527,7 +533,7 @@
  countCheckedNodes(nodes: Array<any>) {
    let count = 0
    nodes.forEach(n => {
    nodes.forEach((n) => {
      if (n.type == "camera") {
        count++
      }
@@ -548,10 +554,10 @@
    this.cameraNameForBaseImage = node.name
    try {
      const rsp: any = await getCameraBaseImage({
      const rsp: any = await getCameraBaseImage({
        id: node.id,
        clusterId: this.clusterId,
        devId: this.devId,
        devId: this.devId
      })
      if (rsp && rsp.data) {
src/views/hashrate/CameraManage/CameraInfo/index.vue
@@ -3,30 +3,14 @@
    <div class="cameraHeader">
      <div class="title">摄像机信息</div>
      <el-form
        class="addForm"
        ref="addForm"
        :model="form"
        :rules="rules"
        label-width="88px"
        label-position="left"
      >
      <el-form class="addForm" ref="addForm" :model="form" :rules="rules" label-width="88px" label-position="left">
        <div class="row">
          <el-form-item label="RTSP地址" prop="rtsp">
            <el-input
              v-model="form.rtsp"
              placeholder="rtsp://"
              :disabled="isDisabled"
              size="small"
            ></el-input>
            <el-input v-model="form.rtsp" placeholder="rtsp://" :disabled="isDisabled" size="small"></el-input>
          </el-form-item>
          <el-form-item label="处理分辨率">
            <el-select
              v-model="form.resolution"
              placeholder="本机分辨率"
              size="small"
            >
            <el-select v-model="form.resolution" placeholder="本机分辨率" size="small">
              <el-option
                v-for="item in resolutionList"
                :key="item.value"
@@ -39,39 +23,19 @@
        <div class="row">
          <el-form-item label="设备名称" prop="name">
            <el-input
              v-model="form.name"
              placeholder="请输入设备名称"
              :disabled="isDisabled"
              size="small"
            ></el-input>
            <el-input v-model="form.name" placeholder="请输入设备名称" :disabled="isDisabled" size="small"></el-input>
          </el-form-item>
          <el-form-item label="坐标" class="position">
            <label slot="label">坐标</label>
            <el-input
              v-model="form.latitude"
              placeholder="经度"
              :disabled="isDisabled"
              size="small"
            ></el-input>
            <el-input
              v-model="form.longitude"
              placeholder="纬度"
              :disabled="isDisabled"
              size="small"
            ></el-input>
            <el-input v-model="form.latitude" placeholder="经度" :disabled="isDisabled" size="small"></el-input>
            <el-input v-model="form.longitude" placeholder="纬度" :disabled="isDisabled" size="small"></el-input>
          </el-form-item>
        </div>
        <div class="row">
          <el-form-item label="设备地址" prop="addr">
            <el-input
              v-model="form.addr"
              placeholder="请输入地址描述"
              :disabled="isDisabled"
              size="small"
            ></el-input>
            <el-input v-model="form.addr" placeholder="请输入地址描述" :disabled="isDisabled" size="small"></el-input>
          </el-form-item>
          <el-form-item label="事件声音">
@@ -83,11 +47,7 @@
        <div class="row">
          <el-form-item label="设备别名" prop="alias" v-show="isGb28182">
            <el-input
              v-model="form.alias"
              placeholder="请输入设备别名"
              size="small"
            ></el-input>
            <el-input v-model="form.alias" placeholder="请输入设备别名" size="small"></el-input>
          </el-form-item>
        </div>
@@ -110,11 +70,7 @@
        </div> -->
        <!-- 添加传感器 -->
        <CameraInfoEditor
          ref="cameraEditor"
          :Carmeras="form"
          :sensors="sensors"
        ></CameraInfoEditor>
        <CameraInfoEditor ref="cameraEditor" :Carmeras="form" :sensors="sensors"></CameraInfoEditor>
        <div class="btns">
          <el-button
@@ -126,12 +82,7 @@
            class="delBtn"
            >删除摄像机</el-button
          >
          <el-button
            size="small"
            type="primary"
            @click="onSubmit('addForm')"
            :disabled="conDisabled"
            class="saveBtn"
          <el-button size="small" type="primary" @click="onSubmit('addForm')" :disabled="conDisabled" class="saveBtn"
            >保存</el-button
          >
        </div>
@@ -179,21 +130,12 @@
          </div>
        </div>
        <sysinfo
          :stroke="24"
          v-if="PollData.barCharts && PollData.barCharts.length !== 0"
        />
        <sysinfo :stroke="24" v-if="PollData.barCharts && PollData.barCharts.length !== 0" />
      </div>
      <div class="camera">
        <div class="connect">
          <el-button
            size="small"
            type="primary"
            @click="cameraConnet"
            :disabled="conDisabled"
            >连接测试</el-button
          >
          <el-button size="small" type="primary" @click="cameraConnet" :disabled="conDisabled">连接测试</el-button>
        </div>
        <div class="video">
@@ -204,19 +146,9 @@
            :rtspUrl="videoItem.rtsp"
            :isRunning="false"
            :showArea="false"
            :videoUrl="ip"
            v-if="
              videoItem !== '' &&
              videoItem !== undefined &&
              videoItem !== null &&
              visibilityState
            "
            v-if="videoItem !== '' && videoItem !== undefined && videoItem !== null && visibilityState"
          ></wasm-player>
          <video
            v-else
            poster="/images/hashrate/video-poster.png"
            preload="none"
          ></video>
          <video v-else poster="/images/hashrate/video-poster.png" preload="none"></video>
        </div>
      </div>
    </div>
@@ -224,35 +156,30 @@
</template>
<script>
import {
  createCamera,
  updateCameraInfo,
  getCameraInfo,
  delCamera,
} from "@/api/camera";
import { getSoundList } from "@/api/event";
import { createCamera, updateCameraInfo, getCameraInfo, delCamera } from "@/api/camera"
import { getSoundList } from "@/api/event"
import WasmPlayer from "@/components/wasmPlayer";
import CameraInfoEditor from "./components/CameraInfoEditor";
import Sysinfo from "@/components/subComponents/SystemInfo";
import WasmPlayer from "@/components/wasmPlayer"
import CameraInfoEditor from "./components/CameraInfoEditor"
import Sysinfo from "@/components/subComponents/SystemInfo"
export default {
  name: "CameraInfo",
  components: {
    WasmPlayer,
    CameraInfoEditor,
    Sysinfo,
    Sysinfo
  },
  props: {
    cameraList: {
      default: () => {
        return [];
        return []
      },
      type: Array,
    },
      type: Array
    }
  },
  created() {
    document.querySelector("html").style["min-width"] = "1280px";
    document.querySelector("html").style["min-width"] = "1280px"
  },
  data() {
    return {
@@ -262,21 +189,14 @@
      togglePlay: true,
      eventAudio: new Audio(),
      soundPath: "",
      ip: "",
      form: {},
      // 记录添加状态
      isAdd: false,
      addParentId: "",
      rules: {
        name: [
          { required: true, message: "设备名称不能为空", trigger: "blur" },
        ],
        rtsp: [
          { required: true, message: "RTSP地址不能为空", trigger: "blur" },
        ],
        addr: [
          { required: true, message: "设备地址不能为空", trigger: "blur" },
        ],
        name: [{ required: true, message: "设备名称不能为空", trigger: "blur" }],
        rtsp: [{ required: true, message: "RTSP地址不能为空", trigger: "blur" }],
        addr: [{ required: true, message: "设备地址不能为空", trigger: "blur" }]
      },
      resolutionList: [],
      //传感器列表
@@ -285,262 +205,247 @@
      clusterList: [
        {
          label: "集群1",
          value: 0,
          value: 0
        },
        {
          label: "集群2",
          value: 1,
        },
      ],
    };
          value: 1
        }
      ]
    }
  },
  computed: {
    isSelected() {
      return this.TreeDataPool.selectedNode.type !== "4";
      return this.TreeDataPool.selectedNode.type !== "4"
    },
    isGb28182() {
      return this.TreeDataPool.selectedNode.cameraType === 1;
      return this.TreeDataPool.selectedNode.cameraType === 1
    },
    isDisabled() {
      if (this.isGb28182) {
        return true;
        return true
      }
      return this.isAdd ? false : this.TreeDataPool.selectedNode.type !== "4";
      return this.isAdd ? false : this.TreeDataPool.selectedNode.type !== "4"
    },
    conDisabled() {
      return this.isAdd ? false : this.TreeDataPool.selectedNode.type !== "4";
    },
      return this.isAdd ? false : this.TreeDataPool.selectedNode.type !== "4"
    }
  },
  mounted() {
    this.initFormData();
    this.initFormData()
    document.addEventListener("visibilitychange", () => {
      this.visibilitychange();
    });
    this.getSounds();
      this.visibilitychange()
    })
    this.getSounds()
    this.eventAudio.addEventListener("ended", () => {
      this.togglePlay = true;
    });
      this.togglePlay = true
    })
  },
  methods: {
    getSounds() {
      getSoundList()
        .then((res) => {
          if (res.success) {
            this.soundList = res.data.voices;
            this.soundList = res.data.voices
          }
        })
        .catch((e) => console.log(e));
        .catch((e) => console.log(e))
    },
    selSound(sound) {
      this.soundPath = sound.path;
      this.form.voiceId = sound.id;
      this.togglePlay = true;
      this.eventAudio.pause();
      this.soundPath = sound.path
      this.form.voiceId = sound.id
      this.togglePlay = true
      this.eventAudio.pause()
      // this.eventAudio.
    },
    togglePlayer() {
      if (!this.soundPath) {
        this.$notify({
          type: "info",
          message: "请先选择一个声音!",
        });
        return false;
          message: "请先选择一个声音!"
        })
        return false
      }
      this.eventAudio.src = this.soundPath;
      this.eventAudio.src = this.soundPath
      if (this.togglePlay) {
        this.eventAudio.play();
        this.togglePlay = false;
        this.eventAudio.play()
        this.togglePlay = false
      } else {
        this.eventAudio.pause();
        this.togglePlay = true;
        this.eventAudio.pause()
        this.togglePlay = true
      }
      // this.togglePlay = !this.togglePlay
    },
    visibilitychange() {
      switch (document.visibilityState) {
        case "hidden":
          this.visibilityState = false;
          break;
          this.visibilityState = false
          break
        case "visible":
          this.visibilityState = true;
          break;
          this.visibilityState = true
          break
      }
    },
    selectCamera(node) {
      this.isAdd = false;
      this.videoItem = null;
      this.$refs.addForm.resetFields();
      this.voice = null;
      this.isAdd = false
      this.videoItem = null
      this.$refs.addForm.resetFields()
      this.voice = null
      if (node.type === "4") {
        getCameraInfo(node.id).then((res) => {
          if (res.success) {
            this.ip = "ws://" + res.data.ip + ":7009/ws";
            if (res.data.resolutions) {
              let list = res.data.resolutions.map((i) => {
                let obj = {};
                let obj = {}
                if (i.width == 0 && i.height == 0) {
                  obj.label = "本机分辨率";
                  obj.value = "0*0";
                  obj.label = "本机分辨率"
                  obj.value = "0*0"
                } else {
                  obj.label = i.width + "*" + i.height;
                  obj.value = i.width + "*" + i.height;
                  obj.label = i.width + "*" + i.height
                  obj.value = i.width + "*" + i.height
                }
                return obj;
              });
              this.resolutionList = list;
              this.sensors = res.data.sensors;
                return obj
              })
              this.resolutionList = list
              this.sensors = res.data.sensors
            }
            this.$nextTick(() => {
              this.initFormData();
              Object.assign(this.form, res.data);
              this.initFormData()
              Object.assign(this.form, res.data)
              this.soundList.forEach((element) => {
                if (this.form.voiceId == element.id) {
                  this.voice = element;
                  this.voice = element
                }
              });
              })
              if (this.form.run_type !== -1) {
                this.form.isAI = true;
                this.form.isAI = true
              } else {
                this.form.isAI = false;
                this.form.isAI = false
              }
              this.form.resolution =
                this.form.resolution_width + "*" + this.form.resolution_height;
            });
              this.form.resolution = this.form.resolution_width + "*" + this.form.resolution_height
            })
          }
        });
        })
      }
    },
    // 保存
    onSubmit(formName) {
      let list = this.$refs.cameraEditor.getResult();
      let list = this.$refs.cameraEditor.getResult()
      this.$refs[formName].validate(async (valid) => {
        if (valid) {
          const isRequire = this.verifyRequrie();
          if (!isRequire) return false;
          const isRequire = this.verifyRequrie()
          if (!isRequire) return false
          this.form.latitude = Number.isNaN(parseFloat(this.form.latitude))
            ? 0
            : parseFloat(this.form.latitude);
          this.form.longitude = Number.isNaN(parseFloat(this.form.longitude))
            ? 0
            : parseFloat(this.form.longitude);
          this.form.sensors = list;
          this.form.resolution_width = Number(
            this.form.resolution.split("*")[0]
          );
          this.form.resolution_height = Number(
            this.form.resolution.split("*")[1]
          );
          let _this = this;
          this.form.latitude = Number.isNaN(parseFloat(this.form.latitude)) ? 0 : parseFloat(this.form.latitude)
          this.form.longitude = Number.isNaN(parseFloat(this.form.longitude)) ? 0 : parseFloat(this.form.longitude)
          this.form.sensors = list
          this.form.resolution_width = Number(this.form.resolution.split("*")[0])
          this.form.resolution_height = Number(this.form.resolution.split("*")[1])
          let _this = this
          // 更新
          if (this.form.id !== "") {
            this.form.areaid = this.TreeDataPool.getParent(
              this.form.id,
              this.isGb28182
            );
            console.log(this.TreeDataPool.selectedNode);
            this.form.areaid = this.TreeDataPool.getParent(this.form.id, this.isGb28182)
            console.log(this.TreeDataPool.selectedNode)
            let tem = {
              camera: this.form,
              sensors: this.form.sensors,
            };
            tem.camera.clusterId = sessionStorage.getItem("clusterId");
            tem.camera.devId = sessionStorage.getItem("devId");
            delete tem.camera.sensors;
              sensors: this.form.sensors
            }
            tem.camera.clusterId = sessionStorage.getItem("clusterId")
            tem.camera.devId = sessionStorage.getItem("devId")
            delete tem.camera.sensors
            updateCameraInfo(tem)
              .then((rsp) => {
                if (rsp.success) {
                  this.$notify({
                    type: "success",
                    message: "摄像机信息修改成功!",
                  });
                  this.TreeDataPool.fetchTreeData();
                  console.log(this.TreeDataPool.selectedNode);
                    message: "摄像机信息修改成功!"
                  })
                  this.TreeDataPool.fetchTreeData()
                  console.log(this.TreeDataPool.selectedNode)
                  //_this.$root.$children[0].$refs['leftTree'].$refs.tree.ztreeObj.checkNode(_this.TreeDataPool.selectedNode, true, false, false);
                  //选中修改后的节点
                  let { evt, treeId } =
                    _this.$root.$children[0].$refs["leftTree"].$refs.tree;
                  console.log(evt, treeId);
                  let { evt, treeId } = _this.$root.$children[0].$refs["leftTree"].$refs.tree
                  console.log(evt, treeId)
                  // this.$nextTick(()=>{
                  //_this.$root.$children[0].$refs['leftTree'].$refs.tree.handleCreated()
                  // })
                } else {
                  this.selectCamera(this.TreeDataPool.selectedNode);
                  this.selectCamera(this.TreeDataPool.selectedNode)
                  this.$notify({
                    type: "error",
                    message: "摄像机信息修改失败!",
                  });
                    message: "摄像机信息修改失败!"
                  })
                }
              })
              .catch((err) => {});
              .catch((err) => {})
          } else {
            this.form.areaid = this.addParentId;
            this.form.areaid = this.addParentId
            let tem = {
              camera: this.form,
              sensors: this.form.sensors,
            };
            tem.camera.clusterId = sessionStorage.getItem("clusterId");
            tem.camera.devId = sessionStorage.getItem("devId");
            tem.camera.parentUserId = "";
            tem.camera.enable = false;
            delete tem.camera.sensors;
              sensors: this.form.sensors
            }
            tem.camera.clusterId = sessionStorage.getItem("clusterId")
            tem.camera.devId = sessionStorage.getItem("devId")
            tem.camera.parentUserId = ""
            tem.camera.enable = false
            delete tem.camera.sensors
            createCamera(tem)
              .then((rsp) => {
                if (rsp.success) {
                  this.$notify({
                    type: "success",
                    message: "摄像机添加成功!",
                  });
                  this.TreeDataPool.selectedNode = rsp.data.camera;
                  this.TreeDataPool.fetchTreeData();
                    message: "摄像机添加成功!"
                  })
                  this.TreeDataPool.selectedNode = rsp.data.camera
                  this.TreeDataPool.fetchTreeData()
                  // 后端返回结果为0,查询后为4
                  this.TreeDataPool.selectedNode.type = "4";
                  this.selectCamera(this.TreeDataPool.selectedNode);
                  this.TreeDataPool.selectedNode.type = "4"
                  this.selectCamera(this.TreeDataPool.selectedNode)
                } else {
                  this.$notify({
                    type: "error",
                    message: "摄像机添加失败!",
                  });
                    message: "摄像机添加失败!"
                  })
                }
              })
              .catch((err) => {
                this.$notify({
                  type: "error",
                  message: err.msg,
                });
              });
                  message: err.msg
                })
              })
          }
        }
      });
      })
    },
    // 连接测试
    cameraConnet() {
      this.videoItem = null;
      this.videoItem = null
      this.$nextTick(() => {
        this.videoItem = {
          name: this.form.name,
          rtsp: this.form.rtsp,
          id: this.form.id,
          isRunning: this.form.run_enable,
          cameraType: this.form.type,
        };
          cameraType: this.form.type
        }
        console.log(this.videoItem);
      });
        console.log(this.videoItem)
      })
    },
    // * 验证必选项
    verifyRequrie() {
      if (this.isGb28182) {
        return true;
        return true
      }
      // const rtspReg = /^(rtsp:\/\/)([a-zA-Z0-9_]+):([a-zA-Z0-9_]+)@(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])(\/)([a-zA-Z0-9_/]+)$/;
      // !rtspReg.test(this.form.rtsp
@@ -548,47 +453,47 @@
      if (this.form.rtsp === "") {
        this.$notify({
          type: "warning",
          message: "请输入正确的rtsp地址",
        });
        return false;
          message: "请输入正确的rtsp地址"
        })
        return false
      }
      return true;
      return true
    },
    // 删除摄像机
    deleteCamera() {
      this.$confirm("是否删除此摄像机?", {
        center: true,
        cancelButtonClass: "comfirm-class-cancle",
        confirmButtonClass: "comfirm-class-sure",
        confirmButtonClass: "comfirm-class-sure"
      }).then(() => {
        if (!this.form.id) {
          this.$notify({
            type: "warning",
            message: "尚未添加摄像机",
          });
          return;
            message: "尚未添加摄像机"
          })
          return
        }
        delCamera({
          id: this.form.id,
          clusterId: this.TreeDataPool.clusterId,
          devId: this.TreeDataPool.devId,
          devId: this.TreeDataPool.devId
        }).then((res) => {
          if (res.success) {
            this.initFormData();
            this.initFormData()
            this.$notify({
              type: "success",
              message: "删除成功!",
            });
            this.TreeDataPool.fetchTreeData();
            this.TreeDataPool.selectedNode = {};
              message: "删除成功!"
            })
            this.TreeDataPool.fetchTreeData()
            this.TreeDataPool.selectedNode = {}
          } else {
            this.$notify({
              type: "error",
              message: "删除失败!",
            });
              message: "删除失败!"
            })
          }
        });
      });
        })
      })
    },
    // 清空输入框
    initFormData() {
@@ -610,33 +515,32 @@
        password: "",
        resolution: "",
        voiceId: "",
        voiceEnable: false,
      };
        voiceEnable: false
      }
    },
    // 添加设备
    addDevice(node) {
      this.isAdd = true;
      this.addParentId = node;
      this.isAdd = true
      this.addParentId = node
      this.resolutionList = [
        {
          label: "本机分辨率",
          value: "0*0",
          value: "0*0"
        },
        {
          label: "1920*1080",
          value: "1920*1080",
          value: "1920*1080"
        },
        {
          label: "2688*1520",
          value: "2688*1520",
        },
      ];
      this.initFormData();
    },
  },
};
          value: "2688*1520"
        }
      ]
      this.initFormData()
    }
  }
}
</script>
<style lang="scss" scoped>
.CameraInfo {
@@ -708,11 +612,7 @@
            flex: 1;
            border-radius: 15px;
            .el-progress-bar__inner {
              background: linear-gradient(
                270deg,
                #0065ff 0%,
                rgba(0, 101, 255, 0.25) 100%
              );
              background: linear-gradient(270deg, #0065ff 0%, rgba(0, 101, 255, 0.25) 100%);
            }
            .el-progress-bar__outer {
@@ -892,4 +792,4 @@
    }
  }
}
</style>
</style>
src/views/search/Searching.vue
@@ -273,6 +273,11 @@
    UploadImg,
    SetBox
  },
  computed: {
    searchTimeFormated() {
      return this.format(this.searchTime)
    }
  },
  data() {
    return {
      cardWidth: "",
@@ -292,7 +297,17 @@
      currentPage: 1,
      showSetBox: false,
      json_fields: {
        // 部门: "",
        部门: {
          field: "activeObject.cameraId",
          //自定义回调函数
          callback: (value) => {
            let org = ""
            if (this.TreeDataPool.cameraParents.hasOwnProperty(value)) {
              org = this.TreeDataPool.cameraParents[value]
            }
            return org
          }
        },
        // 告警标记: "",
        // 整改描述: "",
        摄像机ID: "activeObject.cameraId",
@@ -329,11 +344,6 @@
          }
        }
      }
    }
  },
  computed: {
    searchTimeFormated() {
      return this.format(this.searchTime)
    }
  },
  created() {