Commit fa962ba4356132cc0e9dcfdaaec22762f320b43f

Authored by 徐烜
1 parent f1ed06d5

update

src/main/java/com/bsth/controller/CarsController.java
... ... @@ -2,7 +2,6 @@ package com.bsth.controller;
2 2  
3 3 import com.bsth.common.ResponseCode;
4 4 import com.bsth.entity.Cars;
5   -import com.bsth.service.CarsService;
6 5 import com.bsth.service.schedule.utils.DataImportExportService;
7 6 import com.bsth.service.schedule.utils.DataToolsProperties;
8 7 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -48,7 +47,8 @@ public class CarsController extends BaseController<Cars, Integer> {
48 47 */
49 48 @RequestMapping(value = "/validate/equale", method = RequestMethod.GET)
50 49 public Map<String, Object> validateData(@RequestParam Map<String, Object> map) {
51   - return ((CarsService) baseService).validateEquale(map);
  50 + // 一般比较自编号是否重复
  51 + return baseService.validateEquale(map);
52 52 }
53 53  
54 54 // 上传图片
... ...
src/main/java/com/bsth/controller/PersonnelController.java
1 1 package com.bsth.controller;
2 2  
3 3 import com.bsth.entity.Personnel;
4   -import org.springframework.web.bind.annotation.RequestBody;
5   -import org.springframework.web.bind.annotation.RequestMapping;
6   -import org.springframework.web.bind.annotation.RequestMethod;
7   -import org.springframework.web.bind.annotation.RestController;
  4 +import org.springframework.web.bind.annotation.*;
8 5  
9 6 import java.util.Map;
10 7  
... ... @@ -27,4 +24,15 @@ public class PersonnelController extends BaseController&lt;Personnel, Integer&gt; {
27 24 public Map<String, Object> save(@RequestBody Personnel t){
28 25 return baseService.save(t);
29 26 }
  27 +
  28 + /**
  29 + * 验证。
  30 + * @param map
  31 + * @return
  32 + */
  33 + @RequestMapping(value = "/validate/equale", method = RequestMethod.GET)
  34 + public Map<String, Object> validateData(@RequestParam Map<String, Object> map) {
  35 + // 一般比较相同公司下工号是否相同
  36 + return baseService.validateEquale(map);
  37 + }
30 38 }
... ...
src/main/java/com/bsth/entity/Personnel.java
... ... @@ -51,7 +51,7 @@ public class Personnel {
51 51 private String icCardCode;
52 52 /** 性别(字典类型sexType) */
53 53 private String personnelType;
54   - /** 所属岗位/工种(TODO:暂时不使用字典) */
  54 + /** 所属岗位/工种(字典类型gzType) */
55 55 private String posts;
56 56  
57 57  
... ...
src/main/java/com/bsth/service/BaseService.java
1 1 package com.bsth.service;
2 2  
3   -import java.io.Serializable;
4   -import java.util.Map;
5   -
6 3 import org.springframework.data.domain.Page;
7 4 import org.springframework.data.domain.Pageable;
8 5  
  6 +import java.io.Serializable;
  7 +import java.util.Map;
  8 +
9 9 /**
10 10 *
11 11 * @ClassName: BaseService
... ... @@ -63,4 +63,11 @@ public interface BaseService&lt;T, ID extends Serializable&gt; {
63 63 * @throws
64 64 */
65 65 Map<String, Object> delete(ID id);
  66 +
  67 + /**
  68 + * 后端验证查询数据是否重复。
  69 + * @param params 查询条件
  70 + * @return {status:状态编码,msg:错误描述},状态编码 @see com.bsth.common.ResponseCode
  71 + */
  72 + Map<String, Object> validateEquale(Map<String, Object> params);
66 73 }
... ...
src/main/java/com/bsth/service/CarsService.java
... ... @@ -2,16 +2,8 @@ package com.bsth.service;
2 2  
3 3 import com.bsth.entity.Cars;
4 4  
5   -import java.util.Map;
6   -
7 5 /**
8 6 * Created by xu on 16/5/31.
9 7 */
10 8 public interface CarsService extends BaseService<Cars, Integer> {
11   - /**
12   - * 后端验证查询数据是否重复。
13   - * @param params 查询条件
14   - * @return {status:状态编码,msg:错误描述},状态编码 @see com.bsth.common.ResponseCode
15   - */
16   - Map<String, Object> validateEquale(Map<String, Object> params);
17 9 }
... ...
src/main/java/com/bsth/service/impl/BaseServiceImpl.java
1 1 package com.bsth.service.impl;
2 2  
3   -import java.io.Serializable;
4   -import java.util.HashMap;
5   -import java.util.Map;
6   -
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.entity.search.CustomerSpecs;
  5 +import com.bsth.repository.BaseRepository;
  6 +import com.bsth.service.BaseService;
7 7 import org.slf4j.Logger;
8 8 import org.slf4j.LoggerFactory;
9 9 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -11,10 +11,9 @@ import org.springframework.dao.DataIntegrityViolationException;
11 11 import org.springframework.data.domain.Page;
12 12 import org.springframework.data.domain.Pageable;
13 13  
14   -import com.bsth.common.ResponseCode;
15   -import com.bsth.entity.search.CustomerSpecs;
16   -import com.bsth.repository.BaseRepository;
17   -import com.bsth.service.BaseService;
  14 +import java.io.Serializable;
  15 +import java.util.HashMap;
  16 +import java.util.Map;
18 17  
19 18 public class BaseServiceImpl<T, ID extends Serializable> implements BaseService<T, ID>{
20 19  
... ... @@ -70,4 +69,31 @@ public class BaseServiceImpl&lt;T, ID extends Serializable&gt; implements BaseService&lt;
70 69 }
71 70 return map;
72 71 }
  72 +
  73 + @Override
  74 + public Map<String, Object> validateEquale(Map<String, Object> params) {
  75 + Map<String, Object> returnMap = new HashMap<>();
  76 +
  77 + try {
  78 + if (params == null || params.size() == 0) {
  79 + returnMap.put("status", ResponseCode.SUCCESS);
  80 + returnMap.put("msg", "此时没有重复");
  81 + } else {
  82 + Iterable<T> iterable = list(params);
  83 + if (iterable.iterator().hasNext()) {
  84 + returnMap.put("status", ResponseCode.ERROR);
  85 + returnMap.put("msg", "数据重复");
  86 + } else {
  87 + returnMap.put("status", ResponseCode.SUCCESS);
  88 + returnMap.put("msg", "没有重复");
  89 + }
  90 + }
  91 + } catch (Exception exp) {
  92 + logger.error("validateEquale error", exp);
  93 + returnMap.put("status", ResponseCode.ERROR);
  94 + returnMap.put("msg", exp.getLocalizedMessage());
  95 + }
  96 +
  97 + return returnMap;
  98 + }
