Commit d77a5cfd1e827c2a4d094138f1169844065fef5e

Authored by 徐烜
2 parents 50f3de93 1d01aca6

Merge branch 'PSM-4'

src/main/java/com/bsth/controller/schedule/ScheduleRule1FlatController.java
1 package com.bsth.controller.schedule; 1 package com.bsth.controller.schedule;
2 2
3 import com.bsth.controller.BaseController; 3 import com.bsth.controller.BaseController;
4 -import com.bsth.entity.schedule.EmployeeConfigInfo;  
5 -import com.bsth.entity.schedule.GuideboardInfo;  
6 import com.bsth.entity.schedule.rule.ScheduleRule1Flat; 4 import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
7 import com.bsth.repository.schedule.ScheduleRule1FlatRepository; 5 import com.bsth.repository.schedule.ScheduleRule1FlatRepository;
8 -import com.bsth.service.schedule.EmployeeConfigInfoService;  
9 -import com.bsth.service.schedule.GuideboardInfoService;  
10 -import org.apache.commons.lang3.StringUtils;  
11 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.web.bind.annotation.*; 7 import org.springframework.web.bind.annotation.*;
13 8
14 -import java.util.HashMap;  
15 import java.util.Map; 9 import java.util.Map;
16 10
17 /** 11 /**
@@ -23,10 +17,6 @@ public class ScheduleRule1FlatController extends BaseController<ScheduleRule1Fla @@ -23,10 +17,6 @@ public class ScheduleRule1FlatController extends BaseController<ScheduleRule1Fla
23 17
24 @Autowired 18 @Autowired
25 private ScheduleRule1FlatRepository scheduleRule1FlatRepository; 19 private ScheduleRule1FlatRepository scheduleRule1FlatRepository;
26 - @Autowired  
27 - private GuideboardInfoService guideboardInfoService;  
28 - @Autowired  
29 - private EmployeeConfigInfoService employeeConfigInfoService;  
30 20
31 @Override 21 @Override
32 public ScheduleRule1Flat findById(@PathVariable("id") Long aLong) { 22 public ScheduleRule1Flat findById(@PathVariable("id") Long aLong) {
@@ -44,63 +34,6 @@ public class ScheduleRule1FlatController extends BaseController<ScheduleRule1Fla @@ -44,63 +34,6 @@ public class ScheduleRule1FlatController extends BaseController<ScheduleRule1Fla
44 */ 34 */
45 @RequestMapping(method = RequestMethod.POST) 35 @RequestMapping(method = RequestMethod.POST)
46 public Map<String, Object> save(@RequestBody ScheduleRule1Flat t){ 36 public Map<String, Object> save(@RequestBody ScheduleRule1Flat t){
47 - // TODO:根据编码查找id,不做错误检测,暂时这样做,以后前端直接传过来  
48 - // 1、查找路牌配置id  
49 - Map<String, Object> param1 = new HashMap<>();  
50 - param1.put("xl.id_eq", t.getXl().getId());  
51 - param1.put("lpName_eq", null);  
52 -  
53 - String[] lpNames = t.getLpNames().split(",");  
54 - String[] lpIds = new String[lpNames.length];  
55 - for (int i = 0; i < lpNames.length; i++) {  
56 - param1.put("lpName_eq", lpNames[i]);  
57 - Iterable<GuideboardInfo> guideboardInfos = guideboardInfoService.list(param1);  
58 - if (!guideboardInfos.iterator().hasNext()) {  
59 - throw new RuntimeException("路牌:" + lpNames[i] + "没有找到!");  
60 - }  
61 - lpIds[i] = guideboardInfos.iterator().next().getId().toString();  
62 - }  
63 - t.setLpIds(StringUtils.join(lpIds, ","));  
64 -  
65 - // 2、查找人员配置id(这里要考虑分班的情况,先用-隔开,在用,隔开)  
66 - Map<String, Object> param2 = new HashMap<>();  
67 - param2.put("xl.id_eq", t.getXl().getId());  
68 - param2.put("dbbm_eq", null);  
69 -  
70 - String[] ryDbbms = t.getRyDbbms().split(",");  
71 - String[] ryIds = new String[ryDbbms.length];  
72 - for (int j = 0; j < ryDbbms.length; j++) {  
73 - if (ryDbbms[j].indexOf("-") == -1) {  
74 - param2.put("dbbm_eq", ryDbbms[j]);  
75 - Iterable<EmployeeConfigInfo> employeeConfigInfos = employeeConfigInfoService.list(param2);  
76 - if (!employeeConfigInfos.iterator().hasNext()) {  
77 - throw new RuntimeException("搭班编码::" + ryDbbms[j] + "没有找到!");  
78 - }  
79 - ryIds[j] = employeeConfigInfos.iterator().next().getId().toString();  
80 - } else {  
81 - String[] fbRyDbbms = ryDbbms[j].split("-");  
82 - if (fbRyDbbms.length != 2) {  
83 - throw new RuntimeException("搭班编码:" + ryDbbms[j] + "错误!");  
84 - }  
85 - String[] fbRyIds = new String[2];  
86 - param2.put("dbbm_eq", fbRyDbbms[0]);  
87 - Iterable<EmployeeConfigInfo> employeeConfigInfos = employeeConfigInfoService.list(param2);  
88 - if (!employeeConfigInfos.iterator().hasNext()) {  
89 - throw new RuntimeException("搭班编码::" + fbRyDbbms[0] + "没有找到!");  
90 - }  
91 - fbRyIds[0] = employeeConfigInfos.iterator().next().getId().toString();  
92 - param2.put("dbbm_eq", fbRyDbbms[1]);  
93 - employeeConfigInfos = employeeConfigInfoService.list(param2);  
94 - if (!employeeConfigInfos.iterator().hasNext()) {  
95 - throw new RuntimeException("搭班编码::" + fbRyDbbms[1] + "没有找到!");  
96 - }  
97 - fbRyIds[1] = employeeConfigInfos.iterator().next().getId().toString();  
98 - ryIds[j] = StringUtils.join(fbRyIds, "-");  
99 - }  
100 -  
101 - }  
102 - t.setRyConfigIds(StringUtils.join(ryIds, ","));  
103 -  
104 return baseService.save(t); 37 return baseService.save(t);
105 } 38 }
106 39
src/main/resources/datatools/config-dev.properties
@@ -10,7 +10,7 @@ datatools.kvars_dbuname=root @@ -10,7 +10,7 @@ datatools.kvars_dbuname=root
10 #数据库密码 10 #数据库密码
11 datatools.kvars_dbpwd= 11 datatools.kvars_dbpwd=
12 #数据库库名 12 #数据库库名
13 -datatools.kvars_dbdname=control 13 +datatools.kvars_dbdname=mh_control
14 14
15 # 3、上传数据配置信息 15 # 3、上传数据配置信息
16 # 上传文件目录配置(根据不同的环境需要修正) 16 # 上传文件目录配置(根据不同的环境需要修正)
src/main/resources/static/pages/scheduleApp/module/common/dt/MyEmployeeGroupWrapTemplate.html 0 → 100644
  1 +<div name="{{$saEmployeegroupCtrl.$name_attr}}"
  2 + ng-model="$saEmployeegroupCtrl.$$internalmodel">
  3 +
  4 + <style>
  5 + .employee-select {
  6 + min-height: 180px;
  7 + border: 1px solid #ddd;
  8 + }
  9 + .employee-select .employee-input {
  10 + margin: 2px 5px 5px 5px;
  11 + padding-left: 0;
  12 + }
  13 + .employee-select .employee-select-cont {
  14 + text-align: left;
  15 + min-height: 60px;
  16 + padding-right: 0px;
  17 + }
  18 + .employee-select .employee-select-body {
  19 + margin-top: 10px;
  20 + overflow: auto;
  21 + width: auto;
  22 + min-height: 5px;
  23 + }
  24 + .employee-select .employee {
  25 + display: inline-block;
  26 + padding: 8px;
  27 + min-width: 50px;
  28 + text-align: center;
  29 + border: 1px solid #C1C1C1;
  30 + color: #666;
  31 + border-radius: 5px !important;
  32 + margin: 5px;
  33 + }
  34 + .employee-select .employee.active {
  35 + color: white;
  36 + background: #4095E8;
  37 + border: 1px solid #4095E8;
  38 + }
  39 + .employee-select .employee.start {
  40 + color: white;
  41 + background: #32C5D2;
  42 + border: 1px solid #32C5D2;
  43 + }
  44 +
  45 + </style>
  46 +
  47 + <div class="col-md-12 employee-select">
  48 + <div class="col-md-12 employee-input">
  49 + <div class="col-md-9">
  50 + 人员列表
  51 + <span ng-bind="$saEmployeegroupCtrl.$$dataDesc"></span>
  52 + </div>
  53 + </div>
  54 + <div class="col-md-12 employee-select-cont">
  55 + <div class="employee-select-body">
  56 + <div class="employee active"
  57 + ng-repeat="$d in $saEmployeegroupCtrl.$$data track by $index"
  58 + ng-click="$saEmployeegroupCtrl.$$internal_rylist_click($index)">
  59 + {{$d.jsy}}-{{$d.spy}}
  60 + </div>
  61 + </div>
  62 + </div>
  63 + <div class="col-md-12 employee-input">
  64 + <div class="col-md-9">
  65 + 已经选中的人员列表
  66 + <span ng-bind="$saEmployeegroupCtrl.$$dataSelectDesc"></span>
  67 + </div>
  68 + </div>
  69 + <div class="col-md-12 employee-select-cont">
  70 + <div class="employee-select-body">
  71 + <div ng-class="{employee: true, active: true, start: $d.isstart}"
  72 + ng-repeat="$d in $saEmployeegroupCtrl.$$dataSelected track by $index"
  73 + ng-click="$saEmployeegroupCtrl.$$internal_selrylist_click($index)"
  74 + ng-dblclick="$saEmployeegroupCtrl.$$internal_selrylist_dbclick($index)">
  75 + {{$d.jsy}}-{{$d.spy}}
  76 + </div>
  77 + </div>
  78 + </div>
  79 + </div>
  80 +
  81 +
  82 +</div>
