af-mobile-client-vue3 1.3.11 → 1.3.13

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 (268) hide show
  1. package/.claude/settings.local.json +10 -0
  2. package/.cursorrules +60 -60
  3. package/.editorconfig +9 -9
  4. package/.env +10 -10
  5. package/.env.development +1 -1
  6. package/.env.production +1 -1
  7. package/.node-version +1 -1
  8. package/.vscode/extensions.json +12 -12
  9. package/.vscode/settings.json +66 -66
  10. package/CLAUDE.md +189 -184
  11. package/README.md +182 -181
  12. package/af-example-mobile-vue-web.iml +9 -9
  13. package/build/vite/index.ts +98 -98
  14. package/build/vite/optimize.ts +34 -34
  15. package/build/vite/vconsole.ts +47 -47
  16. package/commitlint.config.ts +32 -32
  17. package/compress.js +36 -36
  18. package/eslint.config.ts +30 -30
  19. package/index.html +23 -23
  20. package/mock/data.ts +20 -20
  21. package/mock/index.ts +7 -7
  22. package/mock/modules/prose.mock.ts +13 -13
  23. package/mock/modules/user.mock.ts +152 -152
  24. package/mock/util.ts +19 -19
  25. package/netlify.toml +12 -12
  26. package/package.json +114 -114
  27. package/postcss.config.ts +27 -27
  28. package/public/favicon.svg +4 -4
  29. package/public/safari-pinned-tab.svg +4 -4
  30. package/scripts/verifyCommit.js +19 -19
  31. package/src/App.vue +79 -79
  32. package/src/api/mock/index.ts +30 -30
  33. package/src/api/user/index.ts +40 -40
  34. package/src/assets/img/user/login/background-shadow-1.svg +20 -20
  35. package/src/assets/img/user/login/logo-background.svg +20 -20
  36. package/src/bootstrap.ts +26 -26
  37. package/src/components/core/BeautifulLoading/index.vue +52 -52
  38. package/src/components/core/ImageUploader/index.vue +244 -244
  39. package/src/components/core/NavBar/index.vue +53 -53
  40. package/src/components/core/Tabbar/index.vue +32 -32
  41. package/src/components/core/Uploader/index.vue +124 -124
  42. package/src/components/core/XGridDropOption/index.vue +154 -156
  43. package/src/components/core/XMultiSelect/index.vue +183 -183
  44. package/src/components/core/XSelect/index.vue +149 -149
  45. package/src/components/data/InfoDisplay/index.vue +132 -0
  46. package/src/components/data/UserDetail/api.ts +24 -0
  47. package/src/components/data/UserDetail/index.vue +539 -0
  48. package/src/components/data/UserDetail/recordEntries.ts +159 -0
  49. package/src/components/data/UserDetail/types.ts +26 -0
  50. package/src/components/data/XBadge/index.vue +82 -82
  51. package/src/components/data/XCellDetail/index.vue +105 -105
  52. package/src/components/data/XCellList/XCellList.md +313 -313
  53. package/src/components/data/XCellList/index.vue +1075 -1075
  54. package/src/components/data/XCellListFilter/QrScanner/index.vue +207 -207
  55. package/src/components/data/XCellListFilter/QrScanner/startScanAnimation.ts +53 -53
  56. package/src/components/data/XCellListFilter/VpnRecognition/index.vue +119 -119
  57. package/src/components/data/XCellListFilter/index.vue +705 -705
  58. package/src/components/data/XForm/index.vue +659 -659
  59. package/src/components/data/XFormGroup/doc/DeviceForm.vue +121 -121
  60. package/src/components/data/XFormGroup/doc/FormGroupDemo.vue +56 -56
  61. package/src/components/data/XFormGroup/doc/README.md +286 -273
  62. package/src/components/data/XFormGroup/doc/UserForm.vue +101 -101
  63. package/src/components/data/XFormGroup/index.vue +240 -240
  64. package/src/components/data/XFormItem/index.vue +1310 -1310
  65. package/src/components/data/XOlMap/README.md +227 -227
  66. package/src/components/data/XOlMap/XLocationPicker/index.vue +226 -225
  67. package/src/components/data/XOlMap/index.vue +1490 -1490
  68. package/src/components/data/XOlMap/types.ts +149 -149
  69. package/src/components/data/XOlMap/utils/wgs84ToGcj02.js +154 -154
  70. package/src/components/data/XReportForm/DateTimeSecondsPicker.vue +208 -208
  71. package/src/components/data/XReportForm/XReportFormJsonRender.vue +220 -220
  72. package/src/components/data/XReportForm/index.vue +1393 -1393
  73. package/src/components/data/XReportGrid/XAddReport/XAddReport.vue +198 -198
  74. package/src/components/data/XReportGrid/XAddReport/index.js +3 -3
  75. package/src/components/data/XReportGrid/XAddReport/index.md +53 -52
  76. package/src/components/data/XReportGrid/XAddReport/index.ts +10 -10
  77. package/src/components/data/XReportGrid/XReport.vue +960 -960
  78. package/src/components/data/XReportGrid/XReportDesign.vue +597 -597
  79. package/src/components/data/XReportGrid/XReportDrawer/XReportDrawer.vue +148 -148
  80. package/src/components/data/XReportGrid/XReportDrawer/index.js +3 -3
  81. package/src/components/data/XReportGrid/XReportDrawer/index.ts +10 -10
  82. package/src/components/data/XReportGrid/XReportJsonRender.vue +399 -399
  83. package/src/components/data/XReportGrid/XReportTrGroup.vue +592 -592
  84. package/src/components/data/XReportGrid/index.md +46 -42
  85. package/src/components/data/XSignature/index.vue +284 -285
  86. package/src/components/data/XTag/index.vue +10 -10
  87. package/src/components/layout/NormalDataLayout/index.vue +69 -69
  88. package/src/components/layout/TabBarLayout/index.vue +40 -40
  89. package/src/composables/dark.ts +5 -5
  90. package/src/config/routes.ts +9 -9
  91. package/src/constants/index.ts +2 -2
  92. package/src/enums/requestEnum.ts +25 -25
  93. package/src/expression/ExpressionRunner.ts +28 -28
  94. package/src/expression/TestExpression.ts +510 -510
  95. package/src/expression/core/Delegate.ts +116 -116
  96. package/src/expression/core/Expression.ts +1359 -1359
  97. package/src/expression/core/Program.ts +985 -985
  98. package/src/expression/core/Token.ts +29 -29
  99. package/src/expression/enums/ExpressionType.ts +81 -81
  100. package/src/expression/enums/TokenType.ts +11 -11
  101. package/src/expression/exception/BreakWayException.ts +2 -2
  102. package/src/expression/exception/ContinueWayException.ts +2 -2
  103. package/src/expression/exception/ExpressionException.ts +29 -29
  104. package/src/expression/exception/ReturnWayException.ts +14 -14
  105. package/src/expression/exception/ServiceException.ts +22 -22
  106. package/src/expression/instances/JSONArray.ts +52 -52
  107. package/src/expression/instances/JSONObject.ts +118 -118
  108. package/src/expression/instances/LogicConsole.ts +31 -31
  109. package/src/font-style/font.css +4 -4
  110. package/src/hooks/useBoolean.ts +26 -0
  111. package/src/hooks/useCommon.ts +9 -9
  112. package/src/hooks/useLogin.ts +97 -97
  113. package/src/icons/svg/check-in.svg +32 -32
  114. package/src/icons/svg/dark.svg +4 -4
  115. package/src/icons/svg/github.svg +4 -4
  116. package/src/icons/svg/light.svg +4 -4
  117. package/src/icons/svg/link.svg +4 -4
  118. package/src/icons/svgo.yml +22 -22
  119. package/src/layout/GridView/index.vue +16 -16
  120. package/src/layout/PageLayout.vue +9 -9
  121. package/src/layout/SingleLayout.vue +9 -9
  122. package/src/locales/en-US.json +128 -128
  123. package/src/locales/zh-CN.json +128 -128
  124. package/src/logic/LogicRunner.ts +67 -67
  125. package/src/logic/TestLogic.ts +13 -13
  126. package/src/logic/plugins/common/DateTools.ts +35 -35
  127. package/src/logic/plugins/common/VueTools.ts +30 -30
  128. package/src/logic/plugins/index.ts +7 -7
  129. package/src/main.ts +44 -44
  130. package/src/plugins/AppData.ts +38 -38
  131. package/src/plugins/GetLoginInfoService.ts +10 -10
  132. package/src/plugins/collectIcons.ts +10 -0
  133. package/src/plugins/index.ts +11 -11
  134. package/src/router/README.md +8 -8
  135. package/src/router/guards.ts +59 -59
  136. package/src/router/index.ts +35 -35
  137. package/src/router/invoiceRoutes.ts +33 -33
  138. package/src/router/routes.ts +341 -171
  139. package/src/router/types.ts +7 -7
  140. package/src/services/api/Login.ts +6 -6
  141. package/src/services/api/common.ts +109 -109
  142. package/src/services/api/index.ts +7 -7
  143. package/src/services/api/manage.ts +8 -8
  144. package/src/services/api/search.ts +16 -16
  145. package/src/services/api/user.ts +17 -17
  146. package/src/services/restTools.ts +56 -56
  147. package/src/services/v3Api.ts +147 -147
  148. package/src/stores/index.ts +11 -11
  149. package/src/stores/modules/counter.ts +19 -19
  150. package/src/stores/modules/routeCache.ts +23 -23
  151. package/src/stores/modules/setting.ts +76 -76
  152. package/src/stores/modules/user.ts +235 -235
  153. package/src/stores/mutation-type.ts +7 -7
  154. package/src/styles/app.less +36 -36
  155. package/src/styles/login.less +109 -109
  156. package/src/styles/var.less +16 -16
  157. package/src/types/env.d.ts +16 -16
  158. package/src/types/settings.ts +1 -1
  159. package/src/types/vue-router.d.ts +9 -9
  160. package/src/utils/Storage.ts +124 -124
  161. package/src/utils/authority-utils.ts +84 -84
  162. package/src/utils/common.ts +41 -41
  163. package/src/utils/crypto.ts +39 -39
  164. package/src/utils/dataUtil.ts +42 -42
  165. package/src/utils/dictUtil.ts +52 -52
  166. package/src/utils/http/index.ts +199 -199
  167. package/src/utils/i18n.ts +72 -72
  168. package/src/utils/indexedDB.ts +195 -195
  169. package/src/utils/inline-px-to-vw.ts +28 -28
  170. package/src/utils/mobileUtil.ts +34 -34
  171. package/src/utils/progress.ts +19 -19
  172. package/src/utils/queryFormDefaultRangePicker.ts +57 -57
  173. package/src/utils/routerUtil.ts +271 -271
  174. package/src/utils/runEvalFunction.ts +13 -13
  175. package/src/utils/secureStorage.ts +71 -71
  176. package/src/utils/set-page-title.ts +5 -5
  177. package/src/utils/validate.ts +6 -6
  178. package/src/utils/wechatUtil.ts +9 -9
  179. package/src/views/chat/index.vue +153 -153
  180. package/src/views/common/LoadError.vue +63 -63
  181. package/src/views/common/NotFound.vue +67 -67
  182. package/src/views/component/EvaluateRecordView/index.vue +40 -40
  183. package/src/views/component/IconifyView/index.vue +504 -507
  184. package/src/views/component/UserDetailView/UserDetailPage.vue +77 -0
  185. package/src/views/component/UserDetailView/index.vue +224 -0
  186. package/src/views/component/XCellDetailView/index.vue +217 -217
  187. package/src/views/component/XCellListView/index.vue +108 -147
  188. package/src/views/component/XFormAppraiseView/index.vue +174 -174
  189. package/src/views/component/XFormGroupView/index.vue +78 -91
  190. package/src/views/component/XFormView/index.vue +27 -107
  191. package/src/views/component/XOlMapView/XLocationPicker/index.vue +118 -118
  192. package/src/views/component/XOlMapView/index.vue +434 -434
  193. package/src/views/component/XOlMapView/testData.ts +64 -64
  194. package/src/views/component/XReportFormIframeView/index.vue +47 -47
  195. package/src/views/component/XReportFormView/index.vue +13 -13
  196. package/src/views/component/XReportGridView/index.vue +17 -17
  197. package/src/views/component/XRequestView/index.vue +234 -234
  198. package/src/views/component/XSignatureView/index.vue +50 -50
  199. package/src/views/component/index.vue +181 -177
  200. package/src/views/component/menu.vue +117 -117
  201. package/src/views/component/notice.vue +46 -46
  202. package/src/views/component/topNav.vue +36 -36
  203. package/src/views/invoiceShow/index.vue +61 -61
  204. package/src/views/user/login/ForgetPasswordForm.vue +94 -94
  205. package/src/views/user/login/LoginForm.vue +346 -346
  206. package/src/views/user/login/LoginTitle.vue +76 -76
  207. package/src/views/user/login/LoginWave.vue +109 -109
  208. package/src/views/user/login/index.vue +22 -22
  209. package/src/views/user/my/comm/ModifyPassword.vue +346 -346
  210. package/src/views/user/my/index.vue +340 -340
  211. package/src/views/userRecords/AbnormalAlarmRecords.vue +21 -0
  212. package/src/views/userRecords/CardReplacementRecords.vue +21 -0
  213. package/src/views/userRecords/ChangeRecords.vue +19 -0
  214. package/src/views/userRecords/CommandViewRecords.vue +20 -0
  215. package/src/views/userRecords/GasCompensationRecords.vue +20 -0
  216. package/src/views/userRecords/InstrumentCollectionRecords.vue +21 -0
  217. package/src/views/userRecords/MeterRecords.vue +20 -0
  218. package/src/views/userRecords/OperateRecords.vue +51 -0
  219. package/src/views/userRecords/OtherChargeRecords.vue +19 -0
  220. package/src/views/userRecords/PaymentRecords.vue +28 -0
  221. package/src/views/userRecords/PriceAdjustmentRecords.vue +19 -0
  222. package/src/views/userRecords/ReplacementRecords.vue +19 -0
  223. package/src/views/userRecords/SafetyRecords.vue +19 -0
  224. package/src/views/userRecords/TransactionRecords.vue +21 -0
  225. package/src/views/userRecords/TransferRecords.vue +19 -0
  226. package/src/views/userRecords/operateRecordDetail/index.vue +316 -0
  227. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AddUserDetail.vue +124 -0
  228. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AdvanceDeliveryDetail.vue +88 -0
  229. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsCancelDetail.vue +205 -0
  230. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsDetail.vue +192 -0
  231. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankDkDetail.vue +192 -0
  232. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankPayDetail.vue +192 -0
  233. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BlacklistDetail.vue +153 -0
  234. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CancellationDetail.vue +101 -0
  235. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterCancelDetail.vue +127 -0
  236. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterDetail.vue +153 -0
  237. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardOverUserDetail.vue +153 -0
  238. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterCancelDetail.vue +166 -0
  239. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterDetail.vue +205 -0
  240. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/DisableManageDetail.vue +127 -0
  241. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/EnableManageDetail.vue +114 -0
  242. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FaZheChangeDetail.vue +124 -0
  243. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FeeDeductionDetail.vue +153 -0
  244. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/GasPriceChangeDetail.vue +126 -0
  245. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/InputtorChangeDetail.vue +126 -0
  246. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterCancelDetail.vue +114 -0
  247. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterDetail.vue +127 -0
  248. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotOpenDetail.vue +88 -0
  249. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineCardDetail.vue +101 -0
  250. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterCancelDetail.vue +218 -0
  251. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterDetail.vue +153 -0
  252. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OffGasAddGasDetail.vue +140 -0
  253. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeCancelDetail.vue +127 -0
  254. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeDetail.vue +114 -0
  255. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OverUserChangeDetail.vue +127 -0
  256. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReBillDetail.vue +127 -0
  257. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/RefundDetail.vue +114 -0
  258. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageCancelDetail.vue +127 -0
  259. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageDetail.vue +114 -0
  260. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/SaleCardGasDetail.vue +140 -0
  261. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageCancelDetail.vue +152 -0
  262. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageDetail.vue +178 -0
  263. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/UserChangeDetail.vue +123 -0
  264. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/WechatPayDetail.vue +192 -0
  265. package/src/views/userRecords/types.ts +66 -0
  266. package/tsconfig.json +39 -39
  267. package/uno.config.ts +82 -78
  268. package/vite.config.ts +118 -118