73 99 }
... ...
src/main/java/com/bsth/service/impl/CarsServiceImpl.java
1 1 package com.bsth.service.impl;
2 2  
3   -import com.bsth.common.ResponseCode;
4 3 import com.bsth.entity.Cars;
5 4 import com.bsth.service.CarsService;
6 5 import org.springframework.stereotype.Service;
7 6  
8   -import java.util.HashMap;
9   -import java.util.Map;
10   -
11 7 /**
12 8 * Created by xu on 16/5/31.
13 9 */
14 10 @Service
15 11 public class CarsServiceImpl extends BaseServiceImpl<Cars, Integer> implements CarsService {
16   - @Override
17   - public Map<String, Object> validateEquale(Map<String, Object> params) {
18   - Map<String, Object> returnMap = new HashMap<>();
19   -
20   - try {
21   - if (params == null || params.size() == 0) {
22   - returnMap.put("status", ResponseCode.SUCCESS);
23   - returnMap.put("msg", "此时没有重复");
24   - } else {
25   - Iterable<Cars> iterable = this.list(params);
26   - if (iterable.iterator().hasNext()) {
27   - returnMap.put("status", ResponseCode.ERROR);
28   - returnMap.put("msg", "自编号重复");
29   - } else {
30   - returnMap.put("status", ResponseCode.SUCCESS);
31   - returnMap.put("msg", "此时没有重复");
32   - }
33   - }
34   - } catch (Exception exp) {
35   - logger.error("validateZbh error", exp);
36   - returnMap.put("status", ResponseCode.ERROR);
37   - returnMap.put("msg", exp.getLocalizedMessage());
38   - }
39   -
40   - return returnMap;
41   - }
42 12 }
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/detail.html
... ... @@ -86,7 +86,7 @@
86 86 <label class="col-md-2 control-label">工种:</label>
87 87 <div class="col-md-4">
88 88 <input type="text" class="form-control" name="posts"
89   - ng-model="ctrl.employeeInfoForDetail.posts" readonly/>
  89 + ng-value="ctrl.employeeInfoForDetail.posts | dict:'gzType':'未知'" readonly/>
