openatc-components 0.0.79 → 0.0.80

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 (294) 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 +91 -91
  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 +89 -89
  23. package/package/kisscomps/components/BoardCard/index.js +2 -2
  24. package/package/kisscomps/components/CommonKanban/CommonKanban.vue +118 -118
  25. package/package/kisscomps/components/CommonKanban/index.js +2 -2
  26. package/package/kisscomps/components/ExpendConfig/ExpendConfig.vue +114 -114
  27. package/package/kisscomps/components/ExpendConfig/index.js +2 -2
  28. package/package/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +170 -170
  29. package/package/kisscomps/components/FaultDetailModal/index.js +2 -2
  30. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +497 -497
  31. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
  32. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PatternWalkSvg.vue +429 -429
  33. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +300 -300
  34. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +288 -288
  35. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +391 -391
  36. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +336 -336
  37. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +345 -345
  38. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +389 -389
  39. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1179 -1179
  40. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +402 -402
  41. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +361 -361
  42. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +368 -368
  43. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +475 -475
  44. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +494 -494
  45. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +401 -401
  46. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +360 -360
  47. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +367 -367
  48. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +476 -476
  49. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
  50. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
  51. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
  52. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
  53. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
  54. package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
  55. package/package/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +912 -912
  56. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/LphaseIconSvg.vue +112 -112
  57. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/phaseIconSvg.vue +112 -112
  58. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +111 -111
  59. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
  60. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
  61. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.json +99 -99
  62. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +99 -99
  63. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
  64. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/sidePos.json +99 -99
  65. package/package/kisscomps/components/IntersectionMap/crossDirection/utils.js +78 -78
  66. package/package/kisscomps/components/IntersectionMap/index.js +2 -2
  67. package/package/kisscomps/components/IntersectionMap/intersectionmap.vue +153 -153
  68. package/package/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +518 -518
  69. package/package/kisscomps/components/IntersectionWithInterface/index.js +2 -2
  70. package/package/kisscomps/components/KanBan/index.js +2 -2
  71. package/package/kisscomps/components/KanBan/kanban.vue +219 -219
  72. package/package/kisscomps/components/OverLap/OverLap.vue +207 -207
  73. package/package/kisscomps/components/OverLap/index.js +2 -2
  74. package/package/kisscomps/components/PatternStatus/PatternStatus.vue +886 -886
  75. package/package/kisscomps/components/PatternStatus/index.js +2 -2
  76. package/package/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +418 -418
  77. package/package/kisscomps/components/PatternWalkSvg/index.js +2 -2
  78. package/package/kisscomps/components/PhaseMarker/index.js +6 -6
  79. package/package/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
  80. package/package/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
  81. package/package/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
  82. package/package/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
  83. package/package/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
  84. package/package/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
  85. package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +739 -739
  86. package/package/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +195 -195
  87. package/package/kisscomps/components/SchemeConfig/index.js +2 -2
  88. package/package/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +198 -198
  89. package/package/kisscomps/components/SchemeConfig/manualControlModal/index.vue +219 -219
  90. package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +263 -263
  91. package/package/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1384 -1384
  92. package/package/kisscomps/components/StageBord/StageBord.vue +242 -242
  93. package/package/kisscomps/components/StageBord/index.js +2 -2
  94. package/package/kisscomps/components/StageStatus/StageStatus.vue +306 -306
  95. package/package/kisscomps/components/StageStatus/index.js +2 -2
  96. package/package/kisscomps/components/Stages/index.vue +139 -121
  97. package/package/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
  98. package/package/kisscomps/components/SvgIcon/index.js +2 -2
  99. package/package/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +522 -522
  100. package/package/kisscomps/components/XRDDirSelector/index.js +2 -2
  101. package/package/kisscomps/components/overView/index.vue +676 -676
  102. package/package/kisscomps/components/patternList/index.js +2 -2
  103. package/package/kisscomps/components/patternList/patternList.vue +562 -562
  104. package/package/kisscomps/index.js +92 -92
  105. package/package/kissui.min.js +1 -1
  106. package/package.json +1 -1
  107. package/src/App.vue +24 -24
  108. package/src/EdgeMgr/EdgeModelBase.js +16 -16
  109. package/src/EdgeMgr/controller/crossDiagramMgr.js +120 -120
  110. package/src/api/authapi.js +31 -31
  111. package/src/api/config.js +21 -21
  112. package/src/api/control.js +76 -76
  113. package/src/api/fault.js +66 -66
  114. package/src/api/index.js +24 -24
  115. package/src/api/login.js +46 -46
  116. package/src/api/optimize.js +72 -72
  117. package/src/api/param.js +154 -154
  118. package/src/api/passwdAssest.js +101 -101
  119. package/src/api/template.js +27 -27
  120. package/src/i18n/index.js +26 -26
  121. package/src/i18n/language/en.js +1111 -1111
  122. package/src/i18n/language/index.js +25 -25
  123. package/src/i18n/language/zh.js +1110 -1110
  124. package/src/icons/demo.css +539 -539
  125. package/src/icons/iconfont.css +835 -835
  126. package/src/icons/iconfont.json +1444 -1444
  127. package/src/icons/index.js +20 -20
  128. package/src/icons/svg/bendi.svg +110 -110
  129. package/src/icons/svg/bujin.svg +36 -36
  130. package/src/icons/svg/connectBlue.svg +7 -7
  131. package/src/icons/svg/currentvolume.svg +0 -0
  132. package/src/icons/svg/cutRed.svg +7 -7
  133. package/src/icons/svg/cycle.svg +0 -0
  134. package/src/icons/svg/dingzhouqi.svg +34 -34
  135. package/src/icons/svg/ganyingkongzhi.svg +30 -30
  136. package/src/icons/svg/guandeng.svg +81 -81
  137. package/src/icons/svg/huangshan.svg +71 -71
  138. package/src/icons/svg/maincontrol.svg +0 -0
  139. package/src/icons/svg/manualcontrolbackground.svg +51 -51
  140. package/src/icons/svg/manualcontrolbackground1.svg +62 -62
  141. package/src/icons/svg/manualcontrolbackgrounden.svg +62 -62
  142. package/src/icons/svg/model.svg +0 -0
  143. package/src/icons/svg/phasediff.svg +0 -0
  144. package/src/icons/svg/quanhong.svg +86 -86
  145. package/src/icons/svg/shanghe.svg +11 -11
  146. package/src/icons/svg/shoudong.svg +103 -103
  147. package/src/icons/svg/time.svg +0 -0
  148. package/src/icons/svg/wuxianlan.svg +46 -46
  149. package/src/icons/svg/xiala.svg +11 -11
  150. package/src/icons/svg/xingrenguojie.svg +33 -33
  151. package/src/icons/svg/xitong.svg +89 -89
  152. package/src/icons/svg/youxian.svg +41 -41
  153. package/src/icons/svg/zizhukongzhi.svg +43 -43
  154. package/src/kisscomps/components/BoardCard/BoardCard.vue +89 -89
  155. package/src/kisscomps/components/BoardCard/index.js +2 -2
  156. package/src/kisscomps/components/CommonKanban/CommonKanban.vue +118 -118
  157. package/src/kisscomps/components/CommonKanban/index.js +2 -2
  158. package/src/kisscomps/components/ExpendConfig/ExpendConfig.vue +114 -114
  159. package/src/kisscomps/components/ExpendConfig/index.js +2 -2
  160. package/src/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +170 -170
  161. package/src/kisscomps/components/FaultDetailModal/index.js +2 -2
  162. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +497 -497
  163. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
  164. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PatternWalkSvg.vue +429 -429
  165. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +300 -300
  166. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +288 -288
  167. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +391 -391
  168. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +336 -336
  169. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +345 -345
  170. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +389 -389
  171. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1179 -1179
  172. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +402 -402
  173. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +361 -361
  174. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +368 -368
  175. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +475 -475
  176. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +494 -494
  177. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +401 -401
  178. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +360 -360
  179. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +367 -367
  180. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +476 -476
  181. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
  182. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
  183. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
  184. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
  185. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
  186. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
  187. package/src/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +912 -912
  188. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/LphaseIconSvg.vue +112 -112
  189. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/phaseIconSvg.vue +112 -112
  190. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +111 -111
  191. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
  192. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
  193. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.json +99 -99
  194. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +99 -99
  195. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
  196. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/sidePos.json +99 -99
  197. package/src/kisscomps/components/IntersectionMap/crossDirection/utils.js +78 -78
  198. package/src/kisscomps/components/IntersectionMap/index.js +2 -2
  199. package/src/kisscomps/components/IntersectionMap/intersectionmap.vue +153 -153
  200. package/src/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +518 -518
  201. package/src/kisscomps/components/IntersectionWithInterface/index.js +2 -2
  202. package/src/kisscomps/components/KanBan/index.js +2 -2
  203. package/src/kisscomps/components/KanBan/kanban.vue +219 -219
  204. package/src/kisscomps/components/OverLap/OverLap.vue +207 -207
  205. package/src/kisscomps/components/OverLap/index.js +2 -2
  206. package/src/kisscomps/components/PatternStatus/PatternStatus.vue +886 -886
  207. package/src/kisscomps/components/PatternStatus/index.js +2 -2
  208. package/src/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +418 -418
  209. package/src/kisscomps/components/PatternWalkSvg/index.js +2 -2
  210. package/src/kisscomps/components/PhaseMarker/index.js +6 -6
  211. package/src/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
  212. package/src/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
  213. package/src/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
  214. package/src/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
  215. package/src/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
  216. package/src/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
  217. package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +739 -739
  218. package/src/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +195 -195
  219. package/src/kisscomps/components/SchemeConfig/index.js +2 -2
  220. package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +198 -198
  221. package/src/kisscomps/components/SchemeConfig/manualControlModal/index.vue +219 -219
  222. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +263 -263
  223. package/src/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1384 -1384
  224. package/src/kisscomps/components/StageBord/StageBord.vue +242 -242
  225. package/src/kisscomps/components/StageBord/index.js +2 -2
  226. package/src/kisscomps/components/StageStatus/StageStatus.vue +306 -306
  227. package/src/kisscomps/components/StageStatus/index.js +2 -2
  228. package/src/kisscomps/components/Stages/index.vue +139 -121
  229. package/src/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
  230. package/src/kisscomps/components/SvgIcon/index.js +2 -2
  231. package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +522 -522
  232. package/src/kisscomps/components/XRDDirSelector/index.js +2 -2
  233. package/src/kisscomps/components/overView/index.vue +676 -676
  234. package/src/kisscomps/components/patternList/index.js +2 -2
  235. package/src/kisscomps/components/patternList/patternList.vue +562 -562
  236. package/src/kisscomps/index.js +92 -92
  237. package/src/lib/publicjs/ArryListUtil.js +38 -38
  238. package/src/lib/publicjs/HttpurlMgr.js +45 -45
  239. package/src/lib/publicjs/KissApi.js +158 -158
  240. package/src/lib/publicjs/KissWSSub/Heartcheck.js +128 -128
  241. package/src/lib/publicjs/KissWSSub/KissWsSub.js +91 -91
  242. package/src/lib/publicjs/KissWSSub/KissWsSubByType.js +152 -152
  243. package/src/lib/publicjs/KissWSSub/SimuWsSubByType.js +44 -44
  244. package/src/lib/publicjs/KissWSSub/Sub.js +51 -51
  245. package/src/lib/publicjs/KissWSSub/SubChannel.js +119 -119
  246. package/src/lib/publicjs/basecomponents.js +65 -65
  247. package/src/lib/publicjs/localStorage.js +112 -112
  248. package/src/lib/publicjs/objdeepcopy.js +32 -32
  249. package/src/lib/publicjs/pageScroll.js +30 -30
  250. package/src/lib/publicjs/passwdAssest.js +101 -101
  251. package/src/lib/publicjs/styleclassfactory.js +32 -32
  252. package/src/main.js +47 -47
  253. package/src/router/index.js +36 -36
  254. package/src/store/getters.js +16 -16
  255. package/src/store/index.js +26 -26
  256. package/src/store/modules/globalParam.js +27 -27
  257. package/src/utils/ControlFormat.js +68 -68
  258. package/src/utils/RingDataModel.js +180 -180
  259. package/src/utils/auth.js +111 -111
  260. package/src/utils/dateFormat.js +41 -41
  261. package/src/utils/errorcode.js +224 -224
  262. package/src/utils/fault.js +195 -195
  263. package/src/utils/faultcode.js +209 -209
  264. package/src/utils/index.js +69 -69
  265. package/src/utils/pedphasedesc.js +119 -119
  266. package/src/utils/phasedesc.js +124 -124
  267. package/src/utils/responseMessage.js +21 -21
  268. package/src/utils/validate.js +43 -43
  269. package/src/views/home.1.vue +479 -479
  270. package/src/views/home.vue +78 -78
  271. package/src/views/intersection.vue +276 -276
  272. package/src/views/overView.vue +41 -41
  273. package/src/views/schemeconfig.vue +154 -154
  274. package/static/apiconfig.json +336 -336
  275. package/static/styles/common.scss +19 -19
  276. package/static/styles/commonkanban.scss +87 -87
  277. package/static/styles/dark/index.scss +2 -2
  278. package/static/styles/dark/theme/element-dark.scss +42 -42
  279. package/static/styles/index.scss +84 -84
  280. package/static/styles/intersection.scss +170 -170
  281. package/static/styles/light/index.scss +2 -2
  282. package/static/styles/light/theme/element-light.scss +42 -42
  283. package/static/styles/overview.scss +371 -371
  284. package/static/styles/schemeconfig.scss +405 -405
  285. package/static/styles/stages.scss +64 -64
  286. package/static/token.json +2 -2
  287. package/test/e2e/custom-assertions/elementCount.js +27 -27
  288. package/test/e2e/nightwatch.conf.js +46 -46
  289. package/test/e2e/runner.js +48 -48
  290. package/test/e2e/specs/test.js +19 -19
  291. package/test/unit/.eslintrc +7 -7
  292. package/test/unit/jest.conf.js +30 -30
  293. package/test/unit/setup.js +3 -3
  294. package/test/unit/specs/HelloWorld.spec.js +11 -11