0 \ No newline at end of file 83 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/common/dt/MyGuideboardGroupWrapTemplate.html
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 3
4 <style> 4 <style>
5 .guideboard-select { 5 .guideboard-select {
6 - height: 180px; 6 + min-height: 180px;
7 border: 1px solid #ddd; 7 border: 1px solid #ddd;
8 } 8 }
9 .guideboard-select .guideboard-input { 9 .guideboard-select .guideboard-input {
@@ -12,19 +12,19 @@ @@ -12,19 +12,19 @@
12 } 12 }
13 .guideboard-select .guideboard-select-cont { 13 .guideboard-select .guideboard-select-cont {
14 text-align: left; 14 text-align: left;
15 - height: 100px; 15 + min-height: 60px;
16 padding-right: 0px; 16 padding-right: 0px;
17 } 17 }
18 .guideboard-select .guideboard-select-body { 18 .guideboard-select .guideboard-select-body {
19 margin-top: 10px; 19 margin-top: 10px;
20 overflow: auto; 20 overflow: auto;
21 width: auto; 21 width: auto;
22 - height: 100px; 22 + min-height: 5px;
23 } 23 }
24 .guideboard-select .guideboard { 24 .guideboard-select .guideboard {
25 display: inline-block; 25 display: inline-block;
26 padding: 8px; 26 padding: 8px;
27 - min-width: 85px; 27 + min-width: 50px;
28 text-align: center; 28 text-align: center;
29 border: 1px solid #C1C1C1; 29 border: 1px solid #C1C1C1;
30 color: #666; 30 color: #666;
@@ -36,28 +36,43 @@ @@ -36,28 +36,43 @@
36 background: #4095E8; 36 background: #4095E8;
37 border: 1px solid #4095E8; 37 border: 1px solid #4095E8;
38 } 38 }
  39 + .guideboard-select .guideboard.start {
  40 + color: white;
  41 + background: #32C5D2;
  42 + border: 1px solid #32C5D2;
  43 + }
39 44
40 </style> 45 </style>
41 46
42 <div class="col-md-12 guideboard-select"> 47 <div class="col-md-12 guideboard-select">
43 <div class="col-md-12 guideboard-input"> 48 <div class="col-md-12 guideboard-input">
44 <div class="col-md-9"> 49 <div class="col-md-9">
45 - 某某线路的路牌列表 50 + 路牌列表
  51 + <span ng-bind="$saGuideboardgroupCtrl.$$dataDesc"></span>
46 </div> 52 </div>
47 </div> 53 </div>
48 <div class="col-md-12 guideboard-select-cont"> 54 <div class="col-md-12 guideboard-select-cont">
49 <div class="guideboard-select-body"> 55 <div class="guideboard-select-body">
50 - <div class="guideboard active">  
51 - 1  
52 - </div>  
53 - <div class="guideboard active">  
54 - 2 56 + <div class="guideboard active"
  57 + ng-repeat="$d in $saGuideboardgroupCtrl.$$data track by $index"
  58 + ng-click="$saGuideboardgroupCtrl.$$internal_lplist_click($index)">
  59 + {{$d.lpname}}
55 </div> 60 </div>
56 - <div class="guideboard active">  
57 - 3  
58 - </div>  
59 - <div class="guideboard active">  
60 - 4 61 + </div>
  62 + </div>
  63 + <div class="col-md-12 guideboard-input">
  64 + <div class="col-md-9">
  65 + 已经选中的路牌列表
  66 + <span ng-bind="$saGuideboardgroupCtrl.$$dataSelectDesc"></span>
  67 + </div>
  68 + </div>
  69 + <div class="col-md-12 guideboard-select-cont">
  70 + <div class="guideboard-select-body">
  71 + <div ng-class="{guideboard: true, active: true, start: $d.isstart}"
  72 + ng-repeat="$d in $saGuideboardgroupCtrl.$$dataSelected track by $index"
  73 + ng-click="$saGuideboardgroupCtrl.$$internal_sellplist_click($index)"
  74 + ng-dblclick="$saGuideboardgroupCtrl.$$internal_sellplist_dbclick($index)">
  75 + {{$d.lpname}}
