af-mobile-client-vue3 1.3.15 → 1.3.17

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 (273) hide show
  1. package/.cursorrules +60 -60
  2. package/.editorconfig +9 -9
  3. package/.env +10 -10
  4. package/.env.development +1 -1
  5. package/.env.production +1 -1
  6. package/.node-version +1 -1
  7. package/.vscode/extensions.json +12 -12
  8. package/.vscode/settings.json +66 -66
  9. package/CLAUDE.md +189 -189
  10. package/README.md +182 -182
  11. package/af-example-mobile-vue-web.iml +9 -9
  12. package/build/vite/index.ts +98 -98
  13. package/build/vite/optimize.ts +34 -34
  14. package/build/vite/vconsole.ts +47 -47
  15. package/commitlint.config.ts +32 -32
  16. package/compress.js +36 -36
  17. package/eslint.config.ts +30 -30
  18. package/index.html +23 -23
  19. package/mock/data.ts +20 -20
  20. package/mock/index.ts +7 -7
  21. package/mock/modules/prose.mock.ts +13 -13
  22. package/mock/modules/user.mock.ts +152 -152
  23. package/mock/util.ts +19 -19
  24. package/netlify.toml +12 -12
  25. package/package.json +114 -114
  26. package/postcss.config.ts +27 -27
  27. package/public/favicon.svg +4 -4
  28. package/public/safari-pinned-tab.svg +4 -4
  29. package/scripts/verifyCommit.js +19 -19
  30. package/src/App.vue +79 -79
  31. package/src/api/mock/index.ts +30 -30
  32. package/src/api/user/index.ts +40 -40
  33. package/src/assets/img/user/login/background-shadow-1.svg +20 -20
  34. package/src/assets/img/user/login/logo-background.svg +20 -20
  35. package/src/bootstrap.ts +26 -26
  36. package/src/components/core/BeautifulLoading/index.vue +52 -52
  37. package/src/components/core/ImageUploader/index.vue +244 -244
  38. package/src/components/core/NavBar/index.vue +53 -53
  39. package/src/components/core/Tabbar/index.vue +32 -32
  40. package/src/components/core/Uploader/index.vue +124 -124
  41. package/src/components/core/XGridDropOption/index.vue +154 -154
  42. package/src/components/core/XMultiSelect/index.vue +183 -183
  43. package/src/components/core/XSelect/index.vue +149 -149
  44. package/src/components/data/{CardHeader → CardContainer}/CardContainer.vue +118 -118
  45. package/src/components/data/{CardHeader → CardContainer}/CardHeader.vue +99 -99
  46. package/src/components/data/InfoDisplay/index.vue +132 -132
  47. package/src/components/data/UserDetail/api.ts +24 -24
  48. package/src/components/data/UserDetail/index.vue +620 -620
  49. package/src/components/data/UserDetail/recordEntries.ts +159 -159
  50. package/src/components/data/UserDetail/types.ts +26 -26
  51. package/src/components/data/XBadge/index.vue +82 -82
  52. package/src/components/data/XCellDetail/index.vue +105 -105
  53. package/src/components/data/XCellList/XCellList.md +313 -313
  54. package/src/components/data/XCellList/index.vue +1110 -1075
  55. package/src/components/data/XCellListFilter/QrScanner/index.vue +207 -207
  56. package/src/components/data/XCellListFilter/QrScanner/startScanAnimation.ts +53 -53
  57. package/src/components/data/XCellListFilter/VpnRecognition/index.vue +119 -119
  58. package/src/components/data/XCellListFilter/index.vue +705 -705
  59. package/src/components/data/XForm/index.vue +659 -659
  60. package/src/components/data/XFormGroup/doc/DeviceForm.vue +122 -122
  61. package/src/components/data/XFormGroup/doc/FormGroupDemo.vue +56 -56
  62. package/src/components/data/XFormGroup/doc/README.md +286 -286
  63. package/src/components/data/XFormGroup/doc/UserForm.vue +102 -102
  64. package/src/components/data/XFormGroup/index.vue +240 -240
  65. package/src/components/data/XFormItem/index.vue +1310 -1310
  66. package/src/components/data/XOlMap/README.md +227 -227
  67. package/src/components/data/XOlMap/XLocationPicker/index.vue +226 -226
  68. package/src/components/data/XOlMap/index.vue +1490 -1490
  69. package/src/components/data/XOlMap/types.ts +149 -149
  70. package/src/components/data/XOlMap/utils/wgs84ToGcj02.js +154 -154
  71. package/src/components/data/XReportForm/DateTimeSecondsPicker.vue +208 -208
  72. package/src/components/data/XReportForm/XReportFormJsonRender.vue +220 -220
  73. package/src/components/data/XReportForm/index.vue +1393 -1393
  74. package/src/components/data/XReportGrid/XAddReport/XAddReport.vue +198 -198
  75. package/src/components/data/XReportGrid/XAddReport/index.js +3 -3
  76. package/src/components/data/XReportGrid/XAddReport/index.md +53 -53
  77. package/src/components/data/XReportGrid/XAddReport/index.ts +10 -10
  78. package/src/components/data/XReportGrid/XReport.vue +960 -960
  79. package/src/components/data/XReportGrid/XReportDemo.vue +33 -33
  80. package/src/components/data/XReportGrid/XReportDesign.vue +597 -597
  81. package/src/components/data/XReportGrid/XReportDrawer/XReportDrawer.vue +148 -148
  82. package/src/components/data/XReportGrid/XReportDrawer/index.js +3 -3
  83. package/src/components/data/XReportGrid/XReportDrawer/index.ts +10 -10
  84. package/src/components/data/XReportGrid/XReportJsonRender.vue +399 -399
  85. package/src/components/data/XReportGrid/XReportTrGroup.vue +592 -592
  86. package/src/components/data/XReportGrid/index.md +46 -46
  87. package/src/components/data/XReportGrid/print.js +184 -184
  88. package/src/components/data/XSignature/index.vue +284 -284
  89. package/src/components/data/XTag/index.vue +10 -10
  90. package/src/components/layout/NormalDataLayout/index.vue +69 -69
  91. package/src/components/layout/TabBarLayout/index.vue +40 -40
  92. package/src/composables/dark.ts +5 -5
  93. package/src/config/routes.ts +9 -9
  94. package/src/constants/index.ts +2 -2
  95. package/src/enums/requestEnum.ts +25 -25
  96. package/src/expression/ExpressionRunner.ts +28 -28
  97. package/src/expression/TestExpression.ts +510 -510
  98. package/src/expression/core/Delegate.ts +116 -116
  99. package/src/expression/core/Expression.ts +1359 -1359
  100. package/src/expression/core/Program.ts +985 -985
  101. package/src/expression/core/Token.ts +29 -29
  102. package/src/expression/enums/ExpressionType.ts +81 -81
  103. package/src/expression/enums/TokenType.ts +11 -11
  104. package/src/expression/exception/BreakWayException.ts +2 -2
  105. package/src/expression/exception/ContinueWayException.ts +2 -2
  106. package/src/expression/exception/ExpressionException.ts +29 -29
  107. package/src/expression/exception/ReturnWayException.ts +14 -14
  108. package/src/expression/exception/ServiceException.ts +22 -22
  109. package/src/expression/instances/JSONArray.ts +52 -52
  110. package/src/expression/instances/JSONObject.ts +118 -118
  111. package/src/expression/instances/LogicConsole.ts +31 -31
  112. package/src/font-style/font.css +4 -4
  113. package/src/hooks/useBoolean.ts +26 -26
  114. package/src/hooks/useCommon.ts +9 -9
  115. package/src/hooks/useLoading.ts +16 -16
  116. package/src/hooks/useLogin.ts +97 -97
  117. package/src/icons/svg/check-in.svg +32 -32
  118. package/src/icons/svg/dark.svg +4 -4
  119. package/src/icons/svg/github.svg +4 -4
  120. package/src/icons/svg/light.svg +4 -4
  121. package/src/icons/svg/link.svg +4 -4
  122. package/src/icons/svgo.yml +22 -22
  123. package/src/layout/GridView/index.vue +16 -16
  124. package/src/layout/PageLayout.vue +9 -9
  125. package/src/layout/SingleLayout.vue +9 -9
  126. package/src/locales/en-US.json +128 -128
  127. package/src/locales/zh-CN.json +128 -128
  128. package/src/logic/LogicRunner.ts +67 -67
  129. package/src/logic/TestLogic.ts +13 -13
  130. package/src/logic/plugins/common/DateTools.ts +35 -35
  131. package/src/logic/plugins/common/VueTools.ts +30 -30
  132. package/src/logic/plugins/index.ts +7 -7
  133. package/src/main.ts +44 -44
  134. package/src/plugins/AppData.ts +38 -38
  135. package/src/plugins/GetLoginInfoService.ts +10 -10
  136. package/src/plugins/collectIcons.ts +10 -10
  137. package/src/plugins/index.ts +11 -11
  138. package/src/router/README.md +8 -8
  139. package/src/router/guards.ts +59 -59
  140. package/src/router/index.ts +35 -35
  141. package/src/router/invoiceRoutes.ts +33 -33
  142. package/src/router/routes.ts +347 -341
  143. package/src/router/types.ts +7 -7
  144. package/src/services/api/Login.ts +6 -6
  145. package/src/services/api/common.ts +109 -109
  146. package/src/services/api/index.ts +7 -7
  147. package/src/services/api/manage.ts +8 -8
  148. package/src/services/api/search.ts +16 -16
  149. package/src/services/api/user.ts +17 -17
  150. package/src/services/restTools.ts +56 -56
  151. package/src/services/v3Api.ts +147 -147
  152. package/src/stores/index.ts +11 -11
  153. package/src/stores/modules/counter.ts +19 -19
  154. package/src/stores/modules/routeCache.ts +23 -23
  155. package/src/stores/modules/setting.ts +76 -76
  156. package/src/stores/modules/user.ts +235 -235
  157. package/src/stores/mutation-type.ts +7 -7
  158. package/src/styles/app.less +36 -36
  159. package/src/styles/login.less +109 -109
  160. package/src/styles/var.less +25 -16
  161. package/src/types/env.d.ts +16 -16
  162. package/src/types/settings.ts +1 -1
  163. package/src/types/vue-router.d.ts +9 -9
  164. package/src/utils/Storage.ts +124 -124
  165. package/src/utils/authority-utils.ts +84 -84
  166. package/src/utils/common.ts +41 -41
  167. package/src/utils/crypto.ts +39 -39
  168. package/src/utils/dataUtil.ts +42 -42
  169. package/src/utils/dictUtil.ts +52 -52
  170. package/src/utils/http/index.ts +199 -199
  171. package/src/utils/i18n.ts +72 -72
  172. package/src/utils/indexedDB.ts +195 -195
  173. package/src/utils/inline-px-to-vw.ts +28 -28
  174. package/src/utils/mobileUtil.ts +34 -34
  175. package/src/utils/progress.ts +19 -19
  176. package/src/utils/routerUtil.ts +271 -271
  177. package/src/utils/runEvalFunction.ts +13 -13
  178. package/src/utils/secureStorage.ts +71 -71
  179. package/src/utils/set-page-title.ts +5 -5
  180. package/src/utils/validate.ts +6 -6
  181. package/src/utils/wechatUtil.ts +9 -9
  182. package/src/views/chat/index.vue +153 -153
  183. package/src/views/common/LoadError.vue +63 -63
  184. package/src/views/common/NotFound.vue +67 -67
  185. package/src/views/component/EvaluateRecordView/index.vue +40 -40
  186. package/src/views/component/IconifyView/index.vue +504 -504
  187. package/src/views/component/UserDetailView/UserDetailPage.vue +77 -77
  188. package/src/views/component/UserDetailView/index.vue +234 -234
  189. package/src/views/component/XCellDetailView/index.vue +217 -217
  190. package/src/views/component/XCellListView/index.vue +157 -108
  191. package/src/views/component/XFormAppraiseView/index.vue +174 -174
  192. package/src/views/component/XFormGroupView/index.vue +82 -78
  193. package/src/views/component/XFormGroupView/xformgroup222.vue +97 -0
  194. package/src/views/component/XFormView/index.vue +27 -27
  195. package/src/views/component/XOlMapView/XLocationPicker/index.vue +118 -118
  196. package/src/views/component/XOlMapView/index.vue +434 -434
  197. package/src/views/component/XOlMapView/testData.ts +64 -64
  198. package/src/views/component/XReportFormIframeView/index.vue +47 -47
  199. package/src/views/component/XReportFormView/index.vue +13 -13
  200. package/src/views/component/XReportGridView/index.vue +17 -17
  201. package/src/views/component/XRequestView/index.vue +234 -234
  202. package/src/views/component/XSignatureView/index.vue +50 -50
  203. package/src/views/component/index.vue +181 -181
  204. package/src/views/component/menu.vue +117 -117
  205. package/src/views/component/notice.vue +46 -46
  206. package/src/views/component/topNav.vue +36 -36
  207. package/src/views/invoiceShow/index.vue +61 -61
  208. package/src/views/user/login/ForgetPasswordForm.vue +94 -94
  209. package/src/views/user/login/LoginForm.vue +346 -346
  210. package/src/views/user/login/LoginTitle.vue +76 -76
  211. package/src/views/user/login/LoginWave.vue +109 -109
  212. package/src/views/user/login/index.vue +22 -22
  213. package/src/views/user/my/comm/ModifyPassword.vue +346 -346
  214. package/src/views/user/my/index.vue +340 -340
  215. package/src/views/userRecords/AbnormalAlarmRecords.vue +21 -21
  216. package/src/views/userRecords/CardReplacementRecords.vue +21 -21
  217. package/src/views/userRecords/ChangeRecords.vue +19 -19
  218. package/src/views/userRecords/CommandViewRecords.vue +20 -20
  219. package/src/views/userRecords/GasCompensationRecords.vue +20 -20
  220. package/src/views/userRecords/InstrumentCollectionRecords.vue +21 -21
  221. package/src/views/userRecords/MeterRecords.vue +20 -20
  222. package/src/views/userRecords/OperateRecords.vue +51 -51
  223. package/src/views/userRecords/OtherChargeRecords.vue +19 -19
  224. package/src/views/userRecords/PaymentRecords.vue +28 -28
  225. package/src/views/userRecords/PriceAdjustmentRecords.vue +19 -19
  226. package/src/views/userRecords/ReplacementRecords.vue +19 -19
  227. package/src/views/userRecords/SafetyRecords.vue +19 -19
  228. package/src/views/userRecords/TransactionRecords.vue +21 -21
  229. package/src/views/userRecords/TransferRecords.vue +19 -19
  230. package/src/views/userRecords/operateRecordDetail/index.vue +316 -316
  231. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AddUserDetail.vue +124 -124
  232. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AdvanceDeliveryDetail.vue +88 -88
  233. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsCancelDetail.vue +205 -205
  234. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsDetail.vue +192 -192
  235. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankDkDetail.vue +192 -192
  236. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankPayDetail.vue +192 -192
  237. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BlacklistDetail.vue +153 -153
  238. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CancellationDetail.vue +101 -101
  239. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterCancelDetail.vue +127 -127
  240. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterDetail.vue +153 -153
  241. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardOverUserDetail.vue +153 -153
  242. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterCancelDetail.vue +166 -166
  243. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterDetail.vue +205 -205
  244. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/DisableManageDetail.vue +127 -127
  245. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/EnableManageDetail.vue +114 -114
  246. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FaZheChangeDetail.vue +124 -124
  247. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FeeDeductionDetail.vue +153 -153
  248. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/GasPriceChangeDetail.vue +126 -126
  249. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/InputtorChangeDetail.vue +126 -126
  250. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterCancelDetail.vue +114 -114
  251. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterDetail.vue +127 -127
  252. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotOpenDetail.vue +88 -88
  253. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineCardDetail.vue +101 -101
  254. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterCancelDetail.vue +218 -218
  255. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterDetail.vue +153 -153
  256. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OffGasAddGasDetail.vue +140 -140
  257. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeCancelDetail.vue +127 -127
  258. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeDetail.vue +114 -114
  259. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OverUserChangeDetail.vue +127 -127
  260. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReBillDetail.vue +127 -127
  261. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/RefundDetail.vue +114 -114
  262. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageCancelDetail.vue +127 -127
  263. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageDetail.vue +114 -114
  264. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/SaleCardGasDetail.vue +140 -140
  265. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageCancelDetail.vue +152 -152
  266. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageDetail.vue +178 -178
  267. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/UserChangeDetail.vue +123 -123
  268. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/WechatPayDetail.vue +192 -192
  269. package/src/views/userRecords/types.ts +66 -66
  270. package/tsconfig.json +39 -39
  271. package/uno.config.ts +82 -82
  272. package/vite.config.ts +118 -118
  273. package/.claude/settings.local.json +0 -8
