openatc-components 0.4.47 → 0.4.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (449) hide show
  1. package/.babelrc +18 -18
  2. package/.editorconfig +9 -9
  3. package/.eslintignore +5 -5
  4. package/.eslintrc.js +31 -31
  5. package/.postcssrc.js +10 -10
  6. package/README.md +30 -30
  7. package/build/build.js +41 -41
  8. package/build/check-versions.js +54 -54
  9. package/build/package.config.js +58 -58
  10. package/build/package.dev.config.js +107 -107
  11. package/build/package.prod.config.js +160 -160
  12. package/build/utils.js +101 -101
  13. package/build/vue-loader.conf.js +22 -22
  14. package/build/webpack.base.conf.js +120 -120
  15. package/build/webpack.dev.conf.js +95 -95
  16. package/build/webpack.prod.conf.js +149 -149
  17. package/config/dev.env.js +8 -8
  18. package/config/index.js +94 -94
  19. package/config/prod.env.js +5 -5
  20. package/config/test.env.js +7 -7
  21. package/index.html +12 -12
  22. package/package/kisscomps/components/BoardCard/BoardCard.vue +133 -133
  23. package/package/kisscomps/components/ChannelRealtimeIntersection/ChannelRealtimeIntersection.vue +123 -123
  24. package/package/kisscomps/components/Channelization/Channelization.vue +584 -584
  25. package/package/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +360 -360
  26. package/package/kisscomps/components/ChannelizationWithInterface/ChannelizationWithInterface.vue +518 -518
  27. package/package/kisscomps/components/CommonKanban/CommonKanban.vue +132 -132
  28. package/package/kisscomps/components/DirectionListConfiguration/DirectionListConfiguration.vue +456 -456
  29. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-east-bottom.vue +41 -41
  30. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-east-top.vue +60 -60
  31. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-ewped.vue +105 -105
  32. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-north-left.vue +60 -60
  33. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-north-right.vue +60 -60
  34. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-snped.vue +105 -105
  35. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-south-left.vue +60 -60
  36. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-south-right.vue +60 -60
  37. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-west-bottom.vue +60 -60
  38. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-west-top.vue +60 -60
  39. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-xlped.vue +30 -30
  40. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-xrped.vue +30 -30
  41. package/package/kisscomps/components/DirectionListConfiguration/svg/pedSvg.vue +78 -78
  42. package/package/kisscomps/components/DrawChannelization/drawsvg/basicCoordInfo.vue +181 -181
  43. package/package/kisscomps/components/DrawChannelization/drawsvg/channelizationElements.vue +255 -255
  44. package/package/kisscomps/components/DrawChannelization/drawsvg/detectorAssociatedComponent.vue +152 -152
  45. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/TextBox.vue +91 -91
  46. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/crossMap.vue +194 -194
  47. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/editText.vue +108 -108
  48. package/package/kisscomps/components/DrawChannelization/drawsvg/firstImportCrossmap.vue +51 -51
  49. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/countdownSvg.vue +236 -236
  50. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorChart.vue +247 -247
  51. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorIconSvg.vue +210 -210
  52. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/laneIcon.vue +72 -72
  53. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +368 -368
  54. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/pedroadIconSvg.vue +230 -230
  55. package/package/kisscomps/components/DrawChannelization/drawsvg/importDialog.vue +74 -74
  56. package/package/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +1005 -1005
  57. package/package/kisscomps/components/DrawChannelization/drawsvg/index.vue +144 -144
  58. package/package/kisscomps/components/DrawChannelization/drawsvg/laneEditPanel.vue +707 -707
  59. package/package/kisscomps/components/DrawChannelization/drawsvg/overlapAssociatedComponent.vue +172 -172
  60. package/package/kisscomps/components/DrawChannelization/drawsvg/phaseAssociatedComponent.vue +172 -172
  61. package/package/kisscomps/components/DrawChannelization/drawsvg/table.vue +99 -99
  62. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/loadutils.js +87 -87
  63. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/phaseDataModel.js +32 -32
  64. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/phasePos.json +20 -20
  65. package/package/kisscomps/components/DrawChannelization/phaseDataMgr.js +278 -278
  66. package/package/kisscomps/components/ExpendConfig/ExpendConfig.vue +118 -118
  67. package/package/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +178 -178
  68. package/package/kisscomps/components/IntersectionDirectionSelection/IntersectionDirectionSelection.vue +158 -158
  69. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +629 -629
  70. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
  71. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +447 -447
  72. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +341 -341
  73. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +497 -497
  74. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +353 -353
  75. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +359 -359
  76. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +443 -443
  77. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkClickSvg.vue +1302 -1302
  78. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1190 -1190
  79. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +498 -498
  80. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +484 -484
  81. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +488 -488
  82. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +566 -566
  83. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +640 -640
  84. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +497 -497
  85. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +486 -486
  86. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +490 -490
  87. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +575 -575
  88. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
  89. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
  90. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
  91. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
  92. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
  93. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
  94. package/package/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +1520 -1520
  95. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/LphaseIconSvg.vue +197 -197
  96. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/phaseIconSvg.vue +196 -196
  97. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +122 -122
  98. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
  99. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
  100. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.json +115 -115
  101. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +115 -115
  102. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
  103. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/sidePos.json +219 -219
  104. package/package/kisscomps/components/IntersectionMap/crossDirection/utils.js +84 -84
  105. package/package/kisscomps/components/IntersectionMap/intersectionmap.vue +220 -220
  106. package/package/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +534 -534
  107. package/package/kisscomps/components/KanBan/kanban.vue +231 -231
  108. package/package/kisscomps/components/MessageBox/index.vue +96 -96
  109. package/package/kisscomps/components/OptimizeKanban/index.js +2 -0
  110. package/package/kisscomps/components/OptimizeKanban/index.vue +369 -0
  111. package/package/kisscomps/components/OverLap/OverLap.vue +237 -237
  112. package/package/kisscomps/components/OverviewComponent/index.vue +853 -853
  113. package/package/kisscomps/components/PatternOptimize/PatternOptimize.vue +329 -329
  114. package/package/kisscomps/components/PatternStatus/PatternStatus.vue +1843 -1805
  115. package/package/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +423 -423
  116. package/package/kisscomps/components/PhaseDirectionSelect/PhaseDirectionSelect.vue +126 -126
  117. package/package/kisscomps/components/PhaseDirectionText/PhaseDirectionText.vue +106 -106
  118. package/package/kisscomps/components/PhaseLegend/PhaseLegend.vue +286 -286
  119. package/package/kisscomps/components/PhaseMarker/index.js +6 -6
  120. package/package/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
  121. package/package/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
  122. package/package/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
  123. package/package/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
  124. package/package/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
  125. package/package/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
  126. package/package/kisscomps/components/PhasePedSelect/index.vue +206 -206
  127. package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +1011 -1011
  128. package/package/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +365 -365
  129. package/package/kisscomps/components/SchemeConfig/azimuthlocking/utils.js +92 -92
  130. package/package/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +214 -214
  131. package/package/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +235 -235
  132. package/package/kisscomps/components/SchemeConfig/manualControlModal/index.vue +235 -235
  133. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/controlModelGroup.vue +131 -131
  134. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/icon.vue +470 -470
  135. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/index.vue +871 -871
  136. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/othersIcon.vue +151 -151
  137. package/package/kisscomps/components/SchemeConfig/priorityControl/index.vue +215 -215
  138. package/package/kisscomps/components/SchemeConfig/priorityControl/utils.js +163 -163
  139. package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +308 -308
  140. package/package/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1293 -1293
  141. package/package/kisscomps/components/SchemeConfig/utils/thirdPartypermission.js +95 -95
  142. package/package/kisscomps/components/SelectCrossPhase/index.vue +418 -418
  143. package/package/kisscomps/components/SelectCrossPhase/utils.js +142 -142
  144. package/package/kisscomps/components/StageBord/StageBord.vue +303 -303
  145. package/package/kisscomps/components/StageOptimize/StageOptimize.vue +367 -367
  146. package/package/kisscomps/components/StageOptimize/index.js +2 -2
  147. package/package/kisscomps/components/StageOptimize/index.vue +310 -0
  148. package/package/kisscomps/components/StageStatus/StageStatus.vue +341 -341
  149. package/package/kisscomps/components/Stages/index.vue +319 -319
  150. package/package/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
  151. package/package/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +1041 -1041
  152. package/package/kisscomps/components/XiaoKanban/DirSelector.vue +356 -356
  153. package/package/kisscomps/components/XiaoKanban/index.vue +122 -122
  154. package/package/kisscomps/components/overView/index.vue +676 -676
  155. package/package/kisscomps/components/patternConfig/index.vue +802 -802
  156. package/package/kisscomps/components/patternConfig/pattern/patternTable.vue +599 -599
  157. package/package/kisscomps/components/patternConfig/pattern/planChart/model/coordinationModel.js +665 -665
  158. package/package/kisscomps/components/patternConfig/planContent.vue +604 -604
  159. package/package/kisscomps/components/patternConfig/planMenu.vue +329 -329
  160. package/package/kisscomps/components/patternConfig/utils.js +152 -152
  161. package/package/kisscomps/components/patternList/patternList.vue +606 -606
  162. package/package/kisscomps/index.js +131 -131
  163. package/package/kissui.min.js +1 -1
  164. package/package.json +126 -126
  165. package/src/App.vue +24 -24
  166. package/src/EdgeMgr/EdgeModelBase.js +16 -16
  167. package/src/EdgeMgr/controller/crossDiagramMgr.js +125 -125
  168. package/src/api/authapi.js +31 -31
  169. package/src/api/config.js +21 -21
  170. package/src/api/control.js +110 -110
  171. package/src/api/cross.js +49 -49
  172. package/src/api/device.js +135 -135
  173. package/src/api/fault.js +66 -66
  174. package/src/api/index.js +24 -24
  175. package/src/api/login.js +46 -46
  176. package/src/api/optimize.js +72 -72
  177. package/src/api/param.js +165 -165
  178. package/src/api/passwdAssest.js +101 -101
  179. package/src/api/permission.js +33 -33
  180. package/src/api/route.js +171 -171
  181. package/src/api/template.js +27 -27
  182. package/src/assets/font/LICENSE.txt +202 -202
  183. package/src/assets/font/font.css +6 -6
  184. package/src/i18n/index.js +26 -26
  185. package/src/i18n/language/en.js +1474 -1474
  186. package/src/i18n/language/index.js +25 -25
  187. package/src/i18n/language/zh.js +1474 -1474
  188. package/src/icons/demo_index.html +8445 -8445
  189. package/src/icons/iconfont.css +1451 -1451
  190. package/src/icons/iconfont.json +2522 -2522
  191. package/src/icons/index.js +20 -20
  192. package/src/icons/svg/azimuthlocking.svg +26 -26
  193. package/src/icons/svg/bendi.svg +110 -110
  194. package/src/icons/svg/bujin.svg +36 -36
  195. package/src/icons/svg/connectBlue.svg +7 -7
  196. package/src/icons/svg/currentvolume.svg +0 -0
  197. package/src/icons/svg/custom-BRTlane.svg +40 -40
  198. package/src/icons/svg/custom-buslane.svg +40 -40
  199. package/src/icons/svg/custom-detector.svg +12 -12
  200. package/src/icons/svg/custom-east-bottom.svg +32 -32
  201. package/src/icons/svg/custom-east-top.svg +32 -32
  202. package/src/icons/svg/custom-ewped.svg +35 -35
  203. package/src/icons/svg/custom-nonmotorizedlane.svg +40 -40
  204. package/src/icons/svg/custom-north-left.svg +32 -32
  205. package/src/icons/svg/custom-north-right.svg +32 -32
  206. package/src/icons/svg/custom-peddetector.svg +17 -17
  207. package/src/icons/svg/custom-snped.svg +35 -35
  208. package/src/icons/svg/custom-south-left.svg +32 -32
  209. package/src/icons/svg/custom-south-right.svg +32 -32
  210. package/src/icons/svg/custom-tramlane.svg +40 -40
  211. package/src/icons/svg/custom-vehiclebranch.svg +40 -40
  212. package/src/icons/svg/custom-vehiclemainroad.svg +41 -41
  213. package/src/icons/svg/custom-west-bottom.svg +32 -32
  214. package/src/icons/svg/custom-west-top.svg +32 -32
  215. package/src/icons/svg/custom-xlped.svg +14 -14
  216. package/src/icons/svg/custom-xrped.svg +14 -14
  217. package/src/icons/svg/cutRed.svg +7 -7
  218. package/src/icons/svg/cycle.svg +0 -0
  219. package/src/icons/svg/dingzhouqi.svg +34 -34
  220. package/src/icons/svg/ganyingkongzhi.svg +30 -30
  221. package/src/icons/svg/guandeng.svg +81 -81
  222. package/src/icons/svg/huangshan.svg +71 -71
  223. package/src/icons/svg/maincontrol.svg +0 -0
  224. package/src/icons/svg/manualcontrolbackground.svg +51 -51
  225. package/src/icons/svg/manualcontrolbackground1.svg +62 -62
  226. package/src/icons/svg/manualcontrolbackgrounden.svg +62 -62
  227. package/src/icons/svg/model.svg +0 -0
  228. package/src/icons/svg/phasediff.svg +0 -0
  229. package/src/icons/svg/prioritycontrol.svg +21 -21
  230. package/src/icons/svg/quanhong.svg +86 -86
  231. package/src/icons/svg/shanghe.svg +11 -11
  232. package/src/icons/svg/shoudong.svg +103 -103
  233. package/src/icons/svg/tentativeplan.svg +28 -28
  234. package/src/icons/svg/time.svg +0 -0
  235. package/src/icons/svg/wuxianlan.svg +46 -46
  236. package/src/icons/svg/xiala.svg +11 -11
  237. package/src/icons/svg/xingrenguojie.svg +33 -33
  238. package/src/icons/svg/xitong.svg +89 -89
  239. package/src/icons/svg/youxian.svg +41 -41
  240. package/src/icons/svg/zizhukongzhi.svg +43 -43
  241. package/src/kisscomps/components/BoardCard/BoardCard.vue +133 -133
  242. package/src/kisscomps/components/ChannelRealtimeIntersection/ChannelRealtimeIntersection.vue +123 -123
  243. package/src/kisscomps/components/Channelization/Channelization.vue +584 -584
  244. package/src/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +360 -360
  245. package/src/kisscomps/components/ChannelizationWithInterface/ChannelizationWithInterface.vue +518 -518
  246. package/src/kisscomps/components/CommonKanban/CommonKanban.vue +132 -132
  247. package/src/kisscomps/components/DirectionListConfiguration/DirectionListConfiguration.vue +456 -456
  248. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-east-bottom.vue +41 -41
  249. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-east-top.vue +60 -60
  250. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-ewped.vue +105 -105
  251. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-north-left.vue +60 -60
  252. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-north-right.vue +60 -60
  253. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-snped.vue +105 -105
  254. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-south-left.vue +60 -60
  255. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-south-right.vue +60 -60
  256. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-west-bottom.vue +60 -60
  257. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-west-top.vue +60 -60
  258. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-xlped.vue +30 -30
  259. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-xrped.vue +30 -30
  260. package/src/kisscomps/components/DirectionListConfiguration/svg/pedSvg.vue +78 -78
  261. package/src/kisscomps/components/DrawChannelization/drawsvg/basicCoordInfo.vue +181 -181
  262. package/src/kisscomps/components/DrawChannelization/drawsvg/channelizationElements.vue +255 -255
  263. package/src/kisscomps/components/DrawChannelization/drawsvg/detectorAssociatedComponent.vue +152 -152
  264. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/TextBox.vue +91 -91
  265. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/crossMap.vue +194 -194
  266. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/editText.vue +108 -108
  267. package/src/kisscomps/components/DrawChannelization/drawsvg/firstImportCrossmap.vue +51 -51
  268. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/countdownSvg.vue +236 -236
  269. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorChart.vue +247 -247
  270. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorIconSvg.vue +210 -210
  271. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/laneIcon.vue +72 -72
  272. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +368 -368
  273. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/pedroadIconSvg.vue +230 -230
  274. package/src/kisscomps/components/DrawChannelization/drawsvg/importDialog.vue +74 -74
  275. package/src/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +1005 -1005
  276. package/src/kisscomps/components/DrawChannelization/drawsvg/index.vue +144 -144
  277. package/src/kisscomps/components/DrawChannelization/drawsvg/laneEditPanel.vue +707 -707
  278. package/src/kisscomps/components/DrawChannelization/drawsvg/overlapAssociatedComponent.vue +172 -172
  279. package/src/kisscomps/components/DrawChannelization/drawsvg/phaseAssociatedComponent.vue +172 -172
  280. package/src/kisscomps/components/DrawChannelization/drawsvg/table.vue +99 -99
  281. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/loadutils.js +87 -87
  282. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/phaseDataModel.js +32 -32
  283. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/phasePos.json +20 -20
  284. package/src/kisscomps/components/DrawChannelization/phaseDataMgr.js +278 -278
  285. package/src/kisscomps/components/ExpendConfig/ExpendConfig.vue +118 -118
  286. package/src/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +178 -178
  287. package/src/kisscomps/components/IntersectionDirectionSelection/IntersectionDirectionSelection.vue +158 -158
  288. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +629 -629
  289. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
  290. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +447 -447
  291. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +341 -341
  292. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +497 -497
  293. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +353 -353
  294. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +359 -359
  295. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +443 -443
  296. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkClickSvg.vue +1302 -1302
  297. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1190 -1190
  298. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +498 -498
  299. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +484 -484
  300. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +488 -488
  301. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +566 -566
  302. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +640 -640
  303. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +497 -497
  304. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +486 -486
  305. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +490 -490
  306. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +575 -575
  307. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
  308. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
  309. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
  310. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
  311. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
  312. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
  313. package/src/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +1520 -1520
  314. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/LphaseIconSvg.vue +197 -197
  315. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/phaseIconSvg.vue +196 -196
  316. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +122 -122
  317. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
  318. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
  319. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.json +115 -115
  320. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +115 -115
  321. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
  322. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/sidePos.json +219 -219
  323. package/src/kisscomps/components/IntersectionMap/crossDirection/utils.js +84 -84
  324. package/src/kisscomps/components/IntersectionMap/intersectionmap.vue +220 -220
  325. package/src/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +534 -534
  326. package/src/kisscomps/components/KanBan/kanban.vue +231 -231
  327. package/src/kisscomps/components/MessageBox/index.vue +96 -96
  328. package/src/kisscomps/components/OverLap/OverLap.vue +237 -237
  329. package/src/kisscomps/components/OverviewComponent/index.vue +853 -853
  330. package/src/kisscomps/components/PatternOptimize/PatternOptimize.vue +329 -329
  331. package/src/kisscomps/components/PatternStatus/PatternStatus.vue +1843 -1805
  332. package/src/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +423 -423
  333. package/src/kisscomps/components/PhaseDirectionSelect/PhaseDirectionSelect.vue +126 -126
  334. package/src/kisscomps/components/PhaseDirectionText/PhaseDirectionText.vue +106 -106
  335. package/src/kisscomps/components/PhaseLegend/PhaseLegend.vue +286 -286
  336. package/src/kisscomps/components/PhaseMarker/index.js +6 -6
  337. package/src/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
  338. package/src/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
  339. package/src/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
  340. package/src/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
  341. package/src/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
  342. package/src/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
  343. package/src/kisscomps/components/PhasePedSelect/index.vue +206 -206
  344. package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +1011 -1011
  345. package/src/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +365 -365
  346. package/src/kisscomps/components/SchemeConfig/azimuthlocking/utils.js +92 -92
  347. package/src/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +214 -214
  348. package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +235 -235
  349. package/src/kisscomps/components/SchemeConfig/manualControlModal/index.vue +235 -235
  350. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/controlModelGroup.vue +131 -131
  351. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/icon.vue +470 -470
  352. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/index.vue +871 -871
  353. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/othersIcon.vue +151 -151
  354. package/src/kisscomps/components/SchemeConfig/priorityControl/index.vue +215 -215
  355. package/src/kisscomps/components/SchemeConfig/priorityControl/utils.js +163 -163
  356. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +308 -308
  357. package/src/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1293 -1293
  358. package/src/kisscomps/components/SchemeConfig/utils/thirdPartypermission.js +95 -95
  359. package/src/kisscomps/components/SelectCrossPhase/index.vue +418 -418
  360. package/src/kisscomps/components/SelectCrossPhase/utils.js +142 -142
  361. package/src/kisscomps/components/StageBord/StageBord.vue +303 -303
  362. package/src/kisscomps/components/StageOptimize/StageOptimize.vue +367 -367
  363. package/src/kisscomps/components/StageOptimize/index.js +2 -2
  364. package/src/kisscomps/components/StageStatus/StageStatus.vue +341 -341
  365. package/src/kisscomps/components/Stages/index.vue +319 -319
  366. package/src/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
  367. package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +1041 -1041
  368. package/src/kisscomps/components/XiaoKanban/DirSelector.vue +356 -356
  369. package/src/kisscomps/components/XiaoKanban/index.vue +122 -122
  370. package/src/kisscomps/components/overView/index.vue +676 -676
  371. package/src/kisscomps/components/patternConfig/index.vue +802 -802
  372. package/src/kisscomps/components/patternConfig/pattern/patternTable.vue +599 -599
  373. package/src/kisscomps/components/patternConfig/pattern/planChart/model/coordinationModel.js +665 -665
  374. package/src/kisscomps/components/patternConfig/planContent.vue +604 -604
  375. package/src/kisscomps/components/patternConfig/planMenu.vue +329 -329
  376. package/src/kisscomps/components/patternConfig/utils.js +152 -152
  377. package/src/kisscomps/components/patternList/patternList.vue +606 -606
  378. package/src/kisscomps/index.js +131 -131
  379. package/src/lib/publicjs/ArryListUtil.js +38 -38
  380. package/src/lib/publicjs/HttpurlMgr.js +45 -45
  381. package/src/lib/publicjs/KissApi.js +158 -158
  382. package/src/lib/publicjs/KissWSSub/Heartcheck.js +128 -128
  383. package/src/lib/publicjs/KissWSSub/KissWsSub.js +91 -91
  384. package/src/lib/publicjs/KissWSSub/KissWsSubByType.js +152 -152
  385. package/src/lib/publicjs/KissWSSub/SimuWsSubByType.js +44 -44
  386. package/src/lib/publicjs/KissWSSub/Sub.js +51 -51
  387. package/src/lib/publicjs/KissWSSub/SubChannel.js +119 -119
  388. package/src/lib/publicjs/basecomponents.js +65 -65
  389. package/src/lib/publicjs/localStorage.js +112 -112
  390. package/src/lib/publicjs/objdeepcopy.js +32 -32
  391. package/src/lib/publicjs/pageScroll.js +30 -30
  392. package/src/lib/publicjs/passwdAssest.js +101 -101
  393. package/src/lib/publicjs/styleclassfactory.js +32 -32
  394. package/src/main.js +51 -51
  395. package/src/node_modules/.package_versions.json +1 -0
  396. package/src/router/index.js +63 -63
  397. package/src/store/index.js +26 -26
  398. package/src/store/modules/globalParam.js +67 -67
  399. package/src/utils/ControlFormat.js +68 -68
  400. package/src/utils/RingDataModel.js +335 -335
  401. package/src/utils/auth.js +199 -199
  402. package/src/utils/conflct.js +268 -268
  403. package/src/utils/conflictList.js +87 -87
  404. package/src/utils/dateFormat.js +41 -41
  405. package/src/utils/errorcode.js +231 -231
  406. package/src/utils/fault.js +196 -196
  407. package/src/utils/faultcode.js +225 -225
  408. package/src/utils/index.js +69 -69
  409. package/src/utils/pedphasedesc.js +119 -119
  410. package/src/utils/phaseList.js +203 -203
  411. package/src/utils/phasedesc.js +144 -144
  412. package/src/utils/responseMessage.js +21 -21
  413. package/src/utils/validate.js +43 -43
  414. package/src/views/customchannelization.vue +49 -49
  415. package/src/views/home.1.vue +479 -479
  416. package/src/views/home.vue +93 -93
  417. package/src/views/intersection.vue +522 -522
  418. package/src/views/intersection2.vue +328 -328
  419. package/src/views/overView.vue +63 -63
  420. package/src/views/patternConfig.vue +14792 -14792
  421. package/src/views/schemeconfig.vue +206 -206
  422. package/static/apiconfig.json +461 -461
  423. package/static/styles/channelizatioon.scss +433 -433
  424. package/static/styles/common.scss +30 -30
  425. package/static/styles/commonkanban.scss +168 -168
  426. package/static/styles/dark/index.scss +2 -2
  427. package/static/styles/dark/theme/element-dark.scss +44 -44
  428. package/static/styles/index.scss +84 -84
  429. package/static/styles/intersection.scss +180 -180
  430. package/static/styles/light/index.scss +2 -2
  431. package/static/styles/light/theme/element-light.scss +44 -44
  432. package/static/styles/overview.scss +146 -146
  433. package/static/styles/patternConfig.scss +56 -56
  434. package/static/styles/phasePedSelect.scss +71 -71
  435. package/static/styles/schemeconfig.scss +553 -553
  436. package/static/styles/stages.scss +57 -57
  437. package/static/styles/uiComponents.scss +57 -57
  438. package/static/styles/xiaokanban.scss +61 -61
  439. package/static/token.json +2 -2
  440. package/test/e2e/custom-assertions/elementCount.js +27 -27
  441. package/test/e2e/nightwatch.conf.js +46 -46
  442. package/test/e2e/runner.js +48 -48
  443. package/test/e2e/specs/test.js +19 -19
  444. package/test/unit/.eslintrc +7 -7
  445. package/test/unit/jest.conf.js +30 -30
  446. package/test/unit/setup.js +3 -3
  447. package/test/unit/specs/HelloWorld.spec.js +11 -11
  448. package/package/kissui.js +0 -216608
  449. package/pnpm-lock.yaml +0 -16362