@@ -1,510 +1,510 @@
1
- import Program from './core/Program'
2
- import JSONObject from './instances/JSONObject'
3
- import LogicConsole from './instances/LogicConsole'
4
-
5
- console.info('1.========testValidate========')
6
- testValidate()
7
- console.info('2.========testAssert========')
8
- testAssert()
9
- console.info('3.========testTry========')
10
- testTry()
11
- console.info('4.========testPropertyType========')
12
- testPropertyType()
13
- console.info('5.========testJSONArrayIndex========')
14
- testJSONArrayIndex()
15
- console.info('6.========testArrayIndex========')
16
- testArrayIndex()
17
- console.info('7.========testCompare========')
18
- testCompare()
19
- console.info('8.========testJSONObject========')
20
- testJSONObject()
21
- console.info('9.========testJSONArray========')
22
- testJSONArray()
23
- console.info('10.========testFunctionCall========')
24
- testFunctionCall()
25
- console.info('11.========testMath========')
26
- testMath()
27
- console.info('12.========testString========')
28
- testString()
29
- console.info('13.========testCondition========')
30
- testCondition()
31
- console.info('14.========testThrow========')
32
- testThrow()
33
- console.info('15.========testJSONArrayLoop========')
34
- testJSONArrayLoop()
35
- console.info('16.========testJSONObjectLoop========')
36
- testJSONObjectLoop()
37
- console.info('17.========testIntLoop========')
38
- testIntLoop()
39
- console.info('18.========testContinueAndBreak========')
40
- testContinueAndBreak()
41
- console.info('19.========testComment========')
42
- testComment()
43
- console.info('20.========testReturn========')
44
- testReturn()
45
- console.info('21.========testLambda========')
46
- testLambda()
47
-
48
- /**
49
- * validate
50
- */
51
- function testValidate() {
52
- const expression = `
53
- validate {
54
- model: {
55
- required: true,
56
- },
57
- visible: {
58
- default: 1 + 1,
59
- },
60
- isAep: {
61
- default: 3
62
- },
63
- testJson: {
64
- required: true,
65
- items: {
66
- userid: {
67
- required: true
68
- }
69
- }
70
- },
71
- testGroup: {
72
- mode: "atLeastOne",
73
- fields: [
74
- "test1",
75
- "test2"
76
- ]
77
- }
78
- },
79
- data.isAep == 3 :(
80
- log.info(123)
81
- ),null,
82
- log.info(data)
83
- `
84
- const data = {
85
- model: 'a',
86
- test1: 'b',
87
- isAep: null,
88
- testJson: {
89
- userid: {},
90
- },
91
- }
92
- runExpression(expression, data)
93
- }
94
-
95
- /**
96
- * assert
97
- */
98
- function testAssert() {
99
- const expression = `
100
- c = 1,
101
- assert c == 1,
102
- log.debug("ok"),
103
- a = 1 + c,
104
- assert a == 2,
105
- log.debug("ok2")`
106
- runExpression(expression)
107
- }
108
-
109
- /**
110
- * try
111
- */
112
- function testTry() {
113
- const expression = `
114
- a = 0,
115
- log.debug(a),
116
- try {
117
- assert c == 2
118
- } catch (WebException e) {
119
- log.debug(e),
120
- a = 1 + 1
121
- } catch (Exception e) {
122
- log.debug(e),
123
- a = 1 + 2
124
- },
125
- log.debug(a)
126
- `
127
- runExpression(expression)
128
- }
129
-
130
- /**
131
- * property
132
- */
133
- function testPropertyType() {
134
- const expression = `
135
- a = 1,
136
- b = 2.0,
137
- c = {
138
- d: 1,
139
- e: {
140
- str: "123",
141
- 你好: "中国"
142
- }
143
- },
144
- c.a = 1,
145
- log.debug(c.e.你好),
146
- log.debug(c["e"].str),
147
- e = c.d,
148
- f = "123",
149
- g = [],
150
- 名称 = "123=>",
151
- log.debug(data.testArray[0]),
152
- return 名称
153
- `
154
- const data = {
155
- testArray: 'zhang|b|c'.split('\|'),
156
- }
157
- runExpression(expression, data)
158
- }
159
-
160
- /**
161
- * JSONArray index
162
- */
163
- function testJSONArrayIndex() {
164
- const expression = `
165
- a = [1,2,3,4,5],
166
- return a[4]
167
- `
168
- runExpression(expression)
169
- }
170
-
171
- /**
172
- * array index
173
- */
174
- function testArrayIndex() {
175
- const expression = `
176
- return data.a[4]
177
- `
178
- const data = {
179
- a: [1, 2, 3, 4, 5],
180
- }
181
- runExpression(expression, data)
182
- }
183
-
184
- function testCompare() {
185
- const expression = `
186
- a = 0,
187
- a >= 0 :(
188
- a = a + 1,
189
- b = 1,
190
- a == b :(
191
- c = 3.0,
192
- a < c :(
193
- a + 2,
194
- a <= c :(
195
- strA = $a$,
196
- strB = $b$,
197
- strC = $c$,
198
- strA < strB && strA != strC :(
199
- return $ok$
200
- ),null
201
- ),null
202
- ),null
203
- ),null
204
- ),null
205
- `
206
- runExpression(expression)
207
- }
208
-
209
- /**
210
- * JSONObject
211
- */
212
- function testJSONObject() {
213
- const expression = `
214
- datas = {
215
- name: "张三",
216
- 年龄: 15,
217
- },
218
- datas
219
- `
220
- runExpression(expression)
221
- }
222
-
223
- /**
224
- * JSONArray
225
- */
226
- function testJSONArray() {
227
- const expression = `
228
- datas = ["a","b","c"],
229
- datas
230
- `
231
- runExpression(expression)
232
- }
233
-
234
- /**
235
- * function call
236
- */
237
- function testFunctionCall() {
238
- const expression = `
239
- log.debug("test is ok")
240
- `
241
- runExpression(expression)
242
- }
243
-
244
- /**
245
- * math
246
- */
247
- function testMath() {
248
- const expression = `
249
- a = 1,
250
- b = 2,
251
- c = a + b,
252
- c = c - 1,
253
- d = 5 * 8,
254
- e = d / 10,
255
- e = e % 2,
256
- c
257
- `
258
- runExpression(expression)
259
- }
260
-
261
- /**
262
- * string
263
- */
264
- function testString() {
265
- const expression = `
266
- test1 = {}.toString(),
267
- log.debug(test1),
268
- a = $part1$,
269
- log.debug(a),
270
- b = "part2",
271
- log.debug(b),
272
- c = "{a}:{b}",
273
- log.debug(c),
274
- d = "{name}:张三",
275
- log.debug(d),
276
- e = "\\{name\\}:张三",
277
- log.debug(e),
278
- f = "\\"123\\"",
279
- log.debug(f),
280
- g = "\\$15.7",
281
- log.debug(g),
282
- h = $\\$15.7$,
283
- log.debug(h),
284
- i = "http:\\\\www.baidu.com",
285
- log.debug(i),
286
- j = $http://www.baidu.com$,
287
- log.debug(j)
288
- `
289
- runExpression(expression)
290
- }
291
-
292
- /**
293
- * condition
294
- */
295
- function testCondition() {
296
- const expression = `
297
- 1 != 1 :(
298
- throw "异常"
299
- ),null,
300
- 1 + 1 != 2 :(
301
- throw "异常"
302
- ),null,
303
- !(2 > 3) && !(3 > 2):(
304
- throw "异常"
305
- ),null,
306
- 2 > 3 :(
307
- throw "异常"
308
- ),null,
309
- !(3 > 2) :(
310
- throw "异常"
311
- ),null,
312
- y = 1 > 0,
313
- !y && 1 > 0 :(
314
- throw "异常"
315
- ),null
316
- `
317
- const data = {
318
- type: '1',
319
- }
320
- runExpression(expression, data)
321
- }
322
-
323
- /**
324
- * throw
325
- */
326
- function testThrow() {
327
- const expression = `
328
- data.type == 2 :(
329
- throw "error",
330
- log.debug(result)
331
- ),null
332
- `
333
- const data = {
334
- type: '1',
335
- }
336
- runExpression(expression, data)
337
- }
338
-
339
- /**
340
- * JSONArray loop
341
- */
342
- function testJSONArrayLoop() {
343
- const expression = `
344
- log.debug("test-JSONArray"),
345
- datas = [1,2,3,4,5],
346
- datas.each(
347
- log.debug(\${row}\$)
348
- ),
349
- log.debug("test-Set"),
350
- data.testSet.each(
351
- log.debug(\${row}\$)
352
- ),
353
- log.debug("test-Array"),
354
- data.testArray.each(
355
- log.debug(\${row}\$)
356
- )
357
- `
358
- const data = {
359
- testSet: [1, 2, 3, 4, 5],
360
- testArray: 'a|b|c'.split('\|'),
361
- }
362
- runExpression(expression, data)
363
- }
364
-
365
- /**
366
- * JSONObject loop
367
- */
368
- function testJSONObjectLoop() {
369
- const expression = `
370
- log.debug("test-JSONObject"),
371
- datas = {name: 1, age: 2},
372
- datas.each(
373
- log.debug(\${rowKey}:{row}$)
374
- ),
375
- log.debug("test-Map"),
376
- data.testMap.each(
377
- log.debug(\${rowKey}:{row}$)
378
- )
379
- `
380
- const data = {
381
- testMap: {
382
- name: 'xxx',
383
- age: 18,
384
- gender: '男',
385
- },
386
- }
387
- runExpression(expression, data)
388
- }
389
-
390
- /**
391
- * int loop
392
- */
393
- function testIntLoop() {
394
- const expression = `
395
- a = 5,
396
- a.each(
397
- log.debug(row)
398
- ),
399
- (0,5).each(
400
- log.debug(row)
401
- ),
402
- null
403
- `
404
- runExpression(expression)
405
- }
406
-
407
- /**
408
- * continue and break
409
- */
410
- function testContinueAndBreak() {
411
- const expression = `
412
- datas = [1,2,3,4,5,6,7],
413
- datas.each(
414
- row == 3 :(
415
- continue
416
- ),row == 5:(
417
- break
418
- ),
419
- log.debug(row)
420
- )
421
- `
422
- runExpression(expression)
423
- }
424
-
425
- /**
426
- * comment
427
- */
428
- function testComment() {
429
- const expression = `
430
- $//排序单表查询
431
- select {items}
432
- from {tablename}
433
- where {condition}
434
- order by {orderitem}
435
- `
436
- runExpression(expression)
437
- }
438
-
439
- /**
440
- * return
441
- */
442
- function testReturn() {
443
- const expression = `
444
- data.type == 1 :(
445
- return "123",
446
- log.debug(123)
447
- ),(
448
- return 2
449
- ),
450
- log.debug(123)
451
- `
452
- const data = {
453
- type: 1,
454
- }
455
- runExpression(expression, data)
456
- }
457
-
458
- /**
459
- * lambda
460
- */
461
- function testLambda() {
462
- const expression = `
463
- log.debug("进入外层逻辑,参数:{data}"),
464
- age = 13,
465
- // 声明一个lambda块
466
- lambdaObj = (data) => {
467
- index = 1,
468
- log.debug("进入lambda了"),
469
- log.debug("传入lambda块的参数:{data}"),
470
- log.debug("外层的只读参数:{age}"),
471
- return "执行lambda完成"
472
- },
473
- log.debug("age参数:{age}"),
474
- result = lambdaObj.apply({
475
- name: "江超"
476
- }),
477
- result = lambdaObj.apply({
478
- name: "大神"
479
- }),
480
- log.debug("result:{result}"),
481
- return {
482
- func: lambdaObj
483
- }
484
- `
485
- const data = {
486
- type: 1,
487
- }
488
- runExpression(expression, data)
489
- }
490
-
491
- function runExpression(expression: string, data?: any) {
492
- const program = new Program(expression)
493
- const d = program.parse()
494
- const params: any = {}
495
- if (data == null) {
496
- data = {}
497
- }
498
- params.data = data
499
- params.log = new LogicConsole()
500
- params.b = 5
501
- // eslint-disable-next-line no-useless-catch
502
- try {
503
- const result = d.invoke(new JSONObject(params))
504
- console.log(result)
505
- return result
506
- }
507
- catch (e) {
508
- throw e
509
- }
510
- }
1
+ import Program from './core/Program'
2
+ import JSONObject from './instances/JSONObject'
3
+ import LogicConsole from './instances/LogicConsole'
4
+
5
+ console.info('1.========testValidate========')
6
+ testValidate()
7
+ console.info('2.========testAssert========')
8
+ testAssert()
9
+ console.info('3.========testTry========')
10
+ testTry()
11
+ console.info('4.========testPropertyType========')
12
+ testPropertyType()
13
+ console.info('5.========testJSONArrayIndex========')
14
+ testJSONArrayIndex()
15
+ console.info('6.========testArrayIndex========')
16
+ testArrayIndex()
17
+ console.info('7.========testCompare========')
18
+ testCompare()
19
+ console.info('8.========testJSONObject========')
20
+ testJSONObject()
21
+ console.info('9.========testJSONArray========')
22
+ testJSONArray()
23
+ console.info('10.========testFunctionCall========')
24
+ testFunctionCall()
25
+ console.info('11.========testMath========')
26
+ testMath()
27
+ console.info('12.========testString========')
28
+ testString()
29
+ console.info('13.========testCondition========')
30
+ testCondition()
31
+ console.info('14.========testThrow========')
32
+ testThrow()
33
+ console.info('15.========testJSONArrayLoop========')
34
+ testJSONArrayLoop()
35
+ console.info('16.========testJSONObjectLoop========')
36
+ testJSONObjectLoop()
37
+ console.info('17.========testIntLoop========')
38
+ testIntLoop()
39
+ console.info('18.========testContinueAndBreak========')
40
+ testContinueAndBreak()
41
+ console.info('19.========testComment========')
42
+ testComment()
43
+ console.info('20.========testReturn========')
44
+ testReturn()
45
+ console.info('21.========testLambda========')
46
+ testLambda()
47
+
48
+ /**
49
+ * validate
50
+ */
51
+ function testValidate() {
52
+ const expression = `
53
+ validate {
54
+ model: {
55
+ required: true,
56
+ },
57
+ visible: {
58
+ default: 1 + 1,
59
+ },
60
+ isAep: {
61
+ default: 3
62
+ },
63
+ testJson: {
64
+ required: true,
65
+ items: {
66
+ userid: {
67
+ required: true
68
+ }
69
+ }
70
+ },
71
+ testGroup: {
72
+ mode: "atLeastOne",
73
+ fields: [
74
+ "test1",
75
+ "test2"
76
+ ]
77
+ }
78
+ },
79
+ data.isAep == 3 :(
80
+ log.info(123)
81
+ ),null,
82
+ log.info(data)
83
+ `
84
+ const data = {
85
+ model: 'a',
86
+ test1: 'b',
87
+ isAep: null,
88
+ testJson: {
89
+ userid: {},
90
+ },
91
+ }
92
+ runExpression(expression, data)
93
+ }
94
+
95
+ /**
96
+ * assert
97
+ */
98
+ function testAssert() {
99
+ const expression = `
100
+ c = 1,
101
+ assert c == 1,
102
+ log.debug("ok"),
103
+ a = 1 + c,
104
+ assert a == 2,
105
+ log.debug("ok2")`
106
+ runExpression(expression)
107
+ }
108
+
109
+ /**
110
+ * try
111
+ */
112
+ function testTry() {
113
+ const expression = `
114
+ a = 0,
115
+ log.debug(a),
116
+ try {
117
+ assert c == 2
118
+ } catch (WebException e) {
119
+ log.debug(e),
120
+ a = 1 + 1
121
+ } catch (Exception e) {
122
+ log.debug(e),
123
+ a = 1 + 2
124
+ },
125
+ log.debug(a)
126
+ `
127
+ runExpression(expression)
128
+ }
129
+
130
+ /**
131
+ * property
132
+ */
133
+ function testPropertyType() {
134
+ const expression = `
135
+ a = 1,
136
+ b = 2.0,
137
+ c = {
138
+ d: 1,
139
+ e: {
140
+ str: "123",
141
+ 你好: "中国"
142
+ }
143
+ },
144
+ c.a = 1,
145
+ log.debug(c.e.你好),
146
+ log.debug(c["e"].str),
147
+ e = c.d,
148
+ f = "123",
149
+ g = [],
150
+ 名称 = "123=>",
151
+ log.debug(data.testArray[0]),
152
+ return 名称
153
+ `
154
+ const data = {
155
+ testArray: 'zhang|b|c'.split('\|'),
156
+ }
157
+ runExpression(expression, data)
158
+ }
159
+
160
+ /**
161
+ * JSONArray index
162
+ */
163
+ function testJSONArrayIndex() {
164
+ const expression = `
165
+ a = [1,2,3,4,5],
166
+ return a[4]
167
+ `
168
+ runExpression(expression)
169
+ }
170
+
171
+ /**
172
+ * array index
173
+ */
174
+ function testArrayIndex() {
175
+ const expression = `
176
+ return data.a[4]
177
+ `
178
+ const data = {
179
+ a: [1, 2, 3, 4, 5],
180
+ }
181
+ runExpression(expression, data)
182
+ }
183
+
184
+ function testCompare() {
185
+ const expression = `
186
+ a = 0,
187
+ a >= 0 :(
188
+ a = a + 1,
189
+ b = 1,
190
+ a == b :(
191
+ c = 3.0,
192
+ a < c :(
193
+ a + 2,
194
+ a <= c :(
195
+ strA = $a$,
196
+ strB = $b$,
197
+ strC = $c$,
198
+ strA < strB && strA != strC :(
199
+ return $ok$
200
+ ),null
201
+ ),null
202
+ ),null
203
+ ),null
204
+ ),null
205
+ `
206
+ runExpression(expression)
207
+ }
208
+
209
+ /**
210
+ * JSONObject
211
+ */
212
+ function testJSONObject() {
213
+ const expression = `
214
+ datas = {
215
+ name: "张三",
216
+ 年龄: 15,
217
+ },
218
+ datas
219
+ `
220
+ runExpression(expression)
221
+ }
222
+
223
+ /**
224
+ * JSONArray
225
+ */
226
+ function testJSONArray() {
227
+ const expression = `
228
+ datas = ["a","b","c"],
229
+ datas
230
+ `
231
+ runExpression(expression)
232
+ }
233
+
234
+ /**
235
+ * function call
236
+ */
237
+ function testFunctionCall() {
238
+ const expression = `
239
+ log.debug("test is ok")
240
+ `
241
+ runExpression(expression)
242
+ }
243
+
244
+ /**
245
+ * math
246
+ */
247
+ function testMath() {
248
+ const expression = `
249
+ a = 1,
250
+ b = 2,
251
+ c = a + b,
252
+ c = c - 1,
253
+ d = 5 * 8,
254
+ e = d / 10,
255
+ e = e % 2,
256
+ c
257
+ `
258
+ runExpression(expression)
259
+ }
260
+
261
+ /**
262
+ * string
263
+ */
264
+ function testString() {
265
+ const expression = `
266
+ test1 = {}.toString(),
267
+ log.debug(test1),
268
+ a = $part1$,
269
+ log.debug(a),
270
+ b = "part2",
271
+ log.debug(b),
272
+ c = "{a}:{b}",
273
+ log.debug(c),
274
+ d = "{name}:张三",
275
+ log.debug(d),
276
+ e = "\\{name\\}:张三",
277
+ log.debug(e),
278
+ f = "\\"123\\"",
279
+ log.debug(f),
280
+ g = "\\$15.7",
281
+ log.debug(g),
282
+ h = $\\$15.7$,
283
+ log.debug(h),
284
+ i = "http:\\\\www.baidu.com",
285
+ log.debug(i),
286
+ j = $http://www.baidu.com$,
287
+ log.debug(j)
288
+ `
289
+ runExpression(expression)
290
+ }
291
+
292
+ /**
293
+ * condition
294
+ */
295
+ function testCondition() {
296
+ const expression = `
297
+ 1 != 1 :(
298
+ throw "异常"
299
+ ),null,
300
+ 1 + 1 != 2 :(
301
+ throw "异常"
302
+ ),null,
303
+ !(2 > 3) && !(3 > 2):(
304
+ throw "异常"
305
+ ),null,
306
+ 2 > 3 :(
307
+ throw "异常"
308
+ ),null,
309
+ !(3 > 2) :(
310
+ throw "异常"
311
+ ),null,
312
+ y = 1 > 0,
313
+ !y && 1 > 0 :(
314
+ throw "异常"
315
+ ),null
316
+ `
317
+ const data = {
318
+ type: '1',
319
+ }
320
+ runExpression(expression, data)
321
+ }
322
+
323
+ /**
324
+ * throw
325
+ */
326
+ function testThrow() {
327
+ const expression = `
328
+ data.type == 2 :(
329
+ throw "error",
330
+ log.debug(result)
331
+ ),null
332
+ `
333
+ const data = {
334
+ type: '1',
335
+ }
336
+ runExpression(expression, data)
337
+ }
338
+
339
+ /**
340
+ * JSONArray loop
341
+ */
342
+ function testJSONArrayLoop() {
343
+ const expression = `
344
+ log.debug("test-JSONArray"),
345
+ datas = [1,2,3,4,5],
346
+ datas.each(
347
+ log.debug(\${row}\$)
348
+ ),
349
+ log.debug("test-Set"),
350
+ data.testSet.each(
351
+ log.debug(\${row}\$)
352
+ ),
353
+ log.debug("test-Array"),
354
+ data.testArray.each(
355
+ log.debug(\${row}\$)
356
+ )
357
+ `
358
+ const data = {
359
+ testSet: [1, 2, 3, 4, 5],
360
+ testArray: 'a|b|c'.split('\|'),
361
+ }
362
+ runExpression(expression, data)
363
+ }
364
+
365
+ /**
366
+ * JSONObject loop
367
+ */
368
+ function testJSONObjectLoop() {
369
+ const expression = `
370
+ log.debug("test-JSONObject"),
371
+ datas = {name: 1, age: 2},
372
+ datas.each(
373
+ log.debug(\${rowKey}:{row}$)
374
+ ),
375
+ log.debug("test-Map"),
376
+ data.testMap.each(
377
+ log.debug(\${rowKey}:{row}$)
378
+ )
379
+ `
380
+ const data = {
381
+ testMap: {
382
+ name: 'xxx',
383
+ age: 18,
384
+ gender: '男',
385
+ },
386
+ }
387
+ runExpression(expression, data)
388
+ }
389
+
390
+ /**
391
+ * int loop
392
+ */
393
+ function testIntLoop() {
394
+ const expression = `
395
+ a = 5,
396
+ a.each(
397
+ log.debug(row)
398
+ ),
399
+ (0,5).each(
400
+ log.debug(row)
401
+ ),
402
+ null
403
+ `
404
+ runExpression(expression)
405
+ }
406
+
407
+ /**
408
+ * continue and break
409
+ */
410
+ function testContinueAndBreak() {
411
+ const expression = `
412
+ datas = [1,2,3,4,5,6,7],
413
+ datas.each(
414
+ row == 3 :(
415
+ continue
416
+ ),row == 5:(
417
+ break
418
+ ),
419
+ log.debug(row)
420
+ )
421
+ `
422
+ runExpression(expression)
423
+ }
424
+
425
+ /**
426
+ * comment
427
+ */
428
+ function testComment() {
429
+ const expression = `
430
+ $//排序单表查询
431
+ select {items}
432
+ from {tablename}
433
+ where {condition}
434
+ order by {orderitem}
435
+ `
436
+ runExpression(expression)
437
+ }
438
+
439
+ /**
440
+ * return
441
+ */
442
+ function testReturn() {
443
+ const expression = `
444
+ data.type == 1 :(
445
+ return "123",
446
+ log.debug(123)
447
+ ),(
448
+ return 2
449
+ ),
450
+ log.debug(123)
451
+ `
452
+ const data = {
453
+ type: 1,
454
+ }
455
+ runExpression(expression, data)
456
+ }
457
+
458
+ /**
459
+ * lambda
460
+ */
461
+ function testLambda() {
462
+ const expression = `
463
+ log.debug("进入外层逻辑,参数:{data}"),
464
+ age = 13,
465
+ // 声明一个lambda块
466
+ lambdaObj = (data) => {
467
+ index = 1,
468
+ log.debug("进入lambda了"),
469
+ log.debug("传入lambda块的参数:{data}"),
470
+ log.debug("外层的只读参数:{age}"),
471
+ return "执行lambda完成"
472
+ },
473
+ log.debug("age参数:{age}"),
474
+ result = lambdaObj.apply({
475
+ name: "江超"
476
+ }),
477
+ result = lambdaObj.apply({
478
+ name: "大神"
479
+ }),
480
+ log.debug("result:{result}"),
481
+ return {
482
+ func: lambdaObj
483
+ }
484
+ `
485
+ const data = {
486
+ type: 1,
487
+ }
488
+ runExpression(expression, data)
489
+ }
490
+
491
+ function runExpression(expression: string, data?: any) {
492
+ const program = new Program(expression)
493
+ const d = program.parse()
494
+ const params: any = {}
495
+ if (data == null) {
496
+ data = {}
497
+ }
498
+ params.data = data
499
+ params.log = new LogicConsole()
500
+ params.b = 5
501
+ // eslint-disable-next-line no-useless-catch
502
+ try {
503
+ const result = d.invoke(new JSONObject(params))
504
+ console.log(result)
505
+ return result
506
+ }
507
+ catch (e) {
508
+ throw e
509
+ }
510
+ }