openatc-components 0.5.8 → 0.5.10

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 (374) hide show
  1. package/.babelrc +18 -18
  2. package/.editorconfig +9 -9
  3. package/.eslintignore +5 -5
  4. package/.eslintrc.js +31 -31
  5. package/.postcssrc.js +10 -10
  6. package/README.md +30 -30
  7. package/build/build.js +41 -41
  8. package/build/check-versions.js +54 -54
  9. package/build/package.config.js +58 -58
  10. package/build/package.dev.config.js +107 -107
  11. package/build/package.prod.config.js +160 -160
  12. package/build/utils.js +101 -101
  13. package/build/vue-loader.conf.js +22 -22
  14. package/build/webpack.base.conf.js +120 -120
  15. package/build/webpack.dev.conf.js +95 -95
  16. package/build/webpack.prod.conf.js +149 -149
  17. package/config/prod.env.js +5 -5
  18. package/config/test.env.js +7 -7
  19. package/index.html +12 -12
  20. package/package/kisscomps/components/Channelization/Channelization.vue +585 -585
  21. package/package/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +360 -360
  22. package/package/kisscomps/components/ChannelizationWithInterface/ChannelizationWithInterface.vue +518 -518
  23. package/package/kisscomps/components/CommonKanban/CommonKanban.vue +132 -132
  24. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-east-bottom.vue +41 -41
  25. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-east-top.vue +60 -60
  26. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-ewped.vue +105 -105
  27. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-north-left.vue +60 -60
  28. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-north-right.vue +60 -60
  29. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-snped.vue +105 -105
  30. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-south-left.vue +60 -60
  31. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-south-right.vue +60 -60
  32. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-west-bottom.vue +60 -60
  33. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-west-top.vue +60 -60
  34. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-xlped.vue +30 -30
  35. package/package/kisscomps/components/DirectionListConfiguration/svg/ped-xrped.vue +30 -30
  36. package/package/kisscomps/components/DirectionListConfiguration/svg/pedSvg.vue +78 -78
  37. package/package/kisscomps/components/DrawChannelization/drawsvg/basicCoordInfo.vue +181 -181
  38. package/package/kisscomps/components/DrawChannelization/drawsvg/channelizationElements.vue +255 -255
  39. package/package/kisscomps/components/DrawChannelization/drawsvg/detectorAssociatedComponent.vue +152 -152
  40. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/TextBox.vue +91 -91
  41. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/crossMap.vue +194 -194
  42. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/editText.vue +108 -108
  43. package/package/kisscomps/components/DrawChannelization/drawsvg/firstImportCrossmap.vue +51 -51
  44. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/countdownSvg.vue +236 -236
  45. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorChart.vue +247 -247
  46. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorIconSvg.vue +210 -210
  47. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/laneIcon.vue +72 -72
  48. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +368 -368
  49. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/pedroadIconSvg.vue +230 -230
  50. package/package/kisscomps/components/DrawChannelization/drawsvg/importDialog.vue +74 -74
  51. package/package/kisscomps/components/DrawChannelization/drawsvg/index.vue +144 -144
  52. package/package/kisscomps/components/DrawChannelization/drawsvg/laneEditPanel.vue +707 -707
  53. package/package/kisscomps/components/DrawChannelization/drawsvg/overlapAssociatedComponent.vue +172 -172
  54. package/package/kisscomps/components/DrawChannelization/drawsvg/table.vue +99 -99
  55. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/loadutils.js +87 -87
  56. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/phaseDataModel.js +32 -32
  57. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/phasePos.json +20 -20
  58. package/package/kisscomps/components/DrawChannelization/phaseDataMgr.js +278 -278
  59. package/package/kisscomps/components/ExpendConfig/ExpendConfig.vue +118 -118
  60. package/package/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +178 -178
  61. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +629 -629
  62. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
  63. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +447 -447
  64. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +341 -341
  65. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +497 -497
  66. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +353 -353
  67. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +359 -359
  68. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +443 -443
  69. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1190 -1190
  70. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +498 -498
  71. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +484 -484
  72. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +488 -488
  73. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +566 -566
  74. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +640 -640
  75. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +497 -497
  76. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +486 -486
  77. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +490 -490
  78. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +575 -575
  79. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
  80. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
  81. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
  82. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
  83. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
  84. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
  85. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +122 -122
  86. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
  87. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
  88. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +115 -115
  89. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
  90. package/package/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +534 -534
  91. package/package/kisscomps/components/KanBan/kanban.vue +231 -231
  92. package/package/kisscomps/components/MessageBox/index.vue +96 -96
  93. package/package/kisscomps/components/PatternOptimize/PatternOptimize.vue +329 -329
  94. package/package/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +423 -423
  95. package/package/kisscomps/components/PhaseDirectionSelect/PhaseDirectionSelect.vue +126 -126
  96. package/package/kisscomps/components/PhaseDirectionText/PhaseDirectionText.vue +106 -106
  97. package/package/kisscomps/components/PhaseLegend/PhaseLegend.vue +286 -286
  98. package/package/kisscomps/components/PhaseMarker/index.js +6 -6
  99. package/package/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
  100. package/package/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
  101. package/package/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
  102. package/package/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
  103. package/package/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
  104. package/package/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
  105. package/package/kisscomps/components/PhasePedSelect/index.vue +206 -206
  106. package/package/kisscomps/components/RcpRightPanel/index.vue +314 -0
  107. package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +5 -2
  108. package/package/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +365 -365
  109. package/package/kisscomps/components/SchemeConfig/azimuthlocking/utils.js +92 -92
  110. package/package/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +214 -214
  111. package/package/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +235 -235
  112. package/package/kisscomps/components/SchemeConfig/manualControlModal/index.vue +235 -235
  113. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/controlModelGroup.vue +131 -131
  114. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/othersIcon.vue +151 -151
  115. package/package/kisscomps/components/SchemeConfig/priorityControl/index.vue +215 -215
  116. package/package/kisscomps/components/SchemeConfig/priorityControl/utils.js +163 -163
  117. package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +308 -308
  118. package/package/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1 -1
  119. package/package/kisscomps/components/SchemeConfig/utils/thirdPartypermission.js +95 -95
  120. package/package/kisscomps/components/SelectCrossPhase/utils.js +142 -142
  121. package/package/kisscomps/components/SelectGBCrossStage/index.vue +323 -0
  122. package/package/kisscomps/components/SelectGBCrossStage/mock/gb_features.json +212 -0
  123. package/package/kisscomps/components/SelectGBCrossStage/utils.js +142 -0
  124. package/package/kisscomps/components/StageOptimize/StageOptimize.vue +367 -367
  125. package/package/kisscomps/components/StageOptimize/index.js +2 -2
  126. package/package/kisscomps/components/StageStatus/StageStatus.vue +341 -341
  127. package/package/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
  128. package/package/kisscomps/components/XiaoKanban/DirSelector.vue +356 -356
  129. package/package/kisscomps/components/XiaoKanban/index.vue +122 -122
  130. package/package/kisscomps/components/patternConfig/pattern/planChart/model/coordinationModel.js +665 -665
  131. package/package/kisscomps/components/patternConfig/planContent.vue +604 -604
  132. package/package/kisscomps/components/patternConfig/planMenu.vue +329 -329
  133. package/package/kisscomps/index.js +4 -0
  134. package/package/kissui.js +216608 -0
  135. package/package/kissui.min.js +1 -1
  136. package/package.json +1 -1
  137. package/pnpm-lock.yaml +16362 -0
  138. package/src/EdgeMgr/EdgeModelBase.js +16 -16
  139. package/src/EdgeMgr/controller/crossDiagramMgr.js +125 -125
  140. package/src/api/authapi.js +31 -31
  141. package/src/api/config.js +21 -21
  142. package/src/api/control.js +110 -110
  143. package/src/api/device.js +135 -135
  144. package/src/api/fault.js +66 -66
  145. package/src/api/index.js +24 -24
  146. package/src/api/login.js +46 -46
  147. package/src/api/optimize.js +72 -72
  148. package/src/api/param.js +165 -165
  149. package/src/api/passwdAssest.js +101 -101
  150. package/src/api/permission.js +33 -33
  151. package/src/api/route.js +171 -171
  152. package/src/api/template.js +27 -27
  153. package/src/assets/font/LICENSE.txt +202 -202
  154. package/src/assets/font/font.css +6 -6
  155. package/src/i18n/index.js +26 -26
  156. package/src/i18n/language/en.js +173 -5
  157. package/src/i18n/language/zh.js +167 -2
  158. package/src/icons/index.js +20 -20
  159. package/src/icons/svg/azimuthlocking.svg +26 -26
  160. package/src/icons/svg/bendi.svg +110 -110
  161. package/src/icons/svg/bujin.svg +36 -36
  162. package/src/icons/svg/connectBlue.svg +7 -7
  163. package/src/icons/svg/currentvolume.svg +0 -0
  164. package/src/icons/svg/custom-BRTlane.svg +40 -40
  165. package/src/icons/svg/custom-buslane.svg +40 -40
  166. package/src/icons/svg/custom-detector.svg +12 -12
  167. package/src/icons/svg/custom-east-bottom.svg +32 -32
  168. package/src/icons/svg/custom-east-top.svg +32 -32
  169. package/src/icons/svg/custom-ewped.svg +35 -35
  170. package/src/icons/svg/custom-nonmotorizedlane.svg +40 -40
  171. package/src/icons/svg/custom-north-left.svg +32 -32
  172. package/src/icons/svg/custom-north-right.svg +32 -32
  173. package/src/icons/svg/custom-peddetector.svg +17 -17
  174. package/src/icons/svg/custom-snped.svg +35 -35
  175. package/src/icons/svg/custom-south-left.svg +32 -32
  176. package/src/icons/svg/custom-south-right.svg +32 -32
  177. package/src/icons/svg/custom-tramlane.svg +40 -40
  178. package/src/icons/svg/custom-vehiclebranch.svg +40 -40
  179. package/src/icons/svg/custom-vehiclemainroad.svg +41 -41
  180. package/src/icons/svg/custom-west-bottom.svg +32 -32
  181. package/src/icons/svg/custom-west-top.svg +32 -32
  182. package/src/icons/svg/custom-xlped.svg +14 -14
  183. package/src/icons/svg/custom-xrped.svg +14 -14
  184. package/src/icons/svg/cutRed.svg +7 -7
  185. package/src/icons/svg/cycle.svg +0 -0
  186. package/src/icons/svg/dingzhouqi.svg +34 -34
  187. package/src/icons/svg/ganyingkongzhi.svg +30 -30
  188. package/src/icons/svg/guandeng.svg +81 -81
  189. package/src/icons/svg/huangshan.svg +71 -71
  190. package/src/icons/svg/maincontrol.svg +0 -0
  191. package/src/icons/svg/manualcontrolbackground.svg +51 -51
  192. package/src/icons/svg/manualcontrolbackground1.svg +62 -62
  193. package/src/icons/svg/manualcontrolbackgrounden.svg +62 -62
  194. package/src/icons/svg/model.svg +0 -0
  195. package/src/icons/svg/phasediff.svg +0 -0
  196. package/src/icons/svg/prioritycontrol.svg +21 -21
  197. package/src/icons/svg/quanhong.svg +86 -86
  198. package/src/icons/svg/shanghe.svg +11 -11
  199. package/src/icons/svg/shoudong.svg +103 -103
  200. package/src/icons/svg/tentativeplan.svg +28 -28
  201. package/src/icons/svg/time.svg +0 -0
  202. package/src/icons/svg/wuxianlan.svg +46 -46
  203. package/src/icons/svg/xiala.svg +11 -11
  204. package/src/icons/svg/xingrenguojie.svg +33 -33
  205. package/src/icons/svg/xitong.svg +89 -89
  206. package/src/icons/svg/youxian.svg +41 -41
  207. package/src/icons/svg/zizhukongzhi.svg +43 -43
  208. package/src/kisscomps/components/Channelization/Channelization.vue +585 -585
  209. package/src/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +360 -360
  210. package/src/kisscomps/components/ChannelizationWithInterface/ChannelizationWithInterface.vue +518 -518
  211. package/src/kisscomps/components/CommonKanban/CommonKanban.vue +132 -132
  212. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-east-bottom.vue +41 -41
  213. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-east-top.vue +60 -60
  214. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-ewped.vue +105 -105
  215. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-north-left.vue +60 -60
  216. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-north-right.vue +60 -60
  217. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-snped.vue +105 -105
  218. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-south-left.vue +60 -60
  219. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-south-right.vue +60 -60
  220. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-west-bottom.vue +60 -60
  221. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-west-top.vue +60 -60
  222. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-xlped.vue +30 -30
  223. package/src/kisscomps/components/DirectionListConfiguration/svg/ped-xrped.vue +30 -30
  224. package/src/kisscomps/components/DirectionListConfiguration/svg/pedSvg.vue +78 -78
  225. package/src/kisscomps/components/DrawChannelization/drawsvg/basicCoordInfo.vue +181 -181
  226. package/src/kisscomps/components/DrawChannelization/drawsvg/channelizationElements.vue +255 -255
  227. package/src/kisscomps/components/DrawChannelization/drawsvg/detectorAssociatedComponent.vue +152 -152
  228. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/TextBox.vue +91 -91
  229. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/crossMap.vue +194 -194
  230. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/editText.vue +108 -108
  231. package/src/kisscomps/components/DrawChannelization/drawsvg/firstImportCrossmap.vue +51 -51
  232. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/countdownSvg.vue +236 -236
  233. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorChart.vue +247 -247
  234. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorIconSvg.vue +210 -210
  235. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/laneIcon.vue +72 -72
  236. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +368 -368
  237. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/pedroadIconSvg.vue +230 -230
  238. package/src/kisscomps/components/DrawChannelization/drawsvg/importDialog.vue +74 -74
  239. package/src/kisscomps/components/DrawChannelization/drawsvg/index.vue +144 -144
  240. package/src/kisscomps/components/DrawChannelization/drawsvg/laneEditPanel.vue +707 -707
  241. package/src/kisscomps/components/DrawChannelization/drawsvg/overlapAssociatedComponent.vue +172 -172
  242. package/src/kisscomps/components/DrawChannelization/drawsvg/table.vue +99 -99
  243. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/loadutils.js +87 -87
  244. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/phaseDataModel.js +32 -32
  245. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/phasePos.json +20 -20
  246. package/src/kisscomps/components/DrawChannelization/phaseDataMgr.js +278 -278
  247. package/src/kisscomps/components/ExpendConfig/ExpendConfig.vue +118 -118
  248. package/src/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +178 -178
  249. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +629 -629
  250. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
  251. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +447 -447
  252. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +341 -341
  253. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +497 -497
  254. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +353 -353
  255. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +359 -359
  256. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +443 -443
  257. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1190 -1190
  258. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +498 -498
  259. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +484 -484
  260. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +488 -488
  261. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +566 -566
  262. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +640 -640
  263. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +497 -497
  264. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +486 -486
  265. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +490 -490
  266. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +575 -575
  267. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
  268. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
  269. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
  270. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
  271. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
  272. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
  273. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +122 -122
  274. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
  275. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
  276. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +115 -115
  277. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
  278. package/src/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +534 -534
  279. package/src/kisscomps/components/KanBan/kanban.vue +231 -231
  280. package/src/kisscomps/components/MessageBox/index.vue +96 -96
  281. package/src/kisscomps/components/PatternOptimize/PatternOptimize.vue +329 -329
  282. package/src/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +423 -423
  283. package/src/kisscomps/components/PhaseDirectionSelect/PhaseDirectionSelect.vue +126 -126
  284. package/src/kisscomps/components/PhaseDirectionText/PhaseDirectionText.vue +106 -106
  285. package/src/kisscomps/components/PhaseLegend/PhaseLegend.vue +286 -286
  286. package/src/kisscomps/components/PhaseMarker/index.js +6 -6
  287. package/src/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
  288. package/src/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
  289. package/src/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
  290. package/src/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
  291. package/src/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
  292. package/src/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
  293. package/src/kisscomps/components/PhasePedSelect/index.vue +206 -206
  294. package/src/kisscomps/components/RcpRightPanel/index.vue +314 -0
  295. package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +5 -2
  296. package/src/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +365 -365
  297. package/src/kisscomps/components/SchemeConfig/azimuthlocking/utils.js +92 -92
  298. package/src/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +214 -214
  299. package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +235 -235
  300. package/src/kisscomps/components/SchemeConfig/manualControlModal/index.vue +235 -235
  301. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/controlModelGroup.vue +131 -131
  302. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/othersIcon.vue +151 -151
  303. package/src/kisscomps/components/SchemeConfig/priorityControl/index.vue +215 -215
  304. package/src/kisscomps/components/SchemeConfig/priorityControl/utils.js +163 -163
  305. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +308 -308
  306. package/src/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1 -1
  307. package/src/kisscomps/components/SchemeConfig/utils/thirdPartypermission.js +95 -95
  308. package/src/kisscomps/components/SelectCrossPhase/utils.js +142 -142
  309. package/src/kisscomps/components/SelectGBCrossStage/index.vue +323 -0
  310. package/src/kisscomps/components/SelectGBCrossStage/mock/gb_features.json +212 -0
  311. package/src/kisscomps/components/SelectGBCrossStage/utils.js +142 -0
  312. package/src/kisscomps/components/StageOptimize/StageOptimize.vue +367 -367
  313. package/src/kisscomps/components/StageOptimize/index.js +2 -2
  314. package/src/kisscomps/components/StageStatus/StageStatus.vue +341 -341
  315. package/src/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
  316. package/src/kisscomps/components/XiaoKanban/DirSelector.vue +356 -356
  317. package/src/kisscomps/components/XiaoKanban/index.vue +122 -122
  318. package/src/kisscomps/components/patternConfig/pattern/planChart/model/coordinationModel.js +665 -665
  319. package/src/kisscomps/components/patternConfig/planContent.vue +604 -604
  320. package/src/kisscomps/components/patternConfig/planMenu.vue +329 -329
  321. package/src/kisscomps/index.js +4 -0
  322. package/src/lib/publicjs/ArryListUtil.js +38 -38
  323. package/src/lib/publicjs/HttpurlMgr.js +45 -45
  324. package/src/lib/publicjs/KissApi.js +158 -158
  325. package/src/lib/publicjs/KissWSSub/Heartcheck.js +128 -128
  326. package/src/lib/publicjs/KissWSSub/KissWsSub.js +91 -91
  327. package/src/lib/publicjs/KissWSSub/KissWsSubByType.js +152 -152
  328. package/src/lib/publicjs/KissWSSub/SimuWsSubByType.js +44 -44
  329. package/src/lib/publicjs/KissWSSub/Sub.js +51 -51
  330. package/src/lib/publicjs/KissWSSub/SubChannel.js +119 -119
  331. package/src/lib/publicjs/basecomponents.js +65 -65
  332. package/src/lib/publicjs/localStorage.js +112 -112
  333. package/src/lib/publicjs/objdeepcopy.js +32 -32
  334. package/src/lib/publicjs/pageScroll.js +30 -30
  335. package/src/lib/publicjs/passwdAssest.js +101 -101
  336. package/src/lib/publicjs/styleclassfactory.js +32 -32
  337. package/src/router/index.js +7 -0
  338. package/src/store/index.js +26 -26
  339. package/src/store/modules/globalParam.js +67 -67
  340. package/src/utils/RingDataModel.js +335 -335
  341. package/src/utils/conflct.js +1 -1
  342. package/src/utils/conflictList.js +87 -87
  343. package/src/utils/dateFormat.js +41 -41
  344. package/src/utils/index.js +69 -69
  345. package/src/utils/phaseList.js +203 -203
  346. package/src/utils/validate.js +43 -43
  347. package/src/views/RcpRightPanel.vue +75 -0
  348. package/src/views/home.1.vue +479 -479
  349. package/src/views/home.vue +93 -93
  350. package/src/views/intersection2.vue +328 -328
  351. package/src/views/overView.vue +63 -63
  352. package/static/styles/channelizatioon.scss +433 -433
  353. package/static/styles/common.scss +30 -30
  354. package/static/styles/commonkanban.scss +168 -168
  355. package/static/styles/dark/index.scss +2 -2
  356. package/static/styles/dark/theme/element-dark.scss +44 -44
  357. package/static/styles/index.scss +84 -84
  358. package/static/styles/intersection.scss +180 -180
  359. package/static/styles/light/index.scss +2 -2
  360. package/static/styles/light/theme/element-light.scss +44 -44
  361. package/static/styles/overview.scss +146 -146
  362. package/static/styles/patternConfig.scss +56 -56
  363. package/static/styles/phasePedSelect.scss +71 -71
  364. package/static/styles/stages.scss +57 -57
  365. package/static/styles/xiaokanban.scss +61 -61
  366. package/static/token.json +2 -2
  367. package/test/e2e/custom-assertions/elementCount.js +27 -27
  368. package/test/e2e/nightwatch.conf.js +46 -46
  369. package/test/e2e/runner.js +48 -48
  370. package/test/e2e/specs/test.js +19 -19
  371. package/test/unit/.eslintrc +7 -7
  372. package/test/unit/jest.conf.js +30 -30
  373. package/test/unit/setup.js +3 -3
  374. package/test/unit/specs/HelloWorld.spec.js +11 -11
