wui-components-v2 1.1.69 → 1.1.71

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 (117) hide show
  1. package/api/core/index.ts +74 -74
  2. package/api/feishu.ts +20 -20
  3. package/api/index.ts +4 -4
  4. package/api/login.ts +51 -51
  5. package/api/menu.ts +45 -45
  6. package/api/page.ts +114 -114
  7. package/api/sys.ts +12 -12
  8. package/api/tree.ts +28 -28
  9. package/components/action-popup/action-popup.vue +116 -116
  10. package/components/add-address-list/add-address-list.vue +187 -187
  11. package/components/add-address-page/add-address-page.vue +77 -77
  12. package/components/add-address-page/config.ts +297 -297
  13. package/components/audio-play/audio-play.vue +220 -220
  14. package/components/batch-upload-file/batch-upload-file.vue +75 -75
  15. package/components/card-botom-buttons/card-botom-buttons.vue +279 -279
  16. package/components/custom-date-picker/custom-date-picker.vue +106 -106
  17. package/components/custom-select-picker/custom-select-picker.vue +95 -95
  18. package/components/demo-block/demo-block.vue +63 -63
  19. package/components/demo-card/demo-card.vue +44 -44
  20. package/components/detail-popup/detail-popup.vue +99 -99
  21. package/components/evaluation-page/evaluation-page.vue +196 -196
  22. package/components/fold-card/fold-card.vue +171 -171
  23. package/components/form-control/form-control.vue +661 -661
  24. package/components/global-loading/GlobalLoading.md +366 -366
  25. package/components/global-loading/global-loading.vue +55 -55
  26. package/components/global-message/GlobalMessage.md +570 -570
  27. package/components/global-message/global-message.vue +68 -68
  28. package/components/global-toast/GlobalToast.md +261 -261
  29. package/components/global-toast/global-toast.vue +56 -56
  30. package/components/label-value/label-value.vue +144 -144
  31. package/components/label-value/open-value-more.vue +56 -56
  32. package/components/list-top-buttons/list-top-buttons.vue +19 -19
  33. package/components/loading/loading.vue +5 -5
  34. package/components/login-form/login-form.vue +126 -126
  35. package/components/login-form-box/login-form-box.vue +65 -65
  36. package/components/mulselect-picker/mulselect-picker.vue +86 -86
  37. package/components/phone-login-form/phone-login-form.vue +204 -204
  38. package/components/privacy-popup/privacy-popup.vue +191 -191
  39. package/components/product-card/product-card.vue +201 -201
  40. package/components/scan-input/scan-input.vue +406 -406
  41. package/components/search/search.vue +128 -128
  42. package/components/select-col-picker/select-col-picker.vue +168 -168
  43. package/components/tab-search/tab-search.vue +73 -73
  44. package/components/tree-select/components/TreeNode.vue +200 -200
  45. package/components/tree-select/components/index.vue +471 -471
  46. package/components/tree-select/components/tree-select.vue +56 -56
  47. package/components/tree-select/index.vue +93 -93
  48. package/components/user-choose/user-choose.vue +169 -151
  49. package/components/video-play/video-play.vue +56 -56
  50. package/components/wui-auto-update-component/wui-auto-update-component.vue +132 -132
  51. package/components/wui-default/wui-default.vue +49 -49
  52. package/components/wui-details-page/wui-details-page.vue +147 -147
  53. package/components/wui-edit-page/wui-edit-page-copy.vue +757 -757
  54. package/components/wui-edit-page/wui-edit-page.vue +793 -793
  55. package/components/wui-enume-select-control/wui-enume-select-control.vue +92 -92
  56. package/components/wui-list/wui-list.vue +235 -235
  57. package/components/wui-login/wui-login.vue +43 -43
  58. package/components/wui-login1/wui-login.vue +41 -41
  59. package/components/wui-menus/wui-menus-top.vue +137 -137
  60. package/components/wui-menus/wui-menus-top1.vue +8 -8
  61. package/components/wui-menus/wui-menus.vue +247 -247
  62. package/components/wui-menus1/components/banner-carousel.vue +320 -320
  63. package/components/wui-menus1/components/navbar.vue +43 -43
  64. package/components/wui-menus1/components/quick-panel.vue +55 -55
  65. package/components/wui-menus1/components/search-bar.vue +49 -49
  66. package/components/wui-menus1/components/section-menus.vue +208 -208
  67. package/components/wui-menus1/wui-menus-top.vue +718 -718
  68. package/components/wui-menus1/wui-menus-top1.vue +398 -398
  69. package/components/wui-menus1/wui-menus.vue +564 -564
  70. package/components/wui-notify-info/notify-handle.vue +53 -53
  71. package/components/wui-notify-info/wui-notify-info.vue +280 -280
  72. package/components/wui-scan-binding-sensor/wui-scan-binding-sensor.vue +75 -75
  73. package/components/wui-search-history-babbar/components/SearchBar.vue +70 -70
  74. package/components/wui-search-history-babbar/wui-search-history-babbar.vue +204 -204
  75. package/components/wui-select-list/wui-select-list.vue +310 -310
  76. package/components/wui-select-popup/wui-select-popup.vue +613 -612
  77. package/components/wui-system-settings/wui-system-settings.vue +144 -144
  78. package/components/wui-tabbar/wui-tabbar.vue +106 -106
  79. package/components/wui-tree-page/components/tree-item.vue +238 -238
  80. package/components/wui-tree-page/wui-tree-page.vue +297 -297
  81. package/components/wui-update-component/wui-update-component.vue +221 -221
  82. package/components/wui-user/wui-user.vue +202 -202
  83. package/composables/types/theme.ts +65 -65
  84. package/composables/types/user.ts +5 -5
  85. package/composables/useColorGenerator.ts +221 -221
  86. package/composables/useCompanyFieldFilter.ts +91 -91
  87. package/composables/useEnumes.ts +43 -43
  88. package/composables/useEventBus.ts +37 -37
  89. package/composables/useGlobalLoading.ts +47 -47
  90. package/composables/useGlobalMessage.ts +53 -53
  91. package/composables/useGlobalToast.ts +63 -63
  92. package/composables/useLocale.ts +54 -54
  93. package/composables/useManualTheme.ts +179 -179
  94. package/composables/useMenus.ts +193 -193
  95. package/composables/useSectionMenus.ts +120 -120
  96. package/composables/useTabbar.ts +50 -50
  97. package/composables/useTheme.ts +74 -74
  98. package/composables/useUser.ts +24 -24
  99. package/index.d.ts +90 -90
  100. package/index.ts +83 -83
  101. package/package.json +24 -24
  102. package/static/iconfont/iconfont.css +63 -63
  103. package/store/language.ts +151 -151
  104. package/store/manualThemeStore.ts +143 -143
  105. package/store/persist.ts +41 -41
  106. package/store/themeStore.ts +74 -74
  107. package/store/userStore.ts +22 -22
  108. package/styles/dark-mode.css +523 -523
  109. package/styles/dark-mode.min.css +1 -1
  110. package/styles/dark-mode.scss +498 -498
  111. package/type.ts +154 -154
  112. package/utils/control-tree.ts +353 -353
  113. package/utils/control-type-supportor.ts +148 -148
  114. package/utils/eventBus.ts +36 -36
  115. package/utils/idata-scan.ts +99 -99
  116. package/utils/index.ts +979 -979
  117. package/utils/rsaEncrypt.ts +10 -10