61 </div> 76 </div>
62 </div> 77 </div>
63 </div> 78 </div>
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
@@ -1372,27 +1372,779 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saDategroup&#39;, [ @@ -1372,27 +1372,779 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saDategroup&#39;, [
1372 } 1372 }
1373 ]); 1373 ]);
1374 1374
  1375 +/**
  1376 + * saGuideboardgroup指令
  1377 + * 属性如下:
  1378 + * name(必须):控件的名字
  1379 + * model(必须):指定一个外部object,独立作用域,如:model=ctrl.employeeInfoForSave
  1380 + * xlidvalue(必须):绑定的model线路id值,如:xlidvalue={{ctrl.employeeInfoForSave.xl.id}}
  1381 + * lprangevalue(必须):绑定的model路牌名字范围值,如:lprangevalue={{ctrl.employeeInfoForSave.lprange}}
  1382 + * lprangename(必须):绑定的model路牌名字范围字段名,如:lprangename=lprange
  1383 + * lpidrangevalue(必须):绑定的model路牌id范围值,如:lprangevalue={{ctrl.employeeInfoForSave.lprange}}
  1384 + * lpidrangename(必须):绑定的model路牌id范围字段名,如:lprangename=lprange
  1385 + * lpstartvalue(必须):绑定的model起始路牌值,如:lpstartvalue={{ctrl.employeeInfoForSave.lpstart}}
  1386 + * lpstartname(必须):绑定的model起始路牌字段名,如:lpstartname=lpstart
  1387 + *
  1388 + * required(可选):是否要用required验证
  1389 + *
  1390 + */
  1391 +angular.module('ScheduleApp').directive('saGuideboardgroup', [
  1392 + 'GuideboardManageService_g',
  1393 + function(guideboardManageService_g) {
  1394 + return {
  1395 + restrict: 'E',
  1396 + templateUrl: '/pages/scheduleApp/module/common/dt/MyGuideboardGroupWrapTemplate.html',
  1397 + scope: {
  1398 + model: "=" // 独立作用域,关联外部的模型object
  1399 + },
  1400 + controllerAs: '$saGuideboardgroupCtrl',
  1401 + bindToController: true,
  1402 + controller: function($scope) {
  1403 + var self = this;
  1404 + self.$$data = []; // 选择线路后,该线路的路牌数据
  1405 +
  1406 + // 测试数据
  1407 + //self.$$data = [
  1408 + // {lpid: 1, lpname: '路1', isstart: false},
  1409 + // {lpid: 2, lpname: '路2', isstart: true},
  1410 + // {lpid: 3, lpname: '路3', isstart: false}
  1411 + //];
  1412 +
  1413 +
  1414 + self.$$dataSelected = []; // 选中的路牌列表
  1415 + self.$$dataSelectedStart = undefined; // 起始路牌
  1416 +
  1417 + //self.$$dataSelected = [
  1418 + // {lpid: 11, lpname: '路11', isstart: false},
  1419 + // {lpid: 12, lpname: '路12', isstart: true},
  1420 + // {lpid: 13, lpname: '路13', isstart: false}
  1421 + //];
  1422 +
  1423 + // saGuideboardgroup组件的ng-model,用于外部绑定等操作
  1424 + self.$$internalmodel = undefined;
  1425 +
  1426 + self.$$data_init = false; // *数据源初始化标志
  1427 + self.$$data_xl_first_init = false; // 线路是否初始化
  1428 + self.$$data_lp_first_init = false; // 路牌名字是否初始化
  1429 + self.$$data_lpid_first_init = false; // 路牌id是否初始化
  1430 + self.$$data_lpstart_first_init = false; // 起始路牌是否初始化
  1431 +
  1432 + self.$$dataDesc = ""; // 路牌列表描述
  1433 + self.$$dataSelectDesc = ""; // 选中路牌描述
  1434 +
  1435 + },
  1436 +
  1437 + /**
  1438 + * 此阶段可以改dom结构,此时angular还没扫描指令,
  1439 + * 这里就可以动态添加其他angularjs的指令字符串,如required指令字符串。
  1440 + * @param tElem
  1441 + * @param tAttrs
  1442 + * @returns {{pre: Function, post: Function}}
  1443 + */
  1444 + compile: function(tElem, tAttrs) {
  1445 + // TODO:获取所有的属性
  1446 + var $name_attr = tAttrs["name"]; // 控件的名字
  1447 + var $required_attr = tAttrs["required"]; // 是否需要required验证
  1448 + var $lprangename_attr = tAttrs["lprangename"]; // 绑定的model路牌名字范围字段名
  1449 + var $lpidrangename_attr = tAttrs["lpidrangename"]; // 绑定的model路牌id范围字段名
  1450 + var $lpstartname_attr = tAttrs["lpstartname"]; // 绑定的model起始路牌字段名
  1451 +
  1452 + // controlAs名字
  1453 + var ctrlAs = '$saGuideboardgroupCtrl';
  1454 +
  1455 + // 如果有required属性,添加angularjs required验证
  1456 + if ($required_attr != undefined) {
  1457 + //console.log(tElem.html());
  1458 + tElem.find("div").attr("required", "");
  1459 + }
  1460 +
  1461 + return {
  1462 + pre: function(scope, element, attr) {
  1463 + // TODO:
  1464 + },
  1465 +
  1466 + /**
  1467 + * 相当于link函数。
  1468 + * @param scope
  1469 + * @param element
  1470 + * @param attr
  1471 + */
  1472 + post: function(scope, element, attr) {
  1473 + // name属性
  1474 + if ($name_attr) {
  1475 + scope[ctrlAs]["$name_attr"] = $name_attr;
  1476 + }
  1477 +
  1478 + // TODO:
  1479 +
  1480 +
  1481 + /**
  1482 + * 路牌列表点击(路牌列表中选中路牌)
  1483 + * @param $index
  1484 + */
  1485 + scope[ctrlAs].$$internal_lplist_click = function($index) {
  1486 + var data_temp = scope[ctrlAs].$$data;
  1487 + if (data_temp && data_temp.length > $index) {
  1488 + scope[ctrlAs].$$dataSelected.push({
  1489 + lpid: data_temp[$index].lpid,
  1490 + lpname: data_temp[$index].lpname,
  1491 + isstart: data_temp[$index].isstart
  1492 + });
  1493 +
  1494 + // 如果没有指定过初始路牌,默认选择此路牌作为起始路牌
  1495 + if (scope[ctrlAs].$$dataSelectedStart == undefined) {
  1496 + scope[ctrlAs].$$internal_sellplist_click(
  1497 + scope[ctrlAs].$$dataSelected.length - 1);
  1498 + }
  1499 + }
  1500 + };
  1501 + /**
  1502 + * 选中的路牌单击(初始路牌选择)
  1503 + * @param $index
  1504 + */
  1505 + scope[ctrlAs].$$internal_sellplist_click = function($index) {
  1506 + var data_temp = scope[ctrlAs].$$dataSelected;
  1507 + if (data_temp && data_temp.length > $index) {
  1508 + for (var i = 0; i < data_temp.length; i++) {
  1509 + data_temp[i].isstart = false;
  1510 + }
  1511 + data_temp[$index].isstart = true;
  1512 + scope[ctrlAs].$$dataSelectedStart = $index;
  1513 + }
  1514 + };
  1515 + /**
  1516 + * 选中的路牌双击(删除选中的路牌)
  1517 + * @param $index
  1518 + */
  1519 + scope[ctrlAs].$$internal_sellplist_dbclick = function($index) {
  1520 + var data_temp = scope[ctrlAs].$$dataSelected;
  1521 + if (data_temp && data_temp.length > $index) {
  1522 + if (scope[ctrlAs].$$dataSelectedStart == $index) {
  1523 + scope[ctrlAs].$$dataSelectedStart = undefined;
  1524 + }
  1525 + data_temp.splice($index, 1);
  1526 + }
  1527 + };
  1528 +
  1529 +
  1530 + /**
  1531 + * 验证内部数据,更新外部model
  1532 + */
  1533 + scope[ctrlAs].$$internal_validate_model = function() {
  1534 + var data_temp = scope[ctrlAs].$$dataSelected;
  1535 + var data_temp2 = scope[ctrlAs].$$dataSelectedStart;
  1536 + var lpNames = [];
  1537 + var lpIds = [];
  1538 + var lpStart = 0;
  1539 + var i = 0;
  1540 +
  1541 + if (data_temp &&
  1542 + data_temp.length > 0 &&
  1543 + data_temp2 != undefined) {
  1544 +
  1545 + for (i = 0; i < data_temp.length; i++) {
  1546 + lpNames.push(data_temp[i].lpname);
  1547 + lpIds.push(data_temp[i].lpid)
  1548 + }
  1549 + data_temp[data_temp2].isstart = true;
  1550 + lpStart = data_temp2 + 1;
  1551 +
  1552 + // 更新内部model,用于外部验证
  1553 + // 内部model的值暂时随意,以后再改
  1554 + scope[ctrlAs].$$internalmodel = {desc: "ok"};
  1555 +
  1556 + // 更新外部model字段
  1557 + if ($lprangename_attr) {
  1558 + console.log("lprangename=" + lpNames.join(','));
  1559 + eval("scope[ctrlAs].model" + "." + $lprangename_attr + " = lpNames.join(',');");
  1560 + }
  1561 + if ($lpidrangename_attr) {
  1562 + console.log("lpidrangename=" + lpIds.join(','));
  1563 + eval("scope[ctrlAs].model" + "." + $lpidrangename_attr + " = lpIds.join(',');");
  1564 + }
  1565 + if ($lpstartname_attr) {
  1566 + console.log("lpstartname=" + lpStart);
  1567 + eval("scope[ctrlAs].model" + "." + $lpstartname_attr + " = lpStart;");
  1568 + }
  1569 +
  1570 + scope[ctrlAs].$$dataSelectDesc =
  1571 + ",共" + data_temp.length + "个," + "初始路牌,第" + lpStart + "个";
  1572 +
  1573 + } else {
  1574 + scope[ctrlAs].$$internalmodel = undefined;
  1575 + }
  1576 +
  1577 +
  1578 + };
  1579 +
  1580 + // 监控内部数据,$$data_selected 变化
  1581 + scope.$watch(
  1582 + function() {
  1583 + return scope[ctrlAs].$$dataSelected;
  1584 + },
  1585 + function(newValue, oldValue) {
  1586 + scope[ctrlAs].$$internal_validate_model();
  1587 + },
  1588 + true
  1589 + );
  1590 +
  1591 + // 监控内部数据,$$data_selected_start 变化
  1592 + scope.$watch(
  1593 + function() {
  1594 + return scope[ctrlAs].$$dataSelectedStart;
  1595 + },
  1596 + function(newValue, oldValue) {
  1597 + scope[ctrlAs].$$internal_validate_model();
  1598 + },
  1599 + true
  1600 + );
  1601 +
  1602 + /**
  1603 + * 验证数据是否初始化完成,
  1604 + * 所谓的初始化就是内部所有的数据被有效设定过一次。
  1605 + */
  1606 + scope[ctrlAs].$$internal_validate_init = function() {
  1607 + var self = scope[ctrlAs];
  1608 +
  1609 + if (self.$$data_xl_first_init &&
  1610 + self.$$data_lp_first_init &&
  1611 + self.$$data_lpid_first_init &&
  1612 + self.$$data_lpstart_first_init) {
  1613 + console.log("数据初始化完毕!");
  1614 + self.$$data_init = true;
  1615 + }
  1616 +
  1617 + };
  1618 +
  1619 + // 监控初始化标志,线路,路牌,路牌id,起始路牌
  1620 + scope.$watch(
  1621 + function() {
  1622 + return scope[ctrlAs].$$data_xl_first_init;
  1623 + },
  1624 + function(newValue, oldValue) {
  1625 + scope[ctrlAs].$$internal_validate_init();
  1626 + }
  1627 + );
  1628 + scope.$watch(
  1629 + function() {
  1630 + return scope[ctrlAs].$$data_lp_first_init;
  1631 + },
  1632 + function(newValue, oldValue) {
  1633 + scope[ctrlAs].$$internal_validate_init();
  1634 + }
  1635 + );
  1636 + scope.$watch(
  1637 + function() {
  1638 + return scope[ctrlAs].$$data_lpid_first_init;
  1639 + },
  1640 + function(newValue, oldValue) {
  1641 + scope[ctrlAs].$$internal_validate_init();
  1642 + }
  1643 + );
  1644 + scope.$watch(
  1645 + function() {
  1646 + return scope[ctrlAs].$$data_lpstart_first_init;
  1647 + },
  1648 + function(newValue, oldValue) {
  1649 + scope[ctrlAs].$$internal_validate_init();
  1650 + }
  1651 + );
  1652 +
  1653 +
  1654 + // 监控线路id的变化
  1655 + attr.$observe("xlidvalue", function(value) {
  1656 + if (value && value != "") {
  1657 + console.log("xlidvalue=" + value);
  1658 +
  1659 + guideboardManageService_g.rest.list(
  1660 + {"xl.id_eq": value, size: 100},
  1661 + function(result) {
  1662 + // 获取值了
  1663 + console.log("路牌获取了");
  1664 +
  1665 + scope[ctrlAs].$$data = [];
  1666 + for (var i = 0; i < result.content.length; i++) {
  1667 + scope[ctrlAs].$$data.push({
  1668 + lpid: result.content[i].id,
  1669 + lpname: result.content[i].lpName,
  1670 + isstart: false
  1671 + });
  1672 + }
  1673 + if (scope[ctrlAs].$$data_init) {
  1674 + scope[ctrlAs].$$dataSelected = [];
  1675 + scope[ctrlAs].$$dataSelectedStart = undefined;
  1676 + scope[ctrlAs].$$internalmodel = undefined;
  1677 + scope[ctrlAs].$$dataDesc = "";
  1678 + scope[ctrlAs].$$dataSelectDesc = "";
  1679 + }
  1680 + scope[ctrlAs].$$data_xl_first_init = true;
  1681 +
  1682 + scope[ctrlAs].$$dataDesc = ",共" + result.content.length + "个";
  1683 + },
  1684 + function(result) {
  1685 +
  1686 + }
  1687 + );
  1688 +
  1689 + }
  1690 + });
  1691 +
  1692 + // 监控路牌名称范围值的变化
  1693 + attr.$observe("lprangevalue", function(value) {
  1694 + if (value && value != "") {
  1695 + var data_temp = scope[ctrlAs].$$dataSelected;
  1696 + var lpnames = value.split(",");
  1697 + var i = 0;
  1698 + if (data_temp && data_temp.length == 0) { // 初始创建
  1699 + console.log("lprangevalue变换了");
  1700 + for (i = 0; i < lpnames.length; i++) {
  1701 + scope[ctrlAs].$$dataSelected.push({
  1702 + lpname: lpnames[i],
  1703 + isstart: false
  1704 + });
  1705 + }
  1706 + } else {
  1707 + for (i = 0; i < lpnames.length; i++) {
  1708 + data_temp[i].lpname = lpnames[i];
  1709 + }
  1710 + }
  1711 + scope[ctrlAs].$$data_lp_first_init = true;
  1712 + }
  1713 + });
  1714 +
  1715 + // 监控路牌id范围值的变化
  1716 + attr.$observe("lpidrangevalue", function(value) {
  1717 + if (value && value != "") {
  1718 + console.log("lpidrangevalue=" + value);
  1719 + var data_temp = scope[ctrlAs].$$dataSelected;
  1720 + var lpids = value.split(",");
  1721 + var i = 0;
  1722 + if (data_temp && data_temp.length == 0) { // 初始创建
  1723 + console.log("lpidrangevalue");
  1724 + for (i = 0; i < lpids.length; i++) {
  1725 + scope[ctrlAs].$$dataSelected.push({
  1726 + lpid: lpids[i],
  1727 + isstart: false
  1728 + });
  1729 + }
  1730 + } else {
  1731 + for (i = 0; i < lpids.length; i++) {
  1732 + data_temp[i].lpid = lpids[i];
  1733 + }
  1734 + }
  1735 + scope[ctrlAs].$$data_lpid_first_init = true;
  1736 + }
  1737 + });
  1738 +
  1739 + // 监控起始路牌的变化
  1740 + attr.$observe("lpstartvalue", function(value) {
  1741 + if (value && value != "") {
  1742 + scope[ctrlAs].$$dataSelectedStart = value - 1;
  1743 + scope[ctrlAs].$$data_lpstart_first_init = true;
  1744 + }
  1745 + });
1375 1746
1376 1747
1377 1748
  1749 + }
  1750 + }
1378 1751
  1752 + }
  1753 + }
  1754 + }
  1755 +]);
