Commit eda9a5c463952d5665b646980cdf35ecc657ee97

Authored by 徐烜
1 parent 8dfecfae

调度值勤日报、调度计划详细修正v1

1、调度计划里的详细修改单个班次里添加线路版本
2、添加调度值勤日报修正营运状态和备注信息保存功能
   修改SchedulePlanInfo,添加新的字段,修改次数,修改原因编号,修改描述
   修改SchedulePlanInfoService,修改查询语句带备注和状态数据
   修改SchedulePlanInfoServiceImpl,修改保存功能,每次保存都修改修改次数的新字段
   修改saPlanInfoEdit2指令,添加保存营运原因和描述的逻辑
   修改saSelect5指令,修改local数据源读取和搜索的逻辑
   修改调度值勤日报的list.html显示
src/main/java/com/bsth/entity/schedule/SchedulePlanInfo.java
@@ -136,6 +136,14 @@ public class SchedulePlanInfo extends BEntity { @@ -136,6 +136,14 @@ public class SchedulePlanInfo extends BEntity {
136 /** 时刻表的明细备注 */ 136 /** 时刻表的明细备注 */
137 private String remark; 137 private String remark;
138 138
  139 + //---------------- 修改时使用的字段 -----------------//
  140 + /** 调整原因(在调度执勤日报页面中修改,选择营运状态) */
  141 + private Integer modifyReason;
  142 + /** 调整的备注(在调度执勤日报页面中修改,与时刻表的班次备注区分开) */
  143 + private String modifyRemark;
  144 + /** 调整的次数(在调度执勤日报页面,排班计划明细里,改的话都会增加) */
  145 + private Integer modifyCount;
  146 +
139 147
140 // @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) 148 // @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
141 // @JoinTable( 149 // @JoinTable(
@@ -761,4 +769,28 @@ public class SchedulePlanInfo extends BEntity { @@ -761,4 +769,28 @@ public class SchedulePlanInfo extends BEntity {
761 public void setSchedulePlan(SchedulePlan schedulePlan) { 769 public void setSchedulePlan(SchedulePlan schedulePlan) {
762 this.schedulePlan = schedulePlan; 770 this.schedulePlan = schedulePlan;
763 } 771 }
  772 +
  773 + public Integer getModifyReason() {
  774 + return modifyReason;
  775 + }
  776 +
  777 + public void setModifyReason(Integer modifyReason) {
  778 + this.modifyReason = modifyReason;
  779 + }
  780 +
  781 + public String getModifyRemark() {
  782 + return modifyRemark;
  783 + }
  784 +
  785 + public void setModifyRemark(String modifyRemark) {
  786 + this.modifyRemark = modifyRemark;
  787 + }
  788 +
  789 + public Integer getModifyCount() {
  790 + return modifyCount;
  791 + }
  792 +
  793 + public void setModifyCount(Integer modifyCount) {
  794 + this.modifyCount = modifyCount;
  795 + }
764 } 796 }
src/main/java/com/bsth/service/schedule/SchedulePlanInfoService.java
@@ -63,6 +63,8 @@ public interface SchedulePlanInfoService extends BService<SchedulePlanInfo, Long @@ -63,6 +63,8 @@ public interface SchedulePlanInfoService extends BService<SchedulePlanInfo, Long
63 /** 售票员工号s */ 63 /** 售票员工号s */
64 private List<String> spyGhs; 64 private List<String> spyGhs;
65 65
  66 + /** 创建时间 */
  67 + private Date createDate;
66 /** 修改时间 */ 68 /** 修改时间 */
67 private Date updateDate; 69 private Date updateDate;
68 /** 修改人名 */ 70 /** 修改人名 */
@@ -70,6 +72,14 @@ public interface SchedulePlanInfoService extends BService&lt;SchedulePlanInfo, Long @@ -70,6 +72,14 @@ public interface SchedulePlanInfoService extends BService&lt;SchedulePlanInfo, Long
70 /** 时刻表名字 */ 72 /** 时刻表名字 */
71 private String ttInfoName; 73 private String ttInfoName;
72 74
  75 + //------------------- 修改yuan原因,描述,次数 ------------------------//
  76 + // 修改次数
  77 + private Integer m_count;
  78 + // 修改原因
  79 + private Integer m_reason;
  80 + // 修改描述
  81 + private String m_desc;
  82 +
73 @Override 83 @Override
74 public int compareTo(SchedulePlanGroupInfo o) { 84 public int compareTo(SchedulePlanGroupInfo o) {
75 // 路牌名字排序,数字路牌名在前,非数字在后 85 // 路牌名字排序,数字路牌名在前,非数字在后
@@ -104,9 +114,13 @@ public interface SchedulePlanInfoService extends BService&lt;SchedulePlanInfo, Long @@ -104,9 +114,13 @@ public interface SchedulePlanInfoService extends BService&lt;SchedulePlanInfo, Long
104 ", GROUP_CONCAT(distinct info.j_gh order by info.fcno) as jsyGhs " + 114 ", GROUP_CONCAT(distinct info.j_gh order by info.fcno) as jsyGhs " +
105 ", GROUP_CONCAT(distinct info.s_name order by info.fcno) as spyNames " + 115 ", GROUP_CONCAT(distinct info.s_name order by info.fcno) as spyNames " +
106 ", GROUP_CONCAT(distinct info.s_gh order by info.fcno) as spyGhs " + 116 ", GROUP_CONCAT(distinct info.s_gh order by info.fcno) as spyGhs " +
  117 + ", max(info.create_date) as createDate " +
107 ", max(info.update_date) as updateDate " + 118 ", max(info.update_date) as updateDate " +
108 ", max(user.user_name) as updateUserName " + 119 ", max(user.user_name) as updateUserName " +
109 ", max(info.tt_info_name) as ttInfoName " + 120 ", max(info.tt_info_name) as ttInfoName " +
  121 + ", max(info.modify_count) as m_count " +
  122 + ", max(info.modify_reason) as m_reason " +
  123 + ", max(info.modify_remark) as m_desc " +
110 "from bsth_c_s_sp_info info left join bsth_c_sys_user user on info.update_by = user.id " + 124 "from bsth_c_s_sp_info info left join bsth_c_sys_user user on info.update_by = user.id " +
111 "left join bsth_c_s_gbi gbi on info.lp = gbi.id " + 125 "left join bsth_c_s_gbi gbi on info.lp = gbi.id " +
112 "where info.xl = ? and info.schedule_date = ? " + 126 "where info.xl = ? and info.schedule_date = ? " +
@@ -171,10 +185,15 @@ public interface SchedulePlanInfoService extends BService&lt;SchedulePlanInfo, Long @@ -171,10 +185,15 @@ public interface SchedulePlanInfoService extends BService&lt;SchedulePlanInfo, Long
171 this.spyGhs.addAll(Arrays.asList(spyGhs_temp.split(","))); 185 this.spyGhs.addAll(Arrays.asList(spyGhs_temp.split(",")));
172 } 186 }
173 187
  188 + this.createDate = new Date(rs.getTimestamp("createDate").getTime());
174 this.updateDate = new Date(rs.getTimestamp("updateDate").getTime()); 189 this.updateDate = new Date(rs.getTimestamp("updateDate").getTime());
175 this.updateByName = rs.getString("updateUserName"); 190 this.updateByName = rs.getString("updateUserName");
176 this.ttInfoName = rs.getString("ttInfoName"); 191 this.ttInfoName = rs.getString("ttInfoName");
177 192
  193 + this.m_count = rs.getInt("m_count");
  194 + this.m_reason = rs.getInt("m_reason");
  195 + this.m_desc = rs.getString("m_desc");
  196 +
178 } 197 }
179 198
180 public Integer getXlId() { 199 public Integer getXlId() {
@@ -296,6 +315,38 @@ public interface SchedulePlanInfoService extends BService&lt;SchedulePlanInfo, Long @@ -296,6 +315,38 @@ public interface SchedulePlanInfoService extends BService&lt;SchedulePlanInfo, Long
296 public void setTtInfoName(String ttInfoName) { 315 public void setTtInfoName(String ttInfoName) {
297 this.ttInfoName = ttInfoName; 316 this.ttInfoName = ttInfoName;
298 } 317 }
  318 +
  319 + public Integer getM_count() {
  320 + return m_count;
  321 + }
  322 +
  323 + public void setM_count(Integer m_count) {
  324 + this.m_count = m_count;
  325 + }
  326 +
  327 + public Integer getM_reason() {
  328 + return m_reason;
  329 + }
  330 +
  331 + public void setM_reason(Integer m_reason) {
  332 + this.m_reason = m_reason;
  333 + }
  334 +
  335 + public String getM_desc() {
  336 + return m_desc;
  337 + }
  338 +
  339 + public void setM_desc(String m_desc) {
  340 + this.m_desc = m_desc;
  341 + }
  342 +
  343 + public Date getCreateDate() {
  344 + return createDate;
  345 + }
  346 +
  347 + public void setCreateDate(Date createDate) {
  348 + this.createDate = createDate;
  349 + }
299 } 350 }
300 351
301 //---------------------------- 以下是过去版本 -------------------------------// 352 //---------------------------- 以下是过去版本 -------------------------------//
src/main/java/com/bsth/service/schedule/impl/SchedulePlanInfoServiceImpl.java
@@ -26,6 +26,17 @@ public class SchedulePlanInfoServiceImpl extends BServiceImpl&lt;SchedulePlanInfo, @@ -26,6 +26,17 @@ public class SchedulePlanInfoServiceImpl extends BServiceImpl&lt;SchedulePlanInfo,
26 private JdbcTemplate jdbcTemplate; 26 private JdbcTemplate jdbcTemplate;
27 27
28 @Override 28 @Override
  29 + public SchedulePlanInfo save(SchedulePlanInfo schedulePlanInfo) {
  30 + // 生成计划不是save,使用的是spring batch插入的
  31 + // 这里是单独修改的时候,需要记录修改次数,用于标识被修改过
  32 +
  33 + Integer currentModifyCount = schedulePlanInfo.getModifyCount();
  34 + schedulePlanInfo.setModifyCount(currentModifyCount == null ? 1 : ++ currentModifyCount);
  35 +
  36 + return super.save(schedulePlanInfo);
  37 + }
  38 +
  39 + @Override
