wui-components-v2 1.1.70 → 1.1.72

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 (82) hide show
  1. package/api/feishu.ts +20 -20
  2. package/api/index.ts +4 -4
  3. package/api/login.ts +51 -51
  4. package/api/tree.ts +28 -28
  5. package/components/action-popup/action-popup.vue +116 -116
  6. package/components/add-address-list/add-address-list.vue +187 -187
  7. package/components/add-address-page/config.ts +297 -297
  8. package/components/audio-play/audio-play.vue +220 -220
  9. package/components/batch-upload-file/batch-upload-file.vue +75 -75
  10. package/components/card-botom-buttons/card-botom-buttons.vue +279 -279
  11. package/components/demo-card/demo-card.vue +44 -44
  12. package/components/fold-card/fold-card.vue +2 -2
  13. package/components/form-control/form-control.vue +9 -1
  14. package/components/global-loading/GlobalLoading.md +366 -366
  15. package/components/global-loading/global-loading.vue +55 -55
  16. package/components/global-message/GlobalMessage.md +570 -570
  17. package/components/global-toast/GlobalToast.md +261 -261
  18. package/components/global-toast/global-toast.vue +56 -56
  19. package/components/label-value/open-value-more.vue +56 -56
  20. package/components/loading/loading.vue +5 -5
  21. package/components/login-form-box/login-form-box.vue +65 -65
  22. package/components/phone-login-form/phone-login-form.vue +204 -204
  23. package/components/privacy-popup/privacy-popup.vue +191 -191
  24. package/components/scan-input/scan-input.vue +406 -406
  25. package/components/select-col-picker/select-col-picker.vue +168 -168
  26. package/components/tab-search/tab-search.vue +73 -73
  27. package/components/tree-select/components/TreeNode.vue +200 -200
  28. package/components/tree-select/components/index.vue +471 -471
  29. package/components/tree-select/components/tree-select.vue +56 -56
  30. package/components/tree-select/index.vue +93 -93
  31. package/components/user-choose/user-choose.vue +169 -151
  32. package/components/video-play/video-play.vue +56 -56
  33. package/components/wui-auto-update-component/wui-auto-update-component.vue +132 -132
  34. package/components/wui-default/wui-default.vue +49 -49
  35. package/components/wui-details-page/wui-details-page.vue +147 -147
  36. package/components/wui-edit-page/wui-edit-page-copy.vue +757 -757
  37. package/components/wui-edit-page/wui-edit-page.vue +793 -793
  38. package/components/wui-login/wui-login.vue +43 -43
  39. package/components/wui-login1/wui-login.vue +41 -41
  40. package/components/wui-menus/wui-menus-top.vue +137 -137
  41. package/components/wui-menus/wui-menus-top1.vue +8 -8
  42. package/components/wui-menus1/components/banner-carousel.vue +320 -320
  43. package/components/wui-menus1/components/quick-panel.vue +55 -55
  44. package/components/wui-menus1/components/search-bar.vue +49 -49
  45. package/components/wui-menus1/components/section-menus.vue +208 -208
  46. package/components/wui-menus1/wui-menus-top.vue +718 -718
  47. package/components/wui-menus1/wui-menus-top1.vue +398 -398
  48. package/components/wui-notify-info/notify-handle.vue +53 -53
  49. package/components/wui-scan-binding-sensor/wui-scan-binding-sensor.vue +75 -75
  50. package/components/wui-search-history-babbar/components/SearchBar.vue +70 -70
  51. package/components/wui-select-list/wui-select-list.vue +1 -9
  52. package/components/wui-select-popup/wui-select-popup.vue +1 -0
  53. package/components/wui-tree-page/wui-tree-page.vue +297 -297
  54. package/components/wui-update-component/wui-update-component.vue +221 -221
  55. package/composables/types/theme.ts +65 -65
  56. package/composables/types/user.ts +5 -5
  57. package/composables/useColorGenerator.ts +221 -221
  58. package/composables/useCompanyFieldFilter.ts +26 -24
  59. package/composables/useEnumes.ts +43 -43
  60. package/composables/useEventBus.ts +37 -37
  61. package/composables/useGlobalLoading.ts +47 -47
  62. package/composables/useGlobalMessage.ts +53 -53
  63. package/composables/useGlobalToast.ts +63 -63
  64. package/composables/useLocale.ts +54 -54
  65. package/composables/useManualTheme.ts +179 -179
  66. package/composables/useSectionMenus.ts +120 -120
  67. package/composables/useTabbar.ts +50 -50
  68. package/composables/useTheme.ts +74 -74
  69. package/composables/useUser.ts +24 -24
  70. package/index.d.ts +90 -90
  71. package/package.json +24 -24
  72. package/store/manualThemeStore.ts +143 -143
  73. package/store/persist.ts +41 -41
  74. package/store/themeStore.ts +74 -74
  75. package/store/userStore.ts +22 -22
  76. package/styles/dark-mode.scss +498 -498
  77. package/type.ts +154 -154
  78. package/utils/control-tree.ts +353 -353
  79. package/utils/eventBus.ts +36 -36
  80. package/utils/idata-scan.ts +99 -99
  81. package/utils/index.ts +979 -979
  82. package/utils/rsaEncrypt.ts +10 -10
