Commit 1d01aca674a3b8d5feb959a0d03698f6e4b9c68e

Authored by 徐烜
1 parent 94aff319

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/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
@@ -47,7 +47,8 @@ @@ -47,7 +47,8 @@
47 <div class="col-md-12 guideboard-select"> 47 <div class="col-md-12 guideboard-select">
48 <div class="col-md-12 guideboard-input"> 48 <div class="col-md-12 guideboard-input">
49 <div class="col-md-9"> 49 <div class="col-md-9">
50 - 某某线路的路牌列表 50 + 路牌列表
  51 + <span ng-bind="$saGuideboardgroupCtrl.$$dataDesc"></span>
51 </div> 52 </div>
52 </div> 53 </div>
53 <div class="col-md-12 guideboard-select-cont"> 54 <div class="col-md-12 guideboard-select-cont">
@@ -61,13 +62,14 @@ @@ -61,13 +62,14 @@
61 </div> 62 </div>
62 <div class="col-md-12 guideboard-input"> 63 <div class="col-md-12 guideboard-input">
63 <div class="col-md-9"> 64 <div class="col-md-9">
64 - 某某线路的已经选中的路牌列表 65 + 已经选中的路牌列表
  66 + <span ng-bind="$saGuideboardgroupCtrl.$$dataSelectDesc"></span>
65 </div> 67 </div>
66 </div> 68 </div>
67 <div class="col-md-12 guideboard-select-cont"> 69 <div class="col-md-12 guideboard-select-cont">
68 <div class="guideboard-select-body"> 70 <div class="guideboard-select-body">
69 <div ng-class="{guideboard: true, active: true, start: $d.isstart}" 71 <div ng-class="{guideboard: true, active: true, start: $d.isstart}"
70 - ng-repeat="$d in $saGuideboardgroupCtrl.$$data_selected track by $index" 72 + ng-repeat="$d in $saGuideboardgroupCtrl.$$dataSelected track by $index"
71 ng-click="$saGuideboardgroupCtrl.$$internal_sellplist_click($index)" 73 ng-click="$saGuideboardgroupCtrl.$$internal_sellplist_click($index)"
72 ng-dblclick="$saGuideboardgroupCtrl.$$internal_sellplist_dbclick($index)"> 74 ng-dblclick="$saGuideboardgroupCtrl.$$internal_sellplist_dbclick($index)">
73 {{$d.lpname}} 75 {{$d.lpname}}
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
@@ -1411,12 +1411,26 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1411,12 +1411,26 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1411 //]; 1411 //];
1412 1412
1413 1413
1414 - self.$$data_selected = []; // 选中的路牌列表  
1415 - self.$$data_selected_start = undefined; // 起始路牌 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 + //];
1416 1422
1417 // saGuideboardgroup组件的ng-model,用于外部绑定等操作 1423 // saGuideboardgroup组件的ng-model,用于外部绑定等操作
1418 self.$$internalmodel = undefined; 1424 self.$$internalmodel = undefined;
1419 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 = ""; // 选中路牌描述
1420 1434
1421 }, 1435 },
1422 1436
@@ -1471,11 +1485,17 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1471,11 +1485,17 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1471 scope[ctrlAs].$$internal_lplist_click = function($index) { 1485 scope[ctrlAs].$$internal_lplist_click = function($index) {
1472 var data_temp = scope[ctrlAs].$$data; 1486 var data_temp = scope[ctrlAs].$$data;
1473 if (data_temp && data_temp.length > $index) { 1487 if (data_temp && data_temp.length > $index) {
1474 - scope[ctrlAs].$$data_selected.push({ 1488 + scope[ctrlAs].$$dataSelected.push({
1475 lpid: data_temp[$index].lpid, 1489 lpid: data_temp[$index].lpid,
1476 lpname: data_temp[$index].lpname, 1490 lpname: data_temp[$index].lpname,
1477 isstart: data_temp[$index].isstart 1491 isstart: data_temp[$index].isstart
1478 }); 1492 });
  1493 +
  1494 + // 如果没有指定过初始路牌,默认选择此路牌作为起始路牌
  1495 + if (scope[ctrlAs].$$dataSelectedStart == undefined) {
  1496 + scope[ctrlAs].$$internal_sellplist_click(
  1497 + scope[ctrlAs].$$dataSelected.length - 1);
  1498 + }
1479 } 1499 }
1480 }; 1500 };
1481 /** 1501 /**
@@ -1483,13 +1503,13 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1483,13 +1503,13 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1483 * @param $index 1503 * @param $index
1484 */ 1504 */
1485 scope[ctrlAs].$$internal_sellplist_click = function($index) { 1505 scope[ctrlAs].$$internal_sellplist_click = function($index) {
1486 - var data_temp = scope[ctrlAs].$$data_selected; 1506 + var data_temp = scope[ctrlAs].$$dataSelected;
1487 if (data_temp && data_temp.length > $index) { 1507 if (data_temp && data_temp.length > $index) {
1488 for (var i = 0; i < data_temp.length; i++) { 1508 for (var i = 0; i < data_temp.length; i++) {
1489 data_temp[i].isstart = false; 1509 data_temp[i].isstart = false;
1490 } 1510 }
1491 data_temp[$index].isstart = true; 1511 data_temp[$index].isstart = true;
1492 - scope[ctrlAs].$$data_selected_start = $index; 1512 + scope[ctrlAs].$$dataSelectedStart = $index;
1493 } 1513 }
1494 }; 1514 };
1495 /** 1515 /**
@@ -1497,25 +1517,27 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1497,25 +1517,27 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1497 * @param $index 1517 * @param $index
1498 */ 1518 */
1499 scope[ctrlAs].$$internal_sellplist_dbclick = function($index) { 1519 scope[ctrlAs].$$internal_sellplist_dbclick = function($index) {
1500 - var data_temp = scope[ctrlAs].$$data_selected; 1520 + var data_temp = scope[ctrlAs].$$dataSelected;
1501 if (data_temp && data_temp.length > $index) { 1521 if (data_temp && data_temp.length > $index) {
1502 - if (scope[ctrlAs].$$data_selected_start == $index) {  
1503 - scope[ctrlAs].$$data_selected_start = undefined; 1522 + if (scope[ctrlAs].$$dataSelectedStart == $index) {
  1523 + scope[ctrlAs].$$dataSelectedStart = undefined;
1504 } 1524 }
1505 data_temp.splice($index, 1); 1525 data_temp.splice($index, 1);
1506 } 1526 }
1507 }; 1527 };
1508 1528
  1529 +