@@ -1,599 +1,599 @@
1
- /**
2
- * Copyright (c) 2020 kedacom
3
- * OpenATC is licensed under Mulan PSL v2.
4
- * You can use this software according to the terms and conditions of the Mulan PSL v2.
5
- * You may obtain a copy of Mulan PSL v2 at:
6
- * http://license.coscl.org.cn/MulanPSL2
7
- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
8
- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
9
- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
10
- * See the Mulan PSL v2 for more details.
11
- **/
12
- <template>
13
- <div class="app-container" ref="pattern-container">
14
- <el-table :data="newPatternList" :max-height="tableHeight" id="footerBtn" :show-header="isShowTableHeader">
15
- <el-table-column :type="isAllowedExpand ? 'expand' : ''" v-if="isAllowedExpand">
16
- <template slot-scope="scope">
17
- <div v-if="isAllowedExpand && isSingleCrossMode" class="optimizetype">
18
- <span>{{$t('openatccomponents.pattern.optimizetype')}}</span>
19
- <el-select v-model="value" clearable :placeholder="$t('openatccomponents.common.select')">
20
- <el-option
21
- v-for="item in typeOptions"
22
- :key="item.value"
23
- :label="$t('openatccomponents.overview.type' + item.value)"
24
- :value="item.value"
25
- >
26
- </el-option>
27
- </el-select>
28
- <span class="optimiNum">{{$t('openatccomponents.pattern.optimizecycle')}}</span>
29
- <el-input v-model="optimizecycle" clearable :placeholder="$t('openatccomponents.common.enter')"></el-input>
30
- <el-button type="primary" @click="onOptimizeClick(scope.row, scope.$index)">{{$t('openatccomponents.pattern.inoptimize')}}</el-button>
31
- </div>
32
- <div class="components-container board">
33
- <XiaoKanBan v-for="n in scope.row.ringCount"
34
- :key="n"
35
- :isSingleCrossMode="isSingleCrossMode"
36
- class="kanban todo"
37
- :list="scope.row.rings[n-1]"
38
- :header-text="$t('openatccomponents.pattern.ring') +' '+n"
39
- :index="scope.$index"
40
- @fatherMethod="fatherMethod"/>
41
- </div>
42
- </template>
43
- </el-table-column>
44
- <el-table-column align="center" label="No" width="45" minWidth="40" v-if="isShowColumn('no')">
45
- <template slot-scope="scope">
46
- <span>{{scope.$index+1}}</span>
47
- </template>
48
- </el-table-column>
49
- <el-table-column align="center" :label="$t('openatccomponents.greenwaveoptimize.deviceid')" width="100" minWidth="40" v-if="isShowColumn('agentid')">
50
- <template slot-scope="scope">
51
- <span>{{scope.row.agentid}}</span>
52
- </template>
53
- </el-table-column>
54
- <el-table-column align="center" :label="$t('openatccomponents.overview.crossname')" width="120" minWidth="40" v-if="isShowColumn('name')">
55
- <template slot-scope="scope">
56
- <span>{{getDevName(scope.row)}}</span>
57
- </template>
58
- </el-table-column>
59
- <el-table-column align="center" :label="$t('openatccomponents.greenwaveoptimize.period')" width="100" minWidth="40" v-if="isShowColumn('period')">
60
- <template slot-scope="scope">
61
- <span>{{getPeriod(scope.row)}}</span>
62
- </template>
63
- </el-table-column>
64
- <el-table-column property="isValid" :label="$t('openatccomponents.token.isValid')" align="center" width="80" prop="isused" v-if="isShowColumn('isused')">
65
- <template slot-scope="scope">
66
- <el-switch
67
- style="padding-left: 5px;"
68
- v-model="scope.row.isused"
69
- active-color="#299BCC">
70
- </el-switch>
71
- </template>
72
- </el-table-column>
73
- <el-table-column
74
- :label="$t('openatccomponents.greenwaveoptimize.pattern')"
75
- width="120"
76
- align="center"
77
- v-if="isShowColumn('patternid')">
78
- <template slot-scope="scope">
79
- <el-select
80
- v-model="scope.row.patternid"
81
- size="small"
82
- :loading="loading"
83
- @focus="getCurPattern(scope.row.agentid)"
84
- @change="changeCurPattern(scope.row,$event)">
85
- <el-option v-for="option in (scope.row.allPatterns)"
86
- :key="option.patternid"
87
- :label="option.patterndesc"
88
- :value="option.patternid">
89
- <span>{{ option.patterndesc }}</span>
90
- </el-option>
91
- </el-select>
92
- <span></span>
93
- </template>
94
- </el-table-column>
95
- <el-table-column align="center" :label="$t('openatccomponents.greenwaveoptimize.offset')" width="85" prop="offset" v-if="isShowColumn('offset')">
96
- <template slot-scope="scope">
97
- <el-input-number v-if="isAllowedExpand" :controls="false" :min="0" :step="1" v-model.number="scope.row.offset" size="small" style="width:70%;"></el-input-number>
98
- <span v-else>
99
- {{ scope.row.offset }}
100
- </span>
101
- </template>
102
- </el-table-column>
103
- <el-table-column align="center" :label="$t('openatccomponents.greenwaveoptimize.cycle')" width="60" prop="cycle" v-if="isShowColumn('cycle')">
104
- </el-table-column>
105
- <el-table-column align="center" :label="$t('openatccomponents.pattern.plan')" v-if="isShowColumn('pattern')">
106
- <template slot-scope="scope">
107
- <div class="pattern-figure">
108
- <pattern-list
109
- v-if="getControlType(scope.row) === 'ring'"
110
- :patternStatusList="JSON.parse(JSON.stringify(scope.row.rings))"
111
- :cycles="scope.row.cycle"
112
- :phaseList="JSON.parse(JSON.stringify(scope.row.currPhase))"
113
- :contrloType="getControlType(scope.row)"
114
- >
115
- </pattern-list>
116
- <pattern-list
117
- v-else
118
- :patternId="scope.row.patternid"
119
- :contrloType="getControlType(scope.row)"
120
- :index="scope.$index"
121
- :cycleChange="false"
122
- :stagesChange="getSelectedPattern(scope.row).stagesList"
123
- :patternStatusList="getSelectedPattern(scope.row).rings"
124
- :patternList="JSON.parse(JSON.stringify(scope.row.allPatterns))"
125
- :allPatternList="JSON.parse(JSON.stringify(scope.row.allPatterns))"
126
- :cycles="scope.row.cycle"
127
- :phaseList="JSON.parse(JSON.stringify(scope.row.currPhase))"
128
- :agentId="scope.row.agentid"
129
- :showBarrier="false">
130
- </pattern-list>
131
- </div>
132
- </template>
133
- </el-table-column>
134
- </el-table>
135
- </div>
136
- </template>
137
-
138
- <script>
139
- import XiaoKanBan from '../../XiaoKanBan/index.vue'
140
- // import { getPatternList } from '../../../../api/route'
141
- import { getIntersectionInfo } from '../../../../api/template'
142
- import { getMessageByCode } from '../../../../utils/responseMessage'
143
- import { getDuration } from '../../../../api/cross'
144
- // import { getDirName } from '../../../components/SelectCrossPhase/utils.js'
145
- export default {
146
- name: 'PatternTable',
147
- components: {
148
- XiaoKanBan
149
- },
150
- props: {
151
- devicesData: {
152
- type: Array,
153
- default: () => []
154
- },
155
- optList: {
156
- type: Array
157
- },
158
- isSingleCrossMode: {
159
- type: Boolean,
160
- default: false
161
- },
162
- tableColums: {
163
- type: Array,
164
- default: () => []
165
- },
166
- isAllowedExpand: {
167
- type: Boolean,
168
- default: true
169
- },
170
- isShowGenerateButton: {
171
- type: Boolean,
172
- default: true
173
- },
174
- isShowTableHeader: {
175
- type: Boolean,
176
- default: true
177
- },
178
- maxTableHeight: {
179
- type: Number,
180
- default: 200
181
- }
182
- },
183
- data () {
184
- return {
185
- typeOptions: [{
186
- value: 'flow-split-opt'
187
- }, {
188
- value: 'cycle-opt'
189
- }],
190
- value: 'flow-split-opt',
191
- optimizecycle: 0,
192
- controlType: 'stage',
193
- loading: true,
194
- tableHeight: 460,
195
- screenHeight: window.innerHeight, // 屏幕高度
196
- newPatternList: []
197
- }
198
- },
199
- created () {
200
- },
201
- watch: {
202
- maxTableHeight: function () {
203
- this.$nextTick(() => {
204
- this.tableHeight = this.maxTableHeight // 动态更新高度
205
- })
206
- },
207
- optList: {
208
- handler: function (val) {
209
- if (val && val.length > 0) {
210
- // for () {
211
-
212
- // }
213
- }
214
- },
215
- deep: true
216
- },
217
- newPatternList: {
218
- handler: function (val) {
219
- console.log('onNewPatternListChange', val)
220
- this.$emit('onNewPatternListChange', val)
221
- },
222
- deep: true
223
- }
224
- },
225
- mounted: function () {
226
- },
227
- methods: {
228
- onOptimizeClick (row, index) {
229
- let msg = this.$t('openatccomponents.pattern.algorithmEngineOptimization')
230
- const loading = this.$loading({
231
- lock: true,
232
- text: msg,
233
- spinner: 'el-icon-loading',
234
- background: 'rgba(0, 0, 0, 0.7)'
235
- })
236
- setTimeout(() => {
237
- loading.close()
238
- this.handeleOptimizeClick(row, index)
239
- }, 1000)
240
- },
241
- handeleOptimizeClick (row, index) {
242
- let newPha = []
243
- for (let i = 0; i < row.rings.length; i++) {
244
- newPha.push(...row.rings[i])
245
- }
246
- let phaseData = newPha.map(item => {
247
- return {
248
- id: item.id,
249
- flowperhour: item.flowperhour,
250
- saturation: item.saturation
251
- }
252
- })
253
- let patternList = row.allPatterns
254
- if (row.feature && row.feature.patternList && row.feature.patternList.length > 0) {
255
- patternList = row.feature.patternList
256
- }
257
- let pattern = patternList.filter((item) => item.id === row.patternid)[0]
258
- let phaseList = row.currPhase
259
- let reqData = {
260
- 'type': this.value,
261
- 'optcycle': this.optimizecycle ? this.optimizecycle : 0,
262
- 'phaseList': phaseList,
263
- 'pattern': pattern,
264
- 'phases': phaseData
265
- }
266
- let isValidata = []
267
- for (let j = 0; j < newPha.length; j++) {
268
- let comNum = (newPha[j].length / 4) * 1700 * 0.8
269
- isValidata.push(newPha[j].flowperhour > comNum)
270
- }
271
- if (isValidata.includes(true)) {
272
- this.$confirm(this.$t('openatccomponents.overview.maxFlow'),
273
- this.$t('openatccomponents.common.alarm'), {
274
- confirmButtonText: this.$t('openatccomponents.common.confirm'),
275
- cancelButtonText: this.$t('openatccomponents.common.cancel'),
276
- type: 'warning'
277
- }).then(() => {
278
- this.doOptimize(row, index, reqData)
279
- }).catch(() => {})
280
- } else {
281
- this.doOptimize(row, index, reqData)
282
- }
283
- },
284
- doOptimize (row, index, reqData) {
285
- // let _this = this
286
- getDuration(reqData).then(data => {
287
- if (data.data.success) {
288
- this.$message({
289
- type: 'success',
290
- message: this.$t('openatccomponents.pattern.success')
291
- })
292
- // let cycle = 0
293
- for (let i = 0; i < row.rings.length; i++) {
294
- for (let j = 0; j < row.rings[i].length; j++) {
295
- for (let h = 0; h < data.data.data.phase.length; h++) {
296
- if (row.rings[i][j].id === data.data.data.phase[h].id) {
297
- row.rings[i][j].value = data.data.data.phase[h].duration
298
- // cycle = cycle + row.rings[i][j].value
299
- }
300
- }
301
- }
302
- }
303
- }
304
- }).catch(error => {
305
- console.log(error)
306
- })
307
- },
308
- isShowColumn (colum) {
309
- let res = true
310
- if (this.tableColums && this.tableColums.length > 0) {
311
- res = this.tableColums.find(item => item === colum)
312
- }
313
- return res
314
- },
315
- getPeriod (row) {
316
- let period = row.timeperiodrange || row.period
317
- let res = ''
318
- if (period && period.length > 0) {
319
- res = period[0].substring(0, 5) + '-' + period[1].substring(0, 5)
320
- }
321
- return res
322
- },
323
- getDevName (row) {
324
- let res = row.name ? row.name : ''
325
- if (this.devicesData) {
326
- let dev = this.devicesData.find(item => item.agentid === row.agentid)
327
- res = dev ? dev.name : res
328
- }
329
- return res
330
- },
331
- onPatternTable (routeData, patternList, phaseList) {
332
- if (patternList.length === 0) {
333
- // this.$message.error('方案为空!')
334
- return
335
- }
336
- if (phaseList.length === 0) {
337
- // this.$message.error('相位为空!')
338
- return
339
- }
340
- // this.routeData = routeData
341
- // this.patternList = patternList
342
- // this.phaseList = phaseList
343
- this.handlePatternList(routeData, patternList, phaseList)
344
- },
345
- // 依据anengid获取设备信息,同时兼容单路口数据按序index取值
346
- getDevFromDevsOrIndex (devs, agentid, index) {
347
- let res
348
- // check special
349
- let isSingleCrossMode = false
350
- if (devs && devs.length > 1 && devs[0].agentid === devs[1].agentid) {
351
- isSingleCrossMode = true
352
- // check errData
353
- if (index === undefined || index === null) {
354
- console.log('getDevFromDevsOrIndex Err: index is null')
355
- }
356
- }
357
- if (!isSingleCrossMode) {
358
- res = devs.filter(ist => ist.agentid === agentid)[0]
359
- } else {
360
- res = devs[index]
361
- console.log('getDevByIndex:', res)
362
- }
363
- return res
364
- },
365
- handlePatternList (routeData, patternList, phaseList) {
366
- this.newPatternList = []
367
- let devs = routeData.devs
368
- let index = 0
369
- for (let pattern of patternList) {
370
- let obj = {}
371
- let id = pattern.agentid
372
- obj.agentid = id
373
- let count = [] // 计算相位有几个环
374
- if (pattern.feature !== undefined && pattern.feature.patternList.length !== 0) {
375
- let currPatternList = pattern.feature.patternList
376
- // let dev = devs.filter(ist => ist.agentid === id)[0]
377
- let dev = this.getDevFromDevsOrIndex(devs, id, index)
378
- index = index + 1
379
- let patternId = dev.patternid
380
- let currPattern
381
- if (Array.isArray(currPatternList)) {
382
- currPattern = currPatternList.filter(cpl => cpl.id === patternId)[0]
383
- if (!currPattern) {
384
- currPattern = currPatternList[0]
385
- }
386
- } else {
387
- currPattern = currPatternList
388
- }
389
- if (!currPattern) {
390
- currPattern = currPatternList[0]
391
- }
392
- // let currPattern = currPatternList.filter(cpl => cpl.id === patternId)[0]
393
- if (currPattern.desc === '') {
394
- obj.desc = this.$t('openatccomponents.greenwaveoptimize.pattern') + currPattern.id
395
- } else {
396
- obj.desc = currPattern.desc
397
- }
398
- obj = {...obj, ...dev}
399
- obj.id = currPattern.id
400
- obj.offset = currPattern.offset
401
- obj.cycle = currPattern.cycle
402
- obj.patternId = currPattern.id
403
- obj.patternid = currPattern.id
404
- obj.patternDesc = currPattern.desc === '' ? `${this.$t('openatccomponents.greenwaveoptimize.pattern')}${currPattern.id}` : currPattern.desc
405
- obj.allPatterns = currPatternList.map(ele => {
406
- let patterndesc = ele.desc === '' ? `${this.$t('openatccomponents.greenwaveoptimize.pattern')}${currPattern.id}` : ele.desc
407
- return {
408
- patternid: ele.id,
409
- patterndes: ele.desc,
410
- patterndesc: patterndesc,
411
- ...ele
412
- }
413
- })
414
- let rings = currPattern.rings
415
- let currPhase = phaseList.filter(phl => phl.agentid === id)[0].feature.phaseList
416
- obj.currPhase = currPhase
417
- obj.phaseList = currPhase
418
- // 计算有几个环
419
- for (let ring of rings) {
420
- if (ring.length === 0) continue
421
- for (let rr of ring) {
422
- rr.desc = []
423
- let targetPhase = currPhase.filter(curp => curp.id === rr.id)[0]
424
- if (!targetPhase) continue
425
- let direction = targetPhase.direction // 相位方向集合
426
- let phaseRing = currPhase.filter(curp => curp.id === rr.id)[0].ring
427
- count.push(phaseRing)
428
- for (let dir of direction) {
429
- let obj = {}
430
- obj.id = dir
431
- rr.desc.push(obj)
432
- }
433
- }
434
- }
435
- obj.rings = rings
436
- }
437
- let ringCount = Array.from(new Set(count)) // 去除数组重复的元素
438
- ringCount = ringCount.sort(this.sortNumbers) // 把数组中的值按照从小到大的顺序重新排序
439
- obj.ringCount = ringCount
440
- this.newPatternList.push(obj)
441
- }
442
- console.log('handlePatternList newPatternList', this.newPatternList)
443
- },
444
- sortNumbers (a, b) {
445
- return a - b
446
- },
447
- fatherMethod (val) {
448
- let index = val.index
449
- let cycle = val.cycle
450
- this.newPatternList[index].cycle = cycle
451
- },
452
- changeCurPattern (row, curPatternid) {
453
- // 修改当前方案(allPatterns: 所有可选项)
454
- const data = {
455
- agentid: row.agentid,
456
- patternid: curPatternid,
457
- patterndes: row.allPatterns.filter(ele => ele.patternid === curPatternid)[0].patterndes,
458
- allPatterns: row.allPatterns
459
- }
460
- row.desc = data.patternDesc
461
- row.patternId = data.patternid
462
- row.patternid = data.patternid
463
- row.patterndes = data.patterndes
464
- row.allPatterns = data.allPatterns
465
- row.patternid = data.patternid
466
- let selectPattern = row.allPatterns.filter(item => item.patternid === row.patternid)[0]
467
- let res = this.getRings(selectPattern.rings, row.phaseList)
468
- row.rings = res.rings
469
- row.ringCount = res.ringCount
470
- // row.rings = selectPattern.rings
471
- row.cycle = selectPattern.cycle
472
- row.offset = selectPattern.offset
473
- row.currPhase = row.phaseList
474
- },
475
- getRings (ringsList, phaseList) {
476
- let res = {}
477
- let rings = JSON.parse(JSON.stringify(ringsList))
478
- let count = []
479
- // 计算有几个环
480
- for (let ring of rings) {
481
- if (ring.length === 0) continue
482
- for (let rr of ring) {
483
- rr.desc = []
484
- let direction = phaseList.filter(curp => curp.id === rr.id)[0].direction // 相位方向集合
485
- let phaseRing = phaseList.filter(curp => curp.id === rr.id)[0].ring
486
- count.push(phaseRing)
487
- for (let dir of direction) {
488
- let obj = {}
489
- obj.id = dir
490
- rr.desc.push(obj)
491
- }
492
- }
493
- }
494
- let ringCount = Array.from(new Set(count)) // 去除数组重复的元素
495
- ringCount = ringCount.sort(this.sortNumbers) // 把数组中的值按照从小到大的顺序重新排序
496
- res = {
497
- rings: rings,
498
- ringCount: ringCount
499
- }
500
- return res
501
- },
502
- getControlType (row) {
503
- let contrloType = 'ring'
504
- let allPatternList = row.feature && row.feature.patternList ? row.feature.patternList : row.allPatterns
505
- if (
506
- !allPatternList[0].contrloType &&
507
- allPatternList[0].rings.length > 0
508
- ) {
509
- contrloType = 'ring'
510
- } else if (
511
- !allPatternList[0].contrloType &&
512
- allPatternList[0].rings.length === 0
513
- ) {
514
- contrloType = 'stage'
515
- } else {
516
- contrloType = allPatternList[0].contrloType
517
- }
518
- let res = contrloType
519
- return res
520
- },
521
- getSelectedPattern (row) {
522
- let res = []
523
- let patternList = row.feature && row.feature.patternList ? row.feature.patternList : row.allPatterns
524
- let pattern = patternList.find(item => item.id === row.patternid)
525
- if (pattern) {
526
- res = JSON.parse(JSON.stringify(pattern))
527
- }
528
- return res
529
- },
530
- getCurPattern (agentid) {
531
- // 获取当前设备所有可选方案
532
- this.loading = true
533
- let _this = this
534
- getIntersectionInfo(agentid).then(res => {
535
- this.loading = false
536
- if (!res.data.success) {
537
- let commomMsg = this.$t('openatccomponents.overview.signalID') + ' : ' + agentid
538
- let msg = getMessageByCode(res.data.code, this.$i18n.locale)
539
- if (res.data.data) {
540
- // 子类型错误
541
- let childErrorCode = res.data.data.errorCode
542
- if (childErrorCode) {
543
- let childerror = getMessageByCode(res.data.data.errorCode, this.$i18n.locale)
544
- msg = msg + ' - ' + childerror
545
- }
546
- }
547
- msg = msg + ' - ' + commomMsg
548
- this.$message.error(msg)
549
- return
550
- }
551
- let allPatternList = res.data.data.param.patternList
552
- _this.newPatternList.forEach(ele => {
553
- if (ele.agentid === agentid) {
554
- ele.allPatterns = allPatternList.map(ele => {
555
- return {
556
- ...ele,
557
- patternid: ele.id,
558
- patterndes: ele.desc,
559
- patterndesc: ele.desc === '' ? `${_this.$t('openatccomponents.greenwaveoptimize.pattern')}${ele.id}` : ele.desc
560
- }
561
- })
562
- }
563
- })
564
- })
565
- }
566
- }
567
- }
568
- </script>
569
-
570
- <style lang="scss">
571
- .board {
572
- width: 100%;
573
- margin-left: 10PX;
574
- display: flex;
575
- justify-content: flex-start;
576
- gap: 10PX;
577
- align-items: flex-start;
578
- }
579
- .optimizetype{
580
- font-size: 14PX;
581
- display: flex;
582
- justify-content: flex-start;
583
- align-items: center;
584
- gap: 10PX;
585
- padding-left: 20PX;
586
- .el-input {
587
- width: 120PX;
588
- }
589
- // .el-select{
590
- // width: 170PX;
591
- // }
592
- // .el-button {
593
- // margin-left: 10PX;
594
- // }
595
- .optimiNum {
596
- padding-left: 10PX;
597
- }
598
- }
599
- </style>
1
+ /**
2
+ * Copyright (c) 2020 kedacom
3
+ * OpenATC is licensed under Mulan PSL v2.
4
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
5
+ * You may obtain a copy of Mulan PSL v2 at:
6
+ * http://license.coscl.org.cn/MulanPSL2
7
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
8
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
9
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
10
+ * See the Mulan PSL v2 for more details.
11
+ **/
12
+ <template>
13
+ <div class="app-container" ref="pattern-container">
14
+ <el-table :data="newPatternList" :max-height="tableHeight" id="footerBtn" :show-header="isShowTableHeader">
15
+ <el-table-column :type="isAllowedExpand ? 'expand' : ''" v-if="isAllowedExpand">
16
+ <template slot-scope="scope">
17
+ <div v-if="isAllowedExpand && isSingleCrossMode" class="optimizetype">
18
+ <span>{{$t('openatccomponents.pattern.optimizetype')}}</span>
19
+ <el-select v-model="value" clearable :placeholder="$t('openatccomponents.common.select')">
20
+ <el-option
21
+ v-for="item in typeOptions"
22
+ :key="item.value"
23
+ :label="$t('openatccomponents.overview.type' + item.value)"
24
+ :value="item.value"
25
+ >
26
+ </el-option>
27
+ </el-select>
28
+ <span class="optimiNum">{{$t('openatccomponents.pattern.optimizecycle')}}</span>
29
+ <el-input v-model="optimizecycle" clearable :placeholder="$t('openatccomponents.common.enter')"></el-input>
30
+ <el-button type="primary" @click="onOptimizeClick(scope.row, scope.$index)">{{$t('openatccomponents.pattern.inoptimize')}}</el-button>
31
+ </div>
32
+ <div class="components-container board">
33
+ <XiaoKanBan v-for="n in scope.row.ringCount"
34
+ :key="n"
35
+ :isSingleCrossMode="isSingleCrossMode"
36
+ class="kanban todo"
37
+ :list="scope.row.rings[n-1]"
38
+ :header-text="$t('openatccomponents.pattern.ring') +' '+n"
39
+ :index="scope.$index"
40
+ @fatherMethod="fatherMethod"/>
41
+ </div>
42
+ </template>
43
+ </el-table-column>
44
+ <el-table-column align="center" label="No" width="45" minWidth="40" v-if="isShowColumn('no')">
45
+ <template slot-scope="scope">
46
+ <span>{{scope.$index+1}}</span>
47
+ </template>
48
+ </el-table-column>
49
+ <el-table-column align="center" :label="$t('openatccomponents.greenwaveoptimize.deviceid')" width="100" minWidth="40" v-if="isShowColumn('agentid')">
50
+ <template slot-scope="scope">
51
+ <span>{{scope.row.agentid}}</span>
52
+ </template>
53
+ </el-table-column>
54
+ <el-table-column align="center" :label="$t('openatccomponents.overview.crossname')" width="120" minWidth="40" v-if="isShowColumn('name')">
55
+ <template slot-scope="scope">
56
+ <span>{{getDevName(scope.row)}}</span>
57
+ </template>
58
+ </el-table-column>
59
+ <el-table-column align="center" :label="$t('openatccomponents.greenwaveoptimize.period')" width="100" minWidth="40" v-if="isShowColumn('period')">
60
+ <template slot-scope="scope">
61
+ <span>{{getPeriod(scope.row)}}</span>
62
+ </template>
63
+ </el-table-column>
64
+ <el-table-column property="isValid" :label="$t('openatccomponents.token.isValid')" align="center" width="80" prop="isused" v-if="isShowColumn('isused')">
65
+ <template slot-scope="scope">
66
+ <el-switch
67
+ style="padding-left: 5px;"
68
+ v-model="scope.row.isused"
69
+ active-color="#299BCC">
70
+ </el-switch>
71
+ </template>
72
+ </el-table-column>
73
+ <el-table-column
74
+ :label="$t('openatccomponents.greenwaveoptimize.pattern')"
75
+ width="120"
76
+ align="center"
77
+ v-if="isShowColumn('patternid')">
78
+ <template slot-scope="scope">
79
+ <el-select
80
+ v-model="scope.row.patternid"
81
+ size="small"
82
+ :loading="loading"
83
+ @focus="getCurPattern(scope.row.agentid)"
84
+ @change="changeCurPattern(scope.row,$event)">
85
+ <el-option v-for="option in (scope.row.allPatterns)"
86
+ :key="option.patternid"
87
+ :label="option.patterndesc"
88
+ :value="option.patternid">
89
+ <span>{{ option.patterndesc }}</span>
90
+ </el-option>
91
+ </el-select>
92
+ <span></span>
93
+ </template>
94
+ </el-table-column>
95
+ <el-table-column align="center" :label="$t('openatccomponents.greenwaveoptimize.offset')" width="85" prop="offset" v-if="isShowColumn('offset')">
96
+ <template slot-scope="scope">
97
+ <el-input-number v-if="isAllowedExpand" :controls="false" :min="0" :step="1" v-model.number="scope.row.offset" size="small" style="width:70%;"></el-input-number>
98
+ <span v-else>
99
+ {{ scope.row.offset }}
100
+ </span>
101
+ </template>
102
+ </el-table-column>
103
+ <el-table-column align="center" :label="$t('openatccomponents.greenwaveoptimize.cycle')" width="60" prop="cycle" v-if="isShowColumn('cycle')">
104
+ </el-table-column>
105
+ <el-table-column align="center" :label="$t('openatccomponents.pattern.plan')" v-if="isShowColumn('pattern')">
106
+ <template slot-scope="scope">
107
+ <div class="pattern-figure">
108
+ <pattern-list
109
+ v-if="getControlType(scope.row) === 'ring'"
110
+ :patternStatusList="JSON.parse(JSON.stringify(scope.row.rings))"
111
+ :cycles="scope.row.cycle"
112
+ :phaseList="JSON.parse(JSON.stringify(scope.row.currPhase))"
113
+ :contrloType="getControlType(scope.row)"
114
+ >
115
+ </pattern-list>
116
+ <pattern-list
117
+ v-else
118
+ :patternId="scope.row.patternid"
119
+ :contrloType="getControlType(scope.row)"
120
+ :index="scope.$index"
121
+ :cycleChange="false"
122
+ :stagesChange="getSelectedPattern(scope.row).stagesList"
123
+ :patternStatusList="getSelectedPattern(scope.row).rings"
124
+ :patternList="JSON.parse(JSON.stringify(scope.row.allPatterns))"
125
+ :allPatternList="JSON.parse(JSON.stringify(scope.row.allPatterns))"
126
+ :cycles="scope.row.cycle"
127
+ :phaseList="JSON.parse(JSON.stringify(scope.row.currPhase))"
128
+ :agentId="scope.row.agentid"
129
+ :showBarrier="false">
130
+ </pattern-list>
131
+ </div>
132
+ </template>
133
+ </el-table-column>
134
+ </el-table>
135
+ </div>
136
+ </template>
137
+
138
+ <script>
139
+ import XiaoKanBan from '../../XiaoKanBan/index.vue'
140
+ // import { getPatternList } from '../../../../api/route'
141
+ import { getIntersectionInfo } from '../../../../api/template'
142
+ import { getMessageByCode } from '../../../../utils/responseMessage'
143
+ import { getDuration } from '../../../../api/cross'
144
+ // import { getDirName } from '../../../components/SelectCrossPhase/utils.js'
145
+ export default {
146
+ name: 'PatternTable',
147
+ components: {
148
+ XiaoKanBan
149
+ },
150
+ props: {
151
+ devicesData: {
152
+ type: Array,
153
+ default: () => []
154
+ },
155
+ optList: {
156
+ type: Array
157
+ },
158
+ isSingleCrossMode: {
159
+ type: Boolean,
160
+ default: false
161
+ },
162
+ tableColums: {
163
+ type: Array,
164
+ default: () => []
165
+ },
166
+ isAllowedExpand: {
167
+ type: Boolean,
168
+ default: true
169
+ },
170
+ isShowGenerateButton: {
171
+ type: Boolean,
172
+ default: true
173
+ },
174
+ isShowTableHeader: {
175
+ type: Boolean,
176
+ default: true
177
+ },
178
+ maxTableHeight: {
179
+ type: Number,
180
+ default: 200
181
+ }
182
+ },
183
+ data () {
184
+ return {
185
+ typeOptions: [{
186
+ value: 'flow-split-opt'
187
+ }, {
188
+ value: 'cycle-opt'
189
+ }],
190
+ value: 'flow-split-opt',
191
+ optimizecycle: 0,
192
+ controlType: 'stage',
193
+ loading: true,
194
+ tableHeight: 460,
195
+ screenHeight: window.innerHeight, // 屏幕高度
196
+ newPatternList: []
197
+ }
198
+ },
199
+ created () {
200
+ },
201
+ watch: {
202
+ maxTableHeight: function () {
203
+ this.$nextTick(() => {
204
+ this.tableHeight = this.maxTableHeight // 动态更新高度
205
+ })
206
+ },
207
+ optList: {
208
+ handler: function (val) {
209
+ if (val && val.length > 0) {
210
+ // for () {
211
+
212
+ // }
213
+ }
214
+ },
215
+ deep: true
216
+ },
217
+ newPatternList: {
218
+ handler: function (val) {
219
+ console.log('onNewPatternListChange', val)
220
+ this.$emit('onNewPatternListChange', val)
221
+ },
222
+ deep: true
223
+ }
224
+ },
225
+ mounted: function () {
226
+ },
227
+ methods: {
228
+ onOptimizeClick (row, index) {
229
+ let msg = this.$t('openatccomponents.pattern.algorithmEngineOptimization')
230
+ const loading = this.$loading({
231
+ lock: true,
232
+ text: msg,
233
+ spinner: 'el-icon-loading',
234
+ background: 'rgba(0, 0, 0, 0.7)'
235
+ })
236
+ setTimeout(() => {
237
+ loading.close()
238
+ this.handeleOptimizeClick(row, index)
239
+ }, 1000)
240
+ },
241
+ handeleOptimizeClick (row, index) {
242
+ let newPha = []
243
+ for (let i = 0; i < row.rings.length; i++) {
244
+ newPha.push(...row.rings[i])
245
+ }
246
+ let phaseData = newPha.map(item => {
247
+ return {
248
+ id: item.id,
249
+ flowperhour: item.flowperhour,
250
+ saturation: item.saturation
251
+ }
252
+ })
253
+ let patternList = row.allPatterns
254
+ if (row.feature && row.feature.patternList && row.feature.patternList.length > 0) {
255
+ patternList = row.feature.patternList
256
+ }
257
+ let pattern = patternList.filter((item) => item.id === row.patternid)[0]
258
+ let phaseList = row.currPhase
259
+ let reqData = {
260
+ 'type': this.value,
261
+ 'optcycle': this.optimizecycle ? this.optimizecycle : 0,
262
+ 'phaseList': phaseList,
263
+ 'pattern': pattern,
264
+ 'phases': phaseData
265
+ }
266
+ let isValidata = []
267
+ for (let j = 0; j < newPha.length; j++) {
268
+ let comNum = (newPha[j].length / 4) * 1700 * 0.8
269
+ isValidata.push(newPha[j].flowperhour > comNum)
270
+ }
271
+ if (isValidata.includes(true)) {
272
+ this.$confirm(this.$t('openatccomponents.overview.maxFlow'),
273
+ this.$t('openatccomponents.common.alarm'), {
274
+ confirmButtonText: this.$t('openatccomponents.common.confirm'),
275
+ cancelButtonText: this.$t('openatccomponents.common.cancel'),
276
+ type: 'warning'
277
+ }).then(() => {
278
+ this.doOptimize(row, index, reqData)
279
+ }).catch(() => {})
280
+ } else {
281
+ this.doOptimize(row, index, reqData)
282
+ }
283
+ },
284
+ doOptimize (row, index, reqData) {
285
+ // let _this = this
286
+ getDuration(reqData).then(data => {
287
+ if (data.data.success) {
288
+ this.$message({
289
+ type: 'success',
290
+ message: this.$t('openatccomponents.pattern.success')
291
+ })
292
+ // let cycle = 0
293
+ for (let i = 0; i < row.rings.length; i++) {
294
+ for (let j = 0; j < row.rings[i].length; j++) {
295
+ for (let h = 0; h < data.data.data.phase.length; h++) {
296
+ if (row.rings[i][j].id === data.data.data.phase[h].id) {
297
+ row.rings[i][j].value = data.data.data.phase[h].duration
298
+ // cycle = cycle + row.rings[i][j].value
299
+ }
300
+ }
301
+ }
302
+ }
303
+ }
304
+ }).catch(error => {
305
+ console.log(error)
306
+ })
307
+ },
308
+ isShowColumn (colum) {
309
+ let res = true
310
+ if (this.tableColums && this.tableColums.length > 0) {
311
+ res = this.tableColums.find(item => item === colum)
312
+ }
313
+ return res
314
+ },
315
+ getPeriod (row) {
316
+ let period = row.timeperiodrange || row.period
317
+ let res = ''
318
+ if (period && period.length > 0) {
319
+ res = period[0].substring(0, 5) + '-' + period[1].substring(0, 5)
320
+ }
321
+ return res
322
+ },
323
+ getDevName (row) {
324
+ let res = row.name ? row.name : ''
325
+ if (this.devicesData) {
326
+ let dev = this.devicesData.find(item => item.agentid === row.agentid)
327
+ res = dev ? dev.name : res
328
+ }
329
+ return res
330
+ },
331
+ onPatternTable (routeData, patternList, phaseList) {
332
+ if (patternList.length === 0) {
333
+ // this.$message.error('方案为空!')
334
+ return
335
+ }
336
+ if (phaseList.length === 0) {
337
+ // this.$message.error('相位为空!')
338
+ return
339
+ }
340
+ // this.routeData = routeData
341
+ // this.patternList = patternList
342
+ // this.phaseList = phaseList
343
+ this.handlePatternList(routeData, patternList, phaseList)
344
+ },
345
+ // 依据anengid获取设备信息,同时兼容单路口数据按序index取值
346
+ getDevFromDevsOrIndex (devs, agentid, index) {
347
+ let res
348
+ // check special
349
+ let isSingleCrossMode = false
350
+ if (devs && devs.length > 1 && devs[0].agentid === devs[1].agentid) {
351
+ isSingleCrossMode = true
352
+ // check errData
353
+ if (index === undefined || index === null) {
354
+ console.log('getDevFromDevsOrIndex Err: index is null')
355
+ }
356
+ }
357
+ if (!isSingleCrossMode) {
358
+ res = devs.filter(ist => ist.agentid === agentid)[0]
359
+ } else {
360
+ res = devs[index]
361
+ console.log('getDevByIndex:', res)
362
+ }
363
+ return res
364
+ },
365
+ handlePatternList (routeData, patternList, phaseList) {
366
+ this.newPatternList = []
367
+ let devs = routeData.devs
368
+ let index = 0
369
+ for (let pattern of patternList) {
370
+ let obj = {}
371
+ let id = pattern.agentid
372
+ obj.agentid = id
373
+ let count = [] // 计算相位有几个环
374
+ if (pattern.feature !== undefined && pattern.feature.patternList.length !== 0) {
375
+ let currPatternList = pattern.feature.patternList
376
+ // let dev = devs.filter(ist => ist.agentid === id)[0]
377
+ let dev = this.getDevFromDevsOrIndex(devs, id, index)
378
+ index = index + 1
379
+ let patternId = dev.patternid
380
+ let currPattern
381
+ if (Array.isArray(currPatternList)) {
382
+ currPattern = currPatternList.filter(cpl => cpl.id === patternId)[0]
383
+ if (!currPattern) {
384
+ currPattern = currPatternList[0]
385
+ }
386
+ } else {
387
+ currPattern = currPatternList
388
+ }
389
+ if (!currPattern) {
390
+ currPattern = currPatternList[0]
391
+ }
392
+ // let currPattern = currPatternList.filter(cpl => cpl.id === patternId)[0]
393
+ if (currPattern.desc === '') {
394
+ obj.desc = this.$t('openatccomponents.greenwaveoptimize.pattern') + currPattern.id
395
+ } else {
396
+ obj.desc = currPattern.desc
397
+ }
398
+ obj = {...obj, ...dev}
399
+ obj.id = currPattern.id
400
+ obj.offset = currPattern.offset
401
+ obj.cycle = currPattern.cycle
402
+ obj.patternId = currPattern.id
403
+ obj.patternid = currPattern.id
404
+ obj.patternDesc = currPattern.desc === '' ? `${this.$t('openatccomponents.greenwaveoptimize.pattern')}${currPattern.id}` : currPattern.desc
405
+ obj.allPatterns = currPatternList.map(ele => {
406
+ let patterndesc = ele.desc === '' ? `${this.$t('openatccomponents.greenwaveoptimize.pattern')}${currPattern.id}` : ele.desc
407
+ return {
408
+ patternid: ele.id,
409
+ patterndes: ele.desc,
410
+ patterndesc: patterndesc,
411
+ ...ele
412
+ }
413
+ })
414
+ let rings = currPattern.rings
415
+ let currPhase = phaseList.filter(phl => phl.agentid === id)[0].feature.phaseList
416
+ obj.currPhase = currPhase
417
+ obj.phaseList = currPhase
418
+ // 计算有几个环
419
+ for (let ring of rings) {
420
+ if (ring.length === 0) continue
421
+ for (let rr of ring) {
422
+ rr.desc = []
423
+ let targetPhase = currPhase.filter(curp => curp.id === rr.id)[0]
424
+ if (!targetPhase) continue
425
+ let direction = targetPhase.direction // 相位方向集合
426
+ let phaseRing = currPhase.filter(curp => curp.id === rr.id)[0].ring
427
+ count.push(phaseRing)
428
+ for (let dir of direction) {
429
+ let obj = {}
430
+ obj.id = dir
431
+ rr.desc.push(obj)
432
+ }
433
+ }
434
+ }
435
+ obj.rings = rings
436
+ }
437
+ let ringCount = Array.from(new Set(count)) // 去除数组重复的元素
438
+ ringCount = ringCount.sort(this.sortNumbers) // 把数组中的值按照从小到大的顺序重新排序
439
+ obj.ringCount = ringCount
440
+ this.newPatternList.push(obj)
441
+ }
442
+ console.log('handlePatternList newPatternList', this.newPatternList)
443
+ },
444
+ sortNumbers (a, b) {
445
+ return a - b
446
+ },
447
+ fatherMethod (val) {
448
+ let index = val.index
449
+ let cycle = val.cycle
450
+ this.newPatternList[index].cycle = cycle
451
+ },
452
+ changeCurPattern (row, curPatternid) {
453
+ // 修改当前方案(allPatterns: 所有可选项)
454
+ const data = {
455
+ agentid: row.agentid,
456
+ patternid: curPatternid,
457
+ patterndes: row.allPatterns.filter(ele => ele.patternid === curPatternid)[0].patterndes,
458
+ allPatterns: row.allPatterns
459
+ }
460
+ row.desc = data.patternDesc
461
+ row.patternId = data.patternid
462
+ row.patternid = data.patternid
463
+ row.patterndes = data.patterndes
464
+ row.allPatterns = data.allPatterns
465
+ row.patternid = data.patternid
466
+ let selectPattern = row.allPatterns.filter(item => item.patternid === row.patternid)[0]
467
+ let res = this.getRings(selectPattern.rings, row.phaseList)
468
+ row.rings = res.rings
469
+ row.ringCount = res.ringCount
470
+ // row.rings = selectPattern.rings
471
+ row.cycle = selectPattern.cycle
472
+ row.offset = selectPattern.offset
473
+ row.currPhase = row.phaseList
474
+ },
475
+ getRings (ringsList, phaseList) {
476
+ let res = {}
477
+ let rings = JSON.parse(JSON.stringify(ringsList))
478
+ let count = []
479
+ // 计算有几个环
480
+ for (let ring of rings) {
481
+ if (ring.length === 0) continue
482
+ for (let rr of ring) {
483
+ rr.desc = []
484
+ let direction = phaseList.filter(curp => curp.id === rr.id)[0].direction // 相位方向集合
485
+ let phaseRing = phaseList.filter(curp => curp.id === rr.id)[0].ring
486
+ count.push(phaseRing)
487
+ for (let dir of direction) {
488
+ let obj = {}
489
+ obj.id = dir
490
+ rr.desc.push(obj)
491
+ }
492
+ }
493
+ }
494
+ let ringCount = Array.from(new Set(count)) // 去除数组重复的元素
495
+ ringCount = ringCount.sort(this.sortNumbers) // 把数组中的值按照从小到大的顺序重新排序
496
+ res = {
497
+ rings: rings,
498
+ ringCount: ringCount
499
+ }
500
+ return res
501
+ },
502
+ getControlType (row) {
503
+ let contrloType = 'ring'
504
+ let allPatternList = row.feature && row.feature.patternList ? row.feature.patternList : row.allPatterns
505
+ if (
506
+ !allPatternList[0].contrloType &&
507
+ allPatternList[0].rings.length > 0
508
+ ) {
509
+ contrloType = 'ring'
510
+ } else if (
511
+ !allPatternList[0].contrloType &&
512
+ allPatternList[0].rings.length === 0
513
+ ) {
514
+ contrloType = 'stage'
515
+ } else {
516
+ contrloType = allPatternList[0].contrloType
517
+ }
518
+ let res = contrloType
519
+ return res
520
+ },
521
+ getSelectedPattern (row) {
522
+ let res = []
523
+ let patternList = row.feature && row.feature.patternList ? row.feature.patternList : row.allPatterns
524
+ let pattern = patternList.find(item => item.id === row.patternid)
525
+ if (pattern) {
526
+ res = JSON.parse(JSON.stringify(pattern))
527
+ }
528
+ return res
529
+ },
530
+ getCurPattern (agentid) {
531
+ // 获取当前设备所有可选方案
532
+ this.loading = true
533
+ let _this = this
534
+ getIntersectionInfo(agentid).then(res => {
535
+ this.loading = false
536
+ if (!res.data.success) {
537
+ let commomMsg = this.$t('openatccomponents.overview.signalID') + ' : ' + agentid
538
+ let msg = getMessageByCode(res.data.code, this.$i18n.locale)
539
+ if (res.data.data) {
540
+ // 子类型错误
541
+ let childErrorCode = res.data.data.errorCode
542
+ if (childErrorCode) {
543
+ let childerror = getMessageByCode(res.data.data.errorCode, this.$i18n.locale)
544
+ msg = msg + ' - ' + childerror
545
+ }
546
+ }
547
+ msg = msg + ' - ' + commomMsg
548
+ this.$message.error(msg)
549
+ return
550
+ }
551
+ let allPatternList = res.data.data.param.patternList
552
+ _this.newPatternList.forEach(ele => {
553
+ if (ele.agentid === agentid) {
554
+ ele.allPatterns = allPatternList.map(ele => {
555
+ return {
556
+ ...ele,
557
+ patternid: ele.id,
558
+ patterndes: ele.desc,
559
+ patterndesc: ele.desc === '' ? `${_this.$t('openatccomponents.greenwaveoptimize.pattern')}${ele.id}` : ele.desc
560
+ }
561
+ })
562
+ }
563
+ })
564
+ })
565
+ }
566
+ }
567
+ }
568
+ </script>
569
+
570
+ <style lang="scss">
571
+ .board {
572
+ width: 100%;
573
+ margin-left: 10PX;
574
+ display: flex;
575
+ justify-content: flex-start;
576
+ gap: 10PX;
577
+ align-items: flex-start;
578
+ }
579
+ .optimizetype{
580
+ font-size: 14PX;
581
+ display: flex;
582
+ justify-content: flex-start;
583
+ align-items: center;
584
+ gap: 10PX;
585
+ padding-left: 20PX;
586
+ .el-input {
587
+ width: 120PX;
588
+ }
589
+ // .el-select{
590
+ // width: 170PX;
591
+ // }
592
+ // .el-button {
593
+ // margin-left: 10PX;
594
+ // }
595
+ .optimiNum {
596
+ padding-left: 10PX;
597
+ }
598
+ }
599
+ </style>