90 90 </div>
91 91 </div>
92 92  
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/edit.html
... ... @@ -36,21 +36,14 @@
36 36 <div class="form-group has-success has-feedback">
37 37 <label class="col-md-2 control-label">所属公司*:</label>
38 38 <div class="col-md-3">
39   - <div class="input-group">
40   - <ui-select ng-model="ctrl.employeeInfoForSave.gs_selected"
41   - on-select="ctrl.gs_selected_change($item, $model)"
42   - theme="bootstrap" name="gs" required>
43   - <ui-select-match placeholder="请选择所属公司...">{{$select.selected.gsmc}}</ui-select-match>
44   - <ui-select-choices repeat="item in ctrl.gses">
45   - <span ng-bind="item.gsmc"></span>
46   - </ui-select-choices>
47   - </ui-select>
48   - <span class="input-group-btn">
49   - <button type="button" ng-click="ctrl.gs_selected_remove()" class="btn btn-default">
50   - <span class="glyphicon glyphicon-trash"></span>
51   - </button>
52   - </span>
53   - </div>
  39 + <sa-Select model="ctrl.employeeInfoForSave"
  40 + dicgroup="gsType"
  41 + placeholder="请选择所属公司..."
  42 + name="gs"
  43 + codename="companyCode"
  44 + dicname="company"
  45 + required="true">
  46 + </sa-Select>
54 47 </div>
55 48 <!-- 隐藏块,显示验证信息 -->
56 49 <div class="alert alert-danger well-sm" ng-show="myForm.gs.$error.required">
... ... @@ -77,12 +70,16 @@
77 70 <div class="col-md-3">
78 71 <input type="text" class="form-control"
79 72 name="jobCode" ng-model="ctrl.employeeInfoForSave.jobCode"
  73 + remote-Validaton rvtype="jobCode" rv1="{{ctrl.employeeInfoForSave.companyCode}}"
80 74 required placeholder="请输入工号"/>
81 75 </div>
82 76 <!-- 隐藏块,显示验证信息 -->
83 77 <div class="alert alert-danger well-sm" ng-show="myForm.jobCode.$error.required">
84 78 工号必须填写
85 79 </div>
  80 + <div class="alert alert-danger well-sm" ng-show="myForm.jobCode.$error.remote">
  81 + 选择公司并且相同公司工号不能重复
  82 + </div>
86 83 </div>
87 84  
88 85 <div class="form-group has-success has-feedback">
... ... @@ -124,21 +121,12 @@
124 121 <div class="form-group">
125 122 <label class="col-md-2 control-label">工种:</label>
126 123 <div class="col-md-4">
127   - <div class="input-group">
128   - <ui-select ng-model="ctrl.employeeInfoForSave.posts_selected"
129   - on-select="ctrl.posts_selected_change($item, $model)"
130   - theme="bootstrap" name="posts">
131   - <ui-select-match placeholder="请选择工种...">{{$select.selected.type}}</ui-select-match>
132   - <ui-select-choices repeat="item in ctrl.postes">
133   - <span ng-bind="item.type"></span>
134   - </ui-select-choices>
135   - </ui-select>
136   - <span class="input-group-btn">
137   - <button type="button" ng-click="ctrl.posts_selected_remove()" class="btn btn-default">
138   - <span class="glyphicon glyphicon-trash"></span>
139   - </button>
140   - </span>
141   - </div>
  124 + <sa-Select model="ctrl.employeeInfoForSave"
  125 + dicgroup="gzType"
  126 + placeholder="请选择工种..."
  127 + name="posts"
  128 + codename="posts" >
  129 + </sa-Select>
