大理访客登记改
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index efb17aa..af555b9 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -39,4 +39,5 @@
 
 visitor.appid=wx063b94046a147a77
 visitor.secret=702d663e7685d0adc0a83673701c8878
+visitor.redirect=https%3a%2f%2fyy.dlsmk.cn%2fdoor
 
diff --git a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
index e02521b..8cd346f 100644
--- a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
+++ b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
@@ -73,6 +73,9 @@
         session.setAttribute("openmsg",resp);

         session.setAttribute("inoutflag",inoutflag);

         model.addAttribute("issuccess", issuccess);

+        if(issuccess==1){

+            return "apph5/attention";

+        }

         return "apph5/appvisitor";

     }

     @RequestMapping("/qrcodemanage")

@@ -87,29 +90,22 @@
     public String getcode(@RequestParam(value = "inoutflag")String inoutflag,Model model){

         String qrcode="";

         String appid = visitorConfig.getAppid();

-        qrcode="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri=192.168.1.117%2Fdoor%2Fapp%2Fqrcodevisitor%3finoutflag%3d"+inoutflag+"&response_type=code&scope=snsapi_userinfo&state=&connect_redirect=1#wechat_redirect";

+        String redirect = visitorConfig.getRedirect();

+        qrcode="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri="+redirect+"%2fapp%2fqrcodevisitor%3finoutflag%3d"+inoutflag+"&response_type=code&scope=snsapi_userinfo&state=&connect_redirect=1#wechat_redirect";

         model.addAttribute("qrcode", qrcode);

         return "apph5/visitorcode";

     }

-    @ResponseBody

-    @RequestMapping("/getvistor")