29 public List<Date> findLastestPlanDate(Integer xlId) { 40 public List<Date> findLastestPlanDate(Integer xlId) {
30 String sql = "select max(schedule_date) as sd from bsth_c_s_sp_info " + 41 String sql = "select max(schedule_date) as sd from bsth_c_s_sp_info " +
31 "where xl = ?"; 42 "where xl = ?";
src/main/resources/static/pages/scheduleApp/module/common/dts1/select/saSelect5.js
@@ -396,14 +396,30 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect5&#39;, [ @@ -396,14 +396,30 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect5&#39;, [
396 // 本地动态数据直接显示,暂时不优化 396 // 本地动态数据直接显示,暂时不优化
397 var ldata = DataStore.getData(type); 397 var ldata = DataStore.getData(type);
398 for (var i = 0; i < ldata.length; i++) { 398 for (var i = 0; i < ldata.length; i++) {
399 - scope[ctrlAs].$$data_real.push(ldata[i]); 399 + // 闭包绑定返回最终查询的值
  400 + var calcu_str = scope[ctrlAs].$$internal_match_str(ldata[i]);
  401 + if (calcu_str) {
  402 + // 全拼
  403 + if (!ldata[i]["$fullChars"]) {
  404 + ldata[i]["$fullChars"] = pinyin.getFullChars(calcu_str);
  405 + }
  406 + // 简拼
  407 + if (!ldata[i]["$camelChars"]) {
  408 + ldata[i]["$camelChars"] = pinyin.getCamelChars(calcu_str);
  409 + }
  410 + // 原值
  411 + if (!ldata[i]["$calcu_str"]) {
  412 + ldata[i]["$calcu_str"] = calcu_str;
  413 + }
400 414
  415 + scope[ctrlAs].$$data_real.push(ldata[i]);
  416 + }
401 } 417 }
402 418
403 // 重新创建内部ui-select显示用数据,默认取10条记录显示 419 // 重新创建内部ui-select显示用数据,默认取10条记录显示
404 scope[ctrlAs].$$data = []; 420 scope[ctrlAs].$$data = [];
405 for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) { 421 for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) {
406 - if (scope[ctrlAs].$$data.length < 10) { 422 + if (scope[ctrlAs].$$data.length < 50) {
407 scope[ctrlAs].$$data.push(scope[ctrlAs].$$data_real[k]); 423 scope[ctrlAs].$$data.push(scope[ctrlAs].$$data_real[k]);
408 } else { 424 } else {
409 break; 425 break;
src/main/resources/static/pages/scheduleApp/module/common/dts2/scheduleplan/saPlanInfoEdit2.js
@@ -43,6 +43,8 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -43,6 +43,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(
43 var old_max_fcno = 0; // 最大发车顺序号 43 var old_max_fcno = 0; // 最大发车顺序号
44 var old_firstJCBCFcno = 0; // 第一个进场班次发车顺序号 44 var old_firstJCBCFcno = 0; // 第一个进场班次发车顺序号
45 var old_half_bcs = 0; // 一般的班次数量 45 var old_half_bcs = 0; // 一般的班次数量
  46 + var old_ddreason = {}; // key:{调度原因}, value:所在list下标数组
  47 + var old_dddesc = {}; // key:{调度描述}, value:所在list下标数组
46 48
47 // 内部变量,变更的车辆,变更的人员 49 // 内部变量,变更的车辆,变更的人员
48 var new_cl1 = undefined; // 新的车辆1(车辆id_车辆自编号) 50 var new_cl1 = undefined; // 新的车辆1(车辆id_车辆自编号)
@@ -51,7 +53,8 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -51,7 +53,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(
51 var new_j2 = undefined; // 新的驾驶员2(驾驶员id_姓名_工号) 53 var new_j2 = undefined; // 新的驾驶员2(驾驶员id_姓名_工号)
52 var new_s1 = undefined; // 新的售票员1(售票员id_姓名_工号) 54 var new_s1 = undefined; // 新的售票员1(售票员id_姓名_工号)
53 var new_s2 = undefined; // 新的售票员2(售票员id_姓名_工号) 55 var new_s2 = undefined; // 新的售票员2(售票员id_姓名_工号)
54 - 56 + var new_ddreason = undefined; // 调度原因
  57 + var new_dddesc = undefined; // 调度描述
55 58
56 // 表单值,被赋值的次数 59 // 表单值,被赋值的次数
57 var form_data_assign_count = { 60 var form_data_assign_count = {
@@ -72,6 +75,42 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -72,6 +75,42 @@ angular.module(&#39;ScheduleApp&#39;).directive(
72 post: function(scope, element, attr) { 75 post: function(scope, element, attr) {
73 76
74 /** 77 /**
  78 + * 刷新调度原因数据。
  79 + */
  80 + scope[ctrlAs].$$internal_refresh_dsdata_ddreason = function() {
  81 + if (new_ddreason) {
  82 + angular.forEach(scope[ctrlAs].ds, function(obj) {
  83 + obj.modifyReason = new_ddreason;
  84 + });
  85 + } else {
  86 + // 清空,不使用旧的
  87 + angular.forEach(old_ddreason, function(value, key) {
  88 + angular.forEach(value, function(i) {
  89 + scope[ctrlAs].ds[i].modifyReason = undefined;
  90 + });
  91 + });
  92 + }
  93 + };
  94 +
  95 + /**
  96 + * 刷新调度描述数据。
  97 + */
  98 + scope[ctrlAs].$$internal_refresh_dsdata_dddesc = function() {
  99 + if (new_dddesc) {
  100 + angular.forEach(scope[ctrlAs].ds, function(obj) {
  101 + obj.modifyRemark = new_dddesc;
  102 + });
  103 + } else {
  104 + // 清空,不使用旧的
  105 + angular.forEach(old_dddesc, function(value, key) {
  106 + angular.forEach(value, function(i) {
  107 + scope[ctrlAs].ds[i].modifyRemark = undefined;
  108 + });
  109 + });
  110 + }
  111 + };
  112 +
  113 + /**
75 * 刷新车辆数据。 114 * 刷新车辆数据。
76 */ 115 */
77 scope[ctrlAs].$$internal_refresh_dsdata_cl = function() { 116 scope[ctrlAs].$$internal_refresh_dsdata_cl = function() {
@@ -274,6 +313,34 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -274,6 +313,34 @@ angular.module(&#39;ScheduleApp&#39;).directive(
274 } 313 }
275 }; 314 };
276 315
  316 + //-------------- 监控调度原因的变化 ----------------//
  317 + scope.$watch(
  318 + function() {
  319 + return scope[ctrlAs].fd.ddr;
  320 + },
  321 + function(newValue, oldValue) {
  322 + if (newValue || newValue == 0) {
  323 + new_ddreason = newValue;
  324 + }
  325 + scope[ctrlAs].$$internal_refresh_dsdata_ddreason();
  326 + },
  327 + true
  328 + );
  329 +
  330 + //-------------- 监控调度描述的变化 ----------------//
  331 + scope.$watch(
  332 + function() {
  333 + return scope[ctrlAs].fd.ddrdesc;
  334 + },
  335 + function(newValue, oldValue) {
  336 + if (newValue || newValue == 0) {
  337 + new_dddesc = newValue;
  338 + }
  339 + scope[ctrlAs].$$internal_refresh_dsdata_dddesc();
  340 + },
  341 + true
  342 + );
  343 +
277 344
278 //-------------- 监控表单车辆1的变化 ----------------// 345 //-------------- 监控表单车辆1的变化 ----------------//
279 scope.$watch( 346 scope.$watch(
@@ -421,6 +488,8 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -421,6 +488,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(
421 488
422 var cl_ids = []; // 车辆ids数组(有顺序) 489 var cl_ids = []; // 车辆ids数组(有顺序)
423 var j_s_ids = []; // 驾驶员ids,售票员ids,[{j:id,s:id},...](有顺序) 490 var j_s_ids = []; // 驾驶员ids,售票员ids,[{j:id,s:id},...](有顺序)
  491 + var addreason = []; // 营运调度的原因
  492 + var adddesc = []; // 营运导读的备注
424 var isRepeat = false; 493 var isRepeat = false;
425 var i = 0; 494 var i = 0;
426 495
@@ -439,6 +508,18 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -439,6 +508,18 @@ angular.module(&#39;ScheduleApp&#39;).directive(
439 old_s[k3] = []; 508 old_s[k3] = [];
440 } 509 }
441 510
  511 + var dd4 = obj.modifyReason == null || obj.modifyReason == undefined ? undefined :
  512 + obj.modifyReason;
  513 + var dd5 = obj.modifyRemark == null || obj.modifyRemark == undefined ? undefined :
  514 + obj.modifyRemark;
  515 +
  516 + if (!old_ddreason[dd4] && dd4) {
  517 + old_ddreason[dd4] = [];
  518 + }
  519 + if (!old_dddesc[dd5] && dd5) {
  520 + old_dddesc[dd5] = [];
  521 + }
  522 +
442 // 闭包 523 // 闭包
443 (function(i) { 524 (function(i) {
444 old_cl[k1].push(i); 525 old_cl[k1].push(i);
@@ -448,6 +529,12 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -448,6 +529,12 @@ angular.module(&#39;ScheduleApp&#39;).directive(
448 if (k3) { 529 if (k3) {
449 old_s[k3].push(i); 530 old_s[k3].push(i);
450 } 531 }
  532 + if (dd4) {
  533 + old_ddreason[dd4].push(i);
  534 + }
  535 + if (dd5) {
  536 + old_dddesc[dd5].push(i);
  537 + }
451 })(index); 538 })(index);
452 539
453 // 判断是否分班 540 // 判断是否分班
@@ -493,6 +580,35 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -493,6 +580,35 @@ angular.module(&#39;ScheduleApp&#39;).directive(
493 }); 580 });
494 } 581 }
495 } 582 }
  583 +
  584 + // 调度原因处理
  585 + isRepeat = false;
  586 + if (obj.modifyReason || obj.modifyReason == 0) {
  587 + for (i = 0; i < addreason.length; i++) {
  588 + if (addreason[i] == obj.modifyReason) {
  589 + isRepeat = true;
  590 + break;
  591 + }
  592 + }
  593 + if (!isRepeat) {
  594 + addreason.push(obj.modifyReason);
  595 + }
  596 + }
  597 +
  598 + // 调整备注处理
  599 + isRepeat = false;
  600 + if (obj.modifyRemark && obj.modifyRemark != "") {
  601 + for (i = 0; i < adddesc.length; i++) {
  602 + if (adddesc[i] == obj.modifyRemark) {
  603 + isRepeat = true;
  604 + break;
  605 + }
  606 + }
  607 + if (!isRepeat) {
  608 + adddesc.push(obj.modifyRemark);
  609 + }
  610 + }
  611 +
496 }); 612 });
497 613
498 old_max_fcno = newValue[newValue.length - 1].fcno; 614 old_max_fcno = newValue[newValue.length - 1].fcno;
@@ -518,6 +634,20 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -518,6 +634,20 @@ angular.module(&#39;ScheduleApp&#39;).directive(
518 scope[ctrlAs].fd["s" + (i + 1)].id = j_s_ids[i].s; 634 scope[ctrlAs].fd["s" + (i + 1)].id = j_s_ids[i].s;
519 } 635 }
520 } 636 }
  637 + for (i = 0; i < addreason.length; i++) { // 调度原因更新
  638 + if (i > 1) { // 有多个,只更新第一个
  639 + break;
  640 + } else {
  641 + scope[ctrlAs].fd.ddr = addreason[i];
  642 + }
  643 + }
  644 + for (i = 0; i < adddesc.length; i++) {
  645 + if (i > 1) { // 有多个,只更新第一个
  646 + break;
  647 + } else {
  648 + scope[ctrlAs].fd.ddrdesc = adddesc[i];
  649 + }
  650 + }