1509 /** 1530 /**
1510 * 验证内部数据,更新外部model 1531 * 验证内部数据,更新外部model
1511 */ 1532 */
1512 scope[ctrlAs].$$internal_validate_model = function() { 1533 scope[ctrlAs].$$internal_validate_model = function() {
1513 - var data_temp = scope[ctrlAs].$$data_selected;  
1514 - var data_temp2 = scope[ctrlAs].$$data_selected_start; 1534 + var data_temp = scope[ctrlAs].$$dataSelected;
  1535 + var data_temp2 = scope[ctrlAs].$$dataSelectedStart;
1515 var lpNames = []; 1536 var lpNames = [];
1516 var lpIds = []; 1537 var lpIds = [];
1517 var lpStart = 0; 1538 var lpStart = 0;
1518 var i = 0; 1539 var i = 0;
  1540 +
1519 if (data_temp && 1541 if (data_temp &&
1520 data_temp.length > 0 && 1542 data_temp.length > 0 &&
1521 data_temp2 != undefined) { 1543 data_temp2 != undefined) {
@@ -1545,6 +1567,9 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1545,6 +1567,9 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1545 eval("scope[ctrlAs].model" + "." + $lpstartname_attr + " = lpStart;"); 1567 eval("scope[ctrlAs].model" + "." + $lpstartname_attr + " = lpStart;");
1546 } 1568 }
1547 1569
  1570 + scope[ctrlAs].$$dataSelectDesc =
  1571 + ",共" + data_temp.length + "个," + "初始路牌,第" + lpStart + "个";
  1572 +
1548 } else { 1573 } else {
1549 scope[ctrlAs].$$internalmodel = undefined; 1574 scope[ctrlAs].$$internalmodel = undefined;
1550 } 1575 }
@@ -1555,14 +1580,10 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1555,14 +1580,10 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1555 // 监控内部数据,$$data_selected 变化 1580 // 监控内部数据,$$data_selected 变化
1556 scope.$watch( 1581 scope.$watch(
1557 function() { 1582 function() {
1558 - return scope[ctrlAs].$$data_selected; 1583 + return scope[ctrlAs].$$dataSelected;
1559 }, 1584 },
1560 function(newValue, oldValue) { 1585 function(newValue, oldValue) {
1561 - var data_temp = scope[ctrlAs].$$data_selected;  
1562 - if (data_temp && data_temp.length > 0) {  
1563 - console.log("$$data_selected变化");  
1564 - scope[ctrlAs].$$internal_validate_model();  
1565 - } 1586 + scope[ctrlAs].$$internal_validate_model();
1566 }, 1587 },
1567 true 1588 true
1568 ); 1589 );
@@ -1570,18 +1591,66 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1570,18 +1591,66 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1570 // 监控内部数据,$$data_selected_start 变化 1591 // 监控内部数据,$$data_selected_start 变化
1571 scope.$watch( 1592 scope.$watch(
1572 function() { 1593 function() {
1573 - return scope[ctrlAs].$$data_selected_start; 1594 + return scope[ctrlAs].$$dataSelectedStart;
1574 }, 1595 },
1575 function(newValue, oldValue) { 1596 function(newValue, oldValue) {
1576 - var data_temp = scope[ctrlAs].$$data_selected_start;  
1577 - if (data_temp != undefined) {  
1578 - console.log("$$data_selected_start变化");  
1579 - scope[ctrlAs].$$internal_validate_model();  
1580 - } 1597 + scope[ctrlAs].$$internal_validate_model();
1581 }, 1598 },
1582 true 1599 true
1583 ); 1600 );
1584 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 +
1585 // 监控线路id的变化 1654 // 监控线路id的变化
1586 attr.$observe("xlidvalue", function(value) { 1655 attr.$observe("xlidvalue", function(value) {
1587 if (value && value != "") { 1656 if (value && value != "") {
@@ -1601,7 +1670,16 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1601,7 +1670,16 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1601 isstart: false 1670 isstart: false
1602 }); 1671 });
1603 } 1672 }
1604 - scope[ctrlAs].$$data_selected = []; 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 + "个";
1605 }, 1683 },
1606 function(result) { 1684 function(result) {
1607 1685
@@ -1614,13 +1692,13 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1614,13 +1692,13 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1614 // 监控路牌名称范围值的变化 1692 // 监控路牌名称范围值的变化
1615 attr.$observe("lprangevalue", function(value) { 1693 attr.$observe("lprangevalue", function(value) {
1616 if (value && value != "") { 1694 if (value && value != "") {
1617 - console.log("lprangevalue=" + value);  
1618 - var data_temp = scope[ctrlAs].$$data_selected; 1695 + var data_temp = scope[ctrlAs].$$dataSelected;
1619 var lpnames = value.split(","); 1696 var lpnames = value.split(",");
1620 var i = 0; 1697 var i = 0;
1621 if (data_temp && data_temp.length == 0) { // 初始创建 1698 if (data_temp && data_temp.length == 0) { // 初始创建
  1699 + console.log("lprangevalue变换了");
1622 for (i = 0; i < lpnames.length; i++) { 1700 for (i = 0; i < lpnames.length; i++) {
1623 - data_temp.push({ 1701 + scope[ctrlAs].$$dataSelected.push({
1624 lpname: lpnames[i], 1702 lpname: lpnames[i],
1625 isstart: false 1703 isstart: false
1626 }); 1704 });
@@ -1630,6 +1708,7 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1630,6 +1708,7 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1630 data_temp[i].lpname = lpnames[i]; 1708 data_temp[i].lpname = lpnames[i];
1631 } 1709 }
1632 } 1710 }
  1711 + scope[ctrlAs].$$data_lp_first_init = true;
1633 } 1712 }
1634 }); 1713 });
1635 1714
@@ -1637,12 +1716,13 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1637,12 +1716,13 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1637 attr.$observe("lpidrangevalue", function(value) { 1716 attr.$observe("lpidrangevalue", function(value) {
1638 if (value && value != "") { 1717 if (value && value != "") {
1639 console.log("lpidrangevalue=" + value); 1718 console.log("lpidrangevalue=" + value);
1640 - var data_temp = scope[ctrlAs].$$data_selected; 1719 + var data_temp = scope[ctrlAs].$$dataSelected;
1641 var lpids = value.split(","); 1720 var lpids = value.split(",");
1642 var i = 0; 1721 var i = 0;
1643 if (data_temp && data_temp.length == 0) { // 初始创建 1722 if (data_temp && data_temp.length == 0) { // 初始创建
  1723 + console.log("lpidrangevalue");
1644 for (i = 0; i < lpids.length; i++) { 1724 for (i = 0; i < lpids.length; i++) {
1645 - data_temp.push({ 1725 + scope[ctrlAs].$$dataSelected.push({
1646 lpid: lpids[i], 1726 lpid: lpids[i],
1647 isstart: false 1727 isstart: false
1648 }); 1728 });
@@ -1652,15 +1732,17 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1652,15 +1732,17 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1652 data_temp[i].lpid = lpids[i]; 1732 data_temp[i].lpid = lpids[i];
1653 } 1733 }
1654 } 1734 }
  1735 + scope[ctrlAs].$$data_lpid_first_init = true;
1655 } 1736 }
1656 }); 1737 });
1657 1738
1658 // 监控起始路牌的变化 1739 // 监控起始路牌的变化
1659 attr.$observe("lpstartvalue", function(value) { 1740 attr.$observe("lpstartvalue", function(value) {
1660 if (value && value != "") { 1741 if (value && value != "") {
1661 - scope[ctrlAs].$$data_selected_start = value - 1; 1742 + scope[ctrlAs].$$dataSelectedStart = value - 1;
  1743 + scope[ctrlAs].$$data_lpstart_first_init = true;
1662 } 1744 }
1663 - }) 1745 + });
1664 1746
1665 1747
1666 1748
@@ -1672,25 +1754,397 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [ @@ -1672,25 +1754,397 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saGuideboardgroup&#39;, [
1672 } 1754 }
1673 ]); 1755 ]);
1674 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 = []; // 选择线路后,该线路的人员配置数据
1675 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 + //];
1676 1794
1677 1795
  1796 + self.$$dataSelected = []; // 选中的人员配置列表
  1797 + self.$$dataSelectedStart = undefined; // 起始人员配置