1379 1756
  1757 +/**
  1758 + * saEmployeegroup指令
  1759 + * 属性如下:
  1760 + * name(必须):控件的名字
  1761 + * model(必须):指定一个外部object,独立作用域,如:model=ctrl.employeeInfoForSave
  1762 + * xlidvalue(必须):绑定的model线路id值,如:xlidvalue={{ctrl.employeeInfoForSave.xl.id}}
  1763 + * dbbmrangevalue(必须):绑定的model搭班编码范围值,如:lprangevalue={{ctrl.employeeInfoForSave.lprange}}
  1764 + * dbbmrangename(必须):绑定的model搭班编码范围字段名,如:lprangename=lprange
  1765 + * rycidrangevalue(必须):绑定的model人员配置idid范围值,如:lprangevalue={{ctrl.employeeInfoForSave.lprange}}
  1766 + * rycidrangename(必须):绑定的model人员配置id范围字段名,如:lprangename=lprange
  1767 + * rystartvalue(必须):绑定的model起始人员,如:lpstartvalue={{ctrl.employeeInfoForSave.lpstart}}
  1768 + * rystartname(必须):绑定的model起始人员字段名,如:lpstartname=lpstart
  1769 + *
  1770 + * required(可选):是否要用required验证
  1771 + *
  1772 + */
  1773 +angular.module('ScheduleApp').directive('saEmployeegroup', [
  1774 + 'EmployeeConfigService_g',
  1775 + function(employeeConfigService_g) {
  1776 + return {
  1777 + restrict: 'E',
  1778 + templateUrl: '/pages/scheduleApp/module/common/dt/MyEmployeeGroupWrapTemplate.html',
  1779 + scope: {
  1780 + model: "=" // 独立作用域,关联外部的模型object
  1781 + },
  1782 + controllerAs: '$saEmployeegroupCtrl',
  1783 + bindToController: true,
  1784 + controller: function($scope) {
  1785 + var self = this;
  1786 + self.$$data = []; // 选择线路后,该线路的人员配置数据
1380 1787
  1788 + // 测试数据
  1789 + //self.$$data = [
  1790 + // {id: 1, dbbm: "1", jsy: '忍1', spy: '守1', isstart: false},
  1791 + // {id: 2, dbbm: "2", jsy: '忍2', spy: '守2', isstart: true},
  1792 + // {id: 3, dbbm: "3", jsy: '忍3', spy: '守3', isstart: false}
  1793 + //];
1381 1794
1382 1795
  1796 + self.$$dataSelected = []; // 选中的人员配置列表
  1797 + self.$$dataSelectedStart = undefined; // 起始人员配置
1383 1798
  1799 + // saGuideboardgroup组件的ng-model,用于外部绑定等操作
  1800 + self.$$internalmodel = undefined;
1384 1801
  1802 + self.$$data_init = false; // *数据源初始化标志
  1803 + self.$$data_xl_first_init = false; // 线路是否初始化
  1804 + self.$$data_ry_first_init = false; // 人员配置是否初始化
  1805 + self.$$data_rycid_first_init = false; // 人员配置id是否初始化
  1806 + self.$$data_rystart_first_init = false; // 起始人员是否初始化
1385 1807
  1808 + self.$$dataDesc = ""; // 路牌列表描述
  1809 + self.$$dataSelectDesc = ""; // 选中路牌描述
1386 1810
  1811 + },
1387 1812
  1813 + /**
  1814 + * 此阶段可以改dom结构,此时angular还没扫描指令,
  1815 + * 这里就可以动态添加其他angularjs的指令字符串,如required指令字符串。
  1816 + * @param tElem
  1817 + * @param tAttrs
  1818 + * @returns {{pre: Function, post: Function}}
  1819 + */
  1820 + compile: function(tElem, tAttrs) {
  1821 + // TODO:获取所有的属性
  1822 + var $name_attr = tAttrs["name"]; // 控件的名字
  1823 + var $required_attr = tAttrs["required"]; // 是否需要required验证
  1824 + var $dbbmrangename_attr = tAttrs["dbbmrangename"]; // 绑定的model搭班编码范围字段名
  1825 + var rycidrangename_attr = tAttrs["rycidrangename"]; // 绑定的model人员配置id范围字段名
  1826 + var $rystartname_attr = tAttrs["rystartname"]; // 绑定的model起始人员字段名
1388 1827
  1828 + // controlAs名字
  1829 + var ctrlAs = '$saEmployeegroupCtrl';
1389 1830
  1831 + // 如果有required属性,添加angularjs required验证
  1832 + if ($required_attr != undefined) {
  1833 + //console.log(tElem.html());
  1834 + tElem.find("div").attr("required", "");
  1835 + }
1390 1836
  1837 + return {
  1838 + pre: function(scope, element, attr) {
  1839 + // TODO:
  1840 + },
1391 1841
  1842 + /**
  1843 + * 相当于link函数。
  1844 + * @param scope
  1845 + * @param element
  1846 + * @param attr
  1847 + */
  1848 + post: function(scope, element, attr) {
  1849 + // name属性
  1850 + if ($name_attr) {
  1851 + scope[ctrlAs]["$name_attr"] = $name_attr;
  1852 + }
1392 1853
  1854 + // TODO:
1393 1855
1394 1856
  1857 + /**
  1858 + * 人员配置列表点击(人员配置列表中选中路牌)
  1859 + * @param $index
  1860 + */
  1861 + scope[ctrlAs].$$internal_rylist_click = function($index) {
  1862 + var data_temp = scope[ctrlAs].$$data;
  1863 + if (data_temp && data_temp.length > $index) {
  1864 + scope[ctrlAs].$$dataSelected.push({
  1865 + id : data_temp[$index].id,
  1866 + dbbm: data_temp[$index].dbbm,
  1867 + jsy: data_temp[$index].jsy,
  1868 + spy: data_temp[$index].spy,
  1869 + isstart: data_temp[$index].isstart
  1870 + });
  1871 +
  1872 + // 如果没有指定过初始人员,默认选择此人员作为起始人员
  1873 + if (scope[ctrlAs].$$dataSelectedStart == undefined) {
  1874 + scope[ctrlAs].$$internal_selrylist_click(
  1875 + scope[ctrlAs].$$dataSelected.length - 1);
  1876 + }
  1877 + }
  1878 + };
  1879 + /**
  1880 + * 选中的人员单击(初始人员选择)
  1881 + * @param $index
  1882 + */
  1883 + scope[ctrlAs].$$internal_selrylist_click = function($index) {
  1884 + var data_temp = scope[ctrlAs].$$dataSelected;
  1885 + if (data_temp && data_temp.length > $index) {
  1886 + for (var i = 0; i < data_temp.length; i++) {
  1887 + data_temp[i].isstart = false;
  1888 + }
  1889 + data_temp[$index].isstart = true;
  1890 + scope[ctrlAs].$$dataSelectedStart = $index;
  1891 + }
  1892 + };
  1893 + /**
  1894 + * 选中的人员双击(删除选中的人员)
  1895 + * @param $index
  1896 + */
  1897 + scope[ctrlAs].$$internal_selrylist_dbclick = function($index) {
  1898 + var data_temp = scope[ctrlAs].$$dataSelected;
  1899 + if (data_temp && data_temp.length > $index) {
  1900 + if (scope[ctrlAs].$$dataSelectedStart == $index) {
  1901 + scope[ctrlAs].$$dataSelectedStart = undefined;
  1902 + }
  1903 + data_temp.splice($index, 1);
  1904 + }
  1905 + };
  1906 +
  1907 +
  1908 + /**
  1909 + * 验证内部数据,更新外部model
  1910 + */
  1911 + scope[ctrlAs].$$internal_validate_model = function() {
  1912 + var data_temp = scope[ctrlAs].$$dataSelected;
  1913 + var data_temp2 = scope[ctrlAs].$$dataSelectedStart;
  1914 + var ryDbbms = [];
  1915 + var ryCids = [];
  1916 + var ryStart = 0;
  1917 + var i = 0;
  1918 +
  1919 + if (data_temp &&
  1920 + data_temp.length > 0 &&
  1921 + data_temp2 != undefined) {
  1922 +
  1923 + for (i = 0; i < data_temp.length; i++) {
  1924 + ryDbbms.push(data_temp[i].dbbm);
  1925 + ryCids.push(data_temp[i].id);
  1926 + }
  1927 + data_temp[data_temp2].isstart = true;
  1928 + ryStart = data_temp2 + 1;
  1929 +
  1930 + // 更新内部model,用于外部验证
  1931 + // 内部model的值暂时随意,以后再改
  1932 + scope[ctrlAs].$$internalmodel = {desc: "ok"};
  1933 +
  1934 + // 更新外部model字段
  1935 + if ($dbbmrangename_attr) {
  1936 + console.log("dbbmrangename=" + ryDbbms.join(','));
  1937 + eval("scope[ctrlAs].model" + "." + $dbbmrangename_attr + " = ryDbbms.join(',');");
  1938 + }
  1939 + if (rycidrangename_attr) {
  1940 + console.log("rycidrangename=" + ryCids.join(','));
  1941 + eval("scope[ctrlAs].model" + "." + rycidrangename_attr + " = ryCids.join(',');");
  1942 + }
  1943 + if ($rystartname_attr) {
  1944 + console.log("rystartname=" + ryStart);
  1945 + eval("scope[ctrlAs].model" + "." + $rystartname_attr + " = ryStart;");
  1946 + }
  1947 +
  1948 + scope[ctrlAs].$$dataSelectDesc =
  1949 + ",共" + data_temp.length + "组," + "初始人员,第" + ryStart + "组";
1395 1950
  1951 + } else {
  1952 + scope[ctrlAs].$$internalmodel = undefined;
  1953 + }
1396 1954
1397 1955
  1956 + };
  1957 +
  1958 + // 监控内部数据,$$data_selected 变化
  1959 + scope.$watch(
  1960 + function() {
  1961 + return scope[ctrlAs].$$dataSelected;
  1962 + },
  1963 + function(newValue, oldValue) {
  1964 + scope[ctrlAs].$$internal_validate_model();
  1965 + },
  1966 + true
  1967 + );
  1968 +
  1969 + // 监控内部数据,$$data_selected_start 变化
  1970 + scope.$watch(
  1971 + function() {
  1972 + return scope[ctrlAs].$$dataSelectedStart;
  1973 + },
  1974 + function(newValue, oldValue) {
  1975 + scope[ctrlAs].$$internal_validate_model();
  1976 + },
  1977 + true
  1978 + );
  1979 +
  1980 + /**
  1981 + * 验证数据是否初始化完成,
  1982 + * 所谓的初始化就是内部所有的数据被有效设定过一次。
  1983 + */
  1984 + scope[ctrlAs].$$internal_validate_init = function() {
  1985 + var self = scope[ctrlAs];
  1986 + var data_temp = self.$$data;
  1987 + var dataSelect_temp = self.$$dataSelected;
  1988 + var i = 0;
  1989 + var j = 0;
  1990 +
  1991 + if (self.$$data_xl_first_init &&
  1992 + self.$$data_ry_first_init &&
  1993 + self.$$data_rycid_first_init &&
  1994 + self.$$data_rystart_first_init) {
  1995 + console.log("数据初始化完毕!");
  1996 + self.$$data_init = true;
  1997 +
  1998 + // 修正选择dataSelect
  1999 + for (i = 0; i < dataSelect_temp.length; i++) {
  2000 + for (j = 0; j < data_temp.length; j++) {
  2001 + if (dataSelect_temp[i].dbbm == data_temp[j].dbbm) {
  2002 + dataSelect_temp[i].jsy = data_temp[j].jsy;
  2003 + dataSelect_temp[i].spy = data_temp[j].spy;
  2004 + break;
  2005 + }
  2006 + }
  2007 + }
  2008 + }
  2009 +
  2010 + };
  2011 +
  2012 + // 监控初始化标志,线路,人员,起始人员
  2013 + scope.$watch(
  2014 + function() {
  2015 + return scope[ctrlAs].$$data_xl_first_init;
  2016 + },
  2017 + function(newValue, oldValue) {
  2018 + scope[ctrlAs].$$internal_validate_init();
  2019 + }
  2020 + );
  2021 + scope.$watch(
  2022 + function() {
  2023 + return scope[ctrlAs].$$data_ry_first_init;
  2024 + },
  2025 + function(newValue, oldValue) {
  2026 + scope[ctrlAs].$$internal_validate_init();
  2027 + }
  2028 + );
  2029 + scope.$watch(
  2030 + function() {
  2031 + return scope[ctrlAs].$$data_rycid_first_init;
  2032 + },
  2033 + function(newValue, oldValue) {
  2034 + scope[ctrlAs].$$internal_validate_init();
  2035 + }
  2036 + );
  2037 + scope.$watch(
  2038 + function() {
  2039 + return scope[ctrlAs].$$data_rystart_first_init;
  2040 + },
  2041 + function(newValue, oldValue) {
  2042 + scope[ctrlAs].$$internal_validate_init();
  2043 + }
  2044 + );
  2045 +
  2046 +
  2047 + // 监控线路id的变化
  2048 + attr.$observe("xlidvalue", function(value) {
  2049 + if (value && value != "") {
  2050 + console.log("xlidvalue=" + value);
  2051 +
  2052 + employeeConfigService_g.rest.list(
  2053 + {"xl.id_eq": value, size: 100},
  2054 + function(result) {
  2055 + // 获取值了
  2056 + console.log("人员配置获取了");
  2057 +
  2058 + scope[ctrlAs].$$data = [];
  2059 + for (var i = 0; i < result.content.length; i++) {
  2060 + scope[ctrlAs].$$data.push({
  2061 + id: result.content[i].id,
  2062 + dbbm: result.content[i].dbbm,
  2063 + jsy: result.content[i].jsy.personnelName,
  2064 + spy: result.content[i].spy == null ? "" : result.content[i].spy.personnelName,
  2065 + isstart: false
  2066 + });
  2067 + }
  2068 + if (scope[ctrlAs].$$data_init) {
  2069 + scope[ctrlAs].$$dataSelected = [];
  2070 + scope[ctrlAs].$$dataSelectedStart = undefined;
  2071 + scope[ctrlAs].$$internalmodel = undefined;
  2072 + scope[ctrlAs].$$dataDesc = "";
  2073 + scope[ctrlAs].$$dataSelectDesc = "";
  2074 + }
  2075 + scope[ctrlAs].$$data_xl_first_init = true;
  2076 +
  2077 + scope[ctrlAs].$$dataDesc = ",共" + result.content.length + "组";
  2078 + },
  2079 + function(result) {
  2080 +
  2081 + }
  2082 + );
  2083 +
  2084 + }
  2085 + });
  2086 +
  2087 + // 监控搭班编码范围值的变化
  2088 + attr.$observe("dbbmrangevalue", function(value) {
  2089 + if (value && value != "") {
  2090 + var data_temp = scope[ctrlAs].$$dataSelected;
  2091 + var dbbmnames = value.split(",");
  2092 + var i = 0;
  2093 + if (data_temp && data_temp.length == 0) { // 初始创建
  2094 + console.log("dbbmrangevalue变换了");
  2095 + for (i = 0; i < dbbmnames.length; i++) {
  2096 + scope[ctrlAs].$$dataSelected.push({
  2097 + dbbm: dbbmnames[i],
  2098 + isstart: false
  2099 + });
  2100 + }
  2101 + } else {
  2102 + for (i = 0; i < dbbmnames.length; i++) {
  2103 + data_temp[i].dbbm = dbbmnames[i];
  2104 + }
  2105 + }
  2106 + scope[ctrlAs].$$data_ry_first_init = true;
  2107 + }
  2108 + });
  2109 +
  2110 + // 监控人员配置id范围值的变化
  2111 + attr.$observe("rycidrangevalue", function(value) {
  2112 + if (value && value != "") {
  2113 + var data_temp = scope[ctrlAs].$$dataSelected;
  2114 + var rycids = value.split(",");
  2115 + var i = 0;
  2116 + if (data_temp && data_temp.length == 0) { // 初始创建
  2117 + console.log("rycidrangevalue变换了");
  2118 + for (i = 0; i < rycids.length; i++) {
  2119 + scope[ctrlAs].$$dataSelected.push({
  2120 + id: rycids[i],
  2121 + isstart: false
  2122 + });
  2123 + }
  2124 + } else {
  2125 + for (i = 0; i < rycids.length; i++) {
  2126 + data_temp[i].id = rycids[i];
  2127 + }
  2128 + }
  2129 + scope[ctrlAs].$$data_rycid_first_init = true;
  2130 + }
  2131 + });
  2132 +
  2133 + // 监控起始人员的变化
  2134 + attr.$observe("rystartvalue", function(value) {
  2135 + if (value && value != "") {
  2136 + scope[ctrlAs].$$dataSelectedStart = value - 1;
  2137 + scope[ctrlAs].$$data_rystart_first_init = true;
  2138 + }
  2139 + });
  2140 +
  2141 +
  2142 +
  2143 + }
  2144 + }
  2145 +
  2146 + }
  2147 + }
  2148 + }
  2149 +]);
