openatc-components 0.1.0 → 0.1.1

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 (383) 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 +94 -94
  23. package/package/kisscomps/components/BoardCard/index.js +2 -2
  24. package/package/kisscomps/components/Channelization/Channelization.vue +544 -544
  25. package/package/kisscomps/components/Channelization/index.js +2 -2
  26. package/package/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +349 -349
  27. package/package/kisscomps/components/ChannelizationFlowStatistic/index.js +2 -2
  28. package/package/kisscomps/components/ChannelizationWithInterface/ChannelizationWithInterface.vue +494 -494
  29. package/package/kisscomps/components/ChannelizationWithInterface/index.js +2 -2
  30. package/package/kisscomps/components/CommonKanban/CommonKanban.vue +118 -118
  31. package/package/kisscomps/components/CommonKanban/index.js +2 -2
  32. package/package/kisscomps/components/DrawChannelization/drawsvg/basicCoordInfo.vue +161 -113
  33. package/package/kisscomps/components/DrawChannelization/drawsvg/channelizationElements.vue +255 -255
  34. package/package/kisscomps/components/DrawChannelization/drawsvg/detectorAssociatedComponent.vue +152 -152
  35. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/TextBox.vue +91 -91
  36. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/crossMap.vue +194 -194
  37. package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/editText.vue +108 -108
  38. package/package/kisscomps/components/DrawChannelization/drawsvg/firstImportCrossmap.vue +51 -51
  39. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/countdownSvg.vue +224 -224
  40. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorChart.vue +247 -247
  41. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorIconSvg.vue +210 -210
  42. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/laneIcon.vue +72 -72
  43. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +455 -455
  44. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/pedroadIconSvg.vue +219 -219
  45. package/package/kisscomps/components/DrawChannelization/drawsvg/importDialog.vue +74 -74
  46. package/package/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +989 -989
  47. package/package/kisscomps/components/DrawChannelization/drawsvg/index.vue +110 -110
  48. package/package/kisscomps/components/DrawChannelization/drawsvg/laneEditPanel.vue +666 -666
  49. package/package/kisscomps/components/DrawChannelization/drawsvg/overlapAssociatedComponent.vue +157 -157
  50. package/package/kisscomps/components/DrawChannelization/drawsvg/phaseAssociatedComponent.vue +157 -157
  51. package/package/kisscomps/components/DrawChannelization/drawsvg/table.vue +99 -99
  52. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/loadutils.js +87 -87
  53. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/phaseDataModel.js +32 -32
  54. package/package/kisscomps/components/DrawChannelization/drawsvg/utils/phasePos.json +20 -20
  55. package/package/kisscomps/components/DrawChannelization/index.js +2 -2
  56. package/package/kisscomps/components/DrawChannelization/phaseDataMgr.js +278 -278
  57. package/package/kisscomps/components/ExpendConfig/ExpendConfig.vue +114 -114
  58. package/package/kisscomps/components/ExpendConfig/index.js +2 -2
  59. package/package/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +170 -170
  60. package/package/kisscomps/components/FaultDetailModal/index.js +2 -2
  61. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +497 -497
  62. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
  63. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +300 -300
  64. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +288 -288
  65. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +391 -391
  66. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +336 -336
  67. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +345 -345
  68. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +389 -389
  69. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1179 -1179
  70. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +402 -402
  71. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +361 -361
  72. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +368 -368
  73. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +475 -475
  74. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +494 -494
  75. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +401 -401
  76. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +360 -360
  77. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +367 -367
  78. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +476 -476
  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/crossDiagram.vue +913 -913
  86. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/LphaseIconSvg.vue +112 -112
  87. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/phaseIconSvg.vue +112 -112
  88. package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +111 -111
  89. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
  90. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
  91. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.json +99 -99
  92. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +99 -99
  93. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
  94. package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/sidePos.json +99 -99
  95. package/package/kisscomps/components/IntersectionMap/crossDirection/utils.js +78 -78
  96. package/package/kisscomps/components/IntersectionMap/index.js +2 -2
  97. package/package/kisscomps/components/IntersectionMap/intersectionmap.vue +154 -154
  98. package/package/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +518 -518
  99. package/package/kisscomps/components/IntersectionWithInterface/index.js +2 -2
  100. package/package/kisscomps/components/KanBan/index.js +2 -2
  101. package/package/kisscomps/components/KanBan/kanban.vue +219 -219
  102. package/package/kisscomps/components/MessageBox/index.vue +96 -96
  103. package/package/kisscomps/components/OverLap/OverLap.vue +207 -207
  104. package/package/kisscomps/components/OverLap/index.js +2 -2
  105. package/package/kisscomps/components/PatternStatus/PatternStatus.vue +962 -962
  106. package/package/kisscomps/components/PatternStatus/index.js +2 -2
  107. package/package/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +423 -423
  108. package/package/kisscomps/components/PatternWalkSvg/index.js +2 -2
  109. package/package/kisscomps/components/PhaseMarker/index.js +6 -6
  110. package/package/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
  111. package/package/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
  112. package/package/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
  113. package/package/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
  114. package/package/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
  115. package/package/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
  116. package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +760 -760
  117. package/package/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +195 -195
  118. package/package/kisscomps/components/SchemeConfig/index.js +2 -2
  119. package/package/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +198 -198
  120. package/package/kisscomps/components/SchemeConfig/manualControlModal/index.vue +219 -219
  121. package/package/kisscomps/components/SchemeConfig/priorityControl/index.vue +190 -190
  122. package/package/kisscomps/components/SchemeConfig/priorityControl/utils.js +163 -163
  123. package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +263 -263
  124. package/package/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1387 -1387
  125. package/package/kisscomps/components/StageBord/StageBord.vue +242 -242
  126. package/package/kisscomps/components/StageBord/index.js +2 -2
  127. package/package/kisscomps/components/StageStatus/StageStatus.vue +310 -310
  128. package/package/kisscomps/components/StageStatus/index.js +2 -2
  129. package/package/kisscomps/components/Stages/index.vue +139 -139
  130. package/package/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
  131. package/package/kisscomps/components/SvgIcon/index.js +2 -2
  132. package/package/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +522 -522
  133. package/package/kisscomps/components/XRDDirSelector/index.js +2 -2
  134. package/package/kisscomps/components/overView/index.vue +679 -679
  135. package/package/kisscomps/components/patternList/index.js +2 -2
  136. package/package/kisscomps/components/patternList/patternList.vue +567 -567
  137. package/package/kisscomps/index.js +106 -106
  138. package/package/kissui.min.js +1 -1
  139. package/package.json +124 -124
  140. package/src/App.vue +24 -24
  141. package/src/EdgeMgr/EdgeModelBase.js +16 -16
  142. package/src/EdgeMgr/controller/crossDiagramMgr.js +120 -120
  143. package/src/api/authapi.js +31 -31
  144. package/src/api/config.js +21 -21
  145. package/src/api/control.js +76 -76
  146. package/src/api/cross.js +33 -33
  147. package/src/api/fault.js +66 -66
  148. package/src/api/index.js +24 -24
  149. package/src/api/login.js +46 -46
  150. package/src/api/optimize.js +72 -72
  151. package/src/api/param.js +154 -154
  152. package/src/api/passwdAssest.js +101 -101
  153. package/src/api/template.js +27 -27
  154. package/src/i18n/index.js +26 -26
  155. package/src/i18n/language/en.js +1225 -1225
  156. package/src/i18n/language/index.js +25 -25
  157. package/src/i18n/language/zh.js +1224 -1224
  158. package/src/icons/demo.css +539 -539
  159. package/src/icons/iconfont.css +835 -835
  160. package/src/icons/iconfont.json +1444 -1444
  161. package/src/icons/index.js +20 -20
  162. package/src/icons/svg/bendi.svg +110 -110
  163. package/src/icons/svg/bujin.svg +36 -36
  164. package/src/icons/svg/connectBlue.svg +7 -7
  165. package/src/icons/svg/currentvolume.svg +0 -0
  166. package/src/icons/svg/custom-BRTlane.svg +40 -40
  167. package/src/icons/svg/custom-buslane.svg +40 -40
  168. package/src/icons/svg/custom-detector.svg +12 -12
  169. package/src/icons/svg/custom-east-bottom.svg +32 -32
  170. package/src/icons/svg/custom-east-top.svg +32 -32
  171. package/src/icons/svg/custom-ewped.svg +35 -35
  172. package/src/icons/svg/custom-nonmotorizedlane.svg +40 -40
  173. package/src/icons/svg/custom-north-left.svg +32 -32
  174. package/src/icons/svg/custom-north-right.svg +32 -32
  175. package/src/icons/svg/custom-peddetector.svg +17 -17
  176. package/src/icons/svg/custom-snped.svg +35 -35
  177. package/src/icons/svg/custom-south-left.svg +32 -32
  178. package/src/icons/svg/custom-south-right.svg +32 -32
  179. package/src/icons/svg/custom-tramlane.svg +40 -40
  180. package/src/icons/svg/custom-vehiclebranch.svg +40 -40
  181. package/src/icons/svg/custom-vehiclemainroad.svg +41 -41
  182. package/src/icons/svg/custom-west-bottom.svg +32 -32
  183. package/src/icons/svg/custom-west-top.svg +32 -32
  184. package/src/icons/svg/custom-xlped.svg +14 -14
  185. package/src/icons/svg/custom-xrped.svg +14 -14
  186. package/src/icons/svg/cutRed.svg +7 -7
  187. package/src/icons/svg/cycle.svg +0 -0
  188. package/src/icons/svg/dingzhouqi.svg +34 -34
  189. package/src/icons/svg/ganyingkongzhi.svg +30 -30
  190. package/src/icons/svg/guandeng.svg +81 -81
  191. package/src/icons/svg/huangshan.svg +71 -71
  192. package/src/icons/svg/maincontrol.svg +0 -0
  193. package/src/icons/svg/manualcontrolbackground.svg +51 -51
  194. package/src/icons/svg/manualcontrolbackground1.svg +62 -62
  195. package/src/icons/svg/manualcontrolbackgrounden.svg +62 -62
  196. package/src/icons/svg/model.svg +0 -0
  197. package/src/icons/svg/phasediff.svg +0 -0
  198. package/src/icons/svg/quanhong.svg +86 -86
  199. package/src/icons/svg/shanghe.svg +11 -11
  200. package/src/icons/svg/shoudong.svg +103 -103
  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/BoardCard/BoardCard.vue +94 -94
  209. package/src/kisscomps/components/BoardCard/index.js +2 -2
  210. package/src/kisscomps/components/Channelization/Channelization.vue +544 -544
  211. package/src/kisscomps/components/Channelization/index.js +2 -2
  212. package/src/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +349 -349
  213. package/src/kisscomps/components/ChannelizationFlowStatistic/index.js +2 -2
  214. package/src/kisscomps/components/ChannelizationWithInterface/ChannelizationWithInterface.vue +494 -494
  215. package/src/kisscomps/components/ChannelizationWithInterface/index.js +2 -2
  216. package/src/kisscomps/components/CommonKanban/CommonKanban.vue +118 -118
  217. package/src/kisscomps/components/CommonKanban/index.js +2 -2
  218. package/src/kisscomps/components/DrawChannelization/drawsvg/basicCoordInfo.vue +161 -113
  219. package/src/kisscomps/components/DrawChannelization/drawsvg/channelizationElements.vue +255 -255
  220. package/src/kisscomps/components/DrawChannelization/drawsvg/detectorAssociatedComponent.vue +152 -152
  221. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/TextBox.vue +91 -91
  222. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/crossMap.vue +194 -194
  223. package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/editText.vue +108 -108
  224. package/src/kisscomps/components/DrawChannelization/drawsvg/firstImportCrossmap.vue +51 -51
  225. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/countdownSvg.vue +224 -224
  226. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorChart.vue +247 -247
  227. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/detectorIconSvg.vue +210 -210
  228. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/laneIcon.vue +72 -72
  229. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +455 -455
  230. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/pedroadIconSvg.vue +219 -219
  231. package/src/kisscomps/components/DrawChannelization/drawsvg/importDialog.vue +74 -74
  232. package/src/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +989 -989
  233. package/src/kisscomps/components/DrawChannelization/drawsvg/index.vue +110 -110
  234. package/src/kisscomps/components/DrawChannelization/drawsvg/laneEditPanel.vue +666 -666
  235. package/src/kisscomps/components/DrawChannelization/drawsvg/overlapAssociatedComponent.vue +157 -157
  236. package/src/kisscomps/components/DrawChannelization/drawsvg/phaseAssociatedComponent.vue +157 -157
  237. package/src/kisscomps/components/DrawChannelization/drawsvg/table.vue +99 -99
  238. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/loadutils.js +87 -87
  239. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/phaseDataModel.js +32 -32
  240. package/src/kisscomps/components/DrawChannelization/drawsvg/utils/phasePos.json +20 -20
  241. package/src/kisscomps/components/DrawChannelization/index.js +2 -2
  242. package/src/kisscomps/components/DrawChannelization/phaseDataMgr.js +278 -278
  243. package/src/kisscomps/components/ExpendConfig/ExpendConfig.vue +114 -114
  244. package/src/kisscomps/components/ExpendConfig/index.js +2 -2
  245. package/src/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +170 -170
  246. package/src/kisscomps/components/FaultDetailModal/index.js +2 -2
  247. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +497 -497
  248. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
  249. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +300 -300
  250. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +288 -288
  251. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +391 -391
  252. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +336 -336
  253. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +345 -345
  254. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +389 -389
  255. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1179 -1179
  256. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +402 -402
  257. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +361 -361
  258. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +368 -368
  259. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +475 -475
  260. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +494 -494
  261. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +401 -401
  262. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +360 -360
  263. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +367 -367
  264. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +476 -476
  265. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
  266. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
  267. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
  268. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
  269. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
  270. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
  271. package/src/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +913 -913
  272. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/LphaseIconSvg.vue +112 -112
  273. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/phaseIconSvg.vue +112 -112
  274. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +111 -111
  275. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
  276. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
  277. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.json +99 -99
  278. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +99 -99
  279. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
  280. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/sidePos.json +99 -99
  281. package/src/kisscomps/components/IntersectionMap/crossDirection/utils.js +78 -78
  282. package/src/kisscomps/components/IntersectionMap/index.js +2 -2
  283. package/src/kisscomps/components/IntersectionMap/intersectionmap.vue +154 -154
  284. package/src/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +518 -518
  285. package/src/kisscomps/components/IntersectionWithInterface/index.js +2 -2
  286. package/src/kisscomps/components/KanBan/index.js +2 -2
  287. package/src/kisscomps/components/KanBan/kanban.vue +219 -219
  288. package/src/kisscomps/components/MessageBox/index.vue +96 -96
  289. package/src/kisscomps/components/OverLap/OverLap.vue +207 -207
  290. package/src/kisscomps/components/OverLap/index.js +2 -2
  291. package/src/kisscomps/components/PatternStatus/PatternStatus.vue +962 -962
  292. package/src/kisscomps/components/PatternStatus/index.js +2 -2
  293. package/src/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +423 -423
  294. package/src/kisscomps/components/PatternWalkSvg/index.js +2 -2
  295. package/src/kisscomps/components/PhaseMarker/index.js +6 -6
  296. package/src/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
  297. package/src/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
  298. package/src/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
  299. package/src/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
  300. package/src/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
  301. package/src/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
  302. package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +760 -760
  303. package/src/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +195 -195
  304. package/src/kisscomps/components/SchemeConfig/index.js +2 -2
  305. package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +198 -198
  306. package/src/kisscomps/components/SchemeConfig/manualControlModal/index.vue +219 -219
  307. package/src/kisscomps/components/SchemeConfig/priorityControl/index.vue +190 -190
  308. package/src/kisscomps/components/SchemeConfig/priorityControl/utils.js +163 -163
  309. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +263 -263
  310. package/src/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1387 -1387
  311. package/src/kisscomps/components/StageBord/StageBord.vue +242 -242
  312. package/src/kisscomps/components/StageBord/index.js +2 -2
  313. package/src/kisscomps/components/StageStatus/StageStatus.vue +310 -310
  314. package/src/kisscomps/components/StageStatus/index.js +2 -2
  315. package/src/kisscomps/components/Stages/index.vue +139 -139
  316. package/src/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
  317. package/src/kisscomps/components/SvgIcon/index.js +2 -2
  318. package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +522 -522
  319. package/src/kisscomps/components/XRDDirSelector/index.js +2 -2
  320. package/src/kisscomps/components/overView/index.vue +679 -679
  321. package/src/kisscomps/components/patternList/index.js +2 -2
  322. package/src/kisscomps/components/patternList/patternList.vue +567 -567
  323. package/src/kisscomps/index.js +106 -106
  324. package/src/lib/publicjs/ArryListUtil.js +38 -38
  325. package/src/lib/publicjs/HttpurlMgr.js +45 -45
  326. package/src/lib/publicjs/KissApi.js +158 -158
  327. package/src/lib/publicjs/KissWSSub/Heartcheck.js +128 -128
  328. package/src/lib/publicjs/KissWSSub/KissWsSub.js +91 -91
  329. package/src/lib/publicjs/KissWSSub/KissWsSubByType.js +152 -152
  330. package/src/lib/publicjs/KissWSSub/SimuWsSubByType.js +44 -44
  331. package/src/lib/publicjs/KissWSSub/Sub.js +51 -51
  332. package/src/lib/publicjs/KissWSSub/SubChannel.js +119 -119
  333. package/src/lib/publicjs/basecomponents.js +65 -65
  334. package/src/lib/publicjs/localStorage.js +112 -112
  335. package/src/lib/publicjs/objdeepcopy.js +32 -32
  336. package/src/lib/publicjs/pageScroll.js +30 -30
  337. package/src/lib/publicjs/passwdAssest.js +101 -101
  338. package/src/lib/publicjs/styleclassfactory.js +32 -32
  339. package/src/main.js +50 -50
  340. package/src/router/index.js +42 -42
  341. package/src/store/getters.js +16 -16
  342. package/src/store/index.js +26 -26
  343. package/src/store/modules/globalParam.js +67 -67
  344. package/src/utils/ControlFormat.js +68 -68
  345. package/src/utils/RingDataModel.js +191 -191
  346. package/src/utils/auth.js +111 -111
  347. package/src/utils/dateFormat.js +41 -41
  348. package/src/utils/errorcode.js +224 -224
  349. package/src/utils/fault.js +195 -195
  350. package/src/utils/faultcode.js +209 -209
  351. package/src/utils/index.js +69 -69
  352. package/src/utils/pedphasedesc.js +119 -119
  353. package/src/utils/phasedesc.js +124 -124
  354. package/src/utils/responseMessage.js +21 -21
  355. package/src/utils/validate.js +43 -43
  356. package/src/views/customchannelization.vue +49 -49
  357. package/src/views/home.1.vue +479 -479
  358. package/src/views/home.vue +78 -78
  359. package/src/views/intersection.vue +308 -308
  360. package/src/views/overView.vue +41 -41
  361. package/src/views/schemeconfig.vue +165 -165
  362. package/static/apiconfig.json +351 -351
  363. package/static/styles/channelizatioon.scss +414 -414
  364. package/static/styles/common.scss +20 -20
  365. package/static/styles/commonkanban.scss +87 -87
  366. package/static/styles/dark/index.scss +2 -2
  367. package/static/styles/dark/theme/element-dark.scss +42 -42
  368. package/static/styles/index.scss +84 -84
  369. package/static/styles/intersection.scss +170 -170
  370. package/static/styles/light/index.scss +2 -2
  371. package/static/styles/light/theme/element-light.scss +42 -42
  372. package/static/styles/overview.scss +371 -371
  373. package/static/styles/schemeconfig.scss +457 -457
  374. package/static/styles/stages.scss +64 -64
  375. package/static/token.json +2 -2
  376. package/test/e2e/custom-assertions/elementCount.js +27 -27
  377. package/test/e2e/nightwatch.conf.js +46 -46
  378. package/test/e2e/runner.js +48 -48
  379. package/test/e2e/specs/test.js +19 -19
  380. package/test/unit/.eslintrc +7 -7
  381. package/test/unit/jest.conf.js +30 -30
  382. package/test/unit/setup.js +3 -3
  383. package/test/unit/specs/HelloWorld.spec.js +11 -11