1678 1798
  1799 + // saGuideboardgroup组件的ng-model,用于外部绑定等操作
  1800 + self.$$internalmodel = undefined;
1679 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; // 起始人员是否初始化
1680 1807
  1808 + self.$$dataDesc = ""; // 路牌列表描述
  1809 + self.$$dataSelectDesc = ""; // 选中路牌描述
1681 1810
  1811 + },
1682 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起始人员字段名
1683 1827
  1828 + // controlAs名字
  1829 + var ctrlAs = '$saEmployeegroupCtrl';
1684 1830
  1831 + // 如果有required属性,添加angularjs required验证
  1832 + if ($required_attr != undefined) {
  1833 + //console.log(tElem.html());
  1834 + tElem.find("div").attr("required", "");
  1835 + }
1685 1836
  1837 + return {
  1838 + pre: function(scope, element, attr) {
  1839 + // TODO:
  1840 + },
1686 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 + }
1687 1853
  1854 + // TODO:
1688 1855
1689 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 + });
1690 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 + };
1691 1906
1692 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;
1693 1918
  1919 + if (data_temp &&
  1920 + data_temp.length > 0 &&
  1921 + data_temp2 != undefined) {
1694 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 + "组";
1695 1950
  1951 + } else {
  1952 + scope[ctrlAs].$$internalmodel = undefined;
  1953 + }
  1954 +
  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 +]);
