Commit 94aff319b7268f68e69763953c7272d37bdd4e4c

Authored by 徐烜
1 parent 5942a230

PSM-4

src/main/resources/datatools/config-dev.properties
... ... @@ -10,7 +10,7 @@ datatools.kvars_dbuname=root
10 10 #数据库密码
11 11 datatools.kvars_dbpwd=
12 12 #数据库库名
13   -datatools.kvars_dbdname=control
  13 +datatools.kvars_dbdname=mh_control
14 14  
15 15 # 3、上传数据配置信息
16 16 # 上传文件目录配置(根据不同的环境需要修正)
... ...
src/main/resources/static/pages/scheduleApp/module/common/dt/MyGuideboardGroupWrapTemplate.html
... ... @@ -3,7 +3,7 @@
3 3  
4 4 <style>
5 5 .guideboard-select {
6   - height: 180px;
  6 + min-height: 180px;
7 7 border: 1px solid #ddd;
8 8 }
9 9 .guideboard-select .guideboard-input {
... ... @@ -12,19 +12,19 @@
12 12 }
13 13 .guideboard-select .guideboard-select-cont {
14 14 text-align: left;
15   - height: 100px;
  15 + min-height: 60px;
16 16 padding-right: 0px;
17 17 }
18 18 .guideboard-select .guideboard-select-body {
19 19 margin-top: 10px;
20 20 overflow: auto;
21 21 width: auto;
22   - height: 100px;
  22 + min-height: 5px;
23 23 }
24 24 .guideboard-select .guideboard {
25 25 display: inline-block;
26 26 padding: 8px;
27   - min-width: 85px;
  27 + min-width: 50px;
28 28 text-align: center;
29 29 border: 1px solid #C1C1C1;
30 30 color: #666;
... ... @@ -36,6 +36,11 @@
36 36 background: #4095E8;
37 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 45 </style>
41 46  
... ... @@ -47,17 +52,25 @@
47 52 </div>
48 53 <div class="col-md-12 guideboard-select-cont">
49 54 <div class="guideboard-select-body">
50   - <div class="guideboard active">
51   - 1
52   - </div>
53   - <div class="guideboard active">
54   - 2
  55 + <div class="guideboard active"
  56 + ng-repeat="$d in $saGuideboardgroupCtrl.$$data track by $index"
  57 + ng-click="$saGuideboardgroupCtrl.$$internal_lplist_click($index)">
  58 + {{$d.lpname}}
55 59 </div>
56   - <div class="guideboard active">
57   - 3
58   - </div>
59   - <div class="guideboard active">
60   - 4
  60 + </div>
  61 + </div>
  62 + <div class="col-md-12 guideboard-input">
  63 + <div class="col-md-9">
  64 + 某某线路的已经选中的路牌列表
  65 + </div>
  66 + </div>
  67 + <div class="col-md-12 guideboard-select-cont">
  68 + <div class="guideboard-select-body">
  69 + <div ng-class="{guideboard: true, active: true, start: $d.isstart}"
  70 + ng-repeat="$d in $saGuideboardgroupCtrl.$$data_selected track by $index"
  71 + ng-click="$saGuideboardgroupCtrl.$$internal_sellplist_click($index)"
  72 + ng-dblclick="$saGuideboardgroupCtrl.$$internal_sellplist_dbclick($index)">
  73 + {{$d.lpname}}
61 74 </div>
62 75 </div>
63 76 </div>
... ...
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
... ... @@ -1372,7 +1372,305 @@ 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.$$data_selected = []; // 选中的路牌列表
  1415 + self.$$data_selected_start = undefined; // 起始路牌
  1416 +
  1417 + // saGuideboardgroup组件的ng-model,用于外部绑定等操作
  1418 + self.$$internalmodel = undefined;
  1419 +
  1420 +
  1421 + },
  1422 +
  1423 + /**
  1424 + * 此阶段可以改dom结构,此时angular还没扫描指令,
  1425 + * 这里就可以动态添加其他angularjs的指令字符串,如required指令字符串。
  1426 + * @param tElem
  1427 + * @param tAttrs
  1428 + * @returns {{pre: Function, post: Function}}
  1429 + */
  1430 + compile: function(tElem, tAttrs) {
  1431 + // TODO:获取所有的属性
  1432 + var $name_attr = tAttrs["name"]; // 控件的名字
  1433 + var $required_attr = tAttrs["required"]; // 是否需要required验证
  1434 + var $lprangename_attr = tAttrs["lprangename"]; // 绑定的model路牌名字范围字段名
  1435 + var $lpidrangename_attr = tAttrs["lpidrangename"]; // 绑定的model路牌id范围字段名
  1436 + var $lpstartname_attr = tAttrs["lpstartname"]; // 绑定的model起始路牌字段名
  1437 +
  1438 + // controlAs名字
  1439 + var ctrlAs = '$saGuideboardgroupCtrl';
1375 1440  
  1441 + // 如果有required属性,添加angularjs required验证
  1442 + if ($required_attr != undefined) {
  1443 + //console.log(tElem.html());
  1444 + tElem.find("div").attr("required", "");
  1445 + }
  1446 +
  1447 + return {
  1448 + pre: function(scope, element, attr) {
  1449 + // TODO:
  1450 + },
  1451 +
  1452 + /**
  1453 + * 相当于link函数。
  1454 + * @param scope
  1455 + * @param element
  1456 + * @param attr
  1457 + */
  1458 + post: function(scope, element, attr) {
  1459 + // name属性
  1460 + if ($name_attr) {
  1461 + scope[ctrlAs]["$name_attr"] = $name_attr;
  1462 + }
  1463 +
  1464 + // TODO:
  1465 +
  1466 +
  1467 + /**
  1468 + * 路牌列表点击(路牌列表中选中路牌)
  1469 + * @param $index
  1470 + */
  1471 + scope[ctrlAs].$$internal_lplist_click = function($index) {
  1472 + var data_temp = scope[ctrlAs].$$data;
  1473 + if (data_temp && data_temp.length > $index) {
  1474 + scope[ctrlAs].$$data_selected.push({
  1475 + lpid: data_temp[$index].lpid,
  1476 + lpname: data_temp[$index].lpname,
  1477 + isstart: data_temp[$index].isstart
  1478 + });
  1479 + }
  1480 + };
  1481 + /**
  1482 + * 选中的路牌单击(初始路牌选择)
  1483 + * @param $index
  1484 + */
  1485 + scope[ctrlAs].$$internal_sellplist_click = function($index) {
  1486 + var data_temp = scope[ctrlAs].$$data_selected;
  1487 + if (data_temp && data_temp.length > $index) {
  1488 + for (var i = 0; i < data_temp.length; i++) {
  1489 + data_temp[i].isstart = false;
  1490 + }
  1491 + data_temp[$index].isstart = true;
  1492 + scope[ctrlAs].$$data_selected_start = $index;
  1493 + }
  1494 + };
  1495 + /**
  1496 + * 选中的路牌双击(删除选中的路牌)
  1497 + * @param $index
  1498 + */
  1499 + scope[ctrlAs].$$internal_sellplist_dbclick = function($index) {
  1500 + var data_temp = scope[ctrlAs].$$data_selected;
  1501 + if (data_temp && data_temp.length > $index) {
  1502 + if (scope[ctrlAs].$$data_selected_start == $index) {
  1503 + scope[ctrlAs].$$data_selected_start = undefined;
  1504 + }
  1505 + data_temp.splice($index, 1);
  1506 + }
  1507 + };
  1508 +
  1509 + /**
  1510 + * 验证内部数据,更新外部model
  1511 + */
  1512 + scope[ctrlAs].$$internal_validate_model = function() {
  1513 + var data_temp = scope[ctrlAs].$$data_selected;
  1514 + var data_temp2 = scope[ctrlAs].$$data_selected_start;
  1515 + var lpNames = [];
  1516 + var lpIds = [];
  1517 + var lpStart = 0;
  1518 + var i = 0;
  1519 + if (data_temp &&
  1520 + data_temp.length > 0 &&
  1521 + data_temp2 != undefined) {
  1522 +
  1523 + for (i = 0; i < data_temp.length; i++) {
  1524 + lpNames.push(data_temp[i].lpname);
  1525 + lpIds.push(data_temp[i].lpid)
  1526 + }
  1527 + data_temp[data_temp2].isstart = true;
  1528 + lpStart = data_temp2 + 1;
  1529 +
  1530 + // 更新内部model,用于外部验证
  1531 + // 内部model的值暂时随意,以后再改
  1532 + scope[ctrlAs].$$internalmodel = {desc: "ok"};
  1533 +
  1534 + // 更新外部model字段
  1535 + if ($lprangename_attr) {
  1536 + console.log("lprangename=" + lpNames.join(','));
  1537 + eval("scope[ctrlAs].model" + "." + $lprangename_attr + " = lpNames.join(',');");
  1538 + }
  1539 + if ($lpidrangename_attr) {
  1540 + console.log("lpidrangename=" + lpIds.join(','));
  1541 + eval("scope[ctrlAs].model" + "." + $lpidrangename_attr + " = lpIds.join(',');");
  1542 + }
  1543 + if ($lpstartname_attr) {
  1544 + console.log("lpstartname=" + lpStart);
  1545 + eval("scope[ctrlAs].model" + "." + $lpstartname_attr + " = lpStart;");
  1546 + }
  1547 +
  1548 + } else {
  1549 + scope[ctrlAs].$$internalmodel = undefined;
  1550 + }
  1551 +
  1552 +
  1553 + };
  1554 +
  1555 + // 监控内部数据,$$data_selected 变化
  1556 + scope.$watch(
  1557 + function() {
  1558 + return scope[ctrlAs].$$data_selected;
  1559 + },
  1560 + 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 + }
  1566 + },
  1567 + true
  1568 + );
  1569 +
  1570 + // 监控内部数据,$$data_selected_start 变化
  1571 + scope.$watch(
  1572 + function() {
  1573 + return scope[ctrlAs].$$data_selected_start;
  1574 + },
  1575 + 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 + }
  1581 + },
  1582 + true
  1583 + );
  1584 +
  1585 + // 监控线路id的变化
  1586 + attr.$observe("xlidvalue", function(value) {
  1587 + if (value && value != "") {
  1588 + console.log("xlidvalue=" + value);
  1589 +
  1590 + guideboardManageService_g.rest.list(
  1591 + {"xl.id_eq": value, size: 100},
  1592 + function(result) {
  1593 + // 获取值了
  1594 + console.log("路牌获取了");
  1595 +
  1596 + scope[ctrlAs].$$data = [];
  1597 + for (var i = 0; i < result.content.length; i++) {
  1598 + scope[ctrlAs].$$data.push({
  1599 + lpid: result.content[i].id,
  1600 + lpname: result.content[i].lpName,
  1601 + isstart: false
  1602 + });
  1603 + }
  1604 + scope[ctrlAs].$$data_selected = [];
  1605 + },
  1606 + function(result) {
  1607 +
  1608 + }
  1609 + );
  1610 +
  1611 + }
  1612 + });
  1613 +
  1614 + // 监控路牌名称范围值的变化
  1615 + attr.$observe("lprangevalue", function(value) {
  1616 + if (value && value != "") {
  1617 + console.log("lprangevalue=" + value);
  1618 + var data_temp = scope[ctrlAs].$$data_selected;
  1619 + var lpnames = value.split(",");
  1620 + var i = 0;
  1621 + if (data_temp && data_temp.length == 0) { // 初始创建
  1622 + for (i = 0; i < lpnames.length; i++) {
  1623 + data_temp.push({
  1624 + lpname: lpnames[i],
  1625 + isstart: false
  1626 + });
  1627 + }
  1628 + } else {
  1629 + for (i = 0; i < lpnames.length; i++) {
  1630 + data_temp[i].lpname = lpnames[i];
  1631 + }
  1632 + }
  1633 + }
  1634 + });
  1635 +
  1636 + // 监控路牌id范围值的变化
  1637 + attr.$observe("lpidrangevalue", function(value) {
  1638 + if (value && value != "") {
  1639 + console.log("lpidrangevalue=" + value);
  1640 + var data_temp = scope[ctrlAs].$$data_selected;
  1641 + var lpids = value.split(",");
  1642 + var i = 0;
  1643 + if (data_temp && data_temp.length == 0) { // 初始创建
  1644 + for (i = 0; i < lpids.length; i++) {
  1645 + data_temp.push({
  1646 + lpid: lpids[i],
  1647 + isstart: false
  1648 + });
  1649 + }
  1650 + } else {
  1651 + for (i = 0; i < lpids.length; i++) {
  1652 + data_temp[i].lpid = lpids[i];
  1653 + }
  1654 + }
  1655 + }
  1656 + });
  1657 +
  1658 + // 监控起始路牌的变化
  1659 + attr.$observe("lpstartvalue", function(value) {
  1660 + if (value && value != "") {
  1661 + scope[ctrlAs].$$data_selected_start = value - 1;
  1662 + }
  1663 + })
  1664 +
  1665 +
  1666 +
  1667 + }
  1668 + }
  1669 +
  1670 + }
  1671 + }
  1672 + }
  1673 +]);
