af-mobile-client-vue3 1.2.59 → 1.3.2

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 (56) hide show
  1. package/.editorconfig +5 -34
  2. package/.env +1 -1
  3. package/.env.development +0 -3
  4. package/.env.production +1 -7
  5. package/build/vite/index.ts +2 -12
  6. package/build/vite/optimize.ts +2 -2
  7. package/compress.js +36 -0
  8. package/package.json +37 -37
  9. package/src/App.vue +3 -5
  10. package/src/assets/img/banner/appraise-banner-1.png +0 -0
  11. package/src/assets/img/banner/appraise-banner-2.png +0 -0
  12. package/src/components/core/BeautifulLoading/index.vue +1 -2
  13. package/src/components/core/ImageUploader/index.vue +3 -2
  14. package/src/components/core/NavBar/index.vue +23 -13
  15. package/src/components/core/Tabbar/index.vue +5 -3
  16. package/src/components/data/XBadge/index.vue +2 -2
  17. package/src/components/data/XCellList/index.vue +17 -14
  18. package/src/components/data/XFormGroup/doc/FormGroupDemo.vue +4 -4
  19. package/src/components/data/XFormGroup/index.vue +11 -1
  20. package/src/components/data/XFormItem/index.vue +2 -22
  21. package/src/components/data/XOlMap/utils/wgs84ToGcj02.js +154 -154
  22. package/src/components/data/XReportForm/XReportFormJsonRender.vue +22 -22
  23. package/src/components/data/XReportForm/index.vue +23 -14
  24. package/src/components/data/XReportGrid/XAddReport/XAddReport.vue +1 -2
  25. package/src/components/data/XReportGrid/XReport.vue +3 -3
  26. package/src/components/data/XReportGrid/XReportDesign.vue +13 -13
  27. package/src/components/data/XReportGrid/XReportDrawer/XReportDrawer.vue +1 -1
  28. package/src/components/data/XReportGrid/XReportJsonRender.vue +11 -11
  29. package/src/components/data/XReportGrid/XReportTrGroup.vue +3 -3
  30. package/src/components/layout/NormalDataLayout/index.vue +2 -3
  31. package/src/config/routes.ts +6 -2
  32. package/src/constants/index.ts +2 -0
  33. package/src/locales/en-US.json +52 -28
  34. package/src/locales/zh-CN.json +57 -33
  35. package/src/main.ts +0 -2
  36. package/src/router/routes.ts +0 -6
  37. package/src/router/types.ts +0 -2
  38. package/src/types/vue-router.d.ts +0 -2
  39. package/src/utils/mobileUtil.ts +2 -2
  40. package/src/utils/queryFormDefaultRangePicker.ts +57 -57
  41. package/src/utils/set-page-title.ts +3 -5
  42. package/src/views/common/LoadError.vue +1 -2
  43. package/src/views/common/NotFound.vue +2 -3
  44. package/src/views/component/XCellListView/index.vue +15 -142
  45. package/src/views/component/XFormGroupView/index.vue +15 -11
  46. package/src/views/component/XFormView/index.vue +17 -2
  47. package/src/views/component/XFormView/oldindex.vue +70 -0
  48. package/src/views/component/XOlMapView/XLocationPicker/index.vue +118 -118
  49. package/tsconfig.json +5 -8
  50. package/uno.config.ts +32 -1
  51. package/vite.config.ts +1 -1
  52. package/.env.envoiceShow +0 -7
  53. package/src/components/core/App/MicroAppView.vue +0 -59
  54. package/src/components/core/SvgIcon/index.vue +0 -61
  55. package/src/utils/local-storage.ts +0 -9
  56. package/src/views/component/XFormGroupView/xformgroup222.vue +0 -97
@@ -123,7 +123,7 @@ function determineCellStyle(labelFunctionReturn: any, color = '#000', borderWidt
123
123
  padding: '8px',
124
124
  }
125
125
 
126
- let result = {}
126
+ let result: any
127
127
  // 判断表头是否有声明的样式
