af-mobile-client-vue3 1.3.30 → 1.3.31

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 (283) 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 +68 -66
  10. package/CLAUDE.md +218 -189
  11. package/README.md +182 -182
  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 +31 -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 +95 -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/auth/index.ts +77 -0
  33. package/src/api/auth/types.ts +200 -0
  34. package/src/api/mock/index.ts +30 -30
  35. package/src/api/user/index.ts +40 -40
  36. package/src/assets/img/user/login/background-shadow-1.svg +20 -20
  37. package/src/assets/img/user/login/logo-background.svg +20 -20
  38. package/src/bootstrap.ts +26 -26
  39. package/src/components/core/BeautifulLoading/index.vue +52 -52
  40. package/src/components/core/ImageUploader/index.vue +251 -251
  41. package/src/components/core/NavBar/index.vue +53 -53
  42. package/src/components/core/Tabbar/index.vue +32 -32
  43. package/src/components/core/Uploader/index.vue +124 -124
  44. package/src/components/core/XGridDropOption/index.vue +154 -154
  45. package/src/components/core/XMultiSelect/index.vue +183 -183
  46. package/src/components/core/XSelect/index.vue +149 -149
  47. package/src/components/data/CardContainer/CardContainer.vue +118 -118
  48. package/src/components/data/CardContainer/CardHeader.vue +99 -99
  49. package/src/components/data/InfoDisplay/index.vue +132 -132
  50. package/src/components/data/UserDetail/api.ts +24 -24
  51. package/src/components/data/UserDetail/index.vue +620 -620
  52. package/src/components/data/UserDetail/recordEntries.ts +159 -159
  53. package/src/components/data/UserDetail/types.ts +26 -26
  54. package/src/components/data/XBadge/index.vue +82 -82
  55. package/src/components/data/XCellDetail/index.vue +105 -105
  56. package/src/components/data/XCellList/XCellList.md +432 -432
  57. package/src/components/data/XCellList/index.vue +1436 -1436
  58. package/src/components/data/XCellListFilter/QrScanner/index.vue +207 -207
  59. package/src/components/data/XCellListFilter/QrScanner/startScanAnimation.ts +53 -53
  60. package/src/components/data/XCellListFilter/VpnRecognition/index.vue +119 -119
  61. package/src/components/data/XCellListFilter/index.vue +705 -705
  62. package/src/components/data/XForm/index.vue +659 -659
  63. package/src/components/data/XFormGroup/doc/DeviceForm.vue +122 -122
  64. package/src/components/data/XFormGroup/doc/FormGroupDemo.vue +56 -56
  65. package/src/components/data/XFormGroup/doc/README.md +286 -286
  66. package/src/components/data/XFormGroup/doc/UserForm.vue +102 -102
  67. package/src/components/data/XFormGroup/index.vue +240 -240
  68. package/src/components/data/XFormItem/index.vue +1310 -1310
  69. package/src/components/data/XOlMap/README.md +227 -227
  70. package/src/components/data/XOlMap/XLocationPicker/index.vue +226 -226
  71. package/src/components/data/XOlMap/index.vue +1490 -1490
  72. package/src/components/data/XOlMap/types.ts +149 -149
  73. package/src/components/data/XOlMap/utils/{wgs84ToGcj02.js → wgs84ToGcj02.ts} +171 -154
  74. package/src/components/data/XReportForm/DateTimeSecondsPicker.vue +208 -208
  75. package/src/components/data/XReportForm/XReportFormJsonRender.vue +220 -220
  76. package/src/components/data/XReportForm/index.vue +1393 -1393
  77. package/src/components/data/XReportGrid/XAddReport/XAddReport.vue +198 -198
  78. package/src/components/data/XReportGrid/XAddReport/index.js +3 -3
  79. package/src/components/data/XReportGrid/XAddReport/index.md +53 -53
  80. package/src/components/data/XReportGrid/XAddReport/index.ts +10 -10
  81. package/src/components/data/XReportGrid/XReport.vue +960 -960
  82. package/src/components/data/XReportGrid/XReportDemo.vue +33 -33
  83. package/src/components/data/XReportGrid/XReportDesign.vue +597 -597
  84. package/src/components/data/XReportGrid/XReportDrawer/XReportDrawer.vue +148 -148
  85. package/src/components/data/XReportGrid/XReportDrawer/index.js +3 -3
  86. package/src/components/data/XReportGrid/XReportDrawer/index.ts +10 -10
  87. package/src/components/data/XReportGrid/XReportJsonRender.vue +399 -399
  88. package/src/components/data/XReportGrid/XReportTrGroup.vue +592 -592
  89. package/src/components/data/XReportGrid/index.md +46 -46
  90. package/src/components/data/XReportGrid/print.js +184 -184
  91. package/src/components/data/XSignature/index.vue +284 -284
  92. package/src/components/data/XTag/index.vue +10 -10
  93. package/src/components/layout/NormalDataLayout/index.vue +69 -69
  94. package/src/components/layout/TabBarLayout/index.vue +40 -40
  95. package/src/composables/dark.ts +5 -5
  96. package/src/config/routes.ts +9 -9
  97. package/src/constants/index.ts +2 -2
  98. package/src/enums/requestEnum.ts +25 -25
  99. package/src/expression/ExpressionRunner.ts +28 -28
  100. package/src/expression/TestExpression.ts +510 -510
  101. package/src/expression/core/Delegate.ts +116 -116
  102. package/src/expression/core/Expression.ts +1359 -1359
  103. package/src/expression/core/Program.ts +985 -985
  104. package/src/expression/core/Token.ts +29 -29
  105. package/src/expression/enums/ExpressionType.ts +81 -81
  106. package/src/expression/enums/TokenType.ts +11 -11
  107. package/src/expression/exception/BreakWayException.ts +2 -2
  108. package/src/expression/exception/ContinueWayException.ts +2 -2
  109. package/src/expression/exception/ExpressionException.ts +29 -29
  110. package/src/expression/exception/ReturnWayException.ts +14 -14
  111. package/src/expression/exception/ServiceException.ts +22 -22
  112. package/src/expression/instances/JSONArray.ts +52 -52
  113. package/src/expression/instances/JSONObject.ts +118 -118
  114. package/src/expression/instances/LogicConsole.ts +31 -31
  115. package/src/font-style/font.css +4 -4
  116. package/src/hooks/useBoolean.ts +26 -26
  117. package/src/hooks/useCommon.ts +9 -9
  118. package/src/hooks/useLoading.ts +16 -16
  119. package/src/hooks/useLogin.ts +97 -97
  120. package/src/icons/svg/check-in.svg +32 -32
  121. package/src/icons/svg/dark.svg +4 -4
  122. package/src/icons/svg/github.svg +4 -4
  123. package/src/icons/svg/light.svg +4 -4
  124. package/src/icons/svg/link.svg +4 -4
  125. package/src/icons/svgo.yml +22 -22
  126. package/src/layout/GridView/index.vue +16 -16
  127. package/src/layout/PageLayout.vue +9 -9
  128. package/src/layout/SingleLayout.vue +9 -9
  129. package/src/locales/en-US.json +128 -128
  130. package/src/locales/zh-CN.json +128 -128
  131. package/src/logic/LogicRunner.ts +67 -67
  132. package/src/logic/TestLogic.ts +13 -13
  133. package/src/logic/plugins/common/DateTools.ts +35 -35
  134. package/src/logic/plugins/common/VueTools.ts +30 -30
  135. package/src/logic/plugins/index.ts +7 -7
  136. package/src/main.ts +44 -44
  137. package/src/plugins/AppData.ts +38 -38
  138. package/src/plugins/GetLoginInfoService.ts +10 -10
  139. package/src/plugins/collectIcons.ts +10 -10
  140. package/src/plugins/index.ts +11 -11
  141. package/src/router/README.md +8 -8
  142. package/src/router/external-routes.ts +60 -0
  143. package/src/router/guards.ts +131 -59
  144. package/src/router/index.ts +35 -35
  145. package/src/router/invoiceRoutes.ts +33 -33
  146. package/src/router/routes.ts +426 -347
  147. package/src/services/api/Login.ts +6 -6
  148. package/src/services/api/common.ts +109 -109
  149. package/src/services/api/index.ts +7 -7
  150. package/src/services/api/manage.ts +8 -8
  151. package/src/services/api/search.ts +16 -16
  152. package/src/services/api/user.ts +17 -17
  153. package/src/services/restTools.ts +56 -56
  154. package/src/services/v3Api.ts +147 -147
  155. package/src/stores/index.ts +13 -13
  156. package/src/stores/modules/counter.ts +19 -19
  157. package/src/stores/modules/homeApp.ts +55 -55
  158. package/src/stores/modules/routeCache.ts +22 -23
  159. package/src/stores/modules/setting.ts +87 -87
  160. package/src/stores/modules/user.ts +326 -235
  161. package/src/stores/mutation-type.ts +12 -7
  162. package/src/styles/app.less +36 -36
  163. package/src/styles/login.less +109 -109
  164. package/src/styles/var.less +25 -25
  165. package/src/types/auth.ts +85 -0
  166. package/src/types/env.d.ts +16 -16
  167. package/src/types/platform.ts +194 -0
  168. package/src/types/settings.ts +1 -1
  169. package/src/types/vue-router.d.ts +13 -9
  170. package/src/utils/Storage.ts +124 -124
  171. package/src/utils/authority-utils.ts +84 -84
  172. package/src/utils/common.ts +41 -41
  173. package/src/utils/crypto.ts +39 -39
  174. package/src/utils/dataUtil.ts +42 -42
  175. package/src/utils/dictUtil.ts +52 -52
  176. package/src/utils/http/index.ts +201 -199
  177. package/src/utils/i18n.ts +72 -72
  178. package/src/utils/indexedDB.ts +195 -195
  179. package/src/utils/inline-px-to-vw.ts +28 -28
  180. package/src/utils/mobileUtil.ts +33 -34
  181. package/src/utils/platform-auth.ts +134 -0
  182. package/src/utils/progress.ts +19 -19
  183. package/src/utils/routerUtil.ts +271 -271
  184. package/src/utils/runEvalFunction.ts +13 -13
  185. package/src/utils/secureStorage.ts +70 -71
  186. package/src/utils/set-page-title.ts +5 -5
  187. package/src/utils/validate.ts +6 -6
  188. package/src/views/chat/index.vue +153 -153
  189. package/src/views/common/Forbidden.vue +97 -0
  190. package/src/views/common/LoadError.vue +63 -63
  191. package/src/views/common/NotFound.vue +67 -67
  192. package/src/views/component/EvaluateRecordView/index.vue +40 -40
  193. package/src/views/component/IconifyView/index.vue +504 -504
  194. package/src/views/component/UserDetailView/UserDetailPage.vue +77 -77
  195. package/src/views/component/UserDetailView/index.vue +234 -234
  196. package/src/views/component/XCellDetailView/index.vue +217 -217
  197. package/src/views/component/XCellListView/index.vue +108 -129
  198. package/src/views/component/XFormAppraiseView/index.vue +174 -174
  199. package/src/views/component/XFormGroupView/index.vue +78 -82
  200. package/src/views/component/XFormView/index.vue +27 -27
  201. package/src/views/component/XOlMapView/XLocationPicker/index.vue +118 -118
  202. package/src/views/component/XOlMapView/index.vue +434 -434
  203. package/src/views/component/XOlMapView/testData.ts +64 -64
  204. package/src/views/component/XReportFormIframeView/index.vue +47 -47
  205. package/src/views/component/XReportFormView/index.vue +13 -13
  206. package/src/views/component/XReportGridView/index.vue +17 -17
  207. package/src/views/component/XRequestView/index.vue +234 -234
  208. package/src/views/component/XSignatureView/index.vue +50 -50
  209. package/src/views/component/index.vue +181 -181
  210. package/src/views/component/menu.vue +117 -117
  211. package/src/views/component/notice.vue +46 -46
  212. package/src/views/component/topNav.vue +36 -36
  213. package/src/views/external/index.vue +152 -0
  214. package/src/views/invoiceShow/index.vue +61 -61
  215. package/src/views/loading/AuthLoading.vue +345 -0
  216. package/src/views/user/login/ForgetPasswordForm.vue +94 -94
  217. package/src/views/user/login/LoginForm.vue +350 -347
  218. package/src/views/user/login/LoginTitle.vue +76 -76
  219. package/src/views/user/login/LoginWave.vue +109 -109
  220. package/src/views/user/login/index.vue +22 -22
  221. package/src/views/user/my/comm/ModifyPassword.vue +346 -346
  222. package/src/views/user/my/index.vue +507 -507
  223. package/src/views/user/register/index.vue +952 -952
  224. package/src/views/userRecords/AbnormalAlarmRecords.vue +21 -21
  225. package/src/views/userRecords/CardReplacementRecords.vue +21 -21
  226. package/src/views/userRecords/ChangeRecords.vue +19 -19
  227. package/src/views/userRecords/CommandViewRecords.vue +20 -20
  228. package/src/views/userRecords/GasCompensationRecords.vue +20 -20
  229. package/src/views/userRecords/InstrumentCollectionRecords.vue +21 -21
  230. package/src/views/userRecords/MeterRecords.vue +20 -20
  231. package/src/views/userRecords/OperateRecords.vue +51 -51
  232. package/src/views/userRecords/OtherChargeRecords.vue +19 -19
  233. package/src/views/userRecords/PaymentRecords.vue +28 -28
  234. package/src/views/userRecords/PriceAdjustmentRecords.vue +19 -19
  235. package/src/views/userRecords/ReplacementRecords.vue +19 -19
  236. package/src/views/userRecords/SafetyRecords.vue +19 -19
  237. package/src/views/userRecords/TransactionRecords.vue +21 -21
  238. package/src/views/userRecords/TransferRecords.vue +19 -19
  239. package/src/views/userRecords/operateRecordDetail/index.vue +316 -316
  240. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AddUserDetail.vue +124 -124
  241. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AdvanceDeliveryDetail.vue +88 -88
  242. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsCancelDetail.vue +205 -205
  243. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/AutoAccountsDetail.vue +192 -192
  244. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankDkDetail.vue +192 -192
  245. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BankPayDetail.vue +192 -192
  246. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/BlacklistDetail.vue +153 -153
  247. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CancellationDetail.vue +101 -101
  248. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterCancelDetail.vue +127 -127
  249. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardMeterCenterDetail.vue +153 -153
  250. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/CardOverUserDetail.vue +153 -153
  251. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterCancelDetail.vue +166 -166
  252. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ChangeMeterDetail.vue +205 -205
  253. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/DisableManageDetail.vue +127 -127
  254. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/EnableManageDetail.vue +114 -114
  255. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FaZheChangeDetail.vue +124 -124
  256. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/FeeDeductionDetail.vue +153 -153
  257. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/GasPriceChangeDetail.vue +126 -126
  258. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/InputtorChangeDetail.vue +126 -126
  259. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterCancelDetail.vue +114 -114
  260. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotMeterCenterDetail.vue +127 -127
  261. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/IotOpenDetail.vue +88 -88
  262. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineCardDetail.vue +101 -101
  263. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterCancelDetail.vue +218 -218
  264. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/MachineMeterCenterDetail.vue +153 -153
  265. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OffGasAddGasDetail.vue +140 -140
  266. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeCancelDetail.vue +127 -127
  267. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OtherChargeDetail.vue +114 -114
  268. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/OverUserChangeDetail.vue +127 -127
  269. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReBillDetail.vue +127 -127
  270. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/RefundDetail.vue +114 -114
  271. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageCancelDetail.vue +127 -127
  272. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/ReplaceCardManageDetail.vue +114 -114
  273. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/SaleCardGasDetail.vue +140 -140
  274. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageCancelDetail.vue +152 -152
  275. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/TransferManageDetail.vue +178 -178
  276. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/UserChangeDetail.vue +123 -123
  277. package/src/views/userRecords/operateRecordDetail/operateRecordDetails/WechatPayDetail.vue +192 -192
  278. package/src/views/userRecords/types.ts +66 -66
  279. package/tsconfig.json +39 -39
  280. package/uno.config.ts +82 -82
  281. package/vite.config.ts +119 -118
  282. package/src/router/types.ts +0 -7
  283. package/src/utils/wechatUtil.ts +0 -9