521 } 651 }
522 } 652 }
523 ); 653 );
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
@@ -1816,14 +1816,30 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect5&#39;, [ @@ -1816,14 +1816,30 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect5&#39;, [
1816 // 本地动态数据直接显示,暂时不优化 1816 // 本地动态数据直接显示,暂时不优化
1817 var ldata = DataStore.getData(type); 1817 var ldata = DataStore.getData(type);
1818 for (var i = 0; i < ldata.length; i++) { 1818 for (var i = 0; i < ldata.length; i++) {
1819 - scope[ctrlAs].$$data_real.push(ldata[i]); 1819 + // 闭包绑定返回最终查询的值
  1820 + var calcu_str = scope[ctrlAs].$$internal_match_str(ldata[i]);
  1821 + if (calcu_str) {
  1822 + // 全拼
  1823 + if (!ldata[i]["$fullChars"]) {
  1824 + ldata[i]["$fullChars"] = pinyin.getFullChars(calcu_str);
  1825 + }
  1826 + // 简拼
  1827 + if (!ldata[i]["$camelChars"]) {
  1828 + ldata[i]["$camelChars"] = pinyin.getCamelChars(calcu_str);
  1829 + }
  1830 + // 原值
  1831 + if (!ldata[i]["$calcu_str"]) {
  1832 + ldata[i]["$calcu_str"] = calcu_str;
  1833 + }
1820 1834
  1835 + scope[ctrlAs].$$data_real.push(ldata[i]);
  1836 + }
1821 } 1837 }
1822 1838
1823 // 重新创建内部ui-select显示用数据,默认取10条记录显示 1839 // 重新创建内部ui-select显示用数据,默认取10条记录显示
1824 scope[ctrlAs].$$data = []; 1840 scope[ctrlAs].$$data = [];
1825 for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) { 1841 for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) {
1826 - if (scope[ctrlAs].$$data.length < 10) { 1842 + if (scope[ctrlAs].$$data.length < 50) {
1827 scope[ctrlAs].$$data.push(scope[ctrlAs].$$data_real[k]); 1843 scope[ctrlAs].$$data.push(scope[ctrlAs].$$data_real[k]);
1828 } else { 1844 } else {
1829 break; 1845 break;
@@ -5151,6 +5167,8 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -5151,6 +5167,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(
5151 var old_max_fcno = 0; // 最大发车顺序号 5167 var old_max_fcno = 0; // 最大发车顺序号
5152 var old_firstJCBCFcno = 0; // 第一个进场班次发车顺序号 5168 var old_firstJCBCFcno = 0; // 第一个进场班次发车顺序号
5153 var old_half_bcs = 0; // 一般的班次数量 5169 var old_half_bcs = 0; // 一般的班次数量
  5170 + var old_ddreason = {}; // key:{调度原因}, value:所在list下标数组
  5171 + var old_dddesc = {}; // key:{调度描述}, value:所在list下标数组
5154 5172
5155 // 内部变量,变更的车辆,变更的人员 5173 // 内部变量,变更的车辆,变更的人员
5156 var new_cl1 = undefined; // 新的车辆1(车辆id_车辆自编号) 5174 var new_cl1 = undefined; // 新的车辆1(车辆id_车辆自编号)
@@ -5159,7 +5177,8 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -5159,7 +5177,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(
5159 var new_j2 = undefined; // 新的驾驶员2(驾驶员id_姓名_工号) 5177 var new_j2 = undefined; // 新的驾驶员2(驾驶员id_姓名_工号)
5160 var new_s1 = undefined; // 新的售票员1(售票员id_姓名_工号) 5178 var new_s1 = undefined; // 新的售票员1(售票员id_姓名_工号)
5161 var new_s2 = undefined; // 新的售票员2(售票员id_姓名_工号) 5179 var new_s2 = undefined; // 新的售票员2(售票员id_姓名_工号)
5162 - 5180 + var new_ddreason = undefined; // 调度原因
  5181 + var new_dddesc = undefined; // 调度描述
5163 5182
5164 // 表单值,被赋值的次数 5183 // 表单值,被赋值的次数
5165 var form_data_assign_count = { 5184 var form_data_assign_count = {
@@ -5180,6 +5199,42 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -5180,6 +5199,42 @@ angular.module(&#39;ScheduleApp&#39;).directive(
5180 post: function(scope, element, attr) { 5199 post: function(scope, element, attr) {
5181 5200
5182 /** 5201 /**
  5202 + * 刷新调度原因数据。
  5203 + */
  5204 + scope[ctrlAs].$$internal_refresh_dsdata_ddreason = function() {
  5205 + if (new_ddreason) {
  5206 + angular.forEach(scope[ctrlAs].ds, function(obj) {
  5207 + obj.modifyReason = new_ddreason;
  5208 + });
  5209 + } else {
  5210 + // 清空,不使用旧的
  5211 + angular.forEach(old_ddreason, function(value, key) {
  5212 + angular.forEach(value, function(i) {
  5213 + scope[ctrlAs].ds[i].modifyReason = undefined;
  5214 + });
  5215 + });
  5216 + }
  5217 + };
  5218 +
  5219 + /**
  5220 + * 刷新调度描述数据。
  5221 + */
  5222 + scope[ctrlAs].$$internal_refresh_dsdata_dddesc = function() {
  5223 + if (new_dddesc) {
  5224 + angular.forEach(scope[ctrlAs].ds, function(obj) {
  5225 + obj.modifyRemark = new_dddesc;
  5226 + });
  5227 + } else {
  5228 + // 清空,不使用旧的
  5229 + angular.forEach(old_dddesc, function(value, key) {
  5230 + angular.forEach(value, function(i) {
  5231 + scope[ctrlAs].ds[i].modifyRemark = undefined;
  5232 + });
  5233 + });
  5234 + }
  5235 + };
  5236 +
  5237 + /**
5183 * 刷新车辆数据。 5238 * 刷新车辆数据。
5184 */ 5239 */
5185 scope[ctrlAs].$$internal_refresh_dsdata_cl = function() { 5240 scope[ctrlAs].$$internal_refresh_dsdata_cl = function() {
@@ -5382,6 +5437,34 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -5382,6 +5437,34 @@ angular.module(&#39;ScheduleApp&#39;).directive(
5382 } 5437 }
5383 }; 5438 };
5384 5439
  5440 + //-------------- 监控调度原因的变化 ----------------//
  5441 + scope.$watch(
  5442 + function() {
  5443 + return scope[ctrlAs].fd.ddr;
  5444 + },
  5445 + function(newValue, oldValue) {
  5446 + if (newValue || newValue == 0) {
  5447 + new_ddreason = newValue;
  5448 + }
  5449 + scope[ctrlAs].$$internal_refresh_dsdata_ddreason();
  5450 + },
  5451 + true
  5452 + );
  5453 +
  5454 + //-------------- 监控调度描述的变化 ----------------//
  5455 + scope.$watch(
  5456 + function() {
  5457 + return scope[ctrlAs].fd.ddrdesc;
  5458 + },
  5459 + function(newValue, oldValue) {
  5460 + if (newValue || newValue == 0) {
  5461 + new_dddesc = newValue;
  5462 + }
  5463 + scope[ctrlAs].$$internal_refresh_dsdata_dddesc();
  5464 + },
  5465 + true
  5466 + );
  5467 +
5385 5468
5386 //-------------- 监控表单车辆1的变化 ----------------// 5469 //-------------- 监控表单车辆1的变化 ----------------//
5387 scope.$watch( 5470 scope.$watch(
@@ -5529,6 +5612,8 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -5529,6 +5612,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(
5529 5612
5530 var cl_ids = []; // 车辆ids数组(有顺序) 5613 var cl_ids = []; // 车辆ids数组(有顺序)
5531 var j_s_ids = []; // 驾驶员ids,售票员ids,[{j:id,s:id},...](有顺序) 5614 var j_s_ids = []; // 驾驶员ids,售票员ids,[{j:id,s:id},...](有顺序)
  5615 + var addreason = []; // 营运调度的原因
  5616 + var adddesc = []; // 营运导读的备注
5532 var isRepeat = false; 5617 var isRepeat = false;
5533 var i = 0; 5618 var i = 0;
5534 5619
@@ -5547,6 +5632,18 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -5547,6 +5632,18 @@ angular.module(&#39;ScheduleApp&#39;).directive(
5547 old_s[k3] = []; 5632 old_s[k3] = [];
5548 } 5633 }
5549 5634
  5635 + var dd4 = obj.modifyReason == null || obj.modifyReason == undefined ? undefined :
  5636 + obj.modifyReason;
  5637 + var dd5 = obj.modifyRemark == null || obj.modifyRemark == undefined ? undefined :
  5638 + obj.modifyRemark;
  5639 +
  5640 + if (!old_ddreason[dd4] && dd4) {
  5641 + old_ddreason[dd4] = [];
  5642 + }
  5643 + if (!old_dddesc[dd5] && dd5) {
  5644 + old_dddesc[dd5] = [];
  5645 + }
  5646 +
5550 // 闭包 5647 // 闭包
5551 (function(i) { 5648 (function(i) {
5552 old_cl[k1].push(i); 5649 old_cl[k1].push(i);
@@ -5556,6 +5653,12 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -5556,6 +5653,12 @@ angular.module(&#39;ScheduleApp&#39;).directive(
5556 if (k3) { 5653 if (k3) {
5557 old_s[k3].push(i); 5654 old_s[k3].push(i);
5558 } 5655 }
  5656 + if (dd4) {
  5657 + old_ddreason[dd4].push(i);
  5658 + }
  5659 + if (dd5) {
  5660 + old_dddesc[dd5].push(i);
  5661 + }
5559 })(index); 5662 })(index);
5560 5663
5561 // 判断是否分班 5664 // 判断是否分班
@@ -5601,6 +5704,35 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -5601,6 +5704,35 @@ angular.module(&#39;ScheduleApp&#39;).directive(
5601 }); 5704 });
5602 } 5705 }
5603 } 5706 }
  5707 +
  5708 + // 调度原因处理
  5709 + isRepeat = false;
  5710 + if (obj.modifyReason || obj.modifyReason == 0) {
  5711 + for (i = 0; i < addreason.length; i++) {
  5712 + if (addreason[i] == obj.modifyReason) {
  5713 + isRepeat = true;
  5714 + break;
  5715 + }
  5716 + }
  5717 + if (!isRepeat) {
  5718 + addreason.push(obj.modifyReason);
  5719 + }
  5720 + }
  5721 +
  5722 + // 调整备注处理
  5723 + isRepeat = false;
  5724 + if (obj.modifyRemark && obj.modifyRemark != "") {
  5725 + for (i = 0; i < adddesc.length; i++) {
  5726 + if (adddesc[i] == obj.modifyRemark) {
  5727 + isRepeat = true;
  5728 + break;
  5729 + }
  5730 + }
  5731 + if (!isRepeat) {
  5732 + adddesc.push(obj.modifyRemark);
  5733 + }
  5734 + }
  5735 +
5604 }); 5736 });
5605 5737
5606 old_max_fcno = newValue[newValue.length - 1].fcno; 5738 old_max_fcno = newValue[newValue.length - 1].fcno;
@@ -5626,6 +5758,20 @@ angular.module(&#39;ScheduleApp&#39;).directive( @@ -5626,6 +5758,20 @@ angular.module(&#39;ScheduleApp&#39;).directive(
5626 scope[ctrlAs].fd["s" + (i + 1)].id = j_s_ids[i].s; 5758 scope[ctrlAs].fd["s" + (i + 1)].id = j_s_ids[i].s;
5627 } 5759 }
5628 } 5760 }
  5761 + for (i = 0; i < addreason.length; i++) { // 调度原因更新
  5762 + if (i > 1) { // 有多个,只更新第一个
  5763 + break;
  5764 + } else {
  5765 + scope[ctrlAs].fd.ddr = addreason[i];
  5766 + }
  5767 + }
  5768 + for (i = 0; i < adddesc.length; i++) {
  5769 + if (i > 1) { // 有多个,只更新第一个
  5770 + break;
  5771 + } else {
  5772 + scope[ctrlAs].fd.ddrdesc = adddesc[i];
  5773 + }
  5774 + }
