af-mobile-client-vue3 1.1.6 → 1.1.7

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 (79) 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/mock/modules/user.mock.ts +152 -152
  9. package/package.json +1 -1
  10. package/public/favicon.svg +4 -4
  11. package/public/safari-pinned-tab.svg +32 -32
  12. package/scripts/verifyCommit.js +19 -19
  13. package/src/App.vue +43 -43
  14. package/src/api/user/index.ts +40 -40
  15. package/src/bootstrap.ts +18 -18
  16. package/src/components/core/NavBar/index.vue +12 -12
  17. package/src/components/core/Tabbar/index.vue +38 -38
  18. package/src/components/core/XGridDropOption/index.vue +151 -151
  19. package/src/components/core/XMultiSelect/index.vue +183 -183
  20. package/src/components/data/XCellDetail/index.vue +106 -106
  21. package/src/components/data/XForm/index.vue +5 -0
  22. package/src/components/data/XFormItem/index.vue +3 -4
  23. package/src/components/data/XOlMap/README.md +0 -2
  24. package/src/components/data/XOlMap/XLocationPicker/index.vue +21 -9
  25. package/src/components/data/XOlMap/index.vue +81 -74
  26. package/src/components/data/XOlMap/types.ts +0 -4
  27. package/src/components/data/XOlMap/utils/wgs84ToGcj02.js +154 -154
  28. package/src/components/data/XReportForm/XReportFormJsonRender.vue +220 -220
  29. package/src/components/data/XReportForm/index.vue +1079 -1079
  30. package/src/components/data/XReportGrid/XAddReport/index.ts +1 -1
  31. package/src/components/data/XReportGrid/XReportDrawer/index.ts +1 -1
  32. package/src/components/data/XSignature/index.vue +285 -285
  33. package/src/components/data/XTag/index.vue +10 -10
  34. package/src/components/layout/NormalDataLayout/index.vue +70 -70
  35. package/src/components/layout/TabBarLayout/index.vue +40 -40
  36. package/src/components.d.ts +53 -53
  37. package/src/env.d.ts +16 -16
  38. package/src/font-style/font.css +3 -3
  39. package/src/hooks/useCommon.ts +9 -9
  40. package/src/locales/en-US.json +25 -25
  41. package/src/locales/zh-CN.json +25 -25
  42. package/src/plugins/AppData.ts +38 -38
  43. package/src/router/guards.ts +59 -59
  44. package/src/router/index.ts +61 -61
  45. package/src/router/invoiceRoutes.ts +33 -33
  46. package/src/services/api/common.ts +109 -109
  47. package/src/services/api/manage.ts +8 -8
  48. package/src/services/api/search.ts +16 -16
  49. package/src/services/restTools.ts +56 -56
  50. package/src/services/v3Api.ts +11 -11
  51. package/src/stores/modules/setting.ts +52 -52
  52. package/src/stores/mutation-type.ts +7 -7
  53. package/src/utils/authority-utils.ts +84 -84
  54. package/src/utils/crypto.ts +39 -39
  55. package/src/utils/i18n.ts +41 -41
  56. package/src/utils/indexedDB.ts +180 -180
  57. package/src/utils/mobileUtil.ts +26 -26
  58. package/src/utils/routerUtil.ts +271 -271
  59. package/src/utils/runEvalFunction.ts +13 -13
  60. package/src/utils/wechatUtil.ts +9 -9
  61. package/src/views/common/LoadError.vue +64 -64
  62. package/src/views/common/NotFound.vue +68 -68
  63. package/src/views/component/EvaluateRecordView/index.vue +40 -40
  64. package/src/views/component/XCellDetailView/index.vue +217 -217
  65. package/src/views/component/XOlMapView/XLocationPicker/index.vue +120 -120
  66. package/src/views/component/XOlMapView/index.vue +0 -1
  67. package/src/views/component/XReportFormIframeView/index.vue +47 -47
  68. package/src/views/component/XReportFormView/index.vue +13 -13
  69. package/src/views/component/XSignatureView/index.vue +50 -50
  70. package/src/views/component/menu.vue +117 -117
  71. package/src/views/component/notice.vue +46 -46
  72. package/src/views/component/topNav.vue +36 -36
  73. package/src/views/invoiceShow/index.vue +61 -61
  74. package/src/views/user/login/ForgetPasswordForm.vue +94 -94
  75. package/src/views/user/login/LoginTitle.vue +68 -68
  76. package/src/views/user/login/index.vue +22 -22
  77. package/src/views/user/my/index.vue +230 -230
  78. package/src/vue-router.d.ts +9 -9
  79. package/tsconfig.json +43 -43