@@ -1,19 +1,19 @@
1
- import fs from 'node:fs'
2
-
3
- // import process from 'node:process'
4
-
5
- const msg = fs.readFileSync('.git/COMMIT_EDITMSG', 'utf-8').trim()
6
-
7
- const commitRE = /^(?:revert: )?(?:feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release)(?:\(.+\))?: .{1,50}/
8
- // const mergeRe = /^(Merge pull request|Merge branch)/
9
-
10
- if (!commitRE.test(msg)) {
11
- // if (!mergeRe.test(msg)) {
12
- // console.log('git commit unpass')
13
- // console.error('git commit error, needs title(scope): desc')
14
- // process.exit(1)
15
- // }
16
- }
17
- else {
18
- console.log('git commit pass')
19
- }
1
+ import fs from 'node:fs'
2
+
3
+ // import process from 'node:process'
4
+
5
+ const msg = fs.readFileSync('.git/COMMIT_EDITMSG', 'utf-8').trim()
6
+
7
+ const commitRE = /^(?:revert: )?(?:feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release)(?:\(.+\))?: .{1,50}/
8
+ // const mergeRe = /^(Merge pull request|Merge branch)/
9
+
10
+ if (!commitRE.test(msg)) {
11
+ // if (!mergeRe.test(msg)) {
12
+ // console.log('git commit unpass')
13
+ // console.error('git commit error, needs title(scope): desc')
14
+ // process.exit(1)
15
+ // }
16
+ }
17
+ else {
18
+ console.log('git commit pass')
19
+ }
package/src/App.vue CHANGED
@@ -1,79 +1,79 @@
1
- <script setup lang="ts">
2
- import type { ConfigProviderThemeVars } from 'vant'
3
- import NavBar from '@af-mobile-client-vue3/components/core/NavBar/index.vue'
4
- import Tabbar from '@af-mobile-client-vue3/components/core/Tabbar/index.vue'
5
- import { isDark, preferredDark } from '@af-mobile-client-vue3/composables/dark'
6
- import useRouteCacheStore from '@af-mobile-client-vue3/stores/modules/routeCache'
7
- import { useHead } from '@unhead/vue'
8
- import {
9
- ConfigProvider as VanConfigProvider,
10
- } from 'vant/es'
11
- import { computed, reactive } from 'vue'
12
- import { appDescription, appName } from './constants'
13
-
14
- useHead({
15
- title: appName,
16
- meta: [
17
- {
18
- name: 'description',
19
- content: appDescription,
20
- },
21
- {
22
- name: 'theme-color',
23
- content: () => isDark.value ? '#00aba9' : '#ffffff',
24
- },
25
- ],
26
- link: [
27
- {
28
- rel: 'icon',
29
- type: 'image/svg+xml',
30
- href: () => preferredDark.value ? '/favicon-dark.svg' : '/favicon.svg',
31
- },
32
- ],
33
- })
34
-
35
- const routeCacheStore = useRouteCacheStore()
36
-
37
- const keepAliveRouteNames = computed(() => {
38
- return routeCacheStore.routeCaches as string[]
39
- })
40
-
41
- const mode = computed(() => {
42
- return isDark.value ? 'dark' : 'light'
43
- })
44
-
45
- const themeVars: ConfigProviderThemeVars = reactive({
46
- baseFont: 'PingFangSC-Regular-woff2, serif',
47
- })
48
- </script>
49
-
50
- <template>
51
- <VanConfigProvider :theme="mode" :theme-vars="themeVars" theme-vars-scope="global">
52
- <NavBar />
53
- <router-view v-slot="{ Component }">
54
- <section class="app-wrapper">
55
- <keep-alive :include="keepAliveRouteNames">
56
- <component :is="Component" :key="$route.fullPath" />
57
- </keep-alive>
58
- </section>
59
- </router-view>
60
- <Tabbar />
61
- </VanConfigProvider>
62
- </template>
63
-
64
- <style>
65
- @import './font-style/font.css';
66
- input[type='password']::-ms-reveal {
67
- display: none;
68
- }
69
- input[type='password']::-ms-clear {
70
- display: none;
71
- }
72
- </style>
73
-
74
- <style scoped>
75
- .app-wrapper {
76
- width: 100%;
77
- position: relative;
78
- }
79
- </style>
1
+ <script setup lang="ts">
2
+ import type { ConfigProviderThemeVars } from 'vant'
3
+ import NavBar from '@af-mobile-client-vue3/components/core/NavBar/index.vue'
4
+ import Tabbar from '@af-mobile-client-vue3/components/core/Tabbar/index.vue'
5
+ import { isDark, preferredDark } from '@af-mobile-client-vue3/composables/dark'
6
+ import useRouteCacheStore from '@af-mobile-client-vue3/stores/modules/routeCache'
7
+ import { useHead } from '@unhead/vue'
8
+ import {
9
+ ConfigProvider as VanConfigProvider,
10
+ } from 'vant/es'
11
+ import { computed, reactive } from 'vue'
12
+ import { appDescription, appName } from './constants'
13
+
14
+ useHead({
15
+ title: appName,
16
+ meta: [
17
+ {
18
+ name: 'description',
19
+ content: appDescription,
20
+ },
21
+ {
22
+ name: 'theme-color',
23
+ content: () => isDark.value ? '#00aba9' : '#ffffff',
24
+ },
25
+ ],
26
+ link: [
27
+ {
28
+ rel: 'icon',
29
+ type: 'image/svg+xml',
30
+ href: () => preferredDark.value ? '/favicon-dark.svg' : '/favicon.svg',
31
+ },
32
+ ],
33
+ })
34
+
35
+ const routeCacheStore = useRouteCacheStore()
36
+
37
+ const keepAliveRouteNames = computed(() => {
38
+ return routeCacheStore.routeCaches as string[]
39
+ })
40
+
41
+ const mode = computed(() => {
42
+ return isDark.value ? 'dark' : 'light'
43
+ })
44
+
45
+ const themeVars: ConfigProviderThemeVars = reactive({
46
+ baseFont: 'PingFangSC-Regular-woff2, serif',
47
+ })
48
+ </script>
49
+
50
+ <template>
51
+ <VanConfigProvider :theme="mode" :theme-vars="themeVars" theme-vars-scope="global">
52
+ <NavBar />
53
+ <router-view v-slot="{ Component }">
54
+ <section class="app-wrapper">
55
+ <keep-alive :include="keepAliveRouteNames">
56
+ <component :is="Component" :key="$route.fullPath" />
57
+ </keep-alive>
58
+ </section>
59
+ </router-view>
60
+ <Tabbar />
61
+ </VanConfigProvider>
62
+ </template>
63
+
64
+ <style>
65
+ @import './font-style/font.css';
66
+ input[type='password']::-ms-reveal {
67
+ display: none;
68
+ }
69
+ input[type='password']::-ms-clear {
70
+ display: none;
71
+ }
72
+ </style>
73
+
74
+ <style scoped>
75
+ .app-wrapper {
76
+ width: 100%;
77
+ position: relative;
78
+ }
79
+ </style>
@@ -0,0 +1,77 @@
1
+ /**
2
+ * 统一认证API接口
3
+ */
4
+
5
+ import type { LoginResponse, WechatOfficialLoginRequest } from '@af-mobile-client-vue3/types/auth'
6
+ import type {
7
+ ExternalLoginParams,
8
+ LoginParams,
9
+ LoginResponseData,
10
+ UnifiedLoginParams,
11
+ UsernamePasswordLoginParams,
12
+ } from './types'
13
+ import { doLogout } from '@af-mobile-client-vue3/api/user'
14
+ import { loginApi } from '@af-mobile-client-vue3/services/api/Login'
15
+
16
+ /**
17
+ * 外部用户认证相关API
18
+ */
19
+
20
+ import { post } from '@af-mobile-client-vue3/services/restTools'
21
+
22
+ /**
23
+ * 统一登录接口
24
+ * 支持用户名密码、微信、第三方平台等多种登录方式
25
+ */
26
+ export function unifiedLogin(params: LoginParams): Promise<LoginResponseData> {
27
+ return post(loginApi.Login, params)
28
+ }
29
+
30
+ /**
31
+ * 外部用户登录
32
+ */
33
+ export function loginExternal(params: ExternalLoginParams): Promise<LoginResponseData> {
34
+ return post(loginApi.Login, params)
35
+ }
36
+
37
+ /**
38
+ * 传统用户名密码登录
39
+ */
40
+ export function loginWithPassword(params: UsernamePasswordLoginParams): Promise<LoginResponseData> {
41
+ return post(loginApi.Login, params)
42
+ }
43
+
44
+ /**
45
+ * 统一认证登录
46
+ */
47
+ export function loginUnified(params: UnifiedLoginParams): Promise<LoginResponseData> {
48
+ return post(loginApi.Login, params)
49
+ }
50
+
51
+ /**
52
+ * 微信公众号外部用户登录
53
+ * @param data 登录参数
54
+ * @returns 登录响应
55
+ */
56
+ export function loginWithWechatOfficial(data: WechatOfficialLoginRequest): Promise<LoginResponse> {
57
+ return post(loginApi.Login, data)
58
+ }
59
+
60
+ /**
61
+ * 外部用户登录(通用)
62
+ * @param data 登录参数
63
+ * @returns 登录响应
64
+ */
65
+ export function externalLogin(data: any): Promise<LoginResponse> {
66
+ return post(loginApi.Login, data)
67
+ }
68
+
69
+ /**
70
+ * 用户登出
71
+ */
72
+ export function logout(): void {
73
+ doLogout()
74
+ }
75
+
76
+ // 重新导出类型定义
77
+ export type * from './types'
@@ -0,0 +1,200 @@
1
+ /**
2
+ * 认证API相关类型定义
3
+ */
4
+
5
+ import type { UserType } from '@af-mobile-client-vue3/types/auth'
6
+
7
+ /**
8
+ * 基础响应接口
9
+ */
10
+ export interface ApiResponse<T = any> {
11
+ code: number
12
+ msg: string
13
+ data: T
14
+ }
15
+
16
+ /**
17
+ * 登录响应数据
18
+ */
19
+ export interface LoginResponseData {
20
+ /** 访问令牌 */
21
+ access_token: string
22
+ /** 过期时间(分钟) */
23
+ expires_in: number
24
+ /** 会话密钥 */
25
+ session?: string
26
+ /** 资源权限 */
27
+ resources?: any
28
+ /** 用户信息 */
29
+ userInfo?: {
30
+ id: string | number
31
+ username: string
32
+ name: string
33
+ avatar?: string
34
+ userType?: UserType
35
+ openid?: string
36
+ platformType?: string
37
+ [key: string]: any
38
+ }
39
+ }
40
+
41
+ /**
42
+ * 微信公众号登录请求
43
+ */
44
+ export interface WechatOfficialLoginParams {
45
+ /** 平台类型 */
46
+ platformType: 'WECHAT_OFFICIAL'
47
+ /** 微信授权码 */
48
+ platformUserId: string
49
+ /** 租户名称 */
50
+ tenantName: string
51
+ /** 资源名称,默认为system */
52
+ resourceName?: string
53
+ /** 是否移动端,默认为true */
54
+ isMobile?: boolean
55
+ }
56
+
57
+ /**
58
+ * 微信小程序登录请求
59
+ */
60
+ export interface WechatMiniLoginParams {
61
+ /** 平台类型 */
62
+ platformType: 'WECHAT_MINI'
63
+ /** 微信授权码 */
64
+ platformUserId: string
65
+ /** 租户名称 */
66
+ tenantName: string
67
+ /** 资源名称,默认为system */
68
+ resourceName?: string
69
+ /** 是否移动端,默认为true */
70
+ isMobile?: boolean
71
+ }
72
+
73
+ /**
74
+ * 第三方应用登录请求
75
+ */
76
+ export interface ThirdPartyAppLoginParams {
77
+ /** 平台类型 */
78
+ platformType: 'THIRD_PARTY_APP'
79
+ /** 第三方授权码 */
80
+ platformUserId: string
81
+ /** 租户名称 */
82
+ tenantName: string
83
+ /** 资源名称,默认为system */
84
+ resourceName?: string
85
+ /** 是否移动端,默认为false */
86
+ isMobile?: boolean
87
+ }
88
+
89
+ /**
90
+ * 外部用户登录参数联合类型
91
+ */
92
+ export type ExternalLoginParams
93
+ = | WechatOfficialLoginParams
94
+ | WechatMiniLoginParams
95
+ | ThirdPartyAppLoginParams
96
+
97
+ /**
98
+ * 传统用户名密码登录请求
99
+ */
100
+ export interface UsernamePasswordLoginParams {
101
+ /** 用户名 */
102
+ username: string
103
+ /** 密码 */
104
+ password: string
105
+ /** 资源名称 */
106
+ resourceName: string
107
+ /** 是否移动端 */
108
+ isMobile?: boolean
109
+ }
110
+
111
+ /**
112
+ * 统一认证登录请求
113
+ */
114
+ export interface UnifiedLoginParams {
115
+ /** 统一认证码 */
116
+ unifiedCode: string
117
+ /** 租户名称 */
118
+ tenantName: string
119
+ /** 登录模式 */
120
+ loginMode: string
121
+ /** 资源名称 */
122
+ resourceName: string
123
+ /** 是否移动端 */
124
+ isMobile?: boolean
125
+ }
126
+
127
+ /**
128
+ * 所有登录参数的联合类型
129
+ */
130
+ export type LoginParams
131
+ = | UsernamePasswordLoginParams
132
+ | UnifiedLoginParams
133
+ | ExternalLoginParams
134
+
135
+ /**
136
+ * 微信授权回调参数
137
+ */
138
+ export interface WechatCallbackParams {
139
+ /** 授权码 */
140
+ code?: string
141
+ /** 状态参数,通常包含租户名称 */
142
+ state?: string
143
+ /** 租户名称 */
144
+ tenantName?: string
145
+ /** 错误信息 */
146
+ error?: string
147
+ /** 错误描述 */
148
+ error_description?: string
149
+ }
150
+
151
+ /**
152
+ * Token刷新请求
153
+ */
154
+ export interface RefreshTokenParams {
155
+ /** 刷新令牌 */
156
+ refresh_token?: string
157
+ }
158
+
159
+ /**
160
+ * 登出请求(通常不需要参数)
161
+ */
162
+ export interface LogoutParams {
163
+ // 预留
164
+ }
165
+
166
+ /**
167
+ * 用户信息获取响应
168
+ */
169
+ export interface UserInfoResponse {
170
+ /** 用户ID */
171
+ id: string | number
172
+ /** 用户名 */
173
+ username: string
174
+ /** 显示名称 */
175
+ name: string
176
+ /** 头像URL */
177
+ avatar?: string
178
+ /** 用户类型 */
179
+ userType?: UserType
180
+ /** 权限列表 */
181
+ permissions?: string[]
182
+ /** 角色列表 */
183
+ roles?: Array<{ id: string, operation: string[] }>
184
+ /** 部门信息 */
185
+ department?: {
186
+ id: string
187
+ name: string
188
+ }
189
+ /** 组织信息 */
190
+ organization?: {
191
+ id: string
192
+ name: string
193
+ }
194
+ /** 外部用户特有字段 */
195
+ openid?: string
196
+ /** 平台类型 */
197
+ platformType?: string
198
+ /** 来源渠道 */
199
+ sourceChannel?: string
200
+ }
@@ -1,30 +1,30 @@
1
- import { http } from '@af-mobile-client-vue3/utils/http'
2
-
3
- interface ListResult {
4
- code: number
5
- message: string
6
- list: Array<any>
7
- }
8
-
9
- export function getListApi(params?: object): Promise<ListResult> {
10
- return http.request({
11
- url: '/list/get',
12
- method: 'get',
13
- params,
14
- })
15
- }
16
-
17
- export function getListApiError(data?: object): Promise<ListResult> {
18
- return http.request({
19
- url: '/list/error',
20
- method: 'post',
21
- data,
22
- })
23
- }
24
-
25
- export async function queryProse(): Promise<any> {
26
- return http.request({
27
- url: '/project/prose',
28
- method: 'post',
29
- })
30
- }
1
+ import { http } from '@af-mobile-client-vue3/utils/http'
2
+
3
+ interface ListResult {
4
+ code: number
5
+ message: string
6
+ list: Array<any>
7
+ }
8
+
9
+ export function getListApi(params?: object): Promise<ListResult> {
10
+ return http.request({
11
+ url: '/list/get',
12
+ method: 'get',
13
+ params,
14
+ })
15
+ }
16
+
17
+ export function getListApiError(data?: object): Promise<ListResult> {
18
+ return http.request({
19
+ url: '/list/error',
20
+ method: 'post',
21
+ data,
22
+ })
23
+ }
24
+
25
+ export async function queryProse(): Promise<any> {
26
+ return http.request({
27
+ url: '/project/prose',
28
+ method: 'post',
29
+ })
30
+ }
@@ -1,40 +1,40 @@
1
- import { loginApi } from '@af-mobile-client-vue3/services/api/Login'
2
-
3
- import { get, post } from '@af-mobile-client-vue3/services/restTools'
4
- import { http } from '@af-mobile-client-vue3/utils/http'
5
-
6
- export interface BasicResponseModel<T = any> {
7
- code: number
8
- msg: string
9
- data: T
10
- }
11
-
12
- export function login(data: any) {
13
- return post(
14
- loginApi.Login,
15
- data,
16
- )
17
- }
18
-
19
- export function OALogin(data: any) {
20
- return get(`/af-system/user/${data.username}/${data.password}/智慧OA`)
21
- }
22
-
23
- /**
24
- * @description: 获取用户信息
25
- */
26
- export function getUserInfo() {
27
- return get(
28
- '/getUserInfo',
29
- )
30
- }
31
-
32
- /**
33
- * @description: 用户登出
34
- */
35
- export function doLogout() {
36
- return http.request({
37
- url: loginApi.Logout,
38
- method: 'DELETE',
39
- })
40
- }
1
+ import { loginApi } from '@af-mobile-client-vue3/services/api/Login'
2
+
3
+ import { get, post } from '@af-mobile-client-vue3/services/restTools'
4
+ import { http } from '@af-mobile-client-vue3/utils/http'
5
+
6
+ export interface BasicResponseModel<T = any> {
7
+ code: number
8
+ msg: string
9
+ data: T
10
+ }
11
+
12
+ export function login(data: any) {
13
+ return post(
14
+ loginApi.Login,
15
+ data,
16
+ )
17
+ }
18
+
19
+ export function OALogin(data: any) {
20
+ return get(`/af-system/user/${data.username}/${data.password}/智慧OA`)
21
+ }
22
+
23
+ /**
24
+ * @description: 获取用户信息
25
+ */
26
+ export function getUserInfo() {
27
+ return get(
28
+ '/getUserInfo',
29
+ )
30
+ }
31
+
32
+ /**
33
+ * @description: 用户登出
34
+ */
35
+ export function doLogout() {
36
+ return http.request({
37
+ url: loginApi.Logout,
38
+ method: 'DELETE',
39
+ })
40
+ }
@@ -1,20 +1,20 @@
1
- <svg width="444.233154" height="203.122437" viewBox="0 0 444.233 203.122" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
- <desc>
3
- Created with Pixso.
4
- </desc>
5
- <defs>
6
- <filter id="filter_37_876_dd" x="0.529297" y="0.516296" width="443.178467" height="202.089844" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
7
- <feFlood flood-opacity="0" result="BackgroundImageFix"/>
8
- <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
9
- <feOffset dx="0" dy="-28"/>
10
- <feGaussianBlur stdDeviation="11.3333"/>
11
- <feComposite in2="hardAlpha" operator="out" k2="-1" k3="1"/>
12
- <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.039 0"/>
13
- <feBlend mode="normal" in2="BackgroundImageFix" result="effect_dropShadow_1"/>
14
- <feBlend mode="normal" in="SourceGraphic" in2="effect_dropShadow_1" result="shape"/>
15
- </filter>
16
- </defs>
17
- <g filter="url(#filter_37_876_dd)">
18
- <path id="Path 2" d="M34.6331 62.5163C159.633 62.5163 156.204 115.98 222.133 115.98C288.062 115.98 290.281 62.5163 409.633 62.5163C409.801 62.5163 409.633 196.606 409.633 196.606L34.6331 196.606C34.6331 196.606 34.3997 62.5163 34.6331 62.5163Z" fill-rule="evenodd" fill="#FFFFFF"/>
19
- </g>
20
- </svg>
1
+ <svg width="444.233154" height="203.122437" viewBox="0 0 444.233 203.122" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
+ <desc>
3
+ Created with Pixso.
4
+ </desc>
5
+ <defs>
6
+ <filter id="filter_37_876_dd" x="0.529297" y="0.516296" width="443.178467" height="202.089844" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
7
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
8
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
9
+ <feOffset dx="0" dy="-28"/>
10
+ <feGaussianBlur stdDeviation="11.3333"/>
11
+ <feComposite in2="hardAlpha" operator="out" k2="-1" k3="1"/>
12
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.039 0"/>
13
+ <feBlend mode="normal" in2="BackgroundImageFix" result="effect_dropShadow_1"/>
14
+ <feBlend mode="normal" in="SourceGraphic" in2="effect_dropShadow_1" result="shape"/>
15
+ </filter>
16
+ </defs>
17
+ <g filter="url(#filter_37_876_dd)">
18
+ <path id="Path 2" d="M34.6331 62.5163C159.633 62.5163 156.204 115.98 222.133 115.98C288.062 115.98 290.281 62.5163 409.633 62.5163C409.801 62.5163 409.633 196.606 409.633 196.606L34.6331 196.606C34.6331 196.606 34.3997 62.5163 34.6331 62.5163Z" fill-rule="evenodd" fill="#FFFFFF"/>
19
+ </g>
20
+ </svg>