5629 } 5775 }
5630 } 5776 }
5631 ); 5777 );
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/edit.html
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 <i class="fa fa-circle"></i> 19 <i class="fa fa-circle"></i>
20 </li> 20 </li>
21 <li> 21 <li>
22 - <a href="javascript:" ng-click="ctrl.toPlanInfoListPage()">排班计划管理</a> 22 + <a href="javascript:" ng-click="ctrl.toPlanInfoListPage()">{{ctrl.schedulePlanInfoForSave.xlName}}排班计划</a>
23 <i class="fa fa-circle"></i> 23 <i class="fa fa-circle"></i>
24 </li> 24 </li>
25 <li> 25 <li>
@@ -30,15 +30,22 @@ @@ -30,15 +30,22 @@
30 <div class="portlet light bordered"> 30 <div class="portlet light bordered">
31 <div class="portlet-title"> 31 <div class="portlet-title">
32 <div class="caption"> 32 <div class="caption">
33 - <i class="icon-equalizer font-red-sunglo"></i>  
34 - <span class="caption-subject font-red-sunglo bold uppercase"> 33 + <div>
  34 + <i class="icon-equalizer font-red-sunglo"></i>
  35 + <span class="caption-subject font-red-sunglo bold uppercase">
35 {{ctrl.schedulePlanInfoForSave.xlName}} 36 {{ctrl.schedulePlanInfoForSave.xlName}}
36 {{ctrl.schedulePlanInfoForSave.ttInfoName}} 37 {{ctrl.schedulePlanInfoForSave.ttInfoName}}
37 {{"路牌" + ctrl.schedulePlanInfoForSave.lpName}} 38 {{"路牌" + ctrl.schedulePlanInfoForSave.lpName}}
38 - <span ng-bind="ctrl.schedulePlanInfoForSave.scheduleDate | date: 'yyyy-MM-dd ' "></span>  
39 - <span>计划班次信息</span>  
40 - </span> 39 + <span ng-bind="ctrl.schedulePlanInfoForSave.scheduleDate | date: 'yyyy-MM-dd ' "></span>
  40 + <span>计划班次信息</span>
  41 + </span>
  42 + </div>
  43 + <div style="padding-top: 10px;">
  44 + <i class="icon-equalizer font-red-sunglo"></i>
  45 + <span class="caption-subject font-red-sunglo bold uppercase" ng-bind="ctrl.title_tip"></span>
  46 + </div>
