ソースを参照

优化 申请钥匙页面

wuxw 6 年 前
コミット
89f9db0c2a

+ 26 - 0
Api/src/main/java/com/java110/api/listener/applicationKey/SaveApplicationKeyListener.java

@@ -3,6 +3,8 @@ package com.java110.api.listener.applicationKey;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.smo.hardwareAdapation.IMachineInnerServiceSMO;
+import com.java110.dto.hardwareAdapation.MachineDto;
 import com.java110.utils.util.Assert;
 import com.java110.core.context.DataFlowContext;
 import com.java110.entity.center.AppService;
@@ -14,16 +16,23 @@ import com.java110.utils.constant.ServiceCodeApplicationKeyConstant;
 
 
 import com.java110.core.annotation.Java110Listener;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 
+import java.util.List;
+
 /**
  * 保存小区侦听
  * add by wuxw 2019-06-30
  */
 @Java110Listener("saveApplicationKeyListener")
 public class SaveApplicationKeyListener extends AbstractServiceApiListener {
+
+    @Autowired
+    private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
+
     @Override
     protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
         //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
@@ -36,6 +45,8 @@ public class SaveApplicationKeyListener extends AbstractServiceApiListener {
         Assert.hasKeyAndValue(reqJson, "idCard", "必填,请填写身份证号");
         Assert.hasKeyAndValue(reqJson, "startTime", "必填,请选择开始时间");
         Assert.hasKeyAndValue(reqJson, "endTime", "必填,请选择结束时间");
+        Assert.hasKeyAndValue(reqJson, "locationTypeCd", "必填,位置不能为空");
+        Assert.hasKeyAndValue(reqJson, "locationObjId", "必填,未选择位置对象");
 
     }
 
@@ -86,6 +97,13 @@ public class SaveApplicationKeyListener extends AbstractServiceApiListener {
      */
     private JSONObject addApplicationKey(JSONObject paramInJson, DataFlowContext dataFlowContext) {
 
+        //根据位置id 和 位置对象查询相应 设备ID
+        MachineDto machineDto = new MachineDto();
+        machineDto.setLocationObjId(paramInJson.getString("locationObjId"));
+        machineDto.setLocationTypeCd(paramInJson.getString("locationTypeCd"));
+        List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
+
+        Assert.listOnlyOne(machineDtos, "该位置还没有相应的门禁设备");
 
         JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
         business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_APPLICATION_KEY);
@@ -93,10 +111,18 @@ public class SaveApplicationKeyListener extends AbstractServiceApiListener {
         business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
         JSONObject businessApplicationKey = new JSONObject();
         businessApplicationKey.putAll(paramInJson);
+        businessApplicationKey.put("machineId", machineDtos.get(0).getMachineId());
         businessApplicationKey.put("applicationKeyId", "-1");
         //计算 应收金额
         business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessApplicationKey", businessApplicationKey);
         return business;
     }
 
+    public IMachineInnerServiceSMO getMachineInnerServiceSMOImpl() {
+        return machineInnerServiceSMOImpl;
+    }
+
+    public void setMachineInnerServiceSMOImpl(IMachineInnerServiceSMO machineInnerServiceSMOImpl) {
+        this.machineInnerServiceSMOImpl = machineInnerServiceSMOImpl;
+    }
 }

+ 24 - 1
Api/src/main/java/com/java110/api/listener/applicationKey/UpdateApplicationKeyListener.java

@@ -3,6 +3,8 @@ package com.java110.api.listener.applicationKey;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.smo.hardwareAdapation.IMachineInnerServiceSMO;
+import com.java110.dto.hardwareAdapation.MachineDto;
 import com.java110.utils.constant.BusinessTypeConstant;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.constant.ServiceCodeConstant;
@@ -12,16 +14,22 @@ import com.java110.core.context.DataFlowContext;
 import com.java110.entity.center.AppService;
 import com.java110.event.service.api.ServiceDataFlowEvent;
 import com.java110.utils.constant.ServiceCodeApplicationKeyConstant;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 
+import java.util.List;
+
 /**
  * 保存钥匙申请侦听
  * add by wuxw 2019-06-30
  */
 @Java110Listener("updateApplicationKeyListener")
 public class UpdateApplicationKeyListener extends AbstractServiceApiListener {
+
+    @Autowired
+    private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
     @Override
     protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
 
@@ -34,6 +42,8 @@ public class UpdateApplicationKeyListener extends AbstractServiceApiListener {
         Assert.hasKeyAndValue(reqJson, "idCard", "必填,请填写身份证号");
         Assert.hasKeyAndValue(reqJson, "startTime", "必填,请选择开始时间");
         Assert.hasKeyAndValue(reqJson, "endTime", "必填,请选择结束时间");
+        Assert.hasKeyAndValue(reqJson, "locationTypeCd", "必填,位置不能为空");
+        Assert.hasKeyAndValue(reqJson, "locationObjId", "必填,未选择位置对象");
 
     }
 
@@ -83,7 +93,12 @@ public class UpdateApplicationKeyListener extends AbstractServiceApiListener {
      * @return 订单服务能够接受的报文
      */
     private JSONObject updateApplicationKey(JSONObject paramInJson, DataFlowContext dataFlowContext) {
-
+        //根据位置id 和 位置对象查询相应 设备ID
+        MachineDto machineDto = new MachineDto();
+        machineDto.setLocationObjId(paramInJson.getString("locationObjId"));
+        machineDto.setLocationTypeCd(paramInJson.getString("locationTypeCd"));
+        List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
+        Assert.listOnlyOne(machineDtos, "该位置还没有相应的门禁设备");
 
         JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
         business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_APPLICATION_KEY);
@@ -91,9 +106,17 @@ public class UpdateApplicationKeyListener extends AbstractServiceApiListener {
         business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
         JSONObject businessApplicationKey = new JSONObject();
         businessApplicationKey.putAll(paramInJson);
+        businessApplicationKey.put("machineId", machineDtos.get(0).getMachineId());
         //计算 应收金额
         business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessApplicationKey", businessApplicationKey);
         return business;
     }
 
+    public IMachineInnerServiceSMO getMachineInnerServiceSMOImpl() {
+        return machineInnerServiceSMOImpl;
+    }
+
+    public void setMachineInnerServiceSMOImpl(IMachineInnerServiceSMO machineInnerServiceSMOImpl) {
+        this.machineInnerServiceSMOImpl = machineInnerServiceSMOImpl;
+    }
 }

+ 2 - 0
WebService/src/main/java/com/java110/web/smo/applicationKey/impl/AddApplicationKeySMOImpl.java

@@ -39,6 +39,8 @@ public class AddApplicationKeySMOImpl extends AbstractComponentSMO implements IA
         Assert.hasKeyAndValue(paramIn, "idCard", "必填,请填写身份证号");
         Assert.hasKeyAndValue(paramIn, "startTime", "必填,请选择开始时间");
         Assert.hasKeyAndValue(paramIn, "endTime", "必填,请选择结束时间");
+        Assert.hasKeyAndValue(paramIn, "locationTypeCd", "必填,位置不能为空");
+        Assert.hasKeyAndValue(paramIn, "locationObjId", "必填,未选择位置对象");
 
 
         super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.LIST_APPLICATION_KEY);

+ 2 - 0
WebService/src/main/java/com/java110/web/smo/applicationKey/impl/EditApplicationKeySMOImpl.java

@@ -37,6 +37,8 @@ public class EditApplicationKeySMOImpl extends AbstractComponentSMO implements I
         Assert.hasKeyAndValue(paramIn, "idCard", "必填,请填写身份证号");
         Assert.hasKeyAndValue(paramIn, "startTime", "必填,请选择开始时间");
         Assert.hasKeyAndValue(paramIn, "endTime", "必填,请选择结束时间");
+        Assert.hasKeyAndValue(paramIn, "locationTypeCd", "必填,位置不能为空");
+        Assert.hasKeyAndValue(paramIn, "locationObjId", "必填,未选择位置对象");
 
 
         super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.LIST_APPLICATION_KEY);

+ 66 - 66
WebService/src/main/resources/components/applicationKeyPackage/add-applicationKey/addApplicationKey.html