1696 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
@@ -105,30 +105,6 @@ @@ -105,30 +105,6 @@
105 </div> 105 </div>
106 </div> 106 </div>
107 107
108 - <!--<div class="form-group has-success has-feedback">-->  
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 - <!--&lt;!&ndash; 隐藏块,显示验证信息 &ndash;&gt;-->  
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 - <!--&lt;!&ndash; 隐藏块,显示验证信息 &ndash;&gt;-->  
127 - <!--<div class="alert alert-danger well-sm" ng-show="myForm.lpStart.$error.required">-->  
128 - <!--起始路牌必须填写-->  
129 - <!--</div>-->  
130 - <!--</div>-->  
131 -  
132 <div class="form-group has-success has-feedback"> 108 <div class="form-group has-success has-feedback">
133 <label class="col-md-2 control-label">路牌范围*:</label> 109 <label class="col-md-2 control-label">路牌范围*:</label>
134 <div class="col-md-6"> 110 <div class="col-md-6">
@@ -145,31 +121,31 @@ @@ -145,31 +121,31 @@
145 > 121 >
146 </sa-Guideboardgroup> 122 </sa-Guideboardgroup>
147 </div> 123 </div>
  124 + <div class="alert alert-danger well-sm" ng-show="myForm.lprange.$error.required">
  125 + 路牌范围,起始路牌必须选择
  126 + </div>
