openatc-components 0.3.21 → 0.3.22

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 (499) hide show
  1. package/.babelrc +18 -18
  2. package/.editorconfig +9 -9
  3. package/.eslintignore +5 -5
  4. package/.eslintrc.js +29 -29
  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 +114 -114
  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 +93 -93
  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 +112 -112
  23. package/package/kisscomps/components/BoardCard/index.js +2 -2
  24. package/package/kisscomps/components/ChannelRealtimeIntersection/ChannelRealtimeIntersection.vue +123 -123
  25. package/package/kisscomps/components/ChannelRealtimeIntersection/index.js +2 -2
  26. package/package/kisscomps/components/Channelization/Channelization.vue +584 -584
  27. package/package/kisscomps/components/Channelization/index.js +2 -2
  28. package/package/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +360 -360
  29. package/package/kisscomps/components/ChannelizationFlowStatistic/index.js +2 -2
  30. package/package/kisscomps/components/ChannelizationWithInterface/ChannelizationWithInterface.vue +518 -518
  31. package/package/kisscomps/components/ChannelizationWithInterface/index.js +2 -2
  32. package/package/kisscomps/components/CommonKanban/CommonKanban.vue +132 -132
  33. package/package/kisscomps/components/CommonKanban/index.js +2 -2
  34. package/package/kisscomps/components/DirectionListConfiguration/DirectionListConfiguration.vue +454 -454
  35. package/package/kisscomps/components/DirectionListConfiguration/index.js +2 -2
  36. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-east-bottom.vue +41 -41
  37. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-east-top.vue +60 -60
  38. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-ewped.vue +105 -105
  39. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-north-left.vue +60 -60
  40. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-north-right.vue +60 -60
  41. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-snped.vue +105 -105
  42. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-south-left.vue +60 -60
  43. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-south-right.vue +60 -60
  44. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-west-bottom.vue +60 -60
  45. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-west-top.vue +60 -60
  46. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-xlped.vue +30 -30
  47. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-xrped.vue +30 -30
  48. package/package/kisscomps/components/DirectionListConfiguration/svg/pedSvg.vue +78 -78
  49. package/package/kisscomps/components/DrawChannelization/drawsvg/basicCoordInfo.vue +181 -181
  50. package/package/kisscomps/components/DrawChannelization/drawsvg/channelizationElements.vue +255 -255
  51. package/package/kisscomps/components/DrawChannelization/drawsvg/detectorAssociatedComponent.vue +152 -152
  52. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/TextBox.vue +91 -91
  53. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/crossMap.vue +194 -194
  54. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/editText.vue +108 -108
  55. package/package/kisscomps/components/DrawChannelization/drawsvg/firstImportCrossmap.vue +51 -51
  56. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/countdownSvg.vue +236 -236
  57. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorChart.vue +247 -247
  58. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorIconSvg.vue +210 -210
  59. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/laneIcon.vue +72 -72
  60. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +467 -467
  61. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/pedroadIconSvg.vue +230 -230
  62. package/package/kisscomps/components/DrawChannelization/drawsvg/importDialog.vue +74 -74
  63. package/package/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +1005 -1005
  64. package/package/kisscomps/components/DrawChannelization/drawsvg/index.vue +110 -110
  65. package/package/kisscomps/components/DrawChannelization/drawsvg/laneEditPanel.vue +707 -707
  66. package/package/kisscomps/components/DrawChannelization/drawsvg/overlapAssociatedComponent.vue +172 -172
  67. package/package/kisscomps/components/DrawChannelization/drawsvg/phaseAssociatedComponent.vue +172 -172
  68. package/package/kisscomps/components/DrawChannelization/drawsvg/table.vue +99 -99
  69. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/loadutils.js +87 -87
  70. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/phaseDataModel.js +32 -32
  71. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/phasePos.json +20 -20
  72. package/package/kisscomps/components/DrawChannelization/index.js +2 -2
  73. package/package/kisscomps/components/DrawChannelization/phaseDataMgr.js +278 -278
  74. package/package/kisscomps/components/ExpendConfig/ExpendConfig.vue +118 -118
  75. package/package/kisscomps/components/ExpendConfig/index.js +2 -2
  76. package/package/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +178 -178
  77. package/package/kisscomps/components/FaultDetailModal/index.js +2 -2
  78. package/package/kisscomps/components/IntersectionDirectionSelection/IntersectionDirectionSelection.vue +158 -158
  79. package/package/kisscomps/components/IntersectionDirectionSelection/index.js +2 -2
  80. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +629 -629
  81. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
  82. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +447 -447
  83. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +341 -341
  84. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +497 -497
  85. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +353 -353
  86. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +359 -359
  87. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +443 -443
  88. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkClickSvg.vue +1302 -1302
  89. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1190 -1190
  90. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +498 -498
  91. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +484 -484
  92. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +488 -488
  93. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +566 -566
  94. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +640 -640
  95. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +497 -497
  96. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +486 -486
  97. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +490 -490
  98. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +575 -575
  99. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
  100. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
  101. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
  102. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
  103. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
  104. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
  105. package/package/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +1372 -1372
  106. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/LphaseIconSvg.vue +197 -197
  107. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/phaseIconSvg.vue +196 -196
  108. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +122 -122
  109. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
  110. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
  111. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.json +115 -115
  112. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +115 -115
  113. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
  114. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/sidePos.json +219 -219
  115. package/package/kisscomps/components/IntersectionMap/crossDirection/utils.js +84 -84
  116. package/package/kisscomps/components/IntersectionMap/index.js +2 -2
  117. package/package/kisscomps/components/IntersectionMap/intersectionmap.vue +211 -211
  118. package/package/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +530 -530
  119. package/package/kisscomps/components/IntersectionWithInterface/index.js +2 -2
  120. package/package/kisscomps/components/KanBan/index.js +2 -2
  121. package/package/kisscomps/components/KanBan/kanban.vue +225 -225
  122. package/package/kisscomps/components/MessageBox/index.vue +96 -96
  123. package/package/kisscomps/components/OverLap/OverLap.vue +237 -237
  124. package/package/kisscomps/components/OverLap/index.js +2 -2
  125. package/package/kisscomps/components/PatternOptimize/PatternOptimize.vue +272 -272
  126. package/package/kisscomps/components/PatternOptimize/index.js +2 -2
  127. package/package/kisscomps/components/PatternStatus/PatternStatus.vue +1508 -1508
  128. package/package/kisscomps/components/PatternStatus/index.js +2 -2
  129. package/package/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +423 -423
  130. package/package/kisscomps/components/PatternWalkSvg/index.js +2 -2
  131. package/package/kisscomps/components/PhaseDirectionSelect/PhaseDirectionSelect.vue +126 -126
  132. package/package/kisscomps/components/PhaseDirectionSelect/index.js +2 -2
  133. package/package/kisscomps/components/PhaseDirectionText/PhaseDirectionText.vue +106 -106
  134. package/package/kisscomps/components/PhaseDirectionText/index.js +2 -2
  135. package/package/kisscomps/components/PhaseLegend/PhaseLegend.vue +286 -286
  136. package/package/kisscomps/components/PhaseLegend/index.js +2 -2
  137. package/package/kisscomps/components/PhaseMarker/index.js +6 -6
  138. package/package/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
  139. package/package/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
  140. package/package/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
  141. package/package/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
  142. package/package/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
  143. package/package/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
  144. package/package/kisscomps/components/PhasePedSelect/index.js +2 -2
  145. package/package/kisscomps/components/PhasePedSelect/index.vue +206 -206
  146. package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +908 -908
  147. package/package/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +360 -360
  148. package/package/kisscomps/components/SchemeConfig/azimuthlocking/utils.js +92 -92
  149. package/package/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +210 -210
  150. package/package/kisscomps/components/SchemeConfig/index.js +2 -2
  151. package/package/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +234 -234
  152. package/package/kisscomps/components/SchemeConfig/manualControlModal/index.vue +235 -235
  153. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/controlModelGroup.vue +128 -128
  154. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/icon.vue +438 -428
  155. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/index.vue +855 -855
  156. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/othersIcon.vue +194 -194
  157. package/package/kisscomps/components/SchemeConfig/priorityControl/index.vue +211 -211
  158. package/package/kisscomps/components/SchemeConfig/priorityControl/utils.js +163 -163
  159. package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +283 -283
  160. package/package/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1211 -1211
  161. package/package/kisscomps/components/SelectCrossPhase/index.vue +418 -418
  162. package/package/kisscomps/components/SelectCrossPhase/utils.js +142 -142
  163. package/package/kisscomps/components/StageBord/StageBord.vue +303 -303
  164. package/package/kisscomps/components/StageBord/index.js +2 -2
  165. package/package/kisscomps/components/StageStatus/StageStatus.vue +341 -341
  166. package/package/kisscomps/components/StageStatus/index.js +2 -2
  167. package/package/kisscomps/components/Stages/index.vue +319 -319
  168. package/package/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
  169. package/package/kisscomps/components/SvgIcon/index.js +2 -2
  170. package/package/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +1041 -1041
  171. package/package/kisscomps/components/XRDDirSelector/index.js +2 -2
  172. package/package/kisscomps/components/XiaoKanban/DirSelector.vue +356 -356
  173. package/package/kisscomps/components/XiaoKanban/index.vue +102 -102
  174. package/package/kisscomps/components/overView/index.vue +699 -699
  175. package/package/kisscomps/components/patternConfig/index.js +2 -2
  176. package/package/kisscomps/components/patternConfig/index.vue +981 -981
  177. package/package/kisscomps/components/patternConfig/pattern/patternTable.vue +408 -408
  178. package/package/kisscomps/components/patternConfig/pattern/planChart/model/coordinationModel.js +665 -665
  179. package/package/kisscomps/components/patternConfig/planContent.vue +576 -576
  180. package/package/kisscomps/components/patternConfig/planMenu.vue +329 -329
  181. package/package/kisscomps/components/patternConfig/utils.js +152 -152
  182. package/package/kisscomps/components/patternList/index.js +2 -2
  183. package/package/kisscomps/components/patternList/patternList.vue +585 -585
  184. package/package/kisscomps/index.js +127 -127
  185. package/package/kissui.js +216608 -0
  186. package/package/kissui.min.js +1 -1
  187. package/package.json +127 -127
  188. package/src/App.vue +24 -24
  189. package/src/EdgeMgr/EdgeModelBase.js +16 -16
  190. package/src/EdgeMgr/controller/crossDiagramMgr.js +125 -125
  191. package/src/api/authapi.js +31 -31
  192. package/src/api/config.js +21 -21
  193. package/src/api/control.js +106 -106
  194. package/src/api/cross.js +49 -49
  195. package/src/api/device.js +135 -135
  196. package/src/api/fault.js +66 -66
  197. package/src/api/index.js +24 -24
  198. package/src/api/login.js +46 -46
  199. package/src/api/optimize.js +72 -72
  200. package/src/api/param.js +165 -165
  201. package/src/api/passwdAssest.js +101 -101
  202. package/src/api/route.js +171 -171
  203. package/src/api/template.js +27 -27
  204. package/src/assets/font/LICENSE.txt +202 -202
  205. package/src/assets/font/font.css +6 -6
  206. package/src/i18n/index.js +26 -26
  207. package/src/i18n/language/en.js +1446 -1446
  208. package/src/i18n/language/index.js +25 -25
  209. package/src/i18n/language/zh.js +1445 -1445
  210. package/src/icons/demo_index.html +8445 -8146
  211. package/src/icons/iconfont.css +1451 -1399
  212. package/src/icons/iconfont.js +1 -1
  213. package/src/icons/iconfont.json +2522 -2431
  214. package/src/icons/iconfont.ttf +0 -0
  215. package/src/icons/iconfont.woff +0 -0
  216. package/src/icons/iconfont.woff2 +0 -0
  217. package/src/icons/index.js +20 -20
  218. package/src/icons/svg/azimuthlocking.svg +26 -26
  219. package/src/icons/svg/bendi.svg +110 -110
  220. package/src/icons/svg/bujin.svg +36 -36
  221. package/src/icons/svg/connectBlue.svg +7 -7
  222. package/src/icons/svg/currentvolume.svg +0 -0
  223. package/src/icons/svg/custom-BRTlane.svg +40 -40
  224. package/src/icons/svg/custom-buslane.svg +40 -40
  225. package/src/icons/svg/custom-detector.svg +12 -12
  226. package/src/icons/svg/custom-east-bottom.svg +32 -32
  227. package/src/icons/svg/custom-east-top.svg +32 -32
  228. package/src/icons/svg/custom-ewped.svg +35 -35
  229. package/src/icons/svg/custom-nonmotorizedlane.svg +40 -40
  230. package/src/icons/svg/custom-north-left.svg +32 -32
  231. package/src/icons/svg/custom-north-right.svg +32 -32
  232. package/src/icons/svg/custom-peddetector.svg +17 -17
  233. package/src/icons/svg/custom-snped.svg +35 -35
  234. package/src/icons/svg/custom-south-left.svg +32 -32
  235. package/src/icons/svg/custom-south-right.svg +32 -32
  236. package/src/icons/svg/custom-tramlane.svg +40 -40
  237. package/src/icons/svg/custom-vehiclebranch.svg +40 -40
  238. package/src/icons/svg/custom-vehiclemainroad.svg +41 -41
  239. package/src/icons/svg/custom-west-bottom.svg +32 -32
  240. package/src/icons/svg/custom-west-top.svg +32 -32
  241. package/src/icons/svg/custom-xlped.svg +14 -14
  242. package/src/icons/svg/custom-xrped.svg +14 -14
  243. package/src/icons/svg/cutRed.svg +7 -7
  244. package/src/icons/svg/cycle.svg +0 -0
  245. package/src/icons/svg/dingzhouqi.svg +34 -34
  246. package/src/icons/svg/ganyingkongzhi.svg +30 -30
  247. package/src/icons/svg/guandeng.svg +81 -81
  248. package/src/icons/svg/huangshan.svg +71 -71
  249. package/src/icons/svg/maincontrol.svg +0 -0
  250. package/src/icons/svg/manualcontrolbackground.svg +51 -51
  251. package/src/icons/svg/manualcontrolbackground1.svg +62 -62
  252. package/src/icons/svg/manualcontrolbackgrounden.svg +62 -62
  253. package/src/icons/svg/model.svg +0 -0
  254. package/src/icons/svg/phasediff.svg +0 -0
  255. package/src/icons/svg/prioritycontrol.svg +21 -21
  256. package/src/icons/svg/quanhong.svg +86 -86
  257. package/src/icons/svg/shanghe.svg +11 -11
  258. package/src/icons/svg/shoudong.svg +103 -103
  259. package/src/icons/svg/tentativeplan.svg +28 -28
  260. package/src/icons/svg/time.svg +0 -0
  261. package/src/icons/svg/wuxianlan.svg +46 -46
  262. package/src/icons/svg/xiala.svg +11 -11
  263. package/src/icons/svg/xingrenguojie.svg +33 -33
  264. package/src/icons/svg/xitong.svg +89 -89
  265. package/src/icons/svg/youxian.svg +41 -41
  266. package/src/icons/svg/zizhukongzhi.svg +43 -43
  267. package/src/kisscomps/components/BoardCard/BoardCard.vue +112 -112
  268. package/src/kisscomps/components/BoardCard/index.js +2 -2
  269. package/src/kisscomps/components/ChannelRealtimeIntersection/ChannelRealtimeIntersection.vue +123 -123
  270. package/src/kisscomps/components/ChannelRealtimeIntersection/index.js +2 -2
  271. package/src/kisscomps/components/Channelization/Channelization.vue +584 -584
  272. package/src/kisscomps/components/Channelization/index.js +2 -2
  273. package/src/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +360 -360
  274. package/src/kisscomps/components/ChannelizationFlowStatistic/index.js +2 -2
  275. package/src/kisscomps/components/ChannelizationWithInterface/ChannelizationWithInterface.vue +518 -518
  276. package/src/kisscomps/components/ChannelizationWithInterface/index.js +2 -2
  277. package/src/kisscomps/components/CommonKanban/CommonKanban.vue +132 -132
  278. package/src/kisscomps/components/CommonKanban/index.js +2 -2
  279. package/src/kisscomps/components/DirectionListConfiguration/DirectionListConfiguration.vue +454 -454
  280. package/src/kisscomps/components/DirectionListConfiguration/index.js +2 -2
  281. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-east-bottom.vue +41 -41
  282. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-east-top.vue +60 -60
  283. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-ewped.vue +105 -105
  284. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-north-left.vue +60 -60
  285. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-north-right.vue +60 -60
  286. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-snped.vue +105 -105
  287. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-south-left.vue +60 -60
  288. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-south-right.vue +60 -60
  289. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-west-bottom.vue +60 -60
  290. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-west-top.vue +60 -60
  291. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-xlped.vue +30 -30
  292. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-xrped.vue +30 -30
  293. package/src/kisscomps/components/DirectionListConfiguration/svg/pedSvg.vue +78 -78
  294. package/src/kisscomps/components/DrawChannelization/drawsvg/basicCoordInfo.vue +181 -181
  295. package/src/kisscomps/components/DrawChannelization/drawsvg/channelizationElements.vue +255 -255
  296. package/src/kisscomps/components/DrawChannelization/drawsvg/detectorAssociatedComponent.vue +152 -152
  297. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/TextBox.vue +91 -91
  298. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/crossMap.vue +194 -194
  299. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/editText.vue +108 -108
  300. package/src/kisscomps/components/DrawChannelization/drawsvg/firstImportCrossmap.vue +51 -51
  301. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/countdownSvg.vue +236 -236
  302. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorChart.vue +247 -247
  303. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorIconSvg.vue +210 -210
  304. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/laneIcon.vue +72 -72
  305. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +467 -467
  306. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/pedroadIconSvg.vue +230 -230
  307. package/src/kisscomps/components/DrawChannelization/drawsvg/importDialog.vue +74 -74
  308. package/src/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +1005 -1005
  309. package/src/kisscomps/components/DrawChannelization/drawsvg/index.vue +110 -110
  310. package/src/kisscomps/components/DrawChannelization/drawsvg/laneEditPanel.vue +707 -707
  311. package/src/kisscomps/components/DrawChannelization/drawsvg/overlapAssociatedComponent.vue +172 -172
  312. package/src/kisscomps/components/DrawChannelization/drawsvg/phaseAssociatedComponent.vue +172 -172
  313. package/src/kisscomps/components/DrawChannelization/drawsvg/table.vue +99 -99
  314. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/loadutils.js +87 -87
  315. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/phaseDataModel.js +32 -32
  316. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/phasePos.json +20 -20
  317. package/src/kisscomps/components/DrawChannelization/index.js +2 -2
  318. package/src/kisscomps/components/DrawChannelization/phaseDataMgr.js +278 -278
  319. package/src/kisscomps/components/ExpendConfig/ExpendConfig.vue +118 -118
  320. package/src/kisscomps/components/ExpendConfig/index.js +2 -2
  321. package/src/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +178 -178
  322. package/src/kisscomps/components/FaultDetailModal/index.js +2 -2
  323. package/src/kisscomps/components/IntersectionDirectionSelection/IntersectionDirectionSelection.vue +158 -158
  324. package/src/kisscomps/components/IntersectionDirectionSelection/index.js +2 -2
  325. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +629 -629
  326. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
  327. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +447 -447
  328. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +341 -341
  329. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +497 -497
  330. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +353 -353
  331. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +359 -359
  332. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +443 -443
  333. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkClickSvg.vue +1302 -1302
  334. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1190 -1190
  335. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +498 -498
  336. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +484 -484
  337. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +488 -488
  338. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +566 -566
  339. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +640 -640
  340. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +497 -497
  341. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +486 -486
  342. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +490 -490
  343. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +575 -575
  344. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
  345. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
  346. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
  347. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
  348. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
  349. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
  350. package/src/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +1372 -1372
  351. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/LphaseIconSvg.vue +197 -197
  352. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/phaseIconSvg.vue +196 -196
  353. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +122 -122
  354. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
  355. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
  356. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.json +115 -115
  357. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +115 -115
  358. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
  359. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/sidePos.json +219 -219
  360. package/src/kisscomps/components/IntersectionMap/crossDirection/utils.js +84 -84
  361. package/src/kisscomps/components/IntersectionMap/index.js +2 -2
  362. package/src/kisscomps/components/IntersectionMap/intersectionmap.vue +211 -211
  363. package/src/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +530 -530
  364. package/src/kisscomps/components/IntersectionWithInterface/index.js +2 -2
  365. package/src/kisscomps/components/KanBan/index.js +2 -2
  366. package/src/kisscomps/components/KanBan/kanban.vue +225 -225
  367. package/src/kisscomps/components/MessageBox/index.vue +96 -96
  368. package/src/kisscomps/components/OverLap/OverLap.vue +237 -237
  369. package/src/kisscomps/components/OverLap/index.js +2 -2
  370. package/src/kisscomps/components/PatternOptimize/PatternOptimize.vue +272 -272
  371. package/src/kisscomps/components/PatternOptimize/index.js +2 -2
  372. package/src/kisscomps/components/PatternStatus/PatternStatus.vue +1508 -1508
  373. package/src/kisscomps/components/PatternStatus/index.js +2 -2
  374. package/src/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +423 -423
  375. package/src/kisscomps/components/PatternWalkSvg/index.js +2 -2
  376. package/src/kisscomps/components/PhaseDirectionSelect/PhaseDirectionSelect.vue +126 -126
  377. package/src/kisscomps/components/PhaseDirectionSelect/index.js +2 -2
  378. package/src/kisscomps/components/PhaseDirectionText/PhaseDirectionText.vue +106 -106
  379. package/src/kisscomps/components/PhaseDirectionText/index.js +2 -2
  380. package/src/kisscomps/components/PhaseLegend/PhaseLegend.vue +286 -286
  381. package/src/kisscomps/components/PhaseLegend/index.js +2 -2
  382. package/src/kisscomps/components/PhaseMarker/index.js +6 -6
  383. package/src/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
  384. package/src/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
  385. package/src/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
  386. package/src/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
  387. package/src/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
  388. package/src/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
  389. package/src/kisscomps/components/PhasePedSelect/index.js +2 -2
  390. package/src/kisscomps/components/PhasePedSelect/index.vue +206 -206
  391. package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +908 -908
  392. package/src/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +360 -360
  393. package/src/kisscomps/components/SchemeConfig/azimuthlocking/utils.js +92 -92
  394. package/src/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +210 -210
  395. package/src/kisscomps/components/SchemeConfig/index.js +2 -2
  396. package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +234 -234
  397. package/src/kisscomps/components/SchemeConfig/manualControlModal/index.vue +235 -235
  398. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/controlModelGroup.vue +128 -128
  399. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/icon.vue +438 -428
  400. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/index.vue +855 -855
  401. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/othersIcon.vue +194 -194
  402. package/src/kisscomps/components/SchemeConfig/priorityControl/index.vue +211 -211
  403. package/src/kisscomps/components/SchemeConfig/priorityControl/utils.js +163 -163
  404. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +283 -283
  405. package/src/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1211 -1211
  406. package/src/kisscomps/components/SelectCrossPhase/index.vue +418 -418
  407. package/src/kisscomps/components/SelectCrossPhase/utils.js +142 -142
  408. package/src/kisscomps/components/StageBord/StageBord.vue +303 -303
  409. package/src/kisscomps/components/StageBord/index.js +2 -2
  410. package/src/kisscomps/components/StageStatus/StageStatus.vue +341 -341
  411. package/src/kisscomps/components/StageStatus/index.js +2 -2
  412. package/src/kisscomps/components/Stages/index.vue +319 -319
  413. package/src/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
  414. package/src/kisscomps/components/SvgIcon/index.js +2 -2
  415. package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +1041 -1041
  416. package/src/kisscomps/components/XRDDirSelector/index.js +2 -2
  417. package/src/kisscomps/components/XiaoKanban/DirSelector.vue +356 -356
  418. package/src/kisscomps/components/XiaoKanban/index.vue +102 -102
  419. package/src/kisscomps/components/overView/index.vue +699 -699
  420. package/src/kisscomps/components/patternConfig/index.js +2 -2
  421. package/src/kisscomps/components/patternConfig/index.vue +981 -981
  422. package/src/kisscomps/components/patternConfig/pattern/patternTable.vue +408 -408
  423. package/src/kisscomps/components/patternConfig/pattern/planChart/model/coordinationModel.js +665 -665
  424. package/src/kisscomps/components/patternConfig/planContent.vue +576 -576
  425. package/src/kisscomps/components/patternConfig/planMenu.vue +329 -329
  426. package/src/kisscomps/components/patternConfig/utils.js +152 -152
  427. package/src/kisscomps/components/patternList/index.js +2 -2
  428. package/src/kisscomps/components/patternList/patternList.vue +585 -585
  429. package/src/kisscomps/index.js +127 -127
  430. package/src/lib/publicjs/ArryListUtil.js +38 -38
  431. package/src/lib/publicjs/HttpurlMgr.js +45 -45
  432. package/src/lib/publicjs/KissApi.js +158 -158
  433. package/src/lib/publicjs/KissWSSub/Heartcheck.js +128 -128
  434. package/src/lib/publicjs/KissWSSub/KissWsSub.js +91 -91
  435. package/src/lib/publicjs/KissWSSub/KissWsSubByType.js +152 -152
  436. package/src/lib/publicjs/KissWSSub/SimuWsSubByType.js +44 -44
  437. package/src/lib/publicjs/KissWSSub/Sub.js +51 -51
  438. package/src/lib/publicjs/KissWSSub/SubChannel.js +119 -119
  439. package/src/lib/publicjs/basecomponents.js +65 -65
  440. package/src/lib/publicjs/localStorage.js +112 -112
  441. package/src/lib/publicjs/objdeepcopy.js +32 -32
  442. package/src/lib/publicjs/pageScroll.js +30 -30
  443. package/src/lib/publicjs/passwdAssest.js +101 -101
  444. package/src/lib/publicjs/styleclassfactory.js +32 -32
  445. package/src/main.js +51 -51
  446. package/src/router/index.js +63 -63
  447. package/src/store/getters.js +16 -16
  448. package/src/store/index.js +26 -26
  449. package/src/store/modules/globalParam.js +67 -67
  450. package/src/utils/ControlFormat.js +68 -68
  451. package/src/utils/RingDataModel.js +331 -331
  452. package/src/utils/auth.js +199 -199
  453. package/src/utils/conflct.js +259 -259
  454. package/src/utils/conflictList.js +87 -87
  455. package/src/utils/dateFormat.js +41 -41
  456. package/src/utils/errorcode.js +227 -227
  457. package/src/utils/fault.js +196 -196
  458. package/src/utils/faultcode.js +209 -209
  459. package/src/utils/index.js +69 -69
  460. package/src/utils/pedphasedesc.js +119 -119
  461. package/src/utils/phaseList.js +203 -203
  462. package/src/utils/phasedesc.js +144 -144
  463. package/src/utils/responseMessage.js +21 -21
  464. package/src/utils/validate.js +43 -43
  465. package/src/views/customchannelization.vue +49 -49
  466. package/src/views/home.1.vue +479 -479
  467. package/src/views/home.vue +93 -93
  468. package/src/views/intersection.vue +521 -521
  469. package/src/views/intersection2.vue +328 -328
  470. package/src/views/overView.vue +41 -41
  471. package/src/views/patternConfig.vue +609 -609
  472. package/src/views/schemeconfig.vue +206 -206
  473. package/static/apiconfig.json +451 -451
  474. package/static/styles/channelizatioon.scss +433 -433
  475. package/static/styles/common.scss +30 -30
  476. package/static/styles/commonkanban.scss +168 -168
  477. package/static/styles/dark/index.scss +2 -2
  478. package/static/styles/dark/theme/element-dark.scss +44 -44
  479. package/static/styles/index.scss +84 -84
  480. package/static/styles/intersection.scss +190 -190
  481. package/static/styles/light/index.scss +2 -2
  482. package/static/styles/light/theme/element-light.scss +44 -44
  483. package/static/styles/overview.scss +146 -146
  484. package/static/styles/patternConfig.scss +56 -56
  485. package/static/styles/phasePedSelect.scss +71 -70
  486. package/static/styles/schemeconfig.scss +549 -549
  487. package/static/styles/stages.scss +57 -57
  488. package/static/styles/theme/element-dark.scss +0 -0
  489. package/static/styles/uiComponents.scss +57 -57
  490. package/static/styles/xiaokanban.scss +50 -50
  491. package/static/token.json +2 -2
  492. package/test/e2e/custom-assertions/elementCount.js +27 -27
  493. package/test/e2e/nightwatch.conf.js +46 -46
  494. package/test/e2e/runner.js +48 -48
  495. package/test/e2e/specs/test.js +19 -19
  496. package/test/unit/.eslintrc +7 -7
  497. package/test/unit/jest.conf.js +30 -30
  498. package/test/unit/setup.js +3 -3
  499. package/test/unit/specs/HelloWorld.spec.js +11 -11