41 </div> 47 </div>
  48 +
42 </div> 49 </div>
43 50
44 <div class="portlet-body form"> 51 <div class="portlet-body form">
@@ -109,7 +116,7 @@ @@ -109,7 +116,7 @@
109 cmaps="{'qdzCode' : 'zcode', 'qdzName': 'zname'}" 116 cmaps="{'qdzCode' : 'zcode', 'qdzName': 'zname'}"
110 dcname="qdzCode" 117 dcname="qdzCode"
111 icname="zcode" 118 icname="zcode"
112 - dsparams="{{ {type: 'ajax', param:{'lineid': ctrl.schedulePlanInfoForSave.xl, 'xldir': ctrl.schedulePlanInfoForSave.xlDir}, atype:'zd_tcc' } | json }}" 119 + dsparams="{{ {type: 'ajax', param:{'lineid': ctrl.schedulePlanInfoForSave.xl, 'xldir': ctrl.schedulePlanInfoForSave.xlDir, 'lineversion': ctrl.lineversion}, atype:'zd_tcc' } | json }}"
113 iterobjname="item" 120 iterobjname="item"
114 iterobjexp="item.aname" 121 iterobjexp="item.aname"
115 searchph="请输拼音..." 122 searchph="请输拼音..."
@@ -130,7 +137,7 @@ @@ -130,7 +137,7 @@
130 cmaps="{'zdzCode' : 'zcode', 'zdzName': 'zname'}" 137 cmaps="{'zdzCode' : 'zcode', 'zdzName': 'zname'}"
131 dcname="zdzCode" 138 dcname="zdzCode"
132 icname="zcode" 139 icname="zcode"
133 - dsparams="{{ {type: 'ajax', param:{'lineid': ctrl.schedulePlanInfoForSave.xl, 'xldir': ctrl.schedulePlanInfoForSave.xlDir}, atype:'zd_tcc' } | json }}" 140 + dsparams="{{ {type: 'ajax', param:{'lineid': ctrl.schedulePlanInfoForSave.xl, 'xldir': ctrl.schedulePlanInfoForSave.xlDir, 'lineversion': ctrl.lineversion}, atype:'zd_tcc' } | json }}"
134 iterobjname="item" 141 iterobjname="item"
135 iterobjexp="item.aname" 142 iterobjexp="item.aname"
136 searchph="请输拼音..." 143 searchph="请输拼音..."
@@ -208,8 +215,6 @@ @@ -208,8 +215,6 @@
208 </div> 215 </div>
209 </div> 216 </div>
210 217
211 -  
212 -  
213 </div> 218 </div>
214 219
215 <div class="form-actions"> 220 <div class="form-actions">
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/list_info.html
@@ -73,7 +73,8 @@ @@ -73,7 +73,8 @@
73 </tr> 73 </tr>
74 </thead> 74 </thead>
75 <tbody> 75 <tbody>
76 - <tr ng-repeat="info in ctrl.page()['content']" class="odd gradeX"> 76 + <tr ng-repeat="info in ctrl.page()['content']"
  77 + ng-class="{odd: true, gradeX: true, info: ctrl.isModify(info), 'row-active': ctrl.isModify(info)}">>