128
128
  if (labelFunctionReturn.style !== undefined)
129
129
  result = props.noTopBorder ? { ...NoTopBorder, ...labelFunctionReturn.style } : { ...withBorder, ...labelFunctionReturn.style }
@@ -157,10 +157,10 @@ onBeforeMount(() => {
157
157
  // 遍历配置,将所有JSON传递的方法保存到一个数组中,并用index来一一对应
158
158
  for (let i = 0; i < props.config.content.length; i++) {
159
159
  receivedFunction.value.push({
160
- // eslint-disable-next-line no-eval
161
- labelFunction: eval(`(${props.config.content[i].customFunctionForLabel})`),
162
- // eslint-disable-next-line no-eval
163
- valueFunction: eval(`(${props.config.content[i].customFunctionForValue})`),
160
+ // eslint-disable-next-line no-new-func
161
+ labelFunction: new Function(`return ${props.config.content[i].customFunctionForLabel}`)(),
162
+ // eslint-disable-next-line no-new-func
163
+ valueFunction: new Function(`return ${props.config.content[i].customFunctionForValue}`)(),
164
164
  })
165
165
  }
166
166
  })
@@ -188,7 +188,7 @@ onBeforeMount(() => {
188
188
  <!-- 表头 -->
189
189
  <td
190
190
  :class="noTopBorder ? 'tdWithNoTopBorder' : 'tdWithBorder'"
191
- :style="determineCellStyle(receivedFunction[rowIndex].labelFunction(config, item))"
191
+ :style="determineCellStyle(receivedFunction[rowIndex].labelFunction(config, row))"
192
192
  colspan="6"
193
193
  >
194
194
  <template v-if="receivedFunction[rowIndex].labelFunction(config).type === 'key'">
@@ -214,13 +214,13 @@ onBeforeMount(() => {
214
214
  </template>
215
215
  <template v-else>
216
216
  <template v-if="receivedFunction[rowIndex].valueFunction(config).originalKey">
217
- <van-input
217
+ <van-field
218
218
  :value="config.data[receivedFunction[rowIndex].valueFunction(config).originalKey]"
219
219
  @input="(val) => emit('update:config', { ...config, data: { ...config.data, [receivedFunction[rowIndex].valueFunction(config).originalKey]: val } })"
220
220
  />
221
221
  </template>
222
222
  <template v-else>
223
- <van-input
223
+ <van-field
224
224
  :value="config.data[receivedFunction[rowIndex].valueFunction(config).content]"
225
225
  @input="(val) => emit('update:config', { ...config, data: { ...config.data, [receivedFunction[rowIndex].valueFunction(config).content]: val } })"
226
226
  />
@@ -304,14 +304,14 @@ onBeforeMount(() => {
304
304
  />
305
305
  </template>
306
306
  <template v-else>
307
- <van-input
307
+ <van-field
308
308
  :value="item[receivedFunction[rowIndex].valueFunction(config, item).originalKey]"
309
309
  @input="(val) => emit('update:config', { ...config, data: { ...config.data, [receivedFunction[rowIndex].valueFunction(config, item).originalKey]: val } })"
310
310
  />
311
311
  </template>
312
312
  </template>
313
313
  <template v-else>
314
- <van-input
314
+ <van-field
315
315
  :value="item[receivedFunction[rowIndex].valueFunction(config, item).content]"
316
316
  @input="(val) => emit('update:config', { ...config, data: { ...config.data, [receivedFunction[rowIndex].valueFunction(config, item).content]: val } })"
317
317
  />
@@ -341,7 +341,7 @@ onBeforeMount(() => {
341
341
 
342
342
  <style scoped lang="less">
343
343
  .imgSrc {
344
- color: rgb( 24,144,255 );
344
+ color: rgb(24, 144, 255);
345
345
  font-size: 0.9em;
346
346
  margin: auto;
347
347
  }
@@ -1,4 +1,5 @@
1
1
  <script setup lang="ts">
2
+ import XFormTable from '@af-mobile-client-vue3/components/data/XCellList/index.vue'
2
3
  // import { getRealKeyData } from '@af-mobile-client-vue3/utils/util'
3
4
  import { executeStrFunctionByContext } from '@af-mobile-client-vue3/utils/runEvalFunction'
4
5
  import {
@@ -7,7 +8,7 @@ import {
7
8
  Row as VanRow,
8
9
  } from 'vant'
9
10
 
10
- import { computed, defineAsyncComponent, inject, nextTick, onBeforeMount, ref, watch } from 'vue'
11
+ import { computed, inject, nextTick, onBeforeMount, ref, watch } from 'vue'
11
12
 
12
13
  const props = withDefaults(defineProps<Props>(), {
13
14
  showImgInCell: false,
@@ -24,7 +25,7 @@ const emit = defineEmits<{
24
25
  (e: 'update:configData', value: any): void
25
26
  (e: 'change', value: any): void
26
27
  (e: 'updateImg', value: any): void
27
- (e: 'selectRow', value: any): void
28
+ (e: 'selectRow', selectedRowKeys: any[], selectedRows: any[]): void
28
29
  (e: 'slotRendered'): void
29
30
  (e: 'listClick', value: any): void
30
31
  }>()
@@ -36,7 +37,6 @@ const emit = defineEmits<{
36
37
  const isInAModal = ref(false)
37
38
 
38
39
  // 动态导入组件
39
- const XFormTable = defineAsyncComponent(() => import('@af-mobile-client-vue3/components/data/XCellList/index.vue'))
40
40
  // const XAddNativeForm = defineAsyncComponent(() => import('@af-mobile-client-vue3/components/common/XAddNativeForm/XAddNativeForm.vue'))
41
41
  // const XFormGroup = defineAsyncComponent(() => import('@af-mobile-client-vue3/components/common/XFormGroup/XFormGroup.vue'))
42
42
  // const XTreePro = defineAsyncComponent(() => import('@af-mobile-client-vue3/components/common/XTree/XTreePro.vue'))
@@ -5,11 +5,10 @@ import {
5
5
  Row as VanRow,
6
6
  } from 'vant'
7
7
 
8
- const { title } = withDefaults(defineProps<{
8
+ const { title } = defineProps<{
9
9
  // 标题
10
10
  title: string
11
- }>(), {
12
- })
11
+ }>()
13
12
 
14
13
  // back
15
14
  const onClickLeft = () => history.back()
@@ -1,5 +1,9 @@
1
- // 定义导航栏和标签栏可见的路由白名单
2
- export const routeWhiteList: readonly string[] = [
1
+ /**
2
+ * List of root-level route names.
3
+ * In the Navbar component, the left arrow is hidden for these routes.
4
+ * However, the Tabbar is shown on these routes.
5
+ */
6
+ export const rootRouteList: readonly string[] = [
3
7
  'ComponentView', // 首页
4
8
  'userProfile', // 个人中心
5
9
  ]
@@ -0,0 +1,2 @@
1
+ export const appName = 'Vue3-Client'
2
+ export const appDescription = '基于Vant4的移动端组件库扩展'
@@ -1,29 +1,46 @@
1
1
  {
2
- "menus": {
3
- "home": "Home",
4
- "profile": "My Center",
2
+ "navbar": {
3
+ "Home": "Home",
4
+ "Profile": "Profile",
5
+ "Mock": "🗂️ Mock",
6
+ "Charts": "📊 Charts",
7
+ "UnoCSS": "⚡ UnoCSS",
8
+ "Counter": "🍍 Persistent State",
9
+ "KeepAlive": "♻️ Page Cache",
10
+ "ScrollCache": "📍 Scroll Cache",
11
+ "Login": "🧑‍💻 Login",
12
+ "Register": "🧑‍💻 Register",
13
+ "ForgotPassword": "❓ Forgot Password",
14
+ "Settings": "⚙️ Settings",
15
+ "404": "⚠️ Page 404",
16
+ "Undefined": "🤷 Undefined title"
17
+ },
18
+
19
+ "tabbar": {
20
+ "home": "HOME",
21
+ "profile": "PROFILE"
22
+ },
23
+
24
+ "home": {
5
25
  "darkMode": "🌗 Dark Mode",
6
- "mockGuide": "💿 Mock Guide",
7
26
  "language": "📚 Language",
8
- "404Demo": "🙅 Page 404 Demo",
9
- "echartsDemo": "📊 Echarts Demo",
10
- "persistPiniaState": "🍍 Persistent Pinia state",
11
- "unocssExample": "🎨 Unocss example",
12
- "keepAlive": "🧡 KeepAlive Demo",
13
- "scrollCache": "📜 Scroll Cache Demo",
14
- "login": "🔒 Login",
15
- "register": "Register",
16
27
  "settings": "Settings",
17
- "basicSettings": "Basic Settings",
18
- "exampleComponents": "Example components",
19
- "forgot-password": "Forgot Password"
28
+ "examples": "Examples"
20
29
  },
30
+
31
+ "profile": {
32
+ "login": "Login",
33
+ "settings": "Settings",
34
+ "docs": "Docs"
35
+ },
36
+
21
37
  "mock": {
22
38
  "fromAsyncData": "Data from asynchronous requests",
23
39
  "noData": "No data",
24
40
  "pull": "Pull",
25
41
  "reset": "Reset"
26
42
  },
43
+
27
44
  "charts": {
28
45
  "January": "Jan",
29
46
  "February": "Feb",
@@ -32,24 +49,28 @@
32
49
  "May": "May",
33
50
  "June": "Jun"
34
51
  },
35
- "layouts": {
36
- "home": "HOME",
37
- "profile": "PROFILE"
52
+
53
+ "counter": {
54
+ "description": "This counter's state is persisted via Pinia. Try refreshing the page to see it in action."
38
55
  },
39
- "profile": {
40
- "login": "Login",
41
- "settings": "Settings",
42
- "docs": "Docs"
56
+
57
+ "unocss": {
58
+ "title": "Hello, Unocss!",
59
+ "description": "This is a simple example of Unocss in action.",
60
+ "button": "Button"
43
61
  },
62
+
44
63
  "keepAlive": {
45
64
  "label": "The current component will be cached"
46
65
  },
66
+
47
67
  "scrollCache": {
48
68
  "sectionTitle": "Section title",
49
69
  "sectionText": "Section text text text text text text text text text text",
50
70
  "finished": "Already at the bottom ~",
51
71
  "loading": "Loading..."
52
72
  },
73
+
53
74
  "login": {
54
75
  "login": "Sign In",
55
76
  "logout": "Sign Out",
@@ -57,14 +78,15 @@
57
78
  "password": "Password",
58
79
  "pleaseEnterEmail": "Please enter email",
59
80
  "pleaseEnterPassword": "Please enter password",
60
- "sign-up": "Click to sign up",
61
- "forgot-password": "Forgot password?"
81
+ "signUp": "Click to sign up",
82
+ "forgotPassword": "Forgot password?"
62
83
  },
63
- "forgot-password": {
84
+
85
+ "forgotPassword": {
64
86
  "email": "Email",
65
87
  "code": "Code",
66
88
  "password": "Password",
67
- "comfirmPassword": "Password again",
89
+ "confirmPassword": "Password again",
68
90
  "pleaseEnterEmail": "Please enter email",
69
91
  "pleaseEnterCode": "Please enter code",
70
92
  "pleaseEnterPassword": "Please enter password",
@@ -77,12 +99,13 @@
77
99
  "sendCodeSuccess": "Sent, the code is",
78
100
  "passwordResetSuccess": "Password reset succeeded"
79
101
  },
102
+
80
103
  "register": {
81
104
  "email": "Email",
82
105
  "code": "Code",
83
106
  "nickname": "Nickname",
84
107
  "password": "Password",
85
- "comfirmPassword": "Password again",
108
+ "confirmPassword": "Password again",
86
109
  "pleaseEnterEmail": "Please enter email",
87
110
  "pleaseEnterCode": "Please enter code",
88
111
  "pleaseEnterNickname": "Please enter nickname",
@@ -96,9 +119,10 @@
96
119
  "sendCodeSuccess": "Sent, the code is",
97
120
  "registerSuccess": "Register succeeded"
98
121
  },
122
+
99
123
  "settings": {
100
124
  "logout": "Sign Out",
101
125
  "currentVersion": "Current Version",
102
- "comfirmTitle": "Confirm Exit?"
126
+ "confirmTitle": "Confirm Exit?"
103
127
  }
104
128
  }
@@ -1,29 +1,46 @@
1
1
  {
2
- "menus": {
3
- "home": "主页",
4
- "profile": "个人中心",
5
- "darkMode": "🌗 暗黑模式",
6
- "mockGuide": "💿 Mock 指南",
7
- "language": "📚 语言",
8
- "echartsDemo": "📊 Echarts 演示",
9
- "persistPiniaState": "🍍 持久化 Pinia 状态",
10
- "404Demo": "🙅 404页 演示",
11
- "unocssExample": "🎨 Unocss 示例",
12
- "keepAlive": "🧡 KeepAlive 演示",
13
- "scrollCache": "📜 滚动缓存 演示",
14
- "login": "🔒 用户登录",
15
- "register": "用户注册",
2
+ "navbar": {
3
+ "Home": "主页",
4
+ "Profile": "我的",
5
+ "Mock": "🗂️ Mock",
6
+ "Charts": "📊 图表",
7
+ "UnoCSS": " UnoCSS",
8
+ "Counter": "🍍 状态持久化",
9
+ "KeepAlive": "♻️ 页面缓存",
10
+ "ScrollCache": "📍 滚动缓存",
11
+ "Login": "🧑‍💻 登录",
12
+ "Register": "🧑‍💻 注册",
13
+ "ForgotPassword": " 忘记密码",
14
+ "Settings": "⚙️ 设置",
15
+ "404": "⚠️ 404 页面",
16
+ "Undefined": "🤷 未定义标题"
17
+ },
18
+
19
+ "tabbar": {
20
+ "home": "首页",
21
+ "profile": "我的"
22
+ },
23
+
24
+ "home": {
25
+ "darkMode": "🌗 深色模式",
26
+ "language": "📚 多语言",
27
+ "settings": "设置",
28
+ "examples": "示例"
29
+ },
30
+
31
+ "profile": {
32
+ "login": "登录",
16
33
  "settings": "设置",
17
- "basicSettings": "基本设置",
18
- "exampleComponents": "示例组件",
19
- "forgot-password": "忘记密码"
34
+ "docs": "文档"
20
35
  },
36
+
21
37
  "mock": {
22
38
  "fromAsyncData": "来自异步请求的数据",
39
+ "noData": "暂无数据",
23
40
  "pull": "请求",
24
- "reset": "清空",
25
- "noData": "暂无数据"
41
+ "reset": "清空"
26
42
  },
43
+
27
44
  "charts": {
28
45
  "January": "1月",
29
46
  "February": "2月",
@@ -32,39 +49,44 @@
32
49
  "May": "5月",
33
50
  "June": "6月"
34
51
  },
35
- "layouts": {
36
- "home": "首页",
37
- "profile": "我的"
52
+
53
+ "counter": {
54
+ "description": "该计数器的状态通过 Pinia 持久化。刷新页面试试看!"
38
55
  },
39
- "profile": {
40
- "login": "登录",
41
- "settings": "设置",
42
- "docs": "文档"
56
+
57
+ "unocss": {
58
+ "title": "你好, Unocss!",
59
+ "description": "这是一个简单的 Unocss 使用示例。",
60
+ "button": "按钮"
43
61
  },
62
+
44
63
  "keepAlive": {
45
64
  "label": "当前组件将会被缓存"
46
65
  },
66
+
47
67
  "scrollCache": {
48
68
  "sectionTitle": "段落标题",
49
69
  "sectionText": "段落内容段落内容段落内容段落内容段落内容段落内容",
50
70
  "finished": "已经到底啦 ~",
51
71
  "loading": "加载中..."
52
72
  },
73
+
53
74
  "login": {
54
75
  "login": "登录",
55
- "logout": "退出",
76
+ "logout": "退出登录",
56
77
  "email": "邮箱",
57
78
  "password": "密码",
58
79
  "pleaseEnterEmail": "请输入邮箱",
59
80
  "pleaseEnterPassword": "请输入密码",
60
- "sign-up": "还没有账号?点击注册",
61
- "forgot-password": "忘记密码?"
81
+ "signUp": "还没有账号?点击注册",
82
+ "forgotPassword": "忘记密码?"
62
83
  },
63
- "forgot-password": {
84
+
85
+ "forgotPassword": {
64
86
  "email": "邮箱",
65
87
  "code": "验证码",
66
88
  "password": "密码",
67
- "comfirmPassword": "再次输入密码",
89
+ "confirmPassword": "再次输入密码",
68
90
  "pleaseEnterEmail": "请输入邮箱",
69
91
  "pleaseEnterCode": "请输入验证码",
70
92
  "pleaseEnterPassword": "请输入密码",
@@ -77,12 +99,13 @@
77
99
  "sendCodeSuccess": "已发送,验证码为",
78
100
  "passwordResetSuccess": "密码重置成功"
79
101
  },
102
+
80
103
  "register": {
81
104
  "email": "邮箱",
82
105
  "code": "验证码",
83
106
  "nickname": "昵称",
84
107
  "password": "密码",
85
- "comfirmPassword": "再次输入密码",
108
+ "confirmPassword": "再次输入密码",
86
109
  "pleaseEnterEmail": "请输入邮箱",
87
110
  "pleaseEnterCode": "请输入验证码",
88
111
  "pleaseEnterNickname": "请输入昵称",
@@ -96,9 +119,10 @@
96
119
  "sendCodeSuccess": "已发送,验证码为",
97
120
  "registerSuccess": "注册成功"
98
121
  },
122
+
99
123
  "settings": {
100
124
  "logout": "退出登录",
101
125
  "currentVersion": "当前版本",
102
- "comfirmTitle": "确认退出?"
126
+ "confirmTitle": "确认退出?"
103
127
  }
104
128
  }
package/src/main.ts CHANGED
@@ -10,8 +10,6 @@ import 'virtual:uno.css'
10
10
  import '@af-mobile-client-vue3/styles/app.less'
11
11
  import '@af-mobile-client-vue3/styles/var.less'
12
12
 
13
- // svg icon
14
- import 'virtual:svg-icons-register'
15
13
  // Vant 桌面端适配
16
14
  import '@vant/touch-emulator'
17
15
 
@@ -10,7 +10,6 @@ import XCellDetailView from '@af-mobile-client-vue3/views/component/XCellDetailV
10
10
  import XCellListView from '@af-mobile-client-vue3/views/component/XCellListView/index.vue'
11
11
  import XFormAppraiseView from '@af-mobile-client-vue3/views/component/XFormAppraiseView/index.vue'
12
12
  import XFormGroupView from '@af-mobile-client-vue3/views/component/XFormGroupView/index.vue'
13
- import xformgroup222 from '@af-mobile-client-vue3/views/component/XFormGroupView/xformgroup222.vue'
14
13
  import XFormView from '@af-mobile-client-vue3/views/component/XFormView/index.vue'
15
14
  import XOlMapView from '@af-mobile-client-vue3/views/component/XOlMapView/index.vue'
16
15
  import XLocationPicker from '@af-mobile-client-vue3/views/component/XOlMapView/XLocationPicker/index.vue'
@@ -67,11 +66,6 @@ const routes: Array<RouteRecordRaw> = [
67
66
  name: 'XCellDetailView',
68
67
  component: XCellDetailView,
69
68
  },
70
- {
71
- path: '/xformgroup222',
72
- name: 'xformgroup222',
73
- component: xformgroup222,
74
- },
75
69
  {
76
70
  path: '/Component/XFormGroupView',
77
71
  name: 'XFormGroupView',
@@ -2,8 +2,6 @@ import type { RouteLocationNormalized } from 'vue-router'
2
2
 
3
3
  export type EnhancedRouteLocation = RouteLocationNormalized & {
4
4
  meta: {
5
- level?: number | unknown
6
- name?: string
7
5
  keepAlive?: boolean
8
6
  }
9
7
  }
@@ -2,8 +2,6 @@ declare module 'vue-router' {
2
2
  interface RouteMeta {
3
3
  /** page title */
4
4
  title?: string
5
- /** i18n key */
6
- i18n?: string
7
5
  /** keepalive */
8
6
  keepAlive?: boolean
9
7
  }
@@ -21,9 +21,9 @@ export class mobileUtil {
21
21
  static execute(locationParam: Param): any {
22
22
  locationParam.callBackMethodName = `mobile_func_${Math.random().toString(36).substring(7)}`
23
23
  if (window.__MICRO_APP_ENVIRONMENT__) {
24
- console.warn('我在微前端环境中')
24
+ console.warn('我在微前端环境中');
25
25
  // 微前端应用中需要绑定函数到真实的window中
26
- window.rawWindow[locationParam.callBackMethodName] = locationParam.callbackFunc
26
+ (window as any).rawWindow[locationParam.callBackMethodName] = locationParam.callbackFunc
27
27
  }
28
28
  else {
29
29
  console.warn('我不在微前端环境中')
@@ -1,57 +1,57 @@
1
- /**
2
- * 根据类型获取日期区间字符串
3
- * @param type '当年' | 'curMonth' | '当日'
4
- * @param show 区分实际值还是显示值, true为实际值, false为显示值
5
- * @returns [start, end] 例:['2024-01-01 00:00:00', '2024-12-31 23:59:59']
6
- */
7
- export function getRangeByType(type: string, show: boolean): [string, string] {
8
- const now = new Date()
9
- const year = now.getFullYear()
10
- const month = (now.getMonth() + 1).toString().padStart(2, '0')
11
- const day = now.getDate().toString().padStart(2, '0')
12
-
13
- if (!show) {
14
- if (type === 'curYear') {
15
- return [
16
- `${year}-01-01 00:00:00`,
17
- `${year}-12-31 23:59:59`,
18
- ]
19
- }
20
- if (type === 'curMonth') {
21
- const lastDay = new Date(year, now.getMonth() + 1, 0).getDate()
22
- return [
23
- `${year}-${month}-01 00:00:00`,
24
- `${year}-${month}-${lastDay.toString().padStart(2, '0')} 23:59:59`,
25
- ]
26
- }
27
- if (type === 'curDay') {
28
- return [
29
- `${year}-${month}-${day} 00:00:00`,
30
- `${year}-${month}-${day} 23:59:59`,
31
- ]
32
- }
33
- }
34
- if (show) {
35
- if (type === 'curYear') {
36
- return [
37
- `${year}-01-01`,
38
- `${year}-12-31`,
39
- ]
40
- }
41
- if (type === 'curMonth') {
42
- const lastDay = new Date(year, now.getMonth() + 1, 0).getDate()
43
- return [
44
- `${year}-${month}-01`,
45
- `${year}-${month}-${lastDay.toString().padStart(2, '0')}`,
46
- ]
47
- }
48
- if (type === 'curDay') {
49
- return [
50
- `${year}-${month}-${day}`,
51
- `${year}-${month}-${day}`,
52
- ]
53
- }
54
- }
55
- // 兜底返回空字符串数组
56
- return ['', '']
57
- }
1
+ /**
2
+ * 根据类型获取日期区间字符串
3
+ * @param type '当年' | 'curMonth' | '当日'
4
+ * @param show 区分实际值还是显示值, true为实际值, false为显示值
5
+ * @returns [start, end] 例:['2024-01-01 00:00:00', '2024-12-31 23:59:59']
6
+ */
7
+ export function getRangeByType(type: string, show: boolean): [string, string] {
8
+ const now = new Date()
9
+ const year = now.getFullYear()
10
+ const month = (now.getMonth() + 1).toString().padStart(2, '0')
11
+ const day = now.getDate().toString().padStart(2, '0')
12
+
13
+ if (!show) {
14
+ if (type === 'curYear') {
15
+ return [
16
+ `${year}-01-01 00:00:00`,
17
+ `${year}-12-31 23:59:59`,
18
+ ]
19
+ }
20
+ if (type === 'curMonth') {
21
+ const lastDay = new Date(year, now.getMonth() + 1, 0).getDate()
22
+ return [
23
+ `${year}-${month}-01 00:00:00`,
24
+ `${year}-${month}-${lastDay.toString().padStart(2, '0')} 23:59:59`,
25
+ ]
26
+ }
27
+ if (type === 'curDay') {
28
+ return [
29
+ `${year}-${month}-${day} 00:00:00`,
30
+ `${year}-${month}-${day} 23:59:59`,
31
+ ]
32
+ }
33
+ }
34
+ if (show) {
35
+ if (type === 'curYear') {
36
+ return [
37
+ `${year}-01-01`,
38
+ `${year}-12-31`,
39
+ ]
40
+ }
41
+ if (type === 'curMonth') {
42
+ const lastDay = new Date(year, now.getMonth() + 1, 0).getDate()
43
+ return [
44
+ `${year}-${month}-01`,
45
+ `${year}-${month}-${lastDay.toString().padStart(2, '0')}`,
46
+ ]
47
+ }
48
+ if (type === 'curDay') {
49
+ return [
50
+ `${year}-${month}-${day}`,
51
+ `${year}-${month}-${day}`,
52
+ ]
53
+ }
54
+ }
55
+ // 兜底返回空字符串数组
56
+ return ['', '']
57
+ }
@@ -1,7 +1,5 @@
1
- import { pageDefaultTitle } from '@af-mobile-client-vue3/types/settings'
1
+ import { appName } from '../constants'
2
2
 
3
- export default function setPageTitle(routerTitle?: any): void {
4
- window.document.title = routerTitle
5
- ? `${routerTitle} | ${pageDefaultTitle}`
6
- : `${pageDefaultTitle}`
3
+ export default function setPageTitle(title?: string): void {
4
+ window.document.title = title ? `${title} - ${appName}` : appName
7
5
  }
@@ -1,11 +1,10 @@
1
1
  <script setup>
2
- import SvgIcon from '@af-mobile-client-vue3/components/core/SvgIcon/index.vue'
3
2
  </script>
4
3
 
5
4
  <template>
6
5
  <div class="load_error_main">
7
6
  <div class="container">
8
- <SvgIcon name="loadError" class="loadError" />
7
+ <div class="loadError i-svg:loadError" />
9
8
  </div>
10
9
  <div class="text">
11
10
  似乎出了点问题,下拉再试试
@@ -1,18 +1,17 @@
1
1
  <script setup>
2
- import SvgIcon from '@af-mobile-client-vue3/components/core/SvgIcon/index.vue'
3
2
  import { Button as VanButton } from 'vant'
4
3
  </script>
5
4
 
6
5
  <template>
7
6
  <div class="not_found_main">
8
7
  <div class="container">
9
- <SvgIcon name="notFound" class="notFound" />
8
+ <div class="notFound i-svg:notFound" />
10
9
  </div>
11
10
  <div class="text">
12
11
  本来无一物,何处惹尘埃
13
12
  </div>
14
13
  <div class="button_group">
15
- <VanButton type="primary" size="small" @click="$router.replace('/home')">
14
+ <VanButton type="primary" size="small" @click="$router.replace('/')">
16
15
  返回首页
17
16
  </VanButton>
18
17
  </div>