@@ -1,61 +1,61 @@
1
- <script setup lang="ts">
2
- import { http } from '@af-mobile-client-vue3/utils/http'
3
- import { showDialog, Loading as VanLoading } from 'vant'
4
- import { onMounted, ref } from 'vue'
5
- import { useRoute } from 'vue-router'
6
-
7
- // 获取url中的sellid参数
8
- const route = useRoute()
9
- const sellid = route.query.sellid
10
- const showLoading = ref(true)
11
-
12
- onMounted(async () => {
13
- if (sellid) {
14
- http.request({
15
- url: '/invoice/rs/logic/getInvoiceBySellId',
16
- method: 'post',
17
- data: {
18
- sellid,
19
- },
20
- }).then((_res: any) => {
21
- showLoading.value = false
22
- if (_res.type === 'success') {
23
- if (_res.url)
24
- window.open(_res.url)
25
- }
26
- else {
27
- showDialog({
28
- message: _res.msg,
29
- theme: 'round-button',
30
- showConfirmButton: false,
31
- }).then(() => {
32
- // on close
33
- })
34
- }
35
- })
36
- }
37
- })
38
- </script>
39
-
40
- <template>
41
- <div class="invoiceShow">
42
- <VanLoading v-if="showLoading" type="spinner" color="#1989fa" vertical>
43
- 正在努力获取发票信息,请稍后。。。
44
- </VanLoading>
45
- </div>
46
- </template>
47
-
48
- <style scoped lang="less">
49
- .invoiceShow {
50
- width: 100vw !important;
51
- height: 100vh !important;
52
- overflow-y: hidden;
53
- display: flex;
54
- justify-content: center;
55
- align-items: center;
56
- }
57
-
58
- .invoiceShow > * {
59
- transform: scale(1.5);
60
- }
61
- </style>
1
+ <script setup lang="ts">
2
+ import { http } from '@af-mobile-client-vue3/utils/http'
3
+ import { showDialog, Loading as VanLoading } from 'vant'
4
+ import { onMounted, ref } from 'vue'
5
+ import { useRoute } from 'vue-router'
6
+
7
+ // 获取url中的sellid参数
8
+ const route = useRoute()
9
+ const sellid = route.query.sellid
10
+ const showLoading = ref(true)
11
+
12
+ onMounted(async () => {
13
+ if (sellid) {
14
+ http.request({
15
+ url: '/invoice/rs/logic/getInvoiceBySellId',
16
+ method: 'post',
17
+ data: {
18
+ sellid,
19
+ },
20
+ }).then((_res: any) => {
21
+ showLoading.value = false
22
+ if (_res.type === 'success') {
23
+ if (_res.url)
24
+ window.open(_res.url)
25
+ }
26
+ else {
27
+ showDialog({
28
+ message: _res.msg,
29
+ theme: 'round-button',
30
+ showConfirmButton: false,
31
+ }).then(() => {
32
+ // on close
33
+ })
34
+ }
35
+ })
36
+ }
37
+ })
38
+ </script>
39
+
40
+ <template>
41
+ <div class="invoiceShow">
42
+ <VanLoading v-if="showLoading" type="spinner" color="#1989fa" vertical>
43
+ 正在努力获取发票信息,请稍后。。。
44
+ </VanLoading>
45
+ </div>
46
+ </template>
47
+
48
+ <style scoped lang="less">
49
+ .invoiceShow {
50
+ width: 100vw !important;
51
+ height: 100vh !important;
52
+ overflow-y: hidden;
53
+ display: flex;
54
+ justify-content: center;
55
+ align-items: center;
56
+ }
57
+
58
+ .invoiceShow > * {
59
+ transform: scale(1.5);
60
+ }
61
+ </style>
@@ -1,94 +1,94 @@
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
+ <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,68 +1,68 @@
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
+ <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 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>
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>