af-mobile-client-vue3 1.0.95 → 1.0.96

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 (113) hide show
  1. package/.env +6 -6
  2. package/.env.development +4 -4
  3. package/.env.envoiceShow +6 -6
  4. package/.env.production +6 -6
  5. package/.husky/commit-msg +1 -1
  6. package/.husky/pre-commit +1 -1
  7. package/.vscode/settings.json +61 -61
  8. package/build/vite/index.ts +91 -91
  9. package/eslint.config.js +9 -1
  10. package/mock/modules/user.mock.ts +152 -152
  11. package/package.json +1 -1
  12. package/public/favicon.svg +4 -4
  13. package/public/safari-pinned-tab.svg +32 -32
  14. package/scripts/verifyCommit.js +19 -19
  15. package/src/App.vue +43 -43
  16. package/src/api/user/index.ts +40 -40
  17. package/src/bootstrap.ts +18 -18
  18. package/src/components/core/App/MicroAppView.vue +3 -3
  19. package/src/components/core/NavBar/index.vue +12 -12
  20. package/src/components/core/SvgIcon/index.vue +1 -1
  21. package/src/components/core/Tabbar/index.vue +38 -38
  22. package/src/components/core/Uploader/index.vue +1 -1
  23. package/src/components/core/XGridDropOption/index.vue +151 -151
  24. package/src/components/core/XMultiSelect/index.vue +183 -183
  25. package/src/components/data/XCellDetail/index.vue +106 -106
  26. package/src/components/data/XCellList/XCellList.md +28 -28
  27. package/src/components/data/XCellList/index.vue +50 -11
  28. package/src/components/data/XCellListFilter/QrScanner/index.vue +1 -1
  29. package/src/components/data/XCellListFilter/VpnRecognition/index.vue +3 -3
  30. package/src/components/data/XCellListFilter/index.vue +160 -62
  31. package/src/components/data/XForm/index.vue +2 -2
  32. package/src/components/data/XFormGroup/index.vue +3 -3
  33. package/src/components/data/XFormItem/index.vue +25 -26
  34. package/src/components/data/XOlMap/demo.vue +209 -0
  35. package/src/components/data/XOlMap/index.vue +644 -0
  36. package/src/components/data/XReportForm/XReportFormJsonRender.vue +220 -220
  37. package/src/components/data/XReportForm/index.vue +1079 -1079
  38. package/src/components/data/XReportGrid/XAddReport/XAddReport.vue +4 -7
  39. package/src/components/data/XReportGrid/XAddReport/index.md +3 -7
  40. package/src/components/data/XReportGrid/XAddReport/index.ts +2 -2
  41. package/src/components/data/XReportGrid/XReport.vue +25 -38
  42. package/src/components/data/XReportGrid/XReportDesign.vue +46 -46
  43. package/src/components/data/XReportGrid/XReportDrawer/XReportDrawer.vue +3 -3
  44. package/src/components/data/XReportGrid/XReportDrawer/index.ts +2 -2
  45. package/src/components/data/XReportGrid/XReportJsonRender.vue +20 -7
  46. package/src/components/data/XReportGrid/XReportTrGroup.vue +4 -4
  47. package/src/components/data/XReportGrid/index.md +4 -6
  48. package/src/components/data/XSignature/index.vue +285 -285
  49. package/src/components/data/XTag/index.vue +10 -10
  50. package/src/components/layout/NormalDataLayout/index.vue +70 -70
  51. package/src/components/layout/TabBarLayout/index.vue +40 -40
  52. package/src/components.d.ts +53 -53
  53. package/src/env.d.ts +16 -16
  54. package/src/font-style/font.css +3 -3
  55. package/src/hooks/useCommon.ts +9 -9
  56. package/src/layout/GridView/index.vue +1 -1
  57. package/src/layout/PageLayout.vue +4 -4
  58. package/src/layout/SingleLayout.vue +2 -2
  59. package/src/locales/en-US.json +25 -25
  60. package/src/locales/zh-CN.json +25 -25
  61. package/src/plugins/AppData.ts +38 -38
  62. package/src/plugins/index.ts +1 -1
  63. package/src/router/guards.ts +59 -59
  64. package/src/router/index.ts +61 -60
  65. package/src/router/invoiceRoutes.ts +33 -33
  66. package/src/router/routes.ts +20 -14
  67. package/src/services/api/common.ts +109 -109
  68. package/src/services/api/manage.ts +8 -8
  69. package/src/services/restTools.ts +52 -52
  70. package/src/services/v3Api.ts +46 -35
  71. package/src/stores/modules/cachedView.ts +1 -1
  72. package/src/stores/modules/setting.ts +52 -52
  73. package/src/stores/modules/user.ts +5 -5
  74. package/src/stores/mutation-type.ts +7 -7
  75. package/src/styles/app.less +6 -1
  76. package/src/utils/Storage.ts +1 -1
  77. package/src/utils/authority-utils.ts +84 -84
  78. package/src/utils/crypto.ts +39 -39
  79. package/src/utils/http/index.ts +6 -6
  80. package/src/utils/i18n.ts +41 -41
  81. package/src/utils/indexedDB.ts +180 -180
  82. package/src/utils/mobileUtil.ts +26 -26
  83. package/src/utils/routerUtil.ts +271 -271
  84. package/src/utils/runEvalFunction.ts +13 -13
  85. package/src/utils/validate.ts +1 -1
  86. package/src/utils/wechatUtil.ts +9 -9
  87. package/src/views/chat/index.vue +1 -1
  88. package/src/views/common/LoadError.vue +64 -64
  89. package/src/views/common/NotFound.vue +68 -68
  90. package/src/views/component/EvaluateRecordView/index.vue +40 -40
  91. package/src/views/component/XCellDetailView/index.vue +217 -216
  92. package/src/views/component/XCellListView/index.vue +1 -1
  93. package/src/views/component/XFormAppraiseView/index.vue +4 -4
  94. package/src/views/component/XFormGroupView/index.vue +1 -1
  95. package/src/views/component/XFormView/index.vue +6 -7
  96. package/src/views/component/XReportFormIframeView/index.vue +47 -47
  97. package/src/views/component/XReportFormView/index.vue +13 -13
  98. package/src/views/component/XReportGridView/index.vue +2 -3
  99. package/src/views/component/XSignatureView/index.vue +50 -50
  100. package/src/views/component/index.vue +4 -4
  101. package/src/views/component/menu.vue +117 -117
  102. package/src/views/component/notice.vue +46 -46
  103. package/src/views/component/topNav.vue +36 -36
  104. package/src/views/invoiceShow/index.vue +61 -62
  105. package/src/views/user/login/ForgetPasswordForm.vue +94 -93
  106. package/src/views/user/login/LoginForm.vue +8 -7
  107. package/src/views/user/login/LoginTitle.vue +68 -68
  108. package/src/views/user/login/index.vue +22 -22
  109. package/src/views/user/my/index.vue +230 -230
  110. package/src/vue-router.d.ts +9 -9
  111. package/tsconfig.json +43 -43
  112. package/uno.config.ts +1 -1
  113. package/vite.config.ts +123 -123