@@ -1,238 +1,238 @@
1
- <script setup lang="ts">
2
- import { computed, defineEmits, defineOptions, defineProps } from 'vue'
3
- import { desaturateColor } from '../../../utils'
4
- import { useManualTheme } from '../../../composables/useManualTheme'
5
-
6
- defineOptions({
7
- name: 'TreeItem',
8
- })
9
- const props = defineProps({
10
- node: {
11
- type: Object,
12
- required: true,
13
- },
14
- level: {
15
- type: Number,
16
- default: 0,
17
- },
18
- searchKeyword: {
19
- type: String,
20
- default: '',
21
- },
22
- leafRatmplId: {
23
- type: String,
24
- default: '',
25
- },
26
- })
27
- const emit = defineEmits(['addBranch', 'addLeaf', 'remove', 'update', 'toggleExpand'])
28
- const { currentThemeColor } = useManualTheme()
29
- interface TreeNode {
30
- id: string
31
- label: string
32
- expanded: boolean
33
- type: 'branch' | 'leaf' | 'root'
34
- loading: boolean
35
- children?: TreeNode[]
36
- [key: string]: any // 允许其他自定义属性
37
- }
38
- // const router = useRouter()
39
-
40
- const hasChildren = computed(() => {
41
- return props.node.children && props.node.children.length > 0
42
- })
43
-
44
- // 计算是否需要高亮
45
- const isHighlight = computed(() => {
46
- if (!props.searchKeyword) return false
47
- return props.node.label.toLowerCase().includes(props.searchKeyword.toLowerCase())
48
- })
49
-
50
- // 展开/收起
51
- function toggleExpand(node?: TreeNode) {
52
- emit('toggleExpand', node || props.node)
53
- }
54
-
55
- // 添加分支节点事件
56
- function onAddBranch() {
57
- emit('addBranch', props.node)
58
- }
59
- // 添加叶子节点事件
60
- function onAddLeaf() {
61
- emit('addLeaf', props.node)
62
- }
63
-
64
- // 删除节点事件
65
- function onRemove() {
66
- emit('remove', props.node)
67
- }
68
-
69
- // 编辑节点事件
70
- function handleEdit() {
71
- emit('update', props.node)
72
- }
73
-
74
- // 事件透传(递归组件必须将子组件的事件向上传递)
75
- function emitAddBranch(e: TreeNode) {
76
- emit('addBranch', e)
77
- }
78
- function emitAddLeaf(e: TreeNode) {
79
- emit('addLeaf', e)
80
- }
81
- function emitRemove(e: TreeNode) {
82
- emit('remove', e)
83
- }
84
- function emitUpdate(e: TreeNode) {
85
- emit('update', e)
86
- }
87
- </script>
88
-
89
- <template>
90
- <view class="tree-node">
91
- <!-- 节点内容行 -->
92
- <view class="node-content bg-white dark:bg-[#1B1B1E]" :style="{ paddingLeft: `${level * 30}rpx` }">
93
- <!-- 展开/收起图标 -->
94
- <view
95
- class="icon-area"
96
- @click.stop="
97
- () => {
98
- toggleExpand()
99
- }
100
- "
101
- >
102
- <text v-if="node.type !== 'leaf'" class="arrow" :class="{ rotated: node.expanded }">
103
- <wd-loading v-if="node.loading" size="16" />
104
- <wd-icon v-else name="arrow-right" size="18px" />
105
- </text>
106
- <text v-else class="dot dark:text-white">•</text>
107
- </view>
108
-
109
- <!-- 节点名称 (支持搜索高亮) -->
110
- <view
111
- class="label-area text-gray-800 dark:text-white"
112
- @click.stop="
113
- () => {
114
- toggleExpand()
115
- }
116
- "
117
- >
118
- <text :class="{ highlight: isHighlight }">
119
- {{ node.label }}
120
- </text>
121
- </view>
122
-
123
- <!-- 操作按钮区域 -->
124
- <view class="action-area">
125
- <view
126
- v-if="(node.type === 'branch' || node.type === 'root') && leafRatmplId"
127
- class="btn"
128
- :style="{ backgroundColor: desaturateColor(currentThemeColor.primary) }"
129
- @click.stop="onAddLeaf"
130
- >
131
- <text :style="{ color: currentThemeColor.primary }">+</text>
132
- </view>
133
- <view
134
- v-if="node.type === 'branch' || node.type === 'root'"
135
- class="btn"
136
- :style="{ backgroundColor: desaturateColor(currentThemeColor.primary) }"
137
- @click.stop="onAddBranch"
138
- >
139
- <text class="i-carbon:decision-tree text-3" :style="{ color: currentThemeColor.primary }" />
140
- </view>
141
- <wd-icon
142
- class="btn"
143
- name="edit"
144
- size="28rpx"
145
- :style="{ backgroundColor: desaturateColor(currentThemeColor.primary), color: currentThemeColor.primary }"
146
- @click.stop="handleEdit"
147
- />
148
- <text class="btn del" @click.stop="onRemove">-</text>
149
- </view>
150
- </view>
151
-
152
- <!-- 递归渲染子节点 -->
153
- <view v-if="hasChildren && node.expanded" class="children-container">
154
- <tree-item
155
- v-for="child in node.children"
156
- :key="child.id"
157
- :node="child"
158
- :level="level + 1"
159
- :leaf-ratmpl-id="props.leafRatmplId"
160
- :search-keyword="searchKeyword"
161
- @add-leaf="emitAddLeaf"
162
- @add-branch="emitAddBranch"
163
- @remove="emitRemove"
164
- @update="emitUpdate"
165
- @toggle-expand="toggleExpand"
166
- />
167
- </view>
168
- </view>
169
- </template>
170
-
171
- <style scoped>
172
- .tree-node {
173
- width: 100%;
174
- }
175
-
176
- .node-content {
177
- display: flex;
178
- align-items: center;
179
- height: 88rpx;
180
- border-bottom: 1rpx solid #f0f0f0;
181
- padding-right: 20rpx;
182
- }
183
-
184
- .icon-area {
185
- width: 50rpx;
186
- height: 100%;
187
- display: flex;
188
- align-items: center;
189
- justify-content: center;
190
- color: #999;
191
- }
192
-
193
- .arrow {
194
- font-size: 24rpx;
195
- transition: transform 0.2s;
196
- }
197
-
198
- .arrow.rotated {
199
- transform: rotate(90deg);
200
- }
201
-
202
- .dot {
203
- font-size: 60rpx;
204
- color: #ddd;
205
- }
206
-
207
- .label-area {
208
- flex: 1;
209
- font-size: 30rpx;
210
- overflow: hidden;
211
- text-overflow: ellipsis;
212
- white-space: nowrap;
213
- }
214
-
215
- .highlight {
216
- color: #007aff;
217
- font-weight: bold;
218
- }
219
-
220
- .action-area {
221
- display: flex;
222
- gap: 20rpx;
223
- }
224
-
225
- .btn {
226
- width: 44rpx;
227
- height: 44rpx;
228
- line-height: 40rpx;
229
- text-align: center;
230
- border-radius: 8rpx;
231
- font-size: 32rpx;
232
- }
233
-
234
- .del {
235
- background-color: #ffebee;
236
- color: #f44336;
237
- }
238
- </style>
1
+ <script setup lang="ts">
2
+ import { computed, defineEmits, defineOptions, defineProps } from 'vue'
3
+ import { desaturateColor } from '../../../utils'
4
+ import { useManualTheme } from '../../../composables/useManualTheme'
5
+
6
+ defineOptions({
7
+ name: 'TreeItem',
8
+ })
9
+ const props = defineProps({
10
+ node: {
11
+ type: Object,
12
+ required: true,
13
+ },
14
+ level: {
15
+ type: Number,
16
+ default: 0,
17
+ },
18
+ searchKeyword: {
19
+ type: String,
20
+ default: '',
21
+ },
22
+ leafRatmplId: {
23
+ type: String,
24
+ default: '',
25
+ },
26
+ })
27
+ const emit = defineEmits(['addBranch', 'addLeaf', 'remove', 'update', 'toggleExpand'])
28
+ const { currentThemeColor } = useManualTheme()
29
+ interface TreeNode {
30
+ id: string
31
+ label: string
32
+ expanded: boolean
33
+ type: 'branch' | 'leaf' | 'root'
34
+ loading: boolean
35
+ children?: TreeNode[]
36
+ [key: string]: any // 允许其他自定义属性
37
+ }
38
+ // const router = useRouter()
39
+
40
+ const hasChildren = computed(() => {
41
+ return props.node.children && props.node.children.length > 0
42
+ })
43
+
44
+ // 计算是否需要高亮
45
+ const isHighlight = computed(() => {
46
+ if (!props.searchKeyword) return false
47
+ return props.node.label.toLowerCase().includes(props.searchKeyword.toLowerCase())
48
+ })
49
+
50
+ // 展开/收起
51
+ function toggleExpand(node?: TreeNode) {
52
+ emit('toggleExpand', node || props.node)
53
+ }
54
+
55
+ // 添加分支节点事件
56
+ function onAddBranch() {
57
+ emit('addBranch', props.node)
58
+ }
59
+ // 添加叶子节点事件
60
+ function onAddLeaf() {
61
+ emit('addLeaf', props.node)
62
+ }
63
+
64
+ // 删除节点事件
65
+ function onRemove() {
66
+ emit('remove', props.node)
67
+ }
68
+
69
+ // 编辑节点事件
70
+ function handleEdit() {
71
+ emit('update', props.node)
72
+ }
73
+
74
+ // 事件透传(递归组件必须将子组件的事件向上传递)
75
+ function emitAddBranch(e: TreeNode) {
76
+ emit('addBranch', e)
77
+ }
78
+ function emitAddLeaf(e: TreeNode) {
79
+ emit('addLeaf', e)
80
+ }
81
+ function emitRemove(e: TreeNode) {
82
+ emit('remove', e)
83
+ }
84
+ function emitUpdate(e: TreeNode) {
85
+ emit('update', e)
86
+ }
87
+ </script>
88
+
89
+ <template>
90
+ <view class="tree-node">
91
+ <!-- 节点内容行 -->
92
+ <view class="node-content bg-white dark:bg-[#1B1B1E]" :style="{ paddingLeft: `${level * 30}rpx` }">
93
+ <!-- 展开/收起图标 -->
94
+ <view
95
+ class="icon-area"
96
+ @click.stop="
97
+ () => {
98
+ toggleExpand()
99
+ }
100
+ "
101
+ >
102
+ <text v-if="node.type !== 'leaf'" class="arrow" :class="{ rotated: node.expanded }">
103
+ <wd-loading v-if="node.loading" size="16" />
104
+ <wd-icon v-else name="arrow-right" size="18px" />
105
+ </text>
106
+ <text v-else class="dot dark:text-white">•</text>
107
+ </view>
108
+
109
+ <!-- 节点名称 (支持搜索高亮) -->
110
+ <view
111
+ class="label-area text-gray-800 dark:text-white"
112
+ @click.stop="
113
+ () => {
114
+ toggleExpand()
115
+ }
116
+ "
117
+ >
118
+ <text :class="{ highlight: isHighlight }">
119
+ {{ node.label }}
120
+ </text>
121
+ </view>
122
+
123
+ <!-- 操作按钮区域 -->
124
+ <view class="action-area">
125
+ <view
126
+ v-if="(node.type === 'branch' || node.type === 'root') && leafRatmplId"
127
+ class="btn"
128
+ :style="{ backgroundColor: desaturateColor(currentThemeColor.primary) }"
129
+ @click.stop="onAddLeaf"
130
+ >
131
+ <text :style="{ color: currentThemeColor.primary }">+</text>
132
+ </view>
133
+ <view
134
+ v-if="node.type === 'branch' || node.type === 'root'"
135
+ class="btn"
136
+ :style="{ backgroundColor: desaturateColor(currentThemeColor.primary) }"
137
+ @click.stop="onAddBranch"
138
+ >
139
+ <text class="i-carbon:decision-tree text-3" :style="{ color: currentThemeColor.primary }" />
140
+ </view>
141
+ <wd-icon
142
+ class="btn"
143
+ name="edit"
144
+ size="28rpx"
145
+ :style="{ backgroundColor: desaturateColor(currentThemeColor.primary), color: currentThemeColor.primary }"
146
+ @click.stop="handleEdit"
147
+ />
148
+ <text class="btn del" @click.stop="onRemove">-</text>
149
+ </view>
150
+ </view>
151
+
152
+ <!-- 递归渲染子节点 -->
153
+ <view v-if="hasChildren && node.expanded" class="children-container">
154
+ <tree-item
155
+ v-for="child in node.children"
156
+ :key="child.id"
157
+ :node="child"
158
+ :level="level + 1"
159
+ :leaf-ratmpl-id="props.leafRatmplId"
160
+ :search-keyword="searchKeyword"
161
+ @add-leaf="emitAddLeaf"
162
+ @add-branch="emitAddBranch"
163
+ @remove="emitRemove"
164
+ @update="emitUpdate"
165
+ @toggle-expand="toggleExpand"
166
+ />
167
+ </view>
168
+ </view>
169
+ </template>
170
+
171
+ <style scoped>
172
+ .tree-node {
173
+ width: 100%;
174
+ }
175
+
176
+ .node-content {
177
+ display: flex;
178
+ align-items: center;
179
+ height: 88rpx;
180
+ border-bottom: 1rpx solid #f0f0f0;
181
+ padding-right: 20rpx;
182
+ }
183
+
184
+ .icon-area {
185
+ width: 50rpx;
186
+ height: 100%;
187
+ display: flex;
188
+ align-items: center;
189
+ justify-content: center;
190
+ color: #999;
191
+ }
192
+
193
+ .arrow {
194
+ font-size: 24rpx;
195
+ transition: transform 0.2s;
196
+ }
197
+
198
+ .arrow.rotated {
199
+ transform: rotate(90deg);
200
+ }
201
+
202
+ .dot {
203
+ font-size: 60rpx;
204
+ color: #ddd;
205
+ }
206
+
207
+ .label-area {
208
+ flex: 1;
209
+ font-size: 30rpx;
210
+ overflow: hidden;
211
+ text-overflow: ellipsis;
212
+ white-space: nowrap;
213
+ }
214
+
215
+ .highlight {
216
+ color: #007aff;
217
+ font-weight: bold;
218
+ }
219
+
220
+ .action-area {
221
+ display: flex;
222
+ gap: 20rpx;
223
+ }
224
+
225
+ .btn {
226
+ width: 44rpx;
227
+ height: 44rpx;
228
+ line-height: 40rpx;
229
+ text-align: center;
230
+ border-radius: 8rpx;
231
+ font-size: 32rpx;
232
+ }
233
+
234
+ .del {
235
+ background-color: #ffebee;
236
+ color: #f44336;
237
+ }
238
+ </style>