@@ -1,4 +1,5 @@
-<div id = "addApplicationKeyModel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" >
+<div id="addApplicationKeyModel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
+     aria-hidden="true">
     <div class="modal-dialog modal-lg">
         <div class="modal-content">
             <div class="modal-body">
@@ -6,78 +7,76 @@
                 <div class="ibox-content">
                     <div>
                         <div>
-                            <!--<div class="form-group row">
-                                <label class="col-sm-2 col-form-label">楼名称</label>
-                                <div class="col-sm-10"><input v-model="addFloorInfo.name" type="text" placeholder="必填,请填写名称" class="form-control"></div>
+
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">姓名</label>
+                                <div class="col-sm-10">
+                                    <input v-model="addApplicationKeyInfo.name" type="text" placeholder="必填,请填写姓名"
+                                           class="form-control">
+                                </div>
                             </div>
                             <div class="form-group row">
-                                <label class="col-sm-2 col-form-label">楼编号</label>
-                                <div class="col-sm-10"><input v-model="addFloorInfo.floorNum" type="email" placeholder="必填,请填写编号" class="form-control"></div>
+                                <label class="col-sm-2 col-form-label">手机号</label>
+                                <div class="col-sm-10">
+                                    <input v-model="addApplicationKeyInfo.tel" type="text" placeholder="必填,请填写手机号"
+                                           class="form-control">
+                                </div>
                             </div>
                             <div class="form-group row">
-                                <label class="col-sm-2 col-form-label">备注</label>
-                                <div class="col-sm-10"><input v-model="addFloorInfo.remark" type="tel" placeholder="可填,请填写备注" class="form-control"></div>
-                            </div>-->
-
+                                <label class="col-sm-2 col-form-label">用户类型</label>
+                                <div class="col-sm-10">
+                                    <select class="custom-select" v-model="addApplicationKeyInfo.typeCd">
+                                        <option selected disabled value="">必填,请选择用户类型</option>
+                                        <option value="10001">保洁</option>
+                                        <option value="10002">保安</option>
+                                        <option value="10003">其他人员</option>
+                                    </select></div>
+                            </div>
                             <div class="form-group row">
-         <label class="col-sm-2 col-form-label">姓名</label>
-         <div class="col-sm-10">
-           <input v-model="addApplicationKeyInfo.name"                   type="text" placeholder="必填,请填写姓名" class="form-control">
-         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">手机号</label>
-         <div class="col-sm-10">
-           <input v-model="addApplicationKeyInfo.tel"                   type="text" placeholder="必填,请填写手机号" class="form-control">
-         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">用户类型</label>
-         <div class="col-sm-10">
-<select class="custom-select" v-model="addApplicationKeyInfo.typeCd">
-         <option selected  disabled value="">必填,请选择用户类型</option>
-         <option  value="10001">保洁</option>
-<option  value="10002">保安</option>
-<option  value="10003">其他人员</option>
-  </select>         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">性别</label>
-         <div class="col-sm-10">
-<select class="custom-select" v-model="addApplicationKeyInfo.sex">
-         <option selected  disabled value="">必填,请选择性别</option>
-         <option  value="0">男</option>
-<option  value="1">女</option>
-  </select>         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">年龄</label>
-         <div class="col-sm-10">
-           <input v-model="addApplicationKeyInfo.age"                   type="text" placeholder="必填,请填写年龄" class="form-control">
-         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">身份证号</label>
-         <div class="col-sm-10">
-           <input v-model="addApplicationKeyInfo.idCard"                   type="text" placeholder="必填,请填写身份证号" class="form-control">
-         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">开始时间</label>
-         <div class="col-sm-10">
-           <input v-model="addApplicationKeyInfo.startTime"                   type="text" placeholder="必填,请填写开始时间" class="form-control">
-         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">结束时间</label>
-         <div class="col-sm-10">
-           <input v-model="addApplicationKeyInfo.endTime"                   type="text" placeholder="必填,请填写结束时间" class="form-control">
-         </div>
-</div>
+                                <label class="col-sm-2 col-form-label">性别</label>
+                                <div class="col-sm-10">
+                                    <select class="custom-select" v-model="addApplicationKeyInfo.sex">
+                                        <option selected disabled value="">必填,请选择性别</option>
+                                        <option value="0">男</option>
+                                        <option value="1">女</option>
+                                    </select></div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">年龄</label>
+                                <div class="col-sm-10">
+                                    <input v-model="addApplicationKeyInfo.age" type="text" placeholder="必填,请填写年龄"
+                                           class="form-control">
+                                </div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">身份证号</label>
+                                <div class="col-sm-10">
+                                    <input v-model="addApplicationKeyInfo.idCard" type="text" placeholder="必填,请填写身份证号"
+                                           class="form-control">
+                                </div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">开始时间</label>
+                                <div class="col-sm-10">
+                                    <input v-model="addApplicationKeyInfo.startTime" type="text"
+                                           placeholder="必填,请填写开始时间" class="form-control">
+                                </div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">结束时间</label>
+                                <div class="col-sm-10">
+                                    <input v-model="addApplicationKeyInfo.endTime" type="text" placeholder="必填,请填写结束时间"
+                                           class="form-control">
+                                </div>
+                            </div>
 
                             <div class="ibox-content">
-                                <button class="btn btn-primary float-right" type="button" v-on:click="saveApplicationKeyInfo()" ><i class="fa fa-check"></i>&nbsp;保存</button>
-                                <button type="button" class="btn btn-warning float-right" style="margin-right:20px;" data-dismiss="modal">取消</button>
+                                <button class="btn btn-primary float-right" type="button"
+                                        v-on:click="saveApplicationKeyInfo()"><i class="fa fa-check"></i>&nbsp;保存
+                                </button>
+                                <button type="button" class="btn btn-warning float-right" style="margin-right:20px;"
+                                        data-dismiss="modal">取消
+                                </button>
                             </div>
                         </div>
                     </div>
@@ -86,3 +85,4 @@
         </div>
     </div>
 </div>
+

+ 136 - 0
WebService/src/main/resources/components/applicationKeyPackage/add-applicationKeyView/addApplicationKey.html