@@ -1,534 +1,534 @@
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
- <!--动态路口图,只需要设备AgentId,此组件会处理方案状态接口轮询-->
13
- <template>
14
- <div class="intersection-with-interface">
15
- <IntersectionMap
16
- ref="intersectionMap"
17
- :crossStatusData="crossStatusData"
18
- :agentId="agentId"
19
- :graphicMode="true"
20
- :roadDirection="roadDirection"
21
- :modeName="modeName !== '' ? modeName : controlData.mode"
22
- :controlName="controlName !== '' ? controlName : controlData.control"
23
- :stateName="stateName"
24
- :isShowMode="isShowMode"
25
- :isShowState="isShowState"
26
- :isShowMessage ="isShowMessage"
27
- :isShowInterval="isShowInterval"
28
- @onSelectStages="onSelectStages"/>
29
- </div>
30
- </template>
31
- <script>
32
- import IntersectionMap from '../IntersectionMap'
33
- import { getMessageByCode } from '../../../utils/responseMessage'
34
- import { getTscControl, queryDevice, putTscControl } from '../../../api/control.js'
35
- import { registerMessage, uploadSingleTscParam } from '../../../api/param'
36
- import { getIframdevid, setIframdevid, setToken, setHost } from '../../../utils/auth.js'
37
- import ControlFormat from '../../../utils/ControlFormat.js'
38
- export default {
39
- name: 'intersection-with-interface',
40
- components: {
41
- IntersectionMap
42
- },
43
- data () {
44
- return {
45
- stateName: this.$t('openatccomponents.overview.offline'),
46
- controlData: {},
47
- boxVisible: false,
48
- dialogWidth: '100%',
49
- crossStatusData: {}, // 路口状态数据
50
- // devStatus: 1,
51
- isResend: true,
52
- intervalFlag: true,
53
- phaseControlTimer: null, // 定时器
54
- registerMessageTimer: null // 延时器
55
- }
56
- },
57
- props: {
58
- reqUrl: {
59
- type: String,
60
- default: ''
61
- },
62
- AgentId: {
63
- type: String
64
- },
65
- Token: {
66
- type: String,
67
- default: ''
68
- },
69
- roadDirection: {
70
- type: String,
71
- default: 'right'
72
- },
73
- isShowInterval: {
74
- type: Boolean,
75
- default: true
76
- },
77
- isShowMessage: {
78
- type: Boolean,
79
- default: true
80
- },
81
- isShowState: {
82
- type: Boolean,
83
- devault: false
84
- },
85
- isShowMode: {
86
- type: Boolean,
87
- default: false
88
- },
89
- modeName: {
90
- type: String,
91
- default: ''
92
- },
93
- controlName: {
94
- type: String,
95
- default: ''
96
- }
97
- },
98
- watch: {
99
- AgentId: {
100
- handler: function (val) {
101
- this.agentId = val
102
- },
103
- // 深度观察监听
104
- deep: true,
105
- immediate: true
106
- },
107
- Token: {
108
- handler: function (val) {
109
- this.setPropsToken(val)
110
- }
111
- }
112
- },
113
- methods: {
114
- oncancle () {
115
- this.boxVisible = false
116
- },
117
- handleOpenConfigPanel () {
118
- this.boxVisible = true
119
- },
120
- setDialogWidth () {
121
- var val = document.body.offsetWidth
122
- const def = 1200 // 默认宽度
123
- if (val < def) {
124
- this.dialogWidth = '100%'
125
- } else {
126
- this.dialogWidth = def + 'px'
127
- }
128
- },
129
- resetIntersectionMap () {
130
- this.setPropsToken(this.Token)
131
- this.firstInit()
132
- this.$refs.intersectionMap.resetCrossDiagram()
133
- this.initData()
134
- },
135
- registerMessage () {
136
- registerMessage(this.AgentId).then(data => {
137
- if (!data.data.success) {
138
- // this.devStatus = 2
139
- let commomMsg = this.$t('openatccomponents.overview.signalID') + ' : ' + this.AgentId
140
- let msg = getMessageByCode(data.data.code, this.$i18n.locale)
141
- if (data.data.data) {
142
- let errorCode = data.data.data.errorCode
143
- if (errorCode) {
144
- msg = msg + ' - ' + getMessageByCode(errorCode, this.$i18n.locale)
145
- }
146
- }
147
- msg = msg + ' - ' + commomMsg
148
- this.isShowMessage && this.$message.error(msg)
149
- if (this.isResend) {
150
- this.reSend()
151
- }
152
- return
153
- }
154
- this.$emit('registerMessage', data)
155
- // this.devStatus = 3
156
- this.clearPatternInterval() // 清除其他定时器
157
- this.phaseControlTimer = setInterval(() => {
158
- if (this.intervalFlag) {
159
- this.initData()
160
- }
161
- }, 1000)
162
- })
163
- },
164
- reSend () { // 设备掉线重连机制
165
- // this.devStatus = 1
166
- this.clearRegisterMessageTimer()
167
- this.registerMessageTimer = setTimeout(() => {
168
- this.reconnectionDev()
169
- }, 5000)
170
- },
171
- clearPatternInterval () {
172
- if (this.phaseControlTimer !== null) {
173
- clearInterval(this.phaseControlTimer) // 清除定时器
174
- this.phaseControlTimer = null
175
- }
176
- },
177
- clearRegisterMessageTimer () {
178
- if (this.registerMessageTimer !== null) {
179
- clearTimeout(this.registerMessageTimer) // 清除延时器
180
- this.registerMessageTimer = null
181
- }
182
- },
183
- initData () {
184
- this.intervalFlag = false
185
- let iframdevid = getIframdevid()
186
- console.log(iframdevid)
187
- let startTime = new Date().getTime()
188
- getTscControl(this.AgentId).then((data) => {
189
- let endTime = new Date().getTime()
190
- let diffTime = endTime - startTime
191
- this.responseTime = diffTime
192
- this.intervalFlag = true
193
- console.log(data, 'datad')
194
- if (!data.data.success) {
195
- let commomMsg = this.$t('openatccomponents.overview.signalID') + ' : ' + this.AgentId
196
- if (data.data.code === '4003') {
197
- // this.devStatus = 2
198
- this.clearPatternInterval() // 清除其他定时器
199
- this.clearVolumeInterval()
200
- this.isShowMessage && this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale) + ' - ' + commomMsg)
201
- if (this.isResend) {
202
- this.reSend()
203
- }
204
- return
205
- }
206
- let msg = getMessageByCode(data.data.code, this.$i18n.locale)
207
- if (data.data.data) {
208
- // 子类型错误
209
- let childErrorCode = data.data.data.errorCode
210
- if (childErrorCode) {
211
- let childerror = getMessageByCode(data.data.data.errorCode, this.$i18n.locale)
212
- msg = msg + ' - ' + childerror
213
- }
214
- }
215
- msg = msg + ' - ' + commomMsg
216
- this.isShowMessage && this.$message.error(msg)
217
- this.clearPatternInterval() // 清除其他定时器
218
- if (this.isResend) {
219
- this.reSend()
220
- }
221
- return
222
- }
223
- if (!data.data.data.data) return
224
- this.crossStatusData = JSON.parse(JSON.stringify(data.data.data.data))
225
- let param = JSON.parse(JSON.stringify(data.data.data.data))
226
- // this.controlData = this.handleGetData(param)
227
- this.controlData = this.controlFormat.handleGetData(param)
228
- this.$emit('getTscControl', data)
229
- }).catch(error => {
230
- this.isShowMessage && this.$message.error(error)
231
- console.log(error)
232
- })
233
- },
234
- reconnectionDev () {
235
- this.registerMessage()
236
- },
237
- queryDevParams () {
238
- let _this = this
239
- queryDevice(this.AgentId).then(res => {
240
- if (!res.data.success) {
241
- let commomMsg = this.$t('openatccomponents.overview.signalID') + ': ' + this.AgentId
242
- let msg = getMessageByCode(res.data.code, this.$i18n.locale) + ', ' + commomMsg
243
- this.isShowMessage && this.$message.error(msg)
244
- return
245
- }
246
- let devParams = res.data.data.jsonparam
247
- _this.ip = devParams.ip
248
- _this.port = String(devParams.port)
249
- _this.protocol = res.data.data.protocol
250
- _this.agentId = res.data.data.agentid
251
- if (res.data.data.name) {
252
- _this.agentName = res.data.data.name
253
- }
254
- _this.platform = res.data.data.platform
255
- let state = res.data.data.state
256
- if (state === 'UP') {
257
- _this.stateName = _this.$t('openatccomponents.overview.online')
258
- } else {
259
- _this.stateName = _this.$t('openatccomponents.overview.offline')
260
- }
261
- _this.$refs.intersectionMap.resetCrossDiagram()
262
- _this.registerMessage() // 注册消息
263
- _this.$emit('queryDevice', res)
264
- })
265
- },
266
- firstInit () {
267
- if (this.$route.query !== undefined && Object.keys(this.$route.query).length && this.$route.query.agentid !== undefined) {
268
- this.agentId = this.$route.query.agentid
269
- setIframdevid(this.agentId)
270
- this.registerMessage() // 注册消息
271
- } else {
272
- this.queryDevParams() // 查询设备信息
273
- }
274
- },
275
- destroyIntersectionMap () {
276
- this.isResend = false
277
- this.clearPatternInterval() // 清除定时器
278
- this.clearRegisterMessageTimer() // 清除定时器
279
- },
280
- setPropsToken (token) {
281
- // 获取组件外传入的token,便于独立组件调用接口
282
- if (token && token !== '') {
283
- setToken(token)
284
- }
285
- },
286
- setHost (host) {
287
- // 获取组件外传入的token,便于独立组件调用接口
288
- if (host && host !== '') {
289
- setHost(host)
290
- }
291
- },
292
- async doPatternCommit (control) {
293
- let that = this
294
- let resData
295
- await putTscControl(control, this.agentId).then(data => {
296
- resData = data
297
- let success = 0
298
- if (!data.data.success) {
299
- if (data.data.code === '4002' && data.data.data.errorCode === '4209') {
300
- let success = data.data.data.content.success
301
- if (success !== 0) {
302
- let errormsg = 'openatccomponents.overview.putTscControlError' + success
303
- this.isShowMessage && this.$message.error(this.$t(errormsg))
304
- return
305
- }
306
- }
307
- that.$message.error(getMessageByCode(data.data.code, that.$i18n.locale))
308
- return
309
- }
310
- if (data.data.data && data.data.data.data) {
311
- success = data.data.data.data.success
312
- if (success !== 0) {
313
- let errormsg = 'openatccomponents.overview.putTscControlError' + success
314
- that.$message.error(this.$t(errormsg))
315
- return
316
- }
317
- }
318
- // this.closeManualModal()
319
- if (success === 0) {
320
- that.$message.success(this.$t('openatccomponents.common.download'))
321
- }
322
- }).catch(error => {
323
- that.$message.error(error)
324
- console.log(error)
325
- })
326
- return resData
327
- },
328
- async getTscControlInfo () {
329
- await getTscControl(this.agentId).then((data) => {
330
- let res = data
331
- this.controlInfo = {
332
- tscData: null,
333
- stageData: null,
334
- controlData: null
335
- }
336
- if (!data.data.success) {
337
- if (data.data.code === '4003') {
338
- this.isShowMessage && this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
339
- return
340
- }
341
- let parrenterror = getMessageByCode(data.data.code, this.$i18n.locale)
342
- if (data.data.data) {
343
- // 子类型错误
344
- let childErrorCode = data.data.data.errorCode
345
- if (childErrorCode) {
346
- let childerror = getMessageByCode(data.data.data.errorCode, this.$i18n.locale)
347
- this.isShowMessage && this.$message.error(parrenterror + ',' + childerror)
348
- }
349
- } else {
350
- this.isShowMessage && this.$message.error(parrenterror)
351
- }
352
- return
353
- }
354
- let tscData = JSON.parse(JSON.stringify(res.data.data))
355
- let stageData = []
356
- // stageData = this.handleStageData(tscData) // 处理阶段(驻留)stage数据
357
- let controlData = {}
358
- let param = Object.assign({}, tscData)
359
- controlData = this.controlFormat.handleGetData(param)
360
- this.controlData = controlData
361
- this.controlInfo = {
362
- tscData: tscData,
363
- stageData: stageData,
364
- controlData: controlData
365
- }
366
- }).catch(error => {
367
- this.isShowMessage && this.$message.error(error)
368
- console.log(error)
369
- })
370
- },
371
- async getPhase () {
372
- await uploadSingleTscParam('phase', this.agentId).then(data => {
373
- let res = data.data
374
- if (!res.success) {
375
- if (res.code === '4003') {
376
- this.isShowMessage && this.$message.error(this.$t('openatccomponents.errorTip.devicenotonline'))
377
- return
378
- }
379
- this.isShowMessage && this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
380
- return
381
- }
382
- this.phaseList = res.data.data.phaseList
383
- })
384
- },
385
- async getPhaseInfo () {
386
- await this.getPhase()
387
- let res = [...this.phaseList]
388
- return res
389
- },
390
- async getControlInfo () {
391
- await this.getTscControlInfo()
392
- // let res = this.controlInfo.controlData
393
- let res = this.controlInfo.tscData
394
- return res
395
- },
396
- clearInterVals () {
397
- this.clearPatternInterval() // 清除定时器
398
- this.clearRegisterMessageTimer() // 清除定时器
399
- },
400
- onSelectStages (value) {
401
- this.currentStage = value
402
- this.$emit('onSelectStages', value)
403
- },
404
- async lockPhase (reqData) {
405
- let res = await this.doPatternCommit(reqData)
406
- return res
407
- },
408
- async unlockPhase (reqData) {
409
- let res = await this.doPatternCommit(reqData)
410
- return res
411
- },
412
- async changeControlPattern (reqData) {
413
- let res = await this.doPatternCommit(reqData)
414
- return res
415
- },
416
- getBusPos () {
417
- // 公交相位信息
418
- this.busPhaseData = []
419
- this.phaseList.forEach((ele, i) => {
420
- if (ele.controltype >= 3 && ele.controltype <= 5) {
421
- ele.direction.forEach((dir, index) => {
422
- // 车道相位
423
- this.busPhaseData.push({
424
- // key: this.CrossDiagramMgr.getUniqueKey('busphase'),
425
- phaseid: ele.id, // 相位id,用于对应相位状态
426
- id: dir, // 接口返回的dir字段,对应前端定义的相位方向id,唯一标识
427
- name: this.PhaseDataModel.getBusPhasePos(dir).name,
428
- controltype: ele.controltype
429
- })
430
- })
431
- }
432
- })
433
- let result = []
434
- let obj = {}
435
- for (var i = 0; i < this.busPhaseData.length; i++) {
436
- if (!obj[this.busPhaseData[i].phaseid]) {
437
- result.push(this.busPhaseData[i])
438
- obj[this.busPhaseData[i].phaseid] = true
439
- }
440
- }
441
- this.busPhaseData = result
442
- },
443
- handleStageData (data) {
444
- this.getBusPos()
445
- this.stagesList = []
446
- let busPhaseData = this.busPhaseData
447
- let stages = data.stages
448
- if (!stages) return
449
- let stagesTemp = []
450
- for (let stage of stages) {
451
- let tempList = []
452
- let directionList = []
453
- let stageControType = 0
454
- let peddirections = []
455
- for (let stg of stage) {
456
- let currPhase = this.phaseList.filter((item) => {
457
- return item.id === stg
458
- })[0]
459
- if (currPhase !== undefined) {
460
- directionList = [...currPhase.direction, ...directionList]
461
- }
462
- for (let walk of this.sidewalkPhaseData) {
463
- if (stg === walk.phaseid) {
464
- peddirections.push(...currPhase.peddirection)
465
- peddirections = Array.from(new Set(peddirections))
466
- }
467
- }
468
- for (let busPhase of busPhaseData) {
469
- if (stg === busPhase.phaseid) {
470
- stageControType = busPhase.controltype
471
- }
472
- }
473
- }
474
- directionList = [...new Set(directionList)]
475
- if (directionList.length === 0) return
476
- tempList = directionList.map(dir => ({
477
- id: dir,
478
- color: '#606266',
479
- controltype: stageControType,
480
- peddirection: peddirections
481
- }))
482
- stagesTemp.push(tempList)
483
- }
484
- this.stagesList = JSON.parse(JSON.stringify(stagesTemp))
485
- // 相位变化时触发回调
486
- if (this.currentStage !== data.current_stage) {
487
- this.$emit('onPhaseChange', this.stagesList, data.current_stage)
488
- }
489
- this.currentStage = data.current_stage
490
- }
491
- },
492
- created () {
493
- this.setDialogWidth()
494
- this.setHost(this.reqUrl)
495
- this.controlFormat = new ControlFormat()
496
- },
497
- mounted () {
498
- setIframdevid(this.AgentId)
499
- this.resetIntersectionMap()
500
- window.onresize = () => {
501
- return (() => {
502
- this.setDialogWidth()
503
- })()
504
- }
505
- },
506
- destroyed () {
507
- this.destroyIntersectionMap()
508
- }
509
- }
510
- </script>
511
- <style lang="scss">
512
- .abow_dialog {
513
- display: flex;
514
- justify-content: center;
515
- align-items: Center;
516
- overflow: hidden;
517
- .el-dialog {
518
- margin: 0 auto !important;
519
- height: 90%;
520
- overflow: hidden;
521
- .el-dialog__body {
522
- position: absolute;
523
- left: 0;
524
- top: 54px;
525
- bottom: 0;
526
- right: 0;
527
- padding: 0;
528
- z-index: 1;
529
- overflow-y: auto;
530
- overflow-x: auto;
531
- }
532
- }
533
- }
534
- </style>
1
+ /**
2
+ * Copyright (c) 2020 kedacom
3
+ * OpenATC is licensed under Mulan PSL v2.
4
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
5
+ * You may obtain a copy of Mulan PSL v2 at:
6
+ * http://license.coscl.org.cn/MulanPSL2
7
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
8
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
9
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
10
+ * See the Mulan PSL v2 for more details.
11
+ **/
12
+ <!--动态路口图,只需要设备AgentId,此组件会处理方案状态接口轮询-->
13
+ <template>
14
+ <div class="intersection-with-interface">
15
+ <IntersectionMap
16
+ ref="intersectionMap"
17
+ :crossStatusData="crossStatusData"
18
+ :agentId="agentId"
19
+ :graphicMode="true"
20
+ :roadDirection="roadDirection"
21
+ :modeName="modeName !== '' ? modeName : controlData.mode"
22
+ :controlName="controlName !== '' ? controlName : controlData.control"
23
+ :stateName="stateName"
24
+ :isShowMode="isShowMode"
25
+ :isShowState="isShowState"
26
+ :isShowMessage ="isShowMessage"
27
+ :isShowInterval="isShowInterval"
28
+ @onSelectStages="onSelectStages"/>
29
+ </div>
30
+ </template>
31
+ <script>
32
+ import IntersectionMap from '../IntersectionMap'
33
+ import { getMessageByCode } from '../../../utils/responseMessage'
34
+ import { getTscControl, queryDevice, putTscControl } from '../../../api/control.js'
35
+ import { registerMessage, uploadSingleTscParam } from '../../../api/param'
36
+ import { getIframdevid, setIframdevid, setToken, setHost } from '../../../utils/auth.js'
37
+ import ControlFormat from '../../../utils/ControlFormat.js'
38
+ export default {
39
+ name: 'intersection-with-interface',
40
+ components: {
41
+ IntersectionMap
42
+ },
43
+ data () {
44
+ return {
45
+ stateName: this.$t('openatccomponents.overview.offline'),
46
+ controlData: {},
47
+ boxVisible: false,
48
+ dialogWidth: '100%',
49
+ crossStatusData: {}, // 路口状态数据
50
+ // devStatus: 1,
51
+ isResend: true,
52
+ intervalFlag: true,
53
+ phaseControlTimer: null, // 定时器
54
+ registerMessageTimer: null // 延时器
55
+ }
56
+ },
57
+ props: {
58
+ reqUrl: {
59
+ type: String,
60
+ default: ''
61
+ },
62
+ AgentId: {
63
+ type: String
64
+ },
65
+ Token: {
66
+ type: String,
67
+ default: ''
68
+ },
69
+ roadDirection: {
70
+ type: String,
71
+ default: 'right'
72
+ },
73
+ isShowInterval: {
74
+ type: Boolean,
75
+ default: true
76
+ },
77
+ isShowMessage: {
78
+ type: Boolean,
79
+ default: true
80
+ },
81
+ isShowState: {
82
+ type: Boolean,
83
+ devault: false
84
+ },
85
+ isShowMode: {
86
+ type: Boolean,
87
+ default: false
88
+ },
89
+ modeName: {
90
+ type: String,
91
+ default: ''
92
+ },
93
+ controlName: {
94
+ type: String,
95
+ default: ''
96
+ }
97
+ },
98
+ watch: {
99
+ AgentId: {
100
+ handler: function (val) {
101
+ this.agentId = val
102
+ },
103
+ // 深度观察监听
104
+ deep: true,
105
+ immediate: true
106
+ },
107
+ Token: {
108
+ handler: function (val) {
109
+ this.setPropsToken(val)
110
+ }
111
+ }
112
+ },
113
+ methods: {
114
+ oncancle () {
115
+ this.boxVisible = false
116
+ },
117
+ handleOpenConfigPanel () {
118
+ this.boxVisible = true
119
+ },
120
+ setDialogWidth () {
121
+ var val = document.body.offsetWidth
122
+ const def = 1200 // 默认宽度
123
+ if (val < def) {
124
+ this.dialogWidth = '100%'
125
+ } else {
126
+ this.dialogWidth = def + 'px'
127
+ }
128
+ },
129
+ resetIntersectionMap () {
130
+ this.setPropsToken(this.Token)
131
+ this.firstInit()
132
+ this.$refs.intersectionMap.resetCrossDiagram()
133
+ this.initData()
134
+ },
135
+ registerMessage () {
136
+ registerMessage(this.AgentId).then(data => {
137
+ if (!data.data.success) {
138
+ // this.devStatus = 2
139
+ let commomMsg = this.$t('openatccomponents.overview.signalID') + ' : ' + this.AgentId
140
+ let msg = getMessageByCode(data.data.code, this.$i18n.locale)
141
+ if (data.data.data) {
142
+ let errorCode = data.data.data.errorCode
143
+ if (errorCode) {
144
+ msg = msg + ' - ' + getMessageByCode(errorCode, this.$i18n.locale)
145
+ }
146
+ }
147
+ msg = msg + ' - ' + commomMsg
148
+ this.isShowMessage && this.$message.error(msg)
149
+ if (this.isResend) {
150
+ this.reSend()
151
+ }
152
+ return
153
+ }
154
+ this.$emit('registerMessage', data)
155
+ // this.devStatus = 3
156
+ this.clearPatternInterval() // 清除其他定时器
157
+ this.phaseControlTimer = setInterval(() => {
158
+ if (this.intervalFlag) {
159
+ this.initData()
160
+ }
161
+ }, 1000)
162
+ })
163
+ },
164
+ reSend () { // 设备掉线重连机制
165
+ // this.devStatus = 1
166
+ this.clearRegisterMessageTimer()
167
+ this.registerMessageTimer = setTimeout(() => {
168
+ this.reconnectionDev()
169
+ }, 5000)
170
+ },
171
+ clearPatternInterval () {
172
+ if (this.phaseControlTimer !== null) {
173
+ clearInterval(this.phaseControlTimer) // 清除定时器
174
+ this.phaseControlTimer = null
175
+ }
176
+ },
177
+ clearRegisterMessageTimer () {
178
+ if (this.registerMessageTimer !== null) {
179
+ clearTimeout(this.registerMessageTimer) // 清除延时器
180
+ this.registerMessageTimer = null
181
+ }
182
+ },
183
+ initData () {
184
+ this.intervalFlag = false
185
+ let iframdevid = getIframdevid()
186
+ console.log(iframdevid)
187
+ let startTime = new Date().getTime()
188
+ getTscControl(this.AgentId).then((data) => {
189
+ let endTime = new Date().getTime()
190
+ let diffTime = endTime - startTime
191
+ this.responseTime = diffTime
192
+ this.intervalFlag = true
193
+ console.log(data, 'datad')
194
+ if (!data.data.success) {
195
+ let commomMsg = this.$t('openatccomponents.overview.signalID') + ' : ' + this.AgentId
196
+ if (data.data.code === '4003') {
197
+ // this.devStatus = 2
198
+ this.clearPatternInterval() // 清除其他定时器
199
+ this.clearVolumeInterval()
200
+ this.isShowMessage && this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale) + ' - ' + commomMsg)
201
+ if (this.isResend) {
202
+ this.reSend()
203
+ }
204
+ return
205
+ }
206
+ let msg = getMessageByCode(data.data.code, this.$i18n.locale)
207
+ if (data.data.data) {
208
+ // 子类型错误
209
+ let childErrorCode = data.data.data.errorCode
210
+ if (childErrorCode) {
211
+ let childerror = getMessageByCode(data.data.data.errorCode, this.$i18n.locale)
212
+ msg = msg + ' - ' + childerror
213
+ }
214
+ }
215
+ msg = msg + ' - ' + commomMsg
216
+ this.isShowMessage && this.$message.error(msg)
217
+ this.clearPatternInterval() // 清除其他定时器
218
+ if (this.isResend) {
219
+ this.reSend()
220
+ }
221
+ return
222
+ }
223
+ if (!data.data.data.data) return
224
+ this.crossStatusData = JSON.parse(JSON.stringify(data.data.data.data))
225
+ let param = JSON.parse(JSON.stringify(data.data.data.data))
226
+ // this.controlData = this.handleGetData(param)
227
+ this.controlData = this.controlFormat.handleGetData(param)
228
+ this.$emit('getTscControl', data)
229
+ }).catch(error => {
230
+ this.isShowMessage && this.$message.error(error)
231
+ console.log(error)
232
+ })
233
+ },
234
+ reconnectionDev () {
235
+ this.registerMessage()
236
+ },
237
+ queryDevParams () {
238
+ let _this = this
239
+ queryDevice(this.AgentId).then(res => {
240
+ if (!res.data.success) {
241
+ let commomMsg = this.$t('openatccomponents.overview.signalID') + ': ' + this.AgentId
242
+ let msg = getMessageByCode(res.data.code, this.$i18n.locale) + ', ' + commomMsg
243
+ this.isShowMessage && this.$message.error(msg)
244
+ return
245
+ }
246
+ let devParams = res.data.data.jsonparam
247
+ _this.ip = devParams.ip
248
+ _this.port = String(devParams.port)
249
+ _this.protocol = res.data.data.protocol
250
+ _this.agentId = res.data.data.agentid
251
+ if (res.data.data.name) {
252
+ _this.agentName = res.data.data.name
253
+ }
254
+ _this.platform = res.data.data.platform
255
+ let state = res.data.data.state
256
+ if (state === 'UP') {
257
+ _this.stateName = _this.$t('openatccomponents.overview.online')
258
+ } else {
259
+ _this.stateName = _this.$t('openatccomponents.overview.offline')
260
+ }
261
+ _this.$refs.intersectionMap.resetCrossDiagram()
262
+ _this.registerMessage() // 注册消息
263
+ _this.$emit('queryDevice', res)
264
+ })
265
+ },
266
+ firstInit () {
267
+ if (this.$route.query !== undefined && Object.keys(this.$route.query).length && this.$route.query.agentid !== undefined) {
268
+ this.agentId = this.$route.query.agentid
269
+ setIframdevid(this.agentId)
270
+ this.registerMessage() // 注册消息
271
+ } else {
272
+ this.queryDevParams() // 查询设备信息
273
+ }
274
+ },
275
+ destroyIntersectionMap () {
276
+ this.isResend = false
277
+ this.clearPatternInterval() // 清除定时器
278
+ this.clearRegisterMessageTimer() // 清除定时器
279
+ },
280
+ setPropsToken (token) {
281
+ // 获取组件外传入的token,便于独立组件调用接口
282
+ if (token && token !== '') {
283
+ setToken(token)
284
+ }
285
+ },
286
+ setHost (host) {
287
+ // 获取组件外传入的token,便于独立组件调用接口
288
+ if (host && host !== '') {
289
+ setHost(host)
290
+ }
291
+ },
292
+ async doPatternCommit (control) {
293
+ let that = this
294
+ let resData
295
+ await putTscControl(control, this.agentId).then(data => {
296
+ resData = data
297
+ let success = 0
298
+ if (!data.data.success) {
299
+ if (data.data.code === '4002' && data.data.data.errorCode === '4209') {
300
+ let success = data.data.data.content.success
301
+ if (success !== 0) {
302
+ let errormsg = 'openatccomponents.overview.putTscControlError' + success
303
+ this.isShowMessage && this.$message.error(this.$t(errormsg))
304
+ return
305
+ }
306
+ }
307
+ that.$message.error(getMessageByCode(data.data.code, that.$i18n.locale))
308
+ return
309
+ }
310
+ if (data.data.data && data.data.data.data) {
311
+ success = data.data.data.data.success
312
+ if (success !== 0) {
313
+ let errormsg = 'openatccomponents.overview.putTscControlError' + success
314
+ that.$message.error(this.$t(errormsg))
315
+ return
316
+ }
317
+ }
318
+ // this.closeManualModal()
319
+ if (success === 0) {
320
+ that.$message.success(this.$t('openatccomponents.common.download'))
321
+ }
322
+ }).catch(error => {
323
+ that.$message.error(error)
324
+ console.log(error)
325
+ })
326
+ return resData
327
+ },
328
+ async getTscControlInfo () {
329
+ await getTscControl(this.agentId).then((data) => {
330
+ let res = data
331
+ this.controlInfo = {
332
+ tscData: null,
333
+ stageData: null,
334
+ controlData: null
335
+ }
336
+ if (!data.data.success) {
337
+ if (data.data.code === '4003') {
338
+ this.isShowMessage && this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
339
+ return
340
+ }
341
+ let parrenterror = getMessageByCode(data.data.code, this.$i18n.locale)
342
+ if (data.data.data) {
343
+ // 子类型错误
344
+ let childErrorCode = data.data.data.errorCode
345
+ if (childErrorCode) {
346
+ let childerror = getMessageByCode(data.data.data.errorCode, this.$i18n.locale)
347
+ this.isShowMessage && this.$message.error(parrenterror + ',' + childerror)
348
+ }
349
+ } else {
350
+ this.isShowMessage && this.$message.error(parrenterror)
351
+ }
352
+ return
353
+ }
354
+ let tscData = JSON.parse(JSON.stringify(res.data.data))
355
+ let stageData = []
356
+ // stageData = this.handleStageData(tscData) // 处理阶段(驻留)stage数据
357
+ let controlData = {}
358
+ let param = Object.assign({}, tscData)
359
+ controlData = this.controlFormat.handleGetData(param)
360
+ this.controlData = controlData
361
+ this.controlInfo = {
362
+ tscData: tscData,
363
+ stageData: stageData,
364
+ controlData: controlData
365
+ }
366
+ }).catch(error => {
367
+ this.isShowMessage && this.$message.error(error)
368
+ console.log(error)
369
+ })
370
+ },
371
+ async getPhase () {
372
+ await uploadSingleTscParam('phase', this.agentId).then(data => {
373
+ let res = data.data
374
+ if (!res.success) {
375
+ if (res.code === '4003') {
376
+ this.isShowMessage && this.$message.error(this.$t('openatccomponents.errorTip.devicenotonline'))
377
+ return
378
+ }
379
+ this.isShowMessage && this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
380
+ return
381
+ }
382
+ this.phaseList = res.data.data.phaseList
383
+ })
384
+ },
385
+ async getPhaseInfo () {
386
+ await this.getPhase()
387
+ let res = [...this.phaseList]
388
+ return res
389
+ },
390
+ async getControlInfo () {
391
+ await this.getTscControlInfo()
392
+ // let res = this.controlInfo.controlData
393
+ let res = this.controlInfo.tscData
394
+ return res
395
+ },
396
+ clearInterVals () {
397
+ this.clearPatternInterval() // 清除定时器
398
+ this.clearRegisterMessageTimer() // 清除定时器
399
+ },
400
+ onSelectStages (value) {
401
+ this.currentStage = value
402
+ this.$emit('onSelectStages', value)
403
+ },
404
+ async lockPhase (reqData) {
405
+ let res = await this.doPatternCommit(reqData)
406
+ return res
407
+ },
408
+ async unlockPhase (reqData) {
409
+ let res = await this.doPatternCommit(reqData)
410
+ return res
411
+ },
412
+ async changeControlPattern (reqData) {
413
+ let res = await this.doPatternCommit(reqData)
414
+ return res
415
+ },
416
+ getBusPos () {
417
+ // 公交相位信息
418
+ this.busPhaseData = []
419
+ this.phaseList.forEach((ele, i) => {
420
+ if (ele.controltype >= 3 && ele.controltype <= 5) {
421
+ ele.direction.forEach((dir, index) => {
422
+ // 车道相位
423
+ this.busPhaseData.push({
424
+ // key: this.CrossDiagramMgr.getUniqueKey('busphase'),
425
+ phaseid: ele.id, // 相位id,用于对应相位状态
426
+ id: dir, // 接口返回的dir字段,对应前端定义的相位方向id,唯一标识
427
+ name: this.PhaseDataModel.getBusPhasePos(dir).name,
428
+ controltype: ele.controltype
429
+ })
430
+ })
431
+ }
432
+ })
433
+ let result = []
434
+ let obj = {}
435
+ for (var i = 0; i < this.busPhaseData.length; i++) {
436
+ if (!obj[this.busPhaseData[i].phaseid]) {
437
+ result.push(this.busPhaseData[i])
438
+ obj[this.busPhaseData[i].phaseid] = true
439
+ }
440
+ }
441
+ this.busPhaseData = result
442
+ },
443
+ handleStageData (data) {
444
+ this.getBusPos()
445
+ this.stagesList = []
446
+ let busPhaseData = this.busPhaseData
447
+ let stages = data.stages
448
+ if (!stages) return
449
+ let stagesTemp = []
450
+ for (let stage of stages) {
451
+ let tempList = []
452
+ let directionList = []
453
+ let stageControType = 0
454
+ let peddirections = []
455
+ for (let stg of stage) {
456
+ let currPhase = this.phaseList.filter((item) => {
457
+ return item.id === stg
458
+ })[0]
459
+ if (currPhase !== undefined) {
460
+ directionList = [...currPhase.direction, ...directionList]
461
+ }
462
+ for (let walk of this.sidewalkPhaseData) {
463
+ if (stg === walk.phaseid) {
464
+ peddirections.push(...currPhase.peddirection)
465
+ peddirections = Array.from(new Set(peddirections))
466
+ }
467
+ }
468
+ for (let busPhase of busPhaseData) {
469
+ if (stg === busPhase.phaseid) {
470
+ stageControType = busPhase.controltype
471
+ }
472
+ }
473
+ }
474
+ directionList = [...new Set(directionList)]
475
+ if (directionList.length === 0) return
476
+ tempList = directionList.map(dir => ({
477
+ id: dir,
478
+ color: '#606266',
479
+ controltype: stageControType,
480
+ peddirection: peddirections
481
+ }))
482
+ stagesTemp.push(tempList)
483
+ }
484
+ this.stagesList = JSON.parse(JSON.stringify(stagesTemp))
485
+ // 相位变化时触发回调
486
+ if (this.currentStage !== data.current_stage) {
487
+ this.$emit('onPhaseChange', this.stagesList, data.current_stage)
488
+ }
489
+ this.currentStage = data.current_stage
490
+ }
491
+ },
492
+ created () {
493
+ this.setDialogWidth()
494
+ this.setHost(this.reqUrl)
495
+ this.controlFormat = new ControlFormat()
496
+ },
497
+ mounted () {
498
+ setIframdevid(this.AgentId)
499
+ this.resetIntersectionMap()
500
+ window.onresize = () => {
501
+ return (() => {
502
+ this.setDialogWidth()
503
+ })()
504
+ }
505
+ },
506
+ destroyed () {
507
+ this.destroyIntersectionMap()
508
+ }
509
+ }
510
+ </script>
511
+ <style lang="scss">
512
+ .abow_dialog {
513
+ display: flex;
514
+ justify-content: center;
515
+ align-items: Center;
516
+ overflow: hidden;
517
+ .el-dialog {
518
+ margin: 0 auto !important;
519
+ height: 90%;
520
+ overflow: hidden;
521
+ .el-dialog__body {
522
+ position: absolute;
523
+ left: 0;
524
+ top: 54px;
525
+ bottom: 0;
526
+ right: 0;
527
+ padding: 0;
528
+ z-index: 1;
529
+ overflow-y: auto;
530
+ overflow-x: auto;
531
+ }
532
+ }
533
+ }
534
+ </style>