77 <td> 78 <td>
78 <div> 79 <div>
79 <a href="#"> 80 <a href="#">
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/module.js
@@ -3,7 +3,9 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -3,7 +3,9 @@ angular.module(&#39;ScheduleApp&#39;).factory(
3 'SchedulePlanInfoManageService', 3 'SchedulePlanInfoManageService',
4 [ 4 [
5 'SchedulePlanInfoManageService_g', 5 'SchedulePlanInfoManageService_g',
6 - function(service) { 6 + 'TTInfoManageService_g',
  7 + '$q',
  8 + function(service, service2, $q) {
7 /** 当前的查询条件信息 */ 9 /** 当前的查询条件信息 */
8 var currentSearchCondition = {}; 10 var currentSearchCondition = {};
9 11
@@ -53,7 +55,29 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -53,7 +55,29 @@ angular.module(&#39;ScheduleApp&#39;).factory(
53 uiFromRecord: 0, 55 uiFromRecord: 0,
54 uiToRecord: 0 56 uiToRecord: 0
55 }; 57 };
  58 + },
  59 + lineversiondesc: function(xlid, tid) {
  60 + var deferred = $q.defer();
  61 +
  62 + service2.rest.get({id: tid}, function(rs) {
  63 + // alert("rsrsrs");
  64 + service2.versiondesc.do(
  65 + {lineId: xlid, version: rs.lineVersion}, function(result) {
  66 + // alert("线路版本(" + result.desc + ")");
  67 + deferred.resolve({
  68 + lineversion: rs.lineVersion,
  69 + desc: "线路版本(" + result.desc + ")"
  70 + });
  71 + }, function() {
  72 + deferred.reject();
  73 + });
  74 + }, function() {
  75 + deferred.reject();
  76 + });
  77 +
  78 + return deferred.promise;
56 } 79 }
  80 +
57 }; 81 };
58 82
59 } 83 }
@@ -169,6 +193,15 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -169,6 +193,15 @@ angular.module(&#39;ScheduleApp&#39;).controller(
169 true 193 true
170 ); 194 );
171 195
  196 + // 判定是否被修改过
  197 + self.isModify = function(spinfo) {
  198 + if (spinfo.modifyCount > 0) {
  199 + return true;
  200 + } else {
  201 + return false;
  202 + }
  203 + }
  204 +
