Commit b93c22a4167492adea27a6404d37f32effcedfc3
Merge remote-tracking branch 'origin/lggj' into lggj
Showing
18 changed files
with
1263 additions
and
1242 deletions
src/main/java/com/bsth/data/pilot80/PilotReport.java
| ... | ... | @@ -13,6 +13,7 @@ import com.bsth.entity.realcontrol.LineConfig; |
| 13 | 13 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 14 | 14 | import com.bsth.repository.directive.D80Repository; |
| 15 | 15 | import com.bsth.repository.directive.DC0A4Repository; |
| 16 | +import com.bsth.service.SystemParamService; | |
| 16 | 17 | import com.bsth.service.directive.DirectiveService; |
| 17 | 18 | import com.bsth.util.HttpClientUtils; |
| 18 | 19 | import com.bsth.websocket.handler.SendUtils; |
| ... | ... | @@ -53,6 +54,8 @@ public class PilotReport { |
| 53 | 54 | @Autowired |
| 54 | 55 | GpsStatusManager gpsStatusManager; |
| 55 | 56 | |
| 57 | + @Autowired | |
| 58 | + private SystemParamService systemParamService; | |
| 56 | 59 | private static ConcurrentHashMap<Integer, D80> d80Maps; |
| 57 | 60 | |
| 58 | 61 | /** |
| ... | ... | @@ -101,7 +104,7 @@ public class PilotReport { |
| 101 | 104 | //报警请求 |
| 102 | 105 | case 0x10: |
| 103 | 106 | try { |
| 104 | - String url = "http://58.34.52.130:9103/dataDockingApi/accident/saveAccident?"; | |
| 107 | + String url = systemParamService.getValue("url.yjbj")+"dataDockingApi/accident/saveAccident?"; | |
| 105 | 108 | url = url + "accidentTime=" + new Date().getTime() + "&nbbm=" + nbbm; |
| 106 | 109 | logger.info("url===="+url); |
| 107 | 110 | String res = HttpClientUtils.get(url).toString(); | ... | ... |
src/main/java/com/bsth/entity/sys/SysUser.java
| ... | ... | @@ -3,6 +3,7 @@ package com.bsth.entity.sys; |
| 3 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; |
| 4 | 4 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
| 5 | 5 | import org.joda.time.DateTime; |
| 6 | +import org.springframework.format.annotation.DateTimeFormat; | |
| 6 | 7 | |
| 7 | 8 | import javax.persistence.*; |
| 8 | 9 | import java.io.Serializable; |
| ... | ... | @@ -36,10 +37,12 @@ public class SysUser implements Serializable { |
| 36 | 37 | |
| 37 | 38 | @Column(name = "update_date", columnDefinition = "timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") |
| 38 | 39 | private Date updateDate; |
| 39 | - | |
| 40 | + | |
| 41 | + @DateTimeFormat(pattern = "yyyy-MM-dd") | |
| 40 | 42 | private Date lastLoginDate; |
| 41 | 43 | |
| 42 | 44 | /** 最近密码更新时间 */ |
| 45 | + @DateTimeFormat(pattern = "yyyy-MM-dd") | |
| 43 | 46 | private Date lastPwdDate; |
| 44 | 47 | /** 密码有效期 */ |
| 45 | 48 | private Integer pwdValidPeriod; | ... | ... |
src/main/java/com/bsth/service/zndd/impl/LoggerZnddServiceImpl.java
| ... | ... | @@ -217,7 +217,7 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl<LoggerZndd, Integer> |
| 217 | 217 | for(String line : lineArray){ |
| 218 | 218 | List<ScheduleRealInfo> schList = dayOfSchedule.findByLineCode(line); |
| 219 | 219 | for(ScheduleRealInfo sc : schList){ |
| 220 | - if (sc.getStatus() == 0){ | |
| 220 | + if (sc.getStatus() == 0 || sc.getStatus() == 1){ | |
| 221 | 221 | xlNames += sc.getXlName()+","; |
| 222 | 222 | break; |
| 223 | 223 | } | ... | ... |
src/main/resources/datatools/config-test.properties
| ... | ... | @@ -15,13 +15,13 @@ datatools.kvars_dbdname=lg_control |
| 15 | 15 | |
| 16 | 16 | # 3、上传数据配置信息 |
| 17 | 17 | # 上传文件目录配置(根据不同的环境需要修正) |
| 18 | -datatools.fileupload_dir=/home/bsth_control_u_d_files | |
| 18 | +datatools.fileupload_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files | |
| 19 | 19 | # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) |
| 20 | -datatools.trans_errordir=/home/bsth_control_u_d_files/erroroutput | |
| 20 | +datatools.trans_errordir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/erroroutput | |
| 21 | 21 | # 临时输出文件目录 |
| 22 | -datatools.trans_tempdir=/home/bsth_control_u_d_files/temp | |
| 22 | +datatools.trans_tempdir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/temp | |
| 23 | 23 | # 模版文件目录 |
| 24 | -datatools.trans_templatedir=/home/bsth_control_u_d_files/template | |
| 24 | +datatools.trans_templatedir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/template | |
| 25 | 25 | |
| 26 | 26 | ##---------------------------- 导入数据ktr ----------------------------## |
| 27 | 27 | # 车辆信息导入ktr转换 |
| ... | ... | @@ -57,7 +57,7 @@ datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr |
| 57 | 57 | |
| 58 | 58 | # 4、数据导出配置信息 |
| 59 | 59 | # 导出数据文件目录配置(根据不同的环境需要修正) |
| 60 | -datatools.fileoutput_dir=/home/bsth_control_u_d_files | |
| 60 | +datatools.fileoutput_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files | |
| 61 | 61 | |
| 62 | 62 | ##---------------------------- 导出数据ktr -----------------------------## |
| 63 | 63 | # 车辆信息导出ktr转换 | ... | ... |
src/main/resources/static/pages/base/timesmodel/add.html
| ... | ... | @@ -38,7 +38,7 @@ |
| 38 | 38 | |
| 39 | 39 | <div class="actions"> |
| 40 | 40 | <div class="btn-group btn-group-devided" data-toggle="buttons"> |
| 41 | - <a class="btn btn-circle blue openHaveSkb" href="javascript:;" data-pjax><i class="fa fa-check"></i> 打开现有时刻表明细</a> | |
| 41 | + <a class="btn btn-circle blue openHaveSkb" href="javascript:;" data-pjax><i class="fa fa-check"></i> 排班诊断</a> | |
| 42 | 42 | </div> |
| 43 | 43 | <div class="btn-group btn-group-devided" data-toggle="buttons"> |
| 44 | 44 | <a class="btn btn-circle default" href="/pages/base/timesmodel/index.html" style="float: right;padding: 4px 23px;" data-pjax=""><i class="fa fa-reply"></i> 退出</a> | ... | ... |
src/main/resources/static/pages/base/timesmodel/gantt.html
| ... | ... | @@ -50,7 +50,7 @@ |
| 50 | 50 | <!-- actions 组件START --> |
| 51 | 51 | <div class="actions"> |
| 52 | 52 | <div class="btn-group btn-group-devided countbtn" data-toggle="buttons"> |
| 53 | - <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 统计数据</a> | |
| 53 | + <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 排班统计</a> | |
| 54 | 54 | </div> |
| 55 | 55 | <div class="btn-group btn-group-devided parambtn" data-toggle="buttons"> |
| 56 | 56 | <a class="btn btn-circle blue paramAdd" href="javascript:;" data-pjax><i class="fa fa-list-ol" aria-hidden="true"></i> 重新生成</a> | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/add-form-wizard.js
| 1 | -/** | |
| 2 | - * @description : (TODO) 表单的导航向导、验证、提交 | |
| 3 | - */ | |
| 4 | - | |
| 5 | -var SKBFormWizard = function() { | |
| 6 | - | |
| 7 | - var bxrcGs = [ {'type':'六工一休','hoursV':6.66, 'minueV':'6:40'}, | |
| 8 | - {'type':'五工一休','hoursV':6.85, 'minueV':'6:51'}, | |
| 9 | - {'type':'四工一休','hoursV':7.14, 'minueV':'7:08'}, | |
| 10 | - {'type':'三工一休','hoursV':7.61, 'minueV':'7:37'}, | |
| 11 | - {'type':'二工一休','hoursV':8.57, 'minueV':'8:34'}, | |
| 12 | - {'type':'一工一休','hoursV':11.42, 'minueV':'11:25'}, | |
| 13 | - {'type':'五工二休','hoursV':7.99, 'minueV':'8:00'}, | |
| 14 | - {'type':'无工休', 'hoursV':5.43, 'minueV':'5:43'}]; | |
| 15 | - | |
| 16 | - /** | |
| 17 | - * @description : (TODO) 获取停站时间. | |
| 18 | - * | |
| 19 | - * @param [o--当前班次对象;d--班次数组对象;sj--当前班次时间] | |
| 20 | - * | |
| 21 | - * @return 返回相邻班次的停站时间. | |
| 22 | - * */ | |
| 23 | - function gettzsj(o,d,sj) { | |
| 24 | - // 定义停站时间. | |
| 25 | - var tzsj = 0; | |
| 26 | - // 变量班次数组对象. | |
| 27 | - for(var i = 0 ;i<d.length;i++) { | |
| 28 | - // 判断是否为同一个路牌. | |
| 29 | - if(o.lp.lpNo == d[i].lp.lpNo && o.lp.id == d[i].lp.id) { | |
| 30 | - // 判断是否为当前班次的下一个班次. | |
| 31 | - if(d[i].fcno - o.fcno ==1){ | |
| 32 | - // 计算停站时间. | |
| 33 | - tzsj = (strToTime(d[i].fcsj) -strToTime(sj)) / 60000; | |
| 34 | - continue; | |
| 35 | - } | |
| 36 | - } | |
| 37 | - } | |
| 38 | - // 返回停站时间. | |
| 39 | - return tzsj; | |
| 40 | - } | |
| 41 | - | |
| 42 | - /** | |
| 43 | - * @description : (TODO) 是否切换线路值转换. | |
| 44 | - * | |
| 45 | - * @param [d--是否切换线路原始值]. | |
| 46 | - * | |
| 47 | - * @return 返回一个是否切换线路值的转换. | |
| 48 | - * */ | |
| 49 | - function isSwitchXlTodm(d) { | |
| 50 | - var rstr = 0; | |
| 51 | - if(d) | |
| 52 | - rstr = 1; | |
| 53 | - return rstr; | |
| 54 | - } | |
| 55 | - | |
| 56 | - /** | |
| 57 | - * @description : (TODO) 是否分班值转换. | |
| 58 | - * | |
| 59 | - * @param [d--是否分班原始值]. | |
| 60 | - * | |
| 61 | - * @return 返回一个是否分班值的转换. | |
| 62 | - * */ | |
| 63 | - function isfbTodm(b) { | |
| 64 | - var rstr = 0; | |
| 65 | - if(b) | |
| 66 | - rstr = 1; | |
| 67 | - return rstr; | |
| 68 | - } | |
| 69 | - | |
| 70 | - /** | |
| 71 | - * @description : (TODO) 获取某个班次的到达时间字符串. | |
| 72 | - * | |
| 73 | - * @param [tStr--发车时间格式字符串;bcsj--班次历时]. | |
| 74 | - * | |
| 75 | - * @return 返回一个某个班次的到达时间字符串. | |
| 76 | - * */ | |
| 77 | - function getddsj(tStr,bcsj) { | |
| 78 | - // 定义当前时间对象. | |
| 79 | - var date = new Date(); | |
| 80 | - // 分割字符串. | |
| 81 | - var _str = tStr.split(':'); | |
| 82 | - // 设值小时. | |
| 83 | - date.setHours(parseInt(_str[0])); | |
| 84 | - // 设值分钟. | |
| 85 | - date.setMinutes(parseInt(_str[1]) + bcsj); | |
| 86 | - // 返回到达时间字符串. | |
| 87 | - return getTimeStr(date); | |
| 88 | - } | |
| 89 | - | |
| 90 | - /** | |
| 91 | - * @description : (TODO) 时间点格式字符串转时间对象. | |
| 92 | - * | |
| 93 | - * @param [t--时间点格式字符串] | |
| 94 | - * | |
| 95 | - * @return 返回一个时间点格式字符串转时间对象. | |
| 96 | - * */ | |
| 97 | - var strToTime = function(t) { | |
| 98 | - // 定义当前时间对象. | |
| 99 | - var d = new Date; | |
| 100 | - // 判断是否为空. | |
| 101 | - if(t) { | |
| 102 | - // 分割字符串. | |
| 103 | - var _str = t.split(':'); | |
| 104 | - // 设值小时. | |
| 105 | - d.setHours(parseInt(_str[0])); | |
| 106 | - // 设值分钟. | |
| 107 | - d.setMinutes(parseInt(_str[1])); | |
| 108 | - } | |
| 109 | - // 返回一个时间点格式字符串转时间对象. | |
| 110 | - return d; | |
| 111 | - } | |
| 112 | - | |
| 113 | - /** | |
| 114 | - * @description : (TODO) 时间对象转时间点格式字符串. | |
| 115 | - * | |
| 116 | - * @param [t--时间对象] | |
| 117 | - * | |
| 118 | - * @return 返回一个时间对象转时间点格式字符串. | |
| 119 | - * */ | |
| 120 | - function getTimeStr(t) { | |
| 121 | - // 定义返回值. | |
| 122 | - var _str = ''; | |
| 123 | - // 判断是否为空. | |
| 124 | - if(t) { | |
| 125 | - // 重新赋值. | |
| 126 | - _str = ((t.getHours()<10? '0' + t.getHours() : t.getHours()) == '00' ? '24' :(t.getHours()<10? '0' + t.getHours() : t.getHours())) | |
| 127 | - +':' | |
| 128 | - +(t.getMinutes()<10? '0' + t.getMinutes() : t.getMinutes()); | |
| 129 | - } | |
| 130 | - // 返回时间对象转时间点格式字符串. | |
| 131 | - return _str; | |
| 132 | - } | |
| 133 | - | |
| 134 | - /** | |
| 135 | - * @description : (TODO) 方向值转换. | |
| 136 | - * | |
| 137 | - * @param [d--方向原始值]. | |
| 138 | - * | |
| 139 | - * @return 返回一个方向值转换. | |
| 140 | - * */ | |
| 141 | - function dmToDh(t) { | |
| 142 | - // 定义返回值. | |
| 143 | - var reslStr = ''; | |
| 144 | - // 上行. | |
| 145 | - if(t=='0') | |
| 146 | - reslStr = 'relationshipGraph-up'; | |
| 147 | - // 下行. | |
| 148 | - else if(t=='1') | |
| 149 | - reslStr = 'relationshipGraph-down'; | |
| 150 | - // 返回一个方向值转换. | |
| 151 | - return reslStr; | |
| 152 | - } | |
| 153 | - | |
| 154 | - /** | |
| 155 | - * @description : (TODO) 获取线路标准详情. | |
| 156 | - * | |
| 157 | - * @param [lineId--线路ID;cb--回调函数]. | |
| 158 | - * | |
| 159 | - * @return 返回线路标准详情. | |
| 160 | - * | |
| 161 | - * @status OK. | |
| 162 | - * */ | |
| 163 | - var getLineInfo = function(lineId,cb) { | |
| 164 | - // 1、get异步请求.根据线路ID查询详情. | |
| 165 | - $get('/lineInformation',{'line.id_eq':lineId},function(result) { | |
| 166 | - // 2、返回线路标准详情. | |
| 167 | - return cb && cb(result); | |
| 168 | - }); | |
| 169 | - } | |
| 170 | - | |
| 171 | - /** | |
| 172 | - * @description : (TODO) 获取所有的停车场详情. | |
| 173 | - * | |
| 174 | - * @param [cb--回调函数]. | |
| 175 | - * | |
| 176 | - * @return 返回所有的停车场详情. | |
| 177 | - * | |
| 178 | - * @status OK. | |
| 179 | - * */ | |
| 180 | - var gettccInfo = function (cb) { | |
| 181 | - // 1、get异步请求.获取所有的停车场详情. | |
| 182 | - $get('/carpark/all',null, function(cd){ | |
| 183 | - // 2、返回所有的停车场详情. | |
| 184 | - return cb && cb(cd); | |
| 185 | - }); | |
| 186 | - } | |
| 187 | - | |
| 188 | - /** | |
| 189 | - * @description : (TODO) 时间格式字符串转时间对象. | |
| 190 | - * | |
| 191 | - * @param [time--时间格式字符串]. | |
| 192 | - * | |
| 193 | - * @return 返回一个时间对象. | |
| 194 | - * | |
| 195 | - * @status OK. | |
| 196 | - * */ | |
| 197 | - var getDateTime = function(time) { | |
| 198 | - // 1、定义一个时间对象. | |
| 199 | - var dateTime = new Date(); | |
| 200 | - // 2、判断参数是否为空或者为undefined. | |
| 201 | - if(time !=null && time !='' && typeof(time) !='undefined') { | |
| 202 | - // 3、给时间对象重新赋值. | |
| 203 | - dateTime = new Date(Date.parse(time.replace(/-/g, "/"))); | |
| 204 | - } | |
| 205 | - // 4、返回时间对象. | |
| 206 | - return dateTime; | |
| 207 | - } | |
| 208 | - | |
| 209 | - /** | |
| 210 | - * @description : (TODO) 客流方式填充表单时.根据表单参数封装时间段内的车辆数. | |
| 211 | - * | |
| 212 | - * @param : [map--表单参数] | |
| 213 | - * | |
| 214 | - * @returns 返回一个根据表单参数封装时间段内的车辆数数组. | |
| 215 | - * | |
| 216 | - * @status OK. | |
| 217 | - * */ | |
| 218 | - function getsjdArr(map) { | |
| 219 | - // 1、获取营运的开始与结束时间点. | |
| 220 | - var seMap = getStartAndEndDate(map); | |
| 221 | - // 2、返回一个根据表单参数封装时间段内的车辆数数组. | |
| 222 | - return [{'num':0,'time':seMap.s + '-' + map.earlyStartTime},// 早高峰之前时间段内的车辆. | |
| 223 | - {'num':0,'time':map.earlyStartTime + '-' + map.earlyEndTime}, // 早高峰时间段内的车辆. | |
| 224 | - {'num':0,'time':map.earlyEndTime + '-' + map.lateStartTime},// 高峰之间时间段内的车辆 | |
| 225 | - {'num':0,'time':map.lateStartTime + '-' + map.lateEndTime},// 晚高峰时间段内的车辆. | |
| 226 | - {'num':0,'time':map.lateEndTime + '-' + seMap.e}];// 晚高峰之后时间段内的车辆. | |
| 227 | - } | |
| 228 | - | |
| 229 | - /** | |
| 230 | - * @description : (TODO) 获取最小时间(字符串). | |
| 231 | - * | |
| 232 | - * @param [d1--时间1;d2--时间2]. | |
| 233 | - * | |
| 234 | - * @return 返回一个最小时间(字符串). | |
| 235 | - * | |
| 236 | - * @status OK. | |
| 237 | - * */ | |
| 238 | - function getMinDate(d1,d2) { | |
| 239 | - // 1、定义返回字符串. | |
| 240 | - var str = ''; | |
| 241 | - // 2、判断时间大小. | |
| 242 | - if(strToTime(d1)>strToTime(d2)) | |
| 243 | - str = d2; | |
| 244 | - else | |
| 245 | - str = d1; | |
| 246 | - // 3、返回最小时间(字符串). | |
| 247 | - return str; | |
| 248 | - } | |
| 249 | - | |
| 250 | - /** | |
| 251 | - * @description : (TODO) 获取最大时间(字符串). | |
| 252 | - * | |
| 253 | - * @param [d1--时间1;d2--时间2]. | |
| 254 | - * | |
| 255 | - * @return 返回一个最大时间(字符串). | |
| 256 | - * | |
| 257 | - * @status OK. | |
| 258 | - * */ | |
| 259 | - function getMaxDate(d1,d2) { | |
| 260 | - // 1、定义返回时间字符串. | |
| 261 | - var str = ''; | |
| 262 | - // 2、判断时间大小. | |
| 263 | - if(strToTime(d1)>strToTime(d2)) | |
| 264 | - str = d1; | |
| 265 | - else | |
| 266 | - str = d2; | |
| 267 | - // 3、返回一个最大时间(字符串). | |
| 268 | - return str; | |
| 269 | - } | |
| 270 | - | |
| 271 | - /** | |
| 272 | - * @description : (TODO) 判断是否这时间段内. | |
| 273 | - * | |
| 274 | - * @param [st--开始时间;ed--结束时间;sj--当前判断的时间] | |
| 275 | - * | |
| 276 | - * @return 返回一个布尔值. | |
| 277 | - * | |
| 278 | - * @status OK. | |
| 279 | - * */ | |
| 280 | - function issjd(st,ed,sj) { | |
| 281 | - // 1、定义返回值. | |
| 282 | - var tag = false; | |
| 283 | - // 2、判断时间大小. | |
| 284 | - if(sj<=ed && sj>=st) | |
| 285 | - // 3、重新赋值返回值. | |
| 286 | - tag = true; | |
| 287 | - // 4、返回判断结果布尔值. | |
| 288 | - return tag; | |
| 289 | - } | |
| 290 | - | |
| 291 | - /** | |
| 292 | - * @description : (TODO) 获取客流数据. | |
| 293 | - * | |
| 294 | - * @params [url--请求地址;data--请求参数;cb--回调函数] | |
| 295 | - * | |
| 296 | - * */ | |
| 297 | - function getJSONP(url, data, cb) { | |
| 298 | - $.ajax({ | |
| 299 | - url : url, | |
| 300 | - type : "GET", | |
| 301 | - dataType : 'jsonp', | |
| 302 | - jsonp : 'jsoncallback', | |
| 303 | - data : data, | |
| 304 | - success : cb | |
| 305 | - }); | |
| 306 | - } | |
| 307 | - | |
| 308 | - /** | |
| 309 | - * 判断某个时间是否在指定时间段内 | |
| 310 | - * @param start 开始时间 | |
| 311 | - * @param end 结束时间 | |
| 312 | - * @param t 指定时间 | |
| 313 | - * @param isWrapTime 是否重新包装时间 | |
| 314 | - */ | |
| 315 | - function issjd_extend(start, end, t, flag) { | |
| 316 | - var m_start = moment(start); | |
| 317 | - var m_end = moment(end); | |
| 318 | - var m_t = moment(t); | |
| 319 | - | |
| 320 | - if (flag) { | |
| 321 | - // 重新构造时间,保留时间的小时,分钟,秒,忽略年月日 | |
| 322 | - var date_wrap_prefix = "2000-01-01 "; // 包装日期的前缀 | |
| 323 | - var date_wrap_format = "YYYY-MM-DD HH:mm:ss"; // 日期格式 | |
| 324 | - | |
| 325 | - var m_start_wrap = moment(date_wrap_prefix + m_start.format("HH:mm:ss"), date_wrap_format); | |
| 326 | - var m_end_wrap = moment(date_wrap_prefix + m_end.format("HH:mm:ss"), date_wrap_format); | |
| 327 | - var m_t_wrap = moment(date_wrap_prefix + m_t.format("HH:mm:ss"), date_wrap_format); | |
| 328 | - | |
| 329 | - return m_t_wrap.isAfter(m_start_wrap) && m_t_wrap.isBefore(m_end_wrap); | |
| 330 | - } else { | |
| 331 | - return issjd(start, end, t); | |
| 332 | - // return m_t.isAfter(m_start) && m_t.isBefore(m_end); | |
| 333 | - } | |
| 334 | - | |
| 335 | - } | |
| 336 | - | |
| 337 | - /** | |
| 338 | - * @description : (TODO) 根据获取参数方式来获取表单参数详情html模版页. | |
| 339 | - * | |
| 340 | - * @param [n--获取参数方式;map--表单参数;lineId--线路ID;krl--客容量;cb--回调函数] | |
| 341 | - * | |
| 342 | - * @return 返回表单参数详情html模版页. | |
| 343 | - * | |
| 344 | - * @status OK. | |
| 345 | - * */ | |
| 346 | - var getHtmlTemp = function(n,map,lineId,krl,cb) { | |
| 347 | - // 1、定义模版名称. | |
| 348 | - var tempName = ''; | |
| 349 | - if(n==0) | |
| 350 | - tempName = 'carnum_temp'; | |
| 351 | - else if(n==1) | |
| 352 | - tempName = 'bctype_temp'; | |
| 353 | - else if (n==2 || n==3) | |
| 354 | - tempName = 'fcjx_temp'; | |
| 355 | - // 2、获参数详情模版html内容. | |
| 356 | - $.get('/pages/base/timesmodel/tepms/'+ tempName + '.html', function(html){ | |
| 357 | - $('#tab3').append(html); | |
| 358 | - map.lb = 15;// 定义例保时间. | |
| 359 | - map.workeLunch = 20;// 定义午餐时间. | |
| 360 | - map.workeDinner = 20;// 定义晚餐时间. | |
| 361 | - //map.mixstopTime = 8;// 定义最小停站间隙 | |
| 362 | - //map.maxstopTime = 20;// 定义最大停站间隙. | |
| 363 | - //map.upStopTime = 10;// 定义上行停站时间. | |
| 364 | - //map.downStopTime = 10;// 定义下行停站时间. | |
| 365 | - if(n==0) { | |
| 366 | - // 定义一个周转时间. | |
| 367 | - var zzsj = parseInt(map.upTravelTime) + 10*2 + parseInt(map.downTravelTime); | |
| 368 | - // 定义时间对象. | |
| 369 | - var date = new Date(); | |
| 370 | - // var rq = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + (date.getDate()-7); | |
| 371 | - | |
| 372 | - // 减去7天 | |
| 373 | - var m_date = moment(date); | |
| 374 | - m_date.add(-7, "d"); | |
| 375 | - var rq = m_date.format("YYYY-MM-DD"); | |
| 376 | - | |
| 377 | - console.log(date); | |
| 378 | - console.log(date.getDate()); | |
| 379 | - console.log(rq); | |
| 380 | - // 定义开始时间字符串. | |
| 381 | - var startDateTime = rq + ' ' + '00:00'; | |
| 382 | - // 定义结束时间自妇产. | |
| 383 | - var endDateTime = rq + ' ' + '23:59'; | |
| 384 | - // 定义请求参数集合. | |
| 385 | - var params = {'xlid':lineId,'startDateTime':startDateTime,'endDateTime':endDateTime,'zzsj':zzsj}; | |
| 386 | - /** | |
| 387 | - * getJSONP请求获取客流数据. | |
| 388 | - * | |
| 389 | - * 返回的是一个每次以半小时为间隔作为开始时间点, 在加上周转时间作为结束时间点的 时段段内的客流最大通过量. | |
| 390 | - * */ | |
| 391 | - getJSONP( | |
| 392 | - // "http://139.196.13.237:8080/bsth-busfareflow-gj/Crlcxb/selectsjbctgl.do", | |
| 393 | - "http://180.166.5.82:9816/bsth-busfareflow-gj/Crlcxb/selectsjbctgl.do", | |
| 394 | - params,function(json){ | |
| 395 | - console.log(json); | |
| 396 | - | |
| 397 | - // 定义时段集合,可容量. | |
| 398 | - var sjdArr = getsjdArr(map),krlInt = parseInt(krl); | |
| 399 | - console.log("krlInt=" + krlInt); | |
| 400 | - // 遍历时段集合. | |
| 401 | - for(var s = 0 ; s<sjdArr.length;s++) { | |
| 402 | - // 分割时间段. | |
| 403 | - var strA = sjdArr[s].time.split('-'); | |
| 404 | - // 定义开始时间与结束时间,车辆数. | |
| 405 | - var st = getDateTime(rq + ' ' + strA[0]),et = getDateTime(rq + ' ' + strA[1]),num = 0; | |
| 406 | - | |
| 407 | - console.log("s=" + s + " st=" + st + " et=" + et); | |
| 408 | - | |
| 409 | - // 遍历时间段内的客流数据集合. | |
| 410 | - for(var j = 0 ; j < json.length; j ++) { | |
| 411 | - // 定义当前客流班次产生的时间. | |
| 412 | - var dqsj = getDateTime(json[j].sj); | |
| 413 | - // 判断是否这时间段内. | |
| 414 | - if(issjd_extend(st, et, dqsj, true)) { | |
| 415 | - // 车辆数相加. | |
| 416 | - sjdArr[s].num += Math.ceil(parseInt(json[j].tgl) / krlInt); | |
| 417 | - // num = num + Math.ceil(parseInt(json[j].tgl)/krlInt); | |
| 418 | - } | |
| 419 | - } | |
| 420 | - // sjdArr[s].num = num; | |
| 421 | - } | |
| 422 | - | |
| 423 | - // 注意:如果为0,设置成 10 17默认值 | |
| 424 | - map.zgfbeforepcs = sjdArr[0].num == 0 ? 10 : sjdArr[0].num;// 早高峰前配车数 | |
| 425 | - map.zgfpcs = sjdArr[2].num == 0 ? 17 : sjdArr[2].num;// 早高峰配车数 | |
| 426 | - map.gfzjpcs = sjdArr[4].num == 0 ? 10 : sjdArr[4].num;// 高峰之间配车数 | |
| 427 | - map.wgfpcs = sjdArr[2].num == 0 ? 17 : sjdArr[2].num ;// 晚高峰配车数 | |
| 428 | - map.wgfafterpcs = (sjdArr[1].num + sjdArr[3].num) == 0 ? 10 : sjdArr[1].num + sjdArr[3].num;// 晚高峰后配车数 | |
| 429 | - | |
| 430 | - // 注意:高峰 5 低谷 20 其他 10 | |
| 431 | - map.upStopTime = 10; | |
| 432 | - map.downStopTime = 10; | |
| 433 | - map.mixstopTime = 5; | |
| 434 | - map.maxstopTime = 20; | |
| 435 | - | |
| 436 | - //alert("dddd"); | |
| 437 | - | |
| 438 | - // 返回参数详情模版. | |
| 439 | - return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})}); | |
| 440 | - }); | |
| 441 | - }else if(n==1) { | |
| 442 | - // 更具站点路由版本获取起点终点站 | |
| 443 | - var iversion = $('#lineVersionSelect').val(); | |
| 444 | - $get('/stationroute/all',{'line.id_eq':lineId,'destroy_eq':0, 'versions_eq': iversion},function(result) { | |
| 445 | - $.each(result, function(i, d) { | |
| 446 | - if (d.stationMark == 'B' && d.directions == 0) { | |
| 447 | - // alert(d.stationName); | |
| 448 | - map.line.startStationName = d.stationName; | |
| 449 | - } else if (d.stationMark == 'E' && d.directions == 0) { | |
| 450 | - // alert(d.stationName); | |
| 451 | - map.line.endStationName = d.stationName; | |
| 452 | - } | |
| 453 | - }); | |
| 454 | - | |
| 455 | - // return cb && cb({ | |
| 456 | - // 'forminput': template(tempName, {map: map}), | |
| 457 | - // 'datadisplay': template(tempName + '_config', {map: null}) | |
| 458 | - // }); | |
| 459 | - // 返回参数详情模版. | |
| 460 | - return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})}); | |
| 461 | - }); | |
| 462 | - }else if (n==2 || n==3) { | |
| 463 | - // 更具站点路由版本获取起点终点站 | |
| 464 | - var iversion = $('#lineVersionSelect').val(); | |
| 465 | - $get('/stationroute/all',{'line.id_eq':lineId,'destroy_eq':0, 'versions_eq': iversion},function(result) { | |
| 466 | - $.each(result, function(i, d) { | |
| 467 | - if (d.stationMark == 'B' && d.directions == 0) { | |
| 468 | - // alert(d.stationName); | |
| 469 | - map.line.startStationName = d.stationName; | |
| 470 | - } else if (d.stationMark == 'E' && d.directions == 0) { | |
| 471 | - // alert(d.stationName); | |
| 472 | - map.line.endStationName = d.stationName; | |
| 473 | - } | |
| 474 | - }); | |
| 475 | - | |
| 476 | - | |
| 477 | - return cb && cb({ | |
| 478 | - 'forminput': template(tempName, {map: map}), | |
| 479 | - 'datadisplay': template(tempName + '_config', {map: null}) | |
| 480 | - }); | |
| 481 | - }); | |
| 482 | - | |
| 483 | - } | |
| 484 | - }); | |
| 485 | - }; | |
| 486 | - | |
| 487 | - /** | |
| 488 | - * @description (TODO) 格式化成渲染图形数据格式. | |
| 489 | - * | |
| 490 | - * @param [d--查询出的时刻表明细数据.] | |
| 491 | - * | |
| 492 | - * @return 返回渲染图形的数据格式. | |
| 493 | - * */ | |
| 494 | - function formatData(d) { | |
| 495 | - // 定义返回值. | |
| 496 | - var resultD = new Array(),lpA = new Array(),rsLpA = new Array(); | |
| 497 | - for(var i =0;i<d.length;i++) { | |
| 498 | - var obj = {}; | |
| 499 | - var ddsj = getddsj(d[i].fcsj,d[i].bcsj);// 到达时间. | |
| 500 | - obj.bcType = d[i].bcType;// 班次类型 | |
| 501 | - obj.bcs = d[i].bcs;// 班次数 | |
| 502 | - obj.bcsj = d[i].bcsj;// 班次时间 | |
| 503 | - obj.fcno = d[i].fcno;// 发车序号 | |
| 504 | - obj.fcsj = d[i].fcsj;// 发车时间 | |
| 505 | - obj.ARRIVALTIME = ddsj// 到达时间 | |
| 506 | - obj.jhlc = d[i].jhlc;// 计划里程 | |
| 507 | - obj.lp = d[i].lp==null ? null : d[i].lp.id;// 路牌id | |
| 508 | - obj.lpType = d[i].lp==null ? null : d[i].lp.lpType;// 路牌类型 | |
| 509 | - // obj.parent = d[i].lp.lpName;// 路牌名称 | |
| 510 | - // obj.parent = parseInt(d[i].lp.lpNo);// 路牌名称 | |
| 511 | - obj.lpName = d[i].lp.lpName; | |
| 512 | - obj.lpNo = d[i].lp.lpNo;// 路牌编码 | |
| 513 | - obj.tcc = d[i].tcc==null ? null : d[i].tcc.id;// 停车场id | |
| 514 | - obj.ttinfo = d[i].ttinfo==null ? null : d[i].ttinfo.id;// 时刻表id | |
| 515 | - obj.xl = d[i].xl==null ? null : d[i].xl.id;// 线路id | |
| 516 | - obj.xlDir = dmToDh(d[i].xlDir);// 方向【0:relationshipGraph-up 上行;1:relationshipGraph-down 下行】 | |
| 517 | - obj.qdz = d[i].qdz==null ? null : d[i].qdz.id;// 起点站id | |
| 518 | - obj.zdz = d[i].zdz==null ? null : d[i].zdz.id;//终点站id | |
| 519 | - obj.isfb = isfbTodm(d[i].isFB);// 是否分班【0:false;1:true】 | |
| 520 | - obj.isSwitchXl = isSwitchXlTodm(d[i].isSwitchXl);// 是否切换线路【0:false;1:true】 | |
| 521 | - obj.STOPTIME = gettzsj(d[i],d,ddsj);// 停站时间. | |
| 522 | - resultD.push(obj); | |
| 523 | - if(lpA.indexOf(obj.lpNo)<0) { | |
| 524 | - lpA.push(obj.lpNo); | |
| 525 | - rsLpA.push({'lp':obj.lp,'lpNo':obj.lpNo,'lpName':obj.lpName,'lpType':obj.lpType}); | |
| 526 | - } | |
| 527 | - } | |
| 528 | - // 返回渲染图形的数据格式. | |
| 529 | - return {'rsD':resultD,'rsLp':rsLpA}; | |
| 530 | - } | |
| 531 | - | |
| 532 | - /** | |
| 533 | - * @description : (TODO) 获取开始与结束时间字符串. | |
| 534 | - * | |
| 535 | - * @param [map--表单配置参数] | |
| 536 | - * | |
| 537 | - * @return 返回开始与结束时间字符串集合. | |
| 538 | - * */ | |
| 539 | - function getStartAndEndDate(map) { | |
| 540 | - return {'s':getMinDate(map.line.startStationFirstTime,map.line.endStationFirstTime), | |
| 541 | - 'e':getMaxDate(map.line.startStationEndTime,map.line.endStationEndTime)} | |
| 542 | - } | |
| 543 | - | |
| 544 | - return { | |
| 545 | - // 启动初始化向导导航 | |
| 546 | - init : function() { | |
| 547 | - if(!jQuery().bootstrapWizard) {return;} | |
| 548 | - var form = $('#submit_argus_form');// 表单 | |
| 549 | - var error = $('.alert-danger',form);// 表单异常 | |
| 550 | - var success = $('.alert-success',form);// 表单成功 | |
| 551 | - /** 表单验证 */ | |
| 552 | - form.validate({ | |
| 553 | - errorElement : 'span',// 错误提示元素span对象 | |
| 554 | - errorClass : 'help-block help-block-error',// 错误提示元素class名称 | |
| 555 | - focusInvalid : true,// 验证错误获取焦点 | |
| 556 | - /** 需要验证的表单元素 */ | |
| 557 | - rules : { | |
| 558 | - 'skbName' : {required : true,},// 时刻表名称,必填项. | |
| 559 | - 'lineName' : {required : true,},// 线路名称,必填项. | |
| 560 | - 'lineVersion': {required: true}, // 站点路由版本,必填项, | |
| 561 | - // 'krl' : {isBaseRes : true,number : true,digits : true,},// 客容量,当选择为客流方式时必填项、整数 | |
| 562 | - 'startStationFirstTime' : {required : true}, // 起始站首班时间,必填项. | |
| 563 | - 'startStationEndTime' : {required : true}, // 起始站末班时间 ,必填项. | |
| 564 | - 'endStationFirstTime' : {required : true}, // 终点站首班时间 ,必填项. | |
| 565 | - 'endStationFirstTime' : {required : true}, // 终点站末班时间 ,必填项. | |
| 566 | - 'endStationEndTime' : {required : true}, // 终点站末班时间,必填项. | |
| 567 | - 'earlyStartTime' : {required : true},// 早高峰开始时间,必填项 . | |
| 568 | - 'earlyEndTime' : {required : true},// 早高峰结束时间,必填项 . | |
| 569 | - 'lateStartTime' : {required : true},// 晚高峰开始时间,必填项 . | |
| 570 | - 'lateEndTime' : {required : true},// 晚高峰结束时间,必填项. | |
| 571 | - 'zgfbeforepcs' : {required : true,number : true,digits : true, isNum0:true},// 早高峰前车辆数,必填项、必须为整数. | |
| 572 | - 'zgfpcs' : {required : true,number : true,digits : true, isNum0:true, isMax: true},// 早高峰车辆数,必填项、必须为整数. | |
| 573 | - 'wgfafterpcs' : {required : true,number : true,digits : true, isNum0:true},// 晚高峰后车俩数,必填项、必须为整数. | |
| 574 | - 'wgfpcs' : {required : true,number : true,digits : true, isNum0:true, isMax: true},// 晚高峰车俩数,必填项、必须为整数. | |
| 575 | - 'gfzjpcs' : {required : true,number : true,digits : true, isNum0:true},// 高峰中间车辆数,必填项、必须为整数. | |
| 576 | - 'upTravelTime' : {required : true,number : true},// 上行行驶时间,必填项、必须为整数. | |
| 577 | - 'downTravelTime' : {required : true,number : true},// 下行行驶时间,必填项、必须为整数. | |
| 578 | - 'upMileage' : {required : true,number : true},// 上行行驶里程,必填项、必须为整数. | |
| 579 | - 'downMileage' : {required : true,number : true},// 下行行驶里程,必填项、必须为整数. | |
| 580 | - 'upStopTime' : {required : true,number : true,digits : true},// 上行停站间隙,必填项、必须为整数. | |
| 581 | - 'downStopTime' : {required : true,number : true,digits : true},// 下行停站间隙,必填项、必须为整数. | |
| 582 | - 'maxstopTime' : {required : true,number : true,digits : true},// 最大停站间隙,必填项、必须为整数. | |
| 583 | - 'mixstopTime' : {required : true,number : true,digits : true},// 最小停站间隙,必填项、必须为整数. | |
| 584 | - 'earlyUpTime' : {number : true},// 早高峰上行时间,必须为数字. | |
| 585 | - 'earlyDownTime' : {number : true},// 早高峰下行时间,必须为数字. | |
| 586 | - 'lateUpTime' : {number : true},// 晚高峰上行时间,必须为数字. | |
| 587 | - 'lateDownTime' : {number : true},// 晚高峰下行时间,必须为数字. | |
| 588 | - 'troughUpTime' : {number : true},// 低谷上行时间,必须为数字. | |
| 589 | - 'troughDownTime' : {number : true},// 低谷下行时间,必须为数字. | |
| 590 | - 'qjUpTime' : {number : true},// 区间上行时间,必须为数字. | |
| 591 | - 'qjDownTime' : {number : true},// 区间下行时间,必须为数字. | |
| 592 | - 'kfsj' : {number : true,digits : true},// 空放行驶时间,必须为数字. | |
| 593 | - 'workeLunch' : {number : true},// 工作餐午餐时间,必须为数字. | |
| 594 | - 'workeDinner' : {number : true},// 工作餐晚餐时间,必须为数字. | |
| 595 | - 'upInTimer' : {number : true},// 上行进场时间,必须为数字. | |
| 596 | - 'upOutTimer' : {number : true},// 上行出场时间,必须为数字. | |
| 597 | - 'downInTimer' : {number : true},// 下行进场时间,必须为数字. | |
| 598 | - 'downOutTimer' : {number : true},// 下行出场时间,必须为数字. | |
| 599 | - 'upInMileage' : {number : true},// 上行进场里程,必须为数字. | |
| 600 | - 'upOutMileage' : {number : true},// 上行出场里程,必须为数字. | |
| 601 | - 'downInMileage' : {number : true},// 下行进场里程,必须为数字. | |
| 602 | - 'downOutMileage' : {number : true},// 下行出场里程,必须为数字. | |
| 603 | - 'lb' : {number : true},// 早晚例行保养,必须为数字. | |
| 604 | - 'clzs':{required : true,number : true,digits : true, isBcType : true},// 车辆总数,必填项、必须为整数. | |
| 605 | - 'bxrc' : {required : true},// 班型人次,必填项 | |
| 606 | - 'linePlayType' : {required : true},// 线路规划类型,必填项 | |
| 607 | - 'zdzcrl' : {number : true,digits : true}, | |
| 608 | - // 新增时间段字段 | |
| 609 | - 'start1' : {required : true}, | |
| 610 | - 'end1' : {required : true}, | |
| 611 | - 'start2' : {required : true}, | |
| 612 | - 'end2' : {required : true}, | |
| 613 | - 'start3' : {required : true}, | |
| 614 | - 'end3' : {required : true}, | |
| 615 | - 'start4' : {required : true}, | |
| 616 | - 'end4' : {required : true}, | |
| 617 | - 'start5' : {required : true}, | |
| 618 | - 'end5' : {required : true}, | |
| 619 | - | |
| 620 | - 'gfupStopTime' : {required : true,number : true}, // 高峰上行停站时间,必填项、必须为整数. | |
| 621 | - 'gfdownStopTime' : {required : true,number : true}, // 高峰下行停站时间,必填项、必须为整数. | |
| 622 | - 'dgupStopTime' : {required : true,number : true}, // 低谷上行停站时间,必填项、必须为整数. | |
| 623 | - 'dgdownStopTime' : {required : true,number : true}, // 低谷下行停站时间,必填项、必须为整数. | |
| 624 | - 'dgmaxfcjx' : {required : true,number : true}, // 低谷最大发车间隙,必填项、必须为整数. | |
| 625 | - 'dgmaxtzsj' : {required : true,number : true}, // 低谷最大停站时间,必填项、必须为整数. | |
| 626 | - | |
| 627 | - // 发车间隙分析用参数 | |
| 628 | - //'fcjx': {required: true}, // 时段发车间隙,TODO:貌似没发启用form验证 | |
| 629 | - 'stt': {required: true}, // 停站类型,TODO:貌似没发启用form验证 | |
| 630 | - 'zgffcjxmin' : {required : true,number : true,digits: true},// 早高峰最小发车间隔. | |
| 631 | - 'zgffcjxmax' : {required : true,number : true,digits: true},// 早高峰最大发车间隔. | |
| 632 | - 'wffcjxmin' : {required : true,number : true,digits: true},// 晚高峰最小发车间隔. | |
| 633 | - 'wffcjxmax' : {required : true,number : true,digits: true},// 晚高峰最大发车间隔. | |
| 634 | - 'dgfcjxmin' : {required : true,number : true,digits: true},// 低谷最小发车间隔. | |
| 635 | - 'dgfcjxmax' : {required : true,number : true,digits: true},// 低谷最大发车间隔. | |
| 636 | - 'gfjypcs': {required : true,number : true,digits: true}, // 高峰建议配车数 | |
| 637 | - 'jbclcount': {required : true,number : true,digits: true} // 建议加班车数 | |
| 638 | - }, | |
| 639 | - messages: { | |
| 640 | - 'zgfbeforepcs': "未获取客流数据请手动输入", | |
| 641 | - 'zgfpcs': "未获取客流数据请手动输入", | |
| 642 | - 'wgfafterpcs': "未获取客流数据请手动输入", | |
| 643 | - 'wgfpcs': "未获取客流数据请手动输入", | |
| 644 | - 'gfzjpcs': "未获取客流数据请手动输入" | |
| 645 | - }, | |
| 646 | - | |
| 647 | - /** | |
| 648 | - * 类型:Callback。当未通过验证的表单提交时,可以在该回调函数中处理一些事情。 | |
| 649 | - * | |
| 650 | - * 参数:该回调函数有两个参数:第一个为一个事件对象,第二个为验证器(validator) | |
| 651 | - */ | |
| 652 | - invalidHandler : function(event, validator) { | |
| 653 | - error.show();// 显示表单未通过提示信息 | |
| 654 | - App.scrollTo(error, -200);// 把提示信息放到指定的位置。 | |
| 655 | - }, | |
| 656 | - | |
| 657 | - /** | |
| 658 | - * 类型:Callback。 | |
| 659 | - * | |
| 660 | - * 默认:添加errorClass("has-error")到表单元素。将未通过验证的表单元素设置高亮。 | |
| 661 | - */ | |
| 662 | - highlight : function(element) { | |
| 663 | - $(element).closest('.form-group').addClass('has-error');// 添加errorClass("has-error")到表单元素 | |
| 664 | - }, | |
| 665 | - | |
| 666 | - /** | |
| 667 | - * 类型:Callback。 | |
| 668 | - * | |
| 669 | - * 默认:移除errorClass("has-error")。与highlight操作相反 | |
| 670 | - */ | |
| 671 | - unhighlight : function(element) { | |
| 672 | - $(element).closest('.form-group').removeClass('has-error');// 移除errorClass("has-error") | |
| 673 | - }, | |
| 674 | - | |
| 675 | - /** | |
| 676 | - * 类型:String,Callback。 | |
| 677 | - * | |
| 678 | - * 如果指定它,当验证通过时显示一个消息。 | |
| 679 | - * | |
| 680 | - * 如果是String类型的,则添加该样式到标签中; | |
| 681 | - * | |
| 682 | - * 如果是一个回调函数,则将标签作为其唯一的参数。 | |
| 683 | - */ | |
| 684 | - success : function(label) { | |
| 685 | - label.closest('.form-group').removeClass('has-error');// 当验证通过时,移除errorClass("has-error") | |
| 686 | - }, | |
| 687 | - | |
| 688 | - /** | |
| 689 | - * 类型:Callback。 | |
| 690 | - * | |
| 691 | - * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form | |
| 692 | - */ | |
| 693 | - submitHandler : function(f) { | |
| 694 | - // 定义localStorage对象. | |
| 695 | - var storage = window.localStorage; | |
| 696 | - // 表单序列化. | |
| 697 | - var argus = form.serializeJSON(); | |
| 698 | - console.log(argus); | |
| 699 | - // 获取站点路由. | |
| 700 | - $get('/stationroute/all',{'line.id_eq':argus.lineName.split('_')[0],'destroy_eq':0, 'versions_eq': argus.lineVersion},function(result) { | |
| 701 | - // 判断. | |
| 702 | - if(result) { | |
| 703 | - // 定义上行起点站,上行终点站,下行起点站,下行终点站. | |
| 704 | - var upB ='',upE='',downB='',downE=''; | |
| 705 | - for(var r = 0 ; r<result.length;r++) { | |
| 706 | - if(result[r].directions==0 && result[r].stationMark =='B') | |
| 707 | - upB = result[r].id; | |
| 708 | - if(result[r].directions==0 && result[r].stationMark =='E') | |
| 709 | - upE = result[r].id; | |
| 710 | - if(result[r].directions==1 && result[r].stationMark =='B') | |
| 711 | - downB = result[r].id; | |
| 712 | - if(result[r].directions==1 && result[r].stationMark =='E') | |
| 713 | - downE = result[r].id; | |
| 714 | - } | |
| 715 | - argus.up_s = upB + '_' + upE; | |
| 716 | - argus.down_s = downB + '_' + downE; | |
| 717 | - // 获取停车车场. | |
| 718 | - $get('/carpark/all',{'parkCode_eq':argus.tcc},function(cp) { | |
| 719 | - var tcc_id = ''; | |
| 720 | - if(cp) { | |
| 721 | - tcc_id = cp[0].id; | |
| 722 | - } | |
| 723 | - argus.tcc_id = tcc_id; // 停车场ID. | |
| 724 | - argus.skbmc = $('#skbNameSelect').select2('data')[0].text;// 时刻名称. | |
| 725 | - argus.xlmc = $('#lineSelect').select2('data')[0].text;// 线路名称. | |
| 726 | - // 获取时刻表明细. | |
| 727 | - $get('/tidc/all',{'ttinfo.id_eq':parseInt(argus.skbName)},function(data) { | |
| 728 | - if(data.status=='SUCCESS' && data.data.length>0) { | |
| 729 | - argus.istidc = 1; | |
| 730 | - layer.confirm('系统已存在该时刻表【'+ | |
| 731 | - $("#skbNameSelect").select2("data")[0].text + | |
| 732 | - '】明细,是否使用已有数据渲染模型?', { | |
| 733 | - btn: ['确定并使用','取消并继续'] //按钮 | |
| 734 | - }, function(){ | |
| 735 | - layer.closeAll(); | |
| 736 | - submit(formatData(data.data),argus); | |
| 737 | - }, function(){ | |
| 738 | - submit(null,argus); | |
| 739 | - }); | |
| 740 | - }else { | |
| 741 | - argus.istidc = 0; | |
| 742 | - submit(null,argus); | |
| 743 | - } | |
| 744 | - }); | |
| 745 | - }); | |
| 746 | - }else { | |
| 747 | - layer.msg('系统不存在该线路的上、下行起终点站!'); | |
| 748 | - } | |
| 749 | - }); | |
| 750 | - | |
| 751 | - // 表单提交. | |
| 752 | - function submit(p,argus) { | |
| 753 | - var baseRes2 = $('#submit_argus_form input[name="baseRes"]:checked').val();// 获取参数方式值. | |
| 754 | - if (baseRes2 == 0) { | |
| 755 | - // TODO:客流暂时有问题,直接使用现有时刻表打开,日后有机会再改好 | |
| 756 | - var skbId2 = $("#skbNameSelect").val(); | |
| 757 | - var argus2 = { | |
| 758 | - baseRes:"0",carPark:"FFFFFF68",downInMileage:"0", | |
| 759 | - downInTimer:"0",downMileage:"3.5",downOutMileage:"0", | |
| 760 | - downOutTimer:"0",downStopTime:"10",downTravelTime:"7", | |
| 761 | - down_s:"26922_26928",earlyDownTime:"7",earlyEndTime:"08:30", | |
| 762 | - earlyStartTime:"06:31",earlyUpTime:"10",endStationEndTime:"22:30", | |
| 763 | - endStationFirstTime:"05:50",gfzjpcs:"7",istidc:1,kfsj:"",krl:"50", | |
| 764 | - lateDownTime:"7",lateEndTime:"18:30",lateStartTime:"16:31", | |
| 765 | - lateUpTime:"10",lb:"15",lineName:"801702_801702_1109路", | |
| 766 | - linePlayType:"0",maxstopTime:"20",mixstopTime:"8",qjDownTime:"", | |
| 767 | - qjUpTime:"",skbName:skbId2,skbmc:"2016.4.6双时刻表", | |
| 768 | - startStationEndTime:"23:00",startStationFirstTime:"06:15",tcc_id:45,troughDownTime:"7",troughUpTime:"10",upInMileage:"0", | |
| 769 | - upInTimer:"10",upMileage:"3.5",upOutMileage:"0",upOutTimer:"10",upStopTime:"10",upTravelTime:"10", | |
| 770 | - up_s:"26912_26921",wgfafterpcs:"5",wgfpcs:"10",workeDinner:"20",workeLunch:"20",xlmc:"1109路",zgfbeforepcs:"3",zgfpcs:"10",} | |
| 771 | - // 获取时刻表明细. | |
| 772 | - $get('/tidc/all',{'ttinfo.id_eq':parseInt(argus.skbName)},function(data) { | |
| 773 | - var p = formatData(data.data,argus2); | |
| 774 | - // TODO:添加parent | |
| 775 | - for (var ii = 0; ii < p.rsD.length; ii++) { | |
| 776 | - p.rsD[ii].parent = p.rsD[ii].lpNo;// 路牌名称 | |
| 777 | - } | |
| 778 | - | |
| 779 | - argus2.istidc = 1; | |
| 780 | - var storage = window.localStorage; | |
| 781 | - storage.setItem("Gantt_AgursData",JSON.stringify(argus2)); | |
| 782 | - storage.setItem('isDoDate',JSON.stringify({'rsD':p.rsD,'rsLP':p.rsLp})); | |
| 783 | - loadPage('gantt.html'); | |
| 784 | - }); | |
| 785 | - } else { | |
| 786 | - | |
| 787 | - // storage.setItem("Gantt_AgursData",JSON.stringify(argus)); | |
| 788 | - // if(p!=null) { | |
| 789 | - // storage.setItem('isDoDate',JSON.stringify({'rsD':p.rsD,'rsLP':p.rsLp})); | |
| 790 | - // }else { | |
| 791 | - // storage.setItem('isDoDate',''); | |
| 792 | - // } | |
| 793 | - // loadPage('gantt.html'); | |
| 794 | - | |
| 795 | - // TODO:暂时打开现有时刻表演示 | |
| 796 | - var skbId = $("#skbNameSelect").val(); | |
| 797 | - // var argus = { | |
| 798 | - // baseRes:"0",czarPark:"FFFFFF68",downInMileage:"0", | |
| 799 | - // downInTimer:"0",downMileage:"3.5",downOutMileage:"0", | |
| 800 | - // downOutTimer:"0",downStopTime:"10",downTravelTime:"7", | |
| 801 | - // down_s:"26922_26928",earlyDownTime:"7",earlyEndTime:"08:30", | |
| 802 | - // earlyStartTime:"06:31",earlyUpTime:"10",endStationEndTime:"22:30", | |
| 803 | - // endStationFirstTime:"05:50",gfzjpcs:"7",istidc:1,kfsj:"",krl:"50", | |
| 804 | - // lateDownTime:"7",lateEndTime:"18:30",lateStartTime:"16:31", | |
| 805 | - // lateUpTime:"10",lb:"15",lineName:"801702_801702_1109路", | |
| 806 | - // linePlayType:"0",maxstopTime:"20",mixstopTime:"8",qjDownTime:"", | |
| 807 | - // qjUpTime:"",skbName:skbId,skbmc:"2016.4.6双时刻表", | |
| 808 | - // startStationEndTime:"23:00",startStationFirstTime:"06:15",tcc_id:45,troughDownTime:"7",troughUpTime:"10",upInMileage:"0", | |
| 809 | - // upInTimer:"10",upMileage:"3.5",upOutMileage:"0",upOutTimer:"10",upStopTime:"10",upTravelTime:"10", | |
| 810 | - // up_s:"26912_26921",wgfafterpcs:"5",wgfpcs:"10",workeDinner:"20",workeLunch:"20",xlmc:"1109路",zgfbeforepcs:"3",zgfpcs:"10",} | |
| 811 | - // 获取时刻表明细. | |
| 812 | - $get('/tidc/all',{'ttinfo.id_eq':parseInt(argus.skbName)},function(data) { | |
| 813 | - var p = formatData(data.data,argus); | |
| 814 | - argus.istidc = 1; | |
| 815 | - var storage = window.localStorage; | |
| 816 | - storage.setItem("Gantt_AgursData",JSON.stringify(argus)); | |
| 817 | - storage.setItem('isDoDate',JSON.stringify({'rsD':p.rsD,'rsLP':p.rsLp})); | |
| 818 | - loadPage('gantt.html'); | |
| 819 | - }); | |
| 820 | - | |
| 821 | - | |
| 822 | - } | |
| 823 | - | |
| 824 | - | |
| 825 | - } | |
| 826 | - } | |
| 827 | - }); | |
| 828 | - | |
| 829 | - // 验证配车数不能为零. | |
| 830 | - $.validator.addMethod('isNum0', function(value,element) { | |
| 831 | - // 定义返回值. | |
| 832 | - var tag = true; | |
| 833 | - var zgfbeforepcs = $('#zgfbeforepcsInput').val(),// 早高峰前配车数. | |
| 834 | - zgfpcs = $('#zgfpcsInput').val(),// 早高峰配车数. | |
| 835 | - gfzjpcs = $('#gfzjpcsInput').val(),// 高峰之间配车数. | |
| 836 | - wgfpcs = $('#wgfpcsInput').val(),// 晚高峰配车数. | |
| 837 | - wgfafterpcs = $('#wgfafterpcsInput').val();// 晚高峰后配车数. | |
| 838 | - // 判断是否为零. | |
| 839 | - if(parseInt(zgfbeforepcs) == 0 || parseInt(zgfbeforepcs) ==0 || | |
| 840 | - parseInt(gfzjpcs) ==0 || parseInt(wgfpcs) ==0 || parseInt(wgfafterpcs) ==0) | |
| 841 | - tag = false; | |
| 842 | - return tag; | |
| 843 | - },function(){return '配车数不能为零!'; }); | |
| 844 | - | |
| 845 | - // 验证高峰时段内的配车数是否高于其它时段配车数. | |
| 846 | - $.validator.addMethod('isMax', function(value,element) { | |
| 847 | - var tag = true; | |
| 848 | - var zgfbeforepcs = parseInt($('#zgfbeforepcsInput').val()),// 早高峰前配车数. | |
| 849 | - zgfpcs = parseInt($('#zgfpcsInput').val()),// 早高峰配车数. | |
| 850 | - gfzjpcs = parseInt($('#gfzjpcsInput').val()),// 高峰之间配车数. | |
| 851 | - wgfpcs = parseInt($('#wgfpcsInput').val()),// 晚高峰配车数. | |
| 852 | - wgfafterpcs = parseInt($('#wgfafterpcsInput').val());// 晚高峰后配车数. | |
| 853 | - // 判断高峰时段内的配车数是否高于其它时段配车数. | |
| 854 | - if(zgfpcs<zgfbeforepcs || zgfpcs<gfzjpcs || zgfpcs<wgfafterpcs || wgfpcs<zgfbeforepcs || wgfpcs<gfzjpcs || wgfpcs<wgfafterpcs ) | |
| 855 | - tag = false; | |
| 856 | - return tag; | |
| 857 | - },function(){return '高峰时段配车数必须高于其它时段配车数!';}); | |
| 858 | - | |
| 859 | - // 验证客流数据分析时客容量为必填项. | |
| 860 | - /*$.validator.addMethod("isBaseRes", function(value,element) { | |
| 861 | - // 定义返回值. | |
| 862 | - var tag = true; | |
| 863 | - // 定义选择获取参数方式值 | |
| 864 | - var baseChecked = $('#submit_argus_form input[name="baseRes"]:checked').val(); | |
| 865 | - // 判断 | |
| 866 | - if(baseChecked == '0' && $('#krlInput').val()== '') | |
| 867 | - tag = false; | |
| 868 | - return tag; | |
| 869 | - }, '客流大数据分析,客流总量为必填项!'); | |
| 870 | - */ | |
| 871 | - // 验证配车总数与班型人次搭配 | |
| 872 | - $.validator.addMethod('isBcType', function(value,element) { | |
| 873 | - // 定义返回值. | |
| 874 | - var tag = true; | |
| 875 | - // 定义车辆总数,班型人次. | |
| 876 | - var clzs = $('#clzsInput').val(), | |
| 877 | - bxrc = $('#state_tagsinput').val(); | |
| 878 | - // 判断. | |
| 879 | - if(bxrc=='' || bxrc==null || clzs=='' || clzs==0) | |
| 880 | - return false; | |
| 881 | - var bxrcAr = bxrc.split(','),pczs = 0; | |
| 882 | - for(var s = 0 ; s< bxrcAr.length;s++) { | |
| 883 | - // 切割单个班型人次. | |
| 884 | - pczs = pczs + parseInt(bxrcAr[s].split('/')[2]); | |
| 885 | - } | |
| 886 | - if(pczs!=clzs) | |
| 887 | - tag = false; | |
| 888 | - /** | |
| 889 | - // 定义首末班次开始结束时间集合. | |
| 890 | - var map = {'line':{'startStationFirstTime':$('#qdzsbsjInput').val(), | |
| 891 | - 'startStationEndTime':$('#qdzmbsjInput').val(), | |
| 892 | - 'endStationFirstTime':$('#zdzsbsjInput').val(), | |
| 893 | - 'endStationEndTime':$('#zdzmbsjInput').val()}}; | |
| 894 | - // 定义开始~结束时间. | |
| 895 | - var setMap = getStartAndEndDate(map); | |
| 896 | - // 定义最大工时. | |
| 897 | - var maxGs = parseInt( ((strToTime(setMap.e) - strToTime(setMap.s)) / 60000) / 60) * parseInt(clzs); | |
| 898 | - // 切割班型人次,定义班次人次所用总工时. | |
| 899 | - var bxrcAr = bxrc.split(','),countGs = 0,countRc = 0; | |
| 900 | - // 遍历 | |
| 901 | - for(var s = 0 ; s< bxrcAr.length;s++) { | |
| 902 | - // 切割单个班型人次. | |
| 903 | - var s1a = bxrcAr[s].split('/'); | |
| 904 | - // 定义人次. | |
| 905 | - var rs = parseInt(s1a[1]); | |
| 906 | - // 定义小时系数. | |
| 907 | - var hoursV = 0.0; | |
| 908 | - for(var g = 0 ; g < bxrcGs.length; g++) { | |
| 909 | - // 判断班型是否一致. | |
| 910 | - if(bxrcGs[g].type == s1a[0]) { | |
| 911 | - // 重新赋值小时系数. | |
| 912 | - hoursV = bxrcGs[g].hoursV; | |
| 913 | - } | |
| 914 | - } | |
| 915 | - // 重新计算班次人次所用总工时. | |
| 916 | - countGs = countGs + parseFloat(hoursV.toFixed(2)) * rs; | |
| 917 | - countRc = countRc + rs; | |
| 918 | - } | |
| 919 | - // 判断 | |
| 920 | - if(parseFloat(countGs.toFixed(2))>maxGs || (bxrcAr.length==1 && countRc > parseInt(clzs)) ) | |
| 921 | - tag = false; | |
| 922 | - */ | |
| 923 | - return tag; | |
| 924 | - },function(){return '配车总数与【班型/人次/车辆】搭配不合理!'; }); | |
| 925 | - | |
| 926 | - /** | |
| 927 | - * @description : (TODO) 监听获取参数方式值改变事件. | |
| 928 | - * | |
| 929 | - * */ | |
| 930 | - /*$('input:radio[name="baseRes"]').on('change',function(v) { | |
| 931 | - if($(this).val()=='1') | |
| 932 | - $('#krlGroup').hide(); | |
| 933 | - else if($(this).val()=='0') | |
| 934 | - $('#krlGroup').show(); | |
| 935 | - });*/ | |
| 936 | - | |
| 937 | - // 确认提交信息 | |
| 938 | - var displayConfirm = function() { | |
| 939 | - // 遍历表单元素下的tab4的class名称为form-control-static | |
| 940 | - $('#tab4 .form-control-static', form).each(function(){ | |
| 941 | - var input = $('[name="'+$(this).attr("data-display")+'"]', form);// 定义input | |
| 942 | - if (input.is(":radio")) { | |
| 943 | - input = $('[name="'+$(this).attr("data-display")+'"]:checked', form); | |
| 944 | - } | |
| 945 | - if (input.is(":text") || input.is("textarea")) { | |
| 946 | - $(this).html(input.val()); | |
| 947 | - } else if (input.is("select")) { | |
| 948 | - $(this).html(input.find('option:selected').text()); | |
| 949 | - } else if (input.is(":radio") && input.is(":checked")) { | |
| 950 | - $(this).html(input.attr("data-title")); | |
| 951 | - } else if ($(this).attr("data-display") == 'payment[]') { | |
| 952 | - var payment = []; | |
| 953 | - $('[name="payment[]"]:checked', form).each(function(){ | |
| 954 | - payment.push($(this).attr('data-title')); | |
| 955 | - }); | |
| 956 | - $(this).html(payment.join("<br>")); | |
| 957 | - } | |
| 958 | - }); | |
| 959 | - }; | |
| 960 | - | |
| 961 | - /** 按钮点击时触发 */ | |
| 962 | - var handleTitle = function(tab, navigation, index) { | |
| 963 | - var total = navigation.find('li').length;// 定义导航条标签个数 | |
| 964 | - var current = index + 1;// 当前标签页 | |
| 965 | - $('.step-title', $('#form-wizard-info')).text((index + 1) + ' - ' + total); // 设置向导标题 | |
| 966 | - jQuery('li', $('#form-wizard-info')).removeClass("done"); // 删除"done"样式 | |
| 967 | - var li_list = navigation.find('li');// 获取导航标签元素集合 | |
| 968 | - for (var i = 0; i < index; i++) { | |
| 969 | - jQuery(li_list[i]).addClass("done");// 追加done样式 | |
| 970 | - } | |
| 971 | - /** 如果为第一步隐藏返回按钮,否则显示返回按钮. */ | |
| 972 | - if (current == 1) { | |
| 973 | - $('#submit_argus_form').find('.button-previous').hide();// 隐藏返回按钮 | |
| 974 | - } else { | |
| 975 | - $('#submit_argus_form').find('.button-previous').show();// 显示返回按钮 | |
| 976 | - } | |
| 977 | - | |
| 978 | - /** 如果为最后一步显示提交按钮,隐藏下一步按钮,否则隐藏提交按钮,显示下一步按钮 */ | |
| 979 | - if (current >= total) { | |
| 980 | - $('#submit_argus_form').find('.button-next').hide();// 隐藏下一步按钮 | |
| 981 | - $('#submit_argus_form').find('.button-submit').show();// 显示提交按钮 | |
| 982 | - displayConfirm(); // 确认提交信息 | |
| 983 | - } else { | |
| 984 | - $('#submit_argus_form').find('.button-next').show();// 显示下一步按钮 | |
| 985 | - $('#submit_argus_form').find('.button-submit').hide();// 隐藏提交按钮 | |
| 986 | - } | |
| 987 | - App.scrollTo($('.page-title'));// 移动到指定位置 | |
| 988 | - }; | |
| 989 | - | |
| 990 | - // 表单导航向导插件 | |
| 991 | - $('#submit_argus_form').bootstrapWizard({ | |
| 992 | - 'nextSelector': '.button-next',// 下一步元素选择器 | |
| 993 | - 'previousSelector': '.button-previous',// 返回元素选择器 | |
| 994 | - /** 当一个导航标签被点击,返回错误的移动到该选项卡,并显示它的内容. */ | |
| 995 | - onTabClick: function (tab, navigation, index, clickedIndex) { | |
| 996 | - return false; | |
| 997 | - success.hide(); | |
| 998 | - error.hide(); | |
| 999 | - if (form.valid() == false) { | |
| 1000 | - return false; | |
| 1001 | - } | |
| 1002 | - handleTitle(tab, navigation, clickedIndex); | |
| 1003 | - }, | |
| 1004 | - /** 下一步按钮被单击时触发, 返回移动到下一个步骤. */ | |
| 1005 | - onNext: function (tab, navigation, index) { | |
| 1006 | - success.hide(); | |
| 1007 | - error.hide(); | |
| 1008 | - if (form.valid() == false) { | |
| 1009 | - return false; | |
| 1010 | - } | |
| 1011 | - /*if(index==1) { | |
| 1012 | - // 初始化客容量值. | |
| 1013 | - if($('#krlInput').val() == '') | |
| 1014 | - $('#krlInput').val(50); | |
| 1015 | - }else */if(index == 2) { | |
| 1016 | - var baseRes = $('#submit_argus_form input[name="baseRes"]:checked').val(),// 获取参数方式值. | |
| 1017 | - lineId = $('#lineSelect').val().split('_')[0],// 线路ID. | |
| 1018 | - krl = 50; | |
| 1019 | - // krl = $('#krlInput').val();// 客容量 | |
| 1020 | - // 弹出正在加载层 | |
| 1021 | - var i = layer.load(2); | |
| 1022 | - getLineInfo(lineId,function(r) { | |
| 1023 | - getHtmlTemp(baseRes,r.content[0],lineId,krl,function(htlMap) { | |
| 1024 | - $('#tab3').html(htlMap.forminput); | |
| 1025 | - $('#tab4').html(htlMap.datadisplay); | |
| 1026 | - | |
| 1027 | - if (baseRes == 0) { // 客流大数据分析 | |
| 1028 | - $('#linePlayTypeSelect').val(r.content[0].line.linePlayType); | |
| 1029 | - // 停站类型选择控件 | |
| 1030 | - ComponentsBootstrapTagsinput.init_stoptype(); | |
| 1031 | - // 日期控件 | |
| 1032 | - $('#qdzsbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 起始站首班时间 | |
| 1033 | - $('#qdzmbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 起始站末班时间 | |
| 1034 | - $('#zdzsbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 终点站首班时间 | |
| 1035 | - $('#zdzmbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 终点站末班时间 | |
| 1036 | - $('#zgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰开始时间 | |
| 1037 | - $('#zgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰结束时间 | |
| 1038 | - $('#wgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰开始时间 | |
| 1039 | - $('#wgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰结束时间 | |
| 1040 | - // 初始化停车场下拉框. | |
| 1041 | - gettccInfo(function(cd) { | |
| 1042 | - var options = '<option value="">请选择...</option><optgroup label="停车场">'; | |
| 1043 | - var $_len = cd.length; | |
| 1044 | - if($_len>0) { | |
| 1045 | - $.each(cd, function(i, d){ | |
| 1046 | - options += '<option value="'+d.parkCode+'">'+d.parkName+'</option>'; | |
| 1047 | - }); | |
| 1048 | - | |
| 1049 | - } | |
| 1050 | - options += '</optgroup>'; | |
| 1051 | - $('#carParkSelect').html(options).select2(); | |
| 1052 | - $('#carParkSelect').select2("val",r.content[0].carPark); | |
| 1053 | - // 关闭弹出加载层 | |
| 1054 | - layer.close(i); | |
| 1055 | - }); | |
| 1056 | - | |
| 1057 | - } else if (baseRes == 1) { // 班次/人次/车辆 | |
| 1058 | - $('#linePlayTypeSelect').val(r.content[0].line.linePlayType); | |
| 1059 | - ComponentsBootstrapTagsinput.init();// 初始化班型人次Input Tag. | |
| 1060 | - // 停站类型选择控件 | |
| 1061 | - ComponentsBootstrapTagsinput.init_stoptype(); | |
| 1062 | - // 日期控件 | |
| 1063 | - $('#qdzsbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 起始站首班时间 | |
| 1064 | - $('#qdzmbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 起始站末班时间 | |
| 1065 | - $('#zdzsbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 终点站首班时间 | |
| 1066 | - $('#zdzmbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 终点站末班时间 | |
| 1067 | - $('#zgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰开始时间 | |
| 1068 | - $('#zgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰结束时间 | |
| 1069 | - $('#wgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰开始时间 | |
| 1070 | - $('#wgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰结束时间 | |
| 1071 | - $('#startInput1').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1072 | - $('#endInput1').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1073 | - $('#startInput2').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1074 | - $('#endInput2').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1075 | - $('#startInput3').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1076 | - $('#endInput3').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1077 | - $('#startInput4').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1078 | - $('#endInput4').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1079 | - $('#startInput5').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1080 | - $('#endInput5').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1081 | - // 初始化停车场下拉框. | |
| 1082 | - gettccInfo(function(cd) { | |
| 1083 | - var options = '<option value="">请选择...</option><optgroup label="停车场">'; | |
| 1084 | - var $_len = cd.length; | |
| 1085 | - if($_len>0) { | |
| 1086 | - $.each(cd, function(i, d){ | |
| 1087 | - options += '<option value="'+d.parkCode+'">'+d.parkName+'</option>'; | |
| 1088 | - }); | |
| 1089 | - | |
| 1090 | - } | |
| 1091 | - options += '</optgroup>'; | |
| 1092 | - $('#carParkSelect').html(options).select2(); | |
| 1093 | - $('#carParkSelect').select2("val",r.content[0].carPark); | |
| 1094 | - // 关闭弹出加载层 | |
| 1095 | - layer.close(i); | |
| 1096 | - }); | |
| 1097 | - | |
| 1098 | - } else if (baseRes == 2 || baseRes == 3) { // 发车间隔分析 | |
| 1099 | - // 上下行首末班日期控件 | |
| 1100 | - $('#startStationFirstTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1101 | - $('#startStationEndTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1102 | - $('#endStationFirstTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1103 | - $('#endStationEndTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1104 | - | |
| 1105 | - // 早高峰晚高峰日期控件 | |
| 1106 | - $('#earlyStartTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1107 | - $('#earlyEndTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1108 | - $('#lateStartTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1109 | - $('#lateEndTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1110 | - | |
| 1111 | - // 线路规划类型日期控件 | |
| 1112 | - $('#linePlayType_id').val(r.content[0].line.linePlayType); | |
| 1113 | - | |
| 1114 | - // 停车场下拉框控件 | |
| 1115 | - gettccInfo(function(cd) { | |
| 1116 | - var options = '<option value="">请选择...</option><optgroup label="停车场">'; | |
| 1117 | - var $_len = cd.length; | |
| 1118 | - if($_len>0) { | |
| 1119 | - $.each(cd, function(i, d){ | |
| 1120 | - options += '<option value="'+d.parkCode+'">'+d.parkName+'</option>'; | |
| 1121 | - }); | |
| 1122 | - | |
| 1123 | - } | |
| 1124 | - options += '</optgroup>'; | |
| 1125 | - $('#carPark_id').html(options).select2(); | |
| 1126 | - $('#carPark_id').select2("val",r.content[0].carPark); | |
| 1127 | - // 关闭弹出加载层 | |
| 1128 | - layer.close(i); | |
| 1129 | - }); | |
| 1130 | - | |
| 1131 | - // 发车间隙选择控件 | |
| 1132 | - //ComponentsBootstrapTagsinput.init_fcjx(); | |
| 1133 | - // 停站类型选择控件 | |
| 1134 | - ComponentsBootstrapTagsinput.init_stoptype(); | |
| 1135 | - | |
| 1136 | - // TODO:发车间隔分析参数设置 | |
| 1137 | - | |
| 1138 | - layer.close(i); | |
| 1139 | - } | |
| 1140 | - | |
| 1141 | - }); | |
| 1142 | - }); | |
| 1143 | - } | |
| 1144 | - handleTitle(tab, navigation, index); | |
| 1145 | - }, | |
| 1146 | - /** 上一步按钮被单击时触发,返回移动到前一个步骤 */ | |
| 1147 | - onPrevious: function (tab, navigation, index) { | |
| 1148 | - success.hide(); | |
| 1149 | - error.hide(); | |
| 1150 | - handleTitle(tab, navigation, index); | |
| 1151 | - }, | |
| 1152 | - /** 显示选项卡内容 */ | |
| 1153 | - onTabShow: function (tab, navigation, index) { | |
| 1154 | - var total = navigation.find('li').length; | |
| 1155 | - var current = index + 1; | |
| 1156 | - var $percent = (current / total) * 100; | |
| 1157 | - $('#submit_argus_form').find('.progress-bar').css({ | |
| 1158 | - width: $percent + '%' | |
| 1159 | - }); | |
| 1160 | - | |
| 1161 | - } | |
| 1162 | - | |
| 1163 | - }); | |
| 1164 | - // 初始化第一步隐藏返回按钮 | |
| 1165 | - $('#submit_argus_form').find('.button-previous').hide(); | |
| 1166 | - } | |
| 1167 | - } | |
| 1168 | -}(); | |
| 1 | +/** | |
| 2 | + * @description : (TODO) 表单的导航向导、验证、提交 | |
| 3 | + */ | |
| 4 | + | |
| 5 | +var SKBFormWizard = function() { | |
| 6 | + | |
| 7 | + var bxrcGs = [ {'type':'六工一休','hoursV':6.66, 'minueV':'6:40'}, | |
| 8 | + {'type':'五工一休','hoursV':6.85, 'minueV':'6:51'}, | |
| 9 | + {'type':'四工一休','hoursV':7.14, 'minueV':'7:08'}, | |
| 10 | + {'type':'三工一休','hoursV':7.61, 'minueV':'7:37'}, | |
| 11 | + {'type':'二工一休','hoursV':8.57, 'minueV':'8:34'}, | |
| 12 | + {'type':'一工一休','hoursV':11.42, 'minueV':'11:25'}, | |
| 13 | + {'type':'五工二休','hoursV':7.99, 'minueV':'8:00'}, | |
| 14 | + {'type':'无工休', 'hoursV':5.43, 'minueV':'5:43'}]; | |
| 15 | + | |
| 16 | + /** | |
| 17 | + * @description : (TODO) 获取停站时间. | |
| 18 | + * | |
| 19 | + * @param [o--当前班次对象;d--班次数组对象;sj--当前班次时间] | |
| 20 | + * | |
| 21 | + * @return 返回相邻班次的停站时间. | |
| 22 | + * */ | |
| 23 | + function gettzsj(o,d,sj) { | |
| 24 | + // 定义停站时间. | |
| 25 | + var tzsj = 0; | |
| 26 | + // 变量班次数组对象. | |
| 27 | + for(var i = 0 ;i<d.length;i++) { | |
| 28 | + // 判断是否为同一个路牌. | |
| 29 | + if(o.lp.lpNo == d[i].lp.lpNo && o.lp.id == d[i].lp.id) { | |
| 30 | + // 判断是否为当前班次的下一个班次. | |
| 31 | + if(d[i].fcno - o.fcno ==1){ | |
| 32 | + // 计算停站时间. | |
| 33 | + tzsj = (strToTime(d[i].fcsj) -strToTime(sj)) / 60000; | |
| 34 | + continue; | |
| 35 | + } | |
| 36 | + } | |
| 37 | + } | |
| 38 | + // 返回停站时间. | |
| 39 | + return tzsj; | |
| 40 | + } | |
| 41 | + | |
| 42 | + /** | |
| 43 | + * @description : (TODO) 是否切换线路值转换. | |
| 44 | + * | |
| 45 | + * @param [d--是否切换线路原始值]. | |
| 46 | + * | |
| 47 | + * @return 返回一个是否切换线路值的转换. | |
| 48 | + * */ | |
| 49 | + function isSwitchXlTodm(d) { | |
| 50 | + var rstr = 0; | |
| 51 | + if(d) | |
| 52 | + rstr = 1; | |
| 53 | + return rstr; | |
| 54 | + } | |
| 55 | + | |
| 56 | + /** | |
| 57 | + * @description : (TODO) 是否分班值转换. | |
| 58 | + * | |
| 59 | + * @param [d--是否分班原始值]. | |
| 60 | + * | |
| 61 | + * @return 返回一个是否分班值的转换. | |
| 62 | + * */ | |
| 63 | + function isfbTodm(b) { | |
| 64 | + var rstr = 0; | |
| 65 | + if(b) | |
| 66 | + rstr = 1; | |
| 67 | + return rstr; | |
| 68 | + } | |
| 69 | + | |
| 70 | + /** | |
| 71 | + * @description : (TODO) 获取某个班次的到达时间字符串. | |
| 72 | + * | |
| 73 | + * @param [tStr--发车时间格式字符串;bcsj--班次历时]. | |
| 74 | + * | |
| 75 | + * @return 返回一个某个班次的到达时间字符串. | |
| 76 | + * */ | |
| 77 | + function getddsj(tStr,bcsj) { | |
| 78 | + // 定义当前时间对象. | |
| 79 | + var date = new Date(); | |
| 80 | + // 分割字符串. | |
| 81 | + var _str = tStr.split(':'); | |
| 82 | + // 设值小时. | |
| 83 | + date.setHours(parseInt(_str[0])); | |
| 84 | + // 设值分钟. | |
| 85 | + date.setMinutes(parseInt(_str[1]) + bcsj); | |
| 86 | + // 返回到达时间字符串. | |
| 87 | + return getTimeStr(date); | |
| 88 | + } | |
| 89 | + | |
| 90 | + /** | |
| 91 | + * @description : (TODO) 时间点格式字符串转时间对象. | |
| 92 | + * | |
| 93 | + * @param [t--时间点格式字符串] | |
| 94 | + * | |
| 95 | + * @return 返回一个时间点格式字符串转时间对象. | |
| 96 | + * */ | |
| 97 | + var strToTime = function(t) { | |
| 98 | + // 定义当前时间对象. | |
| 99 | + var d = new Date; | |
| 100 | + // 判断是否为空. | |
| 101 | + if(t) { | |
| 102 | + // 分割字符串. | |
| 103 | + var _str = t.split(':'); | |
| 104 | + // 设值小时. | |
| 105 | + d.setHours(parseInt(_str[0])); | |
| 106 | + // 设值分钟. | |
| 107 | + d.setMinutes(parseInt(_str[1])); | |
| 108 | + } | |
| 109 | + // 返回一个时间点格式字符串转时间对象. | |
| 110 | + return d; | |
| 111 | + } | |
| 112 | + | |
| 113 | + /** | |
| 114 | + * @description : (TODO) 时间对象转时间点格式字符串. | |
| 115 | + * | |
| 116 | + * @param [t--时间对象] | |
| 117 | + * | |
| 118 | + * @return 返回一个时间对象转时间点格式字符串. | |
| 119 | + * */ | |
| 120 | + function getTimeStr(t) { | |
| 121 | + // 定义返回值. | |
| 122 | + var _str = ''; | |
| 123 | + // 判断是否为空. | |
| 124 | + if(t) { | |
| 125 | + // 重新赋值. | |
| 126 | + _str = ((t.getHours()<10? '0' + t.getHours() : t.getHours()) == '00' ? '24' :(t.getHours()<10? '0' + t.getHours() : t.getHours())) | |
| 127 | + +':' | |
| 128 | + +(t.getMinutes()<10? '0' + t.getMinutes() : t.getMinutes()); | |
| 129 | + } | |
| 130 | + // 返回时间对象转时间点格式字符串. | |
| 131 | + return _str; | |
| 132 | + } | |
| 133 | + | |
| 134 | + /** | |
| 135 | + * @description : (TODO) 方向值转换. | |
| 136 | + * | |
| 137 | + * @param [d--方向原始值]. | |
| 138 | + * | |
| 139 | + * @return 返回一个方向值转换. | |
| 140 | + * */ | |
| 141 | + function dmToDh(t) { | |
| 142 | + // 定义返回值. | |
| 143 | + var reslStr = ''; | |
| 144 | + // 上行. | |
| 145 | + if(t=='0') | |
| 146 | + reslStr = 'relationshipGraph-up'; | |
| 147 | + // 下行. | |
| 148 | + else if(t=='1') | |
| 149 | + reslStr = 'relationshipGraph-down'; | |
| 150 | + // 返回一个方向值转换. | |
| 151 | + return reslStr; | |
| 152 | + } | |
| 153 | + | |
| 154 | + /** | |
| 155 | + * @description : (TODO) 获取线路标准详情. | |
| 156 | + * | |
| 157 | + * @param [lineId--线路ID;cb--回调函数]. | |
| 158 | + * | |
| 159 | + * @return 返回线路标准详情. | |
| 160 | + * | |
| 161 | + * @status OK. | |
| 162 | + * */ | |
| 163 | + var getLineInfo = function(lineId,cb) { | |
| 164 | + // 1、get异步请求.根据线路ID查询详情. | |
| 165 | + $get('/lineInformation',{'line.id_eq':lineId},function(result) { | |
| 166 | + // 2、返回线路标准详情. | |
| 167 | + return cb && cb(result); | |
| 168 | + }); | |
| 169 | + } | |
| 170 | + | |
| 171 | + /** | |
| 172 | + * @description : (TODO) 获取所有的停车场详情. | |
| 173 | + * | |
| 174 | + * @param [cb--回调函数]. | |
| 175 | + * | |
| 176 | + * @return 返回所有的停车场详情. | |
| 177 | + * | |
| 178 | + * @status OK. | |
| 179 | + * */ | |
| 180 | + var gettccInfo = function (cb) { | |
| 181 | + // 1、get异步请求.获取所有的停车场详情. | |
| 182 | + $get('/carpark/all',null, function(cd){ | |
| 183 | + // 2、返回所有的停车场详情. | |
| 184 | + return cb && cb(cd); | |
| 185 | + }); | |
| 186 | + } | |
| 187 | + | |
| 188 | + /** | |
| 189 | + * @description : (TODO) 时间格式字符串转时间对象. | |
| 190 | + * | |
| 191 | + * @param [time--时间格式字符串]. | |
| 192 | + * | |
| 193 | + * @return 返回一个时间对象. | |
| 194 | + * | |
| 195 | + * @status OK. | |
| 196 | + * */ | |
| 197 | + var getDateTime = function(time) { | |
| 198 | + // 1、定义一个时间对象. | |
| 199 | + var dateTime = new Date(); | |
| 200 | + // 2、判断参数是否为空或者为undefined. | |
| 201 | + if(time !=null && time !='' && typeof(time) !='undefined') { | |
| 202 | + // 3、给时间对象重新赋值. | |
| 203 | + dateTime = new Date(Date.parse(time.replace(/-/g, "/"))); | |
| 204 | + } | |
| 205 | + // 4、返回时间对象. | |
| 206 | + return dateTime; | |
| 207 | + } | |
| 208 | + | |
| 209 | + /** | |
| 210 | + * @description : (TODO) 客流方式填充表单时.根据表单参数封装时间段内的车辆数. | |
| 211 | + * | |
| 212 | + * @param : [map--表单参数] | |
| 213 | + * | |
| 214 | + * @returns 返回一个根据表单参数封装时间段内的车辆数数组. | |
| 215 | + * | |
| 216 | + * @status OK. | |
| 217 | + * */ | |
| 218 | + function getsjdArr(map) { | |
| 219 | + // 1、获取营运的开始与结束时间点. | |
| 220 | + var seMap = getStartAndEndDate(map); | |
| 221 | + // 2、返回一个根据表单参数封装时间段内的车辆数数组. | |
| 222 | + return [{'num':0,'time':seMap.s + '-' + map.earlyStartTime},// 早高峰之前时间段内的车辆. | |
| 223 | + {'num':0,'time':map.earlyStartTime + '-' + map.earlyEndTime}, // 早高峰时间段内的车辆. | |
| 224 | + {'num':0,'time':map.earlyEndTime + '-' + map.lateStartTime},// 高峰之间时间段内的车辆 | |
| 225 | + {'num':0,'time':map.lateStartTime + '-' + map.lateEndTime},// 晚高峰时间段内的车辆. | |
| 226 | + {'num':0,'time':map.lateEndTime + '-' + seMap.e}];// 晚高峰之后时间段内的车辆. | |
| 227 | + } | |
| 228 | + | |
| 229 | + /** | |
| 230 | + * @description : (TODO) 获取最小时间(字符串). | |
| 231 | + * | |
| 232 | + * @param [d1--时间1;d2--时间2]. | |
| 233 | + * | |
| 234 | + * @return 返回一个最小时间(字符串). | |
| 235 | + * | |
| 236 | + * @status OK. | |
| 237 | + * */ | |
| 238 | + function getMinDate(d1,d2) { | |
| 239 | + // 1、定义返回字符串. | |
| 240 | + var str = ''; | |
| 241 | + // 2、判断时间大小. | |
| 242 | + if(strToTime(d1)>strToTime(d2)) | |
| 243 | + str = d2; | |
| 244 | + else | |
| 245 | + str = d1; | |
| 246 | + // 3、返回最小时间(字符串). | |
| 247 | + return str; | |
| 248 | + } | |
| 249 | + | |
| 250 | + /** | |
| 251 | + * @description : (TODO) 获取最大时间(字符串). | |
| 252 | + * | |
| 253 | + * @param [d1--时间1;d2--时间2]. | |
| 254 | + * | |
| 255 | + * @return 返回一个最大时间(字符串). | |
| 256 | + * | |
| 257 | + * @status OK. | |
| 258 | + * */ | |
| 259 | + function getMaxDate(d1,d2) { | |
| 260 | + // 1、定义返回时间字符串. | |
| 261 | + var str = ''; | |
| 262 | + // 2、判断时间大小. | |
| 263 | + if(strToTime(d1)>strToTime(d2)) | |
| 264 | + str = d1; | |
| 265 | + else | |
| 266 | + str = d2; | |
| 267 | + // 3、返回一个最大时间(字符串). | |
| 268 | + return str; | |
| 269 | + } | |
| 270 | + | |
| 271 | + /** | |
| 272 | + * @description : (TODO) 判断是否这时间段内. | |
| 273 | + * | |
| 274 | + * @param [st--开始时间;ed--结束时间;sj--当前判断的时间] | |
| 275 | + * | |
| 276 | + * @return 返回一个布尔值. | |
| 277 | + * | |
| 278 | + * @status OK. | |
| 279 | + * */ | |
| 280 | + function issjd(st,ed,sj) { | |
| 281 | + // 1、定义返回值. | |
| 282 | + var tag = false; | |
| 283 | + // 2、判断时间大小. | |
| 284 | + if(sj<=ed && sj>=st) | |
| 285 | + // 3、重新赋值返回值. | |
| 286 | + tag = true; | |
| 287 | + // 4、返回判断结果布尔值. | |
| 288 | + return tag; | |
| 289 | + } | |
| 290 | + | |
| 291 | + /** | |
| 292 | + * @description : (TODO) 获取客流数据. | |
| 293 | + * | |
| 294 | + * @params [url--请求地址;data--请求参数;cb--回调函数] | |
| 295 | + * | |
| 296 | + * */ | |
| 297 | + function getJSONP(url, data, cb) { | |
| 298 | + $.ajax({ | |
| 299 | + url : url, | |
| 300 | + type : "GET", | |
| 301 | + dataType : 'jsonp', | |
| 302 | + jsonp : 'jsoncallback', | |
| 303 | + data : data, | |
| 304 | + success : cb | |
| 305 | + }); | |
| 306 | + } | |
| 307 | + | |
| 308 | + /** | |
| 309 | + * 判断某个时间是否在指定时间段内 | |
| 310 | + * @param start 开始时间 | |
| 311 | + * @param end 结束时间 | |
| 312 | + * @param t 指定时间 | |
| 313 | + * @param isWrapTime 是否重新包装时间 | |
| 314 | + */ | |
| 315 | + function issjd_extend(start, end, t, flag) { | |
| 316 | + var m_start = moment(start); | |
| 317 | + var m_end = moment(end); | |
| 318 | + var m_t = moment(t); | |
| 319 | + | |
| 320 | + if (flag) { | |
| 321 | + // 重新构造时间,保留时间的小时,分钟,秒,忽略年月日 | |
| 322 | + var date_wrap_prefix = "2000-01-01 "; // 包装日期的前缀 | |
| 323 | + var date_wrap_format = "YYYY-MM-DD HH:mm:ss"; // 日期格式 | |
| 324 | + | |
| 325 | + var m_start_wrap = moment(date_wrap_prefix + m_start.format("HH:mm:ss"), date_wrap_format); | |
| 326 | + var m_end_wrap = moment(date_wrap_prefix + m_end.format("HH:mm:ss"), date_wrap_format); | |
| 327 | + var m_t_wrap = moment(date_wrap_prefix + m_t.format("HH:mm:ss"), date_wrap_format); | |
| 328 | + | |
| 329 | + return m_t_wrap.isAfter(m_start_wrap) && m_t_wrap.isBefore(m_end_wrap); | |
| 330 | + } else { | |
| 331 | + return issjd(start, end, t); | |
| 332 | + // return m_t.isAfter(m_start) && m_t.isBefore(m_end); | |
| 333 | + } | |
| 334 | + | |
| 335 | + } | |
| 336 | + | |
| 337 | + /** | |
| 338 | + * @description : (TODO) 根据获取参数方式来获取表单参数详情html模版页. | |
| 339 | + * | |
| 340 | + * @param [n--获取参数方式;map--表单参数;lineId--线路ID;krl--客容量;cb--回调函数] | |
| 341 | + * | |
| 342 | + * @return 返回表单参数详情html模版页. | |
| 343 | + * | |
| 344 | + * @status OK. | |
| 345 | + * */ | |
| 346 | + var getHtmlTemp = function(n,map,lineId,krl,cb) { | |
| 347 | + // 1、定义模版名称. | |
| 348 | + var tempName = ''; | |
| 349 | + if(n==0) | |
| 350 | + tempName = 'carnum_temp'; | |
| 351 | + else if(n==1) | |
| 352 | + tempName = 'bctype_temp'; | |
| 353 | + else if (n==2 || n==3) | |
| 354 | + tempName = 'fcjx_temp'; | |
| 355 | + // 2、获参数详情模版html内容. | |
| 356 | + $.get('/pages/base/timesmodel/tepms/'+ tempName + '.html', function(html){ | |
| 357 | + $('#tab3').append(html); | |
| 358 | + map.lb = 15;// 定义例保时间. | |
| 359 | + map.workeLunch = 20;// 定义午餐时间. | |
| 360 | + map.workeDinner = 20;// 定义晚餐时间. | |
| 361 | + //map.mixstopTime = 8;// 定义最小停站间隙 | |
| 362 | + //map.maxstopTime = 20;// 定义最大停站间隙. | |
| 363 | + //map.upStopTime = 10;// 定义上行停站时间. | |
| 364 | + //map.downStopTime = 10;// 定义下行停站时间. | |
| 365 | + if(n==0) { | |
| 366 | + // 定义一个周转时间. | |
| 367 | + var zzsj = parseInt(map.upTravelTime) + 10*2 + parseInt(map.downTravelTime); | |
| 368 | + // 定义时间对象. | |
| 369 | + var date = new Date(); | |
| 370 | + // var rq = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + (date.getDate()-7); | |
| 371 | + | |
| 372 | + // 减去7天 | |
| 373 | + var m_date = moment(date); | |
| 374 | + m_date.add(-7, "d"); | |
| 375 | + var rq = m_date.format("YYYY-MM-DD"); | |
| 376 | + | |
| 377 | + console.log(date); | |
| 378 | + console.log(date.getDate()); | |
| 379 | + console.log(rq); | |
| 380 | + // 定义开始时间字符串. | |
| 381 | + var startDateTime = rq + ' ' + '00:00'; | |
| 382 | + // 定义结束时间自妇产. | |
| 383 | + var endDateTime = rq + ' ' + '23:59'; | |
| 384 | + // 定义请求参数集合. | |
| 385 | + var params = {'xlid':lineId,'startDateTime':startDateTime,'endDateTime':endDateTime,'zzsj':zzsj}; | |
| 386 | + /** | |
| 387 | + * getJSONP请求获取客流数据. | |
| 388 | + * | |
| 389 | + * 返回的是一个每次以半小时为间隔作为开始时间点, 在加上周转时间作为结束时间点的 时段段内的客流最大通过量. | |
| 390 | + * */ | |
| 391 | + getJSONP( | |
| 392 | + // "http://139.196.13.237:8080/bsth-busfareflow-gj/Crlcxb/selectsjbctgl.do", | |
| 393 | + "http://180.166.5.82:9816/bsth-busfareflow-gj/Crlcxb/selectsjbctgl.do", | |
| 394 | + params,function(json){ | |
| 395 | + console.log(json); | |
| 396 | + | |
| 397 | + // 定义时段集合,可容量. | |
| 398 | + var sjdArr = getsjdArr(map),krlInt = parseInt(krl); | |
| 399 | + console.log("krlInt=" + krlInt); | |
| 400 | + // 遍历时段集合. | |
| 401 | + for(var s = 0 ; s<sjdArr.length;s++) { | |
| 402 | + // 分割时间段. | |
| 403 | + var strA = sjdArr[s].time.split('-'); | |
| 404 | + // 定义开始时间与结束时间,车辆数. | |
| 405 | + var st = getDateTime(rq + ' ' + strA[0]),et = getDateTime(rq + ' ' + strA[1]),num = 0; | |
| 406 | + | |
| 407 | + console.log("s=" + s + " st=" + st + " et=" + et); | |
| 408 | + | |
| 409 | + // 遍历时间段内的客流数据集合. | |
| 410 | + for(var j = 0 ; j < json.length; j ++) { | |
| 411 | + // 定义当前客流班次产生的时间. | |
| 412 | + var dqsj = getDateTime(json[j].sj); | |
| 413 | + // 判断是否这时间段内. | |
| 414 | + if(issjd_extend(st, et, dqsj, true)) { | |
| 415 | + // 车辆数相加. | |
| 416 | + sjdArr[s].num += Math.ceil(parseInt(json[j].tgl) / krlInt); | |
| 417 | + // num = num + Math.ceil(parseInt(json[j].tgl)/krlInt); | |
| 418 | + } | |
| 419 | + } | |
| 420 | + // sjdArr[s].num = num; | |
| 421 | + } | |
| 422 | + | |
| 423 | + // 注意:如果为0,设置成 10 17默认值 | |
| 424 | + map.zgfbeforepcs = sjdArr[0].num == 0 ? 10 : sjdArr[0].num;// 早高峰前配车数 | |
| 425 | + map.zgfpcs = sjdArr[2].num == 0 ? 17 : sjdArr[2].num;// 早高峰配车数 | |
| 426 | + map.gfzjpcs = sjdArr[4].num == 0 ? 10 : sjdArr[4].num;// 高峰之间配车数 | |
| 427 | + map.wgfpcs = sjdArr[2].num == 0 ? 17 : sjdArr[2].num ;// 晚高峰配车数 | |
| 428 | + map.wgfafterpcs = (sjdArr[1].num + sjdArr[3].num) == 0 ? 10 : sjdArr[1].num + sjdArr[3].num;// 晚高峰后配车数 | |
| 429 | + | |
| 430 | + // 注意:高峰 5 低谷 20 其他 10 | |
| 431 | + map.upStopTime = 10; | |
| 432 | + map.downStopTime = 10; | |
| 433 | + map.mixstopTime = 5; | |
| 434 | + map.maxstopTime = 20; | |
| 435 | + | |
| 436 | + //alert("dddd"); | |
| 437 | + | |
| 438 | + // 返回参数详情模版. | |
| 439 | + return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})}); | |
| 440 | + }); | |
| 441 | + }else if(n==1) { | |
| 442 | + // 更具站点路由版本获取起点终点站 | |
| 443 | + var iversion = $('#lineVersionSelect').val(); | |
| 444 | + $get('/stationroute/all',{'line.id_eq':lineId,'destroy_eq':0, 'versions_eq': iversion},function(result) { | |
| 445 | + $.each(result, function(i, d) { | |
| 446 | + if (d.stationMark == 'B' && d.directions == 0) { | |
| 447 | + // alert(d.stationName); | |
| 448 | + map.line.startStationName = d.stationName; | |
| 449 | + } else if (d.stationMark == 'E' && d.directions == 0) { | |
| 450 | + // alert(d.stationName); | |
| 451 | + map.line.endStationName = d.stationName; | |
| 452 | + } | |
| 453 | + }); | |
| 454 | + | |
| 455 | + // return cb && cb({ | |
| 456 | + // 'forminput': template(tempName, {map: map}), | |
| 457 | + // 'datadisplay': template(tempName + '_config', {map: null}) | |
| 458 | + // }); | |
| 459 | + // 返回参数详情模版. | |
| 460 | + return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})}); | |
| 461 | + }); | |
| 462 | + }else if (n==2 || n==3) { | |
| 463 | + // 更具站点路由版本获取起点终点站 | |
| 464 | + var iversion = $('#lineVersionSelect').val(); | |
| 465 | + $get('/stationroute/all',{'line.id_eq':lineId,'destroy_eq':0, 'versions_eq': iversion},function(result) { | |
| 466 | + $.each(result, function(i, d) { | |
| 467 | + if (d.stationMark == 'B' && d.directions == 0) { | |
| 468 | + // alert(d.stationName); | |
| 469 | + map.line.startStationName = d.stationName; | |
| 470 | + } else if (d.stationMark == 'E' && d.directions == 0) { | |
| 471 | + // alert(d.stationName); | |
| 472 | + map.line.endStationName = d.stationName; | |
| 473 | + } | |
| 474 | + }); | |
| 475 | + | |
| 476 | + | |
| 477 | + return cb && cb({ | |
| 478 | + 'forminput': template(tempName, {map: map}), | |
| 479 | + 'datadisplay': template(tempName + '_config', {map: null}) | |
| 480 | + }); | |
| 481 | + }); | |
| 482 | + | |
| 483 | + } | |
| 484 | + }); | |
| 485 | + }; | |
| 486 | + | |
| 487 | + /** | |
| 488 | + * @description (TODO) 格式化成渲染图形数据格式. | |
| 489 | + * | |
| 490 | + * @param [d--查询出的时刻表明细数据.] | |
| 491 | + * | |
| 492 | + * @return 返回渲染图形的数据格式. | |
| 493 | + * */ | |
| 494 | + function formatData(d) { | |
| 495 | + // 定义返回值. | |
| 496 | + var resultD = new Array(),lpA = new Array(),rsLpA = new Array(); | |
| 497 | + for(var i =0;i<d.length;i++) { | |
| 498 | + var obj = {}; | |
| 499 | + var ddsj = getddsj(d[i].fcsj,d[i].bcsj);// 到达时间. | |
| 500 | + obj.bcType = d[i].bcType;// 班次类型 | |
| 501 | + obj.bcs = d[i].bcs;// 班次数 | |
| 502 | + obj.bcsj = d[i].bcsj;// 班次时间 | |
| 503 | + obj.fcno = d[i].fcno;// 发车序号 | |
| 504 | + obj.fcsj = d[i].fcsj;// 发车时间 | |
| 505 | + obj.ARRIVALTIME = ddsj// 到达时间 | |
| 506 | + obj.jhlc = d[i].jhlc;// 计划里程 | |
| 507 | + obj.lp = d[i].lp==null ? null : d[i].lp.id;// 路牌id | |
| 508 | + obj.lpType = d[i].lp==null ? null : d[i].lp.lpType;// 路牌类型 | |
| 509 | + // obj.parent = d[i].lp.lpName;// 路牌名称 | |
| 510 | + // obj.parent = parseInt(d[i].lp.lpNo);// 路牌名称 | |
| 511 | + obj.lpName = d[i].lp.lpName; | |
| 512 | + obj.lpNo = d[i].lp.lpNo;// 路牌编码 | |
| 513 | + obj.tcc = d[i].tcc==null ? null : d[i].tcc.id;// 停车场id | |
| 514 | + obj.ttinfo = d[i].ttinfo==null ? null : d[i].ttinfo.id;// 时刻表id | |
| 515 | + obj.xl = d[i].xl==null ? null : d[i].xl.id;// 线路id | |
| 516 | + obj.xlDir = dmToDh(d[i].xlDir);// 方向【0:relationshipGraph-up 上行;1:relationshipGraph-down 下行】 | |
| 517 | + obj.qdz = d[i].qdz==null ? null : d[i].qdz.id;// 起点站id | |
| 518 | + obj.zdz = d[i].zdz==null ? null : d[i].zdz.id;//终点站id | |
| 519 | + obj.isfb = isfbTodm(d[i].isFB);// 是否分班【0:false;1:true】 | |
| 520 | + obj.isSwitchXl = isSwitchXlTodm(d[i].isSwitchXl);// 是否切换线路【0:false;1:true】 | |
| 521 | + obj.STOPTIME = gettzsj(d[i],d,ddsj);// 停站时间. | |
| 522 | + resultD.push(obj); | |
| 523 | + if(lpA.indexOf(obj.lpNo)<0) { | |
| 524 | + lpA.push(obj.lpNo); | |
| 525 | + rsLpA.push({'lp':obj.lp,'lpNo':obj.lpNo,'lpName':obj.lpName,'lpType':obj.lpType}); | |
| 526 | + } | |
| 527 | + } | |
| 528 | + // 返回渲染图形的数据格式. | |
| 529 | + return {'rsD':resultD,'rsLp':rsLpA}; | |
| 530 | + } | |
| 531 | + | |
| 532 | + /** | |
| 533 | + * @description : (TODO) 获取开始与结束时间字符串. | |
| 534 | + * | |
| 535 | + * @param [map--表单配置参数] | |
| 536 | + * | |
| 537 | + * @return 返回开始与结束时间字符串集合. | |
| 538 | + * */ | |
| 539 | + function getStartAndEndDate(map) { | |
| 540 | + return {'s':getMinDate(map.line.startStationFirstTime,map.line.endStationFirstTime), | |
| 541 | + 'e':getMaxDate(map.line.startStationEndTime,map.line.endStationEndTime)} | |
| 542 | + } | |
| 543 | + | |
| 544 | + return { | |
| 545 | + // 启动初始化向导导航 | |
| 546 | + init : function() { | |
| 547 | + if(!jQuery().bootstrapWizard) {return;} | |
| 548 | + var form = $('#submit_argus_form');// 表单 | |
| 549 | + var error = $('.alert-danger',form);// 表单异常 | |
| 550 | + var success = $('.alert-success',form);// 表单成功 | |
| 551 | + /** 表单验证 */ | |
| 552 | + form.validate({ | |
| 553 | + errorElement : 'span',// 错误提示元素span对象 | |
| 554 | + errorClass : 'help-block help-block-error',// 错误提示元素class名称 | |
| 555 | + focusInvalid : true,// 验证错误获取焦点 | |
| 556 | + /** 需要验证的表单元素 */ | |
| 557 | + rules : { | |
| 558 | + 'skbName' : {required : true,},// 时刻表名称,必填项. | |
| 559 | + 'lineName' : {required : true,},// 线路名称,必填项. | |
| 560 | + 'lineVersion': {required: true}, // 站点路由版本,必填项, | |
| 561 | + // 'krl' : {isBaseRes : true,number : true,digits : true,},// 客容量,当选择为客流方式时必填项、整数 | |
| 562 | + 'startStationFirstTime' : {required : true}, // 起始站首班时间,必填项. | |
| 563 | + 'startStationEndTime' : {required : true}, // 起始站末班时间 ,必填项. | |
| 564 | + 'endStationFirstTime' : {required : true}, // 终点站首班时间 ,必填项. | |
| 565 | + 'endStationFirstTime' : {required : true}, // 终点站末班时间 ,必填项. | |
| 566 | + 'endStationEndTime' : {required : true}, // 终点站末班时间,必填项. | |
| 567 | + 'earlyStartTime' : {required : true},// 早高峰开始时间,必填项 . | |
| 568 | + 'earlyEndTime' : {required : true},// 早高峰结束时间,必填项 . | |
| 569 | + 'lateStartTime' : {required : true},// 晚高峰开始时间,必填项 . | |
| 570 | + 'lateEndTime' : {required : true},// 晚高峰结束时间,必填项. | |
| 571 | + 'zgfbeforepcs' : {required : true,number : true,digits : true, isNum0:true},// 早高峰前车辆数,必填项、必须为整数. | |
| 572 | + 'zgfpcs' : {required : true,number : true,digits : true, isNum0:true, isMax: true},// 早高峰车辆数,必填项、必须为整数. | |
| 573 | + 'wgfafterpcs' : {required : true,number : true,digits : true, isNum0:true},// 晚高峰后车俩数,必填项、必须为整数. | |
| 574 | + 'wgfpcs' : {required : true,number : true,digits : true, isNum0:true, isMax: true},// 晚高峰车俩数,必填项、必须为整数. | |
| 575 | + 'gfzjpcs' : {required : true,number : true,digits : true, isNum0:true},// 高峰中间车辆数,必填项、必须为整数. | |
| 576 | + 'upTravelTime' : {required : true,number : true},// 上行行驶时间,必填项、必须为整数. | |
| 577 | + 'downTravelTime' : {required : true,number : true},// 下行行驶时间,必填项、必须为整数. | |
| 578 | + 'upMileage' : {required : true,number : true},// 上行行驶里程,必填项、必须为整数. | |
| 579 | + 'downMileage' : {required : true,number : true},// 下行行驶里程,必填项、必须为整数. | |
| 580 | + 'upStopTime' : {required : true,number : true,digits : true},// 上行停站间隙,必填项、必须为整数. | |
| 581 | + 'downStopTime' : {required : true,number : true,digits : true},// 下行停站间隙,必填项、必须为整数. | |
| 582 | + 'maxstopTime' : {required : true,number : true,digits : true},// 最大停站间隙,必填项、必须为整数. | |
| 583 | + 'mixstopTime' : {required : true,number : true,digits : true},// 最小停站间隙,必填项、必须为整数. | |
| 584 | + 'earlyUpTime' : {number : true},// 早高峰上行时间,必须为数字. | |
| 585 | + 'earlyDownTime' : {number : true},// 早高峰下行时间,必须为数字. | |
| 586 | + 'lateUpTime' : {number : true},// 晚高峰上行时间,必须为数字. | |
| 587 | + 'lateDownTime' : {number : true},// 晚高峰下行时间,必须为数字. | |
| 588 | + 'troughUpTime' : {number : true},// 低谷上行时间,必须为数字. | |
| 589 | + 'troughDownTime' : {number : true},// 低谷下行时间,必须为数字. | |
| 590 | + 'qjUpTime' : {number : true},// 区间上行时间,必须为数字. | |
| 591 | + 'qjDownTime' : {number : true},// 区间下行时间,必须为数字. | |
| 592 | + 'kfsj' : {number : true,digits : true},// 空放行驶时间,必须为数字. | |
| 593 | + 'workeLunch' : {number : true},// 工作餐午餐时间,必须为数字. | |
| 594 | + 'workeDinner' : {number : true},// 工作餐晚餐时间,必须为数字. | |
| 595 | + 'upInTimer' : {number : true},// 上行进场时间,必须为数字. | |
| 596 | + 'upOutTimer' : {number : true},// 上行出场时间,必须为数字. | |
| 597 | + 'downInTimer' : {number : true},// 下行进场时间,必须为数字. | |
| 598 | + 'downOutTimer' : {number : true},// 下行出场时间,必须为数字. | |
| 599 | + 'upInMileage' : {number : true},// 上行进场里程,必须为数字. | |
| 600 | + 'upOutMileage' : {number : true},// 上行出场里程,必须为数字. | |
| 601 | + 'downInMileage' : {number : true},// 下行进场里程,必须为数字. | |
| 602 | + 'downOutMileage' : {number : true},// 下行出场里程,必须为数字. | |
| 603 | + 'lb' : {number : true},// 早晚例行保养,必须为数字. | |
| 604 | + 'clzs':{required : true,number : true,digits : true, isBcType : true},// 车辆总数,必填项、必须为整数. | |
| 605 | + 'bxrc' : {required : true},// 班型人次,必填项 | |
| 606 | + 'linePlayType' : {required : true},// 线路规划类型,必填项 | |
| 607 | + 'zdzcrl' : {number : true,digits : true}, | |
| 608 | + // 新增时间段字段 | |
| 609 | + 'start1' : {required : true}, | |
| 610 | + 'end1' : {required : true}, | |
| 611 | + 'start2' : {required : true}, | |
| 612 | + 'end2' : {required : true}, | |
| 613 | + 'start3' : {required : true}, | |
| 614 | + 'end3' : {required : true}, | |
| 615 | + 'start4' : {required : true}, | |
| 616 | + 'end4' : {required : true}, | |
| 617 | + 'start5' : {required : true}, | |
| 618 | + 'end5' : {required : true}, | |
| 619 | + | |
| 620 | + 'gfupStopTime' : {required : true,number : true}, // 高峰上行停站时间,必填项、必须为整数. | |
| 621 | + 'gfdownStopTime' : {required : true,number : true}, // 高峰下行停站时间,必填项、必须为整数. | |
| 622 | + 'dgupStopTime' : {required : true,number : true}, // 低谷上行停站时间,必填项、必须为整数. | |
| 623 | + 'dgdownStopTime' : {required : true,number : true}, // 低谷下行停站时间,必填项、必须为整数. | |
| 624 | + 'dgmaxfcjx' : {required : true,number : true}, // 低谷最大发车间隙,必填项、必须为整数. | |
| 625 | + 'dgmaxtzsj' : {required : true,number : true}, // 低谷最大停站时间,必填项、必须为整数. | |
| 626 | + | |
| 627 | + // 发车间隙分析用参数 | |
| 628 | + //'fcjx': {required: true}, // 时段发车间隙,TODO:貌似没发启用form验证 | |
| 629 | + 'stt': {required: true}, // 停站类型,TODO:貌似没发启用form验证 | |
| 630 | + 'zgffcjxmin' : {required : true,number : true,digits: true},// 早高峰最小发车间隔. | |
| 631 | + 'zgffcjxmax' : {required : true,number : true,digits: true},// 早高峰最大发车间隔. | |
| 632 | + 'wffcjxmin' : {required : true,number : true,digits: true},// 晚高峰最小发车间隔. | |
| 633 | + 'wffcjxmax' : {required : true,number : true,digits: true},// 晚高峰最大发车间隔. | |
| 634 | + 'dgfcjxmin' : {required : true,number : true,digits: true},// 低谷最小发车间隔. | |
| 635 | + 'dgfcjxmax' : {required : true,number : true,digits: true},// 低谷最大发车间隔. | |
| 636 | + 'gfjypcs': {required : true,number : true,digits: true}, // 高峰建议配车数 | |
| 637 | + 'jbclcount': {required : true,number : true,digits: true} // 建议加班车数 | |
| 638 | + }, | |
| 639 | + messages: { | |
| 640 | + 'zgfbeforepcs': "未获取客流数据请手动输入", | |
| 641 | + 'zgfpcs': "未获取客流数据请手动输入", | |
| 642 | + 'wgfafterpcs': "未获取客流数据请手动输入", | |
| 643 | + 'wgfpcs': "未获取客流数据请手动输入", | |
| 644 | + 'gfzjpcs': "未获取客流数据请手动输入" | |
| 645 | + }, | |
| 646 | + | |
| 647 | + /** | |
| 648 | + * 类型:Callback。当未通过验证的表单提交时,可以在该回调函数中处理一些事情。 | |
| 649 | + * | |
| 650 | + * 参数:该回调函数有两个参数:第一个为一个事件对象,第二个为验证器(validator) | |
| 651 | + */ | |
| 652 | + invalidHandler : function(event, validator) { | |
| 653 | + error.show();// 显示表单未通过提示信息 | |
| 654 | + App.scrollTo(error, -200);// 把提示信息放到指定的位置。 | |
| 655 | + }, | |
| 656 | + | |
| 657 | + /** | |
| 658 | + * 类型:Callback。 | |
| 659 | + * | |
| 660 | + * 默认:添加errorClass("has-error")到表单元素。将未通过验证的表单元素设置高亮。 | |
| 661 | + */ | |
| 662 | + highlight : function(element) { | |
| 663 | + $(element).closest('.form-group').addClass('has-error');// 添加errorClass("has-error")到表单元素 | |
| 664 | + }, | |
| 665 | + | |
| 666 | + /** | |
| 667 | + * 类型:Callback。 | |
| 668 | + * | |
| 669 | + * 默认:移除errorClass("has-error")。与highlight操作相反 | |
| 670 | + */ | |
| 671 | + unhighlight : function(element) { | |
| 672 | + $(element).closest('.form-group').removeClass('has-error');// 移除errorClass("has-error") | |
| 673 | + }, | |
| 674 | + | |
| 675 | + /** | |
| 676 | + * 类型:String,Callback。 | |
| 677 | + * | |
| 678 | + * 如果指定它,当验证通过时显示一个消息。 | |
| 679 | + * | |
| 680 | + * 如果是String类型的,则添加该样式到标签中; | |
| 681 | + * | |
| 682 | + * 如果是一个回调函数,则将标签作为其唯一的参数。 | |
| 683 | + */ | |
| 684 | + success : function(label) { | |
| 685 | + label.closest('.form-group').removeClass('has-error');// 当验证通过时,移除errorClass("has-error") | |
| 686 | + }, | |
| 687 | + | |
| 688 | + /** | |
| 689 | + * 类型:Callback。 | |
| 690 | + * | |
| 691 | + * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form | |
| 692 | + */ | |
| 693 | + submitHandler : function(f) { | |
| 694 | + // 定义localStorage对象. | |
| 695 | + var storage = window.localStorage; | |
| 696 | + // 表单序列化. | |
| 697 | + var argus = form.serializeJSON(); | |
| 698 | + console.log(argus); | |
| 699 | + // 获取站点路由. | |
| 700 | + $get('/stationroute/all',{'line.id_eq':argus.lineName.split('_')[0],'destroy_eq':0, 'versions_eq': argus.lineVersion},function(result) { | |
| 701 | + // 判断. | |
| 702 | + if(result) { | |
| 703 | + // 定义上行起点站,上行终点站,下行起点站,下行终点站. | |
| 704 | + var upB ='',upE='',downB='',downE=''; | |
| 705 | + for(var r = 0 ; r<result.length;r++) { | |
| 706 | + if(result[r].directions==0 && result[r].stationMark =='B') | |
| 707 | + upB = result[r].id; | |
| 708 | + if(result[r].directions==0 && result[r].stationMark =='E') | |
| 709 | + upE = result[r].id; | |
| 710 | + if(result[r].directions==1 && result[r].stationMark =='B') | |
| 711 | + downB = result[r].id; | |
| 712 | + if(result[r].directions==1 && result[r].stationMark =='E') | |
| 713 | + downE = result[r].id; | |
| 714 | + } | |
| 715 | + argus.up_s = upB + '_' + upE; | |
| 716 | + argus.down_s = downB + '_' + downE; | |
| 717 | + // 获取停车车场. | |
| 718 | + $get('/carpark/all',{'parkCode_eq':argus.tcc},function(cp) { | |
| 719 | + var tcc_id = ''; | |
| 720 | + if(cp) { | |
| 721 | + tcc_id = cp[0].id; | |
| 722 | + } | |
| 723 | + argus.tcc_id = tcc_id; // 停车场ID. | |
| 724 | + argus.skbmc = $('#skbNameSelect').select2('data')[0].text;// 时刻名称. | |
| 725 | + argus.xlmc = $('#lineSelect').select2('data')[0].text;// 线路名称. | |
| 726 | + // 获取时刻表明细. | |
| 727 | + $get('/tidc/all',{'ttinfo.id_eq':parseInt(argus.skbName)},function(data) { | |
| 728 | + if(data.status=='SUCCESS' && data.data.length>0) { | |
| 729 | + argus.istidc = 1; | |
| 730 | + layer.confirm('系统已存在该时刻表【'+ | |
| 731 | + $("#skbNameSelect").select2("data")[0].text + | |
| 732 | + '】明细,是否使用已有数据渲染模型?', { | |
| 733 | + btn: ['确定并使用','取消并继续'] //按钮 | |
| 734 | + }, function(){ | |
| 735 | + layer.closeAll(); | |
| 736 | + submit(formatData(data.data),argus); | |
| 737 | + }, function(){ | |
| 738 | + submit(null,argus); | |
| 739 | + }); | |
| 740 | + }else { | |
| 741 | + argus.istidc = 0; | |
| 742 | + submit(null,argus); | |
| 743 | + } | |
| 744 | + }); | |
| 745 | + }); | |
| 746 | + }else { | |
| 747 | + layer.msg('系统不存在该线路的上、下行起终点站!'); | |
| 748 | + } | |
| 749 | + }); | |
| 750 | + | |
| 751 | + // 表单提交. | |
| 752 | + function submit(p,argus) { | |
| 753 | + var baseRes2 = $('#submit_argus_form input[name="baseRes"]:checked').val();// 获取参数方式值. | |
| 754 | + if (baseRes2 == 0) { | |
| 755 | + // TODO:客流暂时有问题,直接使用现有时刻表打开,日后有机会再改好 | |
| 756 | + var skbId2 = $("#skbNameSelect").val(); | |
| 757 | + var argus2 = { | |
| 758 | + baseRes:"0",carPark:"FFFFFF68",downInMileage:"0", | |
| 759 | + downInTimer:"0",downMileage:"3.5",downOutMileage:"0", | |
| 760 | + downOutTimer:"0",downStopTime:"10",downTravelTime:"7", | |
| 761 | + down_s:"26922_26928",earlyDownTime:"7",earlyEndTime:"08:30", | |
| 762 | + earlyStartTime:"06:31",earlyUpTime:"10",endStationEndTime:"22:30", | |
| 763 | + endStationFirstTime:"05:50",gfzjpcs:"7",istidc:1,kfsj:"",krl:"50", | |
| 764 | + lateDownTime:"7",lateEndTime:"18:30",lateStartTime:"16:31", | |
| 765 | + lateUpTime:"10",lb:"15",lineName:"801702_801702_1109路", | |
| 766 | + linePlayType:"0",maxstopTime:"20",mixstopTime:"8",qjDownTime:"", | |
| 767 | + qjUpTime:"",skbName:skbId2,skbmc:"2016.4.6双时刻表", | |
| 768 | + startStationEndTime:"23:00",startStationFirstTime:"06:15",tcc_id:45,troughDownTime:"7",troughUpTime:"10",upInMileage:"0", | |
| 769 | + upInTimer:"10",upMileage:"3.5",upOutMileage:"0",upOutTimer:"10",upStopTime:"10",upTravelTime:"10", | |
| 770 | + up_s:"26912_26921",wgfafterpcs:"5",wgfpcs:"10",workeDinner:"20",workeLunch:"20",xlmc:"1109路",zgfbeforepcs:"3",zgfpcs:"10",} | |
| 771 | + // 获取时刻表明细. | |
| 772 | + $get('/tidc/all',{'ttinfo.id_eq':parseInt(argus.skbName)},function(data) { | |
| 773 | + var p = formatData(data.data,argus2); | |
| 774 | + // TODO:添加parent | |
| 775 | + for (var ii = 0; ii < p.rsD.length; ii++) { | |
| 776 | + p.rsD[ii].parent = p.rsD[ii].lpNo;// 路牌名称 | |
| 777 | + } | |
| 778 | + | |
| 779 | + argus2.istidc = 1; | |
| 780 | + var storage = window.localStorage; | |
| 781 | + storage.setItem("Gantt_AgursData",JSON.stringify(argus2)); | |
| 782 | + storage.setItem('isDoDate',JSON.stringify({'rsD':p.rsD,'rsLP':p.rsLp})); | |
| 783 | + loadPage('gantt.html'); | |
| 784 | + }); | |
| 785 | + } else { | |
| 786 | + storage.setItem("Gantt_AgursData",JSON.stringify(argus)); | |
| 787 | + if(p!=null) { | |
| 788 | + storage.setItem('isDoDate',JSON.stringify({'rsD':p.rsD,'rsLP':p.rsLp})); | |
| 789 | + }else { | |
| 790 | + storage.setItem('isDoDate',''); | |
| 791 | + } | |
| 792 | + loadPage('gantt.html'); | |
| 793 | + } | |
| 794 | + | |
| 795 | + | |
| 796 | + } | |
| 797 | + } | |
| 798 | + }); | |
| 799 | + | |
| 800 | + // 验证配车数不能为零. | |
| 801 | + $.validator.addMethod('isNum0', function(value,element) { | |
| 802 | + // 定义返回值. | |
| 803 | + var tag = true; | |
| 804 | + var zgfbeforepcs = $('#zgfbeforepcsInput').val(),// 早高峰前配车数. | |
| 805 | + zgfpcs = $('#zgfpcsInput').val(),// 早高峰配车数. | |
| 806 | + gfzjpcs = $('#gfzjpcsInput').val(),// 高峰之间配车数. | |
| 807 | + wgfpcs = $('#wgfpcsInput').val(),// 晚高峰配车数. | |
| 808 | + wgfafterpcs = $('#wgfafterpcsInput').val();// 晚高峰后配车数. | |
| 809 | + // 判断是否为零. | |
| 810 | + if(parseInt(zgfbeforepcs) == 0 || parseInt(zgfbeforepcs) ==0 || | |
| 811 | + parseInt(gfzjpcs) ==0 || parseInt(wgfpcs) ==0 || parseInt(wgfafterpcs) ==0) | |
| 812 | + tag = false; | |
| 813 | + return tag; | |
| 814 | + },function(){return '配车数不能为零!'; }); | |
| 815 | + | |
| 816 | + // 验证高峰时段内的配车数是否高于其它时段配车数. | |
| 817 | + $.validator.addMethod('isMax', function(value,element) { | |
| 818 | + var tag = true; | |
| 819 | + var zgfbeforepcs = parseInt($('#zgfbeforepcsInput').val()),// 早高峰前配车数. | |
| 820 | + zgfpcs = parseInt($('#zgfpcsInput').val()),// 早高峰配车数. | |
| 821 | + gfzjpcs = parseInt($('#gfzjpcsInput').val()),// 高峰之间配车数. | |
| 822 | + wgfpcs = parseInt($('#wgfpcsInput').val()),// 晚高峰配车数. | |
| 823 | + wgfafterpcs = parseInt($('#wgfafterpcsInput').val());// 晚高峰后配车数. | |
| 824 | + // 判断高峰时段内的配车数是否高于其它时段配车数. | |
| 825 | + if(zgfpcs<zgfbeforepcs || zgfpcs<gfzjpcs || zgfpcs<wgfafterpcs || wgfpcs<zgfbeforepcs || wgfpcs<gfzjpcs || wgfpcs<wgfafterpcs ) | |
| 826 | + tag = false; | |
| 827 | + return tag; | |
| 828 | + },function(){return '高峰时段配车数必须高于其它时段配车数!';}); | |
| 829 | + | |
| 830 | + // 验证客流数据分析时客容量为必填项. | |
| 831 | + /*$.validator.addMethod("isBaseRes", function(value,element) { | |
| 832 | + // 定义返回值. | |
| 833 | + var tag = true; | |
| 834 | + // 定义选择获取参数方式值 | |
| 835 | + var baseChecked = $('#submit_argus_form input[name="baseRes"]:checked').val(); | |
| 836 | + // 判断 | |
| 837 | + if(baseChecked == '0' && $('#krlInput').val()== '') | |
| 838 | + tag = false; | |
| 839 | + return tag; | |
| 840 | + }, '客流大数据分析,客流总量为必填项!'); | |
| 841 | + */ | |
| 842 | + // 验证配车总数与班型人次搭配 | |
| 843 | + $.validator.addMethod('isBcType', function(value,element) { | |
| 844 | + // 定义返回值. | |
| 845 | + var tag = true; | |
| 846 | + // 定义车辆总数,班型人次. | |
| 847 | + var clzs = $('#clzsInput').val(), | |
| 848 | + bxrc = $('#state_tagsinput').val(); | |
| 849 | + // 判断. | |
| 850 | + if(bxrc=='' || bxrc==null || clzs=='' || clzs==0) | |
| 851 | + return false; | |
| 852 | + var bxrcAr = bxrc.split(','),pczs = 0; | |
| 853 | + for(var s = 0 ; s< bxrcAr.length;s++) { | |
| 854 | + // 切割单个班型人次. | |
| 855 | + pczs = pczs + parseInt(bxrcAr[s].split('/')[2]); | |
| 856 | + } | |
| 857 | + if(pczs!=clzs) | |
| 858 | + tag = false; | |
| 859 | + /** | |
| 860 | + // 定义首末班次开始结束时间集合. | |
| 861 | + var map = {'line':{'startStationFirstTime':$('#qdzsbsjInput').val(), | |
| 862 | + 'startStationEndTime':$('#qdzmbsjInput').val(), | |
| 863 | + 'endStationFirstTime':$('#zdzsbsjInput').val(), | |
| 864 | + 'endStationEndTime':$('#zdzmbsjInput').val()}}; | |
| 865 | + // 定义开始~结束时间. | |
| 866 | + var setMap = getStartAndEndDate(map); | |
| 867 | + // 定义最大工时. | |
| 868 | + var maxGs = parseInt( ((strToTime(setMap.e) - strToTime(setMap.s)) / 60000) / 60) * parseInt(clzs); | |
| 869 | + // 切割班型人次,定义班次人次所用总工时. | |
| 870 | + var bxrcAr = bxrc.split(','),countGs = 0,countRc = 0; | |
| 871 | + // 遍历 | |
| 872 | + for(var s = 0 ; s< bxrcAr.length;s++) { | |
| 873 | + // 切割单个班型人次. | |
| 874 | + var s1a = bxrcAr[s].split('/'); | |
| 875 | + // 定义人次. | |
| 876 | + var rs = parseInt(s1a[1]); | |
| 877 | + // 定义小时系数. | |
| 878 | + var hoursV = 0.0; | |
| 879 | + for(var g = 0 ; g < bxrcGs.length; g++) { | |
| 880 | + // 判断班型是否一致. | |
| 881 | + if(bxrcGs[g].type == s1a[0]) { | |
| 882 | + // 重新赋值小时系数. | |
| 883 | + hoursV = bxrcGs[g].hoursV; | |
| 884 | + } | |
| 885 | + } | |
| 886 | + // 重新计算班次人次所用总工时. | |
| 887 | + countGs = countGs + parseFloat(hoursV.toFixed(2)) * rs; | |
| 888 | + countRc = countRc + rs; | |
| 889 | + } | |
| 890 | + // 判断 | |
| 891 | + if(parseFloat(countGs.toFixed(2))>maxGs || (bxrcAr.length==1 && countRc > parseInt(clzs)) ) | |
| 892 | + tag = false; | |
| 893 | + */ | |
| 894 | + return tag; | |
| 895 | + },function(){return '配车总数与【班型/人次/车辆】搭配不合理!'; }); | |
| 896 | + | |
| 897 | + /** | |
| 898 | + * @description : (TODO) 监听获取参数方式值改变事件. | |
| 899 | + * | |
| 900 | + * */ | |
| 901 | + /*$('input:radio[name="baseRes"]').on('change',function(v) { | |
| 902 | + if($(this).val()=='1') | |
| 903 | + $('#krlGroup').hide(); | |
| 904 | + else if($(this).val()=='0') | |
| 905 | + $('#krlGroup').show(); | |
| 906 | + });*/ | |
| 907 | + | |
| 908 | + // 确认提交信息 | |
| 909 | + var displayConfirm = function() { | |
| 910 | + // 遍历表单元素下的tab4的class名称为form-control-static | |
| 911 | + $('#tab4 .form-control-static', form).each(function(){ | |
| 912 | + var input = $('[name="'+$(this).attr("data-display")+'"]', form);// 定义input | |
| 913 | + if (input.is(":radio")) { | |
| 914 | + input = $('[name="'+$(this).attr("data-display")+'"]:checked', form); | |
| 915 | + } | |
| 916 | + if (input.is(":text") || input.is("textarea")) { | |
| 917 | + $(this).html(input.val()); | |
| 918 | + } else if (input.is("select")) { | |
| 919 | + $(this).html(input.find('option:selected').text()); | |
| 920 | + } else if (input.is(":radio") && input.is(":checked")) { | |
| 921 | + $(this).html(input.attr("data-title")); | |
| 922 | + } else if ($(this).attr("data-display") == 'payment[]') { | |
| 923 | + var payment = []; | |
| 924 | + $('[name="payment[]"]:checked', form).each(function(){ | |
| 925 | + payment.push($(this).attr('data-title')); | |
| 926 | + }); | |
| 927 | + $(this).html(payment.join("<br>")); | |
| 928 | + } | |
| 929 | + }); | |
| 930 | + }; | |
| 931 | + | |
| 932 | + /** 按钮点击时触发 */ | |
| 933 | + var handleTitle = function(tab, navigation, index) { | |
| 934 | + var total = navigation.find('li').length;// 定义导航条标签个数 | |
| 935 | + var current = index + 1;// 当前标签页 | |
| 936 | + $('.step-title', $('#form-wizard-info')).text((index + 1) + ' - ' + total); // 设置向导标题 | |
| 937 | + jQuery('li', $('#form-wizard-info')).removeClass("done"); // 删除"done"样式 | |
| 938 | + var li_list = navigation.find('li');// 获取导航标签元素集合 | |
| 939 | + for (var i = 0; i < index; i++) { | |
| 940 | + jQuery(li_list[i]).addClass("done");// 追加done样式 | |
| 941 | + } | |
| 942 | + /** 如果为第一步隐藏返回按钮,否则显示返回按钮. */ | |
| 943 | + if (current == 1) { | |
| 944 | + $('#submit_argus_form').find('.button-previous').hide();// 隐藏返回按钮 | |
| 945 | + } else { | |
| 946 | + $('#submit_argus_form').find('.button-previous').show();// 显示返回按钮 | |
| 947 | + } | |
| 948 | + | |
| 949 | + /** 如果为最后一步显示提交按钮,隐藏下一步按钮,否则隐藏提交按钮,显示下一步按钮 */ | |
| 950 | + if (current >= total) { | |
| 951 | + $('#submit_argus_form').find('.button-next').hide();// 隐藏下一步按钮 | |
| 952 | + $('#submit_argus_form').find('.button-submit').show();// 显示提交按钮 | |
| 953 | + displayConfirm(); // 确认提交信息 | |
| 954 | + } else { | |
| 955 | + $('#submit_argus_form').find('.button-next').show();// 显示下一步按钮 | |
| 956 | + $('#submit_argus_form').find('.button-submit').hide();// 隐藏提交按钮 | |
| 957 | + } | |
| 958 | + App.scrollTo($('.page-title'));// 移动到指定位置 | |
| 959 | + }; | |
| 960 | + | |
| 961 | + // 表单导航向导插件 | |
| 962 | + $('#submit_argus_form').bootstrapWizard({ | |
| 963 | + 'nextSelector': '.button-next',// 下一步元素选择器 | |
| 964 | + 'previousSelector': '.button-previous',// 返回元素选择器 | |
| 965 | + /** 当一个导航标签被点击,返回错误的移动到该选项卡,并显示它的内容. */ | |
| 966 | + onTabClick: function (tab, navigation, index, clickedIndex) { | |
| 967 | + return false; | |
| 968 | + success.hide(); | |
| 969 | + error.hide(); | |
| 970 | + if (form.valid() == false) { | |
| 971 | + return false; | |
| 972 | + } | |
| 973 | + handleTitle(tab, navigation, clickedIndex); | |
| 974 | + }, | |
| 975 | + /** 下一步按钮被单击时触发, 返回移动到下一个步骤. */ | |
| 976 | + onNext: function (tab, navigation, index) { | |
| 977 | + success.hide(); | |
| 978 | + error.hide(); | |
| 979 | + if (form.valid() == false) { | |
| 980 | + return false; | |
| 981 | + } | |
| 982 | + /*if(index==1) { | |
| 983 | + // 初始化客容量值. | |
| 984 | + if($('#krlInput').val() == '') | |
| 985 | + $('#krlInput').val(50); | |
| 986 | + }else */if(index == 2) { | |
| 987 | + var baseRes = $('#submit_argus_form input[name="baseRes"]:checked').val(),// 获取参数方式值. | |
| 988 | + lineId = $('#lineSelect').val().split('_')[0],// 线路ID. | |
| 989 | + krl = 50; | |
| 990 | + // krl = $('#krlInput').val();// 客容量 | |
| 991 | + // 弹出正在加载层 | |
| 992 | + var i = layer.load(2); | |
| 993 | + getLineInfo(lineId,function(r) { | |
| 994 | + getHtmlTemp(baseRes,r.content[0],lineId,krl,function(htlMap) { | |
| 995 | + $('#tab3').html(htlMap.forminput); | |
| 996 | + $('#tab4').html(htlMap.datadisplay); | |
| 997 | + | |
| 998 | + if (baseRes == 0) { // 客流大数据分析 | |
| 999 | + $('#linePlayTypeSelect').val(r.content[0].line.linePlayType); | |
| 1000 | + // 停站类型选择控件 | |
| 1001 | + ComponentsBootstrapTagsinput.init_stoptype(); | |
| 1002 | + // 日期控件 | |
| 1003 | + $('#qdzsbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 起始站首班时间 | |
| 1004 | + $('#qdzmbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 起始站末班时间 | |
| 1005 | + $('#zdzsbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 终点站首班时间 | |
| 1006 | + $('#zdzmbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 终点站末班时间 | |
| 1007 | + $('#zgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰开始时间 | |
| 1008 | + $('#zgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰结束时间 | |
| 1009 | + $('#wgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰开始时间 | |
| 1010 | + $('#wgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰结束时间 | |
| 1011 | + // 初始化停车场下拉框. | |
| 1012 | + gettccInfo(function(cd) { | |
| 1013 | + var options = '<option value="">请选择...</option><optgroup label="停车场">'; | |
| 1014 | + var $_len = cd.length; | |
| 1015 | + if($_len>0) { | |
| 1016 | + $.each(cd, function(i, d){ | |
| 1017 | + options += '<option value="'+d.parkCode+'">'+d.parkName+'</option>'; | |
| 1018 | + }); | |
| 1019 | + | |
| 1020 | + } | |
| 1021 | + options += '</optgroup>'; | |
| 1022 | + $('#carParkSelect').html(options).select2(); | |
| 1023 | + $('#carParkSelect').select2("val",r.content[0].carPark); | |
| 1024 | + // 关闭弹出加载层 | |
| 1025 | + layer.close(i); | |
| 1026 | + }); | |
| 1027 | + | |
| 1028 | + } else if (baseRes == 1) { // 班次/人次/车辆 | |
| 1029 | + $('#linePlayTypeSelect').val(r.content[0].line.linePlayType); | |
| 1030 | + ComponentsBootstrapTagsinput.init();// 初始化班型人次Input Tag. | |
| 1031 | + // 停站类型选择控件 | |
| 1032 | + ComponentsBootstrapTagsinput.init_stoptype(); | |
| 1033 | + // 日期控件 | |
| 1034 | + $('#qdzsbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 起始站首班时间 | |
| 1035 | + $('#qdzmbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 起始站末班时间 | |
| 1036 | + $('#zdzsbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 终点站首班时间 | |
| 1037 | + $('#zdzmbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 终点站末班时间 | |
| 1038 | + $('#zgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰开始时间 | |
| 1039 | + $('#zgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰结束时间 | |
| 1040 | + $('#wgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰开始时间 | |
| 1041 | + $('#wgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰结束时间 | |
| 1042 | + $('#startInput1').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1043 | + $('#endInput1').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1044 | + $('#startInput2').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1045 | + $('#endInput2').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1046 | + $('#startInput3').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1047 | + $('#endInput3').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1048 | + $('#startInput4').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1049 | + $('#endInput4').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1050 | + $('#startInput5').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1051 | + $('#endInput5').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1052 | + // 初始化停车场下拉框. | |
| 1053 | + gettccInfo(function(cd) { | |
| 1054 | + var options = '<option value="">请选择...</option><optgroup label="停车场">'; | |
| 1055 | + var $_len = cd.length; | |
| 1056 | + if($_len>0) { | |
| 1057 | + $.each(cd, function(i, d){ | |
| 1058 | + options += '<option value="'+d.parkCode+'">'+d.parkName+'</option>'; | |
| 1059 | + }); | |
| 1060 | + | |
| 1061 | + } | |
| 1062 | + options += '</optgroup>'; | |
| 1063 | + $('#carParkSelect').html(options).select2(); | |
| 1064 | + $('#carParkSelect').select2("val",r.content[0].carPark); | |
| 1065 | + // 关闭弹出加载层 | |
| 1066 | + layer.close(i); | |
| 1067 | + }); | |
| 1068 | + | |
| 1069 | + } else if (baseRes == 2 || baseRes == 3) { // 发车间隔分析 | |
| 1070 | + // 上下行首末班日期控件 | |
| 1071 | + $('#startStationFirstTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1072 | + $('#startStationEndTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1073 | + $('#endStationFirstTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1074 | + $('#endStationEndTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1075 | + | |
| 1076 | + // 早高峰晚高峰日期控件 | |
| 1077 | + $('#earlyStartTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1078 | + $('#earlyEndTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1079 | + $('#lateStartTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1080 | + $('#lateEndTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 1081 | + | |
| 1082 | + // 线路规划类型日期控件 | |
| 1083 | + $('#linePlayType_id').val(r.content[0].line.linePlayType); | |
| 1084 | + | |
| 1085 | + // 停车场下拉框控件 | |
| 1086 | + gettccInfo(function(cd) { | |
| 1087 | + var options = '<option value="">请选择...</option><optgroup label="停车场">'; | |
| 1088 | + var $_len = cd.length; | |
| 1089 | + if($_len>0) { | |
| 1090 | + $.each(cd, function(i, d){ | |
| 1091 | + options += '<option value="'+d.parkCode+'">'+d.parkName+'</option>'; | |
| 1092 | + }); | |
| 1093 | + | |
| 1094 | + } | |
| 1095 | + options += '</optgroup>'; | |
| 1096 | + $('#carPark_id').html(options).select2(); | |
| 1097 | + $('#carPark_id').select2("val",r.content[0].carPark); | |
| 1098 | + // 关闭弹出加载层 | |
| 1099 | + layer.close(i); | |
| 1100 | + }); | |
| 1101 | + | |
| 1102 | + // 发车间隙选择控件 | |
| 1103 | + //ComponentsBootstrapTagsinput.init_fcjx(); | |
| 1104 | + // 停站类型选择控件 | |
| 1105 | + ComponentsBootstrapTagsinput.init_stoptype(); | |
| 1106 | + | |
| 1107 | + // TODO:发车间隔分析参数设置 | |
| 1108 | + | |
| 1109 | + layer.close(i); | |
| 1110 | + } | |
| 1111 | + | |
| 1112 | + }); | |
| 1113 | + }); | |
| 1114 | + } | |
| 1115 | + handleTitle(tab, navigation, index); | |
| 1116 | + }, | |
| 1117 | + /** 上一步按钮被单击时触发,返回移动到前一个步骤 */ | |
| 1118 | + onPrevious: function (tab, navigation, index) { | |
| 1119 | + success.hide(); | |
| 1120 | + error.hide(); | |
| 1121 | + handleTitle(tab, navigation, index); | |
| 1122 | + }, | |
| 1123 | + /** 显示选项卡内容 */ | |
| 1124 | + onTabShow: function (tab, navigation, index) { | |
| 1125 | + var total = navigation.find('li').length; | |
| 1126 | + var current = index + 1; | |
| 1127 | + var $percent = (current / total) * 100; | |
| 1128 | + $('#submit_argus_form').find('.progress-bar').css({ | |
| 1129 | + width: $percent + '%' | |
| 1130 | + }); | |
| 1131 | + | |
| 1132 | + } | |
| 1133 | + | |
| 1134 | + }); | |
| 1135 | + // 初始化第一步隐藏返回按钮 | |
| 1136 | + $('#submit_argus_form').find('.button-previous').hide(); | |
| 1137 | + } | |
| 1138 | + } | |
| 1139 | +}(); | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/systemTools.js
| ... | ... | @@ -42,7 +42,7 @@ $('.addBc').on('click',function() { |
| 42 | 42 | var lpData = echartsDrawGTT.getLpData(); |
| 43 | 43 | var lpDataCount = echartsDrawGTT.getLpDataCount(); |
| 44 | 44 | // 弹出层mobal页面 |
| 45 | - $.get('/pages/base/timesmodel/fragments/addBc.html', function(m){ | |
| 45 | + $.get('/pages/base/timesmodel/fragments/addbc.html', function(m){ | |
| 46 | 46 | $(pjaxContainer).append(m); |
| 47 | 47 | // 规定被选元素要触发的事件。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。 |
| 48 | 48 | $('#addBc_mobal').trigger('addBcMobal.show',[lpData,lpDataCount,echartsDrawGTT]); | ... | ... |
src/main/resources/static/pages/base/timesmodel/tepms/fcjx_temp.html
| ... | ... | @@ -237,24 +237,24 @@ |
| 237 | 237 | <div class="col-md-6"> |
| 238 | 238 | <label class="control-label col-md-5"><span class="required"> * </span>早高峰发车间隔 :</label> |
| 239 | 239 | <div class="col-md-3" style="padding-right: 0px;"> |
| 240 | - <input type="text" class="form-control" value="20" name="zgffcjxmin" id="zgffcjxmin_id" | |
| 240 | + <input type="text" class="form-control" value="8" name="zgffcjxmin" id="zgffcjxmin_id" | |
| 241 | 241 | placeholder="最小间隔"> |
| 242 | 242 | </div> |
| 243 | 243 | <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div> |
| 244 | 244 | <div class="col-md-3" style="padding-left: 0px;"> |
| 245 | - <input type="text" class="form-control" value="25" name="zgffcjxmax" id="zgffcjxmax_id" | |
| 245 | + <input type="text" class="form-control" value="8" name="zgffcjxmax" id="zgffcjxmax_id" | |
| 246 | 246 | placeholder="最大间隔"> |
| 247 | 247 | </div> |
| 248 | 248 | </div> |
| 249 | 249 | <div class="col-md-6"> |
| 250 | 250 | <label class="control-label col-md-5"><span class="required"> * </span>晚高峰发车间隔 :</label> |
| 251 | 251 | <div class="col-md-3" style="padding-right: 0px;"> |
| 252 | - <input type="text" class="form-control" value="20" name="wffcjxmin" id="wffcjxmin_id" | |
| 252 | + <input type="text" class="form-control" value="8" name="wffcjxmin" id="wffcjxmin_id" | |
| 253 | 253 | placeholder="最小间隔"> |
| 254 | 254 | </div> |
| 255 | 255 | <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div> |
| 256 | 256 | <div class="col-md-3" style="padding-left: 0px;"> |
| 257 | - <input type="text" class="form-control" value="25" name="wffcjxmax" id="wffcjxmax_id" | |
| 257 | + <input type="text" class="form-control" value="8" name="wffcjxmax" id="wffcjxmax_id" | |
| 258 | 258 | placeholder="最大间隔"> |
| 259 | 259 | </div> |
| 260 | 260 | </div> |
| ... | ... | @@ -264,12 +264,12 @@ |
| 264 | 264 | <div class="col-md-6"> |
| 265 | 265 | <label class="control-label col-md-5"><span class="required"> * </span>低谷发车间隔 :</label> |
| 266 | 266 | <div class="col-md-3" style="padding-right: 0px;"> |
| 267 | - <input type="text" class="form-control" value="20" name="dgfcjxmin" id="dgfcjxmin_id" | |
| 267 | + <input type="text" class="form-control" value="10" name="dgfcjxmin" id="dgfcjxmin_id" | |
| 268 | 268 | placeholder="最小间隔"> |
| 269 | 269 | </div> |
| 270 | 270 | <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div> |
| 271 | 271 | <div class="col-md-3" style="padding-left: 0px;"> |
| 272 | - <input type="text" class="form-control" value="25" name="dgfcjxmax" id="dgfcjxmax_id" | |
| 272 | + <input type="text" class="form-control" value="20" name="dgfcjxmax" id="dgfcjxmax_id" | |
| 273 | 273 | placeholder="最大间隔"> |
| 274 | 274 | </div> |
| 275 | 275 | </div> |
| ... | ... | @@ -284,25 +284,6 @@ |
| 284 | 284 | |
| 285 | 285 | <div class="form-group"> |
| 286 | 286 | <div class="col-md-6"> |
| 287 | - <label class="control-label col-md-5">建议套跑路牌数 :</label> | |
| 288 | - <div class="col-md-5"> | |
| 289 | - <input type="text" class="form-control" name="workeLunch" value="5" id="temp1" | |
| 290 | - placeholder="请输入建议套跑路牌"> | |
| 291 | - </div> | |
| 292 | - </div> | |
| 293 | - | |
| 294 | - <div class="col-md-6"> | |
| 295 | - <label class="control-label col-md-5"> | |
| 296 | - <span class="required"> * </span> 建议高峰配车数 :</label> | |
| 297 | - <div class="col-md-5"> | |
| 298 | - <input type="text" class="form-control" value="10" placeholder="车辆数" name="gfjypcs" id="gfjypcsInput" min="1"> | |
| 299 | - </div> | |
| 300 | - </div> | |
| 301 | - | |
| 302 | - </div> | |
| 303 | - | |
| 304 | - <div class="form-group"> | |
| 305 | - <div class="col-md-6"> | |
| 306 | 287 | <label class="control-label col-md-5"><span class="required"> * </span>停站类型 :</label> |
| 307 | 288 | <div class="col-md-5 tagsDiv"> |
| 308 | 289 | <div class="row" style="margin-left: 15px;"> |
| ... | ... | @@ -337,13 +318,15 @@ |
| 337 | 318 | </div> |
| 338 | 319 | |
| 339 | 320 | </div> |
| 321 | + | |
| 340 | 322 | <div class="col-md-6"> |
| 341 | - <label class="control-label col-md-5">充电时间 :</label> | |
| 323 | + <label class="control-label col-md-5"> | |
| 324 | + <span class="required"> * </span> 建议高峰配车数 :</label> | |
| 342 | 325 | <div class="col-md-5"> |
| 343 | - <input type="text" class="form-control" name="workeDinner" value="20" id="temp2" | |
| 344 | - placeholder="请输入充电时间"> | |
| 326 | + <input type="text" class="form-control" value="1" placeholder="车辆数" name="gfjypcs" id="gfjypcsInput" min="1"> | |
| 345 | 327 | </div> |
| 346 | 328 | </div> |
| 329 | + | |
| 347 | 330 | </div> |
| 348 | 331 | |
| 349 | 332 | <!-- 隐藏字段-时间 --> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/list.html
| ... | ... | @@ -192,7 +192,7 @@ |
| 192 | 192 | <a ui-sref="ttInfoDetailManage_edit3({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name, rflag : true, lineversion : info.lineVersion})" |
| 193 | 193 | class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 编辑 </a> |
| 194 | 194 | <a ng-click="ctrl.toTtInfoDetailAuto(info.id)" |
| 195 | - class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 生成 </a> | |
| 195 | + class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 排班优化 </a> | |
| 196 | 196 | <a ui-sref="ttInfoDetailManage_form({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})" |
| 197 | 197 | class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 导入 </a> |
| 198 | 198 | <a href="javascript:" class="btn btn-info btn-sm" ng-click="ctrl.exportData(info.id)"> 导出 </a> | ... | ... |
src/main/resources/static/pages/zndd_yuan/DKL.html
| ... | ... | @@ -182,8 +182,8 @@ |
| 182 | 182 | id: 'card4', |
| 183 | 183 | x: 100, |
| 184 | 184 | y: 400, |
| 185 | - label: '待发调整', | |
| 186 | - type: "待发调整", | |
| 185 | + label: '待发调整工具', | |
| 186 | + type: "待发调整工具", | |
| 187 | 187 | nodes: [{ |
| 188 | 188 | type: "in", |
| 189 | 189 | level: 0, |
| ... | ... | @@ -199,13 +199,35 @@ |
| 199 | 199 | } |
| 200 | 200 | ], |
| 201 | 201 | titleBarColor: ['#3950e8', '#25f6d0'] |
| 202 | - }, | |
| 202 | + }, | |
| 203 | 203 | { |
| 204 | 204 | id: 'card5', |
| 205 | 205 | x: 100, |
| 206 | 206 | y: 400, |
| 207 | - label: '班次取消(烂班)', | |
| 208 | - type: "班次取消(烂班)", | |
| 207 | + label: '班次取消(烂班)工具', | |
| 208 | + type: "班次取消(烂班)工具", | |
| 209 | + nodes: [{ | |
| 210 | + type: "in", | |
| 211 | + level: 0, | |
| 212 | + enumType: 'call', | |
| 213 | + color: '#fff', | |
| 214 | + | |
| 215 | + }, | |
| 216 | + { | |
| 217 | + type: "out", | |
| 218 | + level: 0, | |
| 219 | + enumType: 'call', | |
| 220 | + color: '#3C8CE7', | |
| 221 | + } | |
| 222 | + ], | |
| 223 | + titleBarColor: ['#3950e8', '#25f6d0'] | |
| 224 | + }, | |
| 225 | + { | |
| 226 | + id: 'card51', | |
| 227 | + x: 100, | |
| 228 | + y: 400, | |
| 229 | + label: '撤销班次取消(烂班)工具', | |
| 230 | + type: "撤销班次取消(烂班)工具", | |
| 209 | 231 | nodes: [{ |
| 210 | 232 | type: "in", |
| 211 | 233 | level: 0, |
| ... | ... | @@ -226,8 +248,30 @@ |
| 226 | 248 | id: 'card6', |
| 227 | 249 | x: 100, |
| 228 | 250 | y: 400, |
| 229 | - label: '实发调整', | |
| 230 | - type: "实发调整", | |
| 251 | + label: '实发调整工具', | |
| 252 | + type: "实发调整工具", | |
| 253 | + nodes: [{ | |
| 254 | + type: "in", | |
| 255 | + level: 0, | |
| 256 | + enumType: 'call', | |
| 257 | + color: '#fff', | |
| 258 | + | |
| 259 | + }, | |
| 260 | + { | |
| 261 | + type: "out", | |
| 262 | + level: 0, | |
| 263 | + enumType: 'call', | |
| 264 | + color: '#3C8CE7', | |
| 265 | + } | |
| 266 | + ], | |
| 267 | + titleBarColor: ['#3950e8', '#25f6d0'] | |
| 268 | + }, | |
| 269 | + { | |
| 270 | + id: 'card7', | |
| 271 | + x: 100, | |
| 272 | + y: 400, | |
| 273 | + label: '实发撤销工具', | |
| 274 | + type: "实发撤销工具", | |
| 231 | 275 | nodes: [{ |
| 232 | 276 | type: "in", |
| 233 | 277 | level: 0, |
| ... | ... | @@ -248,8 +292,8 @@ |
| 248 | 292 | id: 'card7', |
| 249 | 293 | x: 100, |
| 250 | 294 | y: 400, |
| 251 | - label: '实发撤销', | |
| 252 | - type: "实发撤销", | |
| 295 | + label: '发车信息微调工具', | |
| 296 | + type: "发车信息微调工具", | |
| 253 | 297 | nodes: [{ |
| 254 | 298 | type: "in", |
| 255 | 299 | level: 0, |
| ... | ... | @@ -270,8 +314,8 @@ |
| 270 | 314 | id: 'card8', |
| 271 | 315 | x: 100, |
| 272 | 316 | y: 400, |
| 273 | - label: '新增临加班次', | |
| 274 | - type: "新增临加班次", | |
| 317 | + label: '新增临加班次工具', | |
| 318 | + type: "新增临加班次工具", | |
| 275 | 319 | nodes: [{ |
| 276 | 320 | type: "in", |
| 277 | 321 | level: 0, |
| ... | ... | @@ -292,8 +336,8 @@ |
| 292 | 336 | id: 'card9', |
| 293 | 337 | x: 100, |
| 294 | 338 | y: 400, |
| 295 | - label: '调整人车', | |
| 296 | - type: "调整人车", | |
| 339 | + label: '调整人车工具', | |
| 340 | + type: "调整人车工具", | |
| 297 | 341 | nodes: [{ |
| 298 | 342 | type: "in", |
| 299 | 343 | level: 0, |
| ... | ... | @@ -314,8 +358,8 @@ |
| 314 | 358 | id: 'card10', |
| 315 | 359 | x: 100, |
| 316 | 360 | y: 400, |
| 317 | - label: '指令重发', | |
| 318 | - type: "指令重发", | |
| 361 | + label: '指令重发工具', | |
| 362 | + type: "指令重发工具", | |
| 319 | 363 | nodes: [{ |
| 320 | 364 | type: "in", |
| 321 | 365 | level: 0, |
| ... | ... | @@ -336,8 +380,8 @@ |
| 336 | 380 | id: 'card11', |
| 337 | 381 | x: 100, |
| 338 | 382 | y: 400, |
| 339 | - label: '路牌对调', | |
| 340 | - type: "路牌对调", | |
| 383 | + label: '路牌对调工具', | |
| 384 | + type: "路牌对调工具", | |
| 341 | 385 | nodes: [{ |
| 342 | 386 | type: "in", |
| 343 | 387 | level: 0, |
| ... | ... | @@ -358,8 +402,8 @@ |
| 358 | 402 | id: 'card12', |
| 359 | 403 | x: 100, |
| 360 | 404 | y: 400, |
| 361 | - label: '误点调整', | |
| 362 | - type: "误点调整", | |
| 405 | + label: '误点调整工具', | |
| 406 | + type: "误点调整工具", | |
| 363 | 407 | nodes: [{ |
| 364 | 408 | type: "in", |
| 365 | 409 | level: 0, | ... | ... |
src/main/resources/static/real_control_v2/js/main.js
| ... | ... | @@ -30,7 +30,7 @@ var gb_main_ep = new EventProxy(), |
| 30 | 30 | //判断如果用户按下了回车键(keycody=13) |
| 31 | 31 | if (keyNum == 13) { |
| 32 | 32 | fired = true; |
| 33 | - debugger | |
| 33 | + | |
| 34 | 34 | let lineCode = gb_schedule_table.TablelineCode; |
| 35 | 35 | document.getElementById("recidress").style.display = 'none'; |
| 36 | 36 | recorder.upload("zndd/do/"+lineCode, function (state, e) { | ... | ... |
src/main/resources/static/real_control_v2/js/north/toolbar.js
| ... | ... | @@ -37,18 +37,23 @@ var gb_northToolbar = (function () { |
| 37 | 37 | $('.north .north-toolbar .exit-system').on('click', function () { |
| 38 | 38 | //调度员退出时提示未全部完成班次的线路 |
| 39 | 39 | //默认只取一个角色 |
| 40 | - debugger | |
| 41 | 40 | if(user.roles[0].codeName == "LG_DDY" || user.roles[0].codeName == "LG_GLY"){ |
| 42 | 41 | //提示未完成线路 搜索该用户下所有的线路 判断是否完成 |
| 43 | 42 | $.get('/logZndd/LineUserAll', {userId: user.id}, function (rs) { |
| 44 | - notify_err(rs+"班次还有未完成"); | |
| 45 | - layer.confirm('班次还有未完成,是否要退出线调?', { | |
| 46 | - btn: ['确定','取消'] //按钮 | |
| 47 | - }, function(){ | |
| 43 | + if(rs.length > 0){ | |
| 44 | + notify_err(rs+"班次还有未完成"); | |
| 45 | + layer.confirm('班次还有未完成,是否要退出线调?', { | |
| 46 | + btn: ['确定','取消'] //按钮 | |
| 47 | + }, function(){ | |
| 48 | + gb_sch_websocket.sock().close(1000, '退出线调'); | |
| 49 | + window.location.href = '/pages/control/lineallot_v2/iframe_wrap.html'; | |
| 50 | + }, function(){ | |
| 51 | + }); | |
| 52 | + }else { | |
| 53 | + //关闭websocket 连接 | |
| 48 | 54 | gb_sch_websocket.sock().close(1000, '退出线调'); |
| 49 | 55 | window.location.href = '/pages/control/lineallot_v2/iframe_wrap.html'; |
| 50 | - }, function(){ | |
| 51 | - }); | |
| 56 | + } | |
| 52 | 57 | }) |
| 53 | 58 | }else { |
| 54 | 59 | //关闭websocket 连接 | ... | ... |
src/main/resources/static/real_control_v2/js/stationcf/klyj.js
src/main/resources/static/real_control_v2/js/zndd/recorder/recorder.js
| ... | ... | @@ -212,7 +212,13 @@ |
| 212 | 212 | } |
| 213 | 213 | else if(responseText[1]=="2"){//新增出场班次 |
| 214 | 214 | if(schId==''){ |
| 215 | - notify_err("请选择班次"); | |
| 215 | + var sch ={ | |
| 216 | + xlBm : lineCode | |
| 217 | + } | |
| 218 | + var fun =gb_schedule_context_menu.add_temp_sch_v2; | |
| 219 | + fun(sch, function () { | |
| 220 | + confirmBtn.trigger('click'); | |
| 221 | + }); | |
| 216 | 222 | return; |
| 217 | 223 | } |
| 218 | 224 | var sch = gb_schedule_table.findScheduleByLine(lineCode)[schId]; |
| ... | ... | @@ -229,7 +235,13 @@ |
| 229 | 235 | } |
| 230 | 236 | else if(responseText[1]=="3"){//新增班次 |
| 231 | 237 | if(schId==''){ |
| 232 | - notify_err("请选择班次"); | |
| 238 | + var sch ={ | |
| 239 | + xlBm : lineCode | |
| 240 | + } | |
| 241 | + var fun =gb_schedule_context_menu.add_temp_sch_v2; | |
| 242 | + fun(sch, function () { | |
| 243 | + confirmBtn.trigger('click'); | |
| 244 | + }); | |
| 233 | 245 | return; |
| 234 | 246 | } |
| 235 | 247 | var sch = gb_schedule_table.findScheduleByLine(lineCode)[schId]; | ... | ... |
src/main/resources/static/real_control_v2/zndd/type/dkl.html
| ... | ... | @@ -432,9 +432,9 @@ |
| 432 | 432 | gb_common.$post('/realSchedule', data, function (rs) { |
| 433 | 433 | notify_succ('新增临加班次成功'); |
| 434 | 434 | cb && cb(rs); |
| 435 | - var folder = '/real_control_v2/zndd/yanshi'; | |
| 435 | + /*var folder = '/real_control_v2/zndd/yanshi'; | |
| 436 | 436 | open_modal(folder + '/yanshi.html', { |
| 437 | - }, {center: true, bgclose: false, modal: true}); | |
| 437 | + }, {center: true, bgclose: false, modal: true});*/ | |
| 438 | 438 | }, err); |
| 439 | 439 | } |
| 440 | 440 | ... | ... |
src/main/resources/static/real_control_v2/zndd/type/fcjg.html
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | <div class="uk-modal-dialog" style="width: 920px;"> |
| 3 | 3 | <a href="" class="uk-modal-close uk-close"></a> |
| 4 | 4 | <div class="uk-modal-header"> |
| 5 | - <h2>新增临加班次</h2></div> | |
| 5 | + <h2>发车间隔</h2></div> | |
| 6 | 6 | <div class="uk-grid uk-width-3-5" style="float: left"> |
| 7 | 7 | <div class="uk-width-5-5"> |
| 8 | 8 | <form class="uk-form uk-form-horizontal"> </form> | ... | ... |
src/main/resources/static/real_control_v2/zndd/type/mz.html