@@ -1,313 +1,313 @@
1
- # 移动端配置化表单/列表组件文档
2
-
3
- ## 组件概述
4
-
5
- 这是一个基于 Vue 3 + TypeScript + Vant 4 开发的移动端配置化查询列表组件系统,主要包含以下组件:
6
-
7
- - `XCellList`: 列表容器组件
8
- - `XCellListFilter`: 列表筛选组件
9
- - `XFormItem`: 表单项组件
10
- - `XForm`: 表单容器组件
11
- - `XFormGroup`: 表单分组组件
12
-
13
- ## 功能特性
14
-
15
- ### 列表功能
16
-
17
- - ✅ 下拉刷新
18
- - ✅ 上拉加载
19
- - ✅ 搜索过滤
20
- - ✅ 多条件筛选
21
- - ✅ 排序功能
22
- - ✅ 卡片式布局
23
- - ✅ 批量操作
24
- - ✅ 自定义操作按钮
25
-
26
- ### 表单功能
27
-
28
- - ✅ 支持多种表单项类型
29
- - ✅ 表单分组
30
- - ✅ 表单验证
31
- - ✅ 动态显示隐藏
32
- - ✅ 表单联动
33
- - ✅ 数据字典
34
- - ✅ 自定义校验规则
35
-
36
- ## 使用示例
37
-
38
- ### 基础列表
39
-
40
- ```vue
41
- <script setup lang="ts">
42
- const serviceName = 'userService'
43
-
44
- function handleDetail(item) {
45
- // 处理详情点击
46
- }
47
- </script>
48
-
49
- <template>
50
- <XCellList
51
- config-name="listConfig"
52
- :service-name="serviceName"
53
- @to-detail="handleDetail"
54
- />
55
- </template>
56
- ```
57
-
58
- ### 带筛选的表单
59
-
60
- ```vue
61
- <script setup lang="ts">
62
- const configName = 'searchForm'
63
- const serviceName = 'userService'
64
- const formData = ref({})
65
-
66
- function handleSubmit(data) {
67
- console.log('表单提交:', data)
68
- }
69
- </script>
70
-
71
- <template>
72
- <XFormGroup
73
- :config-name="configName"
74
- :service-name="serviceName"
75
- :group-form-data="formData"
76
- mode="查询"
77
- @submit="handleSubmit"
78
- />
79
- </template>
80
- ```
81
-
82
- ### 表单功能(琉璃配置中的需要勾选的新增和修改)
83
-
84
- ```vue
85
- <script setup lang="ts">
86
- const configName = 'searchForm'
87
- const serviceName = 'userService'
88
-
89
- function addOption() {
90
- console.log('新增表单')
91
- }
92
- function updateRow(item) {
93
- console.log('修改表单:', item)
94
- }
95
- </script>
96
-
97
- <template>
98
- <XCellList
99
- :config-name="configName"
100
- :service-name="serviceName"
101
- :custom-add="true"
102
- :custom-edit="true"
103
- @update="updateRow"
104
- @add="addOption"
105
- />
106
- </template>
107
- ```
108
-
109
- ## API 文档
110
-
111
- ### XCellList Props
112
-
113
- | 参数 | 说明 | 类型 | 默认值 |
114
- | ------------ | ---------------------- | ------- | ------ |
115
- | configName | 配置名称 | string | - |
116
- | serviceName | 服务名称 | string | - |
117
- | fixQueryForm | 固定查询参数 | object | null |
118
- | idKey | 主键字段 | string | 'o_id' |
119
- | customAdd | 是否采用自定义新增按钮 | boolean | false |
120
- | customEdit | 是否采用自定义修改按钮 | boolean | false |
121
-
122
- ### XCellList Events
123
-
124
- | 事件名 | 说明 | 回调参数 |
125
- | -------- | ---------------------------------------------- | ---------------- |
126
- | toDetail | 点击详情时触发 | item: 当前项数据 |
127
- | add | 点击新增按钮时触发(customAdd为true才会触发) | - |
128
- | update | 点击修改按钮时触发(customEdit为true才会触发) | item: 当前项数据 |
129
-
130
- ### XFormGroup Props
131
-
132
- | 参数 | 说明 | 类型 | 默认值 |
133
- | ------------- | -------- | -------------------------- | ------ |
134
- | configName | 配置名称 | string | '' |
135
- | serviceName | 服务名称 | string | - |
136
- | groupFormData | 表单数据 | object | {} |
137
- | mode | 表单模式 | '查询' \| '新增' \| '修改' | '查询' |
138
-
139
- ### XFormItem Props
140
-
141
- | 参数 | 说明 | 类型 | 默认值 |
142
- | --------- | ------------ | ------------ | ------ |
143
- | attr | 表单项配置 | FormItemAttr | - |
144
- | form | 表单数据对象 | object | - |
145
- | mode | 表单模式 | string | '查询' |
146
- | showLabel | 是否显示标签 | boolean | true |
147
-
148
- ## 配置说明
149
-
150
- ### 列表配置
151
-
152
- ```typescript
153
- interface ListConfig {
154
- // 列配置
155
- columnJson: {
156
- // 列类型: mobile_header_column | mobile_subtitle_column | mobile_details_column | mobile_footer_column
157
- mobileColumnType: string
158
- // 数据字段
159
- dataIndex: string
160
- // 标题
161
- title: string
162
- // 展示类型
163
- slotType?: 'badge' | 'action'
164
- // 操作按钮配置
165
- actionArr?: Array<{
166
- text: string
167
- func: string
168
- }>
169
- }[]
170
-
171
- // 按钮状态
172
- buttonState: {
173
- add?: boolean
174
- edit?: boolean
175
- delete?: boolean
176
- }
177
-
178
- // 是否显示排序
179
- showSortIcon?: boolean
180
-
181
- // 查询表单配置
182
- formJson: FormItem[]
183
- }
184
- ```
185
-
186
- ### 表单配置
187
-
188
- ```typescript
189
- interface FormItem {
190
- // 表单项类型
191
- type: 'input' | 'select' | 'date' | 'checkbox' | 'radio' | 'switch' | 'textarea' | 'uploader'
192
-
193
- // 字段名
194
- model: string
195
-
196
- // 标签名
197
- name: string
198
-
199
- // 校验规则
200
- rule?: {
201
- required: string
202
- type: 'string' | 'number' | 'integer' | 'float'
203
- }
204
-
205
- // 占位提示
206
- placeholder?: string
207
-
208
- // 数据源配置
209
- keyName?: string
210
-
211
- // 是否只读
212
- readonly?: boolean
213
-
214
- // 是否禁用
215
- disabled?: boolean
216
- }
217
- ```
218
-
219
- ## 高级功能
220
-
221
- ### 表单联动
222
-
223
- ```typescript
224
- // 配置联动显示函数
225
- const showFormItemFunc = `function(form, attr, data, mode) {
226
- return form.type === '1'
227
- }`
228
-
229
- // 配置值变化函数
230
- const dataChangeFunc = `function(form, attr, data, mode) {
231
- if(form.type === '1') {
232
- form.name = 'test'
233
- }
234
- }`
235
- ```
236
-
237
- ### 自定义样式
238
-
239
- ```typescript
240
- // 配置样式函数
241
- const styleFunctionForValue = `function(value) {
242
- return {
243
- color: value > 100 ? 'red' : 'green'
244
- }
245
- }`
246
- ```
247
-
248
- ## 注意事项
249
-
250
- 1. 配置名称必须与后端配置一致
251
- 2. 表单验证规则需要按照规范配置
252
- 3. 自定义函数需要使用字符串形式
253
- 4. 数据源配置支持多种方式:
254
-
255
- - logic@: 逻辑处理
256
- - config@: 配置数据
257
- - search@: 搜索数据5.对于默认的新增和修改功能,单表已经实现(也可以自定义),多表关联及自定义sql请使用自定义按钮实现
258
- - 配置按钮状态(customAdd、customEdit)为 true
259
- - 监听 add 和 update 事件
260
- - 实现自定义逻辑
261
-
262
- ## 最佳实践
263
-
264
- 1. 合理使用表单分组
265
- 2. 适当配置表单联动
266
- 3. 统一管理配置文件
267
- 4. 做好错误处理
268
- 5. 优化列表性能
269
-
270
- ## 常见问题
271
-
272
- 1. Q: 如何配置自定义校验规则?
273
- A: 在 rule 中配置 validator 函数
274
-
275
- 2. Q: 如何实现表单联动?
276
- A: 使用 showFormItemFunc 和 dataChangeFunc 配置联动逻辑
277
-
278
- 3. Q: 如何自定义列表样式?
279
- A: 使用 styleFunctionForValue 配置样式函数
280
-
281
- ## 更新日志
282
-
283
- ### v1.0.0
284
-
285
- - 初始版本发布
286
- - 支持基础列表功能
287
- - 支持表单配置
288
-
289
- ### v1.1.0
290
-
291
- - 添加表单联动
292
- - 优化列表性能
293
- - 修复已知问题
294
-
295
- ## 后续规划
296
-
297
- 1. [ ] 支持更多表单类型
298
- 2. [ ] 添加表单预览功能
299
- 3. [ ] 优化列表性能
300
- 4. [ ] 完善错误处理
301
- 5. [ ] 添加单元测试
302
-
303
- ## 贡献指南
304
-
305
- 欢迎提交 Issue 和 PR,请遵循以下规范:
306
-
307
- 1. 遵循代码规范
308
- 2. 添加必要的测试
309
- 3. 更新相关文档
310
-
311
- ## 许可证
312
-
313
- MIT License
1
+ # 移动端配置化表单/列表组件文档
2
+
3
+ ## 组件概述
4
+
5
+ 这是一个基于 Vue 3 + TypeScript + Vant 4 开发的移动端配置化查询列表组件系统,主要包含以下组件:
6
+
7
+ - `XCellList`: 列表容器组件
8
+ - `XCellListFilter`: 列表筛选组件
9
+ - `XFormItem`: 表单项组件
10
+ - `XForm`: 表单容器组件
11
+ - `XFormGroup`: 表单分组组件
12
+
13
+ ## 功能特性
14
+
15
+ ### 列表功能
16
+
17
+ - ✅ 下拉刷新
18
+ - ✅ 上拉加载
19
+ - ✅ 搜索过滤
20
+ - ✅ 多条件筛选
21
+ - ✅ 排序功能
22
+ - ✅ 卡片式布局
23
+ - ✅ 批量操作
24
+ - ✅ 自定义操作按钮
25
+
26
+ ### 表单功能
27
+
28
+ - ✅ 支持多种表单项类型
29
+ - ✅ 表单分组
30
+ - ✅ 表单验证
31
+ - ✅ 动态显示隐藏
32
+ - ✅ 表单联动
33
+ - ✅ 数据字典
34
+ - ✅ 自定义校验规则
35
+
36
+ ## 使用示例
37
+
38
+ ### 基础列表
39
+
40
+ ```vue
41
+ <script setup lang="ts">
42
+ const serviceName = 'userService'
43
+
44
+ function handleDetail(item) {
45
+ // 处理详情点击
46
+ }
47
+ </script>
48
+
49
+ <template>
50
+ <XCellList
51
+ config-name="listConfig"
52
+ :service-name="serviceName"
53
+ @to-detail="handleDetail"
54
+ />
55
+ </template>
56
+ ```
57
+
58
+ ### 带筛选的表单
59
+
60
+ ```vue
61
+ <script setup lang="ts">
62
+ const configName = 'searchForm'
63
+ const serviceName = 'userService'
64
+ const formData = ref({})
65
+
66
+ function handleSubmit(data) {
67
+ console.log('表单提交:', data)
68
+ }
69
+ </script>
70
+
71
+ <template>
72
+ <XFormGroup
73
+ :config-name="configName"
74
+ :service-name="serviceName"
75
+ :group-form-data="formData"
76
+ mode="查询"
77
+ @submit="handleSubmit"
78
+ />
79
+ </template>
80
+ ```
81
+
82
+ ### 表单功能(琉璃配置中的需要勾选的新增和修改)
83
+
84
+ ```vue
85
+ <script setup lang="ts">
86
+ const configName = 'searchForm'
87
+ const serviceName = 'userService'
88
+
89
+ function addOption() {
90
+ console.log('新增表单')
91
+ }
92
+ function updateRow(item) {
93
+ console.log('修改表单:', item)
94
+ }
95
+ </script>
96
+
97
+ <template>
98
+ <XCellList
99
+ :config-name="configName"
100
+ :service-name="serviceName"
101
+ :custom-add="true"
102
+ :custom-edit="true"
103
+ @update="updateRow"
104
+ @add="addOption"
105
+ />
106
+ </template>
107
+ ```
108
+
109
+ ## API 文档
110
+
111
+ ### XCellList Props
112
+
113
+ | 参数 | 说明 | 类型 | 默认值 |
114
+ | ------------ | ---------------------- | ------- | ------ |
115
+ | configName | 配置名称 | string | - |
116
+ | serviceName | 服务名称 | string | - |
117
+ | fixQueryForm | 固定查询参数 | object | null |
118
+ | idKey | 主键字段 | string | 'o_id' |
119
+ | customAdd | 是否采用自定义新增按钮 | boolean | false |
120
+ | customEdit | 是否采用自定义修改按钮 | boolean | false |
121
+
122
+ ### XCellList Events
123
+
124
+ | 事件名 | 说明 | 回调参数 |
125
+ | -------- | ---------------------------------------------- | ---------------- |
126
+ | toDetail | 点击详情时触发 | item: 当前项数据 |
127
+ | add | 点击新增按钮时触发(customAdd为true才会触发) | - |
128
+ | update | 点击修改按钮时触发(customEdit为true才会触发) | item: 当前项数据 |
129
+
130
+ ### XFormGroup Props
131
+
132
+ | 参数 | 说明 | 类型 | 默认值 |
133
+ | ------------- | -------- | -------------------------- | ------ |
134
+ | configName | 配置名称 | string | '' |
135
+ | serviceName | 服务名称 | string | - |
136
+ | groupFormData | 表单数据 | object | {} |
137
+ | mode | 表单模式 | '查询' \| '新增' \| '修改' | '查询' |
138
+
139
+ ### XFormItem Props
140
+
141
+ | 参数 | 说明 | 类型 | 默认值 |
142
+ | --------- | ------------ | ------------ | ------ |
143
+ | attr | 表单项配置 | FormItemAttr | - |
144
+ | form | 表单数据对象 | object | - |
145
+ | mode | 表单模式 | string | '查询' |
146
+ | showLabel | 是否显示标签 | boolean | true |
147
+
148
+ ## 配置说明
149
+
150
+ ### 列表配置
151
+
152
+ ```typescript
153
+ interface ListConfig {
154
+ // 列配置
155
+ columnJson: {
156
+ // 列类型: mobile_header_column | mobile_subtitle_column | mobile_details_column | mobile_footer_column
157
+ mobileColumnType: string
158
+ // 数据字段
159
+ dataIndex: string
160
+ // 标题
161
+ title: string
162
+ // 展示类型
163
+ slotType?: 'badge' | 'action'
164
+ // 操作按钮配置
165
+ actionArr?: Array<{
166
+ text: string
167
+ func: string
168
+ }>
169
+ }[]
170
+
171
+ // 按钮状态
172
+ buttonState: {
173
+ add?: boolean
174
+ edit?: boolean
175
+ delete?: boolean
176
+ }
177
+
178
+ // 是否显示排序
179
+ showSortIcon?: boolean
180
+
181
+ // 查询表单配置
182
+ formJson: FormItem[]
183
+ }
184
+ ```
185
+
186
+ ### 表单配置
187
+
188
+ ```typescript
189
+ interface FormItem {
190
+ // 表单项类型
191
+ type: 'input' | 'select' | 'date' | 'checkbox' | 'radio' | 'switch' | 'textarea' | 'uploader'
192
+
193
+ // 字段名
194
+ model: string
195
+
196
+ // 标签名
197
+ name: string
198
+
199
+ // 校验规则
200
+ rule?: {
201
+ required: string
202
+ type: 'string' | 'number' | 'integer' | 'float'
203
+ }
204
+
205
+ // 占位提示
206
+ placeholder?: string
207
+
208
+ // 数据源配置
209
+ keyName?: string
210
+
211
+ // 是否只读
212
+ readonly?: boolean
213
+
214
+ // 是否禁用
215
+ disabled?: boolean
216
+ }
217
+ ```
218
+
219
+ ## 高级功能
220
+
221
+ ### 表单联动
222
+
223
+ ```typescript
224
+ // 配置联动显示函数
225
+ const showFormItemFunc = `function(form, attr, data, mode) {
226
+ return form.type === '1'
227
+ }`
228
+
229
+ // 配置值变化函数
230
+ const dataChangeFunc = `function(form, attr, data, mode) {
231
+ if(form.type === '1') {
232
+ form.name = 'test'
233
+ }
234
+ }`
235
+ ```
236
+
237
+ ### 自定义样式
238
+
239
+ ```typescript
240
+ // 配置样式函数
241
+ const styleFunctionForValue = `function(value) {
242
+ return {
243
+ color: value > 100 ? 'red' : 'green'
244
+ }
245
+ }`
246
+ ```
247
+
248
+ ## 注意事项
249
+
250
+ 1. 配置名称必须与后端配置一致
251
+ 2. 表单验证规则需要按照规范配置
252
+ 3. 自定义函数需要使用字符串形式
253
+ 4. 数据源配置支持多种方式:
254
+
255
+ - logic@: 逻辑处理
256
+ - config@: 配置数据
257
+ - search@: 搜索数据5.对于默认的新增和修改功能,单表已经实现(也可以自定义),多表关联及自定义sql请使用自定义按钮实现
258
+ - 配置按钮状态(customAdd、customEdit)为 true
259
+ - 监听 add 和 update 事件
260
+ - 实现自定义逻辑
261
+
262
+ ## 最佳实践
263
+
264
+ 1. 合理使用表单分组
265
+ 2. 适当配置表单联动
266
+ 3. 统一管理配置文件
267
+ 4. 做好错误处理
268
+ 5. 优化列表性能
269
+
270
+ ## 常见问题
271
+
272
+ 1. Q: 如何配置自定义校验规则?
273
+ A: 在 rule 中配置 validator 函数
274
+
275
+ 2. Q: 如何实现表单联动?
276
+ A: 使用 showFormItemFunc 和 dataChangeFunc 配置联动逻辑
277
+
278
+ 3. Q: 如何自定义列表样式?
279
+ A: 使用 styleFunctionForValue 配置样式函数
280
+
281
+ ## 更新日志
282
+
283
+ ### v1.0.0
284
+
285
+ - 初始版本发布
286
+ - 支持基础列表功能
287
+ - 支持表单配置
288
+
289
+ ### v1.1.0
290
+
291
+ - 添加表单联动
292
+ - 优化列表性能
293
+ - 修复已知问题
294
+
295
+ ## 后续规划
296
+
297
+ 1. [ ] 支持更多表单类型
298
+ 2. [ ] 添加表单预览功能
299
+ 3. [ ] 优化列表性能
300
+ 4. [ ] 完善错误处理
301
+ 5. [ ] 添加单元测试
302
+
303
+ ## 贡献指南
304
+
305
+ 欢迎提交 Issue 和 PR,请遵循以下规范:
306
+
307
+ 1. 遵循代码规范
308
+ 2. 添加必要的测试
309
+ 3. 更新相关文档
310
+
311
+ ## 许可证
312
+
313
+ MIT License