package/api/feishu.ts CHANGED
@@ -1,20 +1,20 @@
1
- import req from './core/index'
2
-
3
- export type FeishuHcTokenResponse = {
4
- token?: string
5
- message?: string
6
- }
7
-
8
- export function feishuHcToken(code: string): Promise<FeishuHcTokenResponse> {
9
- // 将前端拿到的免登 code 交给业务后端:
10
- // 1) 后端用 app_id/app_secret 调用飞书接口把 code 换成 user_access_token + user_id/open_id
11
- // 2) 后端用 user_id/open_id 在你系统内创建/更新用户,并签发你系统自己的 TOKEN(本项目存到 TOKEN)
12
- return req({
13
- url: '/v3/auth/feishu/hctoken',
14
- method: 'POST',
15
- data: {
16
- code,
17
- },
18
- })
19
- }
20
-
1
+ import req from './core/index'
2
+
3
+ export type FeishuHcTokenResponse = {
4
+ token?: string
5
+ message?: string
6
+ }
7
+
8
+ export function feishuHcToken(code: string): Promise<FeishuHcTokenResponse> {
9
+ // 将前端拿到的免登 code 交给业务后端:
10
+ // 1) 后端用 app_id/app_secret 调用飞书接口把 code 换成 user_access_token + user_id/open_id
11
+ // 2) 后端用 user_id/open_id 在你系统内创建/更新用户,并签发你系统自己的 TOKEN(本项目存到 TOKEN)
12
+ return req({
13
+ url: '/v3/auth/feishu/hctoken',
14
+ method: 'POST',
15
+ data: {
16
+ code,
17
+ },
18
+ })
19
+ }
20
+
package/api/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- // 导入请求核心实例
2
- import req from './core/index'
3
-
4
- export { req }
1
+ // 导入请求核心实例
2
+ import req from './core/index'
3
+
4
+ export { req }
package/api/login.ts CHANGED
@@ -1,51 +1,51 @@
1
- // 导入核心alova实例
2
- import dayjs from 'dayjs/esm/index'
3
- import timezone from 'dayjs/esm/plugin/timezone'
4
- import utc from 'dayjs/esm/plugin/utc'
5
- import rsaEncrypt from '../utils/rsaEncrypt'
6
- import req from './core/index'
7
- // 获取公钥
8
- export function pubKey(): Promise<any> {
9
- return req({
10
- url: `/v3/auth/ras-pubkey`,
11
- })
12
- }
13
-
14
- // 登录
15
- export async function login(username: string, password: string, kaptchaToken: string = '', kaptchaText: string = ''): Promise<any> {
16
- dayjs.extend(utc)
17
- dayjs.extend(timezone)
18
- const datetime = dayjs(new Date())
19
- .tz('Europe/London')
20
- .format('YYYY-MM-DD HH:mm:ss')
21
- const json = {
22
- username,
23
- password,
24
- datetime,
25
- }
26
- const res = await pubKey()
27
- const pubkeystr = res.rasPubkey
28
- const userInfo = rsaEncrypt(JSON.stringify(json), pubkeystr)
29
- return req({
30
- url: `/v3/auth/hctoken`,
31
- data: {
32
- userInfo,
33
- kaptchaToken,
34
- kaptchaText,
35
- },
36
- })
37
- }
38
- // 获取验证码
39
- export function getKaptchaToken(): Promise<any> {
40
- return req({
41
- url: `/v3/auth/kaptcha`,
42
- method: 'POST',
43
- })
44
- }
45
-
46
- // 获取登录用户权限配置信息
47
- export function getUserConfig(): Promise<any> {
48
- return req({
49
- url: `/v3/current-user`,
50
- })
51
- }
1
+ // 导入核心alova实例
2
+ import dayjs from 'dayjs/esm/index'
3
+ import timezone from 'dayjs/esm/plugin/timezone'
4
+ import utc from 'dayjs/esm/plugin/utc'
5
+ import rsaEncrypt from '../utils/rsaEncrypt'
6
+ import req from './core/index'
7
+ // 获取公钥
8
+ export function pubKey(): Promise<any> {
9
+ return req({
10
+ url: `/v3/auth/ras-pubkey`,
11
+ })
12
+ }
13
+
14
+ // 登录
15
+ export async function login(username: string, password: string, kaptchaToken: string = '', kaptchaText: string = ''): Promise<any> {
16
+ dayjs.extend(utc)
17
+ dayjs.extend(timezone)
18
+ const datetime = dayjs(new Date())
19
+ .tz('Europe/London')
20
+ .format('YYYY-MM-DD HH:mm:ss')
21
+ const json = {
22
+ username,
23
+ password,
24
+ datetime,
25
+ }
26
+ const res = await pubKey()
27
+ const pubkeystr = res.rasPubkey
28
+ const userInfo = rsaEncrypt(JSON.stringify(json), pubkeystr)
29
+ return req({
30
+ url: `/v3/auth/hctoken`,
31
+ data: {
32
+ userInfo,
33
+ kaptchaToken,
34
+ kaptchaText,
35
+ },
36
+ })
37
+ }
38
+ // 获取验证码
39
+ export function getKaptchaToken(): Promise<any> {
40
+ return req({
41
+ url: `/v3/auth/kaptcha`,
42
+ method: 'POST',
43
+ })
44
+ }
45
+
46
+ // 获取登录用户权限配置信息
47
+ export function getUserConfig(): Promise<any> {
48
+ return req({
49
+ url: `/v3/current-user`,
50
+ })
51
+ }
package/api/tree.ts CHANGED
@@ -1,28 +1,28 @@
1
- import req from './core/index'
2
- // 树列表页面详细配置
3
- export function treeConfigApi(sourceId: string) {
4
- return req({
5
- url: `/v3/ttmpl/config?sourceId=${sourceId}`,
6
- })
7
- }
8
-
9
- // 树数据
10
- export function treeDataApi(sourceId: string) {
11
- return req({
12
- url: `/v3/ttmpl/root-data?sourceId=${sourceId}`,
13
- })
14
- }
15
- // 树节点数据
16
- export function treeNodeDataApi(sourceId: string, mainCode?: string) {
17
- return req({
18
- url: `/v3/ltmpl/top-data?sourceId=${sourceId}&mainCode=${mainCode}`,
19
- })
20
- }
21
-
22
- // 删除树节点
23
- export function treeNodeDeleteApi(sourceId: string, codes: string) {
24
- return req({
25
- url: `/v3/ltmpl/data?sourceId=${sourceId}&codes=${codes}`,
26
- method: 'DELETE',
27
- })
28
- }
1
+ import req from './core/index'
2
+ // 树列表页面详细配置
3
+ export function treeConfigApi(sourceId: string) {
4
+ return req({
5
+ url: `/v3/ttmpl/config?sourceId=${sourceId}`,
6
+ })
7
+ }
8
+
9
+ // 树数据
10
+ export function treeDataApi(sourceId: string) {
11
+ return req({
12
+ url: `/v3/ttmpl/root-data?sourceId=${sourceId}`,
13
+ })
14
+ }
15
+ // 树节点数据
16
+ export function treeNodeDataApi(sourceId: string, mainCode?: string) {
17
+ return req({
18
+ url: `/v3/ltmpl/top-data?sourceId=${sourceId}&mainCode=${mainCode}`,
19
+ })
20
+ }
21
+
22
+ // 删除树节点
23
+ export function treeNodeDeleteApi(sourceId: string, codes: string) {
24
+ return req({
25
+ url: `/v3/ltmpl/data?sourceId=${sourceId}&codes=${codes}`,
26
+ method: 'DELETE',
27
+ })
28
+ }
@@ -1,116 +1,116 @@
1
- <script setup lang="ts">
2
- import { computed, defineEmits, defineOptions, defineProps, ref } from 'vue'
3
- import type { Enums, Groups } from '../../type'
4
- import formControl from '../form-control/form-control.vue'
5
- import { actionDataSave } from '../../api/page'
6
- import { useGlobalToast } from '../../composables/useGlobalToast'
7
-
8
- defineOptions({
9
- name: 'ActionPopup',
10
- })
11
- const props = defineProps<{
12
- fieldGroup?: Groups
13
- show: boolean
14
- code: string
15
- zpaging: any
16
- enumColumn?: Enums
17
- /** 提交成功后跳转的自定义页面路径,不传则默认刷新 */
18
- successUrl?: string
19
- }>()
20
- const emits = defineEmits(['update:show'])
21
- const btnLoading = ref(false)
22
- const toast = useGlobalToast()
23
- const formControlRef = ref()
24
- // 显示开关
25
- const show = computed({
26
- get() {
27
- return props.show
28
- },
29
- set(value: boolean) {
30
- emits('update:show', value)
31
- },
32
- })
33
-
34
- // 格式化文件数据为后端期望的 JSON 字符串
35
- function formatFileData(data: Record<string, any>) {
36
- const result = { ...data }
37
- for (const key in result) {
38
- if (result[key]?.response) {
39
- const fileObj = result[key]
40
- const res = typeof fileObj.response === 'string' ? JSON.parse(fileObj.response) : fileObj.response
41
- result[key] = JSON.stringify({
42
- valid: fileObj.disabled ? 'old' : 'new',
43
- fileKey: res.fileKey,
44
- fileName: fileObj.name,
45
- })
46
- }
47
- }
48
- return result
49
- }
50
-
51
- // 提交数据
52
- async function action() {
53
- btnLoading.value = true
54
- if (!props.fieldGroup?.id) {
55
- return toast.warning({ msg: '无sourceId' })
56
- }
57
- try {
58
- const data = await formControlRef.value.submit()
59
- await actionDataSave(props.fieldGroup?.id || '', props.code, formatFileData(data))
60
- btnLoading.value = false
61
- show.value = false
62
- toast.success({ msg: '操作成功!' })
63
- // 如果传了 successUrl,跳转到自定义页面;否则默认刷新
64
- if (props.successUrl) {
65
- uni.navigateTo({ url: props.successUrl })
66
- } else {
67
- props.zpaging.reload()
68
- }
69
- } catch (error: any) {
70
- btnLoading.value = false
71
- toast.error(error)
72
- }
73
- }
74
- </script>
75
-
76
- <template>
77
- <wd-popup
78
- v-model="show"
79
- position="bottom"
80
- closable
81
- :z-index="999999"
82
- @close="
83
- () => {
84
- show = false
85
- }
86
- "
87
- >
88
- <view class="h-50vh w-100vw bg-white dark:bg-[var(--wot-dark-background)]">
89
- <view class="h-44px bg-white dark:bg-[var(--wot-dark-background)]" />
90
- <view class="w-[calc(100%-44px)] overflow-auto bg-white dark:bg-[var(--wot-dark-background)]">
91
- <formControl
92
- v-if="props.fieldGroup"
93
- ref="formControlRef"
94
- :field-group="props.fieldGroup"
95
- :enum-column="enumColumn"
96
- />
97
- <view class="h-44px bg-white dark:bg-[var(--wot-dark-background)]" />
98
- <view
99
- class="fixed bottom-0 left-0 right-0 box-border w-100% flex p-2 bg-white dark:bg-[var(--wot-dark-background)]"
100
- >
101
- <wd-button
102
- :loading="btnLoading"
103
- custom-class="flex-1"
104
- @click="
105
- () => {
106
- action()
107
- }
108
- "
109
- >
110
- 提交
111
- </wd-button>
112
- </view>
113
- </view>
114
- </view>
115
- </wd-popup>
116
- </template>
1
+ <script setup lang="ts">
2
+ import { computed, defineEmits, defineOptions, defineProps, ref } from 'vue'
3
+ import type { Enums, Groups } from '../../type'
4
+ import formControl from '../form-control/form-control.vue'
5
+ import { actionDataSave } from '../../api/page'
6
+ import { useGlobalToast } from '../../composables/useGlobalToast'
7
+
8
+ defineOptions({
9
+ name: 'ActionPopup',
10
+ })
11
+ const props = defineProps<{
12
+ fieldGroup?: Groups
13
+ show: boolean
14
+ code: string
15
+ zpaging: any
16
+ enumColumn?: Enums
17
+ /** 提交成功后跳转的自定义页面路径,不传则默认刷新 */
18
+ successUrl?: string
19
+ }>()
20
+ const emits = defineEmits(['update:show'])
21
+ const btnLoading = ref(false)
22
+ const toast = useGlobalToast()
23
+ const formControlRef = ref()
24
+ // 显示开关
25
+ const show = computed({
26
+ get() {
27
+ return props.show
28
+ },
29
+ set(value: boolean) {
30
+ emits('update:show', value)
31
+ },
32
+ })
33
+
34
+ // 格式化文件数据为后端期望的 JSON 字符串
35
+ function formatFileData(data: Record<string, any>) {
36
+ const result = { ...data }
37
+ for (const key in result) {
38
+ if (result[key]?.response) {
39
+ const fileObj = result[key]
40
+ const res = typeof fileObj.response === 'string' ? JSON.parse(fileObj.response) : fileObj.response
41
+ result[key] = JSON.stringify({
42
+ valid: fileObj.disabled ? 'old' : 'new',
43
+ fileKey: res.fileKey,
44
+ fileName: fileObj.name,
45
+ })
46
+ }
47
+ }
48
+ return result
49
+ }
50
+
51
+ // 提交数据
52
+ async function action() {
53
+ btnLoading.value = true
54
+ if (!props.fieldGroup?.id) {
55
+ return toast.warning({ msg: '无sourceId' })
56
+ }
57
+ try {
58
+ const data = await formControlRef.value.submit()
59
+ await actionDataSave(props.fieldGroup?.id || '', props.code, formatFileData(data))
60
+ btnLoading.value = false
61
+ show.value = false
62
+ toast.success({ msg: '操作成功!' })
63
+ // 如果传了 successUrl,跳转到自定义页面;否则默认刷新
64
+ if (props.successUrl) {
65
+ uni.navigateTo({ url: props.successUrl })
66
+ } else {
67
+ props.zpaging.reload()
68
+ }
69
+ } catch (error: any) {
70
+ btnLoading.value = false
71
+ toast.error(error)
72
+ }
73
+ }
74
+ </script>
75
+
76
+ <template>
77
+ <wd-popup
78
+ v-model="show"
79
+ position="bottom"
80
+ closable
81
+ :z-index="999999"
82
+ @close="
83
+ () => {
84
+ show = false
85
+ }
86
+ "
87
+ >
88
+ <view class="h-50vh w-100vw bg-white dark:bg-[var(--wot-dark-background)]">
89
+ <view class="h-44px bg-white dark:bg-[var(--wot-dark-background)]" />
90
+ <view class="w-[calc(100%-44px)] overflow-auto bg-white dark:bg-[var(--wot-dark-background)]">
91
+ <formControl
92
+ v-if="props.fieldGroup"
93
+ ref="formControlRef"
94
+ :field-group="props.fieldGroup"
95
+ :enum-column="enumColumn"
96
+ />
97
+ <view class="h-44px bg-white dark:bg-[var(--wot-dark-background)]" />
98
+ <view
99
+ class="fixed bottom-0 left-0 right-0 box-border w-100% flex p-2 bg-white dark:bg-[var(--wot-dark-background)]"
100
+ >
101
+ <wd-button
102
+ :loading="btnLoading"
103
+ custom-class="flex-1"
104
+ @click="
105
+ () => {
106
+ action()
107
+ }
108
+ "
109
+ >
110
+ 提交
111
+ </wd-button>
112
+ </view>
113
+ </view>
114
+ </view>
115
+ </wd-popup>
116
+ </template>