@@ -1,93 +1,94 @@
1
- <script setup lang="ts">
2
- import { computed, reactive, ref, unref } from 'vue'
3
- import {
4
- type FormInstance,
5
- Button as VanButton,
6
- Field as VanField,
7
- Form as VanForm,
8
- showFailToast,
9
- } from 'vant'
10
- import { LoginStateEnum, useFormRules, useLoginState } from '@af-mobile-client-vue3/hooks/useLogin'
11
-
12
- const { handleBackLogin, getLoginState } = useLoginState()
13
- const { getFormRules } = useFormRules()
14
- const getShow = computed(() => unref(getLoginState) === LoginStateEnum.RESET_PASSWORD)
15
-
16
- const loading = ref(false)
17
- const formRef = ref<FormInstance>()
18
- const formData = reactive({
19
- username: '',
20
- mobile: '',
21
- sms: '',
22
- })
23
-
24
- function handleReset() {
25
- formRef.value
26
- ?.validate()
27
- .then(async () => {
28
- try {
29
- loading.value = true
30
- // do something
31
- }
32
- finally {
33
- loading.value = false
34
- }
35
- })
36
- .catch((e) => {
37
- showFailToast('验证失败')
38
- console.error(e)
39
- })
40
- }
41
- </script>
42
-
43
- <template>
44
- <div v-if="getShow" class="form forget_password_form">
45
- <VanForm ref="formRef" @submit="handleReset">
46
- <VanField
47
- v-model="formData.username"
48
- class="form_field"
49
- name="username"
50
- label="账号"
51
- placeholder="请输入账号"
52
- label-align="top"
53
- :rules="getFormRules.username"
54
- />
55
- <VanField
56
- v-model="formData.mobile"
57
- class="form_field"
58
- name="password"
59
- label="手机号码"
60
- placeholder="请输入手机号码"
61
- label-align="top"
62
- :rules="getFormRules.mobile"
63
- />
64
-
65
- <VanField
66
- v-model="formData.sms"
67
- class="form_field"
68
- center
69
- clearable
70
- label-align="top"
71
- label="短信验证码"
72
- placeholder="请输入短信验证码"
73
- :rules="getFormRules.sms"
74
- >
75
- <template #button>
76
- <VanButton size="small" type="primary">
77
- 发送验证码
78
- </VanButton>
79
- </template>
80
- </VanField>
81
- <VanButton class="reset_btn btn" type="primary" block native-type="submit" :loading="loading">
82
-
83
- </VanButton>
84
- <VanButton class="back_btn btn" plain type="primary" block @click="handleBackLogin">
85
-
86
- </VanButton>
87
- </VanForm>
88
- </div>
89
- </template>
90
-
91
- <style scoped lang="less">
92
- @import "@af-mobile-client-vue3/styles/login.less";
93
- </style>
1
+ <script setup lang="ts">
2
+ import type { FormInstance } from 'vant'
3
+ import { LoginStateEnum, useFormRules, useLoginState } from '@af-mobile-client-vue3/hooks/useLogin'
4
+ import {
5
+
6
+ showFailToast,
7
+ Button as VanButton,
8
+ Field as VanField,
9
+ Form as VanForm,
10
+ } from 'vant'
11
+ import { computed, reactive, ref, unref } from 'vue'
12
+
13
+ const { handleBackLogin, getLoginState } = useLoginState()
14
+ const { getFormRules } = useFormRules()
15
+ const getShow = computed(() => unref(getLoginState) === LoginStateEnum.RESET_PASSWORD)
16
+
17
+ const loading = ref(false)
18
+ const formRef = ref<FormInstance>()
19
+ const formData = reactive({
20
+ username: '',
21
+ mobile: '',
22
+ sms: '',
23
+ })
24
+
25
+ function handleReset() {
26
+ formRef.value
27
+ ?.validate()
28
+ .then(async () => {
29
+ try {
30
+ loading.value = true
31
+ // do something
32
+ }
33
+ finally {
34
+ loading.value = false
35
+ }
36
+ })
37
+ .catch((e) => {
38
+ showFailToast('验证失败')
39
+ console.error(e)
40
+ })
41
+ }
42
+ </script>
43
+
44
+ <template>
45
+ <div v-if="getShow" class="form forget_password_form">
46
+ <VanForm ref="formRef" @submit="handleReset">
47
+ <VanField
48
+ v-model="formData.username"
49
+ class="form_field"
50
+ name="username"
51
+ label="账号"
52
+ placeholder="请输入账号"
53
+ label-align="top"
54
+ :rules="getFormRules.username"
55
+ />
56
+ <VanField
57
+ v-model="formData.mobile"
58
+ class="form_field"
59
+ name="password"
60
+ label="手机号码"
61
+ placeholder="请输入手机号码"
62
+ label-align="top"
63
+ :rules="getFormRules.mobile"
64
+ />
65
+
66
+ <VanField
67
+ v-model="formData.sms"
68
+ class="form_field"
69
+ center
70
+ clearable
71
+ label-align="top"
72
+ label="短信验证码"
73
+ placeholder="请输入短信验证码"
74
+ :rules="getFormRules.sms"
75
+ >
76
+ <template #button>
77
+ <VanButton size="small" type="primary">
78
+ 发送验证码
79
+ </VanButton>
80
+ </template>
81
+ </VanField>
82
+ <VanButton class="reset_btn btn" type="primary" block native-type="submit" :loading="loading">
83
+ 重 置
84
+ </VanButton>
85
+ <VanButton class="back_btn btn" plain type="primary" block @click="handleBackLogin">
86
+ 返 回
87
+ </VanButton>
88
+ </VanForm>
89
+ </div>
90
+ </template>
91
+
92
+ <style scoped lang="less">
93
+ @import "@af-mobile-client-vue3/styles/login.less";
94
+ </style>
@@ -1,16 +1,17 @@
1
1
  <script setup lang="ts">