@@ -0,0 +1,136 @@
+<div class="row">
+    <div class="col-lg-12">
+        <div class="ibox">
+            <div class="ibox-title">
+                <h5>申请钥匙</h5>
+                <div class="ibox-tools" style="top:10px;">
+
+                </div>
+            </div>
+            <div class="ibox-content">
+
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">姓名</label>
+                    <div class="col-sm-10">
+                        <input v-model="addApplicationKeyInfo.name" type="text" placeholder="必填,请填写姓名"
+                               class="form-control">
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">手机号</label>
+                    <div class="col-sm-10">
+                        <input v-model="addApplicationKeyInfo.tel" type="text" placeholder="必填,请填写手机号"
+                               class="form-control">
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">用户类型</label>
+                    <div class="col-sm-10">
+                        <select class="custom-select" v-model="addApplicationKeyInfo.typeCd">
+                            <option selected disabled value="">必填,请选择用户类型</option>
+                            <option value="10001">保洁</option>
+                            <option value="10002">保安</option>
+                            <option value="10003">其他人员</option>
+                        </select></div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">性别</label>
+                    <div class="col-sm-10">
+                        <select class="custom-select" v-model="addApplicationKeyInfo.sex">
+                            <option selected disabled value="">必填,请选择性别</option>
+                            <option value="0">男</option>
+                            <option value="1">女</option>
+                        </select></div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">年龄</label>
+                    <div class="col-sm-10">
+                        <input v-model="addApplicationKeyInfo.age" type="text" placeholder="必填,请填写年龄"
+                               class="form-control">
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">身份证号</label>
+                    <div class="col-sm-10">
+                        <input v-model="addApplicationKeyInfo.idCard" type="text" placeholder="必填,请填写身份证号"
+                               class="form-control">
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">设备位置</label>
+                    <div class="col-sm-10">
+                        <select class="custom-select" v-model="addApplicationKeyInfo.locationTypeCd">
+                            <option selected disabled value="">必填,请选择设备位置</option>
+                            <option value="1000">东大门</option>
+                            <option value="1001">西大门</option>
+                            <option value="1002">北大门</option>
+                            <option value="1003">南大门</option>
+                            <option value="2000">单元门</option>
+                            <option value="3000">房屋门</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="form-group row"
+                     v-show="addApplicationKeyInfo.locationTypeCd == '2000' || addApplicationKeyInfo.locationTypeCd == '3000'  ">
+                    <label class="col-sm-2 col-form-label">归属楼栋</label>
+                    <div class="col-sm-10">
+                        <vc:create name="floorSelect2"
+                                   parentModal="addApplicationKeyModel"
+                                   namespace="addApplicationKey"
+                        ></vc:create>
+                    </div>
+                </div>
+                <div class="form-group row"
+                     v-show="addApplicationKeyInfo.locationTypeCd == '2000' || addApplicationKeyInfo.locationTypeCd == '3000'  ">
+                    <label class="col-sm-2 col-form-label">归属单元</label>
+                    <div class="col-sm-10">
+                        <vc:create name="unitSelect2"
+                                   parentModal="addApplicationKeyModel"
+                                   callBackListener="addApplicationKey"
+                                   callBackFunction="notify"
+                                   namespace="addApplicationKey"
+                        ></vc:create>
+                    </div>
+                </div>
+                <div class="form-group row"
+                     v-show="addApplicationKeyInfo.locationTypeCd == '3000'  ">
+                    <label class="col-sm-2 col-form-label">归属房屋</label>
+                    <div class="col-sm-10">
+                        <vc:create name="roomSelect2"
+                                   parentModal="addApplicationKeyModel"
+                                   callBackListener="addApplicationKey"
+                                   callBackFunction="notify"
+                                   namespace="addApplicationKey"
+                        ></vc:create>
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">开始时间</label>
+                    <div class="col-sm-10">
+                        <input v-model="addApplicationKeyInfo.startTime" readonly type="text" placeholder="必填,请填写开始时间"
+                               class="form-control addApplicationStartTime">
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">结束时间</label>
+                    <div class="col-sm-10">
+                        <input v-model="addApplicationKeyInfo.endTime" readonly type="text" placeholder="必填,请填写结束时间"
+                               class="form-control addApplicationEndTime">
+                    </div>
+                </div>
+
+                <div class="ibox-content">
+                    <button class="btn btn-primary float-right" type="button"
+                            v-on:click="saveApplicationKeyInfo()"><i class="fa fa-check"></i>&nbsp;保存
+                    </button>
+                    <button type="button" class="btn btn-warning float-right" style="margin-right:20px;"
+                            data-dismiss="modal">取消
+                    </button>
+                </div>
+
+            </div>
+        </div>
+    </div>
+</div>
+
+

+ 268 - 0
WebService/src/main/resources/components/applicationKeyPackage/add-applicationKeyView/addApplicationKey.js

@@ -0,0 +1,268 @@
+(function (vc) {
+
+    vc.extends({
+        propTypes: {
+            callBackListener: vc.propTypes.string, //父组件名称
+            callBackFunction: vc.propTypes.string //父组件监听方法
+        },
+        data: {
+            addApplicationKeyInfo: {
+                applicationKeyId: '',
+                name: '',
+                tel: '',
+                typeCd: '',
+                sex: '',
+                age: '',
+                idCard: '',
+                startTime: '',
+                endTime: '',
+                floorId: '',
+                floorNum: '',
+                floorName: '',
+                unitId: '',
+                unitName: '',
+                roomId: '',
+                locationTypeCd: '',
+                locationObjId: '',
+                roomName: ''
+            }
+        },
+        _initMethod: function () {
+            vc.component._initAddApplicationKeyDateInfo();
+        },
+        _initEvent: function () {
+            vc.on('addApplicationKey', 'openAddApplicationKeyModal', function () {
+                $('#addApplicationKeyModel').modal('show');
+            });
+            vc.on("addApplicationKey", "notify", function (_param) {
+                if (_param.hasOwnProperty("floorId")) {
+                    vc.component.addApplicationKeyInfo.floorId = _param.floorId;
+                }
+
+                if (_param.hasOwnProperty("unitId")) {
+                    vc.component.addApplicationKeyInfo.unitId = _param.unitId;
+                }
+
+                if(_param.hasOwnProperty("roomId")){
+                    vc.component.addApplicationKeyInfo.roomId = _param.roomId;
+                }
+            });
+        },
+        methods: {
+            _initAddApplicationKeyDateInfo: function () {
+                vc.component.addApplicationKeyInfo.startTime = vc.dateFormat(new Date().getTime());
+                $('.addApplicationStartTime').datetimepicker({
+                    language: 'zh-CN',
+                    format: 'yyyy-mm-dd HH:ii:ss',
+                    initTime: true,
+                    initialDate: new Date(),
+                    autoClose: 1,
+                    todayBtn: true
+
+                });
+                $('.addApplicationStartTime').datetimepicker()
+                    .on('changeDate', function (ev) {
+                        var value = $(".addApplicationStartTime").val();
+                        vc.component.addApplicationKeyInfo.startTime = value;
+                    });
+                $('.addApplicationEndTime').datetimepicker({
+                    language: 'zh-CN',
+                    format: 'yyyy-mm-dd HH:ii:ss',
+                    initTime: true,
+                    initialDate: new Date(),
+                    autoClose: 1,
+                    todayBtn: true
+                });
+                $('.addApplicationEndTime').datetimepicker()
+                    .on('changeDate', function (ev) {
+                        var value = $(".addApplicationEndTime").val();
+                        vc.component.addApplicationKeyInfo.endTime = value;
+                    });
+            },
+
+            addApplicationKeyValidate: function () {
+                return vc.validate.validate({
+                    addApplicationKeyInfo: vc.component.addApplicationKeyInfo
+                }, {
+                    'addApplicationKeyInfo.name': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "姓名不能为空"
+                        },
+                        {
+                            limit: "maxin",
+                            param: "1,64",
+                            errInfo: "姓名不能超过64位"
+                        },
+                    ],
+                    'addApplicationKeyInfo.tel': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "手机号不能为空"
+                        },
+                        {
+                            limit: "phone",
+                            param: "",
+                            errInfo: "手机号格式错误"
+                        },
+                    ],
+                    'addApplicationKeyInfo.typeCd': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "用户类型不能为空"
+                        },
+                        {
+                            limit: "num",
+                            param: "",
+                            errInfo: "用户类型格式错误"
+                        },
+                    ],
+                    'addApplicationKeyInfo.sex': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "性别不能为空"
+                        },
+                        {
+                            limit: "num",
+                            param: "",
+                            errInfo: "性别格式错误"
+                        },
+                    ],
+                    'addApplicationKeyInfo.age': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "年龄不能为空"
+                        },
+                        {
+                            limit: "num",
+                            param: "",
+                            errInfo: "年龄不是有效数字"
+                        },
+                    ],
+                    'addApplicationKeyInfo.idCard': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "身份证号不能为空"
+                        },
+                        {
+                            limit: "idCard",
+                            param: "",
+                            errInfo: "不是有效的身份证号"
+                        },
+                    ],
+                    'addApplicationKeyInfo.startTime': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "开始时间不能为空"
+                        },
+                        {
+                            limit: "dateTime",
+                            param: "",
+                            errInfo: "不是有效的时间格式"
+                        },
+                    ],
+                    'addApplicationKeyInfo.endTime': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "结束时间不能为空"
+                        },
+                        {
+                            limit: "dateTime",
+                            param: "",
+                            errInfo: "不是有效的时间格式"
+                        },
+                    ],
+                    'addApplicationKeyInfo.locationTypeCd': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "申请位置不能为空"
+                        }
+                    ],
+                    'addApplicationKeyInfo.locationObjId': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "具体位置不能为空"
+                        }
+                    ]
+
+
+                });
+            },
+            saveApplicationKeyInfo: function () {
+                if (!vc.component.addApplicationKeyValidate()) {
+                    vc.message(vc.validate.errInfo);
+
+                    return;
+                }
+
+                vc.component.addApplicationKeyInfo.communityId = vc.getCurrentCommunity().communityId;
+                //不提交数据将数据 回调给侦听处理
+                if (vc.notNull($props.callBackListener)) {
+                    vc.emit($props.callBackListener, $props.callBackFunction, vc.component.addApplicationKeyInfo);
+                    $('#addApplicationKeyModel').modal('hide');
+                    return;
+                }
+
+                vc.http.post(
+                    'addApplicationKey',
+                    'save',
+                    JSON.stringify(vc.component.addApplicationKeyInfo),
+                    {
+                        emulateJSON: true
+                    },
+                    function (json, res) {
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if (res.status == 200) {
+                            //关闭model
+                            //$('#addApplicationKeyModel').modal('hide');
+                            vc.component.clearAddApplicationKeyInfo();
+                            vc.emit('applicationKeyManage', 'listApplicationKey', {});
+
+                            return;
+                        }
+                        vc.message(json);
+
+                    },
+                    function (errInfo, error) {
+                        console.log('请求失败处理');
+
+                        vc.message(errInfo);
+
+                    });
+            },
+            clearAddApplicationKeyInfo: function () {
+                vc.component.addApplicationKeyInfo = {
+                    name: '',
+                    tel: '',
+                    typeCd: '',
+                    sex: '',
+                    age: '',
+                    idCard: '',
+                    startTime: '',
+                    endTime: '',
+                    floorId: '',
+                    floorNum: '',
+                    floorName: '',
+                    unitId: '',
+                    unitName: '',
+                    roomId: '',
+                    locationTypeCd: '',
+                    locationObjId: '',
+                    roomName: ''
+
+                };
+            }
+        }
+    });
+
+})(window.vc);

