openatc-components 0.0.44-hotfix → 0.0.45

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 (298) 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 +93 -93
  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 +898 -898
  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 +148 -148
  68. package/package/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +513 -513
  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 +205 -205
  73. package/package/kisscomps/components/OverLap/index.js +2 -2
  74. package/package/kisscomps/components/PatternStatus/PatternStatus.vue +846 -846
  75. package/package/kisscomps/components/PatternStatus/index.js +2 -2
  76. package/package/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +428 -428
  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 +714 -714
  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 +198 -198
  90. package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +263 -263
  91. package/package/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1412 -1412
  92. package/package/kisscomps/components/StageBord/StageBord.vue +243 -243
  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 +126 -120
  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 +656 -656
  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 +85 -85
  105. package/package/kissui.min.js +1 -1
  106. package/package.json +122 -122
  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 -0
  125. package/src/icons/iconfont.css +11 -3
  126. package/src/icons/iconfont.js +1 -1
  127. package/src/icons/iconfont.json +14 -0
  128. package/src/icons/iconfont.ttf +0 -0
  129. package/src/icons/iconfont.woff +0 -0
  130. package/src/icons/iconfont.woff2 +0 -0
  131. package/src/icons/index.js +20 -20
  132. package/src/icons/svg/bendi.svg +110 -110
  133. package/src/icons/svg/bujin.svg +36 -36
  134. package/src/icons/svg/connectBlue.svg +7 -7
  135. package/src/icons/svg/currentvolume.svg +0 -0
  136. package/src/icons/svg/cutRed.svg +7 -7
  137. package/src/icons/svg/cycle.svg +0 -0
  138. package/src/icons/svg/dingzhouqi.svg +34 -34
  139. package/src/icons/svg/ganyingkongzhi.svg +30 -30
  140. package/src/icons/svg/guandeng.svg +81 -81
  141. package/src/icons/svg/huangshan.svg +71 -71
  142. package/src/icons/svg/maincontrol.svg +0 -0
  143. package/src/icons/svg/manualcontrolbackground.svg +51 -51
  144. package/src/icons/svg/manualcontrolbackground1.svg +62 -62
  145. package/src/icons/svg/manualcontrolbackgrounden.svg +62 -62
  146. package/src/icons/svg/model.svg +0 -0
  147. package/src/icons/svg/phasediff.svg +0 -0
  148. package/src/icons/svg/quanhong.svg +86 -86
  149. package/src/icons/svg/shanghe.svg +11 -11
  150. package/src/icons/svg/shoudong.svg +103 -103
  151. package/src/icons/svg/time.svg +0 -0
  152. package/src/icons/svg/wuxianlan.svg +46 -46
  153. package/src/icons/svg/xiala.svg +11 -11
  154. package/src/icons/svg/xingrenguojie.svg +33 -33
  155. package/src/icons/svg/xitong.svg +89 -89
  156. package/src/icons/svg/youxian.svg +41 -41
  157. package/src/icons/svg/zizhukongzhi.svg +43 -43
  158. package/src/kisscomps/components/BoardCard/BoardCard.vue +89 -89
  159. package/src/kisscomps/components/BoardCard/index.js +2 -2
  160. package/src/kisscomps/components/CommonKanban/CommonKanban.vue +118 -118
  161. package/src/kisscomps/components/CommonKanban/index.js +2 -2
  162. package/src/kisscomps/components/ExpendConfig/ExpendConfig.vue +93 -93
  163. package/src/kisscomps/components/ExpendConfig/index.js +2 -2
  164. package/src/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +170 -170
  165. package/src/kisscomps/components/FaultDetailModal/index.js +2 -2
  166. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +497 -497
  167. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
  168. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PatternWalkSvg.vue +429 -429
  169. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +300 -300
  170. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +288 -288
  171. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +391 -391
  172. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +336 -336
  173. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +345 -345
  174. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +389 -389
  175. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1179 -1179
  176. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +402 -402
  177. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +361 -361
  178. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +368 -368
  179. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +475 -475
  180. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +494 -494
  181. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +401 -401
  182. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +360 -360
  183. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +367 -367
  184. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +476 -476
  185. package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
  186. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
  187. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
  188. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
  189. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
  190. package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
  191. package/src/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +898 -898
  192. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/LphaseIconSvg.vue +112 -112
  193. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/phaseIconSvg.vue +112 -112
  194. package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +111 -111
  195. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
  196. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
  197. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.json +99 -99
  198. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +99 -99
  199. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
  200. package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/sidePos.json +99 -99
  201. package/src/kisscomps/components/IntersectionMap/crossDirection/utils.js +78 -78
  202. package/src/kisscomps/components/IntersectionMap/index.js +2 -2
  203. package/src/kisscomps/components/IntersectionMap/intersectionmap.vue +148 -148
  204. package/src/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +513 -513
  205. package/src/kisscomps/components/IntersectionWithInterface/index.js +2 -2
  206. package/src/kisscomps/components/KanBan/index.js +2 -2
  207. package/src/kisscomps/components/KanBan/kanban.vue +219 -219
  208. package/src/kisscomps/components/OverLap/OverLap.vue +205 -205
  209. package/src/kisscomps/components/OverLap/index.js +2 -2
  210. package/src/kisscomps/components/PatternStatus/PatternStatus.vue +846 -846
  211. package/src/kisscomps/components/PatternStatus/index.js +2 -2
  212. package/src/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +428 -428
  213. package/src/kisscomps/components/PatternWalkSvg/index.js +2 -2
  214. package/src/kisscomps/components/PhaseMarker/index.js +6 -6
  215. package/src/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
  216. package/src/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
  217. package/src/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
  218. package/src/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
  219. package/src/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
  220. package/src/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
  221. package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +714 -714
  222. package/src/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +195 -195
  223. package/src/kisscomps/components/SchemeConfig/index.js +2 -2
  224. package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +198 -198
  225. package/src/kisscomps/components/SchemeConfig/manualControlModal/index.vue +198 -198
  226. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +263 -263
  227. package/src/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1412 -1412
  228. package/src/kisscomps/components/StageBord/StageBord.vue +243 -243
  229. package/src/kisscomps/components/StageBord/index.js +2 -2
  230. package/src/kisscomps/components/StageStatus/StageStatus.vue +306 -306
  231. package/src/kisscomps/components/StageStatus/index.js +2 -2
  232. package/src/kisscomps/components/Stages/index.vue +126 -120
  233. package/src/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
  234. package/src/kisscomps/components/SvgIcon/index.js +2 -2
  235. package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +522 -522
  236. package/src/kisscomps/components/XRDDirSelector/index.js +2 -2
  237. package/src/kisscomps/components/overView/index.vue +656 -656
  238. package/src/kisscomps/components/patternList/index.js +2 -2
  239. package/src/kisscomps/components/patternList/patternList.vue +562 -562
  240. package/src/kisscomps/index.js +85 -85
  241. package/src/lib/publicjs/ArryListUtil.js +38 -38
  242. package/src/lib/publicjs/HttpurlMgr.js +45 -45
  243. package/src/lib/publicjs/KissApi.js +158 -158
  244. package/src/lib/publicjs/KissWSSub/Heartcheck.js +128 -128
  245. package/src/lib/publicjs/KissWSSub/KissWsSub.js +91 -91
  246. package/src/lib/publicjs/KissWSSub/KissWsSubByType.js +152 -152
  247. package/src/lib/publicjs/KissWSSub/SimuWsSubByType.js +44 -44
  248. package/src/lib/publicjs/KissWSSub/Sub.js +51 -51
  249. package/src/lib/publicjs/KissWSSub/SubChannel.js +119 -119
  250. package/src/lib/publicjs/basecomponents.js +65 -65
  251. package/src/lib/publicjs/localStorage.js +112 -112
  252. package/src/lib/publicjs/objdeepcopy.js +32 -32
  253. package/src/lib/publicjs/pageScroll.js +30 -30
  254. package/src/lib/publicjs/passwdAssest.js +101 -101
  255. package/src/lib/publicjs/styleclassfactory.js +32 -32
  256. package/src/main.js +47 -47
  257. package/src/router/index.js +36 -36
  258. package/src/store/getters.js +16 -16
  259. package/src/store/index.js +26 -26
  260. package/src/store/modules/globalParam.js +27 -27
  261. package/src/utils/ControlFormat.js +68 -68
  262. package/src/utils/RingDataModel.js +173 -173
  263. package/src/utils/auth.js +110 -110
  264. package/src/utils/dateFormat.js +41 -41
  265. package/src/utils/errorcode.js +224 -224
  266. package/src/utils/fault.js +195 -195
  267. package/src/utils/faultcode.js +209 -209
  268. package/src/utils/index.js +69 -69
  269. package/src/utils/pedphasedesc.js +119 -119
  270. package/src/utils/phasedesc.js +124 -124
  271. package/src/utils/responseMessage.js +21 -21
  272. package/src/utils/validate.js +43 -43
  273. package/src/views/home.1.vue +479 -479
  274. package/src/views/home.vue +78 -78
  275. package/src/views/intersection.vue +276 -276
  276. package/src/views/overView.vue +33 -33
  277. package/src/views/schemeconfig.vue +154 -154
  278. package/static/apiconfig.json +336 -336
  279. package/static/styles/common.scss +19 -19
  280. package/static/styles/commonkanban.scss +87 -87
  281. package/static/styles/dark/index.scss +2 -2
  282. package/static/styles/dark/theme/element-dark.scss +42 -42
  283. package/static/styles/index.scss +84 -84
  284. package/static/styles/intersection.scss +161 -161
  285. package/static/styles/light/index.scss +2 -2
  286. package/static/styles/light/theme/element-light.scss +42 -42
  287. package/static/styles/overview.scss +371 -371
  288. package/static/styles/schemeconfig.scss +396 -396
  289. package/static/styles/stages.scss +64 -64
  290. package/static/token.json +2 -2
  291. package/test/e2e/custom-assertions/elementCount.js +27 -27
  292. package/test/e2e/nightwatch.conf.js +46 -46
  293. package/test/e2e/runner.js +48 -48
  294. package/test/e2e/specs/test.js +19 -19
  295. package/test/unit/.eslintrc +7 -7
  296. package/test/unit/jest.conf.js +30 -30
  297. package/test/unit/setup.js +3 -3
  298. package/test/unit/specs/HelloWorld.spec.js +11 -11
