Commit 1d7c777b77a74e4d9512475c51ecb9fab1c3b9f1
Merge branch 'minhang' of http://192.168.168.201:8888/panzhaov5/bsth_control into minhang
Showing
4 changed files
with
654 additions
and
555 deletions
src/main/resources/static/real_control_v2/fragments/geo/calc_station_space.html
| 1 | -<!-- 嵌入下抽屉 --> | |
| 2 | -<div id="cal_station_space_drawer" style="width: 100%;height: 100%;"> | |
| 3 | - | |
| 4 | - <div style="text-align: center;padding-top: 30px;" class="calcBeforePanel"> | |
| 5 | - <p style="margin: 9px 0 9px 0;">当前站点间里程数据取自 <a target="_blank" id="stationRouteLink">基础信息->线路信息->站点详细</a> | |
| 6 | - 你可以手动编辑。</p> | |
| 7 | - <p style="margin: 9px 0 9px 0;">此外,我们提供另一种选择,根据路段和站点空间坐标计算站间距。计算后的数据将存储在本地。 | |
| 8 | - </p> | |
| 9 | - <p style="margin: 0px 0 9px 0;"> | |
| 10 | - <span style="color: grey;font-size: 12px;">该操作会借用本地计算能力进行,如果你同意,请点击下方按钮!</span> | |
| 11 | - </p> | |
| 12 | - <p style="margin: 9px 0 9px 0;"> | |
| 13 | - <button class="uk-button uk-button-large uk-button-primary" type="button" id="startCalcBtn">开始计算</button> | |
| 14 | - </p> | |
| 15 | - </div> | |
| 16 | - | |
| 17 | - <div class="pace pace-active" style="display: none;"> | |
| 18 | - <div class="pace-progress" data-progress="50" data-progress-text="50%" | |
| 19 | - style="-webkit-transform: translate3d(50%, 0px, 0px); -ms-transform: translate3d(50%, 0px, 0px); transform: translate3d(50%, 0px, 0px);"> | |
| 20 | - <div class="pace-progress-inner"></div> | |
| 21 | - </div> | |
| 22 | - <div class="pace-activity"></div> | |
| 23 | - <span class="text"></span> | |
| 24 | - </div> | |
| 25 | - | |
| 26 | - <script> | |
| 27 | - | |
| 28 | - (function () { | |
| 29 | - var drawer = '#cal_station_space_drawer' | |
| 30 | - , sch, line; | |
| 31 | - | |
| 32 | - $(drawer).on('drawer-init', function (e, data) { | |
| 33 | - sch = data.sch; | |
| 34 | - line = gb_data_basic.codeToLine[sch.xlBm]; | |
| 35 | - //线路路由信息调整链接 | |
| 36 | - $('#stationRouteLink', drawer).attr('href', '/pages/base/stationroute/list.html?no=' + line.id); | |
| 37 | - | |
| 38 | - $('#startCalcBtn', drawer).on('click', startCalc); | |
| 39 | - }); | |
| 40 | - | |
| 41 | - | |
| 42 | - function startCalc() { | |
| 43 | - $(this).attr('disabled', 'disabled'); | |
| 44 | - | |
| 45 | - gb_common.$get('/realMap/findRouteAndStationByLine', {lineCode: line.lineCode}, function (spatialData) { | |
| 46 | - $('.calcBeforePanel', drawer).hide(); | |
| 47 | - $('.pace', drawer).show(); | |
| 48 | - | |
| 49 | - startGeoCalc(spatialData); | |
| 50 | - }); | |
| 51 | - } | |
| 52 | - | |
| 53 | - function startGeoCalc(spatialData) { | |
| 54 | - setCalcText('初始化数据'); | |
| 55 | - //console.log('spatialData', spatialData); | |
| 56 | - //路段上下行分组排序 | |
| 57 | - var sections = gb_common.groupBy(spatialData.section, 'DIRECTIONS'); | |
| 58 | - sections[0].sort(sectionArrSort); | |
| 59 | - sections[1].sort(sectionArrSort); | |
| 60 | - | |
| 61 | - //站点上下行分组排序 | |
| 62 | - var stations = gb_common.groupBy(spatialData.station, 'DIRECTIONS'); | |
| 63 | - stations[0].sort(stationArrSort); | |
| 64 | - stations[1].sort(stationArrSort); | |
| 65 | - | |
| 66 | - setCalcText('拼接路段,计算重叠区域'); | |
| 67 | - var fullSections = [ | |
| 68 | - connectSections(sections[0]), | |
| 69 | - connectSections(sections[1]) | |
| 70 | - ]; | |
| 71 | - | |
| 72 | - setCalcText('计算上行数据'); | |
| 73 | - var upCalcRs = calcStationSpace(stations[0], fullSections[0]); | |
| 74 | - | |
| 75 | - setCalcText('计算下行数据'); | |
| 76 | - var downCalcRs = calcStationSpace(stations[1], fullSections[1]); | |
| 77 | - | |
| 78 | - var locData={ | |
| 79 | - stations: {up: upCalcRs,down: downCalcRs}, | |
| 80 | - sections: {up: fullSections[0], down: fullSections[1]} | |
| 81 | - }; | |
| 82 | - | |
| 83 | - window.localStorage.setItem('control_route_distance_'+sch.xlBm, JSON.stringify(locData)); | |
| 84 | - //console.log('结果', locData); | |
| 85 | - } | |
| 86 | - | |
| 87 | - function sectionArrSort(s1, s2) { | |
| 88 | - return s1.SECTIONROUTE_CODE - s2.SECTIONROUTE_CODE; | |
| 89 | - } | |
| 90 | - | |
| 91 | - function stationArrSort(s1, s2) { | |
| 92 | - return s1.STATION_ROUTE_CODE - s2.STATION_ROUTE_CODE; | |
| 93 | - } | |
| 94 | - | |
| 95 | - function setCalcText(t) { | |
| 96 | - $('.pace .text', drawer).text(t); | |
| 97 | - } | |
| 98 | - | |
| 99 | - //连接路段数组 | |
| 100 | - function connectSections(sectionArray) { | |
| 101 | - var coords = []; | |
| 102 | - | |
| 103 | - var vs, temps; | |
| 104 | - for (var i = 0, section; section = sectionArray[i++];) { | |
| 105 | - vs = section.GSECTION_VECTOR; | |
| 106 | - temps = vs.substr(11, vs.length - 2).split(','); | |
| 107 | - | |
| 108 | - connectCoords(coords, temps); | |
| 109 | - } | |
| 110 | - return coords; | |
| 111 | - } | |
| 112 | - | |
| 113 | - function connectCoords(all, subArr) { | |
| 114 | - | |
| 115 | - var point, ts, len = all.length, inLine, sIndex = 0; | |
| 116 | - if (len > 0) { | |
| 117 | - $.each(subArr, function (i, p) { | |
| 118 | - ts = p.split(' '); | |
| 119 | - point = {latitude: parseFloat(ts[1]), longitude: parseFloat(ts[0])}; | |
| 120 | - //找到起始点 | |
| 121 | - sIndex = 0; | |
| 122 | - for (var j = 1; j < len; j++) { | |
| 123 | - inLine = geolib.isPointInLine(point, all[j - 1], all[j]); | |
| 124 | - | |
| 125 | - if (inLine) | |
| 126 | - break; | |
| 127 | - else | |
| 128 | - sIndex = i; | |
| 129 | - } | |
| 130 | - }); | |
| 131 | - } | |
| 132 | - | |
| 133 | - //拼接 | |
| 134 | - for (var i = sIndex; i < subArr.length; i++) { | |
| 135 | - ts = subArr[i].split(' '); | |
| 136 | - all.push({ | |
| 137 | - latitude: parseFloat(ts[1]), longitude: parseFloat(ts[0]) | |
| 138 | - }); | |
| 139 | - } | |
| 140 | - } | |
| 141 | - | |
| 142 | - //计算站点间距 | |
| 143 | - function calcStationSpace(stations, coords) { | |
| 144 | - | |
| 145 | - var nearArray = []; | |
| 146 | - for (var i = 1; i < stations.length; i++) { | |
| 147 | - | |
| 148 | - //点到线的最短距离 并计算交点坐标 | |
| 149 | - var rs = calcPointToLineNearPoint({ | |
| 150 | - latitude: stations[i].G_LATY, | |
| 151 | - longitude: stations[i].G_LONX | |
| 152 | - }, coords); | |
| 153 | - rs.station = stations[i]; | |
| 154 | - | |
| 155 | - //将交点插入线路中 | |
| 156 | - coords.splice(rs.index, 0, rs.intersection); | |
| 157 | - | |
| 158 | - nearArray.push(rs); | |
| 159 | - //console.log('站点' + i + '计算结果', rs.intersection, rs); | |
| 160 | - } | |
| 161 | - | |
| 162 | - //根据交点截断line,并计算距离 | |
| 163 | - var s = 0, e, distance; | |
| 164 | - $.each(nearArray, function (i) { | |
| 165 | - e = this.index; | |
| 166 | - distance = 0; | |
| 167 | - for (; s < e; s++) { | |
| 168 | - distance += geolib.getDistance(coords[s], coords[s + 1]); | |
| 169 | - } | |
| 170 | - | |
| 171 | - this.toDistance = distance; | |
| 172 | - s = e; | |
| 173 | - }); | |
| 174 | - return nearArray; | |
| 175 | - } | |
| 176 | - | |
| 177 | - function calcPointToLineNearPoint(point, coords) { | |
| 178 | - var minRs, rs; | |
| 179 | - for (var i = 1; i < coords.length; i++) { | |
| 180 | - | |
| 181 | - var start = coords[i - 1], end = coords[i]; | |
| 182 | - var d1 = geolib.getDistance(start, point, 1, 3); | |
| 183 | - var d2 = geolib.getDistance(point, end, 1, 3); | |
| 184 | - var d3 = geolib.getDistance(start, end, 1, 3); | |
| 185 | - | |
| 186 | - var alpha = Math.acos((d1 * d1 + d3 * d3 - d2 * d2) / (2 * d1 * d3)); | |
| 187 | - var beta = Math.acos((d2 * d2 + d3 * d3 - d1 * d1) / (2 * d2 * d3)); | |
| 188 | - | |
| 189 | - if (d3 < 0.5 || isNaN(alpha) || isNaN(beta)) | |
| 190 | - continue; | |
| 191 | - | |
| 192 | - rs = {index: i}; | |
| 193 | - if (alpha > Math.PI / 2) { | |
| 194 | - rs.distance = d1; | |
| 195 | - rs.intersection = start; | |
| 196 | - } | |
| 197 | - else if (beta > Math.PI / 2) { | |
| 198 | - rs.distance = d2; | |
| 199 | - rs.intersection = end; | |
| 200 | - } | |
| 201 | - else { | |
| 202 | - rs.distance = Math.sin(alpha) * d1; | |
| 203 | - rs.intersection = perpendularPoint(start, end, point); | |
| 204 | - } | |
| 205 | - | |
| 206 | - if (!minRs || minRs.distance > rs.distance) | |
| 207 | - minRs = rs | |
| 208 | - } | |
| 209 | - | |
| 210 | - return minRs; | |
| 211 | - } | |
| 212 | - | |
| 213 | - //获取点 到 线的垂直交点 | |
| 214 | - function perpendularPoint(lp1, lp2, p) { | |
| 215 | - var a = lp1.latitude - lp2.latitude, b = lp2.longitude - lp1.longitude, c = lp1.longitude * lp2.latitude - lp2.longitude * lp1.latitude; | |
| 216 | - var lon = (Math.pow(b, 2) * p.longitude - a * b * p.latitude - a * c) / (Math.pow(a, 2) + Math.pow(b, 2)); | |
| 217 | - var lat = (Math.pow(a, 2) * p.latitude - a * b * p.longitude - b * c) / (Math.pow(a, 2) + Math.pow(b, 2)); | |
| 218 | - return {longitude: lon, latitude: lat}; | |
| 219 | - } | |
| 220 | - | |
| 221 | - })(); | |
| 222 | - </script> | |
| 1 | +<!-- 嵌入下抽屉 --> | |
| 2 | +<div id="cal_station_space_drawer" style="width: 100%;height: 100%;"> | |
| 3 | + | |
| 4 | + <div style="text-align: center;padding-top: 30px;" class="calcBeforePanel"> | |
| 5 | + <p style="margin: 9px 0 9px 0;">当前站点间里程数据取自 <a target="_blank" id="stationRouteLink">基础信息->线路信息->站点详细</a> | |
| 6 | + 你可以手动编辑。</p> | |
| 7 | + <p style="margin: 9px 0 9px 0;">此外,我们提供另一种选择,根据路段和站点空间坐标计算站间距。计算后的数据将存储在本地。 | |
| 8 | + </p> | |
| 9 | + <p style="margin: 0px 0 9px 0;"> | |
| 10 | + <span style="color: grey;font-size: 12px;">该操作会借用本地计算能力进行,如果你同意,请点击下方按钮!</span> | |
| 11 | + </p> | |
| 12 | + <p style="margin: 9px 0 9px 0;"> | |
| 13 | + <button class="uk-button uk-button-large uk-button-primary" type="button" id="startCalcBtn">开始计算</button> | |
| 14 | + </p> | |
| 15 | + </div> | |
| 16 | + | |
| 17 | + <div class="pace pace-active" style="display: none;"> | |
| 18 | + <div class="pace-progress" data-progress="50" data-progress-text="50%" | |
| 19 | + style="-webkit-transform: translate3d(50%, 0px, 0px); -ms-transform: translate3d(50%, 0px, 0px); transform: translate3d(50%, 0px, 0px);"> | |
| 20 | + <div class="pace-progress-inner"></div> | |
| 21 | + </div> | |
| 22 | + <div class="pace-activity"></div> | |
| 23 | + <span class="text"></span> | |
| 24 | + </div> | |
| 25 | + | |
| 26 | + <script> | |
| 27 | + | |
| 28 | + (function () { | |
| 29 | + var drawer = '#cal_station_space_drawer' | |
| 30 | + , sch, line; | |
| 31 | + | |
| 32 | + $(drawer).on('drawer-init', function (e, data) { | |
| 33 | + sch = data.sch; | |
| 34 | + line = gb_data_basic.codeToLine[sch.xlBm]; | |
| 35 | + //线路路由信息调整链接 | |
| 36 | + $('#stationRouteLink', drawer).attr('href', '/pages/base/stationroute/list.html?no=' + line.id); | |
| 37 | + | |
| 38 | + $('#startCalcBtn', drawer).on('click', startCalc); | |
| 39 | + }); | |
| 40 | + | |
| 41 | + | |
| 42 | + function startCalc() { | |
| 43 | + $(this).attr('disabled', 'disabled'); | |
| 44 | + | |
| 45 | + gb_common.$get('/realMap/findRouteAndStationByLine', {lineCode: line.lineCode}, function (spatialData) { | |
| 46 | + $('.calcBeforePanel', drawer).hide(); | |
| 47 | + $('.pace', drawer).show(); | |
| 48 | + | |
| 49 | + startGeoCalc(spatialData); | |
| 50 | + }); | |
| 51 | + } | |
| 52 | + | |
| 53 | + function startGeoCalc(spatialData) { | |
| 54 | + setCalcText('初始化数据'); | |
| 55 | + //console.log('spatialData', spatialData); | |
| 56 | + //路段上下行分组排序 | |
| 57 | + var sections = gb_common.groupBy(spatialData.section, 'DIRECTIONS'); | |
| 58 | + sections[0].sort(sectionArrSort); | |
| 59 | + sections[1].sort(sectionArrSort); | |
| 60 | + | |
| 61 | + //站点上下行分组排序 | |
| 62 | + var stations = gb_common.groupBy(spatialData.station, 'DIRECTIONS'); | |
| 63 | + stations[0].sort(stationArrSort); | |
| 64 | + stations[1].sort(stationArrSort); | |
| 65 | + | |
| 66 | + setCalcText('拼接路段,计算重叠区域'); | |
| 67 | + var fullSections = [ | |
| 68 | + connectSections(sections[0]), | |
| 69 | + connectSections(sections[1]) | |
| 70 | + ]; | |
| 71 | + | |
| 72 | + setCalcText('计算上行数据'); | |
| 73 | + var upCalcRs = calcStationSpace(stations[0], fullSections[0]); | |
| 74 | + | |
| 75 | + setCalcText('计算下行数据'); | |
| 76 | + var downCalcRs = calcStationSpace(stations[1], fullSections[1]); | |
| 77 | + | |
| 78 | + var locData = { | |
| 79 | + stations: {up: upCalcRs, down: downCalcRs}, | |
| 80 | + sections: {up: fullSections[0], down: fullSections[1]} | |
| 81 | + }; | |
| 82 | + | |
| 83 | + window.localStorage.setItem('control_route_distance_' + sch.xlBm, JSON.stringify(locData)); | |
| 84 | + //console.log('结果', locData); | |
| 85 | + } | |
| 86 | + | |
| 87 | + function sectionArrSort(s1, s2) { | |
| 88 | + return s1.SECTIONROUTE_CODE - s2.SECTIONROUTE_CODE; | |
| 89 | + } | |
| 90 | + | |
| 91 | + function stationArrSort(s1, s2) { | |
| 92 | + return s1.STATION_ROUTE_CODE - s2.STATION_ROUTE_CODE; | |
| 93 | + } | |
| 94 | + | |
| 95 | + function setCalcText(t) { | |
| 96 | + $('.pace .text', drawer).text(t); | |
| 97 | + } | |
| 98 | + | |
| 99 | + //连接路段数组 | |
| 100 | + function connectSections(sectionArray) { | |
| 101 | + var coords = []; | |
| 102 | + | |
| 103 | + var vs, temps; | |
| 104 | + for (var i = 0, section; section = sectionArray[i++];) { | |
| 105 | + vs = section.GSECTION_VECTOR; | |
| 106 | + temps = vs.substr(11, vs.length - 2).split(','); | |
| 107 | + | |
| 108 | + connectCoords(coords, temps); | |
| 109 | + } | |
| 110 | + return coords; | |
| 111 | + } | |
| 112 | + | |
| 113 | + function connectCoords(all, subArr) { | |
| 114 | + | |
| 115 | + var point, ts, len = all.length, inLine, sIndex = 0; | |
| 116 | + if (len > 0) { | |
| 117 | + $.each(subArr, function (i, p) { | |
| 118 | + ts = p.split(' '); | |
| 119 | + point = {latitude: parseFloat(ts[1]), longitude: parseFloat(ts[0])}; | |
| 120 | + //找到起始点 | |
| 121 | + sIndex = 0; | |
| 122 | + for (var j = 1; j < len; j++) { | |
| 123 | + inLine = geolib.isPointInLine(point, all[j - 1], all[j]); | |
| 124 | + | |
| 125 | + if (inLine) | |
| 126 | + break; | |
| 127 | + else | |
| 128 | + sIndex = i; | |
| 129 | + } | |
| 130 | + }); | |
| 131 | + } | |
| 132 | + | |
| 133 | + //拼接 | |
| 134 | + for (var i = sIndex; i < subArr.length; i++) { | |
| 135 | + ts = subArr[i].split(' '); | |
| 136 | + all.push({ | |
| 137 | + latitude: parseFloat(ts[1]), longitude: parseFloat(ts[0]) | |
| 138 | + }); | |
| 139 | + } | |
| 140 | + } | |
| 141 | + | |
| 142 | + //计算站点间距 | |
| 143 | + function calcStationSpace(stations, coords) { | |
| 144 | + | |
| 145 | + var nearArray = []; | |
| 146 | + for (var i = 1; i < stations.length; i++) { | |
| 147 | + | |
| 148 | + //点到线的最短距离 并计算交点坐标 | |
| 149 | + var rs = calcPointToLineNearPoint({ | |
| 150 | + latitude: stations[i].G_LATY, | |
| 151 | + longitude: stations[i].G_LONX | |
| 152 | + }, coords); | |
| 153 | + rs.station = stations[i]; | |
| 154 | + | |
| 155 | + //将交点插入线路中 | |
| 156 | + coords.splice(rs.index, 0, rs.intersection); | |
| 157 | + | |
| 158 | + nearArray.push(rs); | |
| 159 | + //console.log('站点' + i + '计算结果', rs.intersection, rs); | |
| 160 | + } | |
| 161 | + | |
| 162 | + //根据交点截断line,并计算距离 | |
| 163 | + var s = 0, e, distance; | |
| 164 | + $.each(nearArray, function (i) { | |
| 165 | + e = this.index; | |
| 166 | + distance = 0; | |
| 167 | + for (; s < e; s++) { | |
| 168 | + distance += geolib.getDistance(coords[s], coords[s + 1]); | |
| 169 | + } | |
| 170 | + | |
| 171 | + this.toDistance = distance; | |
| 172 | + s = e; | |
| 173 | + }); | |
| 174 | + | |
| 175 | + //首站 | |
| 176 | + nearArray.splice(0, 0, { | |
| 177 | + distance: 0, | |
| 178 | + station: stations[0], | |
| 179 | + toDistance: 0 | |
| 180 | + }); | |
| 181 | + return nearArray; | |
| 182 | + } | |
| 183 | + | |
| 184 | + function calcPointToLineNearPoint(point, coords) { | |
| 185 | + var minRs, rs; | |
| 186 | + for (var i = 1; i < coords.length; i++) { | |
| 187 | + | |
| 188 | + var start = coords[i - 1], end = coords[i]; | |
| 189 | + var d1 = geolib.getDistance(start, point, 1, 3); | |
| 190 | + var d2 = geolib.getDistance(point, end, 1, 3); | |
| 191 | + var d3 = geolib.getDistance(start, end, 1, 3); | |
| 192 | + | |
| 193 | + var alpha = Math.acos((d1 * d1 + d3 * d3 - d2 * d2) / (2 * d1 * d3)); | |
| 194 | + var beta = Math.acos((d2 * d2 + d3 * d3 - d1 * d1) / (2 * d2 * d3)); | |
| 195 | + | |
| 196 | + if (d3 < 0.5 || isNaN(alpha) || isNaN(beta)) | |
| 197 | + continue; | |
| 198 | + | |
| 199 | + rs = {index: i}; | |
| 200 | + if (alpha > Math.PI / 2) { | |
| 201 | + rs.distance = d1; | |
| 202 | + rs.intersection = start; | |
| 203 | + } | |
| 204 | + else if (beta > Math.PI / 2) { | |
| 205 | + rs.distance = d2; | |
| 206 | + rs.intersection = end; | |
| 207 | + } | |
| 208 | + else { | |
| 209 | + rs.distance = Math.sin(alpha) * d1; | |
| 210 | + rs.intersection = perpendularPoint(start, end, point); | |
| 211 | + } | |
| 212 | + | |
| 213 | + if (!minRs || minRs.distance > rs.distance) | |
| 214 | + minRs = rs | |
| 215 | + } | |
| 216 | + | |
| 217 | + return minRs; | |
| 218 | + } | |
| 219 | + | |
| 220 | + //获取点 到 线的垂直交点 | |
| 221 | + function perpendularPoint(lp1, lp2, p) { | |
| 222 | + var a = lp1.latitude - lp2.latitude, b = lp2.longitude - lp1.longitude, c = lp1.longitude * lp2.latitude - lp2.longitude * lp1.latitude; | |
| 223 | + var lon = (Math.pow(b, 2) * p.longitude - a * b * p.latitude - a * c) / (Math.pow(a, 2) + Math.pow(b, 2)); | |
| 224 | + var lat = (Math.pow(a, 2) * p.latitude - a * b * p.longitude - b * c) / (Math.pow(a, 2) + Math.pow(b, 2)); | |
| 225 | + return {longitude: lon, latitude: lat}; | |
| 226 | + } | |
| 227 | + | |
| 228 | + })(); | |
| 229 | + </script> | |
| 223 | 230 | </div> |
| 224 | 231 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_inpark.html
| 1 | -<div class="uk-modal" id="add-sub-task-inpark-modal"> | |
| 2 | - <div class="uk-modal-dialog"> | |
| 3 | - <a href="" class="uk-modal-close uk-close"></a> | |
| 4 | - <div class="uk-modal-header"> | |
| 5 | - <h2>回场子任务</h2></div> | |
| 6 | - | |
| 7 | - <div style="width: 100%;padding-left: 1%;"> | |
| 8 | - <div class="sub-task-card"> | |
| 9 | - <div class="uk-panel uk-panel-box uk-panel-box-primary"> | |
| 10 | - <div class="uk-panel-badge uk-badge">营运</div> | |
| 11 | - <h3 class="uk-panel-title">线路上站点间</h3> | |
| 12 | - <form class="uk-form uk-form-horizontal" service_form> | |
| 13 | - <div class="uk-grid"> | |
| 14 | - <div class="uk-width-3-10"> | |
| 15 | - <div class="uk-form-row"> | |
| 16 | - <label class="uk-form-label">起点 </label> | |
| 17 | - </div> | |
| 18 | - </div> | |
| 19 | - <div class="uk-width-7-10 pl5"> | |
| 20 | - <select name="startStation" disabled></select> | |
| 21 | - </div> | |
| 22 | - </div> | |
| 23 | - <div class="uk-grid"> | |
| 24 | - <div class="uk-width-3-10"> | |
| 25 | - <div class="uk-form-row"> | |
| 26 | - <label class="uk-form-label">终点 </label> | |
| 27 | - </div> | |
| 28 | - </div> | |
| 29 | - <div class="uk-width-7-10 pl5"> | |
| 30 | - <select name="endStation" class="ct_focus"></select> | |
| 31 | - </div> | |
| 32 | - </div> | |
| 33 | - <div class="uk-grid"> | |
| 34 | - <div class="uk-width-3-10"> | |
| 35 | - <div class="uk-form-row"> | |
| 36 | - <label class="uk-form-label">营运里程</label> | |
| 37 | - </div> | |
| 38 | - </div> | |
| 39 | - <div class="uk-width-7-10 pl5"> | |
| 40 | - <input type="text" name="mileageType" required> | |
| 41 | - </div> | |
| 42 | - </div> | |
| 43 | - <div class="uk-grid"> | |
| 44 | - <div class="uk-width-3-10"> | |
| 45 | - <div class="uk-form-row"> | |
| 46 | - <label class="uk-form-label">开始时间</label> | |
| 47 | - </div> | |
| 48 | - </div> | |
| 49 | - <div class="uk-width-7-10 pl5"> | |
| 50 | - <input type="time" name="startDate" required> | |
| 51 | - </div> | |
| 52 | - </div> | |
| 53 | - <div class="uk-grid"> | |
| 54 | - <div class="uk-width-3-10"> | |
| 55 | - <div class="uk-form-row"> | |
| 56 | - <label class="uk-form-label">结束时间</label> | |
| 57 | - </div> | |
| 58 | - </div> | |
| 59 | - <div class="uk-width-7-10 pl5"> | |
| 60 | - <input type="time" name="endDate" required> | |
| 61 | - </div> | |
| 62 | - </div> | |
| 63 | - </form> | |
| 64 | - </div> | |
| 65 | - </div> | |
| 66 | - <div class="sub-task-card"> | |
| 67 | - <div class="uk-panel uk-panel-box uk-panel-box-secondary"> | |
| 68 | - <div class="uk-panel-badge uk-badge uk-badge-default">空驶</div> | |
| 69 | - <h3 class="uk-panel-title">进场</h3> | |
| 70 | - <form class="uk-form uk-form-horizontal" empty_form> | |
| 71 | - <div class="uk-grid"> | |
| 72 | - <div class="uk-width-3-10"> | |
| 73 | - <div class="uk-form-row"> | |
| 74 | - <label class="uk-form-label">起点 </label> | |
| 75 | - </div> | |
| 76 | - </div> | |
| 77 | - <div class="uk-width-7-10 pl5"> | |
| 78 | - <select name="startStation" disabled></select> | |
| 79 | - </div> | |
| 80 | - </div> | |
| 81 | - <div class="uk-grid"> | |
| 82 | - <div class="uk-width-3-10"> | |
| 83 | - <div class="uk-form-row"> | |
| 84 | - <label class="uk-form-label">终点 </label> | |
| 85 | - </div> | |
| 86 | - </div> | |
| 87 | - <div class="uk-width-7-10 pl5"> | |
| 88 | - <select name="endStation" class="ct_focus"></select> | |
| 89 | - </div> | |
| 90 | - </div> | |
| 91 | - <div class="uk-grid"> | |
| 92 | - <div class="uk-width-3-10"> | |
| 93 | - <div class="uk-form-row"> | |
| 94 | - <label class="uk-form-label">空驶里程</label> | |
| 95 | - </div> | |
| 96 | - </div> | |
| 97 | - <div class="uk-width-7-10 pl5"> | |
| 98 | - <input type="text" name="mileageType" required style="width: calc(100% - 62px);"> | |
| 99 | - <a style="font-size: 12px;">路径(3)</a> | |
| 100 | - </div> | |
| 101 | - </div> | |
| 102 | - <div class="uk-grid"> | |
| 103 | - <div class="uk-width-3-10"> | |
| 104 | - <div class="uk-form-row"> | |
| 105 | - <label class="uk-form-label">开始时间</label> | |
| 106 | - </div> | |
| 107 | - </div> | |
| 108 | - <div class="uk-width-7-10 pl5"> | |
| 109 | - <input type="time" name="startDate" required> | |
| 110 | - </div> | |
| 111 | - </div> | |
| 112 | - <div class="uk-grid"> | |
| 113 | - <div class="uk-width-3-10"> | |
| 114 | - <div class="uk-form-row"> | |
| 115 | - <label class="uk-form-label">结束时间</label> | |
| 116 | - </div> | |
| 117 | - </div> | |
| 118 | - <div class="uk-width-7-10 pl5"> | |
| 119 | - <input type="time" name="endDate" required> | |
| 120 | - </div> | |
| 121 | - </div> | |
| 122 | - </form> | |
| 123 | - </div> | |
| 124 | - </div> | |
| 125 | - <div class="sub-task-card destroy-card uk-animation-scale"> | |
| 126 | - <div class="uk-panel uk-panel-box uk-panel-box-danger"> | |
| 127 | - <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div> | |
| 128 | - <h3 class="uk-panel-title">线路上站点间</h3> | |
| 129 | - <form class="uk-form uk-form-horizontal" destroy_form> | |
| 130 | - <div class="uk-grid"> | |
| 131 | - <div class="uk-width-3-10"> | |
| 132 | - <div class="uk-form-row"> | |
| 133 | - <label class="uk-form-label">起点 </label> | |
| 134 | - </div> | |
| 135 | - </div> | |
| 136 | - <div class="uk-width-7-10 pl5"> | |
| 137 | - <select name="startStation" disabled></select> | |
| 138 | - </div> | |
| 139 | - </div> | |
| 140 | - <div class="uk-grid"> | |
| 141 | - <div class="uk-width-3-10"> | |
| 142 | - <div class="uk-form-row"> | |
| 143 | - <label class="uk-form-label">终点 </label> | |
| 144 | - </div> | |
| 145 | - </div> | |
| 146 | - <div class="uk-width-7-10 pl5"> | |
| 147 | - <select name="endStation" class="ct_focus" disabled></select> | |
| 148 | - </div> | |
| 149 | - </div> | |
| 150 | - <div class="uk-grid"> | |
| 151 | - <div class="uk-width-3-10"> | |
| 152 | - <div class="uk-form-row"> | |
| 153 | - <label class="uk-form-label">烂班里程</label> | |
| 154 | - </div> | |
| 155 | - </div> | |
| 156 | - <div class="uk-width-7-10 pl5"> | |
| 157 | - <input type="text" name="mileageType" required> | |
| 158 | - </div> | |
| 159 | - </div> | |
| 160 | - <div class="uk-grid"> | |
| 161 | - <div class="uk-width-3-10"> | |
| 162 | - <div class="uk-form-row"> | |
| 163 | - <label class="uk-form-label">开始时间</label> | |
| 164 | - </div> | |
| 165 | - </div> | |
| 166 | - <div class="uk-width-7-10 pl5"> | |
| 167 | - <input type="time" name="startDate" required> | |
| 168 | - </div> | |
| 169 | - </div> | |
| 170 | - <div class="uk-grid"> | |
| 171 | - <div class="uk-width-3-10"> | |
| 172 | - <div class="uk-form-row"> | |
| 173 | - <label class="uk-form-label">烂班原因</label> | |
| 174 | - </div> | |
| 175 | - </div> | |
| 176 | - <div class="uk-width-7-10 pl5"> | |
| 177 | - <select name="destroyReason" required></select> | |
| 178 | - </div> | |
| 179 | - </div> | |
| 180 | - </form> | |
| 181 | - </div> | |
| 182 | - </div> | |
| 183 | - | |
| 184 | - <form class="uk-form" style="margin-top: 15px; padding: 0 10px 0 0;"> | |
| 185 | - <textarea placeholder="备注" style="width: 100%;height: 70px;"></textarea> | |
| 186 | - </form> | |
| 187 | - </div> | |
| 188 | - | |
| 189 | - <div class="uk-modal-footer uk-text-right"> | |
| 190 | - <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 191 | - <button type="button" class="uk-button uk-button-primary">提交子任务</button> | |
| 192 | - | |
| 193 | - <div class="ct-footer-left"> | |
| 194 | - <a id="betweenStationRangeCalc" data-drawer-id="cal_station_space_drawer">站点间公里不准?</a> | |
| 195 | - </div> | |
| 196 | - </div> | |
| 197 | - </div> | |
| 198 | - | |
| 199 | - <div class="ct-bottom-drawer"> | |
| 200 | - <a class="ct-bottom-drawer-close"></a> | |
| 201 | - | |
| 202 | - <div class="ct-bottom-drawer-body"></div> | |
| 203 | - </div> | |
| 204 | - | |
| 205 | - <script id="sub-task-inpark-form-temp" type="text/html"> | |
| 206 | - </script> | |
| 207 | - | |
| 208 | - <script> | |
| 209 | - (function () { | |
| 210 | - var modal = '#add-sub-task-inpark-modal', | |
| 211 | - serviceForm = $('form[service_form]', modal), | |
| 212 | - emptyForm = $('form[empty_form]', modal), | |
| 213 | - destroyForm = $('form[destroy_form]', modal), | |
| 214 | - sch, stationRoutes, parks, information, esCode; | |
| 215 | - var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他']; | |
| 216 | - $(modal).on('init', function (e, data) { | |
| 217 | - sch = data.sch; | |
| 218 | - //var formHtml = template('sub-task-inpark-form-temp', {sch:sch, adjustExps: adjustExps}); | |
| 219 | - //$('form', modal).html(formHtml); | |
| 220 | - //字典转换 | |
| 221 | - //dictionaryUtils.transformDom($('.nt-dictionary', modal)); | |
| 222 | - | |
| 223 | - //站点路由 | |
| 224 | - stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | |
| 225 | - return a.stationRouteCode - b.stationRouteCode; | |
| 226 | - }), 'directions')[sch.xlDir]; | |
| 227 | - //空驶终点(停车场) | |
| 228 | - $.get('/basic/parks', function (rs) { | |
| 229 | - parks = rs; | |
| 230 | - var opts = ''; | |
| 231 | - for (var code in parks) { | |
| 232 | - opts += '<option value="' + code + '">' + parks[code] + '</option>'; | |
| 233 | - } | |
| 234 | - $('select[name=endStation]', emptyForm).html(opts).val(information.carPark); | |
| 235 | - }); | |
| 236 | - //线路标准 | |
| 237 | - information = gb_data_basic.getLineInformation(sch.xlBm); | |
| 238 | - | |
| 239 | - var routeOpts = ''; | |
| 240 | - $.each(stationRoutes, function () { | |
| 241 | - routeOpts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'; | |
| 242 | - }); | |
| 243 | - esCode = stationRoutes[stationRoutes.length - 1].stationCode; | |
| 244 | - | |
| 245 | - //营运起终点 | |
| 246 | - $('select[name=startStation],select[name=endStation]', serviceForm).html(routeOpts); | |
| 247 | - //空驶起点 | |
| 248 | - $('select[name=startStation]', emptyForm).html(routeOpts).val(esCode); | |
| 249 | - //烂班起终点 | |
| 250 | - $('select[name=startStation],select[name=endStation]', destroyForm).html(routeOpts).val(esCode); | |
| 251 | - | |
| 252 | - //烂班原因 | |
| 253 | - var adjustExpsOpts = '<option value="">请选择...</option>'; | |
| 254 | - $.each(adjustExps, function (i, str) { | |
| 255 | - adjustExpsOpts += '<option value="' + str + '">' + str + '</option>'; | |
| 256 | - }); | |
| 257 | - $('select[name=destroyReason]', destroyForm).html(adjustExpsOpts); | |
| 258 | - | |
| 259 | - //切换营运终点 | |
| 260 | - $('select[name=endStation]', serviceForm).val(esCode).on('change', function () { | |
| 261 | - var val = $(this).val(); | |
| 262 | - if (val == esCode) { | |
| 263 | - $('.uk-modal-dialog', modal).removeClass('three-children'); | |
| 264 | - $('.sub-task-card.destroy-card').css("display", "none"); | |
| 265 | - } | |
| 266 | - else { | |
| 267 | - $('.uk-modal-dialog', modal).addClass('three-children'); | |
| 268 | - $('.sub-task-card.destroy-card').css("display", "inline-block"); | |
| 269 | - } | |
| 270 | - | |
| 271 | - reClac(); | |
| 272 | - }); | |
| 273 | - | |
| 274 | - | |
| 275 | - //submit | |
| 276 | - /*var f = $('form', modal).formValidation({ | |
| 277 | - framework: 'uikit', | |
| 278 | - locale: 'zh_CN', | |
| 279 | - }); | |
| 280 | - f.on('success.form.fv', function(e) { | |
| 281 | - disabled_submit_btn(this); | |
| 282 | - e.preventDefault(); | |
| 283 | - var data = $(this).serializeJSON(); | |
| 284 | - | |
| 285 | - });*/ | |
| 286 | - }); | |
| 287 | - | |
| 288 | - function reClac() { | |
| 289 | - var serviceEnd = $('select[name=endStation]', serviceForm).val(); | |
| 290 | - //空驶起点 == 营运终点 | |
| 291 | - $('select[name=startStation]', emptyForm).val(serviceEnd); | |
| 292 | - | |
| 293 | - if (serviceEnd != esCode) { | |
| 294 | - //烂班起点 == 营运终点 | |
| 295 | - $('select[name=startStation]', destroyForm).val(serviceEnd); | |
| 296 | - } | |
| 297 | - } | |
| 298 | - | |
| 299 | - | |
| 300 | - //------ 下抽屉 ------ | |
| 301 | - $('#betweenStationRangeCalc', modal).on('click', function () { | |
| 302 | - var id = $(this).data('drawer-id'); | |
| 303 | - switchBtmDrawer(id, '/real_control_v2/fragments/geo/calc_station_space.html'); | |
| 304 | - }); | |
| 305 | - | |
| 306 | - var btmDrawer = $('.ct-bottom-drawer', modal); | |
| 307 | - //打开事件 | |
| 308 | - btmDrawer.on('drawer_show', function () { | |
| 309 | - var url = $(this).data('url'); | |
| 310 | - if(!url){ | |
| 311 | - alert('无效的地址'); | |
| 312 | - } | |
| 313 | - | |
| 314 | - var drawerPanel=$(this).data('name'); | |
| 315 | - $('.ct-bottom-drawer-body', btmDrawer).load(url, function () { | |
| 316 | - $('#'+drawerPanel).trigger('drawer-init', {sch: sch}); | |
| 317 | - }); | |
| 318 | - }); | |
| 319 | - | |
| 320 | - function switchBtmDrawer(id, url) { | |
| 321 | - if (btmDrawer.hasClass('open') && btmDrawer.data('name') == id) { | |
| 322 | - btmDrawer.removeClass('open'); | |
| 323 | - btmDrawer.removeData('name').removeData('url'); | |
| 324 | - } | |
| 325 | - else { | |
| 326 | - btmDrawer.addClass('open'); | |
| 327 | - btmDrawer.data('name', id).data('url', url).trigger('drawer_show'); | |
| 328 | - } | |
| 329 | - } | |
| 330 | - })(); | |
| 331 | - </script> | |
| 332 | -</div> | |
| 1 | +<div class="uk-modal" id="add-sub-task-inpark-modal"> | |
| 2 | + <div class="uk-modal-dialog"> | |
| 3 | + <a href="" class="uk-modal-close uk-close"></a> | |
| 4 | + <div class="uk-modal-header"> | |
| 5 | + <h2>回场子任务</h2></div> | |
| 6 | + | |
| 7 | + <div style="width: 100%;padding-left: 1%;"> | |
| 8 | + <div class="sub-task-card"> | |
| 9 | + <div class="uk-panel uk-panel-box uk-panel-box-primary"> | |
| 10 | + <div class="uk-panel-badge uk-badge">营运</div> | |
| 11 | + <h3 class="uk-panel-title">线路上站点间</h3> | |
| 12 | + <form class="uk-form uk-form-horizontal" service_form> | |
| 13 | + <div class="uk-grid"> | |
| 14 | + <div class="uk-width-3-10"> | |
| 15 | + <div class="uk-form-row"> | |
| 16 | + <label class="uk-form-label">起点 </label> | |
| 17 | + </div> | |
| 18 | + </div> | |
| 19 | + <div class="uk-width-7-10 pl5"> | |
| 20 | + <select name="startStation" disabled></select> | |
| 21 | + </div> | |
| 22 | + </div> | |
| 23 | + <div class="uk-grid"> | |
| 24 | + <div class="uk-width-3-10"> | |
| 25 | + <div class="uk-form-row"> | |
| 26 | + <label class="uk-form-label">终点 </label> | |
| 27 | + </div> | |
| 28 | + </div> | |
| 29 | + <div class="uk-width-7-10 pl5"> | |
| 30 | + <select name="endStation" class="ct_focus"></select> | |
| 31 | + </div> | |
| 32 | + </div> | |
| 33 | + <div class="uk-grid"> | |
| 34 | + <div class="uk-width-3-10"> | |
| 35 | + <div class="uk-form-row"> | |
| 36 | + <label class="uk-form-label">营运里程</label> | |
| 37 | + </div> | |
| 38 | + </div> | |
| 39 | + <div class="uk-width-7-10 pl5"> | |
| 40 | + <input type="text" name="mileageType" required> | |
| 41 | + </div> | |
| 42 | + </div> | |
| 43 | + <div class="uk-grid"> | |
| 44 | + <div class="uk-width-3-10"> | |
| 45 | + <div class="uk-form-row"> | |
| 46 | + <label class="uk-form-label">开始时间</label> | |
| 47 | + </div> | |
| 48 | + </div> | |
| 49 | + <div class="uk-width-7-10 pl5"> | |
| 50 | + <input type="time" name="startDate" required> | |
| 51 | + </div> | |
| 52 | + </div> | |
| 53 | + <div class="uk-grid"> | |
| 54 | + <div class="uk-width-3-10"> | |
| 55 | + <div class="uk-form-row"> | |
| 56 | + <label class="uk-form-label">结束时间</label> | |
| 57 | + </div> | |
| 58 | + </div> | |
| 59 | + <div class="uk-width-7-10 pl5"> | |
| 60 | + <input type="time" name="endDate" required> | |
| 61 | + </div> | |
| 62 | + </div> | |
| 63 | + </form> | |
| 64 | + </div> | |
| 65 | + </div> | |
| 66 | + <div class="sub-task-card"> | |
| 67 | + <div class="uk-panel uk-panel-box uk-panel-box-secondary"> | |
| 68 | + <div class="uk-panel-badge uk-badge uk-badge-default">空驶</div> | |
| 69 | + <h3 class="uk-panel-title">进场</h3> | |
| 70 | + <form class="uk-form uk-form-horizontal" empty_form> | |
| 71 | + <div class="uk-grid"> | |
| 72 | + <div class="uk-width-3-10"> | |
| 73 | + <div class="uk-form-row"> | |
| 74 | + <label class="uk-form-label">起点 </label> | |
| 75 | + </div> | |
| 76 | + </div> | |
| 77 | + <div class="uk-width-7-10 pl5"> | |
| 78 | + <select name="startStation" disabled></select> | |
| 79 | + </div> | |
| 80 | + </div> | |
| 81 | + <div class="uk-grid"> | |
| 82 | + <div class="uk-width-3-10"> | |
| 83 | + <div class="uk-form-row"> | |
| 84 | + <label class="uk-form-label">终点 </label> | |
| 85 | + </div> | |
| 86 | + </div> | |
| 87 | + <div class="uk-width-7-10 pl5"> | |
| 88 | + <select name="endStation" class="ct_focus"></select> | |
| 89 | + </div> | |
| 90 | + </div> | |
| 91 | + <div class="uk-grid"> | |
| 92 | + <div class="uk-width-3-10"> | |
| 93 | + <div class="uk-form-row"> | |
| 94 | + <label class="uk-form-label">空驶里程</label> | |
| 95 | + </div> | |
| 96 | + </div> | |
| 97 | + <div class="uk-width-7-10 pl5"> | |
| 98 | + <input type="text" name="mileageType" required style="width: calc(100% - 62px);"> | |
| 99 | + <a style="font-size: 12px;">路径(3)</a> | |
| 100 | + </div> | |
| 101 | + </div> | |
| 102 | + <div class="uk-grid"> | |
| 103 | + <div class="uk-width-3-10"> | |
| 104 | + <div class="uk-form-row"> | |
| 105 | + <label class="uk-form-label">开始时间</label> | |
| 106 | + </div> | |
| 107 | + </div> | |
| 108 | + <div class="uk-width-7-10 pl5"> | |
| 109 | + <input type="time" name="startDate" required> | |
| 110 | + </div> | |
| 111 | + </div> | |
| 112 | + <div class="uk-grid"> | |
| 113 | + <div class="uk-width-3-10"> | |
| 114 | + <div class="uk-form-row"> | |
| 115 | + <label class="uk-form-label">结束时间</label> | |
| 116 | + </div> | |
| 117 | + </div> | |
| 118 | + <div class="uk-width-7-10 pl5"> | |
| 119 | + <input type="time" name="endDate" required> | |
| 120 | + </div> | |
| 121 | + </div> | |
| 122 | + </form> | |
| 123 | + </div> | |
| 124 | + </div> | |
| 125 | + <div class="sub-task-card destroy-card uk-animation-scale"> | |
| 126 | + <div class="uk-panel uk-panel-box uk-panel-box-danger"> | |
| 127 | + <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div> | |
| 128 | + <h3 class="uk-panel-title">线路上站点间</h3> | |
| 129 | + <form class="uk-form uk-form-horizontal" destroy_form> | |
| 130 | + <div class="uk-grid"> | |
| 131 | + <div class="uk-width-3-10"> | |
| 132 | + <div class="uk-form-row"> | |
| 133 | + <label class="uk-form-label">起点 </label> | |
| 134 | + </div> | |
| 135 | + </div> | |
| 136 | + <div class="uk-width-7-10 pl5"> | |
| 137 | + <select name="startStation" disabled></select> | |
| 138 | + </div> | |
| 139 | + </div> | |
| 140 | + <div class="uk-grid"> | |
| 141 | + <div class="uk-width-3-10"> | |
| 142 | + <div class="uk-form-row"> | |
| 143 | + <label class="uk-form-label">终点 </label> | |
| 144 | + </div> | |
| 145 | + </div> | |
| 146 | + <div class="uk-width-7-10 pl5"> | |
| 147 | + <select name="endStation" class="ct_focus" disabled></select> | |
| 148 | + </div> | |
| 149 | + </div> | |
| 150 | + <div class="uk-grid"> | |
| 151 | + <div class="uk-width-3-10"> | |
| 152 | + <div class="uk-form-row"> | |
| 153 | + <label class="uk-form-label">烂班里程</label> | |
| 154 | + </div> | |
| 155 | + </div> | |
| 156 | + <div class="uk-width-7-10 pl5"> | |
| 157 | + <input type="text" name="mileageType" required> | |
| 158 | + </div> | |
| 159 | + </div> | |
| 160 | + <div class="uk-grid"> | |
| 161 | + <div class="uk-width-3-10"> | |
| 162 | + <div class="uk-form-row"> | |
| 163 | + <label class="uk-form-label">开始时间</label> | |
| 164 | + </div> | |
| 165 | + </div> | |
| 166 | + <div class="uk-width-7-10 pl5"> | |
| 167 | + <input type="time" name="startDate" required> | |
| 168 | + </div> | |
| 169 | + </div> | |
| 170 | + <div class="uk-grid"> | |
| 171 | + <div class="uk-width-3-10"> | |
| 172 | + <div class="uk-form-row"> | |
| 173 | + <label class="uk-form-label">烂班原因</label> | |
| 174 | + </div> | |
| 175 | + </div> | |
| 176 | + <div class="uk-width-7-10 pl5"> | |
| 177 | + <select name="destroyReason" required></select> | |
| 178 | + </div> | |
| 179 | + </div> | |
| 180 | + </form> | |
| 181 | + </div> | |
| 182 | + </div> | |
| 183 | + | |
| 184 | + <form class="uk-form" style="margin-top: 15px; padding: 0 10px 0 0;"> | |
| 185 | + <textarea placeholder="备注" style="width: 100%;height: 70px;"></textarea> | |
| 186 | + </form> | |
| 187 | + </div> | |
| 188 | + | |
| 189 | + <div class="uk-modal-footer uk-text-right"> | |
| 190 | + <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 191 | + <button type="button" class="uk-button uk-button-primary">提交子任务</button> | |
| 192 | + | |
| 193 | + <div class="ct-footer-left"> | |
| 194 | + <a id="betweenStationRangeCalc" data-drawer-id="station_route_spacing_chart_drawer">站点间公里不准?</a> | |
| 195 | + </div> | |
| 196 | + </div> | |
| 197 | + </div> | |
| 198 | + | |
| 199 | + <div class="ct-bottom-drawer"> | |
| 200 | + <a class="ct-bottom-drawer-close"></a> | |
| 201 | + | |
| 202 | + <div class="ct-bottom-drawer-body"></div> | |
| 203 | + </div> | |
| 204 | + | |
| 205 | + <script id="sub-task-inpark-form-temp" type="text/html"> | |
| 206 | + </script> | |
| 207 | + | |
| 208 | + <script> | |
| 209 | + (function () { | |
| 210 | + var modal = '#add-sub-task-inpark-modal', | |
| 211 | + serviceForm = $('form[service_form]', modal), | |
| 212 | + emptyForm = $('form[empty_form]', modal), | |
| 213 | + destroyForm = $('form[destroy_form]', modal), | |
| 214 | + sch, stationRoutes, parks, information, esCode, timeLocStations; | |
| 215 | + var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他']; | |
| 216 | + $(modal).on('init', function (e, data) { | |
| 217 | + sch = data.sch; | |
| 218 | + //var formHtml = template('sub-task-inpark-form-temp', {sch:sch, adjustExps: adjustExps}); | |
| 219 | + //$('form', modal).html(formHtml); | |
| 220 | + //字典转换 | |
| 221 | + //dictionaryUtils.transformDom($('.nt-dictionary', modal)); | |
| 222 | + | |
| 223 | + //站点路由 | |
| 224 | + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | |
| 225 | + return a.stationRouteCode - b.stationRouteCode; | |
| 226 | + }), 'directions')[sch.xlDir]; | |
| 227 | + //空驶终点(停车场) | |
| 228 | + $.get('/basic/parks', function (rs) { | |
| 229 | + parks = rs; | |
| 230 | + var opts = ''; | |
| 231 | + for (var code in parks) { | |
| 232 | + opts += '<option value="' + code + '">' + parks[code] + '</option>'; | |
| 233 | + } | |
| 234 | + $('select[name=endStation]', emptyForm).html(opts).val(information.carPark); | |
| 235 | + }); | |
| 236 | + //线路标准 | |
| 237 | + information = gb_data_basic.getLineInformation(sch.xlBm); | |
| 238 | + //本地存储的站点耗时 | |
| 239 | + try { | |
| 240 | + timeLocStations = window.localStorage.getItem('control_route_distance_' + sch.xlBm); | |
| 241 | + if (timeLocStations) | |
| 242 | + timeLocStations = JSON.parse(timeLocStations).stations[sch.xlDir == 0 ? 'up' : 'down']; | |
| 243 | + } catch (e) { | |
| 244 | + console.log(e); | |
| 245 | + } | |
| 246 | + | |
| 247 | + //设置默认值 | |
| 248 | + setDefaultVal(); | |
| 249 | + | |
| 250 | + //切换营运终点 | |
| 251 | + $('select[name=endStation]', serviceForm).val(esCode).on('change', function () { | |
| 252 | + var val = $(this).val(); | |
| 253 | + if (val == esCode) { | |
| 254 | + $('.uk-modal-dialog', modal).removeClass('three-children'); | |
| 255 | + $('.sub-task-card.destroy-card').css("display", "none"); | |
| 256 | + } | |
| 257 | + else { | |
| 258 | + $('.uk-modal-dialog', modal).addClass('three-children'); | |
| 259 | + $('.sub-task-card.destroy-card').css("display", "inline-block"); | |
| 260 | + } | |
| 261 | + | |
| 262 | + reClac(); | |
| 263 | + }).trigger('change'); | |
| 264 | + | |
| 265 | + | |
| 266 | + //submit | |
| 267 | + /*var f = $('form', modal).formValidation({ | |
| 268 | + framework: 'uikit', | |
| 269 | + locale: 'zh_CN', | |
| 270 | + }); | |
| 271 | + f.on('success.form.fv', function(e) { | |
| 272 | + disabled_submit_btn(this); | |
| 273 | + e.preventDefault(); | |
| 274 | + var data = $(this).serializeJSON(); | |
| 275 | + | |
| 276 | + });*/ | |
| 277 | + }); | |
| 278 | + | |
| 279 | + function setDefaultVal() { | |
| 280 | + var routeOpts = ''; | |
| 281 | + $.each(stationRoutes, function () { | |
| 282 | + routeOpts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'; | |
| 283 | + }); | |
| 284 | + esCode = stationRoutes[stationRoutes.length - 1].stationCode; | |
| 285 | + | |
| 286 | + //营运起终点 | |
| 287 | + $('select[name=startStation],select[name=endStation]', serviceForm).html(routeOpts); | |
| 288 | + //空驶起点 | |
| 289 | + $('select[name=startStation]', emptyForm).html(routeOpts).val(esCode); | |
| 290 | + //烂班起终点 | |
| 291 | + $('select[name=startStation],select[name=endStation]', destroyForm).html(routeOpts).val(esCode); | |
| 292 | + | |
| 293 | + //烂班原因 | |
| 294 | + var adjustExpsOpts = '<option value="">请选择...</option>'; | |
| 295 | + $.each(adjustExps, function (i, str) { | |
| 296 | + adjustExpsOpts += '<option value="' + str + '">' + str + '</option>'; | |
| 297 | + }); | |
| 298 | + $('select[name=destroyReason]', destroyForm).html(adjustExpsOpts); | |
| 299 | + | |
| 300 | + //营运开始时间 | |
| 301 | + $('input[name=startDate]', serviceForm).val(sch.dfsj); | |
| 302 | + } | |
| 303 | + | |
| 304 | + function reClac() { | |
| 305 | + var serviceEnd = $('select[name=endStation]', serviceForm).val(); | |
| 306 | + //空驶起点 == 营运终点 | |
| 307 | + $('select[name=startStation]', emptyForm).val(serviceEnd); | |
| 308 | + | |
| 309 | + //计算营运里程 | |
| 310 | + var s = $('select[name=startStation]', serviceForm).val(), | |
| 311 | + e = $('select[name=endStation]', serviceForm).val(); | |
| 312 | + var sMileage = calcMileage(s, e); | |
| 313 | + if(sMileage >= 0) | |
| 314 | + $('input[name=mileageType]', serviceForm).val(sMileage); | |
| 315 | + | |
| 316 | + if (serviceEnd != esCode) { | |
| 317 | + //烂班起点 == 营运终点 | |
| 318 | + $('select[name=startStation]', destroyForm).val(serviceEnd); | |
| 319 | + } | |
| 320 | + } | |
| 321 | + | |
| 322 | + function calcMileage(s, e) { | |
| 323 | + var mileage = 0, flag, code; | |
| 324 | + if (timeLocStations) { | |
| 325 | + $.each(timeLocStations, function () { | |
| 326 | + code = this.station.STATION_CODE; | |
| 327 | + if (code == s) { | |
| 328 | + flag = true; | |
| 329 | + } | |
| 330 | + | |
| 331 | + if (flag) | |
| 332 | + mileage += this.toDistance; | |
| 333 | + | |
| 334 | + if (code == e) | |
| 335 | + return false; | |
| 336 | + }); | |
| 337 | + } | |
| 338 | + return mileage / 1000; | |
| 339 | + } | |
| 340 | + | |
| 341 | + | |
| 342 | + //------ 下抽屉 ------ | |
| 343 | + $('#betweenStationRangeCalc', modal).on('click', function () { | |
| 344 | + var id = $(this).data('drawer-id'); | |
| 345 | + switchBtmDrawer(id, '/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html'); | |
| 346 | + }); | |
| 347 | + | |
| 348 | + var btmDrawer = $('.ct-bottom-drawer', modal); | |
| 349 | + //打开事件 | |
| 350 | + btmDrawer.on('drawer_show', function () { | |
| 351 | + var url = $(this).data('url'); | |
| 352 | + if (!url) { | |
| 353 | + alert('无效的地址'); | |
| 354 | + } | |
| 355 | + | |
| 356 | + var drawerPanel = $(this).data('name'); | |
| 357 | + $('.ct-bottom-drawer-body', btmDrawer).load(url, function () { | |
| 358 | + $('#' + drawerPanel).trigger('drawer-init', {sch: sch}); | |
| 359 | + }); | |
| 360 | + }); | |
| 361 | + | |
| 362 | + function switchBtmDrawer(id, url) { | |
| 363 | + if (btmDrawer.hasClass('open') && btmDrawer.data('name') == id) { | |
| 364 | + btmDrawer.removeClass('open'); | |
| 365 | + btmDrawer.removeData('name').removeData('url'); | |
| 366 | + } | |
| 367 | + else { | |
| 368 | + btmDrawer.addClass('open'); | |
| 369 | + btmDrawer.data('name', id).data('url', url).trigger('drawer_show'); | |
| 370 | + } | |
| 371 | + } | |
| 372 | + })(); | |
| 373 | + </script> | |
| 374 | +</div> | |
| 333 | 375 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html
0 → 100644
| 1 | +<!-- 站点路由间距图 --> | |
| 2 | +<div id="station_route_spacing_chart_drawer" style="width: 100%;height: 100%;font-size: 0;"> | |
| 3 | + <div style="width: 80%;height: 100%;display: inline-block;font-size: 14px;"> | |
| 4 | + | |
| 5 | + </div> | |
| 6 | + | |
| 7 | + <div style="width: 20%;height: 100%;display: inline-block;"> | |
| 8 | + | |
| 9 | + </div> | |
| 10 | + | |
| 11 | + <script> | |
| 12 | + | |
| 13 | + (function () { | |
| 14 | + var drawer = '#station_route_spacing_chart_drawer' | |
| 15 | + , sch, locData; | |
| 16 | + | |
| 17 | + $(drawer).on('drawer-init', function (e, data) { | |
| 18 | + //console.log('data', data); | |
| 19 | + sch = data.sch; | |
| 20 | + locData = window.localStorage.getItem('control_route_distance_' + sch.xlBm); | |
| 21 | + | |
| 22 | + if(locData) | |
| 23 | + drawCharts(); | |
| 24 | + else | |
| 25 | + drawerLoadPage('/real_control_v2/fragments/geo/calc_station_space.html','cal_station_space_drawer'); | |
| 26 | + }); | |
| 27 | + | |
| 28 | + function drawCharts() { | |
| 29 | + //console.log('开始绘图', locData); | |
| 30 | + var stations; | |
| 31 | + try { | |
| 32 | + stations = JSON.parse(locData).stations[sch.xlDir == 0 ? 'up' : 'down']; | |
| 33 | + }catch (e){ | |
| 34 | + alert('数据异常!!'); | |
| 35 | + return; | |
| 36 | + } | |
| 37 | + | |
| 38 | + console.log('stations..', stations); | |
| 39 | + } | |
| 40 | + | |
| 41 | + //页面切换 | |
| 42 | + function drawerLoadPage(url, id) { | |
| 43 | + $(drawer).parent('.ct-bottom-drawer-body').load(url, function () { | |
| 44 | + $('#' + id).trigger('drawer-init', {sch: sch}); | |
| 45 | + }); | |
| 46 | + } | |
| 47 | + })(); | |
| 48 | + </script> | |
| 49 | +</div> | |
| 0 | 50 | \ No newline at end of file | ... | ... |