+ 65 - 42
WebService/src/main/resources/components/applicationKeyPackage/applicationKey-manage/applicationKeyManage.html

@@ -1,37 +1,52 @@
 <div id="component" class="wrapper wrapper-content animated fadeInRight ecommerce">
-    <div class="row">
+    <div class="row" v-if="applicationKeyManageInfo.showComponent == 'applicationKeyManage'">
         <div class="col-lg-12">
             <div class="ibox ">
                 <div class="ibox-title">
                     <h5>查询条件</h5>
                     <div class="ibox-tools" style="top:10px;">
-                        <button type="button"  class="btn btn-link btn-sm" style="margin-right:10px;"  v-on:click="_moreCondition()">{{applicationKeyManageInfo.moreCondition == true?'隐藏':'更多'}}</button>
+                        <button type="button" class="btn btn-link btn-sm" style="margin-right:10px;"
+                                v-on:click="_moreCondition()">{{applicationKeyManageInfo.moreCondition ==
+                            true?'隐藏':'更多'}}
+                        </button>
                     </div>
                 </div>
                 <div class="ibox-content">
                     <div class="row">
-<div class="col-sm-4" >
-<div class="form-group">
-                                <input type="text" placeholder="请输入名称" v-model="applicationKeyManageInfo.conditions.name" class=" form-control">
-                            </div>                        </div><div class="col-sm-4" >
-<select class="custom-select" v-model="applicationKeyManageInfo.conditions.typeCd">
-         <option selected  value="">请选择用户类型</option>
-         <option  value="10001">保洁</option>
-<option  value="10002">保安</option>
-<option  value="10003">其他人员</option>
-  </select>                        </div><div class="col-sm-3" >
-<div class="form-group">
-                                <input type="text" placeholder="请输入用户手机" v-model="applicationKeyManageInfo.conditions.tel" class=" form-control">
-                            </div>                        </div><div class="col-sm-1">
-                            <button type="button" class="btn btn-primary btn-sm" v-on:click="_queryApplicationKeyMethod()">
-                                    <i class="glyphicon glyphicon-search"></i> 查询
+                        <div class="col-sm-4">
+                            <div class="form-group">
+                                <input type="text" placeholder="请输入名称"
+                                       v-model="applicationKeyManageInfo.conditions.name" class=" form-control">
+                            </div>
+                        </div>
+                        <div class="col-sm-4">
+                            <select class="custom-select" v-model="applicationKeyManageInfo.conditions.typeCd">
+                                <option selected value="">请选择用户类型</option>
+                                <option value="10001">保洁</option>
+                                <option value="10002">保安</option>
+                                <option value="10003">其他人员</option>
+                            </select></div>
+                        <div class="col-sm-3">
+                            <div class="form-group">
+                                <input type="text" placeholder="请输入用户手机"
+                                       v-model="applicationKeyManageInfo.conditions.tel" class=" form-control">
+                            </div>
+                        </div>
+                        <div class="col-sm-1">
+                            <button type="button" class="btn btn-primary btn-sm"
+                                    v-on:click="_queryApplicationKeyMethod()">
+                                <i class="glyphicon glyphicon-search"></i> 查询
                             </button>
-                        </div></div>
-<div class="row">
-<div class="col-sm-4" v-if="applicationKeyManageInfo.moreCondition == true">
-<div class="form-group">
-                                <input type="text" placeholder="请输入身份证号" v-model="applicationKeyManageInfo.conditions.idCard" class=" form-control">
-                            </div>                        </div></div>
+                        </div>
+                    </div>
+                    <div class="row">
+                        <div class="col-sm-4" v-if="applicationKeyManageInfo.moreCondition == true">
+                            <div class="form-group">
+                                <input type="text" placeholder="请输入身份证号"
+                                       v-model="applicationKeyManageInfo.conditions.idCard" class=" form-control">
+                            </div>
+                        </div>
+                    </div>
 
 
                 </div>
@@ -42,11 +57,11 @@
         <div class="col-lg-12">
             <div class="ibox">
                 <div class="ibox-title">
-                    <h5>钥匙申请信息</h5>
+                    <h5>申请钥匙</h5>
                     <div class="ibox-tools" style="top:10px;">
                         <button type="button" class="btn btn-primary btn-sm" v-on:click="_openAddApplicationKeyModal()">
                             <i class="glyphicon glyphicon-plus"></i>
-                            添加钥匙申请
+                            申请
                         </button>
                     </div>
                 </div>
@@ -57,12 +72,12 @@
                     >
                         <thead>
                         <tr>
-                                                        <th class="text-center">钥匙申请ID</th>
+                            <th class="text-center">钥匙申请ID</th>
                             <th class="text-center">姓名</th>
                             <th class="text-center">手机号</th>
                             <th class="text-center">用户类型</th>
-                            <th class="text-center">性别</th>
-                            <th class="text-center">年龄</th>
+                            <!-- <th class="text-center">性别</th>
+                             <th class="text-center">年龄</th>-->
                             <th class="text-center">身份证号</th>
                             <th class="text-center">开始时间</th>
                             <th class="text-center">结束时间</th>
@@ -73,21 +88,27 @@
                         </thead>
                         <tbody>
                         <tr v-for="applicationKey in applicationKeyManageInfo.applicationKeys">
-                                                        <td class="text-center">{{applicationKey.applicationKeyId}}</td>
+                            <td class="text-center">{{applicationKey.applicationKeyId}}</td>
                             <td class="text-center">{{applicationKey.name}}</td>
                             <td class="text-center">{{applicationKey.tel}}</td>
                             <td class="text-center">{{applicationKey.typeCd}}</td>
-                            <td class="text-center">{{applicationKey.sex}}</td>
-                            <td class="text-center">{{applicationKey.age}}</td>
+                            <!--<td class="text-center">{{applicationKey.sex}}</td>
+                            <td class="text-center">{{applicationKey.age}}</td>-->
                             <td class="text-center">{{applicationKey.idCard}}</td>
                             <td class="text-center">{{applicationKey.startTime}}</td>
                             <td class="text-center">{{applicationKey.endTime}}</td>
-                            <td class="text-center"><div class="btn-group">
-                                    <button class="btn-white btn btn-xs" v-on:click="_openEditApplicationKeyModel(applicationKey)">修改</button>
+                            <td class="text-center">
+                                <div class="btn-group">
+                                    <button class="btn-white btn btn-xs"
+                                            v-on:click="_openEditApplicationKeyModel(applicationKey)">修改
+                                    </button>
                                 </div>
                                 <div class="btn-group">
