bihuisong 3 ay önce
ebeveyn
işleme
c60dde508b

+ 5 - 0
zhjq-admin/src/main/resources/application.yml

@@ -129,3 +129,8 @@ xss:
   excludes: /system/notice
   # 匹配链接
   urlPatterns: /system/*,/monitor/*,/tool/*,/app*
+#海康配置
+hik:
+  host: 218.62.80.146:1443
+  appKey: 28356728
+  appSecret: C3K889wQUgVlSj1BMay6

+ 2 - 3
zhjq-business/src/main/java/com/zhjq/controller/ZhjqCameraController.java

@@ -8,7 +8,6 @@ import com.zhjq.common.enums.BusinessType;
 import com.zhjq.common.utils.poi.ExcelUtil;
 import com.zhjq.domain.ZhjqCamera;
 import com.zhjq.service.IZhjqCameraService;
-import com.zhjq.utils.GetCameras;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -27,6 +26,7 @@ public class ZhjqCameraController extends BaseController {
     @Autowired
     private IZhjqCameraService zhjqCameraService;
 
+
     /**
      * 查询摄像头列表
      */
@@ -88,8 +88,7 @@ public class ZhjqCameraController extends BaseController {
      */
     @GetMapping("/getCameraList")
     public AjaxResult getCameraList() {
-        List<ZhjqCamera> list = GetCameras.cameras("218.62.80.146:1443", "28356728", "C3K889wQUgVlSj1BMay6", "1", "1000");
-        return toAjax(zhjqCameraService.insertBatchZhjqCamera(list));
+        return toAjax(zhjqCameraService.insertBatchZhjqCamera());
     }
 
 }

+ 6 - 7
zhjq-business/src/main/java/com/zhjq/domain/ZhjqCamera.java