package/src/api/param.js CHANGED
@@ -1,154 +1,154 @@
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
- import Authapi from './authapi'
13
- import {
14
- getIframdevid
15
- } from '../utils/auth'
16
-
17
- export function registerMessage (agentid) {
18
- // var iframdevid = getIframdevid()
19
- if (agentid === '' || agentid === undefined) {
20
- agentid = 0
21
- }
22
- let api = new Authapi('registerMessage')
23
- let data = {}
24
- data.agentid = agentid
25
- data.operation = 'get-request'
26
- data.infotype = 'login'
27
- // let paramList = [iframdevid, 'param', 'upload']
28
- return api.Send({}, data)
29
- }
30
-
31
- export function uploadTscParam () {
32
- var iframdevid = getIframdevid()
33
- let api = new Authapi('uploadTscParam')
34
- let data = {}
35
- data.agentid = iframdevid
36
- data.operation = 'get-request'
37
- data.infotype = 'feature/all'
38
- // let paramList = [iframdevid, 'param', 'upload']
39
- return api.Send({}, data)
40
- }
41
-
42
- export function uploadSingleTscParam (type, iframdevid) {
43
- // var iframdevid = getIframdevid()
44
- let api = new Authapi('uploadSingleTscParam')
45
- let data = {}
46
- data.agentid = iframdevid
47
- data.operation = 'get-request'
48
- data.infotype = 'feature/' + type
49
- // let paramList = [iframdevid, 'param', 'upload']
50
- return api.Send({}, data)
51
- }
52
-
53
- export function uploadSelectedTscParam (uuid) {
54
- var iframdevid = getIframdevid()
55
- let api = new Authapi('uploadSelectedTscParam')
56
- let paramList = [iframdevid, 'param', 'upload', uuid]
57
- return api.Send({}, {}, paramList)
58
- }
59
-
60
- export function uploadDeviceInfo () {
61
- var iframdevid = getIframdevid()
62
- let api = new Authapi('uploadDeviceInfo')
63
- let data = {}
64
- data.agentid = iframdevid
65
- data.operation = 'get-request'
66
- data.infotype = 'system/custom'
67
- // let paramList = [iframdevid, 'param', 'upload']
68
- return api.Send({}, data)
69
- }
70
-
71
- export const downloadDeviceInfo = (tscParams) => {
72
- var iframdevid = getIframdevid()
73
- let api = new Authapi('downloadDeviceInfo')
74
- let param = JSON.stringify(tscParams)
75
- let params = JSON.parse(param)
76
- let data = {}
77
- data.agentid = iframdevid
78
- data.operation = 'set-request'
79
- data.infotype = 'system/custom'
80
- data.data = params
81
- // let data = {
82
- // operator,
83
- // params
84
- // }
85
- // let paramList = [iframdevid, 'param', 'download']
86
- return api.Send({}, data)
87
- }
88
-
89
- export const downloadTscParam = (operator, tscParams) => {
90
- var iframdevid = getIframdevid()
91
- let api = new Authapi('downloadTscParam')
92
- let param = JSON.stringify(tscParams)
93
- let params = JSON.parse(param)
94
- let data = {}
95
- data.agentid = iframdevid
96
- data.operation = 'set-request'
97
- data.infotype = 'feature/all'
98
- data.data = params
99
- // let data = {
100
- // operator,
101
- // params
102
- // }
103
- // let paramList = [iframdevid, 'param', 'download']
104
- return api.Send({}, data)
105
- }
106
-
107
- export const downloadSingleTscParam = (type, typeParams) => {
108
- var iframdevid = getIframdevid()
109
- let api = new Authapi('downloadSingleTscParam')
110
- let params = JSON.parse(JSON.stringify(typeParams))
111
- let data = {}
112
- data.agentid = iframdevid
113
- data.operation = 'set-request'
114
- data.infotype = 'feature/' + type
115
- data.data = params
116
- return api.Send({}, data)
117
- }
118
-
119
- export function deleteTscParam (uuid) {
120
- var iframdevid = getIframdevid()
121
- let api = new Authapi('deleteTscParam')
122
- let paramList = [iframdevid, 'param', 'delete', uuid]
123
- return api.Send({}, {}, paramList)
124
- }
125
-
126
- export const updateFile = (file) => {
127
- // var iframdevid = getIframdevid()
128
- let api = new Authapi('updateFile')
129
- return api.Send({}, file, [], true, true)
130
- }
131
-
132
- export function checkCode (params) {
133
- let api = new Authapi('checkCode')
134
- let data = {}
135
- data.data = params
136
- return api.Send({}, data)
137
- }
138
-
139
- export function getAllDailyRecord () {
140
- var iframdevid = getIframdevid()
141
- let api = new Authapi('getAllDailyRecord')
142
- let data = {}
143
- data.agentid = iframdevid
144
- data.operation = 'get-request'
145
- data.infotype = 'system/log'
146
- return api.Send({}, data)
147
- }
148
- export function getDailyRecord () {
149
- var iframdevid = getIframdevid()
150
- let api = new Authapi('getDailyRecord')
151
- let data = {}
152
- data.agentId = iframdevid
153
- return api.Send({}, data)
154
- }
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
+ import Authapi from './authapi'
13
+ import {
14
+ getIframdevid
15
+ } from '../utils/auth'
16
+
17
+ export function registerMessage (agentid) {
18
+ // var iframdevid = getIframdevid()
19
+ if (agentid === '' || agentid === undefined) {
20
+ agentid = 0
21
+ }
22
+ let api = new Authapi('registerMessage')
23
+ let data = {}
24
+ data.agentid = agentid
25
+ data.operation = 'get-request'
26
+ data.infotype = 'login'
27
+ // let paramList = [iframdevid, 'param', 'upload']
28
+ return api.Send({}, data)
29
+ }
30
+
31
+ export function uploadTscParam () {
32
+ var iframdevid = getIframdevid()
33
+ let api = new Authapi('uploadTscParam')
34
+ let data = {}
35
+ data.agentid = iframdevid
36
+ data.operation = 'get-request'
37
+ data.infotype = 'feature/all'
38
+ // let paramList = [iframdevid, 'param', 'upload']
39
+ return api.Send({}, data)
40
+ }
41
+
42
+ export function uploadSingleTscParam (type, iframdevid) {
43
+ // var iframdevid = getIframdevid()
44
+ let api = new Authapi('uploadSingleTscParam')
45
+ let data = {}
46
+ data.agentid = iframdevid
47
+ data.operation = 'get-request'
48
+ data.infotype = 'feature/' + type
49
+ // let paramList = [iframdevid, 'param', 'upload']
50
+ return api.Send({}, data)
51
+ }
52
+
53
+ export function uploadSelectedTscParam (uuid) {
54
+ var iframdevid = getIframdevid()
55
+ let api = new Authapi('uploadSelectedTscParam')
56
+ let paramList = [iframdevid, 'param', 'upload', uuid]
57
+ return api.Send({}, {}, paramList)
58
+ }
59
+
60
+ export function uploadDeviceInfo () {
61
+ var iframdevid = getIframdevid()
62
+ let api = new Authapi('uploadDeviceInfo')
63
+ let data = {}
64
+ data.agentid = iframdevid
65
+ data.operation = 'get-request'
66
+ data.infotype = 'system/custom'
67
+ // let paramList = [iframdevid, 'param', 'upload']
68
+ return api.Send({}, data)
69
+ }
70
+
71
+ export const downloadDeviceInfo = (tscParams) => {
72
+ var iframdevid = getIframdevid()
73
+ let api = new Authapi('downloadDeviceInfo')
74
+ let param = JSON.stringify(tscParams)
75
+ let params = JSON.parse(param)
76
+ let data = {}
77
+ data.agentid = iframdevid
78
+ data.operation = 'set-request'
79
+ data.infotype = 'system/custom'
80
+ data.data = params
81
+ // let data = {
82
+ // operator,
83
+ // params
84
+ // }
85
+ // let paramList = [iframdevid, 'param', 'download']
86
+ return api.Send({}, data)
87
+ }
88
+
89
+ export const downloadTscParam = (operator, tscParams) => {
90
+ var iframdevid = getIframdevid()
91
+ let api = new Authapi('downloadTscParam')
92
+ let param = JSON.stringify(tscParams)
93
+ let params = JSON.parse(param)
94
+ let data = {}
95
+ data.agentid = iframdevid
96
+ data.operation = 'set-request'
97
+ data.infotype = 'feature/all'
98
+ data.data = params
99
+ // let data = {
100
+ // operator,
101
+ // params
102
+ // }
103
+ // let paramList = [iframdevid, 'param', 'download']
104
+ return api.Send({}, data)
105
+ }
106
+
107
+ export const downloadSingleTscParam = (type, typeParams) => {
108
+ var iframdevid = getIframdevid()
109
+ let api = new Authapi('downloadSingleTscParam')
110
+ let params = JSON.parse(JSON.stringify(typeParams))
111
+ let data = {}
112
+ data.agentid = iframdevid
113
+ data.operation = 'set-request'
114
+ data.infotype = 'feature/' + type
115
+ data.data = params
116
+ return api.Send({}, data)
117
+ }
118
+
119
+ export function deleteTscParam (uuid) {
120
+ var iframdevid = getIframdevid()
121
+ let api = new Authapi('deleteTscParam')
122
+ let paramList = [iframdevid, 'param', 'delete', uuid]
123
+ return api.Send({}, {}, paramList)
124
+ }
125
+
126
+ export const updateFile = (file) => {
127
+ // var iframdevid = getIframdevid()
128
+ let api = new Authapi('updateFile')
129
+ return api.Send({}, file, [], true, true)
130
+ }
131
+
132
+ export function checkCode (params) {
133
+ let api = new Authapi('checkCode')
134
+ let data = {}
135
+ data.data = params
136
+ return api.Send({}, data)
137
+ }
138
+
139
+ export function getAllDailyRecord () {
140
+ var iframdevid = getIframdevid()
141
+ let api = new Authapi('getAllDailyRecord')
142
+ let data = {}
143
+ data.agentid = iframdevid
144
+ data.operation = 'get-request'
145
+ data.infotype = 'system/log'
146
+ return api.Send({}, data)
147
+ }
148
+ export function getDailyRecord () {
149
+ var iframdevid = getIframdevid()
150
+ let api = new Authapi('getDailyRecord')
151
+ let data = {}
152
+ data.agentId = iframdevid
153
+ return api.Send({}, data)
154
+ }
@@ -1,101 +1,101 @@
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
- /*
13
- @brief 密码相关辅助
14
- @auth caijiadong
15
- @date 2018-09-10
16
- */
17
-
18
- /*
19
- @brief 加密 取strAstrB的MD5
20
- */
21
- export const Encode = (strA, strB) => {
22
- let strData = `${strA}${strB}`
23
- let crypto = require('crypto')
24
- return crypto.createHash('md5').update(strData, 'utf-8').digest('base64')
25
- }
26
-
27
- /*
28
- @brief 根据用户名密码获取加密字符串
29
- @param[in] user password 用户名密码
30
- @return 加密字符串
31
- */
32
- export const GetPassswordEncode = (user, password) => {
33
- return Encode(user, password)
34
- }
35
-
36
- /*
37
- @brief 获取时间戳和时间戳运算MD5
38
- @param[in] data 需要运算的字符串
39
- @return {
40
- timestramp,
41
- data
42
- }
43
- */
44
- export const GetTimestampEncode = (data) => {
45
- let timestamp = new Date().getTime()
46
- return {
47
- timestamp: timestamp,
48
- data: Encode(data, timestamp.toString())
49
- }
50
- }
51
-
52
- /*
53
- @brief 计算密码安全等级
54
- @param[in] passwnd 密码
55
- @return 安全等级 0->3 低->高
56
- */
57
- export const GetPasswdSafeLeavel = (password) => {
58
- let leavel = ''
59
- let str = password.split('')
60
- let i = 0
61
- for (let s of str) {
62
- if (/[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/.test(s)) {
63
- i++
64
- }
65
- }
66
- if (i === 0) {
67
- if ((/[0-9]/.test(password)) || /[a-z]/.test(password) || /[A-Z]/.test(password)) {
68
- leavel = '1'
69
- }
70
- } else if (i > 1) {
71
- if ((/[0-9]/.test(password)) && (/[a-z]/.test(password) || /[A-Z]/.test(password))) {
72
- leavel = '3'
73
- } else {
74
- leavel = '1'
75
- }
76
- } else {
77
- if ((/[0-9]/.test(password)) && (/[a-z]/.test(password) || /[A-Z]/.test(password))) {
78
- leavel = '2'
79
- } else {
80
- leavel = '1'
81
- }
82
- }
83
- return leavel
84
- }
85
- /*
86
- @brief 检查密码安全等级
87
- @param[in] passwnd 密码
88
- @return 数组,里面包含"1","2"两个状态,分别表示密码长度和包含数字、字母和特殊字符
89
- */
90
- export const CheckPasswdSafeLeavel = (password) => {
91
- let check = []
92
- // eslint-disable-next-line no-mixed-operators
93
- if ((/[0-9]/.test(password) && (/[a-z]/.test(password)) || /[A-Z]/.test(password)) && (/[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/.test(password) && /\w/.test(password))) {
94
- check.push('1')
95
- }
96
-
97
- if (password.length >= 8) {
98
- check.push('2')
99
- }
100
- return check
101
- }
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
+ /*
13
+ @brief 密码相关辅助
14
+ @auth caijiadong
15
+ @date 2018-09-10
16
+ */
17
+
18
+ /*
19
+ @brief 加密 取strAstrB的MD5
20
+ */
21
+ export const Encode = (strA, strB) => {
22
+ let strData = `${strA}${strB}`
23
+ let crypto = require('crypto')
24
+ return crypto.createHash('md5').update(strData, 'utf-8').digest('base64')
25
+ }
26
+
27
+ /*
28
+ @brief 根据用户名密码获取加密字符串
29
+ @param[in] user password 用户名密码
30
+ @return 加密字符串
31
+ */
32
+ export const GetPassswordEncode = (user, password) => {
33
+ return Encode(user, password)
34
+ }
35
+
36
+ /*
37
+ @brief 获取时间戳和时间戳运算MD5
38
+ @param[in] data 需要运算的字符串
39
+ @return {
40
+ timestramp,
41
+ data
42
+ }
43
+ */
44
+ export const GetTimestampEncode = (data) => {
45
+ let timestamp = new Date().getTime()
46
+ return {
47
+ timestamp: timestamp,
48
+ data: Encode(data, timestamp.toString())
49
+ }
50
+ }
51
+
52
+ /*
53
+ @brief 计算密码安全等级
54
+ @param[in] passwnd 密码
55
+ @return 安全等级 0->3 低->高
56
+ */
57
+ export const GetPasswdSafeLeavel = (password) => {
58
+ let leavel = ''
59
+ let str = password.split('')
60
+ let i = 0
61
+ for (let s of str) {
62
+ if (/[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/.test(s)) {
63
+ i++
64
+ }
65
+ }
66
+ if (i === 0) {
67
+ if ((/[0-9]/.test(password)) || /[a-z]/.test(password) || /[A-Z]/.test(password)) {
68
+ leavel = '1'
69
+ }
70
+ } else if (i > 1) {
71
+ if ((/[0-9]/.test(password)) && (/[a-z]/.test(password) || /[A-Z]/.test(password))) {
72
+ leavel = '3'
73
+ } else {
74
+ leavel = '1'
75
+ }
76
+ } else {
77
+ if ((/[0-9]/.test(password)) && (/[a-z]/.test(password) || /[A-Z]/.test(password))) {
78
+ leavel = '2'
79
+ } else {
80
+ leavel = '1'
81
+ }
82
+ }
83
+ return leavel
84
+ }
85
+ /*
86
+ @brief 检查密码安全等级
87
+ @param[in] passwnd 密码
88
+ @return 数组,里面包含"1","2"两个状态,分别表示密码长度和包含数字、字母和特殊字符
89
+ */
90
+ export const CheckPasswdSafeLeavel = (password) => {
91
+ let check = []
92
+ // eslint-disable-next-line no-mixed-operators
93
+ if ((/[0-9]/.test(password) && (/[a-z]/.test(password)) || /[A-Z]/.test(password)) && (/[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/.test(password) && /\w/.test(password))) {
94
+ check.push('1')
95
+ }
96
+
97
+ if (password.length >= 8) {
98
+ check.push('2')
99
+ }
100
+ return check
101
+ }
@@ -1,27 +1,27 @@
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
- import Authapi from './authapi'
13
-
14
- export function getSupportedTemplate () {
15
- let api = new Authapi('getSupportedTemplate')
16
- return api.Send({}, {})
17
- }
18
- export function createTemplate (param) {
19
- let api = new Authapi('createTemplate')
20
- return api.Send({}, param, [])
21
- }
22
- export function getIntersectionInfo (agentid) {
23
- // 获取路口类型和相位信息
24
- let api = new Authapi('getIntersectionInfo')
25
- let paramList = [agentid]
26
- return api.Send({}, {}, paramList)
27
- }
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
+ import Authapi from './authapi'
13
+
14
+ export function getSupportedTemplate () {
15
+ let api = new Authapi('getSupportedTemplate')
16
+ return api.Send({}, {})
17
+ }
18
+ export function createTemplate (param) {
19
+ let api = new Authapi('createTemplate')
20
+ return api.Send({}, param, [])
21
+ }
22
+ export function getIntersectionInfo (agentid) {
23
+ // 获取路口类型和相位信息
24
+ let api = new Authapi('getIntersectionInfo')
25
+ let paramList = [agentid]
26
+ return api.Send({}, {}, paramList)
27
+ }
package/src/i18n/index.js CHANGED
@@ -1,26 +1,26 @@
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
- import locale from 'element-ui/lib/locale'
13
- import VueI18n from 'vue-i18n'
14
- import messages from './language'
15
- import Vue from 'vue'
16
-
17
- Vue.use(VueI18n)
18
-
19
- const i18n = new VueI18n({
20
- locale: 'zh', // 语言标识
21
- messages
22
- })
23
-
24
- locale.i18n((key, value) => i18n.t(key, value))
25
-
26
- export default i18n
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
+ import locale from 'element-ui/lib/locale'
13
+ import VueI18n from 'vue-i18n'
14
+ import messages from './language'
15
+ import Vue from 'vue'
16
+
17
+ Vue.use(VueI18n)
18
+
19
+ const i18n = new VueI18n({
20
+ locale: 'zh', // 语言标识
21
+ messages
22
+ })
23
+
24
+ locale.i18n((key, value) => i18n.t(key, value))
25
+
26
+ export default i18n