-                                    <button class="btn-white btn btn-xs" v-on:click="_openDeleteApplicationKeyModel(applicationKey)">删除</button>
-                                </div></td>
+                                    <button class="btn-white btn btn-xs"
+                                            v-on:click="_openDeleteApplicationKeyModel(applicationKey)">删除
+                                    </button>
+                                </div>
+                            </td>
 
                         </tr>
                         </tbody>
@@ -106,13 +127,15 @@
         </div>
     </div>
 
-    
-
-    <vc:create name="addApplicationKey"
-               callBackListener=""
-               callBackFunction=""
-    ></vc:create>
-    <vc:create name="editApplicationKey"></vc:create>
+    <div v-show="applicationKeyManageInfo.showComponent == 'addApplicationKey'">
+        <vc:create name="addApplicationKey"
+                   callBackListener=""
+                   callBackFunction=""
+        ></vc:create>
+    </div>
+    <div v-show="applicationKeyManageInfo.showComponent == 'editApplicationKey'">
+        <vc:create name="editApplicationKey"></vc:create>
+    </div>
     <vc:create name="deleteApplicationKey"></vc:create>
 
 </div>

+ 59 - 55
WebService/src/main/resources/components/applicationKeyPackage/applicationKey-manage/applicationKeyManage.js

@@ -1,87 +1,91 @@
 /**
-    入驻小区
-**/
-(function(vc){
+ 入驻小区
+ **/
+(function (vc) {
     var DEFAULT_PAGE = 1;
     var DEFAULT_ROWS = 10;
     vc.extends({
-        data:{
-            applicationKeyManageInfo:{
-                applicationKeys:[],
-                total:0,
-                records:1,
-                moreCondition:false,
-                name:'',
-                conditions:{
-                    name:'',
-typeCd:'',
-tel:'',
-idCard:'',
+        data: {
+            applicationKeyManageInfo: {
+                applicationKeys: [],
+                total: 0,
+                records: 1,
+                moreCondition: false,
+                showComponent:'applicationKeyManage',
+                name: '',
+                conditions: {
+                    name: '',
+                    typeCd: '',
+                    tel: '',
+                    idCard: '',
 
                 }
             }
         },
-        _initMethod:function(){
+        _initMethod: function () {
             vc.component._listApplicationKeys(DEFAULT_PAGE, DEFAULT_ROWS);
         },
-        _initEvent:function(){
-            
-            vc.on('applicationKeyManage','listApplicationKey',function(_param){
-                  vc.component._listApplicationKeys(DEFAULT_PAGE, DEFAULT_ROWS);
+        _initEvent: function () {
+
+            vc.on('applicationKeyManage', 'listApplicationKey', function (_param) {
+                vc.component._listApplicationKeys(DEFAULT_PAGE, DEFAULT_ROWS);
             });
-             vc.on('pagination','page_event',function(_currentPage){
-                vc.component._listApplicationKeys(_currentPage,DEFAULT_ROWS);
+            vc.on('pagination', 'page_event', function (_currentPage) {
+                vc.component._listApplicationKeys(_currentPage, DEFAULT_ROWS);
             });
         },
-        methods:{
-            _listApplicationKeys:function(_page, _rows){
-
+        methods: {
+            _listApplicationKeys: function (_page, _rows) {
+                vc.component.applicationKeyManageInfo.showComponent = 'applicationKeyManage';
                 vc.component.applicationKeyManageInfo.conditions.page = _page;
                 vc.component.applicationKeyManageInfo.conditions.row = _rows;
                 var param = {
-                    params:vc.component.applicationKeyManageInfo.conditions
-               };
+                    params: vc.component.applicationKeyManageInfo.conditions
+                };
 
-               //发送get请求
-               vc.http.get('applicationKeyManage',
-                            'list',
-                             param,
-                             function(json,res){
-                                var _applicationKeyManageInfo=JSON.parse(json);
-                                vc.component.applicationKeyManageInfo.total = _applicationKeyManageInfo.total;
-                                vc.component.applicationKeyManageInfo.records = _applicationKeyManageInfo.records;
-                                vc.component.applicationKeyManageInfo.applicationKeys = _applicationKeyManageInfo.applicationKeys;
-                                vc.emit('pagination','init',{
-                                     total:vc.component.applicationKeyManageInfo.records,
-                                     currentPage:_page
-                                 });
-                             },function(errInfo,error){
-                                console.log('请求失败处理');
-                             }
-                           );
+                //发送get请求
+                vc.http.get('applicationKeyManage',
+                    'list',
+                    param,
+                    function (json, res) {
+                        var _applicationKeyManageInfo = JSON.parse(json);
+                        vc.component.applicationKeyManageInfo.total = _applicationKeyManageInfo.total;
+                        vc.component.applicationKeyManageInfo.records = _applicationKeyManageInfo.records;
+                        vc.component.applicationKeyManageInfo.applicationKeys = _applicationKeyManageInfo.applicationKeys;
+                        vc.emit('pagination', 'init', {
+                            total: vc.component.applicationKeyManageInfo.records,
+                            currentPage: _page
+                        });
+                    }, function (errInfo, error) {
+                        console.log('请求失败处理');
+                    }
+                );
             },
-            _openAddApplicationKeyModal:function(){
-                vc.emit('addApplicationKey','openAddApplicationKeyModal',{});
+            _openAddApplicationKeyModal: function () {
+                //vc.emit('addApplicationKey', 'openAddApplicationKeyModal', {});
+                vc.component.applicationKeyManageInfo.showComponent = 'addApplicationKey';
             },
-            _openEditApplicationKeyModel:function(_applicationKey){
-                vc.emit('editApplicationKey','openEditApplicationKeyModal',_applicationKey);
+            _openEditApplicationKeyModel: function (_applicationKey) {
+                /*vc.emit('editApplicationKey', 'openEditApplicationKeyModal', _applicationKey);*/
+                vc.component.applicationKeyManageInfo.showComponent = 'editApplicationKey';
+
             },
-            _openDeleteApplicationKeyModel:function(_applicationKey){
-                vc.emit('deleteApplicationKey','openDeleteApplicationKeyModal',_applicationKey);
+            _openDeleteApplicationKeyModel: function (_applicationKey) {
+                vc.emit('deleteApplicationKey', 'openDeleteApplicationKeyModal', _applicationKey);
             },
-            _queryApplicationKeyMethod:function(){
+            _queryApplicationKeyMethod: function () {
                 vc.component._listApplicationKeys(DEFAULT_PAGE, DEFAULT_ROWS);
 
             },
-            _moreCondition:function(){
-                if(vc.component.applicationKeyManageInfo.moreCondition){
+            _moreCondition: function () {
+                if (vc.component.applicationKeyManageInfo.moreCondition) {
                     vc.component.applicationKeyManageInfo.moreCondition = false;
-                }else{
+                } else {
                     vc.component.applicationKeyManageInfo.moreCondition = true;
                 }
             }
 
-             
+
         }
     });
 })(window.vc);

+ 130 - 68
WebService/src/main/resources/components/applicationKeyPackage/edit-applicationKey/editApplicationKey.html

@@ -1,75 +1,137 @@
-<div id = "editApplicationKeyModel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" >
-    <div class="modal-dialog modal-lg">
-        <div class="modal-content">
-            <div class="modal-body">
-                <h3 class="m-t-none m-b ">修改钥匙申请</h3>
-                <div class="ibox-content">
-                    <div>
-                        <div>
-                            <div class="form-group row">
-         <label class="col-sm-2 col-form-label">姓名</label>
-         <div class="col-sm-10">
-           <input v-model="editApplicationKeyInfo.name"                   type="text" placeholder="必填,请填写姓名" class="form-control">
-         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">手机号</label>
-         <div class="col-sm-10">
-           <input v-model="editApplicationKeyInfo.tel"                   type="text" placeholder="必填,请填写手机号" class="form-control">
-         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">用户类型</label>
-         <div class="col-sm-10">
-<select class="custom-select" v-model="editApplicationKeyInfo.typeCd">
-         <option selected  disabled value="">必填,请选择用户类型</option>
-         <option  value="10001">保洁</option>
-<option  value="10002">保安</option>
-<option  value="10003">其他人员</option>
-  </select>         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">性别</label>
-         <div class="col-sm-10">
-<select class="custom-select" v-model="editApplicationKeyInfo.sex">
-         <option selected  disabled value="">必填,请选择性别</option>
-         <option  value="0">男</option>
-<option  value="1">女</option>
-  </select>         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">年龄</label>
-         <div class="col-sm-10">
-           <input v-model="editApplicationKeyInfo.age"                   type="text" placeholder="必填,请填写年龄" class="form-control">
-         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">身份证号</label>
-         <div class="col-sm-10">
-           <input v-model="editApplicationKeyInfo.idCard"                   type="text" placeholder="必填,请填写身份证号" class="form-control">
-         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">开始时间</label>
-         <div class="col-sm-10">
-           <input v-model="editApplicationKeyInfo.startTime"                   type="text" placeholder="必填,请填写开始时间" class="form-control">
-         </div>
-</div>
-<div class="form-group row">
-         <label class="col-sm-2 col-form-label">结束时间</label>
-         <div class="col-sm-10">
-           <input v-model="editApplicationKeyInfo.endTime"                   type="text" placeholder="必填,请填写结束时间" class="form-control">
-         </div>
-</div>
+<div class="row">
+    <div class="col-lg-12">
+        <div class="ibox">
+            <div class="ibox-title">
+                <h5>修改钥匙申请</h5>
+                <div class="ibox-tools" style="top:10px;">
+
+                </div>
+            </div>
+            <div class="ibox-content">
 
-                            <div class="ibox-content">
-                                <button class="btn btn-primary float-right" type="button" v-on:click="editApplicationKey()" ><i class="fa fa-check"></i>&nbsp;保存</button>
-                                <button type="button" class="btn btn-warning float-right" style="margin-right:20px;" data-dismiss="modal">取消</button>
-                            </div>
-                        </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">姓名</label>
+                    <div class="col-sm-10">
+                        <input v-model="editApplicationKeyInfo.name" type="text" placeholder="必填,请填写姓名"
+                               class="form-control">
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">手机号</label>
+                    <div class="col-sm-10">
+                        <input v-model="editApplicationKeyInfo.tel" type="text" placeholder="必填,请填写手机号"
+                               class="form-control">
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">用户类型</label>
+                    <div class="col-sm-10">
+                        <select class="custom-select" v-model="editApplicationKeyInfo.typeCd">
+                            <option selected disabled value="">必填,请选择用户类型</option>
+                            <option value="10001">保洁</option>
+                            <option value="10002">保安</option>
+                            <option value="10003">其他人员</option>
+                        </select></div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">性别</label>
+                    <div class="col-sm-10">
+                        <select class="custom-select" v-model="editApplicationKeyInfo.sex">
+                            <option selected disabled value="">必填,请选择性别</option>
+                            <option value="0">男</option>
+                            <option value="1">女</option>
+                        </select></div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">年龄</label>
+                    <div class="col-sm-10">
+                        <input v-model="editApplicationKeyInfo.age" type="text" placeholder="必填,请填写年龄"
+                               class="form-control">
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">身份证号</label>
+                    <div class="col-sm-10">
+                        <input v-model="editApplicationKeyInfo.idCard" type="text" placeholder="必填,请填写身份证号"
+                               class="form-control">
                     </div>
                 </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">设备位置</label>
+                    <div class="col-sm-10">
+                        <select class="custom-select" v-model="editApplicationKeyInfo.locationTypeCd">
+                            <option selected disabled value="">必填,请选择设备位置</option>
+                            <option value="1000">东大门</option>
+                            <option value="1001">西大门</option>
+                            <option value="1002">北大门</option>
+                            <option value="1003">南大门</option>
+                            <option value="2000">单元门</option>
+                            <option value="3000">房屋门</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="form-group row"
+                     v-show="editApplicationKeyInfo.locationTypeCd == '2000' || editApplicationKeyInfo.locationTypeCd == '3000'  ">
+                    <label class="col-sm-2 col-form-label">归属楼栋</label>
+                    <div class="col-sm-10">
+                        <vc:create name="floorSelect2"
+                                   parentModal="editApplicationKeyModel"
+                                   namespace="editApplicationKey"
+                        ></vc:create>
+                    </div>
+                </div>
+                <div class="form-group row"
+                     v-show="editApplicationKeyInfo.locationTypeCd == '2000' || editApplicationKeyInfo.locationTypeCd == '3000'  ">
+                    <label class="col-sm-2 col-form-label">归属单元</label>
+                    <div class="col-sm-10">
+                        <vc:create name="unitSelect2"
+                                   parentModal="editApplicationKeyModel"
+                                   callBackListener="editApplicationKey"
+                                   callBackFunction="notify"
+                                   namespace="editApplicationKey"
+                        ></vc:create>
+                    </div>
+                </div>
+                <div class="form-group row"
+                     v-show="editApplicationKeyInfo.locationTypeCd == '3000'  ">
+                    <label class="col-sm-2 col-form-label">归属房屋</label>
+                    <div class="col-sm-10">
+                        <vc:create name="roomSelect2"
+                                   parentModal="editApplicationKeyModel"
+                                   callBackListener="editApplicationKey"
+                                   callBackFunction="notify"
+                                   namespace="editApplicationKey"
+                        ></vc:create>
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">开始时间</label>
+                    <div class="col-sm-10">
+                        <input v-model="editApplicationKeyInfo.startTime" readonly type="text" placeholder="必填,请填写开始时间"
+                               class="form-control editApplicationStartTime">
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-sm-2 col-form-label">结束时间</label>
+                    <div class="col-sm-10">
+                        <input v-model="editApplicationKeyInfo.endTime" readonly type="text" placeholder="必填,请填写结束时间"
+                               class="form-control editApplicationEndTime">
+                    </div>
+                </div>
+
+                <div class="ibox-content">
+                    <button class="btn btn-primary float-right" type="button"
+                            v-on:click="editApplicationKey()"><i class="fa fa-check"></i>&nbsp;保存
+                    </button>
+                    <button type="button" class="btn btn-warning float-right" style="margin-right:20px;"
+                            data-dismiss="modal">取消
+                    </button>
+                </div>
+
             </div>
         </div>
     </div>
 </div>
+
+
+

+ 196 - 128
WebService/src/main/resources/components/applicationKeyPackage/edit-applicationKey/editApplicationKey.js

@@ -1,145 +1,213 @@
-(function(vc,vm){
+(function (vc, vm) {
 
     vc.extends({
-        data:{
-            editApplicationKeyInfo:{
-                applicationKeyId:'',
-name:'',
-tel:'',
-typeCd:'',
-sex:'',
-age:'',
-idCard:'',
-startTime:'',
-endTime:'',
+        data: {
+            editApplicationKeyInfo: {
+                applicationKeyId: '',
+                name: '',
+                tel: '',
+                typeCd: '',
+                sex: '',
+                age: '',
+                idCard: '',
+                startTime: '',
+                endTime: '',
+                floorId: '',
+                floorNum: '',
+                floorName: '',
+                unitId: '',
+                unitName: '',
+                roomId: '',
+                locationTypeCd: '',
+                locationObjId: '',
+                roomName: ''
 
             }
         },
-         _initMethod:function(){
+        _initMethod: function () {
+            vc.component._initEditApplicationKeyDateInfo();
 
-         },
-         _initEvent:function(){
-             vc.on('editApplicationKey','openEditApplicationKeyModal',function(_params){
+        },
+        _initEvent: function () {
+            vc.on('editApplicationKey', 'openEditApplicationKeyModal', function (_params) {
                 vc.component.refreshEditApplicationKeyInfo();
-                $('#editApplicationKeyModel').modal('show');
-                vc.copyObject(_params, vc.component.editApplicationKeyInfo );
+               // $('#editApplicationKeyModel').modal('show');
+                vc.copyObject(_params, vc.component.editApplicationKeyInfo);
                 vc.component.editApplicationKeyInfo.communityId = vc.getCurrentCommunity().communityId;
             });
+
+            vc.on("editApplicationKey", "notify", function (_param) {
+                if (_param.hasOwnProperty("floorId")) {
+                    vc.component.editApplicationKeyInfo.floorId = _param.floorId;
+                }
+
+                if (_param.hasOwnProperty("unitId")) {
+                    vc.component.editApplicationKeyInfo.unitId = _param.unitId;
+                }
+
+                if(_param.hasOwnProperty("roomId")){
+                    vc.component.editApplicationKeyInfo.roomId = _param.roomId;
+                }
+            });
         },
-        methods:{
-            editApplicationKeyValidate:function(){
-                        return vc.validate.validate({
-                            editApplicationKeyInfo:vc.component.editApplicationKeyInfo
-                        },{
-                            'editApplicationKeyInfo.name':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"姓名不能为空"
-                        },
- {
-                            limit:"maxin",
-                            param:"1,64",
-                            errInfo:"姓名不能超过64位"
+        methods: {
+            _initEditApplicationKeyDateInfo: function () {
+                vc.component.editApplicationKeyInfo.startTime = vc.dateFormat(new Date().getTime());
+                $('.editApplicationStartTime').datetimepicker({
+                    language: 'zh-CN',
+                    format: 'yyyy-mm-dd HH:ii:ss',
+                    initTime: true,
+                    initialDate: new Date(),
+                    autoClose: 1,
+                    todayBtn: true
+
+                });
+                $('.editApplicationStartTime').datetimepicker()
+                    .on('changeDate', function (ev) {
+                        var value = $(".editApplicationStartTime").val();
+                        vc.component.editApplicationKeyInfo.startTime = value;
+                    });
+                $('.editApplicationEndTime').datetimepicker({
+                    language: 'zh-CN',
+                    format: 'yyyy-mm-dd HH:ii:ss',
+                    initTime: true,
+                    initialDate: new Date(),
+                    autoClose: 1,
+                    todayBtn: true
+                });
+                $('.editApplicationEndTime').datetimepicker()
+                    .on('changeDate', function (ev) {
+                        var value = $(".editApplicationEndTime").val();
+                        vc.component.editApplicationKeyInfo.endTime = value;
+                    });
+            },
+            editApplicationKeyValidate: function () {
+                return vc.validate.validate({
+                    editApplicationKeyInfo: vc.component.editApplicationKeyInfo
+                }, {
+                    'editApplicationKeyInfo.name': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "姓名不能为空"
+                        },
+                        {
+                            limit: "maxin",
+                            param: "1,64",
+                            errInfo: "姓名不能超过64位"
                         },
                     ],
-'editApplicationKeyInfo.tel':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"手机号不能为空"
+                    'editApplicationKeyInfo.tel': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "手机号不能为空"
                         },
- {
-                            limit:"phone",
-                            param:"",
-                            errInfo:"手机号格式错误"
+                        {
+                            limit: "phone",
+                            param: "",
+                            errInfo: "手机号格式错误"
                         },
                     ],
-'editApplicationKeyInfo.typeCd':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"用户类型不能为空"
+                    'editApplicationKeyInfo.typeCd': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "用户类型不能为空"
                         },
- {
-                            limit:"num",
-                            param:"",
-                            errInfo:"用户类型格式错误"
+                        {
+                            limit: "num",
+                            param: "",
+                            errInfo: "用户类型格式错误"
                         },
                     ],
-'editApplicationKeyInfo.sex':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"性别不能为空"
+                    'editApplicationKeyInfo.sex': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "性别不能为空"
                         },
- {
-                            limit:"num",
-                            param:"",
-                            errInfo:"性别格式错误"
+                        {
+                            limit: "num",
+                            param: "",
+                            errInfo: "性别格式错误"
                         },
                     ],
-'editApplicationKeyInfo.age':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"年龄不能为空"
+                    'editApplicationKeyInfo.age': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "年龄不能为空"
                         },
- {
-                            limit:"num",
-                            param:"",
-                            errInfo:"年龄不是有效数字"
+                        {
+                            limit: "num",
+                            param: "",
+                            errInfo: "年龄不是有效数字"
                         },
                     ],
-'editApplicationKeyInfo.idCard':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"身份证号不能为空"
+                    'editApplicationKeyInfo.idCard': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "身份证号不能为空"
                         },
- {
-                            limit:"idCard",
-                            param:"",
-                            errInfo:"不是有效的身份证号"
+                        {
+                            limit: "idCard",
+                            param: "",
+                            errInfo: "不是有效的身份证号"
                         },
                     ],
-'editApplicationKeyInfo.startTime':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"开始时间不能为空"
+                    'editApplicationKeyInfo.startTime': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "开始时间不能为空"
                         },
- {
-                            limit:"dateTime",
-                            param:"",
-                            errInfo:"不是有效的时间格式"
+                        {
+                            limit: "dateTime",
+                            param: "",
+                            errInfo: "不是有效的时间格式"
                         },
                     ],
-'editApplicationKeyInfo.endTime':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"结束时间不能为空"
+                    'editApplicationKeyInfo.endTime': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "结束时间不能为空"
                         },
- {
-                            limit:"dateTime",
-                            param:"",
-                            errInfo:"不是有效的时间格式"
+                        {
+                            limit: "dateTime",
+                            param: "",
+                            errInfo: "不是有效的时间格式"
                         },
                     ],
-'editApplicationKeyInfo.applicationKeyId':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"钥匙申请ID不能为空"
-                        }]
+                    'editApplicationKeyInfo.applicationKeyId': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "钥匙申请ID不能为空"
+                        }],
+                    'editApplicationKeyInfo.locationTypeCd': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "申请位置不能为空"
+                        }
+                    ],
+                    'editApplicationKeyInfo.locationObjId': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "具体位置不能为空"
+                        }
+                    ]
 
-                        });
-             },
-            editApplicationKey:function(){
-                if(!vc.component.editApplicationKeyValidate()){
+                });
+            },
+            editApplicationKey: function () {
+                if (!vc.component.editApplicationKeyValidate()) {
                     vc.message(vc.validate.errInfo);
-                    return ;
+                    return;
                 }
 
                 vc.http.post(
@@ -147,39 +215,39 @@ endTime:'',
                     'update',
                     JSON.stringify(vc.component.editApplicationKeyInfo),
                     {
-                        emulateJSON:true
-                     },
-                     function(json,res){
+                        emulateJSON: true
+                    },
+                    function (json, res) {
                         //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
-                        if(res.status == 200){
+                        if (res.status == 200) {
                             //关闭model
                             $('#editApplicationKeyModel').modal('hide');
-                             vc.emit('applicationKeyManage','listApplicationKey',{});
-                            return ;
+                            vc.emit('applicationKeyManage', 'listApplicationKey', {});
+                            return;
                         }
                         vc.message(json);
-                     },
-                     function(errInfo,error){
+                    },
+                    function (errInfo, error) {
                         console.log('请求失败处理');
 
                         vc.message(errInfo);
-                     });
+                    });
             },
-            refreshEditApplicationKeyInfo:function(){
-                vc.component.editApplicationKeyInfo= {
-                  applicationKeyId:'',
-name:'',
-tel:'',
-typeCd:'',
-sex:'',
-age:'',
-idCard:'',
-startTime:'',
-endTime:'',
+            refreshEditApplicationKeyInfo: function () {
+                vc.component.editApplicationKeyInfo = {
+                    applicationKeyId: '',
+                    name: '',
+                    tel: '',
+                    typeCd: '',
+                    sex: '',
+                    age: '',
+                    idCard: '',
+                    startTime: '',
+                    endTime: '',
 
                 }
             }
         }
     });
 
-})(window.vc,window.vc.component);
+})(window.vc, window.vc.component);

+ 105 - 107
WebService/src/main/resources/components/noticePackage/addNoticeView/addNoticeView.js

@@ -1,101 +1,99 @@
-(function(vc){
+(function (vc) {
 
     vc.extends({
-        data:{
-            addNoticeViewInfo:{
-                title:'',
-                noticeTypeCd:'',
-                context:'',
-                startTime:'',
-                endTime:'',
+        data: {
+            addNoticeViewInfo: {
+                title: '',
+                noticeTypeCd: '',
+                context: '',
+                startTime: '',
+                endTime: '',
 
             }
         },
-         _initMethod:function(){
+        _initMethod: function () {
             vc.component._initNoticeInfo();
-         },
-         _initEvent:function(){
-            vc.on('addNoticeView','openAddNoticeView',function(){
+        },
+        _initEvent: function () {
+            vc.on('addNoticeView', 'openAddNoticeView', function () {
                 //vc.component._initNoticeInfo();
 
             });
         },
-        methods:{
-            addNoticeValidate(){
+        methods: {
+            addNoticeValidate() {
                 return vc.validate.validate({
-                    addNoticeViewInfo:vc.component.addNoticeViewInfo
-                },{
-                    'addNoticeViewInfo.title':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"标题不能为空"
+                    addNoticeViewInfo: vc.component.addNoticeViewInfo
+                }, {
+                    'addNoticeViewInfo.title': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "标题不能为空"
                         },
- {
-                            limit:"maxin",
-                            param:"4,100",
-                            errInfo:"小区名称必须在2至100字符之间"
+                        {
+                            limit: "maxin",
+                            param: "4,100",
+                            errInfo: "小区名称必须在2至100字符之间"
                         },
                     ],
-'addNoticeViewInfo.noticeTypeCd':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"公告类型不能为空"
+                    'addNoticeViewInfo.noticeTypeCd': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "公告类型不能为空"
                         },
- {
-                            limit:"maxLength",
-                            param:"200",
-                            errInfo:"公告类型错误"
+                        {
+                            limit: "maxLength",
+                            param: "200",
+                            errInfo: "公告类型错误"
                         },
                     ],
-'addNoticeViewInfo.context':[
-{
-                            limit:"required",
-                            param:"",
-                            errInfo:"公告内容不能为空"
+                    'addNoticeViewInfo.context': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "公告内容不能为空"
                         },
                         {
-                            limit:"maxLength",
-                            param:"10000",
-                            errInfo:"公告内容不能超过10000个字"
+                            limit: "maxLength",
+                            param: "10000",
+                            errInfo: "公告内容不能超过10000个字"
                         },
                     ],
-                    'addNoticeViewInfo.startTime':[
-                    {
-                        limit:"required",
-                        param:"",
-                        errInfo:"开始时间不能为空"
-                    },
-                     {
-                            limit:"dateTime",
-                            param:"",
-                            errInfo:"开始时间不是有效的日期"
+                    'addNoticeViewInfo.startTime': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "开始时间不能为空"
+                        },
+                        {
+                            limit: "dateTime",
+                            param: "",
+                            errInfo: "开始时间不是有效的日期"
                         },
                     ],
-                    'addNoticeViewInfo.endTime':[
-                    {
-                        limit:"required",
-                        param:"",
-                        errInfo:"开始时间不能为空"
-                    },
-                     {
-                            limit:"dateTime",
-                            param:"",
-                            errInfo:"开始时间不是有效的日期"
+                    'addNoticeViewInfo.endTime': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "开始时间不能为空"
+                        },
+                        {
+                            limit: "dateTime",
+                            param: "",
+                            errInfo: "开始时间不是有效的日期"
                         },
                     ],
 
 
-
-
                 });
             },
-            saveNoticeInfo:function(){
-                if(!vc.component.addNoticeValidate()){
+            saveNoticeInfo: function () {
+                if (!vc.component.addNoticeValidate()) {
                     vc.message(vc.validate.errInfo);
 
-                    return ;
+                    return;
                 }
 
                 vc.component.addNoticeViewInfo.communityId = vc.getCurrentCommunity().communityId;
@@ -105,40 +103,40 @@
                     'save',
                     JSON.stringify(vc.component.addNoticeViewInfo),
                     {
-                        emulateJSON:true
-                     },
-                     function(json,res){
+                        emulateJSON: true
+                    },
+                    function (json, res) {
                         //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
-                        if(res.status == 200){
+                        if (res.status == 200) {
                             //关闭model
 
                             vc.component.clearaddNoticeViewInfo();
-                            vc.emit('noticeManage','listNotice',{});
+                            vc.emit('noticeManage', 'listNotice', {});
 
-                            return ;
+                            return;
                         }
                         vc.message(json);
 
-                     },
-                     function(errInfo,error){
+                    },
+                    function (errInfo, error) {
                         console.log('请求失败处理');
 
                         vc.message(errInfo);
 
-                     });
+                    });
             },
-            clearaddNoticeViewInfo:function(){
+            clearaddNoticeViewInfo: function () {
                 vc.component.addNoticeViewInfo = {
-                        title:'',
-                                    noticeTypeCd:'',
-                                    context:'',
-                                    startTime:'',
+                    title: '',
+                    noticeTypeCd: '',
+                    context: '',
+                    startTime: '',
 
-                                        };
+                };
             },
-            _initNoticeInfo:function(){
+            _initNoticeInfo: function () {
                 vc.component.addNoticeViewInfo.startTime = vc.dateFormat(new Date().getTime());
-                 $('.noticeStartTime').datetimepicker({
+                $('.noticeStartTime').datetimepicker({
                     language: 'zh-CN',
                     format: 'yyyy-mm-dd HH:ii:ss',
                     initTime: true,
@@ -166,16 +164,16 @@
                         vc.component.addNoticeViewInfo.endTime = value;
                     });
                 var $summernote = $('.summernote').summernote({
-                    lang:'zh-CN',
+                    lang: 'zh-CN',
                     height: 300,
-                    placeholder:'必填,请输入公告内容',
-                    callbacks : {
-                         onImageUpload: function(files, editor, $editable) {
-                             vc.component.sendFile($summernote,files);
-                         },
-                         onChange:function(contents,$editable){
+                    placeholder: '必填,请输入公告内容',
+                    callbacks: {
+                        onImageUpload: function (files, editor, $editable) {
+                            vc.component.sendFile($summernote, files);
+                        },
+                        onChange: function (contents, $editable) {
                             vc.component.addNoticeViewInfo.context = contents;
-                         }
+                        }
                     },
                     toolbar: [
                         ['style', ['style']],
@@ -188,45 +186,45 @@
                         ['insert', ['link', 'picture']],
                         ['view', ['fullscreen', 'codeview']],
                         ['help', ['help']]
-                      ],
+                    ],
                 });
             },
-            closeNoticeInfo:function(){
-                 vc.emit('noticeManage','listNotice',{});
+            closeNoticeInfo: function () {
+                vc.emit('noticeManage', 'listNotice', {});
 
             },
-            sendFile:function($summernote,files){
-                console.log('上传图片',files);
+            sendFile: function ($summernote, files) {
+                console.log('上传图片', files);
 
                 var param = new FormData();
                 param.append("uploadFile", files[0]);
-                param.append('communityId',vc.getCurrentCommunity().communityId);
+                param.append('communityId', vc.getCurrentCommunity().communityId);
 
                 vc.http.upload(
                     'addNoticeView',
                     'uploadImage',
                     param,
                     {
-                        emulateJSON:true,
+                        emulateJSON: true,
                         //添加请求头
                         headers: {
                             "Content-Type": "multipart/form-data"
                         }
-                     },
-                     function(json,res){
+                    },
+                    function (json, res) {
                         //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
-                        if(res.status == 200){
+                        if (res.status == 200) {
                             var data = JSON.parse(json);
                             //关闭model
-                            $summernote.summernote('insertImage', "/callComponent/download/getFile/file?fileId="+data.fileId +"&communityId="+vc.getCurrentCommunity().communityId);
-                            return ;
+                            $summernote.summernote('insertImage', "/callComponent/download/getFile/file?fileId=" + data.fileId + "&communityId=" + vc.getCurrentCommunity().communityId);
+                            return;
                         }
                         vc.message(json);
-                     },
-                     function(errInfo,error){
+                    },
+                    function (errInfo, error) {
                         console.log('请求失败处理');
                         vc.message(errInfo);
-                     });
+                    });
 
             }