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,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/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,6 +36,11 @@ @@ -36,6 +36,11 @@
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
@@ -47,17 +52,25 @@ @@ -47,17 +52,25 @@
47 </div> 52 </div>
48 <div class="col-md-12 guideboard-select-cont"> 53 <div class="col-md-12 guideboard-select-cont">
49 <div class="guideboard-select-body"> 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 </div> 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 </div> 74 </div>
62 </div> 75 </div>
63 </div> 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,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,61 +105,79 @@
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 - <!-- 隐藏块,显示验证信息 -->  
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 <div class="form-group has-success has-feedback"> 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 </div> 147 </div>
154 </div> 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 <!-- 其他form-group --> 183 <!-- 其他form-group -->