Bladeren bron

无人机及优化

MSI\liwei 3 jaren geleden
bovenliggende
commit
283673665d

+ 2 - 0
.env.development

@@ -12,3 +12,5 @@ VUE_CLI_BABEL_TRANSPILE_MODULES = true
 
 VUE_APP_MAP_URL=https://t{0-7}.tianditu.gov.cn/
 
+VUE_APP_IMG_URL ='http://58.221.168.61:9000/api'
+

+ 2 - 0
.env.production

@@ -8,3 +8,5 @@ ENV = 'production'
 VUE_APP_BASE_API = 'http://172.24.25.2:9000/api/'
 
 VUE_APP_MAP_URL= /
+
+VUE_APP_IMG_URL ='http://172.24.25.2:9000/api/'

+ 8 - 0
src/api/qdtl/data.js

@@ -57,6 +57,14 @@ export function getLineData() {
     })
   }
 
+  export function getPatrolman(query) {
+    return request({
+      url: '/qdtl/patrolman/list',
+      method: 'get',
+      params:query
+    })
+  }
+
   // export function queryCheck(query) {
   //   console.log(query);
   //   return request({

+ 59 - 9
src/components/HeaderDiv/index.vue

@@ -6,13 +6,28 @@
         <div class="mum">
             <div :class='currentindex==1?"active":""' @click="goTarget(1)">首页</div>
             <div :class='currentindex==7?"active":""' @click="goTarget(7)">交通局简介</div>
-            <div :class='currentindex==2?"active":""' @click="goTarget(2)">设施监测</div>
-             <div :class='currentindex==6?"active":""' @click="goTarget(6)">综合管理</div>
-            <div :class='currentindex==3?"active":""' @click="goTarget(3)">治理态势</div>
-            <div :class='currentindex==4?"active":""' @click="goTarget(4)">安全态势</div>
-            <div :class='currentindex==5?"active":""' @click="goTarget(5)">公众服务</div>
-
+            <div :class='currentindex==2?"active":""'>
+                <div style="display:inline-flex">
+                  <div>{{menuName}}</div>
+                  <div style="margin-left:0.5rem" @click="rightMenu" v-show="showMenu"><i class="el-icon-arrow-right"></i></div>
+                   <div style="margin-left:0.5rem" @click="leftMenu" v-show="!showMenu"><i class="el-icon-arrow-left"></i></div>
+                </div>
+            </div>
+            <div  @click="goTarget(9)" v-show="!showMenu">视频监测</div>
+            <div  @click="goTarget(10)" v-show="!showMenu">无人机监测</div>
+            <div  @click="goTarget(11)" v-show="!showMenu">巡检监测</div>
+             <div  @click="goTarget(11)" v-show="!showMenu">巡逻电车监测</div>
+            
+            <div :class='currentindex==6?"active":""' @click="goTarget(6)" v-show="showMenu">综合管理</div>
+            <div :class='currentindex==3?"active":""' @click="goTarget(3)" v-show="showMenu">治理态势</div>
+            <div :class='currentindex==4?"active":""' @click="goTarget(4)" v-show="showMenu">安全态势</div>
+            <div :class='currentindex==5?"active":""' @click="goTarget(5)" v-show="showMenu">公众服务</div>
         </div>
+<!-- 
+        <div class="menu-dropDown">
+                     <div class='menu_item_class'>设施监测</div>
+                     <div class='menu_item_class'>无人机监测</div>
+        </div> -->
         <div class="time">
             <img src="../../assets/images/图层 9@2x.png" /><span>{{ currenttime }}</span>
         </div>