-    public Map getvistorin(HttpServletRequest request, Model model){

+

+    @RequestMapping("/getvisitor")

+    public String getvistorin(HttpServletRequest request, Model model){

         HttpSession session = request.getSession();

         WechatResp openmsg = (WechatResp) session.getAttribute("openmsg");

         int inoutflag = (int) session.getAttribute("inoutflag");

         //WechatResp openmsg = new WechatResp();

         //openmsg.setCity("上海");

         boolean b = appService.saveOpenmsg(openmsg, inoutflag);

-        Map map=new HashMap();

-

-        if(b){

-            map.put("retcode",0);

-            map.put("retmsg","成功");

-        }else {

-            map.put("retcode",99);

-            map.put("retmsg","失败");

-        }

-        return map;

+        model.addAttribute("issuccess",b );

+        return "apph5/visitorresult";

     }

 

 

@@ -117,6 +113,7 @@
         //Map<String, String> map = payMethodService.getPaymethodConfigMap("wechat_ykt");

         appid = visitorConfig.getAppid();

         appsecret = visitorConfig.getSecret();

+        redirect=visitorConfig.getRedirect();

     }

     @RequestMapping("/appMintUIindex")

     public String appMintUIindex(@RequestParam(value = "userid")String userId,Model model){

diff --git a/src/main/java/com/supwisdom/dlpay/app/domain/VisitorConfig.java b/src/main/java/com/supwisdom/dlpay/app/domain/VisitorConfig.java
index 46ea6f1..3cc191c 100644
--- a/src/main/java/com/supwisdom/dlpay/app/domain/VisitorConfig.java
+++ b/src/main/java/com/supwisdom/dlpay/app/domain/VisitorConfig.java
@@ -9,6 +9,8 @@
   private String appid;
   @Value("${visitor.secret}")
   private String secret;
+  @Value("${visitor.redirect}")
+  private String redirect;
 
   public String getAppid() {
     return appid;
@@ -17,4 +19,8 @@
   public String getSecret() {
     return secret;
   }
+
+  public String getRedirect() {
+    return redirect;
+  }
 }
diff --git a/src/main/resources/templates/apph5/appvisitor.html b/src/main/resources/templates/apph5/appvisitor.html
index 94bc82e..3b6d0cb 100644
--- a/src/main/resources/templates/apph5/appvisitor.html
+++ b/src/main/resources/templates/apph5/appvisitor.html
@@ -87,16 +87,7 @@
     function app_openDoor(devId) {
 
         layer.confirm('你确定要登记吗?',{icon: 3,title: '请确认',offset: '30%'},function (index) {
-            $.ajax({
-                type: "get",
-                dataType: "json",
-                url:encodeURI("[[@{/app/getvistor}]]"),
-                success:function (ret) {
-                    if(ret.retcode==1){
-                        alert(ret.retmsg);
-                    }
-                }
-            })
+            window.location.href="[[@{/app/getvisitor}]]"
         });
 
     }
diff --git a/src/main/resources/templates/apph5/attention.html b/src/main/resources/templates/apph5/attention.html
new file mode 100644
index 0000000..d77d369
--- /dev/null
+++ b/src/main/resources/templates/apph5/attention.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+
+<head>
+    <title>首页</title>
+    <!--<meta name="_csrf_header" th:content="${_csrf.headerName}" />
+    <meta name="_csrf_token" th:content="${_csrf.parameterName}" th:value="${_csrf.token}" />-->
+    <meta charset="utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="/static/libs/layui/css/layui.css" th:href="@{/static/libs/layui/css/layui.css}"/>
+
+    <link rel="stylesheet" href="/static/res/assets/plugins/element-ui/theme-default/index.css"
+          th:href="@{/static/res/assets/plugins/element-ui/theme-default/index.css}"/>
+    <link rel="stylesheet" href="/static/res/assets/css/wxpage.css"
+          th:href="@{/static/res/assets/css/wxpage.css}"/>
+
+    <!--<script type="text/javascript" th:src="@{/static/libs/jquery/jquery-3.2.1.min.js}"></script>-->
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.min.js}"></script>
+    <!--<script type="text/javascript" th:src="@{/static/libs/layui/layui.js}"></script>-->
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.form.js}"></script>
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/layer/layer.js}"></script>
+    <script type="text/javascript" th:src="@{/static/res/assets/js/vue.min.js}"></script>
+    <script type="text/javascript" th:src="@{/static/res/assets/js/qrcode.min.js}"></script>
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/element-ui/index.js}"></script>
+
+
+</head>
+
+<script type="text/javascript">
+    setInterval(function () {
+        window.location.href="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzA5ODEyNTk3Ng==&scene=124#wechat_redirect"
+    }, 60000);
+
+    $(function () {
+        var inoutflag = $("#issuccess").val();
+        if (inoutflag == 1) {
+            $("#title").text("获取信息失败")
+        }
+
+    });
+</script>
+<style>
+    body {
+        background-color: #ffffff;
+    }
+
+</style>
+</html>
+<body class="page" style="text-align: center">
+<div class="topbar">
+    <p id="title" class="el-message-box__title" style="text-align: center"></p>
+    <a href="javascript:window.location.reload();"><span class="refresh"></span></a>
+</div>
+
+<div style="text-align: center;padding: 30px;">
+    <input type="hidden" id="issuccess" th:value="${issuccess}"/>
+</div>
+<p style="text-align: center;margin-top:40px;color:#999;font-size: 14px">请关注公众号后再进行登记,稍后将自动跳转至公众号</p>
+<a href="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzA5ODEyNTk3Ng==&scene=124#wechat_redirect" class="weui-btn weui-btn_primary btn-bg"
+   style="align-content: center;margin: 20px">手动跳转至公众号</a>
+
+</body>
+</style>
\ No newline at end of file
diff --git a/src/main/resources/templates/apph5/visitorresult.html b/src/main/resources/templates/apph5/visitorresult.html
index 14447fc..221e492 100644
--- a/src/main/resources/templates/apph5/visitorresult.html
+++ b/src/main/resources/templates/apph5/visitorresult.html
@@ -31,8 +31,8 @@
 
 <script>
     $(function () {
-
-        if(inoutflag==1){
+        var flag=$("#issuccess").val();
+        if(flag){
             $("#msg").html("<p class='mintui-success'>登记成功</p>")
         }else {
             $("#msg").html("<p class='mintui-success'>登记失败</p>")
@@ -49,10 +49,10 @@
         },
         methods: {
             openDoor:function (devId) {
-                mint_openDoor(devId);
+                //mint_openDoor(devId);
             },
             loadListData:function (devName) {
-                mint_searchByDevName(devName);
+                //mint_searchByDevName(devName);
             },
 
         },
@@ -60,103 +60,24 @@
             devName:function(newvs,oldvs){
 
                 if(!newvs){
-                    mint_searchByDevName('');
+                    //mint_searchByDevName('');
                 }
             }
         },
-        created:function(){
+        created:function() {
             var _self = this;
 
-            var userId='[[${userId}]]';
+            var userId = '[[${userId}]]';
             _self.userId = userId;
 
 
-            $.ajax({
-                type: "get",
-                dataType: "json",
-                url: "[[@{/app/loadAppDevList?userId=}]]"+userId,
-                success: function (ret) {
-                    var ut = ret.devList;
-                    if (ut == null){
-                        confirm("不具有开门权限");
-                        return;
-                    }
-                    var devs = [];
-                    var names = [];
-                    var ids = [];
-                    for (var i = 0; i < ut.length; i++) {
-                        devs.push({
-                            label:ut[i].devname,
-                            value:ut[i].deviceid,
-                            building:ut[i].buildingname
-                        });
-                        names.push(ut[i].devname);
-                        ids.push(ut[i].deviceid);
-                    }
-                    _self.devList = devs;
-
-
-                }
-            })
         }
-
-
     })
 
 
-    function mint_openDoor(devId) {
-        var userId = mint_vue.userId;
-        console.log(userId);
-        layer.confirm('你确定要开启此门吗?',{icon: 3,title: '请确认',offset: '30%'},function (index) {
-            $.ajax({
-                type: "get",
-                dataType: "json",
-                url:encodeURI("[[@{/app/openDoorById?devId=}]]" +devId+"&userId="+userId),
-                success:function (ret) {
-                    if (ret.message == undefined){
-                        layer.msg('用户认证已过期,请重新登录',{icon: 2,time:1000});
-                        window.location = "[[@{/login}]]";
-                        return;
-                    }
-                    if (ret.message != "") {
-                        layer.msg(ret.message, {icon: 2, time: 2000});
-                    } else {
-                        layer.msg('开门成功', {icon: 1, time: 2000});
-                    }
-                }
-            })
-        });
 
-    }
 
-    function mint_searchByDevName(devName) {
-        var userId = mint_vue.userId;
-        $.ajax({
-            type: "get",
-            dataType: "json",
-            url: "[[@{/app/searchByDevName?userId=}]]"+userId+"&devName="+devName,
-            success: function (ret) {
-                var ut = ret.devNameList;
-                if (ut == null) {
-                    confirm("没有对应设备!");
-                    return;
-                }
-                var devs = [];
-                var names = [];
-                var ids = [];
-                for (var i = 0; i < ut.length; i++) {
-                    devs.push({
-                        label: ut[i].devname,
-                        value: ut[i].deviceid,
-                        building: ut[i].buildingname
-                    });
-                    names.push(ut[i].devname);
-                    ids.push(ut[i].deviceid);
-                }
-                mint_vue.devList = devs;
-            }
-        })
-    }
+
 </script>
 <style>
     .mint-search{
diff --git a/src/main/resources/templates/system/operator.html b/src/main/resources/templates/system/operator.html
index 157dca1..9e70c0d 100644
--- a/src/main/resources/templates/system/operator.html
+++ b/src/main/resources/templates/system/operator.html
@@ -8,7 +8,8 @@
     </div>
     <div class="layui-card-body">
         <div id="operatorapp">
-            <el-form :inline="true" ref="operatorform" :model="operatorform" data-parsley-validate class="form-horizontal form-label-left">
+            <el-form :inline="true" ref="operatorform" :model="operatorform" data-parsley-validate
+                     class="form-horizontal form-label-left">
 
                 <div class="col-md-4">
                     <div class="form-group">
@@ -130,11 +131,20 @@
                             label="操作"
                             width="179">
                         <template scope="scope">
-                            <button type="button" class="btn btn-info btn-xs" title="编辑操作员" @click="editOperator(scope.row.operid)" v-if="scope.row.opertype!='系统管理员'">编辑</button>
-                            <button type="button" class="btn btn-success btn-xs" title="重置密码" @click="resetPwd(scope.row.operid)" v-if="scope.row.opertype!='系统管理员'" >重置</button>
-                            <button type="button" class="btn btn-danger btn-xs" title="删除操作员" @click="delOperator(scope.row.operid)" v-if="scope.row.opertype!='系统管理员' && scope.row.opertype!='超级管理员' && scope.row.status=='有效'">删除</button>
+                            <button type="button" class="btn btn-info btn-xs" title="编辑操作员"
+                                    @click="editOperator(scope.row.operid)" v-if="scope.row.opertype!='系统管理员'">编辑
+                            </button>
+                            <button type="button" class="btn btn-success btn-xs" title="重置密码"
+                                    @click="resetPwd(scope.row.operid)" v-if="scope.row.opertype!='系统管理员'">重置
+                            </button>
+                            <button type="button" class="btn btn-danger btn-xs" title="删除操作员"
+                                    @click="delOperator(scope.row.operid)"
+                                    v-if="scope.row.opertype!='系统管理员' && scope.row.opertype!='超级管理员' && scope.row.status=='有效'">
+                                删除
+                            </button>
                             <button type="button" class="btn btn-info btn-xs" title="分配楼栋"
-                                    @click="allotBuilding(scope.row.operid,scope.row.opername)" v-if="scope.row.opertype=='楼栋管理员'">分配楼栋
+                                    @click="allotBuilding(scope.row.operid,scope.row.opername)"
+                                    v-if="scope.row.opertype=='楼栋管理员'">分配楼栋
                             </button>
                         </template>
                     </el-table-column>
@@ -151,13 +161,14 @@
                 </el-pagination>
             </template>
 
-            <el-dialog :title="operatortitile" :visible.sync="dialogFormVisible"  :modal-append-to-body='false' @close="closeDialog('operatorDiaForm')">
-                <el-form ref="operatorDiaForm" :model="operatorDiaForm" :rules="rules" label-width="36%" >
+            <el-dialog :title="operatortitile" :visible.sync="dialogFormVisible" :modal-append-to-body='false'
+                       @close="closeDialog('operatorDiaForm')">
+                <el-form ref="operatorDiaForm" :model="operatorDiaForm" :rules="rules" label-width="36%">
                     <el-form-item label="操作员编号:" prop="operid">
                         <div class="el-col el-col-15">
                             <div class="el-input" style="width: 187px;">
                                 <el-input v-model="operatorDiaForm.operid">
-                                    <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                                    <i class="el-icon-edit el-input__icon" slot="icon"></i>
                                 </el-input>
                             </div>
                         </div>
@@ -167,7 +178,7 @@
                         <div class="el-col el-col-18">
                             <div class="el-input" style="width: 187px;">
                                 <el-input v-model="operatorDiaForm.opercode">
-                                    <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                                    <i class="el-icon-edit el-input__icon" slot="icon"></i>
                                 </el-input>
                             </div>
                         </div>
@@ -177,7 +188,7 @@
                         <div class="el-col el-col-18">
                             <div class="el-input" style="width: 187px;">
                                 <el-input v-model="operatorDiaForm.opername">
-                                    <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                                    <i class="el-icon-edit el-input__icon" slot="icon"></i>
                                 </el-input>
                             </div>
                         </div>
@@ -228,30 +239,31 @@
                                         :label="regionid.label"
                                         :value="regionid.value">
                                 </el-option>
-                            </el-select>&nbsp(注:区域管理员类别必选)
+                            </el-select>
+                            &nbsp(注:区域管理员类别必选)
                         </el-col>
                     </el-form-item>
 
                     <el-form-item label="联系方式:" prop="mobile">
                         <el-col :span="18">
-                            <el-input v-model.number="operatorDiaForm.mobile"  style="width: 187px;" maxlength="11">
-                                <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                            <el-input v-model.number="operatorDiaForm.mobile" style="width: 187px;" maxlength="11">
+                                <i class="el-icon-edit el-input__icon" slot="icon"></i>
                             </el-input>
                         </el-col>
                     </el-form-item>
 
                     <el-form-item label="邮箱:" prop="email">
                         <el-col :span="18">
-                            <el-input v-model="operatorDiaForm.email"  style="width: 187px;" maxlength="60">
-                                <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                            <el-input v-model="operatorDiaForm.email" style="width: 187px;" maxlength="60">
+                                <i class="el-icon-edit el-input__icon" slot="icon"></i>
                             </el-input>
                         </el-col>
                     </el-form-item>
 
                     <el-form-item label="姓名:" prop="realname">
                         <el-col :span="18">
-                            <el-input v-model.number="operatorDiaForm.realname"  style="width: 187px;" maxlength="16">
-                                <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                            <el-input v-model.number="operatorDiaForm.realname" style="width: 187px;" maxlength="16">
+                                <i class="el-icon-edit el-input__icon" slot="icon"></i>
                             </el-input>
                         </el-col>
                     </el-form-item>
@@ -295,10 +307,11 @@
 
 
             <!--分配楼栋-->
-            <el-dialog :title="buildingTitle" :visible.sync="dlgAllotBuildingVisible" size="mini"top="80px" :modal-append-to-body='false' @close="closeOperBuildingDialog('operBuildingDiaform')">
-                <el-form ref="operBuildingDiaform" :model="operBuildingDiaform" :rules="rules" label-width="100px" >
+            <el-dialog :title="buildingTitle" :visible.sync="dlgAllotBuildingVisible" size="mini" top="80px"
+                       :modal-append-to-body='false' @close="closeOperBuildingDialog('operBuildingDiaform')">
+                <el-form ref="operBuildingDiaform" :model="operBuildingDiaform" :rules="rules" label-width="100px">
                     <el-form-item label="操作员:" prop="operid">
-                        <el-col  :span="24">
+                        <el-col :span="24">
                             <el-select v-model="operBuildingDiaform.operid">
                                 <el-option
                                         v-for="operid in operlist"
@@ -338,13 +351,13 @@
 <script>
     var oper_validateOpercode = function (rule, value, callback) {
         //console.log(value)
-            if (!value) {
-                return callback(new Error('请输入登录名'));
-            }
-            if (!(/^[0-9a-zA-Z]*$/.test(value))) {
-                callback(new Error('账号非法,请填入字母、数字或它们的组合'));
-            }
-            callback();
+        if (!value) {
+            return callback(new Error('请输入登录名'));
+        }
+        if (!(/^[0-9a-zA-Z]*$/.test(value))) {
+            callback(new Error('账号非法,请填入字母、数字或它们的组合'));
+        }
+        callback();
     };
     var oper_validateMobile = function (rule, value, callback) {
         if (null != value && value.length > 0 && !(/^1\d{10}$/.test(value))) {
@@ -360,65 +373,65 @@
     };
 
     var oper_vue = new Vue({
-        el:'#operatorapp',
-        data:{
-            tableData:[],
+        el: '#operatorapp',
+        data: {
+            tableData: [],
             currPage: 1,
-            pageSize:10,
-            totSize:0,
+            pageSize: 10,
+            totSize: 0,
             currentRow: null,
-            regionDis:true,
-            operatorform:{
-                operid:'',
-                realname:''
+            regionDis: true,
+            operatorform: {
+                operid: '',
+                realname: ''
             },
-            roles:[],
+            roles: [],
             dialogFormVisible: false,
-            regions:[],
-            opertypes:[],
-            companys:[],
-            depts:[],
-            operatorDiaForm:{
-                operid:'',
-                opercode:'',
-                opername:'',
-                opertype:'',
-                roleid:'',
-                regionid:'',
-                mobile:'',
-                email:'',
-                realname:'',
-                companyId:'',
-                deptcode:''
+            regions: [],
+            opertypes: [],
+            companys: [],
+            depts: [],
+            operatorDiaForm: {
+                operid: '',
+                opercode: '',
+                opername: '',
+                opertype: '',
+                roleid: '',
+                regionid: '',
+                mobile: '',
+                email: '',
+                realname: '',
+                companyId: '',
+                deptcode: ''
             },
-            buildingTitle:'',
-            dlgAllotBuildingVisible:false,
-            allotbuilding:[],
-            buildingList:[],
-            selectBuildingList:[],
+            buildingTitle: '',
+            dlgAllotBuildingVisible: false,
+            allotbuilding: [],
+            buildingList: [],
+            selectBuildingList: [],
             listStyle: {
                 width: '318px',
                 height: '400px'
             },
-            operBuildingDiaform:{
-                operid:'',
-                buildingids:[]
+            operBuildingDiaform: {
+                operid: '',
+                buildingids: []
             },
-            operlist:[],
+            operlist: [],
 
-            rules:{
-                operid:[
-                    {required:true,message:'请输入操作员编号',trigger:'blur'},
-                    { min: 1, max: 20, message: '长度在 1 到 32 个字符', trigger: 'blur' }
+            rules: {
+                operid: [
+                    {required: true, message: '请输入操作员编号', trigger: 'blur'},
+                    {min: 1, max: 20, message: '长度在 1 到 32 个字符', trigger: 'blur'}
                 ],
-                opercode:[
-                    {required:true,message:'请输入登陆名',trigger:'blur'},
-                    { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' },
+                opercode: [
+                    {required: true, message: '请输入登陆名', trigger: 'blur'},
+                    {min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur'},
                     {validator: oper_validateOpercode, trigger: 'blur'}
                 ],
-                opername:[
-                    {required:true,message:'请输入操作员名称',trigger:'blur'},
-                    { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
+                opername: [
+                    {required: true, message: '请输入操作员名称', trigger: 'blur'},
+                    {min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur'}
                 ],
                 opertype: [
                     {required: true, message: '请选择操作员类别', trigger: 'blur'}
@@ -426,10 +439,10 @@
                 roleid: [
                     {required: true, message: '请选择角色', trigger: 'blur'}
                 ],
-                mobile:[
+                mobile: [
                     {validator: oper_validateMobile, trigger: 'blur'}
                 ],
-                email:[
+                email: [
                     {validator: oper_validateEmail, trigger: 'blur'}
                 ],
                 companyId: [
@@ -437,42 +450,42 @@
                 ],
                 deptcode: [
                     {required: true, message: '请选择所属部门', trigger: 'blur'}
-        ]
+                ]
 
             },
-            operatortitile:'添加操作员(默认密码为123456)',
+            operatortitile: '添加操作员(默认密码为123456)',
         },
-        methods:{
-            handleSizeChange:function(val) {
-                this.pageSize=val;
-                oper_commonQuery(this,this.operatorform.operid,this.operatorform.realname,this.currPage,val);
+        methods: {
+            handleSizeChange: function (val) {
+                this.pageSize = val;
+                oper_commonQuery(this, this.operatorform.operid, this.operatorform.realname, this.currPage, val);
                 //console.log('每页条'+val);
             },
-            currPageChange:function(val) {
-                this.currPage=val;
-                oper_commonQuery(this,this.operatorform.operid,this.operatorform.realname,this.currPage,this.pageSize);
+            currPageChange: function (val) {
+                this.currPage = val;
+                oper_commonQuery(this, this.operatorform.operid, this.operatorform.realname, this.currPage, this.pageSize);
                 //console.log('当前页:'+val);
             },
-            currRowChange:function(val) {
+            currRowChange: function (val) {
                 this.currentRow = val;
             },
-            query:function(){
-                this.pagesize=10;
-                this.currPage=1;
-                oper_commonQuery(this,this.operatorform.operid,this.operatorform.realname,this.currPage,this.pageSize);
+            query: function () {
+                this.pagesize = 10;
+                this.currPage = 1;
+                oper_commonQuery(this, this.operatorform.operid, this.operatorform.realname, this.currPage, this.pageSize);
             },
-            addOperator:function () {
-                oper_getFillData(this,"-1");
+            addOperator: function () {
+                oper_getFillData(this, "-1");
                 this.dialogFormVisible = true;
-                this.operatortitile="添加操作员(默认密码为123456)"
+                this.operatortitile = "添加操作员(默认密码为123456)"
             },
-            delOperator:function(operid){
+            delOperator: function (operid) {
                 oper_deletedata(operid);
             },
-            editOperator:function(operid){
-                oper_getFillData(this,operid);
+            editOperator: function (operid) {
+                oper_getFillData(this, operid);
                 this.dialogFormVisible = true;
-                this.operatortitile="修改操作员(默认密码为123456)"
+                this.operatortitile = "修改操作员(默认密码为123456)"
             },
             resetForm: function (formName) {
                 this.$refs[formName].resetFields();
@@ -482,60 +495,60 @@
                 this.$refs[formName].resetFields();
                 this.dialogFormVisible = false;
             },
-            saveOperator:function (formName) {
-                var _that=this;
+            saveOperator: function (formName) {
+                var _that = this;
                 var vali = false;
                 this.$refs[formName].validate(
-                    function(valid){
-                        if (valid){
+                    function (valid) {
+                        if (valid) {
                             vali = true;
-                        }else{
-                            vali=false;
+                        } else {
+                            vali = false;
                         }
                     });
-                if (vali==true){
-                    oper_saveData(_that,_that.operatorDiaForm,formName);
+                if (vali == true) {
+                    oper_saveData(_that, _that.operatorDiaForm, formName);
                 }
             },
             opertypeChange: function (value) {
                 if (value == 'H') {
                     this.regionDis = false;
-                } else  {
+                } else {
                     this.regionDis = true;
                 }
             },
-            resetPwd:function (operid) {
+            resetPwd: function (operid) {
                 oper_resetpwd(operid);
             },
-            allotBuilding:function (operid,opername) {
-                this.buildingTitle="正在为["+opername+"]分配设备"
+            allotBuilding: function (operid, opername) {
+                this.buildingTitle = "正在为[" + opername + "]分配设备"
                 this.operlist.push({
                     value: operid,
                     label: opername
                 })
                 this.operBuildingDiaform.operid = operid
-                oper_getBuildingData(this,operid);
-                this.dlgAllotBuildingVisible=true;
+                oper_getBuildingData(this, operid);
+                this.dlgAllotBuildingVisible = true;
 
             },
-            buildingChange:function (newTargetKeys) {
-                this.selectBuildingList=newTargetKeys;
+            buildingChange: function (newTargetKeys) {
+                this.selectBuildingList = newTargetKeys;
             },
-            cancelBuildingOper:function () {
-                this.allotbuilding=[];
-                this.buildingList=[];
-                this.operlist=[];
-                this.dlgAllotBuildingVisible=false;
+            cancelBuildingOper: function () {
+                this.allotbuilding = [];
+                this.buildingList = [];
+                this.operlist = [];
+                this.dlgAllotBuildingVisible = false;
             },
-            closeOperBuildingDialog:function () {
-                this.allotbuilding=[];
-                this.buildingList=[];
-                this.operlist=[];
-                this.dlgAllotBuildingVisible=false;
+            closeOperBuildingDialog: function () {
+                this.allotbuilding = [];
+                this.buildingList = [];
+                this.operlist = [];
+                this.dlgAllotBuildingVisible = false;
             },
-            saveBuildingOper:function () {
+            saveBuildingOper: function () {
                 var _that = this;
-                var token=$("meta[name='_csrf_token']").attr("value");
+                var token = $("meta[name='_csrf_token']").attr("value");
                 var operid = this.operBuildingDiaform.operid;
                 $.ajax({
                     type: "POST",
@@ -545,45 +558,45 @@
                     headers: {
                         'Accept': 'application/json',
                         'Content-Type': 'application/json',
-                        'X-CSRF-TOKEN':token,
+                        'X-CSRF-TOKEN': token,
                     },
                     data: JSON.stringify(_that.allotbuilding),
                     success: function (data) {
-                        if (data.okFlag==1){
-                            _that.dlgAllotBuildingVisible=false;
-                            layer.msg(data.result, {icon: 1,time:2000});
-                            _that.selectBuildingList=[];
-                        }else{
-                            layer.msg(data.result, {icon: 2,time:2000});
+                        if (data.okFlag == 1) {
+                            _that.dlgAllotBuildingVisible = false;
+                            layer.msg(data.result, {icon: 1, time: 2000});
+                            _that.selectBuildingList = [];
+                        } else {
+                            layer.msg(data.result, {icon: 2, time: 2000});
                         }
                     }
                 });
             }
         },
-        created:function(){
-            var _self=this;
+        created: function () {
+            var _self = this;
             $.ajax({
-                type:"get",
-                dataType:"json",
-                url:encodeURI("[[@{/operator/loadOperatorList}]]"),
-                success:function(ret){
+                type: "get",
+                dataType: "json",
+                url: encodeURI("[[@{/operator/loadOperatorList}]]"),
+                success: function (ret) {
                     //console.log(ret);
-                    _self.totSize=ret.PageResult.totalCount;
-                    _self.tableData=ret.PageResult.list;
+                    _self.totSize = ret.PageResult.totalCount;
+                    _self.tableData = ret.PageResult.list;
                 }
             })
         }
     })
 
-    function oper_refreshThisTable(){
-        oper_commonQuery(oper_vue,oper_vue.operatorform.operid,oper_vue.operatorform.realname,oper_vue.currPage,oper_vue.pageSize);
+    function oper_refreshThisTable() {
+        oper_commonQuery(oper_vue, oper_vue.operatorform.operid, oper_vue.operatorform.realname, oper_vue.currPage, oper_vue.pageSize);
     };
 
-    function oper_commonQuery(_self,operid,realname,pageno,pagesize){
+    function oper_commonQuery(_self, operid, realname, pageno, pagesize) {
         $.ajax({
             type: "get",
             dataType: "json",
-            url: encodeURI("[[@{/operator/loadOperatorList?operid=}]]"+operid+"&realname=" + realname + "&pageNo=" + pageno + "&pageSize=" + pagesize),
+            url: encodeURI("[[@{/operator/loadOperatorList?operid=}]]" + operid + "&realname=" + realname + "&pageNo=" + pageno + "&pageSize=" + pagesize),
             success: function (ret) {
                 _self.totSize = ret.PageResult.totalCount;
                 _self.tableData = ret.PageResult.list;
@@ -594,16 +607,16 @@
         })
     }
 
-    function oper_deletedata(operid){
-        layer.confirm('是否删除该操作员', {icon: 3, title:'请确认',offset:'30%'},function(index){
+    function oper_deletedata(operid) {
+        layer.confirm('是否删除该操作员', {icon: 3, title: '请确认', offset: '30%'}, function (index) {
             $.ajax({
-                type:"get",
-                dataType:"json",
-                url:"[[@{/operator/deleteOperator?operid=}]]"+operid,
-                success:function(ret){
-                    if(ret.message == undefined){
-                        layer.msg('用户认证已过期,请重新登录', {icon:2,time:1000});
-                        window.location="login";
+                type: "get",
+                dataType: "json",
+                url: "[[@{/operator/deleteOperator?operid=}]]" + operid,
+                success: function (ret) {
+                    if (ret.message == undefined) {
+                        layer.msg('用户认证已过期,请重新登录', {icon: 2, time: 1000});
+                        window.location = "login";
                         return;
                     }
                     if (ret.message != "") {
@@ -653,20 +666,20 @@
 
                 var rolelist = [];
                 var roles = ret.roles;
-                for (var j=0;j<roles.length;j++){
+                for (var j = 0; j < roles.length; j++) {
                     rolelist.push({
-                        value:roles[j]["roleId"],
-                        label:roles[j]["roleName"]
+                        value: roles[j]["roleId"],
+                        label: roles[j]["roleName"]
                     });
                 }
                 _self.roles = rolelist;
 
                 var regionlist = [];
                 var regions = ret.regions;
-                for (var z=0;z<regions.length;z++){
+                for (var z = 0; z < regions.length; z++) {
                     regionlist.push({
-                        value:regions[z]["regionid"],
-                        label:regions[z]["regionname"]
+                        value: regions[z]["regionid"],
+                        label: regions[z]["regionname"]
                     });
                 }
                 _self.regions = regionlist;
@@ -674,24 +687,24 @@
 
                 var companylist = [];
                 var companys = ret.companys;
-                for (var k=0;k<companys.length;k++){
+                for (var k = 0; k < companys.length; k++) {
                     companylist.push({
-                        value:companys[k]["companyId"],
-                        label:companys[k]["companyName"]
+                        value: companys[k]["companyId"],
+                        label: companys[k]["companyName"]
                     });
                 }
                 _self.companys = companylist;
 
-                var deptlist=[];
+                var deptlist = [];
                 var depts = ret.depts;
                 deptlist.push({
-                    value:"0",
-                    label:"全部"
+                    value: "0",
+                    label: "全部"
                 });
-                for (var k=0;k<depts.length;k++){
+                for (var k = 0; k < depts.length; k++) {
                     deptlist.push({
-                        value:depts[k]["deptcode"],
-                        label:depts[k]["deptname"]
+                        value: depts[k]["deptcode"],
+                        label: depts[k]["deptname"]
                     });
                 }
 
@@ -702,20 +715,19 @@
     }
 
 
-
-    function oper_saveData(_that,formdata,formName){
-        if (formdata.opertype=='H' && formdata.regionid==''){
+    function oper_saveData(_that, formdata, formName) {
+        if (formdata.opertype == 'H' && formdata.regionid == '') {
             layer.msg('区域管理员请选择管辖区域!', {icon: 2, time: 1000});
             return;
         }
         var url = null;
-        if(oper_vue.operatortitile == "添加操作员(默认密码为123456)"){
+        if (oper_vue.operatortitile == "添加操作员(默认密码为123456)") {
             url = encodeURI("[[@{/operator/addOperator}]]");
         }
-        if(oper_vue.operatortitile == "修改操作员(默认密码为123456)"){
+        if (oper_vue.operatortitile == "修改操作员(默认密码为123456)") {
             url = encodeURI("[[@{/operator/updateOperator}]]")
         }
-        var token=$("meta[name='_csrf_token']").attr("value");
+        var token = $("meta[name='_csrf_token']").attr("value");
         $.ajax({
             type: "POST",
             url: url,
@@ -724,14 +736,14 @@
             headers: {
                 'Accept': 'application/json',
                 'Content-Type': 'application/json',
-                'X-CSRF-TOKEN':token,
+                'X-CSRF-TOKEN': token,
             },
             data: JSON.stringify(formdata),
             success: function (data) {
                 if (data.errStr != "") {
-                    layer.msg(data.errStr, {icon: 2,time:1000});
+                    layer.msg(data.errStr, {icon: 2, time: 1000});
                 } else {
-                    layer.msg('保存信息成功!', {icon: 1,time:1000});
+                    layer.msg('保存信息成功!', {icon: 1, time: 1000});
                     oper_refreshThisTable();
                     _that.$refs[formName].resetFields();
                     _that.dialogFormVisible = false;
@@ -741,23 +753,23 @@
     }
 
 
-    function oper_resetpwd(operid){
-        layer.confirm('是否重置该操作员密码?', {icon: 3, title:'请确认'}, function(index){
+    function oper_resetpwd(operid) {
+        layer.confirm('是否重置该操作员密码?', {icon: 3, title: '请确认'}, function (index) {
             $.ajax({
-                type:"get",
-                dataType:"json",
-                url:"[[@{/operator/resetpwd?operid=}]]"+operid,
-                success:function(ret){
+                type: "get",
+                dataType: "json",
+                url: "[[@{/operator/resetpwd?operid=}]]" + operid,
+                success: function (ret) {
                     //console.log(ret);
-                    if(ret.code == undefined){
-                        layer.msg('用户认证已过期,请重新登录', {icon:2,time:1000});
-                        window.location="login";
+                    if (ret.code == undefined) {
+                        layer.msg('用户认证已过期,请重新登录', {icon: 2, time: 1000});
+                        window.location = "login";
                         return;
                     }
                     if (ret.code != 200) {
-                        layer.msg(ret.message, {icon:2,time:1000});
-                    }else{
-                        layer.msg("操作成功,密码重置为123456", {icon: 1,time:1000});
+                        layer.msg(ret.message, {icon: 2, time: 1000});
+                    } else {
+                        layer.msg("操作成功,密码重置为123456", {icon: 1, time: 1000});
 
                     }
                 }
@@ -765,34 +777,34 @@
         });
     };
 
-    function oper_getBuildingData(_that,operid) {
+    function oper_getBuildingData(_that, operid) {
         $.ajax({
-            type:"get",
-            dataType:"json",
-            url:encodeURI("[[@{/system/getBuildingList?operid=}]]"+operid),
-            success:function(ret){
-                if (ret.flag==1){
-                    layer.msg(ret.result, {icon: 2,time:1000});
+            type: "get",
+            dataType: "json",
+            url: encodeURI("[[@{/system/getBuildingList?operid=}]]" + operid),
+            success: function (ret) {
+                if (ret.flag == 1) {
+                    layer.msg(ret.result, {icon: 2, time: 1000});
                     return;
-                }else{
+                } else {
                     var srcdata = [];
-                    var trgdata=[];
+                    var trgdata = [];
                     var buildinglist = ret.buildinglist;
 
                     for (var i = 0; i < buildinglist.length; i++) {
                         srcdata.push({
-                            key: buildinglist[i].regionid+'#'+buildinglist[i].buildingid,
-                            label: buildinglist[i].regionname+'->'+buildinglist[i].buildingname,
+                            key: buildinglist[i].regionid + '#' + buildinglist[i].buildingid,
+                            label: buildinglist[i].regionname + '->' + buildinglist[i].buildingname,
 
                         });
                     }
                     var buildinglisted = ret.buildinglisted;
                     for (var i = 0; i < buildinglisted.length; i++) {
-                        trgdata.push(buildinglisted[i].regionid+'#'+buildinglisted[i].buildingid);
+                        trgdata.push(buildinglisted[i].regionid + '#' + buildinglisted[i].buildingid);
                     }
 
-                    _that.buildingList=srcdata;
-                    _that.allotbuilding=trgdata;
+                    _that.buildingList = srcdata;
+                    _that.allotbuilding = trgdata;
                 }
             }
         })
@@ -800,22 +812,23 @@
     }
 
 
-
 </script>
 <style lang="scss">
-    .el-checkbox-group.el-transfer-panel__list{
-        height:277px;
+    .el-checkbox-group.el-transfer-panel__list {
+        height: 277px;
     }
 
     .el-dialog {
         width: 900px;
     }
-    .el-transfer-panel{
-        width:347px;
+
+    .el-transfer-panel {
+        width: 347px;
     }
-    .el-transfer-panel__body{
-        height:360px;
-        width:345px;
+
+    .el-transfer-panel__body {
+        height: 360px;
+        width: 345px;
     }
 
 </style>
\ No newline at end of file
diff --git a/src/main/resources/templates/visitormanage/addVisitorCheck.html b/src/main/resources/templates/visitormanage/addVisitorCheck.html
index bd0d532..6155f25 100644
--- a/src/main/resources/templates/visitormanage/addVisitorCheck.html
+++ b/src/main/resources/templates/visitormanage/addVisitorCheck.html
@@ -8,23 +8,23 @@
     </div>
     <div class="layui-card-body">
         <div id="searchDoorlist">
-            <el-form :inline="true" ref="searchDoorForm" :model="searchDoorForm" label-width="110px"
+            <el-form :inline="true" ref="searchDoorForm" :model="searchDoorForm" :rules="rules" label-width="110px"
                      data-parsley-validate class="form-horizontal form-label-left el-form-item el-form-item--mini">
 
                 <el-row :span="18">
-                        <el-col :span="18">
-                            <el-form-item label="姓名">
+                    <el-col :span="18">
+                        <el-form-item label="姓名">
 
                             <el-input v-model="searchDoorForm.visitorname" id="visitorname" placeholder="访客姓名">
                                 <i class="el-icon-edit el-input__icon" slot="icon"></i>
-                    </el-input>
-                    </el-form-item>
-                        </el-col>
+                            </el-input>
+                        </el-form-item>
+                    </el-col>
                 </el-row>
                 <el-row :span="18">
                     <el-col :span="18">
                         <el-form-item label="性别">
-                            <el-select v-model="searchDoorForm.sex" id="sex" placeholder="请选择" >
+                            <el-select v-model="searchDoorForm.sex" id="sex" placeholder="请选择">
                                 <el-option
                                         v-for="status in sexlist"
                                         :key="status.value"
@@ -37,38 +37,38 @@
                 </el-row>
                 <el-row :span="18">
 
-                        <el-col :span="18">
-                            <el-form-item label="身份证号">
+                    <el-col :span="18">
+                        <el-form-item label="身份证号">
 
                             <el-input v-model="searchDoorForm.idno" id="idno" placeholder="访客身份证号">
                                 <i class="el-icon-edit el-input__icon" slot="icon"></i>
                             </el-input>
-                    </el-form-item>
-                        </el-col>
+                        </el-form-item>
+                    </el-col>
 
                 </el-row>
                 <el-row :span="18">
 
-                        <el-col :span="18">
-                            <el-form-item label="联系方式">
+                    <el-col :span="18">
+                        <el-form-item label="联系方式">
 
                             <el-input v-model="searchDoorForm.phone" id="phone" placeholder="访客联系方式">
                                 <i class="el-icon-edit el-input__icon" slot="icon"></i>
                             </el-input>
-                    </el-form-item>
-                        </el-col>
+                        </el-form-item>
+                    </el-col>
                 </el-row>
                 <el-row :span="18">
                     <el-col :span="18">
                         <el-form-item label="时间">
                             <el-date-picker type="date" v-model="searchDoorForm.time" id="time"
-                                            :picker-options="pickerOptions0" :editable="false" placeholder="访问时间"  value-format="yyyyMMdd"
+                                            :picker-options="pickerOptions0" :editable="false" placeholder="访问时间"
+                                            value-format="yyyyMMdd"
                                             style="width:100%;"></el-date-picker>
                         </el-form-item>
                     </el-col>
 
 
-
                 </el-row>
                 <el-row :span="18">
                     <el-col :span="18">
@@ -84,7 +84,8 @@
                 <el-row :span="18">
                     <el-col :span="18">
                         <el-form-item label="受访者部门">
-                            <el-select v-model="searchDoorForm.deptcode" id="deptcode" placeholder="请选择" @change="deptchange(searchDoorForm.deptcode)">
+                            <el-select v-model="searchDoorForm.deptcode" id="deptcode" placeholder="请选择"
+                                       @change="deptchange(searchDoorForm.deptcode)">
                                 <el-option
                                         v-for="status in deptlist"
                                         :key="status.value"
@@ -121,7 +122,8 @@
 
                 <el-row>
                     <el-col :span="8" :offset="16">
-                        <button type="button" style="margin-left: 48px" class="btn btn-info" @click="savevisitor(searchDoorForm)"
+                        <button type="button" style="margin-left: 48px" class="btn btn-info"
+                                @click="savevisitor(searchDoorForm)"
                                 id="searchDoorlist_qrybtn">
                             保存
                         </button>
@@ -197,11 +199,40 @@
                     }
                 }
             }
+            ,
+            rules: {
+                visitorname: [
+                    {required: true, message: '请输入访客姓名', trigger: 'blur'},
+                    {min: 1, max: 20, message: '长度在 1 到 32 个字符', trigger: 'blur'}
+                ],
+                idno: [
+                    {required: true, message: '请输入身份证号', trigger: 'blur'},
+                    {min: 15, max: 18, message: '长度在 15 到 18 个字符', trigger: 'blur'},
+                ],
+                time: [
+                    {required: true, message: '请输入时间', trigger: 'blur'},
+                ],
+                sex: [
+                    {required: true, message: '请选择性别', trigger: 'blur'}
+                ],
+
+                phone: [
+                    {validator: oper_validateMobile, trigger: 'blur'}
+                ],
+
+                company: [
+                    {required: true, message: '请填写访客单位', trigger: 'blur'}
+                ],
+                deptcode: [
+                    {required: true, message: '请选择所属部门', trigger: 'blur'}
+                ]
+
+            },
         },
         methods: {
 
             savevisitor: function (formName) {
-                searchDoorlist_commonQuery(this, this.searchDoorForm,formName);
+                searchDoorlist_commonQuery(this, this.searchDoorForm, formName);
             },
 
             deptchange: function (deptcode) {
@@ -283,6 +314,12 @@
             if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
         return fmt;
     }
+    var oper_validateMobile = function (rule, value, callback) {
+        if (null != value && value.length > 0 && !(/^1\d{10}$/.test(value))) {
+            callback(new Error('请输出正确的手机号'));
+        }
+        callback();
+    };
 
     function searchDoorlist_getTreeData(regionlst) {
         var f = [];
@@ -372,9 +409,34 @@
     }
 
 
-    function searchDoorlist_commonQuery(_self, searchDoor,formName) {
+    function searchDoorlist_commonQuery(_self, searchDoor, formName) {
         var url = "[[@{/visitor/addvisitorcheck?}]]";
         var token = $("meta[name='_csrf_token']").attr("value");
+        if(searchDoor.visitorname==null||searchDoor.visitorname.length==0){
+            alert("请输入访客姓名");
+            return;
+        }if(searchDoor.idno==null||searchDoor.idno.length<=18){
+            alert("请输入访客身份证号");
+            return;
+        }if(searchDoor.phone==null||searchDoor.phone<=11){
+            alert("请输入访客联系方式");
+            return;
+        }if(searchDoor.sex==null||searchDoor.sex==0){
+            alert("请选择性别");
+            return;
+        }if(searchDoor.time==null||searchDoor.time==0){
+            alert("请输入时间");
+            return;
+        }if(searchDoor.company==null||searchDoor.company==0){
+            alert("请输入访客单位");
+            return;
+        }if(searchDoor.deptcode==null||searchDoor.deptcode==0){
+            alert("请选择受访者部门");
+            return;
+        }if(searchDoor.custid==null||searchDoor.custid==0){
+            alert("请选择受访者姓名");
+            return;
+        }
         $.ajax({
             type: "POST",
             url: url,
@@ -383,14 +445,14 @@
             headers: {
                 'Accept': 'application/json',
                 'Content-Type': 'application/json',
-                'X-CSRF-TOKEN':token,
+                'X-CSRF-TOKEN': token,
             },
             data: JSON.stringify(searchDoor),
             success: function (data) {
                 if (data.errStr != "") {
-                    layer.msg(data.errStr, {icon: 2,time:1000});
+                    layer.msg(data.errStr, {icon: 2, time: 1000});
                 } else {
-                    layer.msg('保存信息成功!', {icon: 1,time:1000});
+                    layer.msg('保存信息成功!', {icon: 1, time: 1000});
                     _self.$refs[formName].resetFields();
                     _self.dialogFormVisible = false;
                     _self.regionidDis = false;