2
- import { computed, inject, onBeforeMount, onMounted, reactive, ref, unref } from 'vue'
3
- import { Switch, Button as VanButton, Col as VanCol, Field as VanField, Form as VanForm, Icon as VanIcon, Loading as VanLoading, Row as VanRow, closeToast, showDialog, showFailToast } from 'vant'
2
+ import type { UserInfo } from '@af-mobile-client-vue3/stores/modules/user'
4
3
  import type { FormInstance } from 'vant'
5
- import 'vant/lib/switch/index.css'
6
- import { useRoute, useRouter } from 'vue-router'
7
4
  import { LoginStateEnum, useFormRules, useLoginState } from '@af-mobile-client-vue3/hooks/useLogin'
8
- import { useSettingStore } from '@af-mobile-client-vue3/stores/modules/setting'
9
- import { type UserInfo, useUserStore } from '@af-mobile-client-vue3/stores/modules/user'
10
5
  import GetAppDataService from '@af-mobile-client-vue3/plugins/AppData'
6
+ import { useSettingStore } from '@af-mobile-client-vue3/stores/modules/setting'
7
+ import { useUserStore } from '@af-mobile-client-vue3/stores/modules/user'
11
8
  import { indexedDB } from '@af-mobile-client-vue3/utils/indexedDB'