@@ -25,17 +40,25 @@ import moment from "moment";
 export default {
   name: "HeaderDiv",
    props: {
-      currentindexP:Number
+      currentindexP:Number,
+      menuNameP:{
+      type: String, // 约束color值的类型
+      default: "更多监测",  // color变量默认值(外部不给 我color传值,使用默认值) 
+    },
   },
   data() {
     return {
       // 版本号
       version: "3.8.1",
       currenttime: moment().format("YYYY-MM-DD HH:mm:ss"),
-      currentindex:this.currentindexP
+      currentindex:this.currentindexP,
+      showMenu:true,
+      menuName:this.menuNameP
     };
   },
    mounted() {
+        console.log(this.currentindexP);
+         console.log(this.menuNameP);
         setInterval(() => {
             this.currenttime = moment().format("YYYY-MM-DD HH:mm:ss");
         }, 1000);
@@ -44,8 +67,10 @@ export default {
     goTarget(index) {
       if(index == 1){
            this.$router.push('/big')
-      }else if(index == 2){
+      }else if(index == 9){
            this.$router.push('/video')
+      }else if(index == 10){
+           this.$router.push('/drone')
       }else if(index == 3){
            this.$router.push('/governance')
       }else if(index == 4){
@@ -58,6 +83,12 @@ export default {
            this.$router.push('/introduction')
       }
     },
+    rightMenu(){
+         this.showMenu = false
+    },
+    leftMenu(){
+         this.showMenu = true
+    }
   },
 };
 </script>
@@ -173,5 +204,24 @@ export default {
 
 }
 
+.menu-dropDown{
+    position: absolute;
+    top: 0.5rem;
+    left: 95rem;
+    width: 16rem;
+    height: 3.2rem;
+    background-color: #30FDFF;
+    opacity: 1;
+    padding-left:1rem;
+    display: inline-flex;
+    font-size:1.6rem;
+    color:#D6DEE7;
+    
+}
+
+.menu_item_class{
+   
+}
+
 </style>
 

+ 8 - 5
src/components/map/index.vue

@@ -39,6 +39,7 @@
     <div class='locationDiv' :style="locationStyle" v-show='isShow'>
           <div style="background:blue;height:4rem;width:100%;padding-top:0.8rem;padding-left:0.5rem">
                <span style='color:white;font-size:1.5rem;'>巡检点</span>
+               <i class="el-icon-close" style="margin-left:17rem" @click="isShow=false"></i>
           </div>
           <div style="text-align:center;margin-top:0.5rem">
               <img :src='clickObj.imgsrc' style="width:20rem;height:20rem"/>
@@ -235,12 +236,14 @@ export default {
                                 console.log(that.locationStyle);
                                 that.clickObj = tadata.data
                                 // console.log(tadata.pic);
-                                that.clickObj.imgsrc = 'http://58.221.168.61:9000/api'+tadata.data.pic
+                               console.log(process.env.VUE_APP_IMG_URL);
+                                that.clickObj.imgsrc = process.env.VUE_APP_IMG_URL+tadata.data.pic
                                 that.isShow = true
                          }
                          if(tadata.type == 'video'){
-                               that.ccode = tadata.data.cameraIndexCode
+                                that.ccode = tadata.data.cameraIndexCode
                                 window.cameraid = that.ccode;
+                                // console.log(tadata.data);
                                 that.dialogVisible = true
                                 setTimeout(() => {
                                   that.handleOpen()
@@ -379,8 +382,8 @@ export default {
         }
      },
       loadCkplayer(url){
-        url = 'rtmp://39.104.22.45:30498/rtp/34020001001320000001_34020001001320000001'
-        console.log(url);
+        // url = 'rtmp://39.104.22.45:30498/rtp/34020001001320000001_34020001001320000001'
+        // console.log(url);
         url = this.Base64.encode(url);
         console.log(url);
         getVideoHttp(url).then(data=>{
@@ -1015,7 +1018,7 @@ export default {
                style =[
                     new Style({
                               stroke: new Stroke({
-                                  color:"#535353",
+                                  color:"#5d5c5d",
                                   width:4,
                                   lineCap:"butt"
                               }),

+ 6 - 0
src/router/index.js

@@ -81,6 +81,12 @@ export const constantRoutes = [{
         hidden: true,
     },
     {
+        path: "/drone",
+        component: () =>
+            import ("@/views/drone"),
+        hidden: true,
+    },
+    {
         path: "/introduction",
         component: () =>
             import ("@/views/introduction"),

+ 16 - 2
src/views/bigscreen/index.vue

@@ -138,10 +138,24 @@ export default {
          getvideoList(){
                   httpRequest(this.videoParams).then(data =>{
                         var json = JSON.parse(data.data);
+                        var videoList = [];
+                        for(var index in json.data.list){
+                          //  console.log(json.data.list[index].name)
+                          //  console.log(json.data.list[index].name.indexOf('高速'))
+                             if(json.data.list[index].name.indexOf('高速') == -1){
+                                      videoList.push(json.data.list[index]);
+                             }else if(json.data.list[index].name.indexOf('东北球') > -1){
+                                      // console.log(json.data.list[index].name.indexOf('019'));
+                                      // console.log(json.data.list[index]);
+                                      videoList.push(json.data.list[index]);
+                             }else if(json.data.list[index].name.indexOf('东北南') > -1){
+                                      videoList.push(json.data.list[index]);
+                             }
+                        }
                         // console.log(json.data.list);
                         // console.log(json.data.length)
-                         this.staticCount += json.data.list.length
-                         this.$refs.mapdiv.addPoints(json.data.list,'video.png',0.6,'video');
+                         this.staticCount += videoList.length
+                         this.$refs.mapdiv.addPoints(videoList,'video.png',0.6,'video');
                   });
 
          }

+ 332 - 0
src/views/drone/index.vue

@@ -0,0 +1,332 @@
+<template>
+  <div class="app-container">
+     <headerdiv ref="headerDiv" :currentindexP = currentindexNew :menuNameP= itemName></headerdiv>
+     <div style="display: inline-flex">
+      <div class='leftTree'>
+            <!-- <el-form :model="nameObj" ref="nameObj" :inline="true" label-width="68px">
+                <el-form-item label="名称" prop="name"> -->
+                  <!-- <el-input
+                    v-model="nameObj.name"
+                    placeholder="请输入重命名名称"
+                    clearable
+                    size="small"
+                  /> -->
+                <!-- </el-form-item>
+            </el-form>          -->
+            <el-input
+                placeholder="输入关键字进行过滤"
+                v-model="filterText"
+                style="margin-top:1rem">
+            </el-input>
+             <div style="height:83vh;">
+                  <el-scrollbar style="height:110%;">
+                        <el-tree
+                            :data="videoData"
+                            :load="loadNode"
+                            lazy
+                            :expand-on-click-node="false"
+                            node-key="id"
+                            :props="defaultProps"
+                            :default-expand-all= isExpand
+                            :filter-node-method="filterNode"
+                            ref="tree"
+                            @node-click = 'treeChange'
+                            style="background-color:#04283C;color:#C5D0D4"
+                            >
+                            <!-- <span class="custom-tree-node" slot-scope="{ node, data }">
+                                <span>{{ node.label }}</span>
+                                <span>
+                                  <el-button
+                                    type="text"
+                                    size="mini"
+                                    @click.stop="treeChange"
+                                    @click="() => openName(node, data)"
+                                    style="margin-left:2rem">
+                                    修改
+                                  </el-button>
+                                </span>
+                              </span> -->
+                        </el-tree>
+               </el-scrollbar>
+            </div>
+      </div>
+
+     <div style="position: absolute;right:0;top:0;width:100%;height:90%;padding-left:33rem;margin-top:5rem;z-index:1000;">
+         <!-- <videodiv :cameracode="ccode" style="height:100%;width:100%"></videodiv> -->
+              <div style="width:100%;height:90rem;position:relative">
+               <div class="video" id="video" style="width:100%;height:100%;position:absolute;top:0;left:0"></div>
+              <!-- <videodiv :cameracode="ccode" style="width:100%;height:100%;position:absolute;top:0;left:0"></videodiv> -->
+            </div>
+      </div>
+     </div>
+  </div>
+</template>
+
+<script>
+import { listVideo,queryCamera,editCamera } from "@/api/qdtl/video";
+import { httpRequest } from "@/api/data/http";
+import { getLineData,getVideoHttp } from "@/api/qdtl/data";
+import { listConfig, getConfig, delConfig, addConfig, updateConfig, refreshCache } from "@/api/system/config";
+import videodiv from "@/components/Videoplayer/index.vue"
+import headerdiv from '@/components/HeaderDiv/index.vue'
+
+export default {
+    data() {
+      return {
+        itemName:'无人机监测',
+        videoMap:new Map(),
+        nameObj:{
+              channel:'',
+              name:''
+        },
+        videoData:[],
+        // videoMap:new Map(),
+        expandedKeys:[],
+        Base64:require('js-base64').Base64,
+        isExpand:true,
+        videoIndex:1,
+        currentindexNew:2,
+        remarkName:false,
+        data: [],
+        defaultProps: {
+          children: 'children',
+          label: 'label'
+        },
+        filterText:'',
+        ccode:'',
+        jsonArry:[],
+        creamData:[],
+        pointIdArry:[],
+        regionIndexCode:'',
+        queryParams:{
+             url:'http://2.90.220.252:9017/artemis-web/debug',
+             params:'{"httpMethod":"POST","path":"/api/resource/v1/regions","headers":{},"query":{},"parameter":{},"body":{"pageNo": 1,"pageSize": 200,"treeCode": "0"},"contentType":"application/json;charset=UTF-8","mock":false,"appKey":"27794545","appSecret":"5Xi27Gl7JrbHHF1MpdaB"}'
+        },
+         videoParams:{
+             url:'http://2.90.220.252:9017/artemis-web/debug',
+            //  params:'{"httpMethod":"POST","path":"/api/resource/v1/regions/regionIndexCode/cameras","headers":{},"query":{},"parameter":{},"body":{"pageNo": 1,"pageSize": 200,"regionIndexCode": "'+this.regionIndexCode+'"},"contentType":"application/json;charset=UTF-8","mock":false,"appKey":"27794545","appSecret":"5Xi27Gl7JrbHHF1MpdaB"}'
+        },
+      };
+    },
+    components:{
+      videodiv,
+      headerdiv,
+    },
+    watch: {
+      filterText(val) {
+        this.$refs.tree.filter(val);
+      }
+    },
+    created() {
+        // this.getvideo();
+        this.getDroneList();
+        // this.initCkplayer();
+        this.loadCkplayer('http://39.104.22.45:8089/rtp/34020001001320000001_34020001001320000001/hls1.m3u8');
+        // this.getList();
+    },
+    
+    mounted(){
+      window.videosize = "3x3";
+      this.queryCamera();
+
+    },
+    beforeDestroy(){
+      window.videosize = "1x1";
+      closevideo();
+    },
+    methods:{
+         initCkplayer(){
+             var videoObject = {
+                            container: '.video', //“#”代表容器的ID,“.”或“”代表容器的class
+                            variable: 'player', //播放函数名称,该属性必需设置,值等于下面的new ckplayer()的对象
+                            autoplay:true,
+                            live:true,
+                            overspread:true,//是否让视频铺满播放器
+                            html5m3u8:true,//m3u8-hls形式播放视频
+                            // video: 'rtmp://58.200.131.2:1935/livetv/cctv1'//视频地址
+                            // video:data.data//视频地址
+                            video:'http://39.104.22.45:8089/rtp/34020001001320000001_34020001001320000001/hls1.m3u8'
+                            };
+                            console.log(videoObject);
+                            window.player = new ckplayer(videoObject);
+
+         },
+         loadCkplayer(url){
+                        // url = 'rtmp://39.104.22.45:30498/rtp/34020001001320000001_34020001001320000001'
+                        console.log(url);
+                        url = this.Base64.encode(url);
+                        console.log(url);
+                        getVideoHttp(url).then(data=>{
+                            console.log(process.env.NODE_ENV)
+
+                            if(process.env.NODE_ENV === "production"){
+
+                            data.data = (data.data+"").replaceAll("http://58.221.168.61:9000/","http://172.24.25.2:9000/")
+                            }
+                            console.log(data.data)
+                            var videoObject = {
+                            container: '.video', //“#”代表容器的ID,“.”或“”代表容器的class
+                            variable: 'player', //播放函数名称,该属性必需设置,值等于下面的new ckplayer()的对象
+                            autoplay:true,
+                            live:true,
+                            overspread:true,//是否让视频铺满播放器
+                            html5m3u8:true,//m3u8-hls形式播放视频
+                            // video: 'rtmp://58.200.131.2:1935/livetv/cctv1'//视频地址
+                            video:data.data//视频地址
+                            // video:'http://39.104.22.45:8089/rtp/34020001001320000001_34020001001320000001/hls.m3u8'
+                            };
+                            console.log(videoObject);
+                            window.player = new ckplayer(videoObject);
+                        })
+                    },
+         getDroneList() {
+                        getConfig(104).then(response => {
+                                this.configObj = response.data
+                                var jsonArry =  JSON.parse(response.data.configValue);
+                                // var droneList = jsonArry
+                                for(var index in jsonArry){
+                                    var obj = jsonArry[index]
+                                    // obj.id = obj.indexCode;
+                                    obj.label = obj.area;
+                                    obj.data = obj;
+                                    // console.log(obj);
+                                    this.videoData.push(obj);
+                                }
+                                // console.log(this.droneList);
+                        });
+         },
+        openName(node,data){
+              if(this.nameObj.name.length > 0){
+                      this.nameObj.channel = data.id
+                    //   console.log(this.nameObj);
+                      editCamera(this.nameObj).then(response =>{
+                                console.log(response);
+                       })
+              }
+        },
+        editCamera(){
+              editCamera().then(data =>{
+
+              })
+        },
+        queryCamera(){
+              queryCamera().then(data =>{
+                      this.videoMap = data.data
+              })
+        },
+        loadNode(node, resolve){
+        if (node.level > 3) return resolve([]);
+        if(node.level <3){
+              var childrens = []
+              for(var index in this.jsonArry){
+                      if(node.data.id == this.jsonArry[index].parentIndexCode){
+                           childrens.push(this.jsonArry[index]);
+                      }
+              }
+                 resolve(childrens);
+        }
+
+        if(node.level === 3){
+             this.videoParams.params = '{"httpMethod":"POST","path":"/api/resource/v1/regions/regionIndexCode/cameras","headers":{},"query":{},"parameter":{},"body":{"pageNo": 1,"pageSize": 200,"regionIndexCode": "'+node.data.indexCode+'"},"contentType":"application/json;charset=UTF-8","mock":false,"appKey":"27794545","appSecret":"5Xi27Gl7JrbHHF1MpdaB"}'
+                  httpRequest(this.videoParams).then(data =>{
+                        var json = JSON.parse(data.data);
+                        // console.log(json);
+                        var childerns = [];
+                        for(var index in json.data.list){
+                          // console.log();\
+                              var obj = json.data.list[index];
+                              obj.id = obj.cameraIndexCode;
+                              // remarkName
+                              if(this.videoMap[obj.id]){
+                                     obj.label = this.videoMap[obj.id]
+                              }else{
+                                     obj.label = obj.name;
+                              }
+                              obj.data = obj;
+                              obj.lnglat = obj.longitude +','+obj.latitude;
+                              childerns.push(obj);
+                        }
+                        resolve(childerns);
+                  });
+        }
+        },
+        getvideo(){
+          httpRequest(this.queryParams).then(response => {
+              //  console.log(response);
+               var json = JSON.parse(response.data);
+               console.log(json);
+               for(var index in json.data.list){
+                    // obj = json.data.list[index]
+                    // obj.id = obj.indexCode;
+                    // obj.label = obj.name;
+                    // obj.data = obj;
+                    var obj = json.data.list[index]
+                    obj.id = obj.indexCode;
+                    obj.label = obj.name;
+                    obj.data = obj;
+                    this.jsonArry.push(obj);
+                    if(obj.parentIndexCode == -1){
+                           this.videoData.push(obj);
+                           this.expandedKeys.push(obj.id);
+                    }
+                    // this.expandedKeys.push(obj.id);
+                    if(this.videoData.length > 0){
+                          if(obj.parentIndexCode == this.videoData[0].id){
+                            this.expandedKeys.push(obj.id);
+                          }
+                    }
+                  
+               }
+           });
+        },
+       getList() {
+            listVideo().then(response => {
+                console.log(response);
+                this.videoData= response.data
+                 console.log(this.videoData);
+                 for(var index in this.videoData){
+                    var obj = this.videoData[index];
+                    obj.label = obj.areaName;
+                    obj.children = []
+                    for(var i in obj.monitors){
+                         var monitor = obj.monitors[i]
+                         monitor.data = monitor;
+                         monitor.label = monitor.name;
+                         obj.children.push(monitor);
+                    }
+                 }
+                 console.log(this.videoData);
+            });
+       },
+      filterNode(value, data) {
+                if (!value) return true;
+                return data.label.indexOf(value) !== -1;
+      },
+      treeChange(data, node){
+          var arry = this.$refs.tree.getCheckedNodes()
+          console.log(data);
+          if(data.video != null){
+              this.loadCkplayer(data.video);
+             //window.startPreview(data.cameraIndexCode,-1);
+        
+          }
+      }
+    }
+};
+</script>
+
+<style>
+     .leftTree{
+          /* float:left; */
+          width:32rem;
+          background-color:#04283C;
+          padding: 10px;
+          padding-top:0 ;
+          min-height: 95vh;
+          z-index:1001;
+     }
+     .app-container{
+       padding:0
+     }
+</style>
+

+ 3 - 2
src/views/governance/index.vue

@@ -1,6 +1,6 @@
 <template>
 <div style="width:100%;height:100%;position:relative">
-  <headerdiv ref="headerDiv" :currentindexP = currentindexNew></headerdiv>
+  <headerdiv ref="headerDiv" :currentindexP = currentindexNew ></headerdiv>
   <div style="display: inline-flex;width:100%">
   <div style="width:25%;height:100%;">
        <div style="width:100%">
@@ -140,7 +140,8 @@ export default {
               videoChartDate:{},
               staticCount:0,
               dynamicCount:0,
-              areaCount:0
+              areaCount:0,
+              menuNameNew:'更多监测'
         };
     },
     components:{

+ 2 - 2
src/views/introduction/index.vue

@@ -58,8 +58,8 @@ export default {
     },
     mounted() {
         // this.getTrain();
-        this.getResource();
-        this.getvideoList();
+        // this.getResource();
+        // this.getvideoList();
         // this.$$refs.headerDiv.currentindex = 1;
         setInterval(() => {
             this.currenttime = moment().format("YYYY-MM-DD HH:mm:ss");

+ 3 - 2
src/views/qdtl/video/video.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-     <headerdiv ref="headerDiv" :currentindexP = currentindexNew></headerdiv>
+     <headerdiv ref="headerDiv" :currentindexP = currentindexNew :menuNameP= itemName></headerdiv>
      <div style="display: inline-flex">
       <div class='leftTree'>
             <!-- <el-form :model="nameObj" ref="nameObj" :inline="true" label-width="68px">
@@ -68,6 +68,7 @@ import headerdiv from '@/components/HeaderDiv/index.vue'
 export default {
     data() {
       return {
+        itemName:'视频监测',
         videoMap:new Map(),
         nameObj:{
               channel:'',
@@ -136,7 +137,7 @@ export default {
     },
     components:{
       videodiv,
-      headerdiv
+      headerdiv,
     },
     watch: {
       filterText(val) {

+ 25 - 1
src/views/system/user/index.vue

@@ -299,6 +299,21 @@
           </el-col>
         </el-row>
         <el-row>
+               <el-col :span="12">
+                    <el-form-item label="巡检卡">
+                      <el-select v-model="form.patrolman" placeholder="请选择">
+                        <el-option
+                          v-for="item in patrolmanList"
+                          :key="item.card"
+                          :label="item.name"
+                          :value="item.card"
+                          :disabled="item.status == 1"
+                        ></el-option>
+                      </el-select>
+                    </el-form-item>
+                </el-col>
+        </el-row>
+        <el-row>
           <el-col :span="24">
             <el-form-item label="备注">
               <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
@@ -346,6 +361,7 @@
 
 <script>
 import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus } from "@/api/system/user";
+import { getPatrolman } from "@/api/qdtl/data";
 import { getToken } from "@/utils/auth";
 import { treeselect } from "@/api/system/dept";
 import Treeselect from "@riophae/vue-treeselect";
@@ -408,6 +424,7 @@ export default {
         // 上传的地址
         url: process.env.VUE_APP_BASE_API + "/system/user/importData"
       },
+      patrolmanList:[],
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -466,11 +483,17 @@ export default {
   created() {
     this.getList();
     this.getTreeselect();
+    this.getPatrolman();
     this.getConfigKey("sys.user.initPassword").then(response => {
       this.initPassword = response.msg;
     });
   },
   methods: {
+    getPatrolman(){
+        getPatrolman().then(response => {
+               this.patrolmanList = response.rows
+        })
+    },
     /** 查询用户列表 */
     getList() {
       this.loading = true;
@@ -527,7 +550,8 @@ export default {
         status: "0",
         remark: undefined,
         postIds: [],
-        roleIds: []
+        roleIds: [],
+        patrolman:undefined
       };
       this.resetForm("form");
     },