172 } 205 }
173 ] 206 ]
174 ); 207 );
@@ -197,11 +230,22 @@ angular.module(&quot;ScheduleApp&quot;).controller( @@ -197,11 +230,22 @@ angular.module(&quot;ScheduleApp&quot;).controller(
197 $state.go("schedulePlanInfoManage", $stateParams); 230 $state.go("schedulePlanInfoManage", $stateParams);
198 }; 231 };
199 232
  233 + // 线路版本描述
  234 + self.title_tip = "版本加载中...";
  235 +
200 // 获取数据 236 // 获取数据
201 SchedulePlanInfo.get({id: spinfoid}, function(value) { 237 SchedulePlanInfo.get({id: spinfoid}, function(value) {
202 self.schedulePlanInfoForSave = value; 238 self.schedulePlanInfoForSave = value;
  239 + // 线路版本
  240 + self.lineversion = 1;
  241 +
  242 + service.lineversiondesc(value.xl, value.ttInfo).then(
  243 + function(rs) {
  244 + self.title_tip = rs.desc;
  245 + self.lineversion = rs.lineversion;
  246 + }
  247 + );
203 248
204 - // TODO  
205 }); 249 });
206 250
207 // 提交方法 251 // 提交方法
@@ -216,7 +260,6 @@ angular.module(&quot;ScheduleApp&quot;).controller( @@ -216,7 +260,6 @@ angular.module(&quot;ScheduleApp&quot;).controller(
216 self.toPlanInfoListPage(); 260 self.toPlanInfoListPage();
217 }; 261 };
218 262
219 -  
220 } 263 }
221 ] 264 ]
222 ); 265 );
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/edit.html
@@ -46,10 +46,10 @@ @@ -46,10 +46,10 @@
46 <div class="form-body"> 46 <div class="form-body">
47 <div class="form-group"> 47 <div class="form-group">
48 <div class="col-md-5"> 48 <div class="col-md-5">
49 - <div class="form-group">  
50 - <label class="col-md-5 control-label">营运状态:</label> 49 + <div class="form-group has-success has-feedback">
  50 + <label class="col-md-5 control-label">营运状态*:</label>
51 <div class="col-md-7"> 51 <div class="col-md-7">
52 - <sa-Select5 name="cl2" 52 + <sa-Select5 name="ddr"
53 model="ctrl.formData" 53 model="ctrl.formData"
54 cmaps="{'ddr': 'code'}" 54 cmaps="{'ddr': 'code'}"
55 dcname="ddr" 55 dcname="ddr"
@@ -59,9 +59,14 @@ @@ -59,9 +59,14 @@
59 iterobjexp="item.name" 59 iterobjexp="item.name"
60 searchph="请输拼音..." 60 searchph="请输拼音..."
61 searchexp="this.name" 61 searchexp="this.name"
  62 + required
62 > 63 >
63 </sa-Select5> 64 </sa-Select5>
64 </div> 65 </div>
  66 + <!-- 隐藏块,显示验证信息 -->
  67 + <div class="alert alert-danger well-sm" ng-show="myForm.ddr.$error.required">
  68 + 调度原因必须选择
  69 + </div>
65 </div> 70 </div>
66 <div class="form-group has-success has-feedback"> 71 <div class="form-group has-success has-feedback">
67 <label class="col-md-5 control-label">车辆1*:</label> 72 <label class="col-md-5 control-label">车辆1*:</label>
@@ -215,6 +220,22 @@ @@ -215,6 +220,22 @@
215 </sa-Select5> 220 </sa-Select5>
216 </div> 221 </div>
217 </div> 222 </div>
  223 +
  224 + <div class="form-group">
  225 + <label class="col-md-5 control-label">备注:</label>
  226 + <div class="col-md-7">
  227 + <textarea name="ddrdesc"
  228 + class="form-control"
  229 + placeholder="营运调度备注(100字以内)"
  230 + ng-model="ctrl.formData.ddrdesc"
  231 + ng-maxlength="100" >
  232 + </textarea>
  233 + </div>
  234 + <!-- 隐藏块,显示验证信息 -->
  235 + <div class="alert alert-danger well-sm" ng-show="myForm.ddrdesc.$error.maxlength">
  236 + 最大100个字
  237 + </div>
  238 + </div>
