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,177 +1,181 @@
1
- <script setup lang="ts">
2
- import { isDark, toggleDark } from '@af-mobile-client-vue3/composables/dark'
3
- import useUserStore from '@af-mobile-client-vue3/stores/modules/user'
4
- import { indexedDB } from '@af-mobile-client-vue3/utils/indexedDB'
5
- import {
6
- showToast,
7
- Cell as VanCell,
8
- List as VanList,
9
- Switch as VanSwitch,
10
- } from 'vant'
11
- import { computed, ref } from 'vue'
12
-
13
- const checked = computed({
14
- get: () => isDark.value,
15
- set: () => toggleDark(),
16
- })
17
-
18
- // 列表详情页的路由 '/Component/XCellDetailView/:id'
19
- const list = ref([
20
- {
21
- name: 'XCellList 单元格列表',
22
- to: '/Component/XCellListView',
23
- },
24
- {
25
- name: 'XReportForm 报表表单',
26
- to: '/Component/XReportFormView',
27
- },
28
- {
29
- name: 'XCellDetail 列表详情页',
30
- to: '/Component/XCellDetailView/0',
31
- },
32
- {
33
- name: 'XForm 表单',
34
- to: '/Component/XFormView/1/debug?configName=hiddenTroubleFollowForm&serviceName=af-linepatrol&mode=新增',
35
- },
36
- {
37
- name: 'XFormGroup 表单组',
38
- to: '/Component/XFormGroupView',
39
- },
40
- {
41
- name: '操作卡手机端',
42
- to: '/Component/XReportFormView',
43
- },
44
- {
45
- name: '评论记录列表',
46
- to: '/Component/EvaluateRecordView',
47
- },
48
- {
49
- name: 'XSignature 签名组件',
50
- to: '/Component/XSignatureView',
51
- },
52
- {
53
- name: 'XReportGridView 栅格组件',
54
- to: '/Component/XReportGridView',
55
- },
56
- {
57
- name: 'XFormAppraise 表单',
58
- to: '/Component/XFormAppraiseView/2/debug',
59
- },
60
- {
61
- name: 'XOlMap 地图组件',
62
- to: '/Component/XOlMapView',
63
- },
64
- {
65
- name: 'XOlMap 地址选择器',
66
- to: '/Component/XOlMapView/XLocationPicker',
67
- },
68
- {
69
- name: '请求示例',
70
- to: '/Component/XRequestView',
71
- },
72
- {
73
- name: 'Iconify 图标使用示例',
74
- to: '/Component/IconifyView',
75
- },
76
- ])
77
-
78
- function cleanConfigCache() {
79
- // 清除indexedDB缓存
80
- indexedDB.clear()
81
- showToast({
82
- message: '操作成功',
83
- })
84
- }
85
-
86
- async function logout() {
87
- await useUserStore().logout()
88
- }
89
- </script>
90
-
91
- <template>
92
- <main class="home_main">
93
- <h1 class="home_title">
94
- <img src="@af-mobile-client-vue3/assets/img/component/logo.png" alt="logo">
95
- <span>Vue3-Client</span>
96
- </h1>
97
- <span class="home_desc">基于Vant4的移动端组件库扩展</span>
98
- <div class="home_component_main">
99
- <span class="home_desc">设置项</span>
100
- <VanCell center title="暗黑模式">
101
- <template #right-icon>
102
- <VanSwitch
103
- v-model="checked"
104
- size="20px"
105
- aria-label="on/off Dark Mode"
106
- />
107
- </template>
108
- </VanCell>
109
- <span class="home_desc">配置化组件</span>
110
- <VanList>
111
- <VanCell v-for="item in list" :key="item.name" :title="item.name" is-link :to="item.to" />
112
- </VanList>
113
- <span class="home_desc">开发者工具</span>
114
- <VanList>
115
- <VanCell key="clean_config_cache" title="清除配置缓存" @click="cleanConfigCache" />
116
- <VanCell key="clean_config_cache" title="退出登录" @click="logout" />
117
- </VanList>
118
- </div>
119
- </main>
120
- </template>
121
-
122
- <style scoped lang="less">
123
- .van-theme-light {
124
- .home_main {
125
- .home_title {
126
- color: #323233;
127
- }
128
- .home_desc {
129
- color: #969799;
130
- }
131
- .home_component_main {
132
- .van-cell {
133
- color: #34495e;
134
- }
135
- }
136
- }
137
- }
138
- .home_main {
139
- padding: var(--base-interval-2);
140
- .home_title {
141
- display: flex;
142
- align-items: center;
143
- margin: 0 0 10px;
144
- font-size: 30px;
145
- font-weight: 400;
146
- img {
147
- display: inline-block;
148
- vertical-align: middle;
149
- width: 46px;
150
- height: 46px;
151
- }
152
- span {
153
- margin-left: 12px;
154
- }
155
- }
156
- .home_desc {
157
- padding-left: 16px;
158
- font-weight: 400;
159
- line-height: 1.6;
160
- margin: 0 0 40px;
161
- color: #969799;
162
- font-size: 14px;
163
- }
164
- .home_component_main {
165
- margin-top: 30px;
166
- .van-cell {
167
- margin: 10px 0;
168
- font-weight: 600;
169
- border-radius: 99px;
170
- :deep(.van-icon) {
171
- display: flex;
172
- align-items: center;
173
- }
174
- }
175
- }
176
- }
177
- </style>
1
+ <script setup lang="ts">
2
+ import { isDark, toggleDark } from '@af-mobile-client-vue3/composables/dark'
3
+ import useUserStore from '@af-mobile-client-vue3/stores/modules/user'
4
+ import { indexedDB } from '@af-mobile-client-vue3/utils/indexedDB'
5
+ import {
6
+ showToast,
7
+ Cell as VanCell,
8
+ List as VanList,
9
+ Switch as VanSwitch,
10
+ } from 'vant'
11
+ import { computed, ref } from 'vue'
12
+
13
+ const checked = computed({
14
+ get: () => isDark.value,
15
+ set: () => toggleDark(),
16
+ })
17
+
18
+ // 列表详情页的路由 '/Component/XCellDetailView/:id'
19
+ const list = ref([
20
+ {
21
+ name: 'XCellList 单元格列表',
22
+ to: '/Component/XCellListView',
23
+ },
24
+ {
25
+ name: 'XReportForm 报表表单',
26
+ to: '/Component/XReportFormView',
27
+ },
28
+ {
29
+ name: 'XCellDetail 列表详情页',
30
+ to: '/Component/XCellDetailView/0',
31
+ },
32
+ {
33
+ name: 'XForm 表单',
34
+ to: '/Component/XFormView/1/debug?configName=hiddenTroubleFollowForm&serviceName=af-linepatrol&mode=新增',
35
+ },
36
+ {
37
+ name: 'XFormGroup 表单组',
38
+ to: '/Component/XFormGroupView',
39
+ },
40
+ {
41
+ name: '操作卡手机端',
42
+ to: '/Component/XReportFormView',
43
+ },
44
+ {
45
+ name: '评论记录列表',
46
+ to: '/Component/EvaluateRecordView',
47
+ },
48
+ {
49
+ name: 'XSignature 签名组件',
50
+ to: '/Component/XSignatureView',
51
+ },
52
+ {
53
+ name: 'XReportGridView 栅格组件',
54
+ to: '/Component/XReportGridView',
55
+ },
56
+ {
57
+ name: 'XFormAppraise 表单',
58
+ to: '/Component/XFormAppraiseView/2/debug',
59
+ },
60
+ {
61
+ name: 'XOlMap 地图组件',
62
+ to: '/Component/XOlMapView',
63
+ },
64
+ {
65
+ name: 'XOlMap 地址选择器',
66
+ to: '/Component/XOlMapView/XLocationPicker',
67
+ },
68
+ {
69
+ name: '请求示例',
70
+ to: '/Component/XRequestView',
71
+ },
72
+ {
73
+ name: 'Iconify 图标使用示例',
74
+ to: '/Component/IconifyView',
75
+ },
76
+ {
77
+ name: 'UserDetail 用户详情组件',
78
+ to: '/Component/UserDetailView',
79
+ },
80
+ ])
81
+
82
+ function cleanConfigCache() {
83
+ // 清除indexedDB缓存
84
+ indexedDB.clear()
85
+ showToast({
86
+ message: '操作成功',
87
+ })
88
+ }
89
+
90
+ async function logout() {
91
+ await useUserStore().logout()
92
+ }
93
+ </script>
94
+
95
+ <template>
96
+ <main class="home_main">
97
+ <h1 class="home_title">
98
+ <img src="@af-mobile-client-vue3/assets/img/component/logo.png" alt="logo">
99
+ <span>Vue3-Client</span>
100
+ </h1>
101
+ <span class="home_desc">基于Vant4的移动端组件库扩展</span>
102
+ <div class="home_component_main">
103
+ <span class="home_desc">设置项</span>
104
+ <VanCell center title="暗黑模式">
105
+ <template #right-icon>
106
+ <VanSwitch
107
+ v-model="checked"
108
+ size="20px"
109
+ aria-label="on/off Dark Mode"
110
+ />
111
+ </template>
112
+ </VanCell>
113
+ <span class="home_desc">配置化组件</span>
114
+ <VanList>
115
+ <VanCell v-for="item in list" :key="item.name" :title="item.name" is-link :to="item.to" />
116
+ </VanList>
117
+ <span class="home_desc">开发者工具</span>
118
+ <VanList>
119
+ <VanCell key="clean_config_cache" title="清除配置缓存" @click="cleanConfigCache" />
120
+ <VanCell key="clean_config_cache" title="退出登录" @click="logout" />
121
+ </VanList>
122
+ </div>
123
+ </main>
124
+ </template>
125
+
126
+ <style scoped lang="less">
127
+ .van-theme-light {
128
+ .home_main {
129
+ .home_title {
130
+ color: #323233;
131
+ }
132
+ .home_desc {
133
+ color: #969799;
134
+ }
135
+ .home_component_main {
136
+ .van-cell {
137
+ color: #34495e;
138
+ }
139
+ }
140
+ }
141
+ }
142
+ .home_main {
143
+ padding: var(--base-interval-2);
144
+ .home_title {
145
+ display: flex;
146
+ align-items: center;
147
+ margin: 0 0 10px;
148
+ font-size: 30px;
149
+ font-weight: 400;
150
+ img {
151
+ display: inline-block;
152
+ vertical-align: middle;
153
+ width: 46px;
154
+ height: 46px;
155
+ }
156
+ span {
157
+ margin-left: 12px;
158
+ }
159
+ }
160
+ .home_desc {
161
+ padding-left: 16px;
162
+ font-weight: 400;
163
+ line-height: 1.6;
164
+ margin: 0 0 40px;
165
+ color: #969799;
166
+ font-size: 14px;
167
+ }
168
+ .home_component_main {
169
+ margin-top: 30px;
170
+ .van-cell {
171
+ margin: 10px 0;
172
+ font-weight: 600;
173
+ border-radius: 99px;
174
+ :deep(.van-icon) {
175
+ display: flex;
176
+ align-items: center;
177
+ }
178
+ }
179
+ }
180
+ }
181
+ </style>
@@ -1,117 +1,117 @@
1
- <script setup lang="ts">
2
- import useUserStore from '@af-mobile-client-vue3/stores/modules/user'
3
- import { getImageUrl } from '@af-mobile-client-vue3/utils/common'
4
- import {
5
- Grid as VanGrid,
6
- GridItem as VanGridItem,
7
- Swipe as VanSwipe,
8
- SwipeItem as VanSwipeItem,
9
- } from 'vant/es'
10
-
11
- const apps = {
12
- 测试图标1: {
13
- remark: '测试图标1',
14
- icon: 'assets/img/apps/safe-check-web.png',
15
- },
16
- 测试图标2: {
17
- remark: '报装',
18
- icon: 'assets/img/apps/apply-web.png',
19
- },
20
- 测试图标3: {
21
- remark: '营收',
22
- icon: 'assets/img/apps/revenue-web.png',
23
- },
24
- 测试图标4: {
25
- remark: '物联网表',
26
- icon: 'assets/img/apps/iot-web.png',
27
- },
28
- }
29
-
30
- const images = [
31
- '../assets/img/home/banner1.png',
32
- '../assets/img/home/banner2.png',
33
- '../assets/img/home/banner3.png',
34
- '../assets/img/home/banner4.png',
35
- ]
36
-
37
- interface Func {
38
- link: string
39
- navigate?: string
40
- module: any
41
- name: string
42
- children?: Array<Func>
43
- }
44
-
45
- interface App {
46
- module: Func
47
- icon: string
48
- }
49
-
50
- function initAppMenu(func: Array<Func> | undefined) {
51
- const functions = []
52
- if (func && func.length > 0) {
53
- for (let index = 0; index < func.length; index++) {
54
- const module = func[index]
55
- const app = apps[module.link]
56
- if (app) {
57
- functions.push({
58
- module,
59
- icon: app.icon,
60
- })
61
- }
62
- }
63
- return functions
64
- }
65
- return []
66
- }
67
-
68
- const appList: Array<App> = initAppMenu(useUserStore().getUserInfo().functions)
69
- console.warn(appList)
70
- </script>
71
-
72
- <template>
73
- <div class="menu_main">
74
- <VanSwipe class="my-swipe" :autoplay="3000" lazy-render>
75
- <VanSwipeItem v-for="image in images" :key="image">
76
- <img :src="getImageUrl(image)" width="100%" height="100%">
77
- </VanSwipeItem>
78
- </VanSwipe>
79
- <VanGrid :border="false">
80
- <VanGridItem v-for="app in appList" :key="app.module.link" :to="`app/${app.module.link}`">
81
- <img class="app_icon" :src="getImageUrl(app.icon, '../')">
82
- <span class="app_title">{{ app.module.name }}</span>
83
- </VanGridItem>
84
- </VanGrid>
85
- </div>
86
- </template>
87
-
88
- <style scoped lang="less">
89
- .menu_main {
90
- margin-bottom: var(--base-interval-2)
91
- }
92
-
93
- .my-swipe {
94
- margin-bottom: 4px;
95
-
96
- img {
97
- border-radius: 4px;
98
- }
99
- }
100
-
101
- :deep(.van-swipe__indicator--active) {
102
- width: 16px;
103
- background: #fff;
104
- border-radius: 16px;
105
- }
106
-
107
- .app_icon {
108
- width: 42px;
109
- height: 42px;
110
- margin-bottom: 6px;
111
- }
112
-
113
- .app_title {
114
- font-size: 12px;
115
- color: #000;
116
- }
117
- </style>
1
+ <script setup lang="ts">
2
+ import useUserStore from '@af-mobile-client-vue3/stores/modules/user'
3
+ import { getImageUrl } from '@af-mobile-client-vue3/utils/common'
4
+ import {
5
+ Grid as VanGrid,
6
+ GridItem as VanGridItem,
7
+ Swipe as VanSwipe,
8
+ SwipeItem as VanSwipeItem,
9
+ } from 'vant/es'
10
+
11
+ const apps = {
12
+ 测试图标1: {
13
+ remark: '测试图标1',
14
+ icon: 'assets/img/apps/safe-check-web.png',
15
+ },
16
+ 测试图标2: {
17
+ remark: '报装',
18
+ icon: 'assets/img/apps/apply-web.png',
19
+ },
20
+ 测试图标3: {
21
+ remark: '营收',
22
+ icon: 'assets/img/apps/revenue-web.png',
23
+ },
24
+ 测试图标4: {
25
+ remark: '物联网表',
26
+ icon: 'assets/img/apps/iot-web.png',
27
+ },
28
+ }
29
+
30
+ const images = [
31
+ '../assets/img/home/banner1.png',
32
+ '../assets/img/home/banner2.png',
33
+ '../assets/img/home/banner3.png',
34
+ '../assets/img/home/banner4.png',
35
+ ]
36
+
37
+ interface Func {
38
+ link: string
39
+ navigate?: string
40
+ module: any
41
+ name: string
42
+ children?: Array<Func>
43
+ }
44
+
45
+ interface App {
46
+ module: Func
47
+ icon: string
48
+ }
49
+
50
+ function initAppMenu(func: Array<Func> | undefined) {
51
+ const functions = []
52
+ if (func && func.length > 0) {
53
+ for (let index = 0; index < func.length; index++) {
54
+ const module = func[index]
55
+ const app = apps[module.link]
56
+ if (app) {
57
+ functions.push({
58
+ module,
59
+ icon: app.icon,
60
+ })
61
+ }
62
+ }
63
+ return functions
64
+ }
65
+ return []
66
+ }
67
+
68
+ const appList: Array<App> = initAppMenu(useUserStore().getUserInfo().functions)
69
+ console.warn(appList)
70
+ </script>
71
+
72
+ <template>
73
+ <div class="menu_main">
74
+ <VanSwipe class="my-swipe" :autoplay="3000" lazy-render>
75
+ <VanSwipeItem v-for="image in images" :key="image">
76
+ <img :src="getImageUrl(image)" width="100%" height="100%">
77
+ </VanSwipeItem>
78
+ </VanSwipe>
79
+ <VanGrid :border="false">
80
+ <VanGridItem v-for="app in appList" :key="app.module.link" :to="`app/${app.module.link}`">
81
+ <img class="app_icon" :src="getImageUrl(app.icon, '../')">
82
+ <span class="app_title">{{ app.module.name }}</span>
83
+ </VanGridItem>
84
+ </VanGrid>
85
+ </div>
86
+ </template>
87
+
88
+ <style scoped lang="less">
89
+ .menu_main {
90
+ margin-bottom: var(--base-interval-2);
91
+ }
92
+
93
+ .my-swipe {
94
+ margin-bottom: 4px;
95
+
96
+ img {
97
+ border-radius: 4px;
98
+ }
99
+ }
100
+
101
+ :deep(.van-swipe__indicator--active) {
102
+ width: 16px;
103
+ background: #fff;
104
+ border-radius: 16px;
105
+ }
106
+
107
+ .app_icon {
108
+ width: 42px;
109
+ height: 42px;
110
+ margin-bottom: 6px;
111
+ }
112
+
113
+ .app_title {
114
+ font-size: 12px;
115
+ color: #000;
116
+ }
117
+ </style>