1376 1674  
1377 1675  
1378 1676  
... ...
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/form.html
... ... @@ -105,61 +105,79 @@
105 105 </div>
106 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   - <!-- 隐藏块,显示验证信息 -->
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   - 起始路牌必须填写
129   - </div>
130   - </div>
  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 131  
132 132 <div class="form-group has-success has-feedback">
133   - <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   - 人员范围必须填写
141   - </div>
142   - </div>
143   -
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   - 起始路牌必须填写
  133 + <label class="col-md-2 control-label">路牌范围*:</label>
  134 + <div class="col-md-6">
  135 + <sa-Guideboardgroup model="ctrl.scheduleRuleManageForSave"
  136 + name="lprange"
  137 + xlidvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}"
  138 + lprangevalue="{{ctrl.scheduleRuleManageForSave.lpNames}}"
  139 + lprangename="lpNames"
  140 + lpidrangevalue="{{ctrl.scheduleRuleManageForSave.lpIds}}"
  141 + lpidrangename="lpIds"
  142 + lpstartvalue="{{ctrl.scheduleRuleManageForSave.lpStart}}"
  143 + lpstartname="lpStart"
  144 + required
  145 + >
  146 + </sa-Guideboardgroup>
153 147 </div>
154 148 </div>
155 149  
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 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>-->
  173 +
  174 + <!--<div class="form-group">-->
  175 + <!--<label class="col-md-2 control-label">翻班格式:</label>-->
  176 + <!--<div class="col-md-4">-->
  177 + <!--<input type="text" class="form-control" name="fbgs" ng-model="ctrl.scheduleRuleManageForSave.fbgs"-->
  178 + <!--placeholder="车辆翻班格式"/>-->
  179 + <!--</div>-->
  180 + <!--</div>-->
163 181  
164 182  
165 183 <!-- 其他form-group -->
... ...