12
9
  import { funcToRouter, loadRoutes } from '@af-mobile-client-vue3/utils/routerUtil'
13
10
  import { isWechat } from '@af-mobile-client-vue3/utils/wechatUtil'
11
+ import { closeToast, showDialog, showFailToast, Switch, Button as VanButton, Col as VanCol, Field as VanField, Form as VanForm, Icon as VanIcon, Loading as VanLoading, Row as VanRow } from 'vant'
12
+ import { computed, inject, onBeforeMount, onMounted, reactive, ref, unref } from 'vue'
13
+ import { useRoute, useRouter } from 'vue-router'
14
+ import 'vant/lib/switch/index.css'
14
15
 
15
16
  declare let WeixinJSBridge: any
16
17
  const { setLoginState, getLoginState } = useLoginState()
@@ -74,7 +75,7 @@ onBeforeMount(async () => {
74
75
  }
75
76
  }
76
77
  }
77
- catch (e) {
78
+ catch {
78
79
  await showDialog({ message: '当前用户无登录权限' })
79
80
  closeWindows()
80
81
  }
@@ -1,68 +1,68 @@
1
- <script setup lang="ts">
2
- import { createStorage } from '@af-mobile-client-vue3/utils/Storage'
3
- import { APP_WEB_CONFIG_KEY } from '@af-mobile-client-vue3/stores/mutation-type'
4
-
5
- const Storage = createStorage({ storage: localStorage })
6
- const webConfig = Storage.get(APP_WEB_CONFIG_KEY)
7
-
8
- // 动态获取图片
9
- function getAssetsImages(logo) {
10
- return new URL(`/src/assets/img/user/login/${logo}`, import.meta.url).href
11
- }
12
- </script>
13
-
14
- <template>
15
- <div class="login_title">
16
- <div class="login_logo">
17
- <img :src="getAssetsImages(webConfig?.setting?.systemLogo ?? 'logo.png')" alt="logo">
18
- </div>
19
- <div class="title_content">
20
- <div class="login_title_value">
21
- {{ webConfig?.setting?.systemName ?? '智慧燃气' }}
22
- </div>
23
- <div class="login_description">
24
- 欢迎使用
25
- </div>
26
- </div>
27
- </div>
28
- </template>
29
-
30
- <style scoped lang="less">
31
- .login_title {
32
- width: 100%;
33
- background-image: url('@af-mobile-client-vue3/assets/img/user/login/background-shadow-1.svg');
34
- background-repeat: no-repeat;
35
- background-size: cover;
36
- background-position: center center;
37
- text-align: center;
38
- .login_logo {
39
- display: flex;
40
- align-items: center;
41
- justify-content: center;
42
- width: 100px;
43
- height: 100px;
44
- margin: 0 auto 62px auto;
45
- border-radius: 23.04px;
46
- box-shadow: 0 16px 32px 0 rgba(0, 0, 0, 0.09);
47
- background: var(--van-background-2);
48
- text-align: center;
49
- img {
50
- width: 82px;
51
- height: 82px;
52
- }
53
- }
54
- .title_content {
55
- color: rgb(83, 88, 110);
56
- font-size: 26px;
57
- font-weight: 600;
58
- line-height: 26px;
59
- .login_description {
60
- margin-top: 13px;
61
- color: var(--van-text-color-3);
62
- font-size: 16px;
63
- font-weight: 400;
64
- line-height: 16px;
65
- }
66
- }
67
- }
68
- </style>
1
+ <script setup lang="ts">
2
+ import { APP_WEB_CONFIG_KEY } from '@af-mobile-client-vue3/stores/mutation-type'
3
+ import { createStorage } from '@af-mobile-client-vue3/utils/Storage'
4
+
5
+ const Storage = createStorage({ storage: localStorage })
6
+ const webConfig = Storage.get(APP_WEB_CONFIG_KEY)
7
+
8
+ // 动态获取图片
9
+ function getAssetsImages(logo) {
10
+ return new URL(`/src/assets/img/user/login/${logo}`, import.meta.url).href
11
+ }
12
+ </script>
13
+
14
+ <template>
15
+ <div class="login_title">
16
+ <div class="login_logo">
17
+ <img :src="getAssetsImages(webConfig?.setting?.systemLogo ?? 'logo.png')" alt="logo">
18
+ </div>
19
+ <div class="title_content">
20
+ <div class="login_title_value">
21
+ {{ webConfig?.setting?.systemName ?? '智慧燃气' }}
22
+ </div>
23
+ <div class="login_description">
24
+ 欢迎使用
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </template>
29
+
30
+ <style scoped lang="less">
31
+ .login_title {
32
+ width: 100%;
33
+ background-image: url('@af-mobile-client-vue3/assets/img/user/login/background-shadow-1.svg');
34
+ background-repeat: no-repeat;
35
+ background-size: cover;
36
+ background-position: center center;
37
+ text-align: center;
38
+ .login_logo {
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ width: 100px;
43
+ height: 100px;
44
+ margin: 0 auto 62px auto;
45
+ border-radius: 23.04px;
46
+ box-shadow: 0 16px 32px 0 rgba(0, 0, 0, 0.09);
47
+ background: var(--van-background-2);
48
+ text-align: center;
49
+ img {
50
+ width: 82px;
51
+ height: 82px;
52
+ }
53
+ }
54
+ .title_content {
55
+ color: rgb(83, 88, 110);
56
+ font-size: 26px;
57
+ font-weight: 600;
58
+ line-height: 26px;
59
+ .login_description {
60
+ margin-top: 13px;
61
+ color: var(--van-text-color-3);
62
+ font-size: 16px;
63
+ font-weight: 400;
64
+ line-height: 16px;
65
+ }
66
+ }
67
+ }
68
+ </style>
@@ -1,22 +1,22 @@
1
- <script setup lang="ts">
2
- import LoginTitle from './LoginTitle.vue'
3
- import LoginForm from './LoginForm.vue'
4
- import ForgetPasswordForm from './ForgetPasswordForm.vue'
5
- </script>
6
-
7
- <template>
8
- <div class="login_container">
9
- <LoginTitle />
10
- <LoginForm />
11
- <ForgetPasswordForm />
12
- </div>
13
- </template>
14
-
15
- <style scoped lang="less">
16
- .login_container {
17
- height: 100vh;
18
- padding-top: 10px;
19
- background: var(--van-background-2);
20
- position: relative;
21
- }
22
- </style>
1
+ <script setup lang="ts">
2
+ import ForgetPasswordForm from './ForgetPasswordForm.vue'
3
+ import LoginForm from './LoginForm.vue'
4
+ import LoginTitle from './LoginTitle.vue'
5
+ </script>
6
+
7
+ <template>
8
+ <div class="login_container">
9
+ <LoginTitle />
10
+ <LoginForm />
11
+ <ForgetPasswordForm />
12
+ </div>
13
+ </template>
14
+
15
+ <style scoped lang="less">
16
+ .login_container {
17
+ height: 100vh;
18
+ padding-top: 10px;
19
+ background: var(--van-background-2);
20
+ position: relative;
21
+ }
22
+ </style>