1398 2150
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/edit.html
@@ -107,59 +107,53 @@ @@ -107,59 +107,53 @@
107 107
108 <div class="form-group has-success has-feedback"> 108 <div class="form-group has-success has-feedback">
109 <label class="col-md-2 control-label">路牌范围*:</label> 109 <label class="col-md-2 control-label">路牌范围*:</label>
110 - <div class="col-md-4">  
111 - <input type="text" class="form-control" name="lpNames" ng-model="ctrl.scheduleRuleManageForSave.lpNames" required  
112 - placeholder="由路牌名称组成,逗号分隔"/>  
113 - </div>  
114 - <!-- 隐藏块,显示验证信息 -->  
115 - <div class="alert alert-danger well-sm" ng-show="myForm.lpNames.$error.required">  
116 - 路牌范围必须填写  
117 - </div>  
118 - </div>  
119 -  
120 - <div class="form-group has-success has-feedback">  
121 - <label class="col-md-2 control-label">起始路牌*:</label>  
122 - <div class="col-md-4">  
123 - <input type="text" class="form-control" name="lpStart" ng-model="ctrl.scheduleRuleManageForSave.lpStart" required  
124 - placeholder="起始路牌索引,从1开始"/>  
125 - </div>  
126 - <!-- 隐藏块,显示验证信息 -->  
127 - <div class="alert alert-danger well-sm" ng-show="myForm.lpStart.$error.required">  
128 - 起始路牌必须填写 110 + <div class="col-md-6">
  111 + <sa-Guideboardgroup model="ctrl.scheduleRuleManageForSave"
  112 + name="lprange"
  113 + xlidvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}"
  114 + lprangevalue="{{ctrl.scheduleRuleManageForSave.lpNames}}"
  115 + lprangename="lpNames"
  116 + lpidrangevalue="{{ctrl.scheduleRuleManageForSave.lpIds}}"
  117 + lpidrangename="lpIds"
  118 + lpstartvalue="{{ctrl.scheduleRuleManageForSave.lpStart}}"
  119 + lpstartname="lpStart"
  120 + required
  121 + >
  122 + </sa-Guideboardgroup>
  123 + </div>
  124 + <div class="alert alert-danger well-sm" ng-show="myForm.lprange.$error.required">
  125 + 路牌范围,起始路牌必须选择