218 </div> 239 </div>
219 240
220 <div class="col-md-7"> 241 <div class="col-md-7">
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/list.html
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 <tr role="row" class="heading"> 18 <tr role="row" class="heading">
19 <th style="width: 70px;">序号</th> 19 <th style="width: 70px;">序号</th>
20 <th style="width: 80px;">操作</th> 20 <th style="width: 80px;">操作</th>
  21 + <th style="width: 170px;">操作人/操作时间</th>
21 <th style="width: 180px;">线路</th> 22 <th style="width: 180px;">线路</th>
22 <th style="width: 180px">日期</th> 23 <th style="width: 180px">日期</th>
23 <th style="width: 50px">路牌</th> 24 <th style="width: 50px">路牌</th>
@@ -26,13 +27,12 @@ @@ -26,13 +27,12 @@
26 <th style="width: 80px;">进场时间</th> 27 <th style="width: 80px;">进场时间</th>
27 <th style="width: 150px;">驾驶员</th> 28 <th style="width: 150px;">驾驶员</th>
28 <th style="width: 150px;">售票员</th> 29 <th style="width: 150px;">售票员</th>
29 - <th>时刻表</th>  
30 - <th style="width: 150px;">修改时间</th>  
31 - <th style="width: 100px;">修改人</th> 30 + <th>关联时刻表</th>
32 </tr> 31 </tr>
33 <tr role="row" class="filter"> 32 <tr role="row" class="filter">
34 <td></td> 33 <td></td>
35 <td></td> 34 <td></td>
  35 + <td></td>
36 <td> 36 <td>
37 <sa-Select5 name="xl" 37 <sa-Select5 name="xl"
38 model="ctrl.searchCondition()" 38 model="ctrl.searchCondition()"
@@ -68,12 +68,11 @@ @@ -68,12 +68,11 @@
68 <td></td> 68 <td></td>
69 <td></td> 69 <td></td>
70 <td></td> 70 <td></td>
71 - <td></td>  
72 - <td></td>  
73 </tr> 71 </tr>
74 </thead> 72 </thead>
75 <tbody> 73 <tbody>
76 - <tr ng-repeat="info in ctrl.pageInfo.infos" class="odd gradeX"> 74 + <tr ng-repeat="info in ctrl.pageInfo.infos"
  75 + ng-class="{odd: true, gradeX: true, info: ctrl.isModify(info), 'row-active': ctrl.isModify(info)}" >
77 <td> 76 <td>
78 <div> 77 <div>
79 <a href="#"> 78 <a href="#">
@@ -86,13 +85,47 @@ @@ -86,13 +85,47 @@
86 <a ui-sref="schedulePlanInfoExtFormManage_edit({xlId: info.xlId, xlName: info.xlName, sd: info.scheduleDate, lpId: info.lpId, lpName: info.lpName})" class="btn btn-info btn-sm" > 修改 </a> 85 <a ui-sref="schedulePlanInfoExtFormManage_edit({xlId: info.xlId, xlName: info.xlName, sd: info.scheduleDate, lpId: info.lpId, lpName: info.lpName})" class="btn btn-info btn-sm" > 修改 </a>
87 </td> 86 </td>
88 <td> 87 <td>
  88 + <div>
  89 + <a href="#">
  90 + <i class="fa fa-user"></i>
  91 + <span ng-bind="info.updateByName"></span>
  92 + </a>
  93 + </div>
  94 + <div>
  95 + <a href="#"
  96 + tooltip-animation="false"
  97 + tooltip-placement="top"
  98 + uib-tooltip="创建时间:{{info.createDate | date: 'yyyy-MM-dd HH:mm:ss' }}"
  99 + tooltip-class="headClass">
  100 + 创建日期
  101 + <span ng-bind="(info.createDate | date: 'yyyy-MM-dd')"></span>
  102 + </a>
  103 + </div>
  104 + <div>
  105 + <a href="#"
  106 + tooltip-animation="false"
  107 + tooltip-placement="top"
  108 + uib-tooltip="修改时间:{{info.updateDate | date: 'yyyy-MM-dd HH:mm:ss' }}"
  109 + tooltip-class="headClass">
  110 + 修改日期
  111 + <span ng-bind="(info.updateDate | date: 'yyyy-MM-dd')"></span>
  112 + </a>
  113 + </div>
  114 +
  115 + </td>
  116 + <td>
89 <span ng-bind="info.xlName"></span> 117 <span ng-bind="info.xlName"></span>
90 </td> 118 </td>
91 <td> 119 <td>
92 <span ng-bind="info.scheduleDate | date: 'yyyy-MM-dd'"></span> 120 <span ng-bind="info.scheduleDate | date: 'yyyy-MM-dd'"></span>
93 </td> 121 </td>
94 <td> 122 <td>
95 - <span ng-bind="info.lpName"></span> 123 + <div>
  124 + <i class="fa fa-map-signs" aria-hidden="true"></i>
  125 + </div>
  126 + <div>
  127 + <span ng-bind="info.lpName"></span>
  128 + </div>
96 </td> 129 </td>
97 <td> 130 <td>
98 <div ng-repeat="clzbh in info.clZbhs"> 131 <div ng-repeat="clzbh in info.clZbhs">
@@ -157,12 +190,6 @@ @@ -157,12 +190,6 @@
157 <td> 190 <td>
158 <span ng-bind="info.ttInfoName"></span> 191 <span ng-bind="info.ttInfoName"></span>
159 </td> 192 </td>
160 - <td>  
161 - <span ng-bind="info.updateDate | date: 'yyyy-MM-dd HH:mm:ss'"></span>  
162 - </td>  
163 - <td>  
164 - <span ng-bind="info.updateByName"></span>  
165 - </td>  
166 193
167 </tr> 194 </tr>
168 </tbody> 195 </tbody>
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/module.js
@@ -210,6 +210,15 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -210,6 +210,15 @@ angular.module(&#39;ScheduleApp&#39;).controller(
210 true 210 true
211 ); 211 );
212 212
  213 + // 判定是否被修改过
  214 + self.isModify = function(info) {
  215 + if (info.m_count > 0) {
  216 + return true;
  217 + } else {
  218 + return false;
  219 + }
  220 + };
  221 +
213 222
214 223
215 ///** 224 ///**
@@ -265,6 +274,7 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -265,6 +274,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(
265 self.formData.s3 = {}; // 售票员3 274 self.formData.s3 = {}; // 售票员3
266 275
267 self.formData.ddr = "0"; // 调度原因,默认0-营运 276 self.formData.ddr = "0"; // 调度原因,默认0-营运
  277 + self.formData.ddrdesc = ""; // 调度原因描述
268 278
269 self.planInfos = undefined; // 排班明细 279 self.planInfos = undefined; // 排班明细
270 280