@@ -1,666 +1,666 @@
1
- /**
2
- * Copyright (c) 2020 kedacom
3
- * OpenATC is licensed under Mulan PSL v2.
4
- * You can use this software according to the terms and conditions of the Mulan PSL v2.
5
- * You may obtain a copy of Mulan PSL v2 at:
6
- * http://license.coscl.org.cn/MulanPSL2
7
- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
8
- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
9
- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
10
- * See the Mulan PSL v2 for more details.
11
- **/
12
- <template>
13
- <div class="lane-edit-panel">
14
- <!-- 车道编辑面板 -->
15
- <div class="vehile" v-if="Data.icontype === 'vehile'">
16
- <div class="edit-id">
17
- <span style="margin-right: 3px;">
18
- {{$t('openatccomponents.channelizationmap.vehiclelane') + ':'}}
19
- </span>
20
- <span>{{Data.id}}</span>
21
- </div>
22
- <div class="directions">
23
- <div class="tittle">{{$t('openatccomponents.channelizationmap.laneturn')}}</div>
24
- <div class="each-icon" v-for="(item, index) in directionList" :key="index">
25
- <div class="single-icon"
26
- @click="selectDire(item.id)"
27
- :class="preselectDirection.indexOf(item.id) !== -1 ? 'single-icon-select' : ''">
28
- <svg-icon :icon-class="item.iconclass" className="direction-icon"></svg-icon>
29
- </div>
30
- <div class="single-icon-name">{{item.name}}</div>
31
- </div>
32
- </div>
33
-
34
- <div class="position">
35
- <div class="tittle">{{$t('openatccomponents.channelizationmap.position')}}</div>
36
- <div class="position-options">
37
- <el-radio-group v-model="lanePosition" @change="selectLanePos">
38
- <el-radio :label="1">{{$t('openatccomponents.channelizationmap.eastward')}}</el-radio>
39
- <el-radio :label="2">{{$t('openatccomponents.channelizationmap.westward')}}</el-radio>
40
- <el-radio :label="3">{{$t('openatccomponents.channelizationmap.southward')}}</el-radio>
41
- <el-radio :label="4">{{$t('openatccomponents.channelizationmap.northward')}}</el-radio>
42
- </el-radio-group>
43
- </div>
44
- </div>
45
-
46
- <div class="lane-types">
47
- <div class="tittle">{{$t('openatccomponents.channelizationmap.lanetype')}}</div>
48
- <div class="each-icon" v-for="(item, index) in lanetypeList" :key="index">
49
- <div class="single-icon"
50
- @click="selectLanetype(item.id)"
51
- :class="preselectLanetype === item.id ? 'single-icon-select' : ''">
52
- <svg-icon :icon-class="item.iconclass" className="type-icon"></svg-icon>
53
- </div>
54
- <div class="single-icon-name">{{item.name}}</div>
55
- </div>
56
- <div v-if="Data.controltype !== 0 && Data.controltype !== 1">
57
- <el-switch
58
- :value="flip"
59
- @change="handleChangeFilp"
60
- :active-text="$t('openatccomponents.channelizationmap.flipdisplay')">
61
- </el-switch>
62
- </div>
63
- </div>
64
-
65
- <div class="phase-associated">
66
- <div class="tittle">{{$t('openatccomponents.channelizationmap.phaseassociated')}}</div>
67
- <!-- 相位仅可以关联选择,不可修改 -->
68
- <PhaseAssociatedComponent
69
- :editData="Data"
70
- @selectPhaseNew="selectPhaseNew" />
71
- </div>
72
- <div class="overlap-associated">
73
- <div class="tittle">{{$t('openatccomponents.channelizationmap.overlapassociated')}}</div>
74
- <OverlapAssociatedComponent :editData="Data"
75
- @selectPhaseNew="selectPhaseNew"/>
76
- </div>
77
- </div>
78
-
79
- <!-- 行人编辑面板 -->
80
- <div class="ped" v-if="Data.icontype === 'ped'">
81
- <div class="edit-id">
82
- <span style="margin-right: 3px;">
83
- {{$t('openatccomponents.channelizationmap.sidewalk') + ':'}}
84
- </span>
85
- <span>{{Data.id}}</span>
86
- </div>
87
- <div class="ped-type">
88
- <div class="tittle">{{$t('openatccomponents.channelizationmap.pedestriantype')}}</div>
89
- <div class="each-icon" v-for="(item, index) in pedestriantypeList" :key="index">
90
- <div class="single-icon"
91
- @click="selectPedType(item.id)"
92
- :class="Data.iconpedtypeid === item.id ? 'single-icon-select' : ''">
93
- <svg-icon :icon-class="item.iconclass" className="ped-icon"></svg-icon>
94
- </div>
95
- <div class="single-icon-name">{{item.name}}</div>
96
- </div>
97
- </div>
98
- <div class="ped-position">
99
- <div class="tittle">{{$t('openatccomponents.channelizationmap.position')}}</div>
100
- <div class="each-icon" v-for="(item, index) in pedPosList" :key="index">
101
- <div class="single-icon"
102
- @click="selectPedPos(item.id)"
103
- :class="Data.iconpedposition === item.id ? 'single-icon-select' : ''">
104
- <svg-icon :icon-class="item.iconclass" className="ped-icon"></svg-icon>
105
- </div>
106
- <div class="single-icon-name">{{item.name}}</div>
107
- </div>
108
- </div>
109
- <div class="phase-associated">
110
- <div class="tittle">{{$t('openatccomponents.channelizationmap.phaseassociated')}}</div>
111
- <!-- 相位仅可以关联选择,不可修改 -->
112
- <PhaseAssociatedComponent
113
- :editData="Data"
114
- @selectPhaseNew="selectPhaseNew" />
115
- </div>
116
- <div class="overlap-associated">
117
- <div class="tittle">{{$t('openatccomponents.channelizationmap.overlapassociated')}}</div>
118
- <OverlapAssociatedComponent :editData="Data"
119
- @selectPhaseNew="selectPhaseNew"/>
120
- </div>
121
- </div>
122
-
123
- <!-- 检测器编辑面板 -->
124
- <div class="detector" v-if="Data.icontype === 'detector' && Data.detailtype === 'detector'">
125
- <div class="edit-id">
126
- <span style="margin-right: 3px;">
127
- {{$t('openatccomponents.channelizationmap.detector') + ':'}}
128
- </span>
129
- <span>{{Data.id}}</span>
130
- </div>
131
- <div class="detector-type">
132
- <div class="tittle">{{$t('openatccomponents.channelizationmap.detectortype')}}</div>
133
- <div class="each-icon" v-for="(item, index) in detectortypeList" :key="index">
134
- <div class="single-icon"
135
- @click="selectDetectorType(item.id)"
136
- :class="Data.detectortype === item.id ? 'single-icon-select' : ''">
137
- <svg-icon :icon-class="item.iconclass" className="ped-icon"></svg-icon>
138
- </div>
139
- <div class="single-icon-name">{{item.name}}</div>
140
- </div>
141
- </div>
142
- <div class="detector-associated">
143
- <div class="tittle">{{$t('openatccomponents.channelizationmap.detectorassociated')}}</div>
144
- <DetectorAssociatedComponent :editData="Data"
145
- @selectAssociatedDetector="selectAssociatedDetector"/>
146
- </div>
147
- <div class="detector-threshold" v-if="Data.detectortype === 1">
148
- <div class="tittle">{{$t('openatccomponents.channelizationmap.detectorthreshold')}}</div>
149
- <el-form
150
- ref="threshold"
151
- label-position="left"
152
- label-width="130px">
153
- <el-form-item
154
- :label="$t('openatccomponents.channelizationmap.occupancythreshold') + ':'"
155
- prop="intersection">
156
- <!-- <el-input-number :min="0" :max="100" :precision="0" :step="1" :controls="false"
157
- :value="occupancythreshold" size="mini"
158
- @change="handleChangeOccuthreshold" />
159
- <span class="detector-threshold-formtext">%</span> -->
160
- <el-select :value="occupancythreshold" @change="handleChangeOccuthreshold">
161
- <el-option
162
- v-for="item in occupResholdOptions"
163
- :key="item.value"
164
- :label="item.label"
165
- :value="item.value">
166
- </el-option>
167
- </el-select>
168
- </el-form-item>
169
- <el-form-item
170
- :label="$t('openatccomponents.channelizationmap.saturationthreshold') + ':'"
171
- prop="count">
172
- <!-- <el-input-number :min="0" :max="100" :precision="0" :step="1" :controls="false"
173
- :value="flowsaturationthreshold" size="mini"
174
- @change="handleChangeFlowthreshold" />
175
- <span class="detector-threshold-formtext">%</span> -->
176
- <el-select :value="minflowsaturationthreshold" @change="handleChangeMinFlowthreshold">
177
- <el-option
178
- v-for="item in minflowResholdOptions"
179
- :key="item.value"
180
- :label="item.label"
181
- :value="item.value"
182
- :disabled="item.disabled">
183
- </el-option>
184
- </el-select>
185
- <span class="flow-separator">-</span>
186
- <el-select :value="maxflowsaturationthreshold" @change="handleChangeMaxFlowthreshold">
187
- <el-option
188
- v-for="item in maxflowResholdOptions"
189
- :key="item.value"
190
- :label="item.label"
191
- :value="item.value"
192
- :disabled="item.disabled">
193
- </el-option>
194
- </el-select>
195
- </el-form-item>
196
- </el-form>
197
- </div>
198
- </div>
199
- <div class="basic-coord" v-if="JSON.stringify(Data) !== '{}' && Data.icontype !== 'countdown' && Data.icontype !== 'crossmap'">
200
- <div class="tittle">{{$t('openatccomponents.channelizationmap.basicinfo')}}</div>
201
- <BasicCoordInfo :drawingObjInfo="Data" @handleChangeBasicCoord="handleChangeBasicCoord" />
202
- </div>
203
- <div class="delete-drawed-item" v-if="JSON.stringify(Data) !== '{}' && Data.detailtype !== 'detectorChart'">
204
- <el-button type="primary" @click="handledelete" v-if="Data.icontype !== 'crossmap'">{{$t('openatccomponents.channelizationmap.delete')}}</el-button>
205
- <el-button type="primary" @click="handleClone" v-if="Data.icontype !== 'countdown' && Data.icontype !== 'crossmap'">{{$t('openatccomponents.channelizationmap.clone')}}</el-button>
206
- </div>
207
- </div>
208
- </template>
209
- <script>
210
- import PhaseAssociatedComponent from './phaseAssociatedComponent.vue'
211
- import OverlapAssociatedComponent from './overlapAssociatedComponent'
212
- import DetectorAssociatedComponent from './detectorAssociatedComponent.vue'
213
- import BasicCoordInfo from './basicCoordInfo'
214
- export default {
215
- name: 'lane-edit-panel',
216
- components: {
217
- PhaseAssociatedComponent,
218
- OverlapAssociatedComponent,
219
- DetectorAssociatedComponent,
220
- BasicCoordInfo
221
- },
222
- data () {
223
- return {
224
- iconObj: {},
225
- preselectDirection: [1], // 预选方向
226
- preselectPedType: [1], // 预选行人类型
227
- directionList: [], // 业务下方向选择列表(非机动车没有掉头)
228
- allDirectionsList: [{
229
- id: 1,
230
- key: 'straightahead',
231
- iconclass: 'custom-straightahead',
232
- name: this.$t('openatccomponents.channelizationmap.straightahead')
233
- }, {
234
- id: 2,
235
- key: 'turnleft',
236
- iconclass: 'custom-turnleft',
237
- name: this.$t('openatccomponents.channelizationmap.turnleft')
238
- }, {
239
- id: 3,
240
- key: 'turnright',
241
- iconclass: 'custom-turnright',
242
- name: this.$t('openatccomponents.channelizationmap.turnright')
243
- }, {
244
- id: 4,
245
- key: 'turnaround',
246
- iconclass: 'custom-turnaround',
247
- name: this.$t('openatccomponents.channelizationmap.turnaround')
248
- }],
249
- pedestriantypeList: [{
250
- id: 1,
251
- key: 'pedestrian',
252
- iconclass: 'custom-pedestrian',
253
- name: this.$t('openatccomponents.channelizationmap.pedestrian')
254
- }, {
255
- id: 2,
256
- key: 'secondcrossing',
257
- iconclass: 'custom-secondcrossing',
258
- name: this.$t('openatccomponents.channelizationmap.secondcrossing')
259
- }, {
260
- id: 3,
261
- key: 'xpedestrian',
262
- iconclass: 'custom-xpedestrian',
263
- name: this.$t('openatccomponents.channelizationmap.xpedestrian')
264
- }, {
265
- id: 4,
266
- key: 'sectionpedestrian',
267
- iconclass: 'custom-sectionpedestrian',
268
- name: this.$t('openatccomponents.channelizationmap.sectionpedestrian')
269
- }],
270
- preselectLanetype: 0,
271
- flip: false, // 默认车道类型图标不反转,正向为西
272
- lanetypeList: [{
273
- id: 0, // id对于controltype
274
- key: 'vehiclemainroad',
275
- iconclass: 'custom-vehiclemainroad',
276
- name: this.$t('openatccomponents.channelizationmap.vehiclemainroad')
277
- }, {
278
- id: 1,
279
- key: 'vehiclebranch',
280
- iconclass: 'custom-vehiclebranch',
281
- name: this.$t('openatccomponents.channelizationmap.vehiclebranch')
282
- }, {
283
- id: 6,
284
- key: 'nonmotorizedlane',
285
- iconclass: 'custom-nonmotorizedlane',
286
- name: this.$t('openatccomponents.channelizationmap.nonmotorizedlane')
287
- }, {
288
- id: 3,
289
- key: 'buslane',
290
- iconclass: 'custom-buslane',
291
- name: this.$t('openatccomponents.channelizationmap.buslane')
292
- }, {
293
- id: 4,
294
- key: 'BRTlane',
295
- iconclass: 'custom-BRTlane',
296
- name: this.$t('openatccomponents.channelizationmap.BRTlane')
297
- }, {
298
- id: 5,
299
- key: 'tramlane',
300
- iconclass: 'custom-tramlane',
301
- name: this.$t('openatccomponents.channelizationmap.tramlane')
302
- }],
303
- lanePosition: 1, // 方位默认东向
304
- pedPosList: [], // 当前显示的方位列表,由类型决定
305
- pedCrossingPosList: [{
306
- id: 1,
307
- key: 'pedeastward',
308
- iconclass: 'custom-pedeastward',
309
- name: this.$t('openatccomponents.channelizationmap.eastward')
310
- }, {
311
- id: 2,
312
- key: 'pedwestward',
313
- iconclass: 'custom-pedwestward',
314
- name: this.$t('openatccomponents.channelizationmap.westward')
315
- }, {
316
- id: 3,
317
- key: 'pedsouthward',
318
- iconclass: 'custom-pedsouthward',
319
- name: this.$t('openatccomponents.channelizationmap.southward')
320
- }, {
321
- id: 4,
322
- key: 'pednorthward',
323
- iconclass: 'custom-pednorthward',
324
- name: this.$t('openatccomponents.channelizationmap.northward')
325
- }],
326
- pedSecondCrossingPosList: [{
327
- id: 5,
328
- key: 'east-top',
329
- iconclass: 'custom-east-top',
330
- name: this.$t('openatccomponents.channelizationmap.etped')
331
- }, {
332
- id: 6,
333
- key: 'east-bottom',
334
- iconclass: 'custom-east-bottom',
335
- name: this.$t('openatccomponents.channelizationmap.ebped')
336
- }, {
337
- id: 7,
338
- key: 'west-top',
339
- iconclass: 'custom-west-top',
340
- name: this.$t('openatccomponents.channelizationmap.wtped')
341
- }, {
342
- id: 8,
343
- key: 'west-bottom',
344
- iconclass: 'custom-west-bottom',
345
- name: this.$t('openatccomponents.channelizationmap.wbped')
346
- }, {
347
- id: 9,
348
- key: 'south-left',
349
- iconclass: 'custom-south-left',
350
- name: this.$t('openatccomponents.channelizationmap.slped')
351
- }, {
352
- id: 10,
353
- key: 'south-right',
354
- iconclass: 'custom-south-right',
355
- name: this.$t('openatccomponents.channelizationmap.srped')
356
- }, {
357
- id: 11,
358
- key: 'north-left',
359
- iconclass: 'custom-north-left',
360
- name: this.$t('openatccomponents.channelizationmap.nlped')
361
- }, {
362
- id: 12,
363
- key: 'north-right',
364
- iconclass: 'custom-north-right',
365
- name: this.$t('openatccomponents.channelizationmap.nrped')
366
- }],
367
- pedObliqueCrossingPosList: [{
368
- id: 13,
369
- key: 'xrped',
370
- iconclass: 'custom-xrped',
371
- name: this.$t('openatccomponents.channelizationmap.xrped')
372
- }, {
373
- id: 14,
374
- key: 'xlped',
375
- iconclass: 'custom-xlped',
376
- name: this.$t('openatccomponents.channelizationmap.xlped')
377
- }],
378
- pedSectionCrossingPosList: [{
379
- id: 15,
380
- key: 'ewped',
381
- iconclass: 'custom-ewped',
382
- name: this.$t('openatccomponents.channelizationmap.ewped')
383
- }, {
384
- id: 16,
385
- key: 'snped',
386
- iconclass: 'custom-snped',
387
- name: this.$t('openatccomponents.channelizationmap.snped')
388
- }],
389
- detectortypeList: [{
390
- id: 1,
391
- key: 'vehiclemainroad',
392
- iconclass: 'custom-detector',
393
- name: this.$t('openatccomponents.channelizationmap.vehicledetector')
394
- }, {
395
- id: 2,
396
- key: 'vehiclebranch',
397
- iconclass: 'custom-peddetector',
398
- name: this.$t('openatccomponents.channelizationmap.pedestriandetector')
399
- }],
400
- occupResholdOptions: [],
401
- minflowResholdOptions: [],
402
- maxflowResholdOptions: [],
403
- occupancythreshold: 80,
404
- minflowsaturationthreshold: 30,
405
- maxflowsaturationthreshold: 70
406
- }
407
- },
408
- watch: {
409
- Data: {
410
- handler: function (data) {
411
- this.iconObj = JSON.parse(JSON.stringify(data))
412
- this.initDirOptions()
413
- if (data.icondireid !== undefined) {
414
- this.preselectDirection = JSON.parse(JSON.stringify(data.icondireid))
415
- }
416
- if (data.controltype !== undefined) {
417
- this.preselectLanetype = data.controltype
418
- }
419
- if (data.lanePosition !== undefined) {
420
- this.lanePosition = data.lanePosition
421
- }
422
- if (data.occupancythreshold !== undefined) {
423
- this.occupancythreshold = data.occupancythreshold
424
- }
425
- if (data.minflowsaturationthreshold !== undefined) {
426
- this.minflowsaturationthreshold = data.minflowsaturationthreshold
427
- }
428
- if (data.maxflowsaturationthreshold !== undefined) {
429
- this.maxflowsaturationthreshold = data.maxflowsaturationthreshold
430
- }
431
- this.handleDisabledMinflowOption(data.minflowsaturationthreshold)
432
- this.handleDisabledMaxflowOption(data.maxflowsaturationthreshold)
433
- if (data.flip !== undefined) {
434
- this.flip = data.flip
435
- }
436
- this.getCurPedPosList(data.iconpedtypeid)
437
- },
438
- deep: true
439
- }
440
- },
441
- props: {
442
- Data: {
443
- type: Object
444
- },
445
- Motorways: {
446
- type: Array
447
- }
448
- },
449
- methods: {
450
- initDirOptions () {
451
- this.directionList = JSON.parse(JSON.stringify(this.allDirectionsList))
452
- },
453
- selectDire (value) {
454
- let index = this.iconObj.icondireid.indexOf(value)
455
- if (index === -1) {
456
- this.iconObj.icondireid.push(value)
457
- } else {
458
- this.iconObj.icondireid.splice(index, 1)
459
- }
460
- this.$emit('handleChooseDire', this.iconObj)
461
- },
462
- selectLanetype (id) {
463
- this.iconObj.controltype = id
464
- this.$emit('changeIconDataByType', this.iconObj, ['controltype'])
465
- },
466
- selectPedType (value) {
467
- this.iconObj.iconpedtypeid = value
468
- this.getCurPedPosList(value)
469
- // 默认选择第一方位
470
- this.iconObj.iconpedposition = this.pedPosList[0].id
471
- this.$emit('handleChoosePed', this.iconObj)
472
- },
473
- selectDetectorType (value) {
474
- if (this.iconObj.detectortype !== undefined && this.iconObj.detectortype !== value) {
475
- this.iconObj.detectorid = undefined
476
- }
477
- this.iconObj.detectortype = value
478
- this.$emit('changeIconDataByType', this.iconObj, ['detectortype', 'detectorid'])
479
- if (value === 2) {
480
- // 行人检测器没有阈值设置
481
- this.iconObj.occupancythreshold = undefined
482
- this.iconObj.minflowsaturationthreshold = undefined
483
- this.iconObj.maxflowsaturationthreshold = undefined
484
- this.$emit('changeIconDataByType', this.iconObj, ['occupancythreshold', 'minflowsaturationthreshold', 'maxflowsaturationthreshold'])
485
- }
486
- },
487
- selectPedPos (value) {
488
- this.iconObj.iconpedposition = value
489
- this.$emit('handleChoosePed', this.iconObj)
490
- },
491
- handledelete () {
492
- this.$emit('deleteItem', this.iconObj)
493
- },
494
- selectLanePos (value) {
495
- this.iconObj.lanePosition = value
496
- this.$emit('changeIconDataByType', this.iconObj, ['lanePosition'])
497
- },
498
- selectPhase (phaseid, direction) {
499
- // 关联相位的同时,会修改相位方向
500
- this.iconObj.phaseid = phaseid
501
- this.iconObj.phaselabel = `P${phaseid}`
502
- this.iconObj.direction = direction
503
- this.$emit('changeIconDataByType', this.iconObj, ['phaseid', 'phaselabel', 'direction'])
504
- },
505
- selectPhaseNew (phaseid, phasetype) {
506
- // 仅关联相位,不修改原相位
507
- this.iconObj.phasetype = phasetype
508
- this.iconObj.phaseid = phaseid
509
- if (phasetype === 'phase') {
510
- this.iconObj.phaselabel = `P${phaseid}`
511
- }
512
- if (phasetype === 'overlap') {
513
- this.iconObj.phaselabel = `OP${phaseid}`
514
- }
515
- this.$emit('changeIconDataByType', this.iconObj, ['phaseid', 'phaselabel', 'phasetype'])
516
- },
517
- handleDisassociatePhase (deletePhaseid) {
518
- this.$emit('handleDisassociatePhase', deletePhaseid)
519
- },
520
- selectAssociatedDetector (detectorid) {
521
- // 仅关联检测器,不修改
522
- this.iconObj.detectorid = detectorid
523
- this.$emit('changeIconDataByType', this.iconObj, ['detectorid'])
524
- },
525
- handleChangeOccuthreshold (occupancythreshold) {
526
- if (occupancythreshold === undefined) {
527
- this.$message.error(this.$t('openatccomponents.channelizationmap.checkthreshold'))
528
- this.occupancythreshold = 80
529
- return
530
- }
531
- this.occupancythreshold = occupancythreshold
532
- this.iconObj.occupancythreshold = occupancythreshold
533
- this.$emit('changeIconDataByType', this.iconObj, ['occupancythreshold'])
534
- },
535
- handleChangeMinFlowthreshold (minflowsaturationthreshold) {
536
- if (minflowsaturationthreshold === undefined) {
537
- this.$message.error(this.$t('openatccomponents.channelizationmap.checkthreshold'))
538
- this.minflowsaturationthreshold = 30
539
- return
540
- }
541
- this.minflowsaturationthreshold = minflowsaturationthreshold
542
- this.iconObj.minflowsaturationthreshold = minflowsaturationthreshold
543
- this.$emit('changeIconDataByType', this.iconObj, ['minflowsaturationthreshold'])
544
- this.handleDisabledMaxflowOption()
545
- },
546
- handleDisabledMinflowOption () {
547
- // 此处需要排他,恢复上次置灰到默认值
548
- this.minflowResholdOptions = this.minflowResholdOptions.map(option => ({
549
- label: option.label,
550
- value: option.value
551
- }))
552
- // 控制流量饱和度最小阈值的禁用范围
553
- for (let i = 0; i < this.minflowResholdOptions.length; i++) {
554
- if (this.minflowResholdOptions[i].value >= this.maxflowsaturationthreshold) {
555
- this.minflowResholdOptions[i].disabled = true
556
- }
557
- }
558
- },
559
- handleChangeMaxFlowthreshold (maxflowsaturationthreshold) {
560
- if (maxflowsaturationthreshold === undefined) {
561
- this.$message.error(this.$t('openatccomponents.channelizationmap.checkthreshold'))
562
- this.maxflowsaturationthreshold = 70
563
- return
564
- }
565
- this.maxflowsaturationthreshold = maxflowsaturationthreshold
566
- this.iconObj.maxflowsaturationthreshold = maxflowsaturationthreshold
567
- this.$emit('changeIconDataByType', this.iconObj, ['maxflowsaturationthreshold'])
568
- this.handleDisabledMinflowOption()
569
- },
570
- handleDisabledMaxflowOption () {
571
- // 此处需要排他,恢复上次置灰到默认值
572
- this.maxflowResholdOptions = this.maxflowResholdOptions.map(option => ({
573
- label: option.label,
574
- value: option.value
575
- }))
576
- // 控制流量饱和度最大阈值的禁用范围
577
- for (let i = 0; i < this.maxflowResholdOptions.length; i++) {
578
- if (this.maxflowResholdOptions[i].value <= this.minflowsaturationthreshold) {
579
- this.maxflowResholdOptions[i].disabled = true
580
- }
581
- }
582
- },
583
- getCurPedPosList (iconpedtypeid) {
584
- // 方位根据行人类型显示
585
- switch (iconpedtypeid) {
586
- case 1: this.pedPosList = JSON.parse(JSON.stringify(this.pedCrossingPosList))
587
- break
588
- case 2: this.pedPosList = JSON.parse(JSON.stringify(this.pedSecondCrossingPosList))
589
- break
590
- case 3: this.pedPosList = JSON.parse(JSON.stringify(this.pedObliqueCrossingPosList))
591
- break
592
- case 4: this.pedPosList = JSON.parse(JSON.stringify(this.pedSectionCrossingPosList))
593
- break
594
- }
595
- },
596
- handleChangeFilp (value) {
597
- this.iconObj.flip = value
598
- this.$emit('changeIconDataByType', this.iconObj, ['flip'])
599
- },
600
- createResholdSelectOptions () {
601
- for (let i = 5; i < 100; i = i + 5) {
602
- let option = {
603
- label: i + '%',
604
- value: i
605
- }
606
- this.occupResholdOptions.push(option)
607
- if (i <= this.minflowsaturationthreshold) {
608
- option.disabled = true
609
- }
610
- this.maxflowResholdOptions.push(option)
611
- }
612
- for (let i = 5; i < 100; i = i + 5) {
613
- let option = {
614
- label: i + '%',
615
- value: i
616
- }
617
- if (i >= this.maxflowsaturationthreshold) {
618
- option.disabled = true
619
- }
620
- this.minflowResholdOptions.push(option)
621
- }
622
- },
623
- handleChangeBasicCoord (basicCoord) {
624
- // 基础信息面板修改
625
- this.iconObj.x = basicCoord.x
626
- this.iconObj.y = basicCoord.y
627
- this.iconObj.angle = basicCoord.angle
628
- this.$emit('changeIconDataByType', this.iconObj, ['x', 'y', 'angle'])
629
- },
630
- handleClone () {
631
- this.$emit('cloneItem', this.iconObj)
632
- }
633
- },
634
- created () {
635
- this.createResholdSelectOptions()
636
- },
637
- mounted () {
638
- if (JSON.stringify(this.Data) === '{}') return
639
- this.iconObj = JSON.parse(JSON.stringify(this.Data))
640
- if (this.Data.icondireid !== undefined) {
641
- this.preselectDirection = JSON.parse(JSON.stringify(this.Data.icondireid))
642
- }
643
- if (this.Data.controltype !== undefined) {
644
- this.preselectLanetype = this.Data.controltype
645
- }
646
- if (this.Data.lanePosition !== undefined) {
647
- this.lanePosition = this.Data.lanePosition
648
- }
649
- if (this.Data.occupancythreshold !== undefined) {
650
- this.occupancythreshold = this.Data.occupancythreshold
651
- }
652
- if (this.Data.minflowsaturationthreshold !== undefined) {
653
- this.minflowsaturationthreshold = this.Data.minflowsaturationthreshold
654
- }
655
- if (this.Data.maxflowsaturationthreshold !== undefined) {
656
- this.maxflowsaturationthreshold = this.Data.maxflowsaturationthreshold
657
- }
658
- if (this.Data.flip !== undefined) {
659
- this.flip = this.Data.flip
660
- }
661
- this.getCurPedPosList(this.Data.iconpedtypeid)
662
- }
663
- }
664
- </script>
665
- <style scoped>
666
- </style>
1
+ /**
2
+ * Copyright (c) 2020 kedacom
3
+ * OpenATC is licensed under Mulan PSL v2.
4
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
5
+ * You may obtain a copy of Mulan PSL v2 at:
6
+ * http://license.coscl.org.cn/MulanPSL2
7
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
8
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
9
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
10
+ * See the Mulan PSL v2 for more details.
11
+ **/
12
+ <template>
13
+ <div class="lane-edit-panel">
14
+ <!-- 车道编辑面板 -->
15
+ <div class="vehile" v-if="Data.icontype === 'vehile'">
16
+ <div class="edit-id">
17
+ <span style="margin-right: 3px;">
18
+ {{$t('openatccomponents.channelizationmap.vehiclelane') + ':'}}
19
+ </span>
20
+ <span>{{Data.id}}</span>
21
+ </div>
22
+ <div class="directions">
23
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.laneturn')}}</div>
24
+ <div class="each-icon" v-for="(item, index) in directionList" :key="index">
25
+ <div class="single-icon"
26
+ @click="selectDire(item.id)"
27
+ :class="preselectDirection.indexOf(item.id) !== -1 ? 'single-icon-select' : ''">
28
+ <svg-icon :icon-class="item.iconclass" className="direction-icon"></svg-icon>
29
+ </div>
30
+ <div class="single-icon-name">{{item.name}}</div>
31
+ </div>
32
+ </div>
33
+
34
+ <div class="position">
35
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.position')}}</div>
36
+ <div class="position-options">
37
+ <el-radio-group v-model="lanePosition" @change="selectLanePos">
38
+ <el-radio :label="1">{{$t('openatccomponents.channelizationmap.eastward')}}</el-radio>
39
+ <el-radio :label="2">{{$t('openatccomponents.channelizationmap.westward')}}</el-radio>
40
+ <el-radio :label="3">{{$t('openatccomponents.channelizationmap.southward')}}</el-radio>
41
+ <el-radio :label="4">{{$t('openatccomponents.channelizationmap.northward')}}</el-radio>
42
+ </el-radio-group>
43
+ </div>
44
+ </div>
45
+
46
+ <div class="lane-types">
47
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.lanetype')}}</div>
48
+ <div class="each-icon" v-for="(item, index) in lanetypeList" :key="index">
49
+ <div class="single-icon"
50
+ @click="selectLanetype(item.id)"
51
+ :class="preselectLanetype === item.id ? 'single-icon-select' : ''">
52
+ <svg-icon :icon-class="item.iconclass" className="type-icon"></svg-icon>
53
+ </div>
54
+ <div class="single-icon-name">{{item.name}}</div>
55
+ </div>
56
+ <div v-if="Data.controltype !== 0 && Data.controltype !== 1">
57
+ <el-switch
58
+ :value="flip"
59
+ @change="handleChangeFilp"
60
+ :active-text="$t('openatccomponents.channelizationmap.flipdisplay')">
61
+ </el-switch>
62
+ </div>
63
+ </div>
64
+
65
+ <div class="phase-associated">
66
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.phaseassociated')}}</div>
67
+ <!-- 相位仅可以关联选择,不可修改 -->
68
+ <PhaseAssociatedComponent
69
+ :editData="Data"
70
+ @selectPhaseNew="selectPhaseNew" />
71
+ </div>
72
+ <div class="overlap-associated">
73
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.overlapassociated')}}</div>
74
+ <OverlapAssociatedComponent :editData="Data"
75
+ @selectPhaseNew="selectPhaseNew"/>
76
+ </div>
77
+ </div>
78
+
79
+ <!-- 行人编辑面板 -->
80
+ <div class="ped" v-if="Data.icontype === 'ped'">
81
+ <div class="edit-id">
82
+ <span style="margin-right: 3px;">
83
+ {{$t('openatccomponents.channelizationmap.sidewalk') + ':'}}
84
+ </span>
85
+ <span>{{Data.id}}</span>
86
+ </div>
87
+ <div class="ped-type">
88
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.pedestriantype')}}</div>
89
+ <div class="each-icon" v-for="(item, index) in pedestriantypeList" :key="index">
90
+ <div class="single-icon"
91
+ @click="selectPedType(item.id)"
92
+ :class="Data.iconpedtypeid === item.id ? 'single-icon-select' : ''">
93
+ <svg-icon :icon-class="item.iconclass" className="ped-icon"></svg-icon>
94
+ </div>
95
+ <div class="single-icon-name">{{item.name}}</div>
96
+ </div>
97
+ </div>
98
+ <div class="ped-position">
99
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.position')}}</div>
100
+ <div class="each-icon" v-for="(item, index) in pedPosList" :key="index">
101
+ <div class="single-icon"
102
+ @click="selectPedPos(item.id)"
103
+ :class="Data.iconpedposition === item.id ? 'single-icon-select' : ''">
104
+ <svg-icon :icon-class="item.iconclass" className="ped-icon"></svg-icon>
105
+ </div>
106
+ <div class="single-icon-name">{{item.name}}</div>
107
+ </div>
108
+ </div>
109
+ <div class="phase-associated">
110
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.phaseassociated')}}</div>
111
+ <!-- 相位仅可以关联选择,不可修改 -->
112
+ <PhaseAssociatedComponent
113
+ :editData="Data"
114
+ @selectPhaseNew="selectPhaseNew" />
115
+ </div>
116
+ <div class="overlap-associated">
117
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.overlapassociated')}}</div>
118
+ <OverlapAssociatedComponent :editData="Data"
119
+ @selectPhaseNew="selectPhaseNew"/>
120
+ </div>
121
+ </div>
122
+
123
+ <!-- 检测器编辑面板 -->
124
+ <div class="detector" v-if="Data.icontype === 'detector' && Data.detailtype === 'detector'">
125
+ <div class="edit-id">
126
+ <span style="margin-right: 3px;">
127
+ {{$t('openatccomponents.channelizationmap.detector') + ':'}}
128
+ </span>
129
+ <span>{{Data.id}}</span>
130
+ </div>
131
+ <div class="detector-type">
132
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.detectortype')}}</div>
133
+ <div class="each-icon" v-for="(item, index) in detectortypeList" :key="index">
134
+ <div class="single-icon"
135
+ @click="selectDetectorType(item.id)"
136
+ :class="Data.detectortype === item.id ? 'single-icon-select' : ''">
137
+ <svg-icon :icon-class="item.iconclass" className="ped-icon"></svg-icon>
138
+ </div>
139
+ <div class="single-icon-name">{{item.name}}</div>
140
+ </div>
141
+ </div>
142
+ <div class="detector-associated">
143
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.detectorassociated')}}</div>
144
+ <DetectorAssociatedComponent :editData="Data"
145
+ @selectAssociatedDetector="selectAssociatedDetector"/>
146
+ </div>
147
+ <div class="detector-threshold" v-if="Data.detectortype === 1">
148
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.detectorthreshold')}}</div>
149
+ <el-form
150
+ ref="threshold"
151
+ label-position="left"
152
+ label-width="130px">
153
+ <el-form-item
154
+ :label="$t('openatccomponents.channelizationmap.occupancythreshold') + ':'"
155
+ prop="intersection">
156
+ <!-- <el-input-number :min="0" :max="100" :precision="0" :step="1" :controls="false"
157
+ :value="occupancythreshold" size="mini"
158
+ @change="handleChangeOccuthreshold" />
159
+ <span class="detector-threshold-formtext">%</span> -->
160
+ <el-select :value="occupancythreshold" @change="handleChangeOccuthreshold">
161
+ <el-option
162
+ v-for="item in occupResholdOptions"
163
+ :key="item.value"
164
+ :label="item.label"
165
+ :value="item.value">
166
+ </el-option>
167
+ </el-select>
168
+ </el-form-item>
169
+ <el-form-item
170
+ :label="$t('openatccomponents.channelizationmap.saturationthreshold') + ':'"
171
+ prop="count">
172
+ <!-- <el-input-number :min="0" :max="100" :precision="0" :step="1" :controls="false"
173
+ :value="flowsaturationthreshold" size="mini"
174
+ @change="handleChangeFlowthreshold" />
175
+ <span class="detector-threshold-formtext">%</span> -->
176
+ <el-select :value="minflowsaturationthreshold" @change="handleChangeMinFlowthreshold">
177
+ <el-option
178
+ v-for="item in minflowResholdOptions"
179
+ :key="item.value"
180
+ :label="item.label"
181
+ :value="item.value"
182
+ :disabled="item.disabled">
183
+ </el-option>
184
+ </el-select>
185
+ <span class="flow-separator">-</span>
186
+ <el-select :value="maxflowsaturationthreshold" @change="handleChangeMaxFlowthreshold">
187
+ <el-option
188
+ v-for="item in maxflowResholdOptions"
189
+ :key="item.value"
190
+ :label="item.label"
191
+ :value="item.value"
192
+ :disabled="item.disabled">
193
+ </el-option>
194
+ </el-select>
195
+ </el-form-item>
196
+ </el-form>
197
+ </div>
198
+ </div>
199
+ <div class="basic-coord" v-if="JSON.stringify(Data) !== '{}' && Data.icontype !== 'countdown' && Data.icontype !== 'crossmap'">
200
+ <div class="tittle">{{$t('openatccomponents.channelizationmap.basicinfo')}}</div>
201
+ <BasicCoordInfo :drawingObjInfo="Data" @handleChangeBasicCoord="handleChangeBasicCoord" />
202
+ </div>
203
+ <div class="delete-drawed-item" v-if="JSON.stringify(Data) !== '{}' && Data.detailtype !== 'detectorChart'">
204
+ <el-button type="primary" @click="handledelete" v-if="Data.icontype !== 'crossmap'">{{$t('openatccomponents.channelizationmap.delete')}}</el-button>
205
+ <el-button type="primary" @click="handleClone" v-if="Data.icontype !== 'countdown' && Data.icontype !== 'crossmap'">{{$t('openatccomponents.channelizationmap.clone')}}</el-button>
206
+ </div>
207
+ </div>
208
+ </template>
209
+ <script>
210
+ import PhaseAssociatedComponent from './phaseAssociatedComponent.vue'
211
+ import OverlapAssociatedComponent from './overlapAssociatedComponent'
212
+ import DetectorAssociatedComponent from './detectorAssociatedComponent.vue'
213
+ import BasicCoordInfo from './basicCoordInfo'
214
+ export default {
215
+ name: 'lane-edit-panel',
216
+ components: {
217
+ PhaseAssociatedComponent,
218
+ OverlapAssociatedComponent,
219
+ DetectorAssociatedComponent,
220
+ BasicCoordInfo
221
+ },
222
+ data () {
223
+ return {
224
+ iconObj: {},
225
+ preselectDirection: [1], // 预选方向
226
+ preselectPedType: [1], // 预选行人类型
227
+ directionList: [], // 业务下方向选择列表(非机动车没有掉头)
228
+ allDirectionsList: [{
229
+ id: 1,
230
+ key: 'straightahead',
231
+ iconclass: 'custom-straightahead',
232
+ name: this.$t('openatccomponents.channelizationmap.straightahead')
233
+ }, {
234
+ id: 2,
235
+ key: 'turnleft',
236
+ iconclass: 'custom-turnleft',
237
+ name: this.$t('openatccomponents.channelizationmap.turnleft')
238
+ }, {
239
+ id: 3,
240
+ key: 'turnright',
241
+ iconclass: 'custom-turnright',
242
+ name: this.$t('openatccomponents.channelizationmap.turnright')
243
+ }, {
244
+ id: 4,
245
+ key: 'turnaround',
246
+ iconclass: 'custom-turnaround',
247
+ name: this.$t('openatccomponents.channelizationmap.turnaround')
248
+ }],
249
+ pedestriantypeList: [{
250
+ id: 1,
251
+ key: 'pedestrian',
252
+ iconclass: 'custom-pedestrian',
253
+ name: this.$t('openatccomponents.channelizationmap.pedestrian')
254
+ }, {
255
+ id: 2,
256
+ key: 'secondcrossing',
257
+ iconclass: 'custom-secondcrossing',
258
+ name: this.$t('openatccomponents.channelizationmap.secondcrossing')
259
+ }, {
260
+ id: 3,
261
+ key: 'xpedestrian',
262
+ iconclass: 'custom-xpedestrian',
263
+ name: this.$t('openatccomponents.channelizationmap.xpedestrian')
264
+ }, {
265
+ id: 4,
266
+ key: 'sectionpedestrian',
267
+ iconclass: 'custom-sectionpedestrian',
268
+ name: this.$t('openatccomponents.channelizationmap.sectionpedestrian')
269
+ }],
270
+ preselectLanetype: 0,
271
+ flip: false, // 默认车道类型图标不反转,正向为西
272
+ lanetypeList: [{
273
+ id: 0, // id对于controltype
274
+ key: 'vehiclemainroad',
275
+ iconclass: 'custom-vehiclemainroad',
276
+ name: this.$t('openatccomponents.channelizationmap.vehiclemainroad')
277
+ }, {
278
+ id: 1,
279
+ key: 'vehiclebranch',
280
+ iconclass: 'custom-vehiclebranch',
281
+ name: this.$t('openatccomponents.channelizationmap.vehiclebranch')
282
+ }, {
283
+ id: 6,
284
+ key: 'nonmotorizedlane',
285
+ iconclass: 'custom-nonmotorizedlane',
286
+ name: this.$t('openatccomponents.channelizationmap.nonmotorizedlane')
287
+ }, {
288
+ id: 3,
289
+ key: 'buslane',
290
+ iconclass: 'custom-buslane',
291
+ name: this.$t('openatccomponents.channelizationmap.buslane')
292
+ }, {
293
+ id: 4,
294
+ key: 'BRTlane',
295
+ iconclass: 'custom-BRTlane',
296
+ name: this.$t('openatccomponents.channelizationmap.BRTlane')
297
+ }, {
298
+ id: 5,
299
+ key: 'tramlane',
300
+ iconclass: 'custom-tramlane',
301
+ name: this.$t('openatccomponents.channelizationmap.tramlane')
302
+ }],
303
+ lanePosition: 1, // 方位默认东向
304
+ pedPosList: [], // 当前显示的方位列表,由类型决定
305
+ pedCrossingPosList: [{
306
+ id: 1,
307
+ key: 'pedeastward',
308
+ iconclass: 'custom-pedeastward',
309
+ name: this.$t('openatccomponents.channelizationmap.eastward')
310
+ }, {
311
+ id: 2,
312
+ key: 'pedwestward',
313
+ iconclass: 'custom-pedwestward',
314
+ name: this.$t('openatccomponents.channelizationmap.westward')
315
+ }, {
316
+ id: 3,
317
+ key: 'pedsouthward',
318
+ iconclass: 'custom-pedsouthward',
319
+ name: this.$t('openatccomponents.channelizationmap.southward')
320
+ }, {
321
+ id: 4,
322
+ key: 'pednorthward',
323
+ iconclass: 'custom-pednorthward',
324
+ name: this.$t('openatccomponents.channelizationmap.northward')
325
+ }],
326
+ pedSecondCrossingPosList: [{
327
+ id: 5,
328
+ key: 'east-top',
329
+ iconclass: 'custom-east-top',
330
+ name: this.$t('openatccomponents.channelizationmap.etped')
331
+ }, {
332
+ id: 6,
333
+ key: 'east-bottom',
334
+ iconclass: 'custom-east-bottom',
335
+ name: this.$t('openatccomponents.channelizationmap.ebped')
336
+ }, {
337
+ id: 7,
338
+ key: 'west-top',
339
+ iconclass: 'custom-west-top',
340
+ name: this.$t('openatccomponents.channelizationmap.wtped')
341
+ }, {
342
+ id: 8,
343
+ key: 'west-bottom',
344
+ iconclass: 'custom-west-bottom',
345
+ name: this.$t('openatccomponents.channelizationmap.wbped')
346
+ }, {
347
+ id: 9,
348
+ key: 'south-left',
349
+ iconclass: 'custom-south-left',
350
+ name: this.$t('openatccomponents.channelizationmap.slped')
351
+ }, {
352
+ id: 10,
353
+ key: 'south-right',
354
+ iconclass: 'custom-south-right',
355
+ name: this.$t('openatccomponents.channelizationmap.srped')
356
+ }, {
357
+ id: 11,
358
+ key: 'north-left',
359
+ iconclass: 'custom-north-left',
360
+ name: this.$t('openatccomponents.channelizationmap.nlped')
361
+ }, {
362
+ id: 12,
363
+ key: 'north-right',
364
+ iconclass: 'custom-north-right',
365
+ name: this.$t('openatccomponents.channelizationmap.nrped')
366
+ }],
367
+ pedObliqueCrossingPosList: [{
368
+ id: 13,
369
+ key: 'xrped',
370
+ iconclass: 'custom-xrped',
371
+ name: this.$t('openatccomponents.channelizationmap.xrped')
372
+ }, {
373
+ id: 14,
374
+ key: 'xlped',
375
+ iconclass: 'custom-xlped',
376
+ name: this.$t('openatccomponents.channelizationmap.xlped')
377
+ }],
378
+ pedSectionCrossingPosList: [{
379
+ id: 15,
380
+ key: 'ewped',
381
+ iconclass: 'custom-ewped',
382
+ name: this.$t('openatccomponents.channelizationmap.ewped')
383
+ }, {
384
+ id: 16,
385
+ key: 'snped',
386
+ iconclass: 'custom-snped',
387
+ name: this.$t('openatccomponents.channelizationmap.snped')
388
+ }],
389
+ detectortypeList: [{
390
+ id: 1,
391
+ key: 'vehiclemainroad',
392
+ iconclass: 'custom-detector',
393
+ name: this.$t('openatccomponents.channelizationmap.vehicledetector')
394
+ }, {
395
+ id: 2,
396
+ key: 'vehiclebranch',
397
+ iconclass: 'custom-peddetector',
398
+ name: this.$t('openatccomponents.channelizationmap.pedestriandetector')
399
+ }],
400
+ occupResholdOptions: [],
401
+ minflowResholdOptions: [],
402
+ maxflowResholdOptions: [],
403
+ occupancythreshold: 80,
404
+ minflowsaturationthreshold: 30,
405
+ maxflowsaturationthreshold: 70
406
+ }
407
+ },
408
+ watch: {
409
+ Data: {
410
+ handler: function (data) {
411
+ this.iconObj = JSON.parse(JSON.stringify(data))
412
+ this.initDirOptions()
413
+ if (data.icondireid !== undefined) {
414
+ this.preselectDirection = JSON.parse(JSON.stringify(data.icondireid))
415
+ }
416
+ if (data.controltype !== undefined) {
417
+ this.preselectLanetype = data.controltype
418
+ }
419
+ if (data.lanePosition !== undefined) {
420
+ this.lanePosition = data.lanePosition
421
+ }
422
+ if (data.occupancythreshold !== undefined) {
423
+ this.occupancythreshold = data.occupancythreshold
424
+ }
425
+ if (data.minflowsaturationthreshold !== undefined) {
426
+ this.minflowsaturationthreshold = data.minflowsaturationthreshold
427
+ }
428
+ if (data.maxflowsaturationthreshold !== undefined) {
429
+ this.maxflowsaturationthreshold = data.maxflowsaturationthreshold
430
+ }
431
+ this.handleDisabledMinflowOption(data.minflowsaturationthreshold)
432
+ this.handleDisabledMaxflowOption(data.maxflowsaturationthreshold)
433
+ if (data.flip !== undefined) {
434
+ this.flip = data.flip
435
+ }
436
+ this.getCurPedPosList(data.iconpedtypeid)
437
+ },
438
+ deep: true
439
+ }
440
+ },
441
+ props: {
442
+ Data: {
443
+ type: Object
444
+ },
445
+ Motorways: {
446
+ type: Array
447
+ }
448
+ },
449
+ methods: {
450
+ initDirOptions () {
451
+ this.directionList = JSON.parse(JSON.stringify(this.allDirectionsList))
452
+ },
453
+ selectDire (value) {
454
+ let index = this.iconObj.icondireid.indexOf(value)
455
+ if (index === -1) {
456
+ this.iconObj.icondireid.push(value)
457
+ } else {
458
+ this.iconObj.icondireid.splice(index, 1)
459
+ }
460
+ this.$emit('handleChooseDire', this.iconObj)
461
+ },
462
+ selectLanetype (id) {
463
+ this.iconObj.controltype = id
464
+ this.$emit('changeIconDataByType', this.iconObj, ['controltype'])
465
+ },
466
+ selectPedType (value) {
467
+ this.iconObj.iconpedtypeid = value
468
+ this.getCurPedPosList(value)
469
+ // 默认选择第一方位
470
+ this.iconObj.iconpedposition = this.pedPosList[0].id
471
+ this.$emit('handleChoosePed', this.iconObj)
472
+ },
473
+ selectDetectorType (value) {
474
+ if (this.iconObj.detectortype !== undefined && this.iconObj.detectortype !== value) {
475
+ this.iconObj.detectorid = undefined
476
+ }
477
+ this.iconObj.detectortype = value
478
+ this.$emit('changeIconDataByType', this.iconObj, ['detectortype', 'detectorid'])
479
+ if (value === 2) {
480
+ // 行人检测器没有阈值设置
481
+ this.iconObj.occupancythreshold = undefined
482
+ this.iconObj.minflowsaturationthreshold = undefined
483
+ this.iconObj.maxflowsaturationthreshold = undefined
484
+ this.$emit('changeIconDataByType', this.iconObj, ['occupancythreshold', 'minflowsaturationthreshold', 'maxflowsaturationthreshold'])
485
+ }
486
+ },
487
+ selectPedPos (value) {
488
+ this.iconObj.iconpedposition = value
489
+ this.$emit('handleChoosePed', this.iconObj)
490
+ },
491
+ handledelete () {
492
+ this.$emit('deleteItem', this.iconObj)
493
+ },
494
+ selectLanePos (value) {
495
+ this.iconObj.lanePosition = value
496
+ this.$emit('changeIconDataByType', this.iconObj, ['lanePosition'])
497
+ },
498
+ selectPhase (phaseid, direction) {
499
+ // 关联相位的同时,会修改相位方向
500
+ this.iconObj.phaseid = phaseid
501
+ this.iconObj.phaselabel = `P${phaseid}`
502
+ this.iconObj.direction = direction
503
+ this.$emit('changeIconDataByType', this.iconObj, ['phaseid', 'phaselabel', 'direction'])
504
+ },
505
+ selectPhaseNew (phaseid, phasetype) {
506
+ // 仅关联相位,不修改原相位
507
+ this.iconObj.phasetype = phasetype
508
+ this.iconObj.phaseid = phaseid
509
+ if (phasetype === 'phase') {
510
+ this.iconObj.phaselabel = `P${phaseid}`
511
+ }
512
+ if (phasetype === 'overlap') {
513
+ this.iconObj.phaselabel = `OP${phaseid}`
514
+ }
515
+ this.$emit('changeIconDataByType', this.iconObj, ['phaseid', 'phaselabel', 'phasetype'])
516
+ },
517
+ handleDisassociatePhase (deletePhaseid) {
518
+ this.$emit('handleDisassociatePhase', deletePhaseid)
519
+ },
520
+ selectAssociatedDetector (detectorid) {
521
+ // 仅关联检测器,不修改
522
+ this.iconObj.detectorid = detectorid
523
+ this.$emit('changeIconDataByType', this.iconObj, ['detectorid'])
524
+ },
525
+ handleChangeOccuthreshold (occupancythreshold) {
526
+ if (occupancythreshold === undefined) {
527
+ this.$message.error(this.$t('openatccomponents.channelizationmap.checkthreshold'))
528
+ this.occupancythreshold = 80
529
+ return
530
+ }
531
+ this.occupancythreshold = occupancythreshold
532
+ this.iconObj.occupancythreshold = occupancythreshold
533
+ this.$emit('changeIconDataByType', this.iconObj, ['occupancythreshold'])
534
+ },
535
+ handleChangeMinFlowthreshold (minflowsaturationthreshold) {
536
+ if (minflowsaturationthreshold === undefined) {
537
+ this.$message.error(this.$t('openatccomponents.channelizationmap.checkthreshold'))
538
+ this.minflowsaturationthreshold = 30
539
+ return
540
+ }
541
+ this.minflowsaturationthreshold = minflowsaturationthreshold
542
+ this.iconObj.minflowsaturationthreshold = minflowsaturationthreshold
543
+ this.$emit('changeIconDataByType', this.iconObj, ['minflowsaturationthreshold'])
544
+ this.handleDisabledMaxflowOption()
545
+ },
546
+ handleDisabledMinflowOption () {
547
+ // 此处需要排他,恢复上次置灰到默认值
548
+ this.minflowResholdOptions = this.minflowResholdOptions.map(option => ({
549
+ label: option.label,
550
+ value: option.value
551
+ }))
552
+ // 控制流量饱和度最小阈值的禁用范围
553
+ for (let i = 0; i < this.minflowResholdOptions.length; i++) {
554
+ if (this.minflowResholdOptions[i].value >= this.maxflowsaturationthreshold) {
555
+ this.minflowResholdOptions[i].disabled = true
556
+ }
557
+ }
558
+ },
559
+ handleChangeMaxFlowthreshold (maxflowsaturationthreshold) {
560
+ if (maxflowsaturationthreshold === undefined) {
561
+ this.$message.error(this.$t('openatccomponents.channelizationmap.checkthreshold'))
562
+ this.maxflowsaturationthreshold = 70
563
+ return
564
+ }
565
+ this.maxflowsaturationthreshold = maxflowsaturationthreshold
566
+ this.iconObj.maxflowsaturationthreshold = maxflowsaturationthreshold
567
+ this.$emit('changeIconDataByType', this.iconObj, ['maxflowsaturationthreshold'])
568
+ this.handleDisabledMinflowOption()
569
+ },
570
+ handleDisabledMaxflowOption () {
571
+ // 此处需要排他,恢复上次置灰到默认值
572
+ this.maxflowResholdOptions = this.maxflowResholdOptions.map(option => ({
573
+ label: option.label,
574
+ value: option.value
575
+ }))
576
+ // 控制流量饱和度最大阈值的禁用范围
577
+ for (let i = 0; i < this.maxflowResholdOptions.length; i++) {
578
+ if (this.maxflowResholdOptions[i].value <= this.minflowsaturationthreshold) {
579
+ this.maxflowResholdOptions[i].disabled = true
580
+ }
581
+ }
582
+ },
583
+ getCurPedPosList (iconpedtypeid) {
584
+ // 方位根据行人类型显示
585
+ switch (iconpedtypeid) {
586
+ case 1: this.pedPosList = JSON.parse(JSON.stringify(this.pedCrossingPosList))
587
+ break
588
+ case 2: this.pedPosList = JSON.parse(JSON.stringify(this.pedSecondCrossingPosList))
589
+ break
590
+ case 3: this.pedPosList = JSON.parse(JSON.stringify(this.pedObliqueCrossingPosList))
591
+ break
592
+ case 4: this.pedPosList = JSON.parse(JSON.stringify(this.pedSectionCrossingPosList))
593
+ break
594
+ }
595
+ },
596
+ handleChangeFilp (value) {
597
+ this.iconObj.flip = value
598
+ this.$emit('changeIconDataByType', this.iconObj, ['flip'])
599
+ },
600
+ createResholdSelectOptions () {
601
+ for (let i = 5; i < 100; i = i + 5) {
602
+ let option = {
603
+ label: i + '%',
604
+ value: i
605
+ }
606
+ this.occupResholdOptions.push(option)
607
+ if (i <= this.minflowsaturationthreshold) {
608
+ option.disabled = true
609
+ }
610
+ this.maxflowResholdOptions.push(option)
611
+ }
612
+ for (let i = 5; i < 100; i = i + 5) {
613
+ let option = {
614
+ label: i + '%',
615
+ value: i
616
+ }
617
+ if (i >= this.maxflowsaturationthreshold) {
618
+ option.disabled = true
619
+ }
620
+ this.minflowResholdOptions.push(option)
621
+ }
622
+ },
623
+ handleChangeBasicCoord (basicCoord) {
624
+ // 基础信息面板修改
625
+ this.iconObj.x = basicCoord.x
626
+ this.iconObj.y = basicCoord.y
627
+ this.iconObj.angle = basicCoord.angle
628
+ this.$emit('changeIconDataByType', this.iconObj, ['x', 'y', 'angle'])
629
+ },
630
+ handleClone () {
631
+ this.$emit('cloneItem', this.iconObj)
632
+ }
633
+ },
634
+ created () {
635
+ this.createResholdSelectOptions()
636
+ },
637
+ mounted () {
638
+ if (JSON.stringify(this.Data) === '{}') return
639
+ this.iconObj = JSON.parse(JSON.stringify(this.Data))
640
+ if (this.Data.icondireid !== undefined) {
641
+ this.preselectDirection = JSON.parse(JSON.stringify(this.Data.icondireid))
642
+ }
643
+ if (this.Data.controltype !== undefined) {
644
+ this.preselectLanetype = this.Data.controltype
645
+ }
646
+ if (this.Data.lanePosition !== undefined) {
647
+ this.lanePosition = this.Data.lanePosition
648
+ }
649
+ if (this.Data.occupancythreshold !== undefined) {
650
+ this.occupancythreshold = this.Data.occupancythreshold
651
+ }
652
+ if (this.Data.minflowsaturationthreshold !== undefined) {
653
+ this.minflowsaturationthreshold = this.Data.minflowsaturationthreshold
654
+ }
655
+ if (this.Data.maxflowsaturationthreshold !== undefined) {
656
+ this.maxflowsaturationthreshold = this.Data.maxflowsaturationthreshold
657
+ }
658
+ if (this.Data.flip !== undefined) {
659
+ this.flip = this.Data.flip
660
+ }
661
+ this.getCurPedPosList(this.Data.iconpedtypeid)
662
+ }
663
+ }
664
+ </script>
665
+ <style scoped>
666
+ </style>