@@ -1,518 +1,518 @@
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
- :devStatus="devStatus"
19
- :agentId="agentId"
20
- :graphicMode="true"
21
- :roadDirection="roadDirection"
22
- :modeName="modeName !== '' ? modeName : controlData.mode"
23
- :controlName="controlName !== '' ? controlName : controlData.control"
24
- :isShowMode="isShowMode"
25
- :isShowState="isShowState"
26
- :isShowInterval="isShowInterval"
27
- @onSelectStages="onSelectStages"/>
28
- </div>
29
- </template>
30
- <script>
31
- import IntersectionMap from '../IntersectionMap'
32
- import { getMessageByCode } from '../../../utils/responseMessage'
33
- import { getTscControl, queryDevice, putTscControl } from '../../../api/control.js'
34
- import { registerMessage, uploadSingleTscParam } from '../../../api/param'
35
- import { getIframdevid, setIframdevid, setToken, setHost } from '../../../utils/auth.js'
36
- import ControlFormat from '../../../utils/ControlFormat.js'
37
- export default {
38
- name: 'intersection-with-interface',
39
- components: {
40
- IntersectionMap
41
- },
42
- data () {
43
- return {
44
- controlData: {},
45
- boxVisible: false,
46
- dialogWidth: '100%',
47
- crossStatusData: {}, // 路口状态数据
48
- devStatus: 1,
49
- isResend: true,
50
- intervalFlag: true,
51
- phaseControlTimer: null, // 定时器
52
- registerMessageTimer: null // 延时器
53
- }
54
- },
55
- props: {
56
- reqUrl: {
57
- type: String,
58
- default: ''
59
- },
60
- AgentId: {
61
- type: String,
62
- default: '0'
63
- },
64
- Token: {
65
- type: String,
66
- default: ''
67
- },
68
- roadDirection: {
69
- type: String,
70
- default: 'right'
71
- },
72
- isShowInterval: {
73
- type: Boolean,
74
- default: true
75
- },
76
- isShowState: {
77
- type: Boolean,
78
- devault: false
79
- },
80
- isShowMode: {
81
- type: Boolean,
82
- default: false
83
- },
84
- modeName: {
85
- type: String,
86
- default: ''
87
- },
88
- controlName: {
89
- type: String,
90
- default: ''
91
- }
92
- },
93
- watch: {
94
- AgentId: {
95
- handler: function (val, oldVal) {
96
- this.agentId = val
97
- },
98
- // 深度观察监听
99
- deep: true
100
- },
101
- Token: {
102
- handler: function (val) {
103
- this.setPropsToken(val)
104
- }
105
- }
106
- },
107
- methods: {
108
- oncancle () {
109
- this.boxVisible = false
110
- },
111
- handleOpenConfigPanel () {
112
- this.boxVisible = true
113
- },
114
- setDialogWidth () {
115
- var val = document.body.offsetWidth
116
- const def = 1200 // 默认宽度
117
- if (val < def) {
118
- this.dialogWidth = '100%'
119
- } else {
120
- this.dialogWidth = def + 'px'
121
- }
122
- },
123
- resetIntersectionMap () {
124
- this.setPropsToken(this.Token)
125
- this.firstInit()
126
- this.$refs.intersectionMap.resetCrossDiagram()
127
- this.initData()
128
- },
129
- registerMessage () {
130
- registerMessage(this.AgentId).then(data => {
131
- if (!data.data.success) {
132
- this.devStatus = 2
133
- let parrenterror = getMessageByCode(data.data.code, this.$i18n.locale)
134
- if (data.data.data) {
135
- // 子类型错误
136
- let childErrorCode = data.data.data.errorCode
137
- if (childErrorCode) {
138
- let childerror = getMessageByCode(data.data.data.errorCode, this.$i18n.locale)
139
- this.$message.error(parrenterror + ',' + childerror)
140
- }
141
- } else {
142
- this.$message.error(parrenterror)
143
- }
144
- if (this.isResend) {
145
- this.reSend()
146
- }
147
- return
148
- }
149
- this.$emit('registerMessage', data)
150
- this.devStatus = 3
151
- this.clearPatternInterval() // 清除其他定时器
152
- this.phaseControlTimer = setInterval(() => {
153
- if (this.intervalFlag) {
154
- this.initData()
155
- }
156
- }, 1000)
157
- })
158
- },
159
- reSend () { // 设备掉线重连机制
160
- this.devStatus = 1
161
- this.clearRegisterMessageTimer()
162
- this.registerMessageTimer = setTimeout(() => {
163
- this.reconnectionDev()
164
- }, 5000)
165
- },
166
- clearPatternInterval () {
167
- if (this.phaseControlTimer !== null) {
168
- clearInterval(this.phaseControlTimer) // 清除定时器
169
- this.phaseControlTimer = null
170
- }
171
- },
172
- clearRegisterMessageTimer () {
173
- if (this.registerMessageTimer !== null) {
174
- clearTimeout(this.registerMessageTimer) // 清除延时器
175
- this.registerMessageTimer = null
176
- }
177
- },
178
- initData () {
179
- this.intervalFlag = false
180
- let iframdevid = getIframdevid()
181
- console.log(iframdevid)
182
- let startTime = new Date().getTime()
183
- getTscControl(this.AgentId).then((data) => {
184
- let endTime = new Date().getTime()
185
- let diffTime = endTime - startTime
186
- this.responseTime = diffTime
187
- this.intervalFlag = true
188
- if (!data.data.success) {
189
- if (data.data.code === '4003') {
190
- this.devStatus = 2
191
- this.clearPatternInterval() // 清除其他定时器
192
- this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
193
- if (this.isResend) {
194
- this.reSend()
195
- }
196
- return
197
- }
198
- let parrenterror = getMessageByCode(data.data.code, this.$i18n.locale)
199
- if (data.data.data) {
200
- // 子类型错误
201
- let childErrorCode = data.data.data.errorCode
202
- if (childErrorCode) {
203
- let childerror = getMessageByCode(data.data.data.errorCode, this.$i18n.locale)
204
- this.$message.error(parrenterror + ',' + childerror)
205
- }
206
- } else {
207
- this.$message.error(parrenterror)
208
- }
209
- this.clearPatternInterval() // 清除其他定时器
210
- if (this.isResend) {
211
- this.reSend()
212
- }
213
- return
214
- }
215
- this.crossStatusData = JSON.parse(JSON.stringify(data.data.data.data))
216
- let param = JSON.parse(JSON.stringify(data.data.data.data))
217
- // this.controlData = this.handleGetData(param)
218
- this.controlData = this.controlFormat.handleGetData(param)
219
- this.$emit('getTscControl', data)
220
- }).catch(error => {
221
- this.$message.error(error)
222
- console.log(error)
223
- })
224
- },
225
- reconnectionDev () {
226
- this.registerMessage()
227
- },
228
- queryDevParams () {
229
- let _this = this
230
- queryDevice(this.AgentId).then(res => {
231
- if (!res.data.success) {
232
- _this.$message.error(getMessageByCode(res.data.code, _this.$i18n.locale))
233
- return
234
- }
235
- let devParams = res.data.data.jsonparam
236
- _this.ip = devParams.ip
237
- _this.port = String(devParams.port)
238
- _this.protocol = res.data.data.protocol
239
- _this.agentId = res.data.data.agentid
240
- if (res.data.data.name) {
241
- _this.agentName = res.data.data.name
242
- }
243
- _this.platform = res.data.data.platform
244
- _this.$refs.intersectionMap.resetCrossDiagram()
245
- _this.registerMessage() // 注册消息
246
- _this.$emit('queryDevice', res)
247
- })
248
- },
249
- firstInit () {
250
- if (this.$route.query !== undefined && Object.keys(this.$route.query).length) {
251
- this.agentId = this.$route.query.agentid
252
- setIframdevid(this.agentId)
253
- this.registerMessage() // 注册消息
254
- } else {
255
- this.queryDevParams() // 查询设备信息
256
- }
257
- },
258
- destroyIntersectionMap () {
259
- this.isResend = false
260
- this.clearPatternInterval() // 清除定时器
261
- this.clearRegisterMessageTimer() // 清除定时器
262
- },
263
- setPropsToken (token) {
264
- // 获取组件外传入的token,便于独立组件调用接口
265
- if (token && token !== '') {
266
- setToken(token)
267
- }
268
- },
269
- setHost (host) {
270
- // 获取组件外传入的token,便于独立组件调用接口
271
- if (host && host !== '') {
272
- setHost(host)
273
- }
274
- },
275
- async doPatternCommit (control) {
276
- let that = this
277
- let resData
278
- await putTscControl(control, this.agentId).then(data => {
279
- resData = data
280
- let success = 0
281
- if (!data.data.success) {
282
- that.$message.error(getMessageByCode(data.data.code, that.$i18n.locale))
283
- return
284
- }
285
- if (data.data.data && data.data.data.data) {
286
- success = data.data.data.data.success
287
- if (success !== 0) {
288
- let errormsg = 'openatccomponents.overview.putTscControlError' + success
289
- that.$message.error(this.$t(errormsg))
290
- return
291
- }
292
- }
293
- // this.closeManualModal()
294
- if ((that.currModel === 5 || that.currModel === 6 || that.currModel === 10 || that.currModel === 12) && (that.preselectModel === 6 || that.preselectModel === 10 || that.preselectModel === 12)) {
295
- that.$message.success(this.$t('openatccomponents.overview.nextcycleeffic'))
296
- return
297
- }
298
- if (that.preselectModel === 4) {
299
- that.$message.success(this.$t('openatccomponents.overview.transitioneffic'))
300
- return
301
- }
302
- if (success === 0) {
303
- that.$message.success(this.$t('openatccomponents.common.download'))
304
- }
305
- }).catch(error => {
306
- that.$message.error(error)
307
- console.log(error)
308
- })
309
- return resData
310
- },
311
- async getTscControlInfo () {
312
- await getTscControl(this.agentId).then((data) => {
313
- let res = data
314
- this.controlInfo = {
315
- tscData: null,
316
- stageData: null,
317
- controlData: null
318
- }
319
- if (!data.data.success) {
320
- if (data.data.code === '4003') {
321
- this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
322
- return
323
- }
324
- let parrenterror = getMessageByCode(data.data.code, this.$i18n.locale)
325
- if (data.data.data) {
326
- // 子类型错误
327
- let childErrorCode = data.data.data.errorCode
328
- if (childErrorCode) {
329
- let childerror = getMessageByCode(data.data.data.errorCode, this.$i18n.locale)
330
- this.$message.error(parrenterror + ',' + childerror)
331
- }
332
- } else {
333
- this.$message.error(parrenterror)
334
- }
335
- return
336
- }
337
- let tscData = JSON.parse(JSON.stringify(res.data.data))
338
- let stageData = []
339
- // stageData = this.handleStageData(tscData) // 处理阶段(驻留)stage数据
340
- let controlData = {}
341
- let param = Object.assign({}, tscData)
342
- controlData = this.controlFormat.handleGetData(param)
343
- this.controlData = controlData
344
- this.controlInfo = {
345
- tscData: tscData,
346
- stageData: stageData,
347
- controlData: controlData
348
- }
349
- }).catch(error => {
350
- this.$message.error(error)
351
- console.log(error)
352
- })
353
- },
354
- async getPhase () {
355
- await uploadSingleTscParam('phase', this.agentId).then(data => {
356
- let res = data.data
357
- if (!res.success) {
358
- if (res.code === '4003') {
359
- this.$message.error(this.$t('openatccomponents.errorTip.devicenotonline'))
360
- return
361
- }
362
- this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
363
- return
364
- }
365
- this.phaseList = res.data.data.phaseList
366
- })
367
- },
368
- async getPhaseInfo () {
369
- await this.getPhase()
370
- let res = [...this.phaseList]
371
- return res
372
- },
373
- async getControlInfo () {
374
- await this.getTscControlInfo()
375
- // let res = this.controlInfo.controlData
376
- let res = this.controlInfo.tscData
377
- return res
378
- },
379
- clearInterVals () {
380
- this.clearPatternInterval() // 清除定时器
381
- this.clearRegisterMessageTimer() // 清除定时器
382
- },
383
- onSelectStages (value) {
384
- this.currentStage = value
385
- this.$emit('onSelectStages', value)
386
- },
387
- async lockPhase (reqData) {
388
- let res = await this.doPatternCommit(reqData)
389
- return res
390
- },
391
- async unlockPhase (reqData) {
392
- let res = await this.doPatternCommit(reqData)
393
- return res
394
- },
395
- async changeControlPattern (reqData) {
396
- let res = await this.doPatternCommit(reqData)
397
- return res
398
- },
399
- getBusPos () {
400
- // 公交相位信息
401
- this.busPhaseData = []
402
- this.phaseList.forEach((ele, i) => {
403
- if (ele.controltype >= 3 && ele.controltype <= 5) {
404
- ele.direction.forEach((dir, index) => {
405
- // 车道相位
406
- this.busPhaseData.push({
407
- // key: this.CrossDiagramMgr.getUniqueKey('busphase'),
408
- phaseid: ele.id, // 相位id,用于对应相位状态
409
- id: dir, // 接口返回的dir字段,对应前端定义的相位方向id,唯一标识
410
- name: this.PhaseDataModel.getBusPhasePos(dir).name,
411
- controltype: ele.controltype
412
- })
413
- })
414
- }
415
- })
416
- let result = []
417
- let obj = {}
418
- for (var i = 0; i < this.busPhaseData.length; i++) {
419
- if (!obj[this.busPhaseData[i].phaseid]) {
420
- result.push(this.busPhaseData[i])
421
- obj[this.busPhaseData[i].phaseid] = true
422
- }
423
- }
424
- this.busPhaseData = result
425
- },
426
- handleStageData (data) {
427
- this.getBusPos()
428
- this.stagesList = []
429
- let busPhaseData = this.busPhaseData
430
- let stages = data.stages
431
- if (!stages) return
432
- let stagesTemp = []
433
- for (let stage of stages) {
434
- let tempList = []
435
- let directionList = []
436
- let stageControType = 0
437
- let peddirections = []
438
- for (let stg of stage) {
439
- let currPhase = this.phaseList.filter((item) => {
440
- return item.id === stg
441
- })[0]
442
- if (currPhase !== undefined) {
443
- directionList = [...currPhase.direction, ...directionList]
444
- }
445
- for (let walk of this.sidewalkPhaseData) {
446
- if (stg === walk.phaseid) {
447
- peddirections.push(...currPhase.peddirection)
448
- peddirections = Array.from(new Set(peddirections))
449
- }
450
- }
451
- for (let busPhase of busPhaseData) {
452
- if (stg === busPhase.phaseid) {
453
- stageControType = busPhase.controltype
454
- }
455
- }
456
- }
457
- directionList = [...new Set(directionList)]
458
- if (directionList.length === 0) return
459
- tempList = directionList.map(dir => ({
460
- id: dir,
461
- color: '#606266',
462
- controltype: stageControType,
463
- peddirection: peddirections
464
- }))
465
- stagesTemp.push(tempList)
466
- }
467
- this.stagesList = JSON.parse(JSON.stringify(stagesTemp))
468
- // 相位变化时触发回调
469
- if (this.currentStage !== data.current_stage) {
470
- this.$emit('onPhaseChange', this.stagesList, data.current_stage)
471
- }
472
- this.currentStage = data.current_stage
473
- }
474
- },
475
- created () {
476
- this.agentId = this.AgentId
477
- this.setDialogWidth()
478
- this.setHost(this.reqUrl)
479
- this.controlFormat = new ControlFormat()
480
- },
481
- mounted () {
482
- setIframdevid(this.AgentId)
483
- this.resetIntersectionMap()
484
- window.onresize = () => {
485
- return (() => {
486
- this.setDialogWidth()
487
- })()
488
- }
489
- },
490
- destroyed () {
491
- this.destroyIntersectionMap()
492
- }
493
- }
494
- </script>
495
- <style lang="scss">
496
- .abow_dialog {
497
- display: flex;
498
- justify-content: center;
499
- align-items: Center;
500
- overflow: hidden;
501
- .el-dialog {
502
- margin: 0 auto !important;
503
- height: 90%;
504
- overflow: hidden;
505
- .el-dialog__body {
506
- position: absolute;
507
- left: 0;
508
- top: 54px;
509
- bottom: 0;
510
- right: 0;
511
- padding: 0;
512
- z-index: 1;
513
- overflow-y: auto;
514
- overflow-x: auto;
515
- }
516
- }
517
- }
518
- </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
+ :devStatus="devStatus"
19
+ :agentId="agentId"
20
+ :graphicMode="true"
21
+ :roadDirection="roadDirection"
22
+ :modeName="modeName !== '' ? modeName : controlData.mode"
23
+ :controlName="controlName !== '' ? controlName : controlData.control"
24
+ :isShowMode="isShowMode"
25
+ :isShowState="isShowState"
26
+ :isShowInterval="isShowInterval"
27
+ @onSelectStages="onSelectStages"/>
28
+ </div>
29
+ </template>
30
+ <script>
31
+ import IntersectionMap from '../IntersectionMap'
32
+ import { getMessageByCode } from '../../../utils/responseMessage'
33
+ import { getTscControl, queryDevice, putTscControl } from '../../../api/control.js'
34
+ import { registerMessage, uploadSingleTscParam } from '../../../api/param'
35
+ import { getIframdevid, setIframdevid, setToken, setHost } from '../../../utils/auth.js'
36
+ import ControlFormat from '../../../utils/ControlFormat.js'
37
+ export default {
38
+ name: 'intersection-with-interface',
39
+ components: {
40
+ IntersectionMap
41
+ },
42
+ data () {
43
+ return {
44
+ controlData: {},
45
+ boxVisible: false,
46
+ dialogWidth: '100%',
47
+ crossStatusData: {}, // 路口状态数据
48
+ devStatus: 1,
49
+ isResend: true,
50
+ intervalFlag: true,
51
+ phaseControlTimer: null, // 定时器
52
+ registerMessageTimer: null // 延时器
53
+ }
54
+ },
55
+ props: {
56
+ reqUrl: {
57
+ type: String,
58
+ default: ''
59
+ },
60
+ AgentId: {
61
+ type: String,
62
+ default: '0'
63
+ },
64
+ Token: {
65
+ type: String,
66
+ default: ''
67
+ },
68
+ roadDirection: {
69
+ type: String,
70
+ default: 'right'
71
+ },
72
+ isShowInterval: {
73
+ type: Boolean,
74
+ default: true
75
+ },
76
+ isShowState: {
77
+ type: Boolean,
78
+ devault: false
79
+ },
80
+ isShowMode: {
81
+ type: Boolean,
82
+ default: false
83
+ },
84
+ modeName: {
85
+ type: String,
86
+ default: ''
87
+ },
88
+ controlName: {
89
+ type: String,
90
+ default: ''
91
+ }
92
+ },
93
+ watch: {
94
+ AgentId: {
95
+ handler: function (val, oldVal) {
96
+ this.agentId = val
97
+ },
98
+ // 深度观察监听
99
+ deep: true
100
+ },
101
+ Token: {
102
+ handler: function (val) {
103
+ this.setPropsToken(val)
104
+ }
105
+ }
106
+ },
107
+ methods: {
108
+ oncancle () {
109
+ this.boxVisible = false
110
+ },
111
+ handleOpenConfigPanel () {
112
+ this.boxVisible = true
113
+ },
114
+ setDialogWidth () {
115
+ var val = document.body.offsetWidth
116
+ const def = 1200 // 默认宽度
117
+ if (val < def) {
118
+ this.dialogWidth = '100%'
119
+ } else {
120
+ this.dialogWidth = def + 'px'
121
+ }
122
+ },
123
+ resetIntersectionMap () {
124
+ this.setPropsToken(this.Token)
125
+ this.firstInit()
126
+ this.$refs.intersectionMap.resetCrossDiagram()
127
+ this.initData()
128
+ },
129
+ registerMessage () {
130
+ registerMessage(this.AgentId).then(data => {
131
+ if (!data.data.success) {
132
+ this.devStatus = 2
133
+ let parrenterror = getMessageByCode(data.data.code, this.$i18n.locale)
134
+ if (data.data.data) {
135
+ // 子类型错误
136
+ let childErrorCode = data.data.data.errorCode
137
+ if (childErrorCode) {
138
+ let childerror = getMessageByCode(data.data.data.errorCode, this.$i18n.locale)
139
+ this.$message.error(parrenterror + ',' + childerror)
140
+ }
141
+ } else {
142
+ this.$message.error(parrenterror)
143
+ }
144
+ if (this.isResend) {
145
+ this.reSend()
146
+ }
147
+ return
148
+ }
149
+ this.$emit('registerMessage', data)
150
+ this.devStatus = 3
151
+ this.clearPatternInterval() // 清除其他定时器
152
+ this.phaseControlTimer = setInterval(() => {
153
+ if (this.intervalFlag) {
154
+ this.initData()
155
+ }
156
+ }, 1000)
157
+ })
158
+ },
159
+ reSend () { // 设备掉线重连机制
160
+ this.devStatus = 1
161
+ this.clearRegisterMessageTimer()
162
+ this.registerMessageTimer = setTimeout(() => {
163
+ this.reconnectionDev()
164
+ }, 5000)
165
+ },
166
+ clearPatternInterval () {
167
+ if (this.phaseControlTimer !== null) {
168
+ clearInterval(this.phaseControlTimer) // 清除定时器
169
+ this.phaseControlTimer = null
170
+ }
171
+ },
172
+ clearRegisterMessageTimer () {
173
+ if (this.registerMessageTimer !== null) {
174
+ clearTimeout(this.registerMessageTimer) // 清除延时器
175
+ this.registerMessageTimer = null
176
+ }
177
+ },
178
+ initData () {
179
+ this.intervalFlag = false
180
+ let iframdevid = getIframdevid()
181
+ console.log(iframdevid)
182
+ let startTime = new Date().getTime()
183
+ getTscControl(this.AgentId).then((data) => {
184
+ let endTime = new Date().getTime()
185
+ let diffTime = endTime - startTime
186
+ this.responseTime = diffTime
187
+ this.intervalFlag = true
188
+ if (!data.data.success) {
189
+ if (data.data.code === '4003') {
190
+ this.devStatus = 2
191
+ this.clearPatternInterval() // 清除其他定时器
192
+ this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
193
+ if (this.isResend) {
194
+ this.reSend()
195
+ }
196
+ return
197
+ }
198
+ let parrenterror = getMessageByCode(data.data.code, this.$i18n.locale)
199
+ if (data.data.data) {
200
+ // 子类型错误
201
+ let childErrorCode = data.data.data.errorCode
202
+ if (childErrorCode) {
203
+ let childerror = getMessageByCode(data.data.data.errorCode, this.$i18n.locale)
204
+ this.$message.error(parrenterror + ',' + childerror)
205
+ }
206
+ } else {
207
+ this.$message.error(parrenterror)
208
+ }
209
+ this.clearPatternInterval() // 清除其他定时器
210
+ if (this.isResend) {
211
+ this.reSend()
212
+ }
213
+ return
214
+ }
215
+ this.crossStatusData = JSON.parse(JSON.stringify(data.data.data.data))
216
+ let param = JSON.parse(JSON.stringify(data.data.data.data))
217
+ // this.controlData = this.handleGetData(param)
218
+ this.controlData = this.controlFormat.handleGetData(param)
219
+ this.$emit('getTscControl', data)
220
+ }).catch(error => {
221
+ this.$message.error(error)
222
+ console.log(error)
223
+ })
224
+ },
225
+ reconnectionDev () {
226
+ this.registerMessage()
227
+ },
228
+ queryDevParams () {
229
+ let _this = this
230
+ queryDevice(this.AgentId).then(res => {
231
+ if (!res.data.success) {
232
+ _this.$message.error(getMessageByCode(res.data.code, _this.$i18n.locale))
233
+ return
234
+ }
235
+ let devParams = res.data.data.jsonparam
236
+ _this.ip = devParams.ip
237
+ _this.port = String(devParams.port)
238
+ _this.protocol = res.data.data.protocol
239
+ _this.agentId = res.data.data.agentid
240
+ if (res.data.data.name) {
241
+ _this.agentName = res.data.data.name
242
+ }
243
+ _this.platform = res.data.data.platform
244
+ _this.$refs.intersectionMap.resetCrossDiagram()
245
+ _this.registerMessage() // 注册消息
246
+ _this.$emit('queryDevice', res)
247
+ })
248
+ },
249
+ firstInit () {
250
+ if (this.$route.query !== undefined && Object.keys(this.$route.query).length) {
251
+ this.agentId = this.$route.query.agentid
252
+ setIframdevid(this.agentId)
253
+ this.registerMessage() // 注册消息
254
+ } else {
255
+ this.queryDevParams() // 查询设备信息
256
+ }
257
+ },
258
+ destroyIntersectionMap () {
259
+ this.isResend = false
260
+ this.clearPatternInterval() // 清除定时器
261
+ this.clearRegisterMessageTimer() // 清除定时器
262
+ },
263
+ setPropsToken (token) {
264
+ // 获取组件外传入的token,便于独立组件调用接口
265
+ if (token && token !== '') {
266
+ setToken(token)
267
+ }
268
+ },
269
+ setHost (host) {
270
+ // 获取组件外传入的token,便于独立组件调用接口
271
+ if (host && host !== '') {
272
+ setHost(host)
273
+ }
274
+ },
275
+ async doPatternCommit (control) {
276
+ let that = this
277
+ let resData
278
+ await putTscControl(control, this.agentId).then(data => {
279
+ resData = data
280
+ let success = 0
281
+ if (!data.data.success) {
282
+ that.$message.error(getMessageByCode(data.data.code, that.$i18n.locale))
283
+ return
284
+ }
285
+ if (data.data.data && data.data.data.data) {
286
+ success = data.data.data.data.success
287
+ if (success !== 0) {
288
+ let errormsg = 'openatccomponents.overview.putTscControlError' + success
289
+ that.$message.error(this.$t(errormsg))
290
+ return
291
+ }
292
+ }
293
+ // this.closeManualModal()
294
+ if ((that.currModel === 5 || that.currModel === 6 || that.currModel === 10 || that.currModel === 12) && (that.preselectModel === 6 || that.preselectModel === 10 || that.preselectModel === 12)) {
295
+ that.$message.success(this.$t('openatccomponents.overview.nextcycleeffic'))
296
+ return
297
+ }
298
+ if (that.preselectModel === 4) {
299
+ that.$message.success(this.$t('openatccomponents.overview.transitioneffic'))
300
+ return
301
+ }
302
+ if (success === 0) {
303
+ that.$message.success(this.$t('openatccomponents.common.download'))
304
+ }
305
+ }).catch(error => {
306
+ that.$message.error(error)
307
+ console.log(error)
308
+ })
309
+ return resData
310
+ },
311
+ async getTscControlInfo () {
312
+ await getTscControl(this.agentId).then((data) => {
313
+ let res = data
314
+ this.controlInfo = {
315
+ tscData: null,
316
+ stageData: null,
317
+ controlData: null
318
+ }
319
+ if (!data.data.success) {
320
+ if (data.data.code === '4003') {
321
+ this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
322
+ return
323
+ }
324
+ let parrenterror = getMessageByCode(data.data.code, this.$i18n.locale)
325
+ if (data.data.data) {
326
+ // 子类型错误
327
+ let childErrorCode = data.data.data.errorCode
328
+ if (childErrorCode) {
329
+ let childerror = getMessageByCode(data.data.data.errorCode, this.$i18n.locale)
330
+ this.$message.error(parrenterror + ',' + childerror)
331
+ }
332
+ } else {
333
+ this.$message.error(parrenterror)
334
+ }
335
+ return
336
+ }
337
+ let tscData = JSON.parse(JSON.stringify(res.data.data))
338
+ let stageData = []
339
+ // stageData = this.handleStageData(tscData) // 处理阶段(驻留)stage数据
340
+ let controlData = {}
341
+ let param = Object.assign({}, tscData)
342
+ controlData = this.controlFormat.handleGetData(param)
343
+ this.controlData = controlData
344
+ this.controlInfo = {
345
+ tscData: tscData,
346
+ stageData: stageData,
347
+ controlData: controlData
348
+ }
349
+ }).catch(error => {
350
+ this.$message.error(error)
351
+ console.log(error)
352
+ })
353
+ },
354
+ async getPhase () {
355
+ await uploadSingleTscParam('phase', this.agentId).then(data => {
356
+ let res = data.data
357
+ if (!res.success) {
358
+ if (res.code === '4003') {
359
+ this.$message.error(this.$t('openatccomponents.errorTip.devicenotonline'))
360
+ return
361
+ }
362
+ this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
363
+ return
364
+ }
365
+ this.phaseList = res.data.data.phaseList
366
+ })
367
+ },
368
+ async getPhaseInfo () {
369
+ await this.getPhase()
370
+ let res = [...this.phaseList]
371
+ return res
372
+ },
373
+ async getControlInfo () {
374
+ await this.getTscControlInfo()
375
+ // let res = this.controlInfo.controlData
376
+ let res = this.controlInfo.tscData
377
+ return res
378
+ },
379
+ clearInterVals () {
380
+ this.clearPatternInterval() // 清除定时器
381
+ this.clearRegisterMessageTimer() // 清除定时器
382
+ },
383
+ onSelectStages (value) {
384
+ this.currentStage = value
385
+ this.$emit('onSelectStages', value)
386
+ },
387
+ async lockPhase (reqData) {
388
+ let res = await this.doPatternCommit(reqData)
389
+ return res
390
+ },
391
+ async unlockPhase (reqData) {
392
+ let res = await this.doPatternCommit(reqData)
393
+ return res
394
+ },
395
+ async changeControlPattern (reqData) {
396
+ let res = await this.doPatternCommit(reqData)
397
+ return res
398
+ },
399
+ getBusPos () {
400
+ // 公交相位信息
401
+ this.busPhaseData = []
402
+ this.phaseList.forEach((ele, i) => {
403
+ if (ele.controltype >= 3 && ele.controltype <= 5) {
404
+ ele.direction.forEach((dir, index) => {
405
+ // 车道相位
406
+ this.busPhaseData.push({
407
+ // key: this.CrossDiagramMgr.getUniqueKey('busphase'),
408
+ phaseid: ele.id, // 相位id,用于对应相位状态
409
+ id: dir, // 接口返回的dir字段,对应前端定义的相位方向id,唯一标识
410
+ name: this.PhaseDataModel.getBusPhasePos(dir).name,
411
+ controltype: ele.controltype
412
+ })
413
+ })
414
+ }
415
+ })
416
+ let result = []
417
+ let obj = {}
418
+ for (var i = 0; i < this.busPhaseData.length; i++) {
419
+ if (!obj[this.busPhaseData[i].phaseid]) {
420
+ result.push(this.busPhaseData[i])
421
+ obj[this.busPhaseData[i].phaseid] = true
422
+ }
423
+ }
424
+ this.busPhaseData = result
425
+ },
426
+ handleStageData (data) {
427
+ this.getBusPos()
428
+ this.stagesList = []
429
+ let busPhaseData = this.busPhaseData
430
+ let stages = data.stages
431
+ if (!stages) return
432
+ let stagesTemp = []
433
+ for (let stage of stages) {
434
+ let tempList = []
435
+ let directionList = []
436
+ let stageControType = 0
437
+ let peddirections = []
438
+ for (let stg of stage) {
439
+ let currPhase = this.phaseList.filter((item) => {
440
+ return item.id === stg
441
+ })[0]
442
+ if (currPhase !== undefined) {
443
+ directionList = [...currPhase.direction, ...directionList]
444
+ }
445
+ for (let walk of this.sidewalkPhaseData) {
446
+ if (stg === walk.phaseid) {
447
+ peddirections.push(...currPhase.peddirection)
448
+ peddirections = Array.from(new Set(peddirections))
449
+ }
450
+ }
451
+ for (let busPhase of busPhaseData) {
452
+ if (stg === busPhase.phaseid) {
453
+ stageControType = busPhase.controltype
454
+ }
455
+ }
456
+ }
457
+ directionList = [...new Set(directionList)]
458
+ if (directionList.length === 0) return
459
+ tempList = directionList.map(dir => ({
460
+ id: dir,
461
+ color: '#606266',
462
+ controltype: stageControType,
463
+ peddirection: peddirections
464
+ }))
465
+ stagesTemp.push(tempList)
466
+ }
467
+ this.stagesList = JSON.parse(JSON.stringify(stagesTemp))
468
+ // 相位变化时触发回调
469
+ if (this.currentStage !== data.current_stage) {
470
+ this.$emit('onPhaseChange', this.stagesList, data.current_stage)
471
+ }
472
+ this.currentStage = data.current_stage
473
+ }
474
+ },
475
+ created () {
476
+ this.agentId = this.AgentId
477
+ this.setDialogWidth()
478
+ this.setHost(this.reqUrl)
479
+ this.controlFormat = new ControlFormat()
480
+ },
481
+ mounted () {
482
+ setIframdevid(this.AgentId)
483
+ this.resetIntersectionMap()
484
+ window.onresize = () => {
485
+ return (() => {
486
+ this.setDialogWidth()
487
+ })()
488
+ }
489
+ },
490
+ destroyed () {
491
+ this.destroyIntersectionMap()
492
+ }
493
+ }
494
+ </script>
495
+ <style lang="scss">
496
+ .abow_dialog {
497
+ display: flex;
498
+ justify-content: center;
499
+ align-items: Center;
500
+ overflow: hidden;
501
+ .el-dialog {
502
+ margin: 0 auto !important;
503
+ height: 90%;
504
+ overflow: hidden;
505
+ .el-dialog__body {
506
+ position: absolute;
507
+ left: 0;
508
+ top: 54px;
509
+ bottom: 0;
510
+ right: 0;
511
+ padding: 0;
512
+ z-index: 1;
513
+ overflow-y: auto;
514
+ overflow-x: auto;
515
+ }
516
+ }
517
+ }
518
+ </style>