148 </div> 127 </div>
149 128
150 - <!--<div class="form-group has-success has-feedback">-->  
151 - <!--<label class="col-md-2 control-label">人员范围*:</label>-->  
152 - <!--<div class="col-md-4">-->  
153 - <!--<input type="text" class="form-control" name="ryDbbms" ng-model="ctrl.scheduleRuleManageForSave.ryDbbms" required-->  
154 - <!--placeholder="由人员配置的搭班编码组成,逗号分隔"/>-->  
155 - <!--</div>-->  
156 - <!--&lt;!&ndash; 隐藏块,显示验证信息 &ndash;&gt;-->  
157 - <!--<div class="alert alert-danger well-sm" ng-show="myForm.ryDbbms.$error.required">-->  
158 - <!--人员范围必须填写-->  
159 - <!--</div>-->  
160 - <!--</div>-->  
161 -  
162 - <!--<div class="form-group has-success has-feedback">-->  
163 - <!--<label class="col-md-2 control-label">起始人员*:</label>-->  
164 - <!--<div class="col-md-4">-->  
165 - <!--<input type="text" class="form-control" name="ryStart" ng-model="ctrl.scheduleRuleManageForSave.ryStart" required-->  
166 - <!--placeholder="起始人员索引,从1开始"/>-->  
167 - <!--</div>-->  
168 - <!--&lt;!&ndash; 隐藏块,显示验证信息 &ndash;&gt;-->  
169 - <!--<div class="alert alert-danger well-sm" ng-show="myForm.ryStart.$error.required">-->  
170 - <!--起始路牌必须填写-->  
171 - <!--</div>-->  
172 - <!--</div>--> 129 + <div class="form-group has-success has-feedback">
  130 + <label class="col-md-2 control-label">人员范围*:</label>
  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 + 人员范围,起始人员必须选择
  147 + </div>
  148 + </div>
173 149
174 <!--<div class="form-group">--> 150 <!--<div class="form-group">-->
175 <!--<label class="col-md-2 control-label">翻班格式:</label>--> 151 <!--<label class="col-md-2 control-label">翻班格式:</label>-->