129 </div> 126 </div>
130 </div> 127 </div>
131 128
132 <div class="form-group has-success has-feedback"> 129 <div class="form-group has-success has-feedback">
133 <label class="col-md-2 control-label">人员范围*:</label> 130 <label class="col-md-2 control-label">人员范围*:</label>
134 - <div class="col-md-4">  
135 - <input type="text" class="form-control" name="ryDbbms" ng-model="ctrl.scheduleRuleManageForSave.ryDbbms" required  
136 - placeholder="由人员配置的搭班编码组成,逗号分隔"/>  
137 - </div>  
138 - <!-- 隐藏块,显示验证信息 -->  
139 - <div class="alert alert-danger well-sm" ng-show="myForm.ryDbbms.$error.required">  
140 - 人员范围必须填写 131 + <div class="col-md-6">
  132 + <sa-Employeegroup model="ctrl.scheduleRuleManageForSave"
  133 + name="ryrange"
  134 + xlidvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}"
  135 + dbbmrangevalue="{{ctrl.scheduleRuleManageForSave.ryDbbms}}"
  136 + dbbmrangename="ryDbbms"
  137 + rycidrangevalue="{{ctrl.scheduleRuleManageForSave.ryConfigIds}}"
  138 + rycidrangename="ryConfigIds"
  139 + rystartvalue="{{ctrl.scheduleRuleManageForSave.ryStart}}"
  140 + rystartname="ryStart"
  141 + required
  142 + >
  143 + </sa-Employeegroup>
  144 + </div>
  145 + <div class="alert alert-danger well-sm" ng-show="myForm.ryrange.$error.required">
  146 + 人员范围,起始人员必须选择