142 130 </div>
143 131 </div>
144 132  
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/employeeInfoManage.js
1 1 // 人员信息管理 service controller等写在一起
2 2  
3 3 angular.module('ScheduleApp').factory('EmployeeInfoManageService', ['EmployeeInfoManageService_g', function(service) {
4   - /** 公司字典 */
5   - var gses = [
6   - {gsdm: "55", gsmc: "上南公司"},
7   - {gsdm: "22", gsmc: "金高公司"},
8   - {gsdm: "05", gsmc: "杨高公司"},
9   - {gsdm: "26", gsmc: "南汇公司"}
10   - ];
11   - /** 工种类型字典 */
12   - var postes = [
13   - {type: "公共汽电车驾驶员"},
14   - {type: "公共汽电车调度员"},
15   - {type: "公共汽电车售票员"},
16   - {type: "站员"},
17   - {type: "管理员"},
18   - {type: "安检员"},
19   - {type: "机务"},
20   - {type: "引导员"},
21   - {type: "乘务员"},
22   - {type: "车队长(线长、主"},
23   - {type: "公司管理人员"},
24   - {type: "警消人员"},
25   - {type: "票务人员"},
26   - {type: "其他服务人员"}
27   - ];
28 4  
29 5 /** 当前的查询条件信息 */
30 6 var currentSearchCondition = {
... ... @@ -39,18 +15,6 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeInfoManageService&#39;, [&#39;EmployeeInf
39 15  
40 16 return {
41 17 /**
42   - * 获取公司字典。
43   - */
44   - getGses: function() {
45   - return gses;
46   - },
47   - /**
48   - * 获取工种类型字典。
49   - */
50   - getPostes: function() {
51   - return postes;
52   - },
53   - /**
54 18 * 获取查询条件信息,
55 19 * 用于给controller用来和页面数据绑定。
56 20 */
... ... @@ -81,7 +45,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeInfoManageService&#39;, [&#39;EmployeeInf
81 45 getPage: function() {
82 46 var params = currentSearchCondition; // 查询条件
83 47 params.page = currentPageNo - 1; // 服务端页码从0开始
84   - return service.list(params).$promise;
  48 + return service.rest.list(params).$promise;
85 49 },
86 50 /**
87 51 * 获取明细信息。
... ... @@ -90,7 +54,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeInfoManageService&#39;, [&#39;EmployeeInf
90 54 */
91 55 getDetail: function(id) {
92 56 var params = {id: id};
93   - return service.get(params).$promise;
  57 + return service.rest.get(params).$promise;
94 58 },
95 59 /**
96 60 * 保存信息。
... ... @@ -98,7 +62,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeInfoManageService&#39;, [&#39;EmployeeInf
98 62 * @return 返回一个 promise
99 63 */
100 64 saveDetail: function(obj) {
101   - return service.save(obj).$promise;
  65 + return service.rest.save(obj).$promise;
102 66 }
103 67 }
104 68  
... ... @@ -170,30 +134,6 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;EmployeeInfoManageFormCtrl&#39;, [&#39;Employe
170 134 // 欲保存的busInfo信息,绑定
171 135 self.employeeInfoForSave = {};
172 136  
173   - // 公司 selectedItem
174   - self.employeeInfoForSave.gs_selected = null;
175   - self.gses = employeeInfoManageService.getGses();
176   - self.gs_selected_change = function($item, $model) {
177   - self.employeeInfoForSave.companyCode = $item.gsdm;
178   - self.employeeInfoForSave.company = $item.gsmc;
179   - };
180   - self.gs_selected_remove = function() {
181   - self.employeeInfoForSave.gs_selected = null;
182   - self.employeeInfoForSave.companyCode = null;
183   - self.employeeInfoForSave.company = null;
184   - };
185   -
186   - // 工种 selectedItem
187   - self.employeeInfoForSave.posts_selected = null;
188   - self.postes = employeeInfoManageService.getPostes();
189   - self.posts_selected_change = function($item, $model) {
190   - self.employeeInfoForSave.posts = $item.type;
191   - };
192   - self.posts_selected_remove = function() {
193   - self.employeeInfoForSave.posts_selected = null;
194   - self.employeeInfoForSave.posts = null;
195   - };
196   -
197 137 // 获取传过来的id,有的话就是修改,获取一遍数据
198 138 var id = $stateParams.id;
199 139 if (id) {
... ... @@ -204,24 +144,6 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;EmployeeInfoManageFormCtrl&#39;, [&#39;Employe
204 144 for (key in result) {
205 145 self.employeeInfoForSave[key] = result[key];
206 146 }
207   - // 填写所有的 select 控件选中框数据
208   - // 公司字典
209   - if (self.employeeInfoForSave.companyCode) {
210   - angular.forEach(self.gses, function(data) {
211   - if (self.employeeInfoForSave.companyCode == data.gsdm) {
212   - self.employeeInfoForSave.gs_selected = data;
213   - }
214   - });
215   - }
216   - // 工种字典
217   - if (self.employeeInfoForSave.posts) {
218   - angular.forEach(self.postes, function(data) {
219   - if (self.employeeInfoForSave.posts == data.type) {
220   - self.employeeInfoForSave.posts_selected = data;
221   - }
222   - });
223   - }
224   -
225 147 },
226 148 function(result) {
227 149 alert("出错啦!");
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/form.html
... ... @@ -36,21 +36,14 @@
36 36 <div class="form-group has-success has-feedback">
37 37 <label class="col-md-2 control-label">所属公司*:</label>
38 38 <div class="col-md-3">
39   - <div class="input-group">
40   - <ui-select ng-model="ctrl.employeeInfoForSave.gs_selected"
41   - on-select="ctrl.gs_selected_change($item, $model)"
42   - theme="bootstrap" name="gs" required>
43   - <ui-select-match placeholder="请选择所属公司...">{{$select.selected.gsmc}}</ui-select-match>
44   - <ui-select-choices repeat="item in ctrl.gses">
45   - <span ng-bind="item.gsmc"></span>
46   - </ui-select-choices>
47   - </ui-select>
48   - <span class="input-group-btn">
49   - <button type="button" ng-click="ctrl.gs_selected_remove()" class="btn btn-default">
50   - <span class="glyphicon glyphicon-trash"></span>
51   - </button>
52   - </span>
53   - </div>
  39 + <sa-Select model="ctrl.employeeInfoForSave"
  40 + dicgroup="gsType"
  41 + placeholder="请选择所属公司..."
  42 + name="gs"
  43 + codename="companyCode"
  44 + dicname="company"
  45 + required="true">
  46 + </sa-Select>
54 47 </div>
55 48 <!-- 隐藏块,显示验证信息 -->
56 49 <div class="alert alert-danger well-sm" ng-show="myForm.gs.$error.required">
... ... @@ -77,12 +70,16 @@
77 70 <div class="col-md-3">
78 71 <input type="text" class="form-control"
79 72 name="jobCode" ng-model="ctrl.employeeInfoForSave.jobCode"
  73 + remote-Validaton rvtype="jobCode" rv1="{{ctrl.employeeInfoForSave.companyCode}}"
80 74 required placeholder="请输入工号"/>
81 75 </div>
82 76 <!-- 隐藏块,显示验证信息 -->
83 77 <div class="alert alert-danger well-sm" ng-show="myForm.jobCode.$error.required">
84 78 工号必须填写
85 79 </div>
  80 + <div class="alert alert-danger well-sm" ng-show="myForm.jobCode.$error.remote">
  81 + 选择公司并且相同公司工号不能重复
  82 + </div>
86 83 </div>
87 84  
88 85 <div class="form-group has-success has-feedback">
... ... @@ -124,21 +121,12 @@
124 121 <div class="form-group">
125 122 <label class="col-md-2 control-label">工种:</label>
126 123 <div class="col-md-4">
127   - <div class="input-group">
128   - <ui-select ng-model="ctrl.employeeInfoForSave.posts_selected"
129   - on-select="ctrl.posts_selected_change($item, $model)"
130   - theme="bootstrap" name="posts">
131   - <ui-select-match placeholder="请选择工种...">{{$select.selected.type}}</ui-select-match>
132   - <ui-select-choices repeat="item in ctrl.postes">
133   - <span ng-bind="item.type"></span>
134   - </ui-select-choices>
135   - </ui-select>
136   - <span class="input-group-btn">
137   - <button type="button" ng-click="ctrl.posts_selected_remove()" class="btn btn-default">
138   - <span class="glyphicon glyphicon-trash"></span>
139   - </button>
140   - </span>
141   - </div>
  124 + <sa-Select model="ctrl.employeeInfoForSave"
  125 + dicgroup="gzType"
  126 + placeholder="请选择工种..."
  127 + name="posts"
  128 + codename="posts" >
  129 + </sa-Select>
142 130 </div>
143 131 </div>
144 132  
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/list.html
... ... @@ -115,7 +115,7 @@
115 115 <span ng-bind="info.brancheCompany"></span>
116 116 </td>
117 117 <td>
118   - <span ng-bind="info.posts"></span>
  118 + <span ng-bind="info.posts | dict:'gzType':'未知'"></span>
119 119 </td>
120 120 <td>
121 121 <span ng-bind="info.icCardCode"></span>
... ...
src/main/resources/static/pages/scheduleApp/module/main.js
... ... @@ -696,48 +696,38 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusInfoManageService_g&#39;, [&#39;$resource&#39;, fu
696 696 }
697 697 )
698 698 };
699   -
700   -
701   -
702   - return $resource(
703   - '/cars/:id',
704   - {order: 'carCode', direction: 'ASC', id: '@id_route'},
705   - {
706   - list: {
707   - method: 'GET',
708   - params: {
709   - page: 0
710   - }
711   - },
712   - get: {
713   - method: 'GET'
714   - },
715   - save: {
716   - method: 'POST'
717   - }
718   - }
719   - );
720 699 }]);
721 700 // 人员信息service
722 701 angular.module('ScheduleApp').factory('EmployeeInfoManageService_g', ['$resource', function($resource) {
723   - return $resource(
724   - '/personnel/:id',
725   - {order: 'jobCode', direction: 'ASC', id: '@id_route'},
726   - {
727   - list: {
728   - method: 'GET',
729   - params: {
730   - page: 0
  702 + return {
  703 + rest : $resource(
  704 + '/personnel/:id',
  705 + {order: 'jobCode', direction: 'ASC', id: '@id_route'},
  706 + {
  707 + list: {
  708 + method: 'GET',
  709 + params: {
  710 + page: 0
  711 + }
  712 + },
  713 + get: {
  714 + method: 'GET'
  715 + },
  716 + save: {
  717 + method: 'POST'
731 718 }
732   - },
733   - get: {
734   - method: 'GET'
735   - },
736   - save: {
737   - method: 'POST'
738 719 }
739   - }
740   - );
  720 + ),
  721 + validate: $resource(
  722 + '/personnel/validate/:type',
  723 + {},
  724 + {
  725 + jobCode: {
  726 + method: 'GET'
  727 + }
  728 + }
  729 + )
  730 + };
741 731 }]);
742 732 // 车辆设备信息service
743 733 angular.module('ScheduleApp').factory('DeviceInfoManageService_g', ['$resource', function($resource) {
... ... @@ -1099,8 +1089,10 @@ angular.module(&#39;ScheduleApp&#39;).directive(&quot;saRadiogroup&quot;, [function() {
1099 1089  
1100 1090 angular.module('ScheduleApp').directive("remoteValidaton", [
1101 1091 'BusInfoManageService_g',
  1092 + 'EmployeeInfoManageService_g',
1102 1093 function(
1103   - busInfoManageService_g
  1094 + busInfoManageService_g,
  1095 + employeeInfoManageService_g
1104 1096 ) {
1105 1097 /**
1106 1098 * 远端验证指令,依赖于ngModel
... ... @@ -1109,14 +1101,17 @@ angular.module(&#39;ScheduleApp&#39;).directive(&quot;remoteValidaton&quot;, [
1109 1101 */
1110 1102 return {
1111 1103 restrict: "A",
1112   - require: "ngModel",
  1104 + require: "^ngModel",
1113 1105 link: function(scope, element, attr, ngModelCtrl) {
1114 1106 element.bind("keyup", function() {
1115 1107 var modelValue = ngModelCtrl.$modelValue;
  1108 + var rv1_attr = attr["rv1"];
1116 1109 if (attr["rvtype"]) {
1117 1110  
1118 1111 // 根据rvtype的值,确定使用那个远端验证的url,
  1112 + // rv1, rv2, rv3是关联比较值,暂时使用rv1
1119 1113 // 这个貌似没法通用,根据业务变换
  1114 + // TODO:暂时有点乱以后改
1120 1115 if (attr["rvtype"] == "insideCode") {
1121 1116 busInfoManageService_g.validate.insideCode(
1122 1117 {"insideCode_eq": modelValue, type: "equale"},
... ... @@ -1133,11 +1128,55 @@ angular.module(&#39;ScheduleApp&#39;).directive(&quot;remoteValidaton&quot;, [
1133 1128 ngModelCtrl.$setValidity('remote', true);
1134 1129 }
1135 1130 );
  1131 + } else if (attr["rvtype"] == "jobCode") {
  1132 + if (!rv1_attr) {
  1133 + ngModelCtrl.$setValidity('remote', false);
  1134 + return;
  1135 + }
  1136 +
  1137 + employeeInfoManageService_g.validate.jobCode(
  1138 + {"jobCode_eq": modelValue, "companyCode_eq": rv1_attr, type: "equale"},
  1139 + function(result) {
  1140 + //console.log(result);
  1141 + if (result.status == "SUCCESS") {
  1142 + ngModelCtrl.$setValidity('remote', true);
  1143 + } else {
  1144 + ngModelCtrl.$setValidity('remote', false);
  1145 + }
  1146 + },
  1147 + function(result) {
  1148 + //console.log(result);
  1149 + ngModelCtrl.$setValidity('remote', true);
  1150 + }
  1151 + );
1136 1152 }
1137 1153 } else {
1138 1154 // 没有rvtype,就不用远端验证了
1139 1155 ngModelCtrl.$setValidity('remote', true);
1140 1156 }
  1157 +
  1158 + attr.$observe("rv1", function(value) {
  1159 + if (!value) {
  1160 + ngModelCtrl.$setValidity('remote', false);
  1161 + return;
  1162 + }
  1163 +
  1164 + employeeInfoManageService_g.validate.jobCode(
  1165 + {"jobCode_eq": modelValue, "companyCode_eq": rv1_attr, type: "equale"},
  1166 + function(result) {
  1167 + //console.log(result);
  1168 + if (result.status == "SUCCESS") {
  1169 + ngModelCtrl.$setValidity('remote', true);
  1170 + } else {
  1171 + ngModelCtrl.$setValidity('remote', false);
  1172 + }
  1173 + },
  1174 + function(result) {
  1175 + //console.log(result);
  1176 + ngModelCtrl.$setValidity('remote', true);
  1177 + }
  1178 + );
  1179 + });
1141 1180 });
1142 1181 }
1143 1182 };
... ...