@@ -42,12 +42,6 @@ public class ZhjqCamera {
     private String cameraName;
 
     /**
-     * 摄像头类型(0:枪机;1:半球;2:快球;3:云台枪机)
-     */
-    @Excel(name = "摄像头类型(0:枪机;1:半球;2:快球;3:云台枪机)")
-    private Integer cameraType;
-
-    /**
      * 摄像头类型
      */
     @Excel(name = "摄像头类型")
@@ -62,7 +56,7 @@ public class ZhjqCamera {
     /**
      * 维度
      */
-    @Excel(name = "度")
+    @Excel(name = "度")
     private String latitude;
 
     /**
@@ -91,4 +85,9 @@ public class ZhjqCamera {
      */
     private Date updateTime;
 
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
 }

+ 3 - 1
zhjq-business/src/main/java/com/zhjq/mapper/ZhjqCameraMapper.java

@@ -61,6 +61,8 @@ public interface ZhjqCameraMapper {
      */
     public int deleteZhjqCameraByIds(String[] ids);
 
-
+    /**
+     * 同步获取hik摄像头
+     */
     public int insertBatchZhjqCamera(@Param("list")List<ZhjqCamera> list);
 }

+ 10 - 4
zhjq-business/src/main/java/com/zhjq/quartz/PersonCountGroupJob.java

@@ -5,6 +5,7 @@ import com.zhjq.domain.ZhjqPassengerFlow;
 import com.zhjq.mapper.ZhjqPassengerFlowMapper;
 import com.zhjq.utils.PersonCountGroupURL;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
@@ -14,17 +15,22 @@ import java.util.List;
 @Component("personCountGroupJob")
 public class PersonCountGroupJob {
 
-    private final String host = "218.62.80.146:1443";
-    private final String appKey = "28356728";
-    private final String appSecret = "C3K889wQUgVlSj1BMay6";
     @Resource
     private ZhjqPassengerFlowMapper zhjqPassengerFlowMapper;
+    @Value("${hik.host}")
+    private String host;
+    @Value("${hik.appKey}")
+    private String appKey;
+    @Value("${hik.appSecret}")
+    private String appSecret;
 
 
     public void getPersonCountGroup() throws Exception {
         log.info("开始执行海康获取客流量统计定时任务");
         List<ZhjqPassengerFlow> list = PersonCountGroupURL.PersonCountGroupURL(host, appKey, appSecret);
-        zhjqPassengerFlowMapper.insertBatch(list);
+        if (!list.isEmpty()) {
+            zhjqPassengerFlowMapper.insertBatch(list);
+        }
         log.info("海康获取客流量统计定时任务执行完毕");
     }
 

+ 4 - 1
zhjq-business/src/main/java/com/zhjq/service/IZhjqCameraService.java

@@ -60,5 +60,8 @@ public interface IZhjqCameraService {
      */
     public int deleteZhjqCameraById(String id);
 
-    public int insertBatchZhjqCamera(List<ZhjqCamera> list);
+    /**
+     * 同步获取hik摄像头
+     */
+    public int insertBatchZhjqCamera();
 }

+ 25 - 2
zhjq-business/src/main/java/com/zhjq/service/imp/ZhjqCameraServiceImpl.java

@@ -4,10 +4,13 @@ import com.zhjq.common.utils.DateUtils;
 import com.zhjq.domain.ZhjqCamera;
 import com.zhjq.mapper.ZhjqCameraMapper;
 import com.zhjq.service.IZhjqCameraService;
+import com.zhjq.utils.GetCameras;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
@@ -20,6 +23,12 @@ import java.util.List;
 public class ZhjqCameraServiceImpl implements IZhjqCameraService {
     @Autowired
     private ZhjqCameraMapper zhjqCameraMapper;
+    @Value("${hik.host}")
+    private String host;
+    @Value("${hik.appKey}")
+    private String appKey;
+    @Value("${hik.appSecret}")
+    private String appSecret;
 
     /**
      * 查询摄像头
@@ -89,8 +98,22 @@ public class ZhjqCameraServiceImpl implements IZhjqCameraService {
         return zhjqCameraMapper.deleteZhjqCameraById(id);
     }
 
+    /**
+     * 同步获取hik摄像头
+     */
     @Override
-    public int insertBatchZhjqCamera(List<ZhjqCamera> list) {
-        return zhjqCameraMapper.insertBatchZhjqCamera(list);
+    public int insertBatchZhjqCamera() {
+        List<ZhjqCamera> list = GetCameras.cameras(host, appKey, appSecret, "1", "1000");
+        List<ZhjqCamera> cameraList = zhjqCameraMapper.selectZhjqCameraList(new ZhjqCamera());
+        List<ZhjqCamera> saveList = list.stream().filter(item ->
+                        cameraList.stream().
+                                noneMatch(var ->
+                                        item.getCameraIndexCode().equals(var.getCameraIndexCode())))
+                .collect(Collectors.toList());
+        if (!saveList.isEmpty()) {
+            return zhjqCameraMapper.insertBatchZhjqCamera(saveList);
+        } else {
+            return 1;
+        }
     }
 }

+ 28 - 30
zhjq-business/src/main/resources/mapper/ZhjqCameraMapper.xml

@@ -9,7 +9,6 @@
         <result property="encodeDevIndexCode" column="encode_dev_index_code"/>
         <result property="cameraIndexCode" column="camera_index_code"/>
         <result property="cameraName" column="camera_name"/>
-        <result property="cameraType" column="camera_type"/>
         <result property="cameraTypeName" column="camera_type_name"/>
         <result property="longitude" column="longitude"/>
         <result property="latitude" column="latitude"/>
@@ -18,6 +17,7 @@
         <result property="createTime" column="create_time"/>
         <result property="updateBy" column="update_by"/>
         <result property="updateTime" column="update_time"/>
+        <result property="deptName" column="dept_name"/>
     </resultMap>
 
     <sql id="selectZhjqCameraVo">
@@ -25,7 +25,6 @@
                camera_index_code,
                encode_dev_index_code,
                camera_name,
-               camera_type,
                camera_type_name,
                longitude,
                latitude,
@@ -38,33 +37,38 @@
     </sql>
 
     <select id="selectZhjqCameraList" parameterType="ZhjqCamera" resultMap="ZhjqCameraResult">
-        <include refid="selectZhjqCameraVo"/>
+        select id,
+        camera_index_code,
+        encode_dev_index_code,
+        camera_name,
+        camera_type_name,
+        longitude,
+        latitude,
+        zc.dept_id,
+        sd.dept_name
+        from zhjq_camera zc
+        left join sys_dept sd on zc.dept_id = sd.dept_id
         <where>
-            <if test="encodeDevIndexCode != null  and encodeDevIndexCode != ''">
-                and encode_dev_index_code = #{encodeDevIndexCode}
-            </if>
             <if test="cameraName != null  and cameraName != ''">
-                and camera_name like concat('%', #{cameraName}, '%')
-            </if>
-            <if test="cameraType != null ">
-                and camera_type = #{cameraType}
-            </if>
-            <if test="longitude != null  and longitude != ''">
-                and longitude = #{longitude}
-            </if>
-            <if test="latitude != null  and latitude != ''">
-                and latitude = #{latitude}
-            </if>
-            <if test="deptId != null ">
-                and dept_id = #{deptId}
+                and zc.camera_name like concat('%', #{cameraName}, '%')
             </if>
         </where>
     </select>
 
     <select id="selectZhjqCameraById" parameterType="String"
             resultMap="ZhjqCameraResult">
-        <include refid="selectZhjqCameraVo"/>
-        where id = #{id}
+        select id,
+               camera_index_code,
+               encode_dev_index_code,
+               camera_name,
+               camera_type_name,
+               longitude,
+               latitude,
+               zc.dept_id,
+               sd.dept_name
+        from zhjq_camera zc
+                 left join sys_dept sd on zc.dept_id = sd.dept_id
+        where zc.id = #{id}
     </select>
 
     <insert id="insertZhjqCamera" parameterType="ZhjqCamera">
@@ -78,8 +82,6 @@
             </if>
             <if test="cameraName != null">camera_name,
             </if>
-            <if test="cameraType != null">camera_type,
-            </if>
             <if test="cameraTypeName != null">camera_type_name,
             </if>
             <if test="longitude != null">longitude,
@@ -106,8 +108,6 @@
             </if>
             <if test="cameraName != null">#{cameraName},
             </if>
-            <if test="cameraType != null">#{cameraType},
-            </if>
             <if test="cameraTypeName != null">#{cameraTypeName},
             </if>
             <if test="longitude != null">#{longitude},
@@ -139,9 +139,6 @@
             <if test="cameraName != null">camera_name =
                 #{cameraName},
             </if>
-            <if test="cameraType != null">camera_type =
-                #{cameraType},
-            </if>
             <if test="cameraTypeName != null">camera_type_name =
                 #{cameraTypeName},
             </if>
@@ -182,12 +179,13 @@
             #{id}
         </foreach>
     </delete>
+
     <insert id="insertBatchZhjqCamera" parameterType="String">
-        insert into zhjq_camera (camera_index_code,encode_dev_index_code, camera_name, camera_type,camera_type_name,
+        insert into zhjq_camera (camera_index_code,encode_dev_index_code, camera_name,camera_type_name,
         longitude, latitude,create_time)
         values
         <foreach collection="list" item="item" separator="," index="index">
-            (#{item.cameraIndexCode},#{item.encodeDevIndexCode}, #{item.cameraName}, #{item.cameraType},
+            (#{item.cameraIndexCode},#{item.encodeDevIndexCode}, #{item.cameraName},
             #{item.cameraTypeName}, #{item.longitude},
             #{item.latitude}, now())
         </foreach>

+ 247 - 0
zhjq-ui/src/api/system/rules.js

@@ -0,0 +1,247 @@
+/**
+ * 验证非负整数(包含0及正整数)
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkNonnegativeInteger(rule, value, callback) {
+  if (value) {
+    value += ''
+    if(/(^(0|[1-9][0-9]*)$)/.test(value)) {
+      callback()
+    } else {
+      callback(new Error('只能输入数字,数值不能为负,且不能为小数'))
+    }
+  } else {
+    callback()
+  }
+}
+
+/**
+ * 验证正整数(不包含0的正整数)
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkPositiveInteger(rule, value, callback) {
+  if (value) {
+    value += ''
+    if(/(^[1-9]\d*$)/.test(value)) {
+      callback()
+    } else {
+      callback(new Error('只能输入数字,数值不能为负数或0,且不能为小数'))
+    }
+  } else {
+    callback()
+  }
+}
+
+/**
+ * 验证正数,且小数可2位(包含0及正整数)
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkPositiveDecimal(rule, value, callback) {
+  if (value) {
+    value += ''
+    // if(/(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(value)) {
+    // if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(value)) {
+    if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]{1,2}$)/.test(value)) {
+      callback()
+    } else {
+      callback(new Error('只能输入数字,且数值不能为负,小数限2位'))
+    }
+  } else {
+    callback()
+  }
+}
+/**
+ * 验证正数,且小数可4位(包含0及正整数)
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkPositiveDecimal4(rule, value, callback) {
+  if (value) {
+    value += ''
+    // if(/(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9]){0,3}$)/.test(value)) {
+    if(/(^[1-9]([0-9]+)?(\.[0-9]{1,4})?$)|(^(0){1}$)|(^[0-9]\.[0-9]{1,4}$)/.test(value)) {
+      callback()
+    } else {
+      callback(new Error('只能输入数字,且数值不能为负,小数限4位'))
+    }
+  } else {
+    callback()
+  }
+}
+/**
+ * 验证手机号,座机号
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function validPhoneMobile(rule, value, callback){
+  if (value){
+    if (value === '') {
+      callback(new Error('请输入11位手机号'));
+    } else {
+      let regPone = null;
+      let mobile = /^1(3|4|5|6|7|8|9)\d{9}$/; //最新16手机正则
+      let tel = /^(0\d{2,3}-){0,1}\d{7,8}$/; //座机
+      if (value.charAt(0) == 0) {    // charAt查找第一个字符方法,用来判断输入的是座机还是手机号
+        regPone = tel;
+      } else {
+        regPone = mobile;
+      }
+      if (!regPone.test(value)) {
+        callback(new Error("请填写11位手机号或座机号(座机格式为 区号-座机号码)"))
+      }
+      callback();
+    }
+  }else {
+    callback();
+  }
+}
+
+/**
+ * 验证经度输入范围在-180-180之间,且小数可15位
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkLon(rule, value, callback) {
+  if (value) {
+    value += ''
+    if (value.match(/^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,15})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,6}|180)$/)) {
+      callback()
+    } else {
+      callback(new Error('经度为-180~180,小数限15位'))
+    }
+  } else {
+    callback()
+  }
+}
+/**
+ * 验证纬度输入范围在-90~90之间,且小数可15位
+ * @param {*} rule
+ * @param {*} value
+ * @param {*} callback
+ */
+export function checkLat(rule, value, callback) {
+  if (value) {
+    value += ''
+    if (value.match(/^(\-|\+)?([0-8]?\d{1}\.\d{0,15}|90\.0{0,6}|[0-8]?\d{1}|90)$/)) {
+      callback()
+    } else {
+      callback(new Error('纬度为-90~90,小数限15位'))
+    }
+  } else {
+    callback()
+  }
+}
+
+/**
+ * 温度校验
+ * @param rule
+ * @param value
+ * @param callback
+ */
+export function checkTemperature(rule, value, callback) {
+  if (value !== '') {
+    // 判断温度是否为数字
+    if (!/^-?\d+(\.\d+)?$/.test(value)) {
+      callback(new Error('温度值必须为数字'))
+    } else {
+      // 将温度转换为数字类型,方便后续比较大小
+      const num = Number(value)
+
+      // 判断温度的范围是否在 -50 到 50 之间
+      if (num < -50 || num > 50) {
+        callback(new Error('温度范围必须在-50℃ ~ 50℃之间'))
+      } else {
+        // 判断小数部分是否超过一位
+        const reg = /(?:\.)(\d+)/
+        let match = value.match(reg)
+        if (match && match[1].length > 1) {
+          callback(new Error('小数部分只能保留一位'))
+        }
+        // 判断整数部分是否超过两位,且第一位是否为0
+        match = value.match(/^-?(\d+)/)
+        if (match && (match[1].length > 2 || (match[1].length === 2 && match[1][0] === '0'))) {
+          callback(new Error('整数部分长度不能超过2位,且第一位不能是0'))
+        } else {
+          callback()
+        }
+      }
+    }
+  } else {
+    callback(new Error('温度值不能为空'))
+  }
+}
+
+/**
+ * 车牌号校验(含新能源)
+ * @param rule
+ * @param value
+ * @param callback
+ */
+export function carPhoneValid (rule, value, callback) {
+  const plateNumber = /^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}([A-HJ-NP-Z0-9挂学警港澳]{1}|[应急]{2}))$/
+  if (plateNumber.test(value)) {
+    callback()
+  } else {
+    callback(new Error('请输入正确的车牌号'))
+  }
+}
+
+/**
+ * 英文和数字校验
+ * @param rule
+ * @param value
+ * @param callback
+ */
+export function englishAndNumValid(rule, value, callback) {
+  if (value) {
+    value += ''
+    if (value.match(/^[A-Za-z0-9]{4,40}$/)) {
+      callback()
+    } else {
+      callback(new Error('只能输入英文和数字'))
+    }
+  } else {
+    callback()
+  }
+}
+/**
+ * 英文和数字校验18位
+ * @param rule
+ * @param value
+ * @param callback
+ */
+export function englishAndshibaNumValid(rule, value, callback) {
+  if (value) {
+    value += ''
+    if (value.match(/^[A-Za-z0-9]{0,18}$/)) {
+      callback()
+    } else {
+      callback(new Error('只能输入0~18位英文和数字'))
+    }
+  } else {
+    callback()
+  }
+}
+
+export function englishOnly(rule, value, callback) {
+  if (value) {
+    value += ''
+    if (value.match(/^[a-zA-Z]{2,40}$/)) {
+      callback()
+    } else {
+      callback(new Error('请输入英文,且至少两个字符'))
+    }
+  } else {
+    callback()
+  }
+}
+

+ 36 - 41
zhjq-ui/src/views/system/camera/index.vue

@@ -58,6 +58,7 @@
       <el-table-column label="摄像头类型" align="center" prop="cameraTypeName"/>
       <el-table-column label="经度" align="center" prop="longitude"/>
       <el-table-column label="维度" align="center" prop="latitude"/>
+      <el-table-column label="部门名称" align="center" prop="deptName"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -74,13 +75,6 @@
             @click="handleDelete(scope.row)"
           >删除
           </el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-s-custom"
-            @click="handleDept(scope.row)"
-          >部门管理
-          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -102,17 +96,19 @@
         <el-form-item label="摄像头名称" prop="cameraName">
           <el-input v-model="form.cameraName" placeholder="请输入摄像头名称"/>
         </el-form-item>
+        <el-form-item label="摄像头类型" prop="cameraTypeName">
+          <el-input v-model="form.cameraTypeName" placeholder="请输入摄像头类型"/>
+        </el-form-item>
         <el-form-item label="经度" prop="longitude">
-          <el-input v-model="form.longitude" placeholder="请输入经度"/>
+          <el-input type="number" v-model="form.longitude" placeholder="请输入经度"/>
         </el-form-item>
-        <el-form-item label="度" prop="latitude">
-          <el-input v-model="form.latitude" placeholder="请输入维度"/>
+        <el-form-item label="度" prop="latitude">
+          <el-input type="number" v-model="form.latitude" placeholder="请输入维度"/>
         </el-form-item>
-        <el-form-item label="部门名称" prop="parentId">
-          <treeselect v-model="form.parentId"  :options="deptOptions"  :show-count="true"
+        <el-form-item label="部门名称" prop="deptId">
+          <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true"
                       placeholder="请选择部门名称"/>
         </el-form-item>
-<!--        :normalizer="normalizer"-->
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -126,8 +122,8 @@
 import {addCamera, delCamera, getCamera, getCameraList, listCamera, updateCamera} from "@/api/system/camera";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import {listDept} from "@/api/system/dept";
 import {deptTreeSelect} from "@/api/system/user";
+import {checkLat, checkLon} from '@/api/system/rules'
 
 export default {
   name: "Camera",
@@ -166,7 +162,28 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: {},
+      rules: {
+        cameraIndexCode: [
+          {required: true, message: "监控点不能为空", trigger: "blur"}
+        ],
+        cameraName: [
+          {required: true, message: "摄像头名称不能为空", trigger: "blur"}
+        ],
+        cameraTypeName: [
+          {required: true, message: "摄像头类型不能为空", trigger: "blur"}
+        ],
+        longitude: [
+          {required: true, message: "经度不能为空", trigger: "change"},
+          {validator: checkLon, trigger: 'blur'}
+        ],
+        latitude: [
+          {required: true, message: "纬度不能为空", trigger: "change"},
+          {validator: checkLat, trigger: 'blur'}
+        ],
+        deptId: [
+          {required: true, message: "部门名称不能为空", trigger: "change"}
+        ],
+      },
       // 表格树数据
       deptList: [],
       // 部门树选项
@@ -177,40 +194,17 @@ export default {
   },
   created() {
     this.getList();
-    this.getDeptTree();
   },
   methods: {
-    handleDept(){},
     /** 同步摄像头 */
-    handleCamera(){
+    handleCamera() {
       getCameraList().then(res => {
-        if(res.code == 200){
+        if (res.code == 200) {
           this.$modal.msgSuccess("同步成功");
         }
         this.getList();
       })
     },
-    // /** 查询部门列表 */
-    // getDeptList() {
-    //   this.loading = true;
-    //   listDept({}).then(response => {
-    //     this.deptList = this.handleTree(response.data, "deptId");
-    //     this.loading = false;
-    //   });
-    //   console.log("deptList", this.deptList);
-    // },
-
-    /** 转换部门数据结构 */
-    // normalizer(node) {
-    //   if (node.children && !node.children.length) {
-    //     delete node.children;
-    //   }
-    //   return {
-    //     id: node.deptId,
-    //     label: node.deptName,
-    //     children: node.children
-    //   };
-    // },
     /** 查询摄像头列表 */
     getList() {
       this.loading = true;
@@ -280,13 +274,14 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
-      // this.getDeptList();
+      this.getDeptTree();
       this.open = true;
       this.title = "添加摄像头";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
+      this.getDeptTree();
       const id = row.id || this.ids
       getCamera(id).then(response => {
         this.form = response.data;