@@ -1,908 +1,908 @@
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="scheme-config openatc-scheme-config" style="height: 100%;">
14
- <fault-detail-modal ref="faultDetail" :agentId="agentId" :isFromAtc="isFromAtc" @refreshFault="getFaultById"></fault-detail-modal>
15
- <div style="height: 100%;">
16
- <transition name="fade-right" mode="out-in"
17
- :enter-active-class="toPage === 1 ? 'animated fadeInRight' : 'animated fadeInLeft'"
18
- :leave-active-class="toPage === 1 ? 'animated fadeOutRight' : 'animated fadeOutLeft' ">
19
- <div class="new" style="position: absolute;width: 100%;height:100%;" v-show="(isOperation && !isClosePhase)">
20
- <ManualControlModalNew
21
- ref="ManualControlModalNew"
22
- :residentControlList="residentControlList"
23
- :specialControlList="specialControlList"
24
- :patternChooseControlList="patternChooseControlList"
25
- :othersControlList="othersControlList"
26
- :controlData="controlData"
27
- :patternAll="patternAll"
28
- :crossStatusData="crossStatusData"
29
- :preselectModel="preselectModel"
30
- :preselectStages="preselectStages"
31
- :realtimeStatusModalvisible="realtimeStatusModalvisible"
32
- :roadDirection="roadDirection"
33
- :closePhaseRings="phaseRings"
34
- :sidewalkPhaseData="sidewalkPhaseData"
35
- :phaseList="phaseList"
36
- :statusData="statusData"
37
- :lockPhaseBtnName="lockPhaseBtnName"
38
- :overlap="overlap"
39
- :patternSelect="patternSelect"
40
- :allPatternList="allPatternList"
41
- :isShowBack="isShowBack"
42
- @closeManualModal="closeManualModal"
43
- @selectModel="selectModel"
44
- @selectStages="selectStages"
45
- @patternCommit="patternCommit"
46
- @closePhaseBack="closePhaseBack"
47
- @closePhaseControl="closePhaseControl"
48
- @selectSpecialModel="selectSpecialModelNew" />
49
- </div>
50
- </transition>
51
-
52
- <transition name="fade-left" mode="out-in"
53
- enter-active-class="animated fadeInLeft"
54
- leave-active-class="animated fadeOutLeft">
55
- <div class="right-control-part" style="position: absolute;width: 100%;" v-show="!isOperation">
56
- <RealtimeStatusModal
57
- :controlData="controlData"
58
- :currModel="currModel"
59
- :ip="ip"
60
- :platform="platform"
61
- :responseTime="responseTime"
62
- :curFaultList="curFaultList"
63
- :confirmedFault="confirmedFault"
64
- :ignoredFault="ignoredFault"
65
- :untreatedFault="untreatedFault"
66
- :closePhase="closePhase"
67
- :agentName="agentName"
68
- :agentId="agentId"
69
- :crossStatusData="crossStatusData"
70
- :phaseList="phaseList"
71
- :sidewalkPhaseData="sidewalkPhaseData"
72
- :roadDirection="roadDirection"
73
- @changeStatus="changeStatus"
74
- @showFaultDetail="showFaultDetail"/>
75
- </div>
76
- </transition>
77
- </div>
78
- </div>
79
- </template>
80
-
81
- <script>
82
- import { putTscControl } from '../../../api/control.js'
83
- import { uploadSingleTscParam } from '../../../api/param.js'
84
- import RealtimeStatusModal from './realtimeStatusModal'
85
- import ManualControlModal from './manualControlModal'
86
- import ManualControlModalNew from './manualControlModalNew'
87
- import ClosePhaseControlModal from './closePhaselControlModal'
88
- import LockingPhaseControlModal from './lockingPhaselControlModal'
89
- import TentativePlanControlModal from './tentativeplancontrolmodal'
90
- import AzimuthLocking from './azimuthlocking'
91
- import priorityControl from './priorityControl'
92
- // import { getFaultMesZh, getFaultMesEn } from '../../utils/faultcode.js'
93
- import { getMessageByCode } from '../../../utils/responseMessage'
94
- import { GetAllFaultRange } from '../../../api/fault'
95
- import PhaseDataModel from '../IntersectionMap/crossDirection/utils.js'
96
- import CrossDiagramMgr from '../../../EdgeMgr/controller/crossDiagramMgr.js'
97
- import { setToken, setHost, getTheme } from '../../../utils/auth.js'
98
- import RingDataModel from '../../../utils/RingDataModel.js'
99
- import { getIntersectionInfo } from '../../../api/template'
100
-
101
- export default {
102
- name: 'scheme-config',
103
- components: {
104
- RealtimeStatusModal,
105
- ManualControlModal,
106
- ClosePhaseControlModal,
107
- LockingPhaseControlModal,
108
- priorityControl,
109
- AzimuthLocking,
110
- TentativePlanControlModal,
111
- ManualControlModalNew
112
- },
113
- props: {
114
- phaseList: {
115
- type: Array,
116
- default: () => []
117
- },
118
- reqUrl: {
119
- type: String,
120
- default: ''
121
- },
122
- responseTime: {
123
- type: Number,
124
- default: 0
125
- },
126
- statusData: {
127
- type: Object,
128
- required: true
129
- },
130
- agentName: {
131
- type: String,
132
- default: ''
133
- },
134
- // devStatus: {
135
- // type: Number,
136
- // default: 0
137
- // },
138
- agentId: {
139
- type: String,
140
- default: '0'
141
- },
142
- ip: {
143
- type: String
144
- },
145
- // allPatternList: {
146
- // type: Array
147
- // },
148
- // overlap: {
149
- // type: Array
150
- // },
151
- platform: {
152
- type: String
153
- },
154
- realtimeStatusModalvisible: {
155
- type: Boolean,
156
- default: true
157
- },
158
- lockPhaseBtnName: {
159
- type: String
160
- },
161
- Token: {
162
- type: String,
163
- default: ''
164
- },
165
- funcSort: {
166
- type: String,
167
- default: 'allFunc'
168
- },
169
- roadDirection: {
170
- type: String,
171
- default: 'right'
172
- },
173
- isFromAtc: {
174
- type: Boolean,
175
- default: true
176
- },
177
- isShowBack: {
178
- type: Boolean,
179
- default: true
180
- }
181
- },
182
- data () {
183
- return {
184
- crossStatusData: null,
185
- controlData: {},
186
- control: '',
187
- allPatternList: [],
188
- overlap: [],
189
- sidewalkPhaseData: [],
190
- list: [{
191
- iconClass: 'model',
192
- name: '控制模式',
193
- value: '--'
194
- }, {
195
- iconClass: 'cycle',
196
- name: '周期',
197
- value: '--'
198
- }, {
199
- iconClass: 'time',
200
- name: '当前时间',
201
- value: '--'
202
- }, {
203
- iconClass: 'maincontrol',
204
- name: '控制方式',
205
- value: '--'
206
- }, {
207
- iconClass: 'phasediff',
208
- name: '相位差',
209
- value: '--'
210
- }, {
211
- iconClass: 'time',
212
- name: '剩余时间',
213
- value: '--'
214
- }],
215
- faultTimer: null, // 当前故障定时器
216
- ParamsMode: new Map([[0, '自主控制'], [1, '本地手动'], [2, '平台控制'], [3, '配置软件控制'], [4, '遥控器控制'], [5, '黄闪器控制'], [6, '降级控制'], [7, '脚本控制'], [8, '算法控制']]),
217
- ParamsModeEn: new Map([[0, 'Autonomous Control'], [1, 'Local Manual'], [2, 'Platform Control'], [3, 'Configuration Software Control'], [4, 'Remote Control'], [5, 'Yellow Flasher Control'], [6, 'Degradation Control'], [7, 'Script Control'], [8, 'Algorithm Control']]),
218
- ParamsControl: new Map([[0, '多时段'], [1, '黄闪'], [2, '全红'], [3, '关灯'], [4, '步进'], [5, '定周期控制'], [6, '单点感应控制'], [7, '协调感应控制'], [8, '方案选择控制'], [9, '自适应控制'], [10, '无电缆控制'], [11, '有电缆控制'], [12, '行人过街控制'], [13, '方案恢复过渡'], [14, '相位驻留'], [15, '通道检测'], [16, '方向锁定'], [17, '韦伯斯特单点控制'], [18, '预留18'], [19, '感应式行人过街'], [20, '方案干预'], [100, '方案干预'], [21, '预留21'], [22, '相位锁定'], [23, '相位放行控制'], [24, '紧急控制'], [99, '设备维护']]),
219
- ParamsControlEn: new Map([[0, 'Multi Period'], [1, 'Yellow Flash Control'], [2, 'Red Control'], [3, 'Dark Control'], [4, 'Step'], [5, 'Fixed_Cycle Control'], [6, 'Free Control'], [7, 'Coordinated Induction Control'], [8, 'Pattern Selection Control'], [9, 'Adaptive Control'], [10, 'Wireless Control'], [11, 'Cable Control'], [12, 'Pedestrian Crossing Control'], [13, 'Pattern recovery'], [14, 'Phase dwell'], [15, 'Channel Detection'], [16, 'Direction lock'], [17, 'Webster Single Point Coordination'], [18, 'Reserving18'], [19, 'Inductive Pedestrian Crossing Control'], [20, 'Program Intervention'], [100, 'Program Intervention'], [21, 'Reserving21'], [22, 'Priority Control'], [23, 'Close Phase'], [24, 'Emergency Control'], [99, 'Device Mantenance']]),
220
- phaseType: new Map([[1, '红'], [2, '黄'], [3, '绿']]), // phaseType表示红,黄,绿
221
- phaseTypeEn: new Map([[1, 'Red'], [2, 'Yellow'], [3, 'Green']]), // phaseType表示红,黄,绿
222
- mode: '2',
223
- loading: {},
224
- modelList: [{
225
- id: 1,
226
- iconClass: 'huangshan',
227
- permission: 'configer:manual:senior',
228
- iconName: '黄闪'
229
- }, {
230
- id: 2,
231
- iconClass: 'quanhong',
232
- permission: 'configer:manual:senior',
233
- iconName: '全红'
234
- }, {
235
- id: 3,
236
- iconClass: 'guandeng',
237
- permission: 'configer:manual:senior',
238
- iconName: '关灯'
239
- }, {
240
- id: 4,
241
- iconClass: 'bujin',
242
- permission: 'configer:manual:dwell',
243
- iconName: '步进'
244
- }, {
245
- id: 5,
246
- iconClass: 'dingzhouqi',
247
- permission: 'configer:manual:base',
248
- iconName: '定周期'
249
- }, {
250
- id: 6,
251
- iconClass: 'ganyingkongzhi',
252
- permission: 'configer:manual:base',
253
- iconName: '感应控制'
254
- }, {
255
- id: 9,
256
- iconClass: 'zishiying',
257
- permission: 'configer:manual:base',
258
- iconName: '自适应控制'
259
- }, {
260
- id: 10,
261
- iconClass: 'wuxianlan',
262
- permission: 'configer:manual:base',
263
- iconName: '无电缆协调'
264
- }, {
265
- id: 12,
266
- iconClass: 'xingrenguojie',
267
- permission: 'configer:manual:base',
268
- iconName: '行人过街'
269
- }, {
270
- id: 19,
271
- iconClass: 'ganyingshixingrenguojie',
272
- permission: 'configer:manual:base',
273
- iconName: '感应式行人过街控制'
274
- }],
275
- residentControlList: [
276
- {
277
- type: '步进',
278
- id: 4,
279
- iconClass: 'bujin',
280
- permission: 'configer:manual:dwell',
281
- iconName: this.$t('openatccomponents.overview.modelList4'),
282
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
283
- },
284
- {
285
- type: '阶段锁定',
286
- id: 4,
287
- iconClass: 'jieduansuoding',
288
- permission: 'configer:manual:dwell',
289
- iconName: this.$t('openatccomponents.overview.modelList4-'),
290
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
291
- },
292
- {
293
- type: '相位锁定',
294
- id: 22,
295
- iconClass: 'xiangweisuoding',
296
- permission: 'configer:manual:dwell',
297
- iconName: this.$t('openatccomponents.overview.modelList22'),
298
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
299
- },
300
- {
301
- type: '方向锁定',
302
- id: 25,
303
- iconClass: 'fangxiangsuoding',
304
- permission: 'configer:manual:dwell',
305
- iconName: this.$t('openatccomponents.overview.modelList25'),
306
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
307
- }
308
- ],
309
- specialControlList: [
310
- {
311
- type: '黄闪',
312
- id: 1,
313
- iconClass: 'huangshan',
314
- permission: 'configer:manual:senior',
315
- iconName: this.$t('openatccomponents.overview.modelList1'),
316
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
317
- }, {
318
- type: '全红',
319
- id: 2,
320
- iconClass: 'quanhong',
321
- permission: 'configer:manual:senior',
322
- iconName: this.$t('openatccomponents.overview.modelList2'),
323
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
324
- }, {
325
- type: '关灯',
326
- id: 3,
327
- iconClass: 'guandeng',
328
- permission: 'configer:manual:senior',
329
- iconName: this.$t('openatccomponents.overview.modelList3'),
330
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
331
- }
332
- ],
333
- patternChooseControlList: [
334
- {
335
- type: '定周期',
336
- id: 5,
337
- iconClass: 'dingzhouqi',
338
- permission: 'configer:manual:base',
339
- iconName: this.$t('openatccomponents.overview.modelList5'),
340
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
341
- }, {
342
- type: '单点感应',
343
- id: 6,
344
- iconClass: 'ganyingkongzhi',
345
- permission: 'configer:manual:base',
346
- iconName: this.$t('openatccomponents.overview.modelList6'),
347
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
348
- }, {
349
- type: '自适应控制',
350
- id: 9,
351
- iconClass: 'zishiying',
352
- permission: 'configer:manual:base',
353
- iconName: this.$t('openatccomponents.overview.modelList9'),
354
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
355
- }, {
356
- type: '无电缆协调',
357
- id: 10,
358
- iconClass: 'wuxianlan',
359
- permission: 'configer:manual:base',
360
- iconName: this.$t('openatccomponents.overview.modelList10'),
361
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
362
- }, {
363
- type: '行人过街',
364
- id: 12,
365
- iconClass: 'xingrenguojie',
366
- permission: 'configer:manual:base',
367
- iconName: this.$t('openatccomponents.overview.modelList12'),
368
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
369
- }, {
370
- type: '感应式行人过街',
371
- id: 19,
372
- iconClass: 'ganyingshixingrenguojie',
373
- permission: 'configer:manual:base',
374
- iconName: this.$t('openatccomponents.overview.modelList19'),
375
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
376
- }
377
- ],
378
- othersControlList: [
379
- { // 特殊控制
380
- type: '相位关断',
381
- id: 23,
382
- permission: 'configer:manual:optimize',
383
- iconClass: 'closephase',
384
- iconName: this.$t('openatccomponents.overview.modelList23'),
385
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
386
- }, {
387
- type: '临时方案',
388
- id: 100,
389
- permission: 'configer:manual:optimize',
390
- iconClass: 'tentativeplan',
391
- iconName: this.$t('openatccomponents.overview.modelList100'),
392
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
393
- }, {
394
- type: '优先控制',
395
- id: 24,
396
- permission: 'configer:manual:preempt',
397
- iconClass: 'prioritycontrol',
398
- iconName: this.$t('openatccomponents.overview.modelList24'),
399
- bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
400
- }],
401
- currModel: -1,
402
- preselectModel: -1, // 预选方案
403
- preselectStages: -1, // 预选阶段
404
- closePhase: [],
405
- isOperation: false, // 是否为手动可操作状态
406
- tempPatternid: 0, // 控制方式手动操作的情况下的控制编号的临时值。
407
- tempDelay: 0, // 控制方式手动操作的情况下的延迟时间的临时值。
408
- tempDuration: 0, // 控制方式手动操作的情况下的持续时间的临时值。
409
- // phaseList: [], // 当前相位集合
410
- faultvisible: false,
411
- isClosePhase: false, // 是否在相位关断
412
- toPage: 1, // 与哪一个页面交互,1 代表路口信息页面,3代表 相位关断页面
413
- phaseRings: [],
414
- curFaultList: [],
415
- confirmedFault: [],
416
- ignoredFault: [],
417
- untreatedFault: [],
418
- patternAll: [],
419
- patternSelect: [], // 所有方案id
420
- specialPage: '', // 哪一个特殊控制页面
421
- nextcycleefficcontrol: [5, 6, 9, 10, 12, 19] // 下周期生效的控制方式
422
- }
423
- },
424
- watch: {
425
- agentId: {
426
- handler: function (val) {
427
- this.getIntersectionInfo(val)
428
- },
429
- // 深度观察监听
430
- deep: true
431
- },
432
- statusData: {
433
- handler: function (val) {
434
- this.initData()
435
- this.getPedPhasePos()
436
- },
437
- // 深度观察监听
438
- deep: true
439
- },
440
- phaseList: {
441
- handler: function (val, oldVal) {
442
- this.getPedPhasePos()
443
- },
444
- // 深度观察监听
445
- deep: true
446
- },
447
- Token: {
448
- handler: function (val) {
449
- this.setPropsToken(val)
450
- }
451
- },
452
- roadDirection: {
453
- handler: function (val) {
454
- if (val === 'left' || val === 'right') {
455
- this.PhaseDataModel = new PhaseDataModel(val)
456
- }
457
- }
458
- }
459
- },
460
- created () {
461
- this.setHost(this.reqUrl)
462
- this.PhaseDataModel = new PhaseDataModel(this.roadDirection)
463
- this.CrossDiagramMgr = new CrossDiagramMgr()
464
- this.getIntersectionInfo(this.agentId)
465
- },
466
- async mounted () {
467
- if (this.realtimeStatusModalvisible === false) {
468
- this.changeStatus()
469
- }
470
- this.setPropsToken(this.Token)
471
- // await this.getPhase()
472
- this.getFault()
473
- this.initData()
474
- },
475
- methods: {
476
- setHost (host) {
477
- // 获取组件外传入的token,便于独立组件调用接口
478
- if (host && host !== '') {
479
- setHost(host)
480
- }
481
- },
482
- getIntersectionInfo (agentid) {
483
- // 获取路口信息
484
- getIntersectionInfo(agentid).then(res => {
485
- this.patternAll = res.data.data.param.patternList
486
- this.allPatternList = res.data.data.param.patternList
487
- this.overlap = res.data.data.param.overlaplList
488
- this.patternSelect = res.data.data.param.patternList.map(item => {
489
- return {
490
- value: item.id,
491
- label: item.desc ? item.desc : '' + item.id ? item.id : ''
492
- }
493
- })
494
- })
495
- },
496
- getFault () {
497
- this.getFaultById()
498
- this.faultTimer = setInterval(() => {
499
- this.getFaultById()
500
- }, 30000)
501
- },
502
- getPedPhasePos () {
503
- let ringDataModel = new RingDataModel(this.statusData, this.phaseList)
504
- this.sidewalkPhaseData = ringDataModel.getPedPhasePos()
505
- this.ringDataModel = ringDataModel
506
- },
507
- clearFaultInterval () {
508
- if (this.faultTimer !== null) {
509
- clearInterval(this.faultTimer) // 清除流量定时器
510
- this.faultTimer = null
511
- }
512
- },
513
- initData () {
514
- this.crossStatusData = JSON.parse(JSON.stringify(this.statusData))
515
- let TscData = JSON.parse(JSON.stringify(this.crossStatusData))
516
- this.currModel = TscData.control
517
- this.controlData = this.handleGetData(TscData)
518
- this.handleGetPhaseClose()
519
- },
520
- lockScreen () {
521
- this.loading = this.$loading({
522
- lock: true,
523
- text: 'Loading',
524
- spinner: 'el-icon-loading',
525
- background: 'rgba(0, 0, 0, 0.5)'
526
- })
527
- },
528
- unlockScreen () {
529
- this.loading.close()
530
- },
531
- selectModel (value) {
532
- if (!this.isOperation) return
533
- this.preselectStages = -1
534
- this.recoverLastModel = this.preselectModel // 记录恢复前选中的控制方式
535
- this.preselectModel = value
536
- },
537
- selectStages (value) {
538
- if (!this.isOperation) return
539
- if (this.preselectStages !== -1) {
540
- if (this.preselectStages === value) {
541
- this.preselectStages = -1
542
- } else {
543
- this.preselectStages = value
544
- this.preselectModel = 4 // 如果选了阶段,默认控制方式为步进
545
- }
546
- } else {
547
- this.preselectStages = value
548
- this.preselectModel = 4 // 如果选了阶段,默认控制方式为步进
549
- }
550
- },
551
- changeStatus () {
552
- this.toPage = 1
553
- this.isOperation = true
554
- this.$refs.ManualControlModalNew.init()
555
- },
556
- handleGetData (data) {
557
- let that = this
558
- if (data.name === '') {
559
- if (that.$i18n.locale === 'en') {
560
- data.name = 'Pattern' + data.patternid
561
- } else if (that.$i18n.locale === 'zh') {
562
- data.name = '方案' + data.patternid
563
- }
564
- }
565
- Object.keys(data).forEach(function (key) {
566
- if (that.$i18n.locale === 'en') {
567
- if (key === 'mode') {
568
- if (that.ParamsModeEn.get(data[key]) !== undefined) {
569
- data[key] = that.ParamsModeEn.get(data[key])
570
- } else {
571
- data[key] = that.ParamsModeEn.get(0)
572
- }
573
- }
574
- // if (key === 'control') {
575
- // data[key] = that.ParamsControlEn.get(data[key])
576
- // }
577
- if (key === 'phase') {
578
- for (let val of data[key]) {
579
- val.type = that.phaseTypeEn.get(val.type)
580
- }
581
- }
582
- } else if (that.$i18n.locale === 'zh') {
583
- if (key === 'mode') {
584
- if (that.ParamsMode.get(data[key]) !== undefined) {
585
- data[key] = that.ParamsMode.get(data[key])
586
- } else {
587
- data[key] = that.ParamsMode.get(0)
588
- }
589
- }
590
- if (key === 'control') {
591
- data[key] = that.ParamsControl.get(data[key])
592
- }
593
- if (key === 'phase') {
594
- for (let val of data[key]) {
595
- val.type = that.phaseType.get(val.type)
596
- }
597
- }
598
- }
599
- })
600
- return data
601
- },
602
- closeManualModal () {
603
- this.isOperation = false
604
- this.preselectModel = -1
605
- this.preselectStages = -1
606
- this.tempPatternid = 0
607
- this.tempDelay = 0
608
- this.tempDuration = 0
609
- this.modelList = this.modelList.filter((item) => {
610
- return item.id !== 0
611
- })
612
- this.toPage = 1
613
- },
614
- handleManualConfirm (manualInfo) {
615
- this.$emit('handleManualConfirm', manualInfo)
616
- },
617
- patternCommit (manualInfo) {
618
- let that = this
619
- let control = {}
620
- if (that.preselectModel === -1) {
621
- this.$message.error(this.$t('openatccomponents.overview.noselectcontroltip'))
622
- return
623
- }
624
- that.ParamsMode.forEach(function (value, key, map) {
625
- if (that.controlData.mode === value) {
626
- control.mode = key
627
- }
628
- })
629
- control.control = that.preselectModel
630
- // control.terminal = isNaN(parseInt(manualInfo.tempPatternid)) ? Number(manualInfo.tempPatternid.replace(/[^0-9]/ig, '')) : manualInfo.tempPatternid
631
- control.terminal = manualInfo.tempPatternid === undefined ? null : Number(manualInfo.tempPatternid)
632
- // control.delay = Number(manualInfo.tempDelay)
633
- control.duration = Number(manualInfo.tempDuration)
634
- control.value = that.preselectStages === -1 ? 0 : that.preselectStages
635
- if (control.control === 0) {
636
- // 恢复自主控制(多时段)时,value为当前控制方式
637
- control.value = this.currModel
638
- if (manualInfo && manualInfo.fromControl) {
639
- const specialControlArr = [40, 4, 100, 101]
640
- if (specialControlArr.includes(manualInfo.fromControl)) {
641
- control.value = manualInfo.fromControl
642
- }
643
- }
644
- }
645
- if (!this.realtimeStatusModalvisible) {
646
- console.log(control)
647
- this.$emit('patternCommitCallback', control)
648
- return
649
- }
650
- this.lockScreen()
651
- putTscControl(control).then(data => {
652
- that.unlockScreen()
653
- if (control.control === 0) {
654
- that.preselectModel = that.recoverLastModel
655
- }
656
- let success = 0
657
- if (!data.data.success) {
658
- if (data.data.code === '4002' && data.data.data.errorCode === '4209') {
659
- let success = data.data.data.content.success
660
- if (success !== 0) {
661
- let errormsg = 'openatccomponents.overview.putTscControlError' + success
662
- this.$message.error(this.$t(errormsg))
663
- return
664
- }
665
- }
666
- that.$message.error(getMessageByCode(data.data.code, that.$i18n.locale))
667
- return
668
- }
669
- if (data.data.data && data.data.data.data) {
670
- success = data.data.data.data.success
671
- if (success !== 0) {
672
- let errormsg = 'openatccomponents.overview.putTscControlError' + success
673
- that.$message.error(this.$t(errormsg))
674
- return
675
- }
676
- }
677
- // this.closeManualModal()
678
- if (this.nextcycleefficcontrol.indexOf(that.currModel) !== -1 && this.nextcycleefficcontrol.indexOf(that.preselectModel) !== -1) {
679
- that.$message.success(this.$t('openatccomponents.overview.nextcycleeffic'))
680
- return
681
- }
682
- if (that.preselectModel === 4) {
683
- that.$message.success(this.$t('openatccomponents.overview.transitioneffic'))
684
- return
685
- }
686
- if (success === 0) {
687
- that.$message.success(this.$t('openatccomponents.common.download'))
688
- }
689
- }).catch(error => {
690
- that.unlockScreen()
691
- if (control.control === 0) {
692
- that.preselectModel = that.recoverLastModel
693
- }
694
- console.log(error)
695
- })
696
- },
697
- getPhase () {
698
- let _this = this
699
- return new Promise(function (resolve, reject) {
700
- uploadSingleTscParam('phase', _this.agentId).then(data => {
701
- let res = data.data
702
- if (!res.success) {
703
- if (res.code === '4003') {
704
- _this.$message.error(_this.$t('openatccomponents.errorTip.devicenotonline'))
705
- return
706
- }
707
- _this.$message.error(getMessageByCode(data.data.code, _this.$i18n.locale))
708
- return
709
- }
710
- _this.phaseList = res.data.data.phaseList
711
- resolve()
712
- })
713
- })
714
- },
715
- handleFaultsVisible () {
716
- this.faultvisible = !this.faultvisible
717
- },
718
- handleGetPhaseClose () {
719
- if (this.crossStatusData.phase) {
720
- this.crossStatusData.phase = this.crossStatusData.phase.map(ele => {
721
- return {
722
- ...ele,
723
- close: ele.close || 0,
724
- locktype: 0 // 默认所有相位显示解锁状态
725
- }
726
- })
727
- // 相位关断标签
728
- let closePhase = []
729
- this.crossStatusData.phase.forEach(phase => {
730
- if (phase.close !== undefined && phase.close !== 0) {
731
- let typename
732
- switch (phase.close) {
733
- case 1: typename = ''
734
- break
735
- case 2: typename = this.$t('openatccomponents.overview.vehicle')
736
- break
737
- case 3: typename = this.$t('openatccomponents.overview.pedestrian')
738
- break
739
- default:typename = ''
740
- }
741
- closePhase.push({
742
- id: phase.id,
743
- typename: typename
744
- })
745
- }
746
- })
747
- this.closePhase = JSON.parse(JSON.stringify(closePhase))
748
- } else {
749
- this.closePhase = []
750
- }
751
- },
752
- selectSpecialModelNew () {
753
- let ringDataModel = new RingDataModel(this.statusData, this.phaseList)
754
- this.phaseRings = ringDataModel.initRingPhaseData()
755
- },
756
- selectSpecialModel (id) {
757
- let ringDataModel = new RingDataModel(this.statusData, this.phaseList)
758
- if (id === 23) {
759
- this.toPage = 3
760
- this.isClosePhase = true
761
- this.phaseRings = ringDataModel.initRingPhaseData()
762
- this.specialPage = 'closephase'
763
- } else if (id === 22) {
764
- this.toPage = 3
765
- this.isClosePhase = true
766
- this.phaseRings = ringDataModel.initRingPhaseData()
767
- this.specialPage = 'lockingphase'
768
- } else if (id === 100) {
769
- this.toPage = 3
770
- this.isClosePhase = true
771
- this.phaseRings = ringDataModel.initRingPhaseData()
772
- this.specialPage = 'tentativeplan'
773
- } else if (id === 24) {
774
- this.toPage = 3
775
- this.isClosePhase = true
776
- this.phaseRings = ringDataModel.initRingPhaseData()
777
- this.specialPage = 'prioritycontrol'
778
- } else if (id === 25) {
779
- this.toPage = 3
780
- this.isClosePhase = true
781
- this.phaseRings = ringDataModel.initRingPhaseData()
782
- this.specialPage = 'azimuthlocking'
783
- } else {
784
- this.isClosePhase = false
785
- this.specialPage = ''
786
- }
787
- },
788
- closePhaseBack () {
789
- this.toPage = 3
790
- this.isClosePhase = false
791
- },
792
- closePhaseControl (controldata) {
793
- if (!this.realtimeStatusModalvisible) {
794
- this.$emit('patternCommitCallback', controldata)
795
- return
796
- }
797
- this.lockScreen()
798
- putTscControl(controldata).then(data => {
799
- this.unlockScreen()
800
- let success = 0
801
- if (!data.data.success) {
802
- if (data.data.code === '4002' && data.data.data.errorCode === '4209') {
803
- let success = data.data.data.content.success
804
- if (success !== 0) {
805
- let errormsg = 'openatccomponents.overview.putTscControlError' + success
806
- this.$message.error(this.$t(errormsg))
807
- return
808
- }
809
- }
810
- this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
811
- return
812
- }
813
- if (data.data.data && data.data.data.data) {
814
- success = data.data.data.data.success
815
- if (success !== 0) {
816
- let errormsg = 'openatccomponents.overview.putTscControlError' + success
817
- this.$message.error(this.$t(errormsg))
818
- return
819
- }
820
- }
821
- this.$message.success(this.$t('openatccomponents.common.download'))
822
- }).catch(error => {
823
- this.unlockScreen()
824
- console.log(error)
825
- })
826
- },
827
- // initRingPhaseData () {
828
- // // 环信息从单独上载相位信息里获取,以免相位锁定后,方案状态数据里没有rings,导致相位锁定控制列表无法显示
829
- // this.phaseRings = []
830
- // let map = {}
831
- // let dest = []
832
- // for (let i = 0; i < this.phaseList.length; i++) {
833
- // let ai = this.phaseList[i]
834
- // if (!map[ai.ring]) {
835
- // let addphse = this.addPhaseInfo(ai)
836
- // dest.push({
837
- // num: ai.ring,
838
- // phases: [{...ai, ...addphse}]
839
- // })
840
- // map[ai.ring] = ai
841
- // } else {
842
- // for (var j = 0; j < dest.length; j++) {
843
- // var dj = dest[j]
844
- // if (dj.num === ai.ring) {
845
- // let addphse = this.addPhaseInfo(ai)
846
- // dj.phases.push({...ai, ...addphse})
847
- // break
848
- // }
849
- // }
850
- // }
851
- // }
852
- // this.phaseRings = JSON.parse(JSON.stringify(dest))
853
- // },
854
- // addPhaseInfo (phase) {
855
- // let addphse = {}
856
- // addphse.name = this.$t('openatccomponents.overview.phase') + phase.id
857
- // addphse.desc = this.getPhaseDescription(phase.direction)
858
- // // 相位锁定选项默认都按照解锁状态显示
859
- // addphse.locktype = 0
860
- // addphse.close = 0
861
- // if (this.crossStatusData !== null && this.crossStatusData.phase) {
862
- // // 如果方案状态相位有close字段,这边就需要对应close状态进相位关断控制的选项里
863
- // let phaseStatus = this.crossStatusData.phase.filter(ele => ele.id === phase.id)[0]
864
- // addphse = {...addphse, ...phaseStatus}
865
- // }
866
- // return addphse
867
- // },
868
- // getPhaseDescription (phaseList) {
869
- // let list = []
870
- // for (let id of phaseList) {
871
- // let obj = {}
872
- // obj.id = id
873
- // obj.color = '#454545'
874
- // list.push(obj)
875
- // }
876
- // return list
877
- // },
878
- getFaultById () {
879
- let param = {
880
- agentId: this.agentId,
881
- isCurrentFault: true
882
- }
883
- GetAllFaultRange(param).then(res => {
884
- if (res.data.success !== true) {
885
- this.$message.error(getMessageByCode(res.data.code, this.$i18n.locale))
886
- return
887
- }
888
- this.curFaultList = res.data.data.content
889
- this.confirmedFault = this.curFaultList.filter(ele => ele.enumerate === '2')
890
- this.ignoredFault = this.curFaultList.filter(ele => ele.enumerate === '1')
891
- this.untreatedFault = this.curFaultList.filter(ele => ele.enumerate === '0')
892
- })
893
- },
894
- showFaultDetail () {
895
- this.$refs.faultDetail.onViewFaultClick()
896
- },
897
- setPropsToken (token) {
898
- // 获取组件外传入的token,便于独立组件调用接口
899
- if (token && token !== '') {
900
- setToken(token)
901
- }
902
- }
903
- },
904
- destroyed () {
905
- this.clearFaultInterval()
906
- }
907
- }
908
- </script>
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="scheme-config openatc-scheme-config" style="height: 100%;">
14
+ <fault-detail-modal ref="faultDetail" :agentId="agentId" :isFromAtc="isFromAtc" @refreshFault="getFaultById"></fault-detail-modal>
15
+ <div style="height: 100%;">
16
+ <transition name="fade-right" mode="out-in"
17
+ :enter-active-class="toPage === 1 ? 'animated fadeInRight' : 'animated fadeInLeft'"
18
+ :leave-active-class="toPage === 1 ? 'animated fadeOutRight' : 'animated fadeOutLeft' ">
19
+ <div class="new" style="position: absolute;width: 100%;height:100%;" v-show="(isOperation && !isClosePhase)">
20
+ <ManualControlModalNew
21
+ ref="ManualControlModalNew"
22
+ :residentControlList="residentControlList"
23
+ :specialControlList="specialControlList"
24
+ :patternChooseControlList="patternChooseControlList"
25
+ :othersControlList="othersControlList"
26
+ :controlData="controlData"
27
+ :patternAll="patternAll"
28
+ :crossStatusData="crossStatusData"
29
+ :preselectModel="preselectModel"
30
+ :preselectStages="preselectStages"
31
+ :realtimeStatusModalvisible="realtimeStatusModalvisible"
32
+ :roadDirection="roadDirection"
33
+ :closePhaseRings="phaseRings"
34
+ :sidewalkPhaseData="sidewalkPhaseData"
35
+ :phaseList="phaseList"
36
+ :statusData="statusData"
37
+ :lockPhaseBtnName="lockPhaseBtnName"
38
+ :overlap="overlap"
39
+ :patternSelect="patternSelect"
40
+ :allPatternList="allPatternList"
41
+ :isShowBack="isShowBack"
42
+ @closeManualModal="closeManualModal"
43
+ @selectModel="selectModel"
44
+ @selectStages="selectStages"
45
+ @patternCommit="patternCommit"
46
+ @closePhaseBack="closePhaseBack"
47
+ @closePhaseControl="closePhaseControl"
48
+ @selectSpecialModel="selectSpecialModelNew" />
49
+ </div>
50
+ </transition>
51
+
52
+ <transition name="fade-left" mode="out-in"
53
+ enter-active-class="animated fadeInLeft"
54
+ leave-active-class="animated fadeOutLeft">
55
+ <div class="right-control-part" style="position: absolute;width: 100%;" v-show="!isOperation">
56
+ <RealtimeStatusModal
57
+ :controlData="controlData"
58
+ :currModel="currModel"
59
+ :ip="ip"
60
+ :platform="platform"
61
+ :responseTime="responseTime"
62
+ :curFaultList="curFaultList"
63
+ :confirmedFault="confirmedFault"
64
+ :ignoredFault="ignoredFault"
65
+ :untreatedFault="untreatedFault"
66
+ :closePhase="closePhase"
67
+ :agentName="agentName"
68
+ :agentId="agentId"
69
+ :crossStatusData="crossStatusData"
70
+ :phaseList="phaseList"
71
+ :sidewalkPhaseData="sidewalkPhaseData"
72
+ :roadDirection="roadDirection"
73
+ @changeStatus="changeStatus"
74
+ @showFaultDetail="showFaultDetail"/>
75
+ </div>
76
+ </transition>
77
+ </div>
78
+ </div>
79
+ </template>
80
+
81
+ <script>
82
+ import { putTscControl } from '../../../api/control.js'
83
+ import { uploadSingleTscParam } from '../../../api/param.js'
84
+ import RealtimeStatusModal from './realtimeStatusModal'
85
+ import ManualControlModal from './manualControlModal'
86
+ import ManualControlModalNew from './manualControlModalNew'
87
+ import ClosePhaseControlModal from './closePhaselControlModal'
88
+ import LockingPhaseControlModal from './lockingPhaselControlModal'
89
+ import TentativePlanControlModal from './tentativeplancontrolmodal'
90
+ import AzimuthLocking from './azimuthlocking'
91
+ import priorityControl from './priorityControl'
92
+ // import { getFaultMesZh, getFaultMesEn } from '../../utils/faultcode.js'
93
+ import { getMessageByCode } from '../../../utils/responseMessage'
94
+ import { GetAllFaultRange } from '../../../api/fault'
95
+ import PhaseDataModel from '../IntersectionMap/crossDirection/utils.js'
96
+ import CrossDiagramMgr from '../../../EdgeMgr/controller/crossDiagramMgr.js'
97
+ import { setToken, setHost, getTheme } from '../../../utils/auth.js'
98
+ import RingDataModel from '../../../utils/RingDataModel.js'
99
+ import { getIntersectionInfo } from '../../../api/template'
100
+
101
+ export default {
102
+ name: 'scheme-config',
103
+ components: {
104
+ RealtimeStatusModal,
105
+ ManualControlModal,
106
+ ClosePhaseControlModal,
107
+ LockingPhaseControlModal,
108
+ priorityControl,
109
+ AzimuthLocking,
110
+ TentativePlanControlModal,
111
+ ManualControlModalNew
112
+ },
113
+ props: {
114
+ phaseList: {
115
+ type: Array,
116
+ default: () => []
117
+ },
118
+ reqUrl: {
119
+ type: String,
120
+ default: ''
121
+ },
122
+ responseTime: {
123
+ type: Number,
124
+ default: 0
125
+ },
126
+ statusData: {
127
+ type: Object,
128
+ required: true
129
+ },
130
+ agentName: {
131
+ type: String,
132
+ default: ''
133
+ },
134
+ // devStatus: {
135
+ // type: Number,
136
+ // default: 0
137
+ // },
138
+ agentId: {
139
+ type: String,
140
+ default: '0'
141
+ },
142
+ ip: {
143
+ type: String
144
+ },
145
+ // allPatternList: {
146
+ // type: Array
147
+ // },
148
+ // overlap: {
149
+ // type: Array
150
+ // },
151
+ platform: {
152
+ type: String
153
+ },
154
+ realtimeStatusModalvisible: {
155
+ type: Boolean,
156
+ default: true
157
+ },
158
+ lockPhaseBtnName: {
159
+ type: String
160
+ },
161
+ Token: {
162
+ type: String,
163
+ default: ''
164
+ },
165
+ funcSort: {
166
+ type: String,
167
+ default: 'allFunc'
168
+ },
169
+ roadDirection: {
170
+ type: String,
171
+ default: 'right'
172
+ },
173
+ isFromAtc: {
174
+ type: Boolean,
175
+ default: true
176
+ },
177
+ isShowBack: {
178
+ type: Boolean,
179
+ default: true
180
+ }
181
+ },
182
+ data () {
183
+ return {
184
+ crossStatusData: null,
185
+ controlData: {},
186
+ control: '',
187
+ allPatternList: [],
188
+ overlap: [],
189
+ sidewalkPhaseData: [],
190
+ list: [{
191
+ iconClass: 'model',
192
+ name: '控制模式',
193
+ value: '--'
194
+ }, {
195
+ iconClass: 'cycle',
196
+ name: '周期',
197
+ value: '--'
198
+ }, {
199
+ iconClass: 'time',
200
+ name: '当前时间',
201
+ value: '--'
202
+ }, {
203
+ iconClass: 'maincontrol',
204
+ name: '控制方式',
205
+ value: '--'
206
+ }, {
207
+ iconClass: 'phasediff',
208
+ name: '相位差',
209
+ value: '--'
210
+ }, {
211
+ iconClass: 'time',
212
+ name: '剩余时间',
213
+ value: '--'
214
+ }],
215
+ faultTimer: null, // 当前故障定时器
216
+ ParamsMode: new Map([[0, '自主控制'], [1, '本地手动'], [2, '平台控制'], [3, '配置软件控制'], [4, '遥控器控制'], [5, '黄闪器控制'], [6, '降级控制'], [7, '脚本控制'], [8, '算法控制']]),
217
+ ParamsModeEn: new Map([[0, 'Autonomous Control'], [1, 'Local Manual'], [2, 'Platform Control'], [3, 'Configuration Software Control'], [4, 'Remote Control'], [5, 'Yellow Flasher Control'], [6, 'Degradation Control'], [7, 'Script Control'], [8, 'Algorithm Control']]),
218
+ ParamsControl: new Map([[0, '多时段'], [1, '黄闪'], [2, '全红'], [3, '关灯'], [4, '步进'], [5, '定周期控制'], [6, '单点感应控制'], [7, '协调感应控制'], [8, '方案选择控制'], [9, '自适应控制'], [10, '无电缆控制'], [11, '有电缆控制'], [12, '行人过街控制'], [13, '方案恢复过渡'], [14, '相位驻留'], [15, '通道检测'], [16, '方向锁定'], [17, '韦伯斯特单点控制'], [18, '预留18'], [19, '感应式行人过街'], [20, '方案干预'], [100, '方案干预'], [21, '预留21'], [22, '相位锁定'], [23, '相位放行控制'], [24, '紧急控制'], [99, '设备维护']]),
219
+ ParamsControlEn: new Map([[0, 'Multi Period'], [1, 'Yellow Flash Control'], [2, 'Red Control'], [3, 'Dark Control'], [4, 'Step'], [5, 'Fixed_Cycle Control'], [6, 'Free Control'], [7, 'Coordinated Induction Control'], [8, 'Pattern Selection Control'], [9, 'Adaptive Control'], [10, 'Wireless Control'], [11, 'Cable Control'], [12, 'Pedestrian Crossing Control'], [13, 'Pattern recovery'], [14, 'Phase dwell'], [15, 'Channel Detection'], [16, 'Direction lock'], [17, 'Webster Single Point Coordination'], [18, 'Reserving18'], [19, 'Inductive Pedestrian Crossing Control'], [20, 'Program Intervention'], [100, 'Program Intervention'], [21, 'Reserving21'], [22, 'Priority Control'], [23, 'Close Phase'], [24, 'Emergency Control'], [99, 'Device Mantenance']]),
220
+ phaseType: new Map([[1, '红'], [2, '黄'], [3, '绿']]), // phaseType表示红,黄,绿
221
+ phaseTypeEn: new Map([[1, 'Red'], [2, 'Yellow'], [3, 'Green']]), // phaseType表示红,黄,绿
222
+ mode: '2',
223
+ loading: {},
224
+ modelList: [{
225
+ id: 1,
226
+ iconClass: 'huangshan',
227
+ permission: 'configer:manual:senior',
228
+ iconName: '黄闪'
229
+ }, {
230
+ id: 2,
231
+ iconClass: 'quanhong',
232
+ permission: 'configer:manual:senior',
233
+ iconName: '全红'
234
+ }, {
235
+ id: 3,
236
+ iconClass: 'guandeng',
237
+ permission: 'configer:manual:senior',
238
+ iconName: '关灯'
239
+ }, {
240
+ id: 4,
241
+ iconClass: 'bujin',
242
+ permission: 'configer:manual:dwell',
243
+ iconName: '步进'
244
+ }, {
245
+ id: 5,
246
+ iconClass: 'dingzhouqi',
247
+ permission: 'configer:manual:base',
248
+ iconName: '定周期'
249
+ }, {
250
+ id: 6,
251
+ iconClass: 'ganyingkongzhi',
252
+ permission: 'configer:manual:base',
253
+ iconName: '感应控制'
254
+ }, {
255
+ id: 9,
256
+ iconClass: 'zishiying',
257
+ permission: 'configer:manual:base',
258
+ iconName: '自适应控制'
259
+ }, {
260
+ id: 10,
261
+ iconClass: 'wuxianlan',
262
+ permission: 'configer:manual:base',
263
+ iconName: '无电缆协调'
264
+ }, {
265
+ id: 12,
266
+ iconClass: 'xingrenguojie',
267
+ permission: 'configer:manual:base',
268
+ iconName: '行人过街'
269
+ }, {
270
+ id: 19,
271
+ iconClass: 'ganyingshixingrenguojie',
272
+ permission: 'configer:manual:base',
273
+ iconName: '感应式行人过街控制'
274
+ }],
275
+ residentControlList: [
276
+ {
277
+ type: '步进',
278
+ id: 4,
279
+ iconClass: 'bujin',
280
+ permission: 'configer:manual:dwell',
281
+ iconName: this.$t('openatccomponents.overview.modelList4'),
282
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
283
+ },
284
+ {
285
+ type: '阶段锁定',
286
+ id: 4,
287
+ iconClass: 'jieduansuoding',
288
+ permission: 'configer:manual:dwell',
289
+ iconName: this.$t('openatccomponents.overview.modelList4-'),
290
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
291
+ },
292
+ {
293
+ type: '相位锁定',
294
+ id: 22,
295
+ iconClass: 'xiangweisuoding',
296
+ permission: 'configer:manual:dwell',
297
+ iconName: this.$t('openatccomponents.overview.modelList22'),
298
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
299
+ },
300
+ {
301
+ type: '方向锁定',
302
+ id: 25,
303
+ iconClass: 'fangxiangsuoding',
304
+ permission: 'configer:manual:dwell',
305
+ iconName: this.$t('openatccomponents.overview.modelList25'),
306
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
307
+ }
308
+ ],
309
+ specialControlList: [
310
+ {
311
+ type: '黄闪',
312
+ id: 1,
313
+ iconClass: 'huangshan',
314
+ permission: 'configer:manual:senior',
315
+ iconName: this.$t('openatccomponents.overview.modelList1'),
316
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
317
+ }, {
318
+ type: '全红',
319
+ id: 2,
320
+ iconClass: 'quanhong',
321
+ permission: 'configer:manual:senior',
322
+ iconName: this.$t('openatccomponents.overview.modelList2'),
323
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
324
+ }, {
325
+ type: '关灯',
326
+ id: 3,
327
+ iconClass: 'guandeng',
328
+ permission: 'configer:manual:senior',
329
+ iconName: this.$t('openatccomponents.overview.modelList3'),
330
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
331
+ }
332
+ ],
333
+ patternChooseControlList: [
334
+ {
335
+ type: '定周期',
336
+ id: 5,
337
+ iconClass: 'dingzhouqi',
338
+ permission: 'configer:manual:base',
339
+ iconName: this.$t('openatccomponents.overview.modelList5'),
340
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
341
+ }, {
342
+ type: '单点感应',
343
+ id: 6,
344
+ iconClass: 'ganyingkongzhi',
345
+ permission: 'configer:manual:base',
346
+ iconName: this.$t('openatccomponents.overview.modelList6'),
347
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
348
+ }, {
349
+ type: '自适应控制',
350
+ id: 9,
351
+ iconClass: 'zishiying',
352
+ permission: 'configer:manual:base',
353
+ iconName: this.$t('openatccomponents.overview.modelList9'),
354
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
355
+ }, {
356
+ type: '无电缆协调',
357
+ id: 10,
358
+ iconClass: 'wuxianlan',
359
+ permission: 'configer:manual:base',
360
+ iconName: this.$t('openatccomponents.overview.modelList10'),
361
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
362
+ }, {
363
+ type: '行人过街',
364
+ id: 12,
365
+ iconClass: 'xingrenguojie',
366
+ permission: 'configer:manual:base',
367
+ iconName: this.$t('openatccomponents.overview.modelList12'),
368
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
369
+ }, {
370
+ type: '感应式行人过街',
371
+ id: 19,
372
+ iconClass: 'ganyingshixingrenguojie',
373
+ permission: 'configer:manual:base',
374
+ iconName: this.$t('openatccomponents.overview.modelList19'),
375
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
376
+ }
377
+ ],
378
+ othersControlList: [
379
+ { // 特殊控制
380
+ type: '相位关断',
381
+ id: 23,
382
+ permission: 'configer:manual:optimize',
383
+ iconClass: 'closephase',
384
+ iconName: this.$t('openatccomponents.overview.modelList23'),
385
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
386
+ }, {
387
+ type: '临时方案',
388
+ id: 100,
389
+ permission: 'configer:manual:optimize',
390
+ iconClass: 'tentativeplan',
391
+ iconName: this.$t('openatccomponents.overview.modelList100'),
392
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
393
+ }, {
394
+ type: '优先控制',
395
+ id: 24,
396
+ permission: 'configer:manual:preempt',
397
+ iconClass: 'prioritycontrol',
398
+ iconName: this.$t('openatccomponents.overview.modelList24'),
399
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
400
+ }],
401
+ currModel: -1,
402
+ preselectModel: -1, // 预选方案
403
+ preselectStages: -1, // 预选阶段
404
+ closePhase: [],
405
+ isOperation: false, // 是否为手动可操作状态
406
+ tempPatternid: 0, // 控制方式手动操作的情况下的控制编号的临时值。
407
+ tempDelay: 0, // 控制方式手动操作的情况下的延迟时间的临时值。
408
+ tempDuration: 0, // 控制方式手动操作的情况下的持续时间的临时值。
409
+ // phaseList: [], // 当前相位集合
410
+ faultvisible: false,
411
+ isClosePhase: false, // 是否在相位关断
412
+ toPage: 1, // 与哪一个页面交互,1 代表路口信息页面,3代表 相位关断页面
413
+ phaseRings: [],
414
+ curFaultList: [],
415
+ confirmedFault: [],
416
+ ignoredFault: [],
417
+ untreatedFault: [],
418
+ patternAll: [],
419
+ patternSelect: [], // 所有方案id
420
+ specialPage: '', // 哪一个特殊控制页面
421
+ nextcycleefficcontrol: [5, 6, 9, 10, 12, 19] // 下周期生效的控制方式
422
+ }
423
+ },
424
+ watch: {
425
+ agentId: {
426
+ handler: function (val) {
427
+ this.getIntersectionInfo(val)
428
+ },
429
+ // 深度观察监听
430
+ deep: true
431
+ },
432
+ statusData: {
433
+ handler: function (val) {
434
+ this.initData()
435
+ this.getPedPhasePos()
436
+ },
437
+ // 深度观察监听
438
+ deep: true
439
+ },
440
+ phaseList: {
441
+ handler: function (val, oldVal) {
442
+ this.getPedPhasePos()
443
+ },
444
+ // 深度观察监听
445
+ deep: true
446
+ },
447
+ Token: {
448
+ handler: function (val) {
449
+ this.setPropsToken(val)
450
+ }
451
+ },
452
+ roadDirection: {
453
+ handler: function (val) {
454
+ if (val === 'left' || val === 'right') {
455
+ this.PhaseDataModel = new PhaseDataModel(val)
456
+ }
457
+ }
458
+ }
459
+ },
460
+ created () {
461
+ this.setHost(this.reqUrl)
462
+ this.PhaseDataModel = new PhaseDataModel(this.roadDirection)
463
+ this.CrossDiagramMgr = new CrossDiagramMgr()
464
+ this.getIntersectionInfo(this.agentId)
465
+ },
466
+ async mounted () {
467
+ if (this.realtimeStatusModalvisible === false) {
468
+ this.changeStatus()
469
+ }
470
+ this.setPropsToken(this.Token)
471
+ // await this.getPhase()
472
+ this.getFault()
473
+ this.initData()
474
+ },
475
+ methods: {
476
+ setHost (host) {
477
+ // 获取组件外传入的token,便于独立组件调用接口
478
+ if (host && host !== '') {
479
+ setHost(host)
480
+ }
481
+ },
482
+ getIntersectionInfo (agentid) {
483
+ // 获取路口信息
484
+ getIntersectionInfo(agentid).then(res => {
485
+ this.patternAll = res.data.data.param.patternList
486
+ this.allPatternList = res.data.data.param.patternList
487
+ this.overlap = res.data.data.param.overlaplList
488
+ this.patternSelect = res.data.data.param.patternList.map(item => {
489
+ return {
490
+ value: item.id,
491
+ label: item.desc ? item.desc : '' + item.id ? item.id : ''
492
+ }
493
+ })
494
+ })
495
+ },
496
+ getFault () {
497
+ this.getFaultById()
498
+ this.faultTimer = setInterval(() => {
499
+ this.getFaultById()
500
+ }, 30000)
501
+ },
502
+ getPedPhasePos () {
503
+ let ringDataModel = new RingDataModel(this.statusData, this.phaseList)
504
+ this.sidewalkPhaseData = ringDataModel.getPedPhasePos()
505
+ this.ringDataModel = ringDataModel
506
+ },
507
+ clearFaultInterval () {
508
+ if (this.faultTimer !== null) {
509
+ clearInterval(this.faultTimer) // 清除流量定时器
510
+ this.faultTimer = null
511
+ }
512
+ },
513
+ initData () {
514
+ this.crossStatusData = JSON.parse(JSON.stringify(this.statusData))
515
+ let TscData = JSON.parse(JSON.stringify(this.crossStatusData))
516
+ this.currModel = TscData.control
517
+ this.controlData = this.handleGetData(TscData)
518
+ this.handleGetPhaseClose()
519
+ },
520
+ lockScreen () {
521
+ this.loading = this.$loading({
522
+ lock: true,
523
+ text: 'Loading',
524
+ spinner: 'el-icon-loading',
525
+ background: 'rgba(0, 0, 0, 0.5)'
526
+ })
527
+ },
528
+ unlockScreen () {
529
+ this.loading.close()
530
+ },
531
+ selectModel (value) {
532
+ if (!this.isOperation) return
533
+ this.preselectStages = -1
534
+ this.recoverLastModel = this.preselectModel // 记录恢复前选中的控制方式
535
+ this.preselectModel = value
536
+ },
537
+ selectStages (value) {
538
+ if (!this.isOperation) return
539
+ if (this.preselectStages !== -1) {
540
+ if (this.preselectStages === value) {
541
+ this.preselectStages = -1
542
+ } else {
543
+ this.preselectStages = value
544
+ this.preselectModel = 4 // 如果选了阶段,默认控制方式为步进
545
+ }
546
+ } else {
547
+ this.preselectStages = value
548
+ this.preselectModel = 4 // 如果选了阶段,默认控制方式为步进
549
+ }
550
+ },
551
+ changeStatus () {
552
+ this.toPage = 1
553
+ this.isOperation = true
554
+ this.$refs.ManualControlModalNew.init()
555
+ },
556
+ handleGetData (data) {
557
+ let that = this
558
+ if (data.name === '') {
559
+ if (that.$i18n.locale === 'en') {
560
+ data.name = 'Pattern' + data.patternid
561
+ } else if (that.$i18n.locale === 'zh') {
562
+ data.name = '方案' + data.patternid
563
+ }
564
+ }
565
+ Object.keys(data).forEach(function (key) {
566
+ if (that.$i18n.locale === 'en') {
567
+ if (key === 'mode') {
568
+ if (that.ParamsModeEn.get(data[key]) !== undefined) {
569
+ data[key] = that.ParamsModeEn.get(data[key])
570
+ } else {
571
+ data[key] = that.ParamsModeEn.get(0)
572
+ }
573
+ }
574
+ // if (key === 'control') {
575
+ // data[key] = that.ParamsControlEn.get(data[key])
576
+ // }
577
+ if (key === 'phase') {
578
+ for (let val of data[key]) {
579
+ val.type = that.phaseTypeEn.get(val.type)
580
+ }
581
+ }
582
+ } else if (that.$i18n.locale === 'zh') {
583
+ if (key === 'mode') {
584
+ if (that.ParamsMode.get(data[key]) !== undefined) {
585
+ data[key] = that.ParamsMode.get(data[key])
586
+ } else {
587
+ data[key] = that.ParamsMode.get(0)
588
+ }
589
+ }
590
+ if (key === 'control') {
591
+ data[key] = that.ParamsControl.get(data[key])
592
+ }
593
+ if (key === 'phase') {
594
+ for (let val of data[key]) {
595
+ val.type = that.phaseType.get(val.type)
596
+ }
597
+ }
598
+ }
599
+ })
600
+ return data
601
+ },
602
+ closeManualModal () {
603
+ this.isOperation = false
604
+ this.preselectModel = -1
605
+ this.preselectStages = -1
606
+ this.tempPatternid = 0
607
+ this.tempDelay = 0
608
+ this.tempDuration = 0
609
+ this.modelList = this.modelList.filter((item) => {
610
+ return item.id !== 0
611
+ })
612
+ this.toPage = 1
613
+ },
614
+ handleManualConfirm (manualInfo) {
615
+ this.$emit('handleManualConfirm', manualInfo)
616
+ },
617
+ patternCommit (manualInfo) {
618
+ let that = this
619
+ let control = {}
620
+ if (that.preselectModel === -1) {
621
+ this.$message.error(this.$t('openatccomponents.overview.noselectcontroltip'))
622
+ return
623
+ }
624
+ that.ParamsMode.forEach(function (value, key, map) {
625
+ if (that.controlData.mode === value) {
626
+ control.mode = key
627
+ }
628
+ })
629
+ control.control = that.preselectModel
630
+ // control.terminal = isNaN(parseInt(manualInfo.tempPatternid)) ? Number(manualInfo.tempPatternid.replace(/[^0-9]/ig, '')) : manualInfo.tempPatternid
631
+ control.terminal = manualInfo.tempPatternid === undefined ? null : Number(manualInfo.tempPatternid)
632
+ // control.delay = Number(manualInfo.tempDelay)
633
+ control.duration = Number(manualInfo.tempDuration)
634
+ control.value = that.preselectStages === -1 ? 0 : that.preselectStages
635
+ if (control.control === 0) {
636
+ // 恢复自主控制(多时段)时,value为当前控制方式
637
+ control.value = this.currModel
638
+ if (manualInfo && manualInfo.fromControl) {
639
+ const specialControlArr = [40, 4, 100, 101]
640
+ if (specialControlArr.includes(manualInfo.fromControl)) {
641
+ control.value = manualInfo.fromControl
642
+ }
643
+ }
644
+ }
645
+ if (!this.realtimeStatusModalvisible) {
646
+ console.log(control)
647
+ this.$emit('patternCommitCallback', control)
648
+ return
649
+ }
650
+ this.lockScreen()
651
+ putTscControl(control).then(data => {
652
+ that.unlockScreen()
653
+ if (control.control === 0) {
654
+ that.preselectModel = that.recoverLastModel
655
+ }
656
+ let success = 0
657
+ if (!data.data.success) {
658
+ if (data.data.code === '4002' && data.data.data.errorCode === '4209') {
659
+ let success = data.data.data.content.success
660
+ if (success !== 0) {
661
+ let errormsg = 'openatccomponents.overview.putTscControlError' + success
662
+ this.$message.error(this.$t(errormsg))
663
+ return
664
+ }
665
+ }
666
+ that.$message.error(getMessageByCode(data.data.code, that.$i18n.locale))
667
+ return
668
+ }
669
+ if (data.data.data && data.data.data.data) {
670
+ success = data.data.data.data.success
671
+ if (success !== 0) {
672
+ let errormsg = 'openatccomponents.overview.putTscControlError' + success
673
+ that.$message.error(this.$t(errormsg))
674
+ return
675
+ }
676
+ }
677
+ // this.closeManualModal()
678
+ if (this.nextcycleefficcontrol.indexOf(that.currModel) !== -1 && this.nextcycleefficcontrol.indexOf(that.preselectModel) !== -1) {
679
+ that.$message.success(this.$t('openatccomponents.overview.nextcycleeffic'))
680
+ return
681
+ }
682
+ if (that.preselectModel === 4) {
683
+ that.$message.success(this.$t('openatccomponents.overview.transitioneffic'))
684
+ return
685
+ }
686
+ if (success === 0) {
687
+ that.$message.success(this.$t('openatccomponents.common.download'))
688
+ }
689
+ }).catch(error => {
690
+ that.unlockScreen()
691
+ if (control.control === 0) {
692
+ that.preselectModel = that.recoverLastModel
693
+ }
694
+ console.log(error)
695
+ })
696
+ },
697
+ getPhase () {
698
+ let _this = this
699
+ return new Promise(function (resolve, reject) {
700
+ uploadSingleTscParam('phase', _this.agentId).then(data => {
701
+ let res = data.data
702
+ if (!res.success) {
703
+ if (res.code === '4003') {
704
+ _this.$message.error(_this.$t('openatccomponents.errorTip.devicenotonline'))
705
+ return
706
+ }
707
+ _this.$message.error(getMessageByCode(data.data.code, _this.$i18n.locale))
708
+ return
709
+ }
710
+ _this.phaseList = res.data.data.phaseList
711
+ resolve()
712
+ })
713
+ })
714
+ },
715
+ handleFaultsVisible () {
716
+ this.faultvisible = !this.faultvisible
717
+ },
718
+ handleGetPhaseClose () {
719
+ if (this.crossStatusData.phase) {
720
+ this.crossStatusData.phase = this.crossStatusData.phase.map(ele => {
721
+ return {
722
+ ...ele,
723
+ close: ele.close || 0,
724
+ locktype: 0 // 默认所有相位显示解锁状态
725
+ }
726
+ })
727
+ // 相位关断标签
728
+ let closePhase = []
729
+ this.crossStatusData.phase.forEach(phase => {
730
+ if (phase.close !== undefined && phase.close !== 0) {
731
+ let typename
732
+ switch (phase.close) {
733
+ case 1: typename = ''
734
+ break
735
+ case 2: typename = this.$t('openatccomponents.overview.vehicle')
736
+ break
737
+ case 3: typename = this.$t('openatccomponents.overview.pedestrian')
738
+ break
739
+ default:typename = ''
740
+ }
741
+ closePhase.push({
742
+ id: phase.id,
743
+ typename: typename
744
+ })
745
+ }
746
+ })
747
+ this.closePhase = JSON.parse(JSON.stringify(closePhase))
748
+ } else {
749
+ this.closePhase = []
750
+ }
751
+ },
752
+ selectSpecialModelNew () {
753
+ let ringDataModel = new RingDataModel(this.statusData, this.phaseList)
754
+ this.phaseRings = ringDataModel.initRingPhaseData()
755
+ },
756
+ selectSpecialModel (id) {
757
+ let ringDataModel = new RingDataModel(this.statusData, this.phaseList)
758
+ if (id === 23) {
759
+ this.toPage = 3
760
+ this.isClosePhase = true
761
+ this.phaseRings = ringDataModel.initRingPhaseData()
762
+ this.specialPage = 'closephase'
763
+ } else if (id === 22) {
764
+ this.toPage = 3
765
+ this.isClosePhase = true
766
+ this.phaseRings = ringDataModel.initRingPhaseData()
767
+ this.specialPage = 'lockingphase'
768
+ } else if (id === 100) {
769
+ this.toPage = 3
770
+ this.isClosePhase = true
771
+ this.phaseRings = ringDataModel.initRingPhaseData()
772
+ this.specialPage = 'tentativeplan'
773
+ } else if (id === 24) {
774
+ this.toPage = 3
775
+ this.isClosePhase = true
776
+ this.phaseRings = ringDataModel.initRingPhaseData()
777
+ this.specialPage = 'prioritycontrol'
778
+ } else if (id === 25) {
779
+ this.toPage = 3
780
+ this.isClosePhase = true
781
+ this.phaseRings = ringDataModel.initRingPhaseData()
782
+ this.specialPage = 'azimuthlocking'
783
+ } else {
784
+ this.isClosePhase = false
785
+ this.specialPage = ''
786
+ }
787
+ },
788
+ closePhaseBack () {
789
+ this.toPage = 3
790
+ this.isClosePhase = false
791
+ },
792
+ closePhaseControl (controldata) {
793
+ if (!this.realtimeStatusModalvisible) {
794
+ this.$emit('patternCommitCallback', controldata)
795
+ return
796
+ }
797
+ this.lockScreen()
798
+ putTscControl(controldata).then(data => {
799
+ this.unlockScreen()
800
+ let success = 0
801
+ if (!data.data.success) {
802
+ if (data.data.code === '4002' && data.data.data.errorCode === '4209') {
803
+ let success = data.data.data.content.success
804
+ if (success !== 0) {
805
+ let errormsg = 'openatccomponents.overview.putTscControlError' + success
806
+ this.$message.error(this.$t(errormsg))
807
+ return
808
+ }
809
+ }
810
+ this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
811
+ return
812
+ }
813
+ if (data.data.data && data.data.data.data) {
814
+ success = data.data.data.data.success
815
+ if (success !== 0) {
816
+ let errormsg = 'openatccomponents.overview.putTscControlError' + success
817
+ this.$message.error(this.$t(errormsg))
818
+ return
819
+ }
820
+ }
821
+ this.$message.success(this.$t('openatccomponents.common.download'))
822
+ }).catch(error => {
823
+ this.unlockScreen()
824
+ console.log(error)
825
+ })
826
+ },
827
+ // initRingPhaseData () {
828
+ // // 环信息从单独上载相位信息里获取,以免相位锁定后,方案状态数据里没有rings,导致相位锁定控制列表无法显示
829
+ // this.phaseRings = []
830
+ // let map = {}
831
+ // let dest = []
832
+ // for (let i = 0; i < this.phaseList.length; i++) {
833
+ // let ai = this.phaseList[i]
834
+ // if (!map[ai.ring]) {
835
+ // let addphse = this.addPhaseInfo(ai)
836
+ // dest.push({
837
+ // num: ai.ring,
838
+ // phases: [{...ai, ...addphse}]
839
+ // })
840
+ // map[ai.ring] = ai
841
+ // } else {
842
+ // for (var j = 0; j < dest.length; j++) {
843
+ // var dj = dest[j]
844
+ // if (dj.num === ai.ring) {
845
+ // let addphse = this.addPhaseInfo(ai)
846
+ // dj.phases.push({...ai, ...addphse})
847
+ // break
848
+ // }
849
+ // }
850
+ // }
851
+ // }
852
+ // this.phaseRings = JSON.parse(JSON.stringify(dest))
853
+ // },
854
+ // addPhaseInfo (phase) {
855
+ // let addphse = {}
856
+ // addphse.name = this.$t('openatccomponents.overview.phase') + phase.id
857
+ // addphse.desc = this.getPhaseDescription(phase.direction)
858
+ // // 相位锁定选项默认都按照解锁状态显示
859
+ // addphse.locktype = 0
860
+ // addphse.close = 0
861
+ // if (this.crossStatusData !== null && this.crossStatusData.phase) {
862
+ // // 如果方案状态相位有close字段,这边就需要对应close状态进相位关断控制的选项里
863
+ // let phaseStatus = this.crossStatusData.phase.filter(ele => ele.id === phase.id)[0]
864
+ // addphse = {...addphse, ...phaseStatus}
865
+ // }
866
+ // return addphse
867
+ // },
868
+ // getPhaseDescription (phaseList) {
869
+ // let list = []
870
+ // for (let id of phaseList) {
871
+ // let obj = {}
872
+ // obj.id = id
873
+ // obj.color = '#454545'
874
+ // list.push(obj)
875
+ // }
876
+ // return list
877
+ // },
878
+ getFaultById () {
879
+ let param = {
880
+ agentId: this.agentId,
881
+ isCurrentFault: true
882
+ }
883
+ GetAllFaultRange(param).then(res => {
884
+ if (res.data.success !== true) {
885
+ this.$message.error(getMessageByCode(res.data.code, this.$i18n.locale))
886
+ return
887
+ }
888
+ this.curFaultList = res.data.data.content
889
+ this.confirmedFault = this.curFaultList.filter(ele => ele.enumerate === '2')
890
+ this.ignoredFault = this.curFaultList.filter(ele => ele.enumerate === '1')
891
+ this.untreatedFault = this.curFaultList.filter(ele => ele.enumerate === '0')
892
+ })
893
+ },
894
+ showFaultDetail () {
895
+ this.$refs.faultDetail.onViewFaultClick()
896
+ },
897
+ setPropsToken (token) {
898
+ // 获取组件外传入的token,便于独立组件调用接口
899
+ if (token && token !== '') {
900
+ setToken(token)
901
+ }
902
+ }
903
+ },
904
+ destroyed () {
905
+ this.clearFaultInterval()
906
+ }
907
+ }
908
+ </script>