Commit 3258c46a63c2b9e53d9b8b53a70c36d686ff6474
1 parent
704582a6
update
Showing
12 changed files
with
1089 additions
and
30 deletions
src/main/resources/static/pages/scheduleApp/Gruntfile.js
| ... | ... | @@ -84,7 +84,8 @@ module.exports = function (grunt) { |
| 84 | 84 | 'module/common/dts2/dateGroup/saDategroup.js', // 特殊日期选择指令 |
| 85 | 85 | 'module/common/dts2/guideboardGroup/saGuideboardgroup.js', // 路牌选择整合指令 |
| 86 | 86 | 'module/common/dts2/employeeGroup/saEmployeegroup.js', // 人员选饿整合指令 |
| 87 | - 'module/common/dts2/bcGroup/saBcgroup.js' // 班次选择整合指令 | |
| 87 | + 'module/common/dts2/bcGroup/saBcgroup.js', // 班次选择整合指令 | |
| 88 | + 'module/common/dts2/ttinfotable/saTimeTable.js' // 时刻表显示指令 | |
| 88 | 89 | ], |
| 89 | 90 | dest: 'module/common/prj-common-directive.js' |
| 90 | 91 | }, | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/dts2/ttinfotable/saTimeTable.js
0 → 100644
| 1 | +/** | |
| 2 | + * saTimeTable指令,时刻表显示指令,excel表格形式,支持菜单,事件处理。 | |
| 3 | + * name(必须),控件的名字 | |
| 4 | + * ds,外部数据源 | |
| 5 | + * | |
| 6 | + * TODO:优化开发中 | |
| 7 | + * | |
| 8 | + */ | |
| 9 | +angular.module('ScheduleApp').directive('saTimetable', ['$compile', | |
| 10 | + function($compile) { | |
| 11 | + return { | |
| 12 | + restrict: 'E', | |
| 13 | + templateUrl: '/pages/scheduleApp/module/common/dts2/ttinfotable/saTimeTableTemplate.html', | |
| 14 | + scope: { // 独立作用域 | |
| 15 | + // 注意:数据暂时从外部ngModel里获取,以后内部自己处理 | |
| 16 | + ds: "=ngModel" | |
| 17 | + | |
| 18 | + // TODO: | |
| 19 | + | |
| 20 | + }, | |
| 21 | + controllerAs: "$saTimeTableCtrl", | |
| 22 | + bindToController: true, | |
| 23 | + controller: function() { | |
| 24 | + var self = this; | |
| 25 | + this.$$headToolTip = ""; // 表头tooltip信息 | |
| 26 | + | |
| 27 | + // TODO: | |
| 28 | + }, | |
| 29 | + | |
| 30 | + /**, | |
| 31 | + * compile阶段,angular还没有编译模版,根据需要可以修改模版dom | |
| 32 | + * @param tElem | |
| 33 | + * @param tAttrs | |
| 34 | + * @returns {{pre: Function, post: Function}} | |
| 35 | + */ | |
| 36 | + compile: function(tElem, tAttrs) { | |
| 37 | + // 获取属性 | |
| 38 | + var $attr_name = tAttrs["name"]; // 控件的名字 | |
| 39 | + if (!$attr_name) { | |
| 40 | + throw new Error("saTimeTable指令 name属性required"); | |
| 41 | + } | |
| 42 | + | |
| 43 | + // 内部controlAs名字 | |
| 44 | + var ctrlAs = '$saTimeTableCtrl'; | |
| 45 | + | |
| 46 | + // TODO: | |
| 47 | + | |
| 48 | + return { | |
| 49 | + pre: function(scope, element, attr) { | |
| 50 | + // TODO: | |
| 51 | + //alert(element.find("#tooltipTest").html()); | |
| 52 | + //$compile(element.find("#tooltipTest"))(scope); | |
| 53 | + | |
| 54 | + }, | |
| 55 | + post: function(scope, element, attr) { | |
| 56 | + // TODO: | |
| 57 | + | |
| 58 | + // ------------------- dom事件处理function -----------------// | |
| 59 | + scope[ctrlAs].$$cell_click = function(rowindex, colindex, cell) { | |
| 60 | + if (cell.ttdid) { | |
| 61 | + //alert(rowindex + "-" + colindex); | |
| 62 | + cell.sel = !cell.sel; | |
| 63 | + } | |
| 64 | + // TODO: | |
| 65 | + }; | |
| 66 | + | |
| 67 | + // ------------------- 监控function ------------------// | |
| 68 | + // 监控明细数据,生成表头的tooltip | |
| 69 | + scope.$watch( | |
| 70 | + function() { | |
| 71 | + return scope[ctrlAs].ds; | |
| 72 | + }, | |
| 73 | + function(newValue, oldValue) { | |
| 74 | + if (newValue && | |
| 75 | + newValue.detailHeads && | |
| 76 | + newValue.detailHeads.length > 0) { | |
| 77 | + var tooltip = []; | |
| 78 | + tooltip.push("出场"); | |
| 79 | + angular.forEach(newValue.detailHeads, function(value) { | |
| 80 | + if (value != "出场" && | |
| 81 | + value != "路牌" && | |
| 82 | + value != "进场" && | |
| 83 | + value != "空驶班次/空驶里程" && | |
| 84 | + value != "运营班次/运营里程" ) { | |
| 85 | + var exist = false; | |
| 86 | + angular.forEach(tooltip, function(tip) { | |
| 87 | + if (tip == value) { | |
| 88 | + exist = true; | |
| 89 | + } | |
| 90 | + }); | |
| 91 | + if (!exist) { | |
| 92 | + tooltip.push(value); | |
| 93 | + } | |
| 94 | + } | |
| 95 | + }); | |
| 96 | + tooltip.push("进场"); | |
| 97 | + scope[ctrlAs].$$headToolTip = tooltip.join(","); | |
| 98 | + } | |
| 99 | + }, | |
| 100 | + true | |
| 101 | + ) | |
| 102 | + } | |
| 103 | + }; | |
| 104 | + } | |
| 105 | + | |
| 106 | + }; | |
| 107 | + } | |
| 108 | +]); | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/dts2/ttinfotable/saTimeTableTemplate.html
0 → 100644
| 1 | +<style> | |
| 2 | + .ttInfo_detail { | |
| 3 | + height: 100%; | |
| 4 | + overflow: hidden; | |
| 5 | + } | |
| 6 | + .ttInfo_detail .container-fluid { | |
| 7 | + height: 100%; | |
| 8 | + margin-left: 0; | |
| 9 | + } | |
| 10 | + .ttInfo_detail .container-fluid>* { | |
| 11 | + padding: 0; | |
| 12 | + } | |
| 13 | + .ttInfo_detail .container-fluid.top-container { | |
| 14 | + margin-top: 5px; | |
| 15 | + padding: 0; | |
| 16 | + overflow: hidden; | |
| 17 | + } | |
| 18 | + .ttInfo_detail .detail-wrap { | |
| 19 | + height: calc(100% - 1px); | |
| 20 | + padding: 0; | |
| 21 | + } | |
| 22 | + .ttInfo_detail .detail-wrap .header-title { | |
| 23 | + cursor: pointer; /* 图例点击按钮 */ | |
| 24 | + font-size: 14px; | |
| 25 | + color: #cccaca; | |
| 26 | + } | |
| 27 | + .ttInfo_detail .detail-wrap h3 { | |
| 28 | + margin: 7px 0 5px; | |
| 29 | + text-indent: 5px; | |
| 30 | + margin: 0; | |
| 31 | + height: 31px; | |
| 32 | + line-height: 31px; | |
| 33 | + } | |
| 34 | + .ttInfo_detail .detail-wrap.up h3 { | |
| 35 | + color: #2765A7; | |
| 36 | + } | |
| 37 | + | |
| 38 | + .ttInfo_detail .detail-panel { | |
| 39 | + padding: 0; | |
| 40 | + height: 100%; | |
| 41 | + border: 1px solid #ddd; | |
| 42 | + background: #fafafa; | |
| 43 | + border-radius: 10px !important; | |
| 44 | + moz-user-select: -moz-none; | |
| 45 | + -moz-user-select: none; | |
| 46 | + -o-user-select: none; | |
| 47 | + -khtml-user-select: none; | |
| 48 | + -webkit-user-select: none; | |
| 49 | + -ms-user-select: none; | |
| 50 | + user-select: none; | |
| 51 | + } | |
| 52 | + | |
| 53 | + .ttInfo_detail .tt_table { | |
| 54 | + padding-top: 36px; | |
| 55 | + } | |
| 56 | + | |
| 57 | + .ttInfo_detail .tt_table>.tt_table_head { | |
| 58 | + height: 36px; | |
| 59 | + line-height: 36px; | |
| 60 | + } | |
| 61 | + | |
| 62 | + .detail-body { | |
| 63 | + height: calc(100% - 37px); | |
| 64 | + background: #fff; | |
| 65 | + } | |
| 66 | + | |
| 67 | + .detail-body .tt_table_wrap { | |
| 68 | + height: 100%; | |
| 69 | + border-bottom: 0; | |
| 70 | + /*overflow-x: hidden;*/ | |
| 71 | + } | |
| 72 | + | |
| 73 | + .detail-body .tt_table_wrap .tt_table .tt_table_body dl:last-child { | |
| 74 | + border-bottom: 0; | |
| 75 | + } | |
| 76 | + | |
| 77 | + .detail-body .tt_table>.tt_table_body dl:hover dd:nth-of-type(1) { | |
| 78 | + background: #fafafa; | |
| 79 | + background: linear-gradient(to right, #fafafa, #f5fbff); | |
| 80 | + } | |
| 81 | + | |
| 82 | + .detail-body .tt_table dl dd, .detail-body .tt_table dl dt { | |
| 83 | + font-size: 14px; | |
| 84 | + line-height: 37px; | |
| 85 | + } | |
| 86 | + | |
| 87 | + .tt_table dl dt:nth-of-type(1), .tt_table dl dd:nth-of-type(1) { | |
| 88 | + width: 50px; | |
| 89 | + } | |
| 90 | + .tt_table dl dd:nth-of-type(1) { | |
| 91 | + background: #eae8e8; | |
| 92 | + /*border-bottom: 1px solid #b3b3b3;*/ | |
| 93 | + border-right: 1px solid #b3b3b3; | |
| 94 | + text-align: center; | |
| 95 | + text-indent: -3px; | |
| 96 | + } | |
| 97 | + | |
| 98 | + .tt_table dl dt:nth-of-type(2), .tt_table dl dd:nth-of-type(2) { | |
| 99 | + width: 55px; | |
| 100 | + text-align: center; | |
| 101 | + } | |
| 102 | + .tt_table dl dt:nth-of-type(n + 3), .tt_table dl dd:nth-of-type(n + 3) { | |
| 103 | + width: 50px; | |
| 104 | + text-align: center; | |
| 105 | + } | |
| 106 | + .tt_table dl dt:nth-last-child(1), .tt_table dl dd:nth-last-child(1) { | |
| 107 | + width: 130px; | |
| 108 | + text-align: center; | |
| 109 | + } | |
| 110 | + .tt_table dl dt:nth-last-child(2), .tt_table dl dd:nth-last-child(2) { | |
| 111 | + width: 130px; | |
| 112 | + text-align: center; | |
| 113 | + } | |
| 114 | + | |
| 115 | +</style> | |
| 116 | + | |
| 117 | +<style> | |
| 118 | + .tt_table_wrap { | |
| 119 | + width: 100%; | |
| 120 | + height: 100%; | |
| 121 | + overflow: auto; | |
| 122 | + /*position: relative;*/ | |
| 123 | + | |
| 124 | + } | |
| 125 | + | |
| 126 | + .tt_table { | |
| 127 | + position: relative; | |
| 128 | + padding-top: 30px; | |
| 129 | + font-size: 13px; | |
| 130 | + } | |
| 131 | + | |
| 132 | + .tt_table>.tt_table_head { | |
| 133 | + position: absolute; | |
| 134 | + top: 0; | |
| 135 | + height: 30px; | |
| 136 | + background: #f5f5f5; | |
| 137 | + width: 100%; | |
| 138 | + line-height: 30px; | |
| 139 | + z-index: 1; | |
| 140 | + } | |
| 141 | + | |
| 142 | + .tt_table>.tt_table_head dl { | |
| 143 | + border-bottom: 0; | |
| 144 | + } | |
| 145 | + | |
| 146 | + .tt_table>.tt_table_head dl dt { | |
| 147 | + font-weight: normal; | |
| 148 | + font-size: 12px; | |
| 149 | + } | |
| 150 | + | |
| 151 | + .tt_table>.tt_table_body { | |
| 152 | + width: 100%; | |
| 153 | + border-bottom: 1px solid #dedede; | |
| 154 | + } | |
| 155 | + | |
| 156 | + .tt_table dl { | |
| 157 | + display: block; | |
| 158 | + width: 100%; | |
| 159 | + margin: 0; | |
| 160 | + /*border-bottom: 1px solid;*/ | |
| 161 | + height: 30px; | |
| 162 | + cursor: default; | |
| 163 | + } | |
| 164 | + | |
| 165 | + .tt_table>.tt_table_body dl:hover, .tt_table>.tt_table_body dl.context-menu-active { | |
| 166 | + box-shadow: 0 0 4px #656c71; | |
| 167 | + background: #f5fbff; | |
| 168 | + } | |
| 169 | + | |
| 170 | + .tt_table dl dd, .tt_table dl dt { | |
| 171 | + display: inline-block; | |
| 172 | + white-space: nowrap; | |
| 173 | + overflow: hidden; | |
| 174 | + text-overflow: ellipsis; | |
| 175 | + height: 100%; | |
| 176 | + line-height: 30px; | |
| 177 | + border-right: 1px solid; | |
| 178 | + text-indent: 5px; | |
| 179 | + } | |
| 180 | + | |
| 181 | + .tt_table_wrap { | |
| 182 | + /*border: 1px solid #e6e6e6;*/ | |
| 183 | + border-left: 0; | |
| 184 | + } | |
| 185 | + | |
| 186 | + .tt_table>.tt_table_head { | |
| 187 | + border-bottom: 1px solid #dedede; | |
| 188 | + } | |
| 189 | + | |
| 190 | + .tt_table dl { | |
| 191 | + font-size: 0; | |
| 192 | + white-space: nowrap; | |
| 193 | + } | |
| 194 | + | |
| 195 | + .tt_table dl dd, .tt_table dl dt { | |
| 196 | + border-right-color: #dedede; | |
| 197 | + font-size: 13px; | |
| 198 | + /*border-bottom: 1px solid #dedede;*/ | |
| 199 | + border-top: 1px solid #dedede; | |
| 200 | + } | |
| 201 | + .tt_table dl{ | |
| 202 | + transition: all .1s ease; | |
| 203 | + } | |
| 204 | + .tt_table dd.active { | |
| 205 | + background: #8baabf !important; | |
| 206 | + color: white; | |
| 207 | + } | |
| 208 | + .tt_table_no_border .tt_table>.tt_table_head dl dt { | |
| 209 | + font-weight: 600; | |
| 210 | + font-size: 13px; | |
| 211 | + } | |
| 212 | + .tt_table_no_border .tt_table dl dd,.tt_table_no_border .tt_table dl dt { | |
| 213 | + font-size: 14px; | |
| 214 | + border-right: 0; | |
| 215 | + } | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | +</style> | |
| 220 | + | |
| 221 | +<style> | |
| 222 | + .table_scrollbar::-webkit-scrollbar { | |
| 223 | + width: 15px; | |
| 224 | + height: 16px; | |
| 225 | + } | |
| 226 | + | |
| 227 | + .table_scrollbar::-webkit-scrollbar-track, ::-webkit-scrollbar-thumb { | |
| 228 | + border-radius: 999px; | |
| 229 | + border: 5px solid transparent; | |
| 230 | + } | |
| 231 | + | |
| 232 | + .table_scrollbar::-webkit-scrollbar-track { | |
| 233 | + box-shadow: 1px 1px 5px rgba(0, 0, 0, .2) inset; | |
| 234 | + } | |
| 235 | + | |
| 236 | + .table_scrollbar::-webkit-scrollbar-thumb { | |
| 237 | + min-height: 20px; | |
| 238 | + background-clip: content-box; | |
| 239 | + box-shadow: 0 0 0 5px rgba(0, 0, 0, .2) inset; | |
| 240 | + } | |
| 241 | + | |
| 242 | + .table_scrollbar::-webkit-scrollbar-corner { | |
| 243 | + background: transparent; | |
| 244 | + } | |
| 245 | +</style> | |
| 246 | + | |
| 247 | +<style> | |
| 248 | + /* Specify styling for tooltip contents */ | |
| 249 | + .tooltip.headClass .tooltip-inner { | |
| 250 | + color: #880000; | |
| 251 | + background-color: #ffff66; | |
| 252 | + box-shadow: 0 6px 12px rgba(0,0,0,.175); | |
| 253 | + } | |
| 254 | + /* Hide arrow */ | |
| 255 | + .tooltip.headClass .tooltip-arrow { | |
| 256 | + display: none; | |
| 257 | + } | |
| 258 | +</style> | |
| 259 | + | |
| 260 | + | |
| 261 | +<div class="ttInfo_detail"> | |
| 262 | + <div class="container-fluid top-container"> | |
| 263 | + <div class="col-md-12 container-fluid schedule-wrap"> | |
| 264 | + <div class="col-md-12" style="height: 100%"> | |
| 265 | + <div class="detail-panel"> | |
| 266 | + <div class="detail-wrap up"> | |
| 267 | + <!--<h3 class="header-title">--> | |
| 268 | + <!--{{$saTimeTableCtrl.ds.yydesc}}--> | |
| 269 | + <!--</h3>--> | |
| 270 | + | |
| 271 | + <h3> | |
| 272 | + <a href="#" | |
| 273 | + tooltip-animation="false" | |
| 274 | + tooltip-placement="right-top" | |
| 275 | + uib-tooltip="{{$saTimeTableCtrl.$$headToolTip}}" | |
| 276 | + tooltip-class="headClass"> | |
| 277 | + {{$saTimeTableCtrl.ds.yydesc}} | |
| 278 | + </a> | |
| 279 | + </h3> | |
| 280 | + | |
| 281 | + <div class="detail-body"> | |
| 282 | + <div class="tt_table_wrap table_scrollbar"> | |
| 283 | + <div class="tt_table"> | |
| 284 | + <div class="tt_table_head" style="top: 0;"> | |
| 285 | + <dl> | |
| 286 | + <dt> | |
| 287 | + 序号 | |
| 288 | + </dt> | |
| 289 | + <dt ng-repeat="head in $saTimeTableCtrl.ds.detailHeads track by $index"> | |
| 290 | + {{(head != '路牌' && head != '空驶班次/空驶里程' && head != '运营班次/运营里程') ? (head.substr(0, 1) + $index): head}} | |
| 291 | + </dt> | |
| 292 | + </dl> | |
| 293 | + </div> | |
| 294 | + <div class="tt_table_body"> | |
| 295 | + <dl ng-repeat="info in $saTimeTableCtrl.ds.detailInfos track by $index" | |
| 296 | + ng-init="rowIndex = $index" | |
| 297 | + > | |
| 298 | + <dd> | |
| 299 | + {{rowIndex + 1}} | |
| 300 | + </dd> | |
| 301 | + <dd ng-repeat="cell in info track by $index" | |
| 302 | + ng-init="colIndex = $index" | |
| 303 | + ng-click="$saTimeTableCtrl.$$cell_click(rowIndex, colIndex, cell)" | |
| 304 | + ng-class="{lpName: !cell.ttdid, active: cell.sel}" | |
| 305 | + > | |
| 306 | + {{cell.fcsj}} | |
| 307 | + </dd> | |
| 308 | + | |
| 309 | + </dl> | |
| 310 | + | |
| 311 | + </div> | |
| 312 | + | |
| 313 | + </div> | |
| 314 | + | |
| 315 | + | |
| 316 | + </div> | |
| 317 | + | |
| 318 | + </div> | |
| 319 | + | |
| 320 | + <!--TODO--> | |
| 321 | + </div> | |
| 322 | + | |
| 323 | + </div> | |
| 324 | + </div> | |
| 325 | + | |
| 326 | + | |
| 327 | + </div> | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + </div> | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | +</div> | |
| 0 | 336 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
| ... | ... | @@ -3658,4 +3658,112 @@ angular.module('ScheduleApp').directive('saBcgroup', [ |
| 3658 | 3658 | } |
| 3659 | 3659 | } |
| 3660 | 3660 | } |
| 3661 | -]); | |
| 3662 | 3661 | \ No newline at end of file |
| 3662 | +]); | |
| 3663 | +/** | |
| 3664 | + * saTimeTable指令,时刻表显示指令,excel表格形式,支持菜单,事件处理。 | |
| 3665 | + * name(必须),控件的名字 | |
| 3666 | + * ds,外部数据源 | |
| 3667 | + * | |
| 3668 | + * TODO:优化开发中 | |
| 3669 | + * | |
| 3670 | + */ | |
| 3671 | +angular.module('ScheduleApp').directive('saTimetable', ['$compile', | |
| 3672 | + function($compile) { | |
| 3673 | + return { | |
| 3674 | + restrict: 'E', | |
| 3675 | + templateUrl: '/pages/scheduleApp/module/common/dts2/ttinfotable/saTimeTableTemplate.html', | |
| 3676 | + scope: { // 独立作用域 | |
| 3677 | + // 注意:数据暂时从外部ngModel里获取,以后内部自己处理 | |
| 3678 | + ds: "=ngModel" | |
| 3679 | + | |
| 3680 | + // TODO: | |
| 3681 | + | |
| 3682 | + }, | |
| 3683 | + controllerAs: "$saTimeTableCtrl", | |
| 3684 | + bindToController: true, | |
| 3685 | + controller: function() { | |
| 3686 | + var self = this; | |
| 3687 | + this.$$headToolTip = ""; // 表头tooltip信息 | |
| 3688 | + | |
| 3689 | + // TODO: | |
| 3690 | + }, | |
| 3691 | + | |
| 3692 | + /**, | |
| 3693 | + * compile阶段,angular还没有编译模版,根据需要可以修改模版dom | |
| 3694 | + * @param tElem | |
| 3695 | + * @param tAttrs | |
| 3696 | + * @returns {{pre: Function, post: Function}} | |
| 3697 | + */ | |
| 3698 | + compile: function(tElem, tAttrs) { | |
| 3699 | + // 获取属性 | |
| 3700 | + var $attr_name = tAttrs["name"]; // 控件的名字 | |
| 3701 | + if (!$attr_name) { | |
| 3702 | + throw new Error("saTimeTable指令 name属性required"); | |
| 3703 | + } | |
| 3704 | + | |
| 3705 | + // 内部controlAs名字 | |
| 3706 | + var ctrlAs = '$saTimeTableCtrl'; | |
| 3707 | + | |
| 3708 | + // TODO: | |
| 3709 | + | |
| 3710 | + return { | |
| 3711 | + pre: function(scope, element, attr) { | |
| 3712 | + // TODO: | |
| 3713 | + //alert(element.find("#tooltipTest").html()); | |
| 3714 | + //$compile(element.find("#tooltipTest"))(scope); | |
| 3715 | + | |
| 3716 | + }, | |
| 3717 | + post: function(scope, element, attr) { | |
| 3718 | + // TODO: | |
| 3719 | + | |
| 3720 | + // ------------------- dom事件处理function -----------------// | |
| 3721 | + scope[ctrlAs].$$cell_click = function(rowindex, colindex, cell) { | |
| 3722 | + if (cell.ttdid) { | |
| 3723 | + //alert(rowindex + "-" + colindex); | |
| 3724 | + cell.sel = !cell.sel; | |
| 3725 | + } | |
| 3726 | + // TODO: | |
| 3727 | + }; | |
| 3728 | + | |
| 3729 | + // ------------------- 监控function ------------------// | |
| 3730 | + // 监控明细数据,生成表头的tooltip | |
| 3731 | + scope.$watch( | |
| 3732 | + function() { | |
| 3733 | + return scope[ctrlAs].ds; | |
| 3734 | + }, | |
| 3735 | + function(newValue, oldValue) { | |
| 3736 | + if (newValue && | |
| 3737 | + newValue.detailHeads && | |
| 3738 | + newValue.detailHeads.length > 0) { | |
| 3739 | + var tooltip = []; | |
| 3740 | + tooltip.push("出场"); | |
| 3741 | + angular.forEach(newValue.detailHeads, function(value) { | |
| 3742 | + if (value != "出场" && | |
| 3743 | + value != "路牌" && | |
| 3744 | + value != "进场" && | |
| 3745 | + value != "空驶班次/空驶里程" && | |
| 3746 | + value != "运营班次/运营里程" ) { | |
| 3747 | + var exist = false; | |
| 3748 | + angular.forEach(tooltip, function(tip) { | |
| 3749 | + if (tip == value) { | |
| 3750 | + exist = true; | |
| 3751 | + } | |
| 3752 | + }); | |
| 3753 | + if (!exist) { | |
| 3754 | + tooltip.push(value); | |
| 3755 | + } | |
| 3756 | + } | |
| 3757 | + }); | |
| 3758 | + tooltip.push("进场"); | |
| 3759 | + scope[ctrlAs].$$headToolTip = tooltip.join(","); | |
| 3760 | + } | |
| 3761 | + }, | |
| 3762 | + true | |
| 3763 | + ) | |
| 3764 | + } | |
| 3765 | + }; | |
| 3766 | + } | |
| 3767 | + | |
| 3768 | + }; | |
| 3769 | + } | |
| 3770 | +]); | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-ui-route-state.js
| ... | ... | @@ -1130,6 +1130,24 @@ ScheduleApp.config([ |
| 1130 | 1130 | }] |
| 1131 | 1131 | } |
| 1132 | 1132 | }) |
| 1133 | + .state("ttInfoDetailManage_edit3", { // 时刻表详细信息编辑 | |
| 1134 | + url: '/ttInfoDetailManage_edit3/:xlid/:ttid/:xlname/:ttname/:rflag', | |
| 1135 | + views: { | |
| 1136 | + "": {templateUrl: 'pages/scheduleApp/module/core/ttInfoManage/detailedit/edit3.html'} | |
| 1137 | + }, | |
| 1138 | + resolve: { | |
| 1139 | + deps: ['$ocLazyLoad', function($ocLazyLoad) { | |
| 1140 | + return $ocLazyLoad.load({ | |
| 1141 | + name: 'ttInfoDetailManage_edit_module', | |
| 1142 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | |
| 1143 | + files: [ | |
| 1144 | + "pages/scheduleApp/module/core/ttInfoManage/detailedit/timeTableDetailManage_old.js", | |
| 1145 | + "pages/scheduleApp/module/core/ttInfoManage/detailedit/module_edit3.js" | |
| 1146 | + ] | |
| 1147 | + }); | |
| 1148 | + }] | |
| 1149 | + } | |
| 1150 | + }) | |
| 1133 | 1151 | .state("ttInfoDetailManage_detail_edit", { // 时刻表详细信息单元格编辑 |
| 1134 | 1152 | url: '/ttInfoDetailManage_detail_edit/:id/:xlid/:ttid/:xlname/:ttname', |
| 1135 | 1153 | views: { | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-detail.html
| ... | ... | @@ -322,7 +322,7 @@ |
| 322 | 322 | <button type="submit" class="btn green" |
| 323 | 323 | ng-disabled="!myForm.$valid"><i class="fa fa-check"></i> 提交</button> |
| 324 | 324 | <a type="button" class="btn default" |
| 325 | - ui-sref="ttInfoDetailManage_edit({xlid: ctrl.xlid, ttid : ctrl.ttid, xlname: ctrl.xlname, ttname : ctrl.ttname})" ><i class="fa fa-times"></i> 取消</a> | |
| 325 | + ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid : ctrl.ttid, xlname: ctrl.xlname, ttname : ctrl.ttname})" ><i class="fa fa-times"></i> 取消</a> | |
| 326 | 326 | </div> |
| 327 | 327 | </div> |
| 328 | 328 | </div> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-detail2.html
| ... | ... | @@ -42,7 +42,7 @@ |
| 42 | 42 | <div class="form-group"> |
| 43 | 43 | <label class="col-md-3 control-label">方向:</label> |
| 44 | 44 | <div class="col-md-5"> |
| 45 | - <sa-Radiogroup model="ctrl.TimeTableDetailForSave.xlDir" dicgroup="LineTrend" name="xlDir"></sa-Radiogroup> | |
| 45 | + <sa-Radiogroup model="ctrl.tt.xlDir" dicgroup="LineTrend" name="xlDir"></sa-Radiogroup> | |
| 46 | 46 | </div> |
| 47 | 47 | |
| 48 | 48 | </div> |
| ... | ... | @@ -50,7 +50,7 @@ |
| 50 | 50 | <label class="col-md-3 control-label">起点站:</label> |
| 51 | 51 | <div class="col-md-5"> |
| 52 | 52 | <sa-Select5 name="qdz" |
| 53 | - model="ctrl.TimeTableDetailForSave" | |
| 53 | + model="ctrl.tt" | |
| 54 | 54 | cmaps="{'qdz.id' : 'stationid'}" |
| 55 | 55 | dcname="qdz.id" |
| 56 | 56 | icname="stationid" |
| ... | ... | @@ -67,7 +67,7 @@ |
| 67 | 67 | <label class="col-md-3 control-label">终点站:</label> |
| 68 | 68 | <div class="col-md-5"> |
| 69 | 69 | <sa-Select5 name="zdz" |
| 70 | - model="ctrl.TimeTableDetailForSave" | |
| 70 | + model="ctrl.tt" | |
| 71 | 71 | cmaps="{'zdz.id' : 'stationid'}" |
| 72 | 72 | dcname="zdz.id" |
| 73 | 73 | icname="stationid" |
| ... | ... | @@ -84,7 +84,7 @@ |
| 84 | 84 | <label class="col-md-3 control-label">停车场:</label> |
| 85 | 85 | <div class="col-md-5"> |
| 86 | 86 | <sa-Select5 name="tcc" |
| 87 | - model="ctrl.TimeTableDetailForSave" | |
| 87 | + model="ctrl.tt" | |
| 88 | 88 | cmaps="{'tcc.id': 'id'}" |
| 89 | 89 | dcname="tcc.id" |
| 90 | 90 | icname="id" |
| ... | ... | @@ -102,7 +102,7 @@ |
| 102 | 102 | <label class="col-md-3 control-label">发车时间:</label> |
| 103 | 103 | <div class="col-md-5"> |
| 104 | 104 | <input type="text" class="form-control" name="fcsj" |
| 105 | - ng-model="ctrl.TimeTableDetailForSave.fcsj" | |
| 105 | + ng-model="ctrl.tt.fcsj" | |
| 106 | 106 | ng-pattern="ctrl.time_regex" |
| 107 | 107 | /> |
| 108 | 108 | </div> |
| ... | ... | @@ -116,7 +116,7 @@ |
| 116 | 116 | <label class="col-md-3 control-label">计划里程:</label> |
| 117 | 117 | <div class="col-md-5"> |
| 118 | 118 | <input type="text" class="form-control" name="jhlc" |
| 119 | - ng-model="ctrl.TimeTableDetailForSave.jhlc" | |
| 119 | + ng-model="ctrl.tt.jhlc" | |
| 120 | 120 | ng-pattern="ctrl.float_regex" |
| 121 | 121 | /> |
| 122 | 122 | </div> |
| ... | ... | @@ -130,7 +130,7 @@ |
| 130 | 130 | <label class="col-md-3 control-label">班次历时:</label> |
| 131 | 131 | <div class="col-md-5"> |
| 132 | 132 | <input type="text" class="form-control" name="bcsj" |
| 133 | - ng-model="ctrl.TimeTableDetailForSave.bcsj" | |
| 133 | + ng-model="ctrl.tt.bcsj" | |
| 134 | 134 | ng-pattern="ctrl.number_regex" |
| 135 | 135 | /> |
| 136 | 136 | </div> |
| ... | ... | @@ -144,7 +144,7 @@ |
| 144 | 144 | <label class="col-md-3 control-label">班次类型:</label> |
| 145 | 145 | <div class="col-md-5"> |
| 146 | 146 | <sa-Select5 name="bcType" |
| 147 | - model="ctrl.TimeTableDetailForSave" | |
| 147 | + model="ctrl.tt" | |
| 148 | 148 | cmaps="{'bcType': 'code'}" |
| 149 | 149 | dcname="bcType" |
| 150 | 150 | icname="code" |
| ... | ... | @@ -167,7 +167,7 @@ |
| 167 | 167 | <button type="submit" class="btn green" |
| 168 | 168 | ng-disabled="!myForm.$valid"><i class="fa fa-check"></i> 提交</button> |
| 169 | 169 | <a type="button" class="btn default" |
| 170 | - ui-sref="ttInfoDetailManage_edit({xlid: ctrl.xlid, ttid : ctrl.ttid, xlname: ctrl.xlname, ttname : ctrl.ttname})" ><i class="fa fa-times"></i> 取消</a> | |
| 170 | + ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid : ctrl.ttid, xlname: ctrl.xlname, ttname : ctrl.ttname})" ><i class="fa fa-times"></i> 取消</a> | |
| 171 | 171 | </div> |
| 172 | 172 | </div> |
| 173 | 173 | </div> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit3.html
0 → 100644
| 1 | +<div class="page-head"> | |
| 2 | + <div class="page-title"> | |
| 3 | + <h1>时刻表管理</h1> | |
| 4 | + </div> | |
| 5 | +</div> | |
| 6 | + | |
| 7 | +<ul class="page-breadcrumb breadcrumb"> | |
| 8 | + <li> | |
| 9 | + <a href="/pages/home.html" data-pjax>首页</a> | |
| 10 | + <i class="fa fa-circle"></i> | |
| 11 | + </li> | |
| 12 | + <li> | |
| 13 | + <span class="active">运营计划管理</span> | |
| 14 | + <i class="fa fa-circle"></i> | |
| 15 | + </li> | |
| 16 | + <li> | |
| 17 | + <a ui-sref="ttInfoManage">时刻表管理</a> | |
| 18 | + <i class="fa fa-circle"></i> | |
| 19 | + </li> | |
| 20 | + <li> | |
| 21 | + <span class="active">编辑时刻表明细信息</span> | |
| 22 | + </li> | |
| 23 | +</ul> | |
| 24 | + | |
| 25 | +<div class="row" id="timeTableDetail" ng-controller="TimeTableDetailManageCtrl_old as ctrl"> | |
| 26 | + <div class="col-md-12"> | |
| 27 | + <div class="portlet light bordered"> | |
| 28 | + <div class="portlet-title"> | |
| 29 | + <div class="caption font-dark"> | |
| 30 | + <i class="fa fa-database font-dark"></i> | |
| 31 | + <span class="caption-subject bold uppercase" ng-bind="ctrl.title"></span> | |
| 32 | + </div> | |
| 33 | + <div class="actions"> | |
| 34 | + <i class="fa fa-arrow-up" aria-hidden="true"></i> | |
| 35 | + <span style="padding-right: 10px;">上行班次</span> | |
| 36 | + <i class="fa fa-arrow-down" aria-hidden="true"></i> | |
| 37 | + <span style="padding-right: 10px;">下行班次</span> | |
| 38 | + <i class="fa fa-circle-o-notch" aria-hidden="true"></i> | |
| 39 | + <span style="padding-right: 10px;">区间班次</span> | |
| 40 | + <i class="fa fa-adjust" aria-hidden="true"></i> | |
| 41 | + <span style="padding-right: 10px;">分班班次</span> | |
| 42 | + | |
| 43 | + <div class="btn-group"> | |
| 44 | + <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown"> | |
| 45 | + <i class="fa fa-share"></i> | |
| 46 | + <span>数据工具</span> | |
| 47 | + <i class="fa fa-angle-down"></i> | |
| 48 | + </a> | |
| 49 | + <ul class="dropdown-menu pull-right"> | |
| 50 | + <li> | |
| 51 | + <a href="javascript:" class="tool-action" ng-click="ctrl.singleEditBcDetail()"> | |
| 52 | + <i class="fa fa-file-excel-o"></i> | |
| 53 | + 修改 | |
| 54 | + </a> | |
| 55 | + </li> | |
| 56 | + <li> | |
| 57 | + <a href="javascript:" class="tool-action" ng-click="ctrl.editInfos()"> | |
| 58 | + <i class="fa fa-file-excel-o"></i> | |
| 59 | + 批量修改 | |
| 60 | + </a> | |
| 61 | + </li> | |
| 62 | + <li class="divider"></li> | |
| 63 | + <li> | |
| 64 | + <a href="javascript:" class="tool-action" ng-click="ctrl.refresh()"> | |
| 65 | + <i class="fa fa-refresh"></i> | |
| 66 | + 刷行数据 | |
| 67 | + </a> | |
| 68 | + </li> | |
| 69 | + </ul> | |
| 70 | + </div> | |
| 71 | + | |
| 72 | + </div> | |
| 73 | + </div> | |
| 74 | + | |
| 75 | + <div class="portlet-body"> | |
| 76 | + <!--<div ng-view></div>--> | |
| 77 | + <div style="height: {{ctrl.ttHeight}}px;"> | |
| 78 | + <sa-Timetable name="tt" ng-model="ctrl.editInfo" ng-model-options="{ getterSetter: true }"> | |
| 79 | + | |
| 80 | + </sa-Timetable> | |
| 81 | + </div> | |
| 82 | + | |
| 83 | + | |
| 84 | + </div> | |
| 85 | + </div> | |
| 86 | + </div> | |
| 87 | +</div> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/module_edit3.js
0 → 100644
| 1 | +// 时刻表明细编辑信息service | |
| 2 | +angular.module('ScheduleApp').factory( | |
| 3 | + 'ttInfoDetailService_edit3', | |
| 4 | + [ | |
| 5 | + 'TimeTableDetailManageService_g', | |
| 6 | + '$state', | |
| 7 | + '$q', | |
| 8 | + function(service, $state, $q) { | |
| 9 | + // 查询对象类 | |
| 10 | + var queryClass = service.rest; | |
| 11 | + | |
| 12 | + // TODO: | |
| 13 | + | |
| 14 | + return { | |
| 15 | + getQueryClass: function() { | |
| 16 | + return queryClass; | |
| 17 | + }, | |
| 18 | + | |
| 19 | + /** | |
| 20 | + * 获取编辑用的时刻表明细数据 | |
| 21 | + * @param xlid 线路id | |
| 22 | + * @param ttid 时刻表id | |
| 23 | + */ | |
| 24 | + getEditInfo: function(xlid, ttid) { | |
| 25 | + var deferred = $q.defer(); | |
| 26 | + | |
| 27 | + service.edit.list({xlid: xlid, ttid: ttid}, function(result) { | |
| 28 | + if (result.status != 'ERROR') { | |
| 29 | + deferred.resolve(result); | |
| 30 | + } else { | |
| 31 | + deferred.reject(result.msg); | |
| 32 | + } | |
| 33 | + }); | |
| 34 | + | |
| 35 | + return deferred.promise; | |
| 36 | + }, | |
| 37 | + | |
| 38 | + /** | |
| 39 | + * 批量修改。 | |
| 40 | + * @param updateObject | |
| 41 | + * @param editInfo | |
| 42 | + * @returns {*} | |
| 43 | + */ | |
| 44 | + editInfos: function(updateObject, editInfo) { // 批量保存数据 | |
| 45 | + var deferred = $q.defer(); | |
| 46 | + | |
| 47 | + // 找出所有选中的ttinfodetailids | |
| 48 | + var ttinfodetailIds = []; | |
| 49 | + for (var i = 0; i < editInfo.detailInfos.length; i++) { | |
| 50 | + for (var j = 0; j < editInfo.detailInfos[i].length; j++) { | |
| 51 | + if (editInfo.detailInfos[i][j].sel == true) | |
| 52 | + ttinfodetailIds.push(editInfo.detailInfos[i][j]); | |
| 53 | + } | |
| 54 | + } | |
| 55 | + // ajax调用 | |
| 56 | + var success_counts = 0; // 成功数 | |
| 57 | + var error_counts = 0; // 失败数 | |
| 58 | + for (var n = 0; n < ttinfodetailIds.length; n++) { | |
| 59 | + (function(index) { | |
| 60 | + queryClass.get({id: ttinfodetailIds[index].ttdid}, function(value) { | |
| 61 | + if (value.status == 'ERROR') { | |
| 62 | + error_counts ++; | |
| 63 | + if (success_counts + error_counts == ttinfodetailIds.length) { | |
| 64 | + deferred.reject(); | |
| 65 | + } | |
| 66 | + } else { | |
| 67 | + for (var key in updateObject) { | |
| 68 | + if (updateObject[key]) { | |
| 69 | + value[key] = updateObject[key]; | |
| 70 | + } | |
| 71 | + } | |
| 72 | + } | |
| 73 | + value.$save(function() { | |
| 74 | + if (value.status == 'ERROR') { | |
| 75 | + error_counts ++; | |
| 76 | + if (success_counts + error_counts == ttinfodetailIds.length) { | |
| 77 | + deferred.reject(); | |
| 78 | + } | |
| 79 | + } else { | |
| 80 | + // 赋值(上下行,发车时间,班次类型,起点站,终点站,停车场) | |
| 81 | + if (value.fcsj) { | |
| 82 | + ttinfodetailIds[index].fcsj = value.fcsj; | |
| 83 | + } | |
| 84 | + if (value.xlDir) { | |
| 85 | + ttinfodetailIds[index].xldir = value.xlDir; | |
| 86 | + } | |
| 87 | + if (value.bcType) { | |
| 88 | + ttinfodetailIds[index].bc_type = value.bcType; | |
| 89 | + } | |
| 90 | + if (value.qdz) { | |
| 91 | + ttinfodetailIds[index].qdz = value.qdz; | |
| 92 | + } | |
| 93 | + if (value.zdz) { | |
| 94 | + ttinfodetailIds[index].zdz = value.zdz; | |
| 95 | + } | |
| 96 | + if (value.tcc) { | |
| 97 | + ttinfodetailIds[index].tcc = value.tcc; | |
| 98 | + } | |
| 99 | + | |
| 100 | + success_counts ++; | |
| 101 | + if (success_counts + error_counts == ttinfodetailIds.length) { | |
| 102 | + deferred.resolve(); | |
| 103 | + } | |
| 104 | + } | |
| 105 | + }, function() { | |
| 106 | + error_counts ++; | |
| 107 | + if (success_counts + error_counts == ttinfodetailIds.length) { | |
| 108 | + deferred.reject(); | |
| 109 | + } | |
| 110 | + }); | |
| 111 | + }, function() { | |
| 112 | + error_counts ++; | |
| 113 | + if (success_counts + error_counts == ttinfodetailIds.length) { | |
| 114 | + deferred.reject(); | |
| 115 | + } | |
| 116 | + }); | |
| 117 | + })(n); | |
| 118 | + } | |
| 119 | + | |
| 120 | + return deferred.promise; | |
| 121 | + } | |
| 122 | + } | |
| 123 | + } | |
| 124 | + ] | |
| 125 | +); | |
| 126 | + | |
| 127 | +// edit3.html控制器 | |
| 128 | +angular.module('ScheduleApp').controller( | |
| 129 | + 'ttInfoDetailService_edit3_ctrl', | |
| 130 | + [ | |
| 131 | + 'ttInfoDetailService_edit3', | |
| 132 | + '$stateParams', | |
| 133 | + '$uibModal', | |
| 134 | + '$state', | |
| 135 | + '$scope', | |
| 136 | + '$window', | |
| 137 | + function(service, $stateParams, $uibModal, $state, $scope, $window) { | |
| 138 | + var self = this; | |
| 139 | + self.xlid = $stateParams.xlid; // 获取传过来的线路id | |
| 140 | + self.ttid = $stateParams.ttid; // 获取传过来的时刻表id | |
| 141 | + self.xlname = $stateParams.xlname; // 获取传过来的线路名字 | |
| 142 | + self.ttname = $stateParams.ttname; // 获取传过来的时刻表名字 | |
| 143 | + self.rflag = $stateParams.rflag; // 刷新标志 | |
| 144 | + | |
| 145 | + self.title = self.xlname + "(" + self.ttname + ")" + "时刻表明细信息"; | |
| 146 | + | |
| 147 | + self.editInfo = { | |
| 148 | + /** | |
| 149 | + * 时刻表明细表头 | |
| 150 | + * 格式:[‘路牌’, '出场', '某起点站', '某起点站', ...... , '空驶班次/空驶里程', '运营班次/运营里程'] | |
| 151 | + */ | |
| 152 | + detailHeads: [], // 时刻表头信息 | |
| 153 | + /** | |
| 154 | + * 时刻表班次明细信息 | |
| 155 | + * 格式:行列二维数组,类似一个表格,每个单元格为一个object,表示班次的信息 | |
| 156 | + * object格式: | |
| 157 | + * { | |
| 158 | + * ttdid : 时刻表id, | |
| 159 | + * fcsj : 发车时间, | |
| 160 | + * bc_type : 班次类型, | |
| 161 | + * xldir : 线路上下行, | |
| 162 | + * isfb : 是否分班, | |
| 163 | + * qdz : 起点站, | |
| 164 | + * zdz : 终点站, | |
| 165 | + * tcc : 停车场 | |
| 166 | + * } | |
| 167 | + */ | |
| 168 | + detailInfos: [], // 时刻表明细信息 | |
| 169 | + yydesc: "" // 营运汇总描述 | |
| 170 | + }; | |
| 171 | + self.refreshEditInfo = function() { | |
| 172 | + service.getEditInfo(self.xlid, self.ttid).then( | |
| 173 | + function(result) { | |
| 174 | + self.editInfo.detailHeads = result.header; | |
| 175 | + self.editInfo.detailInfos = result.contents; | |
| 176 | + self.editInfo.yydesc = result.yy_desc; | |
| 177 | + | |
| 178 | + // detailInfos里添加是否选中的flag | |
| 179 | + for (var i = 0; i < self.editInfo.detailInfos.length; i++) { | |
| 180 | + for (var j = 0; j < self.editInfo.detailInfos[i].length; j++) { | |
| 181 | + self.editInfo.detailInfos[i][j].sel = false; | |
| 182 | + } | |
| 183 | + } | |
| 184 | + } | |
| 185 | + ); | |
| 186 | + }; | |
| 187 | + | |
| 188 | + self.refreshEditInfo(); | |
| 189 | + | |
| 190 | + self.ttHeight = 500; // 时刻表的高度 | |
| 191 | + var w = angular.element($window); | |
| 192 | + $scope.$watch( | |
| 193 | + function(){ | |
| 194 | + return $window.innerHeight; | |
| 195 | + }, | |
| 196 | + function(value) { | |
| 197 | + // 监控窗口高度 | |
| 198 | + console.log(value); | |
| 199 | + //alert(value); | |
| 200 | + self.ttHeight = value - 295; | |
| 201 | + }, | |
| 202 | + true | |
| 203 | + ); | |
| 204 | + w.bind('resize', function() { | |
| 205 | + // 监控resize事件 | |
| 206 | + $scope.$apply(); | |
| 207 | + }); | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + // TODO: | |
| 213 | + // 查询对象类 | |
| 214 | + var TTInfoDetail = service.getQueryClass(); | |
| 215 | + | |
| 216 | + /** | |
| 217 | + * 单独修改班次明细。 | |
| 218 | + */ | |
| 219 | + self.singleEditBcDetail = function() { | |
| 220 | + var id = null; | |
| 221 | + if (self.editInfo && | |
| 222 | + self.editInfo.detailInfos && | |
| 223 | + self.editInfo.detailInfos.length > 0) { // 找出第一个被选中的就可以了 | |
| 224 | + for (var i = 0; i < self.editInfo.detailInfos.length; i++) { | |
| 225 | + for (var j = 0; j < self.editInfo.detailInfos[i].length; j++) { | |
| 226 | + if (self.editInfo.detailInfos[i][j].sel) { | |
| 227 | + id = self.editInfo.detailInfos[i][j].ttdid; | |
| 228 | + break; | |
| 229 | + } | |
| 230 | + } | |
| 231 | + if (id) { | |
| 232 | + break; | |
| 233 | + } | |
| 234 | + } | |
| 235 | + } | |
| 236 | + if (!id) { | |
| 237 | + alert("请选择具体班次!"); | |
| 238 | + } else { | |
| 239 | + $state.go('ttInfoDetailManage_detail_edit', | |
| 240 | + { | |
| 241 | + id: id, | |
| 242 | + xlid: self.xlid, | |
| 243 | + ttid: self.ttid, | |
| 244 | + xlname: self.xlname, | |
| 245 | + ttname: self.ttname | |
| 246 | + }); | |
| 247 | + } | |
| 248 | + }; | |
| 249 | + | |
| 250 | + /** | |
| 251 | + * 批量修改。 | |
| 252 | + */ | |
| 253 | + self.batchEditBcDetail = function() { | |
| 254 | + var flag = false; | |
| 255 | + if (self.editInfo && | |
| 256 | + self.editInfo.detailInfos && | |
| 257 | + self.editInfo.detailInfos.length > 0) { // 找出第一个被选中的就可以了 | |
| 258 | + for (var i = 0; i < self.editInfo.detailInfos.length; i++) { | |
| 259 | + for (var j = 0; j < self.editInfo.detailInfos[i].length; j++) { | |
| 260 | + if (self.editInfo.detailInfos[i][j].sel) { | |
| 261 | + flag = true; | |
| 262 | + break; | |
| 263 | + } | |
| 264 | + } | |
| 265 | + if (flag) { | |
| 266 | + break; | |
| 267 | + } | |
| 268 | + } | |
| 269 | + } | |
| 270 | + | |
| 271 | + if (!flag) { | |
| 272 | + alert("请选择具体班次!"); | |
| 273 | + } else { | |
| 274 | + $state.go('ttInfoDetailManage_detail_edit2', | |
| 275 | + { | |
| 276 | + xlid: self.xlid, | |
| 277 | + ttid: self.ttid, | |
| 278 | + xlname: self.xlname, | |
| 279 | + ttname: self.ttname | |
| 280 | + }); | |
| 281 | + } | |
| 282 | + }; | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + } | |
| 290 | + ] | |
| 291 | +); | |
| 0 | 292 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/route.js
| ... | ... | @@ -63,6 +63,24 @@ ScheduleApp.config([ |
| 63 | 63 | }] |
| 64 | 64 | } |
| 65 | 65 | }) |
| 66 | + .state("ttInfoDetailManage_edit3", { // 时刻表详细信息编辑 | |
| 67 | + url: '/ttInfoDetailManage_edit3/:xlid/:ttid/:xlname/:ttname/:rflag', | |
| 68 | + views: { | |
| 69 | + "": {templateUrl: 'pages/scheduleApp/module/core/ttInfoManage/detailedit/edit3.html'} | |
| 70 | + }, | |
| 71 | + resolve: { | |
| 72 | + deps: ['$ocLazyLoad', function($ocLazyLoad) { | |
| 73 | + return $ocLazyLoad.load({ | |
| 74 | + name: 'ttInfoDetailManage_edit_module', | |
| 75 | + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 | |
| 76 | + files: [ | |
| 77 | + "pages/scheduleApp/module/core/ttInfoManage/detailedit/timeTableDetailManage_old.js", | |
| 78 | + "pages/scheduleApp/module/core/ttInfoManage/detailedit/module_edit3.js" | |
| 79 | + ] | |
| 80 | + }); | |
| 81 | + }] | |
| 82 | + } | |
| 83 | + }) | |
| 66 | 84 | .state("ttInfoDetailManage_detail_edit", { // 时刻表详细信息单元格编辑 |
| 67 | 85 | url: '/ttInfoDetailManage_detail_edit/:id/:xlid/:ttid/:xlname/:ttname', |
| 68 | 86 | views: { | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/timeTableDetailManage_old.js
| ... | ... | @@ -91,7 +91,14 @@ angular.module('ScheduleApp').factory( |
| 91 | 91 | } else { |
| 92 | 92 | for (var key in updateObject) { |
| 93 | 93 | if (updateObject[key]) { |
| 94 | - value[key] = updateObject[key]; | |
| 94 | + if (key == 'tcc' || key == 'qdz' || key == 'zdz') { | |
| 95 | + if (updateObject[key].id) { | |
| 96 | + value[key] = updateObject[key]; | |
| 97 | + } | |
| 98 | + } else { | |
| 99 | + value[key] = updateObject[key]; | |
| 100 | + } | |
| 101 | + | |
| 95 | 102 | } |
| 96 | 103 | } |
| 97 | 104 | } |
| ... | ... | @@ -160,7 +167,9 @@ angular.module('ScheduleApp').controller( |
| 160 | 167 | '$stateParams', |
| 161 | 168 | '$uibModal', |
| 162 | 169 | '$state', |
| 163 | - function(service, $stateParams, $uibModal, $state) { | |
| 170 | + '$scope', | |
| 171 | + '$window', | |
| 172 | + function(service, $stateParams, $uibModal, $state, $scope, $window) { | |
| 164 | 173 | var self = this; |
| 165 | 174 | self.xlid = $stateParams.xlid; // 获取传过来的线路id |
| 166 | 175 | self.ttid = $stateParams.ttid; // 获取传过来的时刻表id |
| ... | ... | @@ -181,11 +190,76 @@ angular.module('ScheduleApp').controller( |
| 181 | 190 | return service.getEditInfo().yydesc; |
| 182 | 191 | }; |
| 183 | 192 | |
| 193 | + self.editInfo = undefined; | |
| 194 | + | |
| 195 | + $scope.$watch( | |
| 196 | + function() { | |
| 197 | + return service.getEditInfo(); | |
| 198 | + }, | |
| 199 | + function(n, o) { | |
| 200 | + self.editInfo = n; | |
| 201 | + }, | |
| 202 | + true | |
| 203 | + ); | |
| 204 | + | |
| 184 | 205 | // 刷新时刻表数据 |
| 185 | 206 | self.refresh = function() { |
| 186 | 207 | service.refreshEditInfo(self.xlid, self.ttid); |
| 187 | 208 | }; |
| 188 | 209 | |
| 210 | + self.ttHeight = 500; // 时刻表的高度 | |
| 211 | + var w = angular.element($window); | |
| 212 | + $scope.$watch( | |
| 213 | + function(){ | |
| 214 | + return $window.innerHeight; | |
| 215 | + }, | |
| 216 | + function(value) { | |
| 217 | + // 监控窗口高度 | |
| 218 | + console.log(value); | |
| 219 | + //alert(value); | |
| 220 | + self.ttHeight = value - 295; | |
| 221 | + }, | |
| 222 | + true | |
| 223 | + ); | |
| 224 | + w.bind('resize', function() { | |
| 225 | + // 监控resize事件 | |
| 226 | + $scope.$apply(); | |
| 227 | + }); | |
| 228 | + | |
| 229 | + /** | |
| 230 | + * 单独修改班次明细。 | |
| 231 | + */ | |
| 232 | + self.singleEditBcDetail = function() { | |
| 233 | + var id = null; | |
| 234 | + if (self.editInfo && | |
| 235 | + self.editInfo.detailInfos && | |
| 236 | + self.editInfo.detailInfos.length > 0) { // 找出第一个被选中的就可以了 | |
| 237 | + for (var i = 0; i < self.editInfo.detailInfos.length; i++) { | |
| 238 | + for (var j = 0; j < self.editInfo.detailInfos[i].length; j++) { | |
| 239 | + if (self.editInfo.detailInfos[i][j].sel) { | |
| 240 | + id = self.editInfo.detailInfos[i][j].ttdid; | |
| 241 | + break; | |
| 242 | + } | |
| 243 | + } | |
| 244 | + if (id) { | |
| 245 | + break; | |
| 246 | + } | |
| 247 | + } | |
| 248 | + } | |
| 249 | + if (!id) { | |
| 250 | + alert("请选择具体班次!"); | |
| 251 | + } else { | |
| 252 | + $state.go('ttInfoDetailManage_detail_edit', | |
| 253 | + { | |
| 254 | + id: id, | |
| 255 | + xlid: self.xlid, | |
| 256 | + ttid: self.ttid, | |
| 257 | + xlname: self.xlname, | |
| 258 | + ttname: self.ttname | |
| 259 | + }); | |
| 260 | + } | |
| 261 | + }; | |
| 262 | + | |
| 189 | 263 | // 批量修改 |
| 190 | 264 | self.editInfos = function() { |
| 191 | 265 | if (!service.editIsSel()) { |
| ... | ... | @@ -363,7 +437,13 @@ angular.module('ScheduleApp').controller( |
| 363 | 437 | } |
| 364 | 438 | } |
| 365 | 439 | } |
| 366 | - $state.go("ttInfoDetailManage_edit", { | |
| 440 | + //$state.go("ttInfoDetailManage_edit", { | |
| 441 | + // xlid: self.xlid, | |
| 442 | + // ttid: self.ttid, | |
| 443 | + // xlname: self.xlname, | |
| 444 | + // ttname: self.ttname | |
| 445 | + //}); | |
| 446 | + $state.go("ttInfoDetailManage_edit3", { | |
| 367 | 447 | xlid: self.xlid, |
| 368 | 448 | ttid: self.ttid, |
| 369 | 449 | xlname: self.xlname, |
| ... | ... | @@ -382,9 +462,10 @@ angular.module('ScheduleApp').controller( |
| 382 | 462 | 'TimeTableDetailManageFormCtrl_old2', |
| 383 | 463 | [ |
| 384 | 464 | 'TimeTableDetailManageService_old', |
| 465 | + 'ttInfoDetailService_edit3', | |
| 385 | 466 | '$stateParams', |
| 386 | 467 | '$state', |
| 387 | - function(service, $stateParams, $state) { | |
| 468 | + function(service, service2, $stateParams, $state) { | |
| 388 | 469 | var self = this; |
| 389 | 470 | var TTInfoDetail = service.getQueryClass(); |
| 390 | 471 | |
| ... | ... | @@ -396,10 +477,10 @@ angular.module('ScheduleApp').controller( |
| 396 | 477 | self.float_regex = /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/; |
| 397 | 478 | |
| 398 | 479 | // 欲保存的busInfo信息,绑定 |
| 399 | - self.TimeTableDetailForSave = new TTInfoDetail; | |
| 400 | - self.TimeTableDetailForSave.tcc = {}; | |
| 401 | - self.TimeTableDetailForSave.qdz = {}; | |
| 402 | - self.TimeTableDetailForSave.zdz = {}; | |
| 480 | + self.tt = new TTInfoDetail; | |
| 481 | + self.tt.tcc = {id: undefined}; | |
| 482 | + self.tt.qdz = {id: undefined}; | |
| 483 | + self.tt.zdz = {id: undefined}; | |
| 403 | 484 | |
| 404 | 485 | // 获取传过来的id,有的话就是修改,获取一遍数据 |
| 405 | 486 | self.xlid = $stateParams.xlid; // 获取传过来的线路id |
| ... | ... | @@ -411,15 +492,25 @@ angular.module('ScheduleApp').controller( |
| 411 | 492 | |
| 412 | 493 | // 提交方法 |
| 413 | 494 | self.submit = function() { |
| 414 | - if (!self.TimeTableDetailForSave.tcc.id) | |
| 415 | - delete self.TimeTableDetailForSave.tcc; | |
| 416 | - if (!self.TimeTableDetailForSave.qdz.id) | |
| 417 | - delete self.TimeTableDetailForSave.qdz; | |
| 418 | - if (!self.TimeTableDetailForSave.zdz.id) | |
| 419 | - delete self.TimeTableDetailForSave.zdz; | |
| 420 | - | |
| 421 | - service.editInfos(self.TimeTableDetailForSave).then(function() { | |
| 422 | - $state.go("ttInfoDetailManage_edit", { | |
| 495 | + //service.editInfos(self.tt).then(function() { | |
| 496 | + // $state.go("ttInfoDetailManage_edit", { | |
| 497 | + // xlid: self.xlid, | |
| 498 | + // ttid: self.ttid, | |
| 499 | + // xlname: self.xlname, | |
| 500 | + // ttname: self.ttname | |
| 501 | + // }); | |
| 502 | + //}, function() { | |
| 503 | + // alert("批量更新失败!"); | |
| 504 | + // $state.go("ttInfoDetailManage_edit", { | |
| 505 | + // xlid: self.xlid, | |
| 506 | + // ttid: self.ttid, | |
| 507 | + // xlname: self.xlname, | |
| 508 | + // ttname: self.ttname | |
| 509 | + // }); | |
| 510 | + //}); | |
| 511 | + | |
| 512 | + service.editInfos(self.tt).then(function() { | |
| 513 | + $state.go("ttInfoDetailManage_edit3", { | |
| 423 | 514 | xlid: self.xlid, |
| 424 | 515 | ttid: self.ttid, |
| 425 | 516 | xlname: self.xlname, |
| ... | ... | @@ -427,7 +518,7 @@ angular.module('ScheduleApp').controller( |
| 427 | 518 | }); |
| 428 | 519 | }, function() { |
| 429 | 520 | alert("批量更新失败!"); |
| 430 | - $state.go("ttInfoDetailManage_edit", { | |
| 521 | + $state.go("ttInfoDetailManage_edit3", { | |
| 431 | 522 | xlid: self.xlid, |
| 432 | 523 | ttid: self.ttid, |
| 433 | 524 | xlname: self.xlname, | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/list.html
| ... | ... | @@ -83,6 +83,8 @@ |
| 83 | 83 | class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 编辑 </a> |
| 84 | 84 | <!--<a ui-sref="ttInfoDetailManage_edit2({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})"--> |
| 85 | 85 | <!--class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 编辑2 </a>--> |
| 86 | + <a ui-sref="ttInfoDetailManage_edit3({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name, rflag : true})" | |
| 87 | + class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 编辑3 </a> | |
| 86 | 88 | <a ng-click="ctrl.toTtInfoDetailAuto(info.id)" |
| 87 | 89 | class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 生成 </a> |
| 88 | 90 | <a ui-sref="ttInfoDetailManage_form({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})" | ... | ... |