141 </div> 147 </div>
142 </div> 148 </div>
143 149
144 - <div class="form-group has-success has-feedback">  
145 - <label class="col-md-2 control-label">起始人员*:</label>  
146 - <div class="col-md-4">  
147 - <input type="text" class="form-control" name="ryStart" ng-model="ctrl.scheduleRuleManageForSave.ryStart" required  
148 - placeholder="起始人员索引,从1开始"/>  
149 - </div>  
150 - <!-- 隐藏块,显示验证信息 -->  
151 - <div class="alert alert-danger well-sm" ng-show="myForm.ryStart.$error.required">  
152 - 起始路牌必须填写  
153 - </div>  
154 - </div>  
155 -  
156 - <div class="form-group">  
157 - <label class="col-md-2 control-label">翻班格式:</label>  
158 - <div class="col-md-4">  
159 - <input type="text" class="form-control" name="fbgs" ng-model="ctrl.scheduleRuleManageForSave.fbgs"  
160 - placeholder="车辆翻班格式"/>  
161 - </div>  
162 - </div> 150 + <!--<div class="form-group">-->
  151 + <!--<label class="col-md-2 control-label">翻班格式:</label>-->
  152 + <!--<div class="col-md-4">-->
  153 + <!--<input type="text" class="form-control" name="fbgs" ng-model="ctrl.scheduleRuleManageForSave.fbgs"-->
  154 + <!--placeholder="车辆翻班格式"/>-->
  155 + <!--</div>-->
  156 + <!--</div>-->
163 157
164 158
165 <!-- 其他form-group --> 159 <!-- 其他form-group -->
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/form.html
@@ -107,59 +107,53 @@ @@ -107,59 +107,53 @@
107 107
108 <div class="form-group has-success has-feedback"> 108 <div class="form-group has-success has-feedback">
109 <label class="col-md-2 control-label">路牌范围*:</label> 109 <label class="col-md-2 control-label">路牌范围*:</label>
110 - <div class="col-md-4">  
111 - <input type="text" class="form-control" name="lpNames" ng-model="ctrl.scheduleRuleManageForSave.lpNames" required  
112 - placeholder="由路牌名称组成,逗号分隔"/>  
113 - </div>  
114 - <!-- 隐藏块,显示验证信息 -->  
115 - <div class="alert alert-danger well-sm" ng-show="myForm.lpNames.$error.required">  
116 - 路牌范围必须填写  
117 - </div>  
118 - </div>  
119 -  
120 - <div class="form-group has-success has-feedback">  
121 - <label class="col-md-2 control-label">起始路牌*:</label>  
122 - <div class="col-md-4">  
123 - <input type="text" class="form-control" name="lpStart" ng-model="ctrl.scheduleRuleManageForSave.lpStart" required  
124 - placeholder="起始路牌索引,从1开始"/>  
125 - </div>  
126 - <!-- 隐藏块,显示验证信息 -->  
127 - <div class="alert alert-danger well-sm" ng-show="myForm.lpStart.$error.required">  
128 - 起始路牌必须填写 110 + <div class="col-md-6">
  111 + <sa-Guideboardgroup model="ctrl.scheduleRuleManageForSave"
  112 + name="lprange"
  113 + xlidvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}"
  114 + lprangevalue="{{ctrl.scheduleRuleManageForSave.lpNames}}"
  115 + lprangename="lpNames"
  116 + lpidrangevalue="{{ctrl.scheduleRuleManageForSave.lpIds}}"
  117 + lpidrangename="lpIds"
  118 + lpstartvalue="{{ctrl.scheduleRuleManageForSave.lpStart}}"
  119 + lpstartname="lpStart"
  120 + required
  121 + >
  122 + </sa-Guideboardgroup>
  123 + </div>
  124 + <div class="alert alert-danger well-sm" ng-show="myForm.lprange.$error.required">
  125 + 路牌范围,起始路牌必须选择
129 </div> 126 </div>
130 </div> 127 </div>
131 128
132 <div class="form-group has-success has-feedback"> 129 <div class="form-group has-success has-feedback">
133 <label class="col-md-2 control-label">人员范围*:</label> 130 <label class="col-md-2 control-label">人员范围*:</label>
134 - <div class="col-md-4">  
135 - <input type="text" class="form-control" name="ryDbbms" ng-model="ctrl.scheduleRuleManageForSave.ryDbbms" required  
136 - placeholder="由人员配置的搭班编码组成,逗号分隔"/>  
137 - </div>  
138 - <!-- 隐藏块,显示验证信息 -->  
139 - <div class="alert alert-danger well-sm" ng-show="myForm.ryDbbms.$error.required">  
140 - 人员范围必须填写 131 + <div class="col-md-6">
  132 + <sa-Employeegroup model="ctrl.scheduleRuleManageForSave"
  133 + name="ryrange"
  134 + xlidvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}"
  135 + dbbmrangevalue="{{ctrl.scheduleRuleManageForSave.ryDbbms}}"
  136 + dbbmrangename="ryDbbms"
  137 + rycidrangevalue="{{ctrl.scheduleRuleManageForSave.ryConfigIds}}"
  138 + rycidrangename="ryConfigIds"
  139 + rystartvalue="{{ctrl.scheduleRuleManageForSave.ryStart}}"
  140 + rystartname="ryStart"
  141 + required
  142 + >
  143 + </sa-Employeegroup>
  144 + </div>
  145 + <div class="alert alert-danger well-sm" ng-show="myForm.ryrange.$error.required">
  146 + 人员范围,起始人员必须选择
141 </div> 147 </div>
142 </div> 148 </div>
143 149
144 - <div class="form-group has-success has-feedback">  
145 - <label class="col-md-2 control-label">起始人员*:</label>  
146 - <div class="col-md-4">  
147 - <input type="text" class="form-control" name="ryStart" ng-model="ctrl.scheduleRuleManageForSave.ryStart" required  
148 - placeholder="起始人员索引,从1开始"/>  
149 - </div>  
150 - <!-- 隐藏块,显示验证信息 -->  
151 - <div class="alert alert-danger well-sm" ng-show="myForm.ryStart.$error.required">  
152 - 起始路牌必须填写  
153 - </div>  
154 - </div>  
155 -  
156 - <div class="form-group">  
157 - <label class="col-md-2 control-label">翻班格式:</label>  
158 - <div class="col-md-4">  
159 - <input type="text" class="form-control" name="fbgs" ng-model="ctrl.scheduleRuleManageForSave.fbgs"  
160 - placeholder="车辆翻班格式"/>  
161 - </div>  
162 - </div> 150 + <!--<div class="form-group">-->
  151 + <!--<label class="col-md-2 control-label">翻班格式:</label>-->
  152 + <!--<div class="col-md-4">-->
  153 + <!--<input type="text" class="form-control" name="fbgs" ng-model="ctrl.scheduleRuleManageForSave.fbgs"-->
  154 + <!--placeholder="车辆翻班格式"/>-->
  155 + <!--</div>-->
  156 + <!--</div>-->
163 157
164 158
165 <!-- 其他form-group --> 159 <!-- 其他form-group -->