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,310 +1,310 @@
1
- <script lang="ts" setup>
2
- import { computed, onMounted, onUnmounted, ref } from 'vue'
3
- import { onLoad } from '@dcloudio/uni-app'
4
- import { useRouter } from 'uni-mini-router'
5
- import { enums, listData, pageConfig, pageKey } from '../../api/page'
6
- import foldCard from '../fold-card/fold-card.vue'
7
- import type { Config, Entities, Enums, FoldCardModel } from '../../type'
8
- import { useGlobalToast } from '../../composables/useGlobalToast'
9
- import Search from '../search/search.vue'
10
-
11
- defineOptions({
12
- name: 'WuiSelectList',
13
- })
14
- const globalToast = useGlobalToast()
15
- const router = useRouter()
16
- const Zpaging = ref<any>(null)
17
- const config = ref<Config>({
18
- columns: [],
19
- primaryColumn: {
20
- sourceId: '',
21
- controlType: '',
22
- mstrucId: '',
23
- extControlType: '',
24
- },
25
- secondColumn: {
26
- sourceId: '',
27
- controlType: '',
28
- mstrucId: '',
29
- extControlType: '',
30
- },
31
- primaryCriteria: {
32
- sourceId: '',
33
- controlType: '',
34
- mstrucId: '',
35
- disabled: false,
36
- defaultValue: '',
37
- transDefaultValue: '',
38
- required: false,
39
- extControlType: '',
40
- hidden: false,
41
- },
42
- criterias: [],
43
- buttons: [],
44
- id: '',
45
- fields: [],
46
- title: '',
47
- type: '',
48
- pointSourceId: '',
49
- mstrucId: '',
50
- relationNames: [],
51
- readOnly: false,
52
- displayConfig: [],
53
- showType: 'table',
54
- extShowConfig: {},
55
- extDisplayConfig: {}, // 扩展显示配置
56
- })
57
- const sourceId = ref('')
58
- const datas = ref<Entities[]>([])
59
- const pageTitle = ref('')
60
- const selectEvent = ref('')
61
- const sendSelectEvent = ref('')
62
- const extControlType = ref('relselect') // 选择模式,例如:单选:relselect、多选
63
- const model = ref<FoldCardModel>('simple')
64
- const searchData = ref('')
65
- const enumColumn = ref<Enums>({})
66
- onLoad((option: any) => {
67
- sourceId.value = option.sourceId
68
- pageTitle.value = option.title
69
- selectEvent.value = option.selectEvent
70
- sendSelectEvent.value = option.sendSelectEvent
71
- extControlType.value = option.extControlType
72
- model.value = option.foldCardModel || option.cardModel || 'simple'
73
- uni.setNavigationBarTitle({
74
- title: `选择${option.title}`,
75
- })
76
- // 必须在 onLoad 内注册:setup 阶段 sendSelectEvent 仍为空字符串
77
- if (sendSelectEvent.value) {
78
- uni.$once(sendSelectEvent.value, (data: string | string[]) => {
79
- if (!data) return
80
-
81
- if (Array.isArray(data)) {
82
- const newdata: Record<string, string> = {}
83
- data.forEach(item => {
84
- newdata[item.split('@R@')[0]] = item
85
- })
86
- selectData.value = newdata
87
- } else {
88
- selectData.value[data.split('@R@')[0]] = data
89
- }
90
- })
91
- }
92
- getPageConfig()
93
- })
94
- const selectData = ref<Record<string, string>>({}) // 选择数据
95
- const selectDataforMat = computed(() => {
96
- const newdata: Record<string, string> = {}
97
- if (typeof selectData.value === 'object' && selectData.value !== null) {
98
- Object.values(selectData.value).forEach(item => {
99
- newdata[item.split('@R@')[0]] = item.split('@R@')[0]
100
- })
101
- }
102
- return newdata
103
- })
104
- onMounted(() => {
105
- // selectData.value = { '447607223953539077': '447607223953539077@R@光机' }
106
- })
107
-
108
- // 获取页面配置
109
- async function getPageConfig() {
110
- try {
111
- const res = await pageConfig(sourceId.value)
112
- if (res.ltmplConfig) {
113
- config.value = res.ltmplConfig
114
- getEnums()
115
- }
116
- } catch (error) {
117
- console.log(error)
118
- }
119
- }
120
-
121
- // 获取枚举
122
- async function getEnums() {
123
- try {
124
- const params: string[] = []
125
- config.value.criterias?.forEach((item: any) => {
126
- if (item.controlType === 'select' || item.controlType === 'multiselect') {
127
- params.push(`mstrucIds=${item.mstrucId}`)
128
- }
129
- })
130
-
131
- if (!params.length) return
132
- const res = await enums(params.join('&'))
133
- enumColumn.value = res.enumMap || {}
134
- } catch (error) {
135
- console.log('error:', error)
136
- }
137
- }
138
-
139
- // @query所绑定的方法不要自己调用!!需要刷新列表数据时,只需要调用this.$refs.paging.reload()即可
140
- async function queryList(pageNo: number, pageSize: number) {
141
- // 此处请求仅为演示,请替换为自己项目中的请求
142
- // request.queryList({ pageNo,pageSize }).then(res => {
143
- // 将请求结果通过complete传给z-paging处理,同时也代表请求结束,这一行必须调用
144
- // paging.value.complete(res.data.list);
145
- // }).catch(res => {
146
- // 如果请求失败写paging.value.complete(false);
147
- // 注意,每次都需要在catch中写这句话很麻烦,z-paging提供了方案可以全局统一处理
148
- // 在底层的网络请求抛出异常时,写uni.$emit('z-paging-error-emit');即可
149
- // paging.value.complete(false);
150
- // paging.value.reload() // 手动触发加载
151
- // })
152
-
153
- const search = uni.getStorageSync('paramsData')?.changedData || {}
154
- const newParams = {
155
- thirdCriteria: search.relValueField3 || '',
156
- secondCriteria: search.relValueField?.toString() || '',
157
- }
158
- const params = Object.entries(newParams)
159
- .map(([key, value]) => `${key}=${value}`)
160
- .join('&')
161
- let qre = searchData.value ? `${searchData.value + '&' + params}` : params
162
- if (config.value.defaultCriteriaValue) {
163
- for (const key in config.value.defaultCriteriaValue) {
164
- if (Object.prototype.hasOwnProperty.call(config.value.defaultCriteriaValue, key)) {
165
- const element = config.value.defaultCriteriaValue[key]
166
- if (!qre.includes(key)) {
167
- qre = `${qre}&${key}=${element}`
168
- }
169
- }
170
- }
171
- }
172
-
173
- try {
174
- const res = await pageKey(sourceId.value, '', qre) // 获取key
175
- const data = await listData(res.key, pageNo, pageSize) // 获取数据
176
- // const count = await getPageTotal(key.data?.key)// 获取总数
177
- Zpaging.value.complete(data.entities)
178
-
179
- // emits('loadData', data.data.entities)
180
- } catch (error) {
181
- Zpaging.value.complete(false)
182
- console.error(error)
183
- }
184
- }
185
-
186
- // 勾选变换监听
187
- function handleChange(item: Entities) {
188
- // 判断是否有当前选中值,有值则删除
189
- if (selectData.value[item.code]) {
190
- delete selectData.value[item.code]
191
- return
192
- }
193
-
194
- // 判断是否为单选,清空选项
195
- if (extControlType.value === 'relselect' || extControlType.value === 'relselect-extdis') {
196
- selectData.value = {}
197
- }
198
-
199
- selectData.value[item.code] = `${item.code}@R@${item.fieldMap[config.value.primaryColumn.sourceId]}`
200
- }
201
- // 发送选中数据(与编辑页 / mulselect-picker 的 uni.$once(selectEvent) 约定一致)
202
- function send() {
203
- const keys = Object.keys(selectData.value)
204
- if (!keys.length) {
205
- globalToast.warning(`请选择${pageTitle.value}`)
206
- return
207
- }
208
-
209
- const payload = Object.values(selectData.value)
210
- if (selectEvent.value) {
211
- uni.$emit(selectEvent.value, payload)
212
- }
213
-
214
- router.back()
215
- }
216
- // 取消
217
- // function cancel() {
218
- // send('cancel')
219
- // router.back()
220
- // }
221
- // 确定
222
- function confirm() {
223
- send()
224
- }
225
- onUnmounted(() => {
226
- uni.$off(selectEvent.value)
227
- })
228
-
229
- function submitSearch(data: any) {
230
- searchData.value = data
231
- Zpaging.value.reload()
232
- }
233
- const showAddressInfo = computed(() => {
234
- return extControlType.value == 'relselect-extdis' || false
235
- })
236
- const formatAddress = (value: string) => {
237
- return (value?.split(',') || [])[2] || ''
238
- }
239
- const checkboxType: any = computed(() => {
240
- return ['relselect', 'relselect-extdis'].includes(extControlType.value) ? '' : 'square'
241
- })
242
- onUnmounted(() => {
243
- uni.removeStorageSync('paramsData')
244
- })
245
- </script>
246
-
247
- <template>
248
- <z-paging ref="Zpaging" v-model="datas" :show-loading-more-when-reload="true" @query="queryList">
249
- <template #top>
250
- <Search
251
- :enum-column="enumColumn"
252
- :criterias="config.criterias"
253
- :primary-criteria="config.primaryCriteria"
254
- @submit="submitSearch"
255
- />
256
- <!-- <view>
257
- <ListTopButtons :buttons="config.buttons" :source-id="sourceId" :page-title="pageTitle" />
258
- </view> -->
259
- <slot name="top" />
260
- </template>
261
-
262
- <foldCard
263
- v-for="(item, index) in datas"
264
- :key="item.code"
265
- :index="index"
266
- :data="item"
267
- :columns="config.columns"
268
- :primary-column="config.primaryColumn"
269
- :second-column="config.secondColumn"
270
- :model="model"
271
- :groups="config"
272
- :source-id="sourceId"
273
- @click="
274
- () => {
275
- handleChange(item)
276
- }
277
- "
278
- >
279
- <template #select>
280
- <wd-checkbox
281
- :true-value="`${item.code}`"
282
- false-value=""
283
- :model-value="selectDataforMat[item.code]"
284
- :type="checkboxType"
285
- />
286
- </template>
287
-
288
- <template #addressInfo v-if="showAddressInfo">
289
- <div>{{ item.fieldMap[config.extDisplayConfig?.secondColumn?.sourceId] }}</div>
290
- </template>
291
- <template #detailAddress v-if="showAddressInfo">
292
- <div>{{ formatAddress(item.fieldMap[config.extDisplayConfig?.cardShowCols?.[0]?.sourceId]) }}</div>
293
- </template>
294
- <!-- <template #buttons>
295
- <CardBotomButtons :data="item" :groups="config" :source-id="sourceId" :item="config" :code="item.code" />
296
- </template> -->
297
- </foldCard>
298
-
299
- <template #bottom>
300
- <slot name="bottom">
301
- <view class="flex justify-between gap-1 p-2 bg-white dark:bg-[var(--wot-dark-background)]">
302
- <!-- <wd-button class="flex-1" type="info" @click="cancel">
303
- 取消
304
- </wd-button> -->
305
- <wd-button custom-class="flex-1" @click="confirm">确定</wd-button>
306
- </view>
307
- </slot>
308
- </template>
309
- </z-paging>
310
- </template>
1
+ <script lang="ts" setup>
2
+ import { computed, onMounted, onUnmounted, ref } from 'vue'
3
+ import { onLoad } from '@dcloudio/uni-app'
4
+ import { useRouter } from 'uni-mini-router'
5
+ import { enums, listData, pageConfig, pageKey } from '../../api/page'
6
+ import foldCard from '../fold-card/fold-card.vue'
7
+ import type { Config, Entities, Enums, FoldCardModel } from '../../type'
8
+ import { useGlobalToast } from '../../composables/useGlobalToast'
9
+ import Search from '../search/search.vue'
10
+
11
+ defineOptions({
12
+ name: 'WuiSelectList',
13
+ })
14
+ const globalToast = useGlobalToast()
15
+ const router = useRouter()
16
+ const Zpaging = ref<any>(null)
17
+ const config = ref<Config>({
18
+ columns: [],
19
+ primaryColumn: {
20
+ sourceId: '',
21
+ controlType: '',
22
+ mstrucId: '',
23
+ extControlType: '',
24
+ },
25
+ secondColumn: {
26
+ sourceId: '',
27
+ controlType: '',
28
+ mstrucId: '',
29
+ extControlType: '',
30
+ },
31
+ primaryCriterion: {
32
+ sourceId: '',
33
+ controlType: '',
34
+ mstrucId: '',
35
+ disabled: false,
36
+ defaultValue: '',
37
+ transDefaultValue: '',
38
+ required: false,
39
+ extControlType: '',
40
+ hidden: false,
41
+ },
42
+ criteria: [],
43
+ buttons: [],
44
+ id: '',
45
+ fields: [],
46
+ title: '',
47
+ type: '',
48
+ pointSourceId: '',
49
+ mstrucId: '',
50
+ relationNames: [],
51
+ readOnly: false,
52
+ displayConfig: [],
53
+ showType: 'table',
54
+ extShowConfig: {},
55
+ extDisplayConfig: {}, // 扩展显示配置
56
+ })
57
+ const sourceId = ref('')
58
+ const datas = ref<Entities[]>([])
59
+ const pageTitle = ref('')
60
+ const selectEvent = ref('')
61
+ const sendSelectEvent = ref('')
62
+ const extControlType = ref('relselect') // 选择模式,例如:单选:relselect、多选
63
+ const model = ref<FoldCardModel>('simple')
64
+ const searchData = ref('')
65
+ const enumColumn = ref<Enums>({})
66
+ onLoad((option: any) => {
67
+ sourceId.value = option.sourceId
68
+ pageTitle.value = option.title
69
+ selectEvent.value = option.selectEvent
70
+ sendSelectEvent.value = option.sendSelectEvent
71
+ extControlType.value = option.extControlType
72
+ model.value = option.foldCardModel || option.cardModel || 'simple'
73
+ uni.setNavigationBarTitle({
74
+ title: `选择${option.title}`,
75
+ })
76
+ // 必须在 onLoad 内注册:setup 阶段 sendSelectEvent 仍为空字符串
77
+ if (sendSelectEvent.value) {
78
+ uni.$once(sendSelectEvent.value, (data: string | string[]) => {
79
+ if (!data) return
80
+
81
+ if (Array.isArray(data)) {
82
+ const newdata: Record<string, string> = {}
83
+ data.forEach(item => {
84
+ newdata[item.split('@R@')[0]] = item
85
+ })
86
+ selectData.value = newdata
87
+ } else {
88
+ selectData.value[data.split('@R@')[0]] = data
89
+ }
90
+ })
91
+ }
92
+ getPageConfig()
93
+ })
94
+ const selectData = ref<Record<string, string>>({}) // 选择数据
95
+ const selectDataforMat = computed(() => {
96
+ const newdata: Record<string, string> = {}
97
+ if (typeof selectData.value === 'object' && selectData.value !== null) {
98
+ Object.values(selectData.value).forEach(item => {
99
+ newdata[item.split('@R@')[0]] = item.split('@R@')[0]
100
+ })
101
+ }
102
+ return newdata
103
+ })
104
+ onMounted(() => {
105
+ // selectData.value = { '447607223953539077': '447607223953539077@R@光机' }
106
+ })
107
+
108
+ // 获取页面配置
109
+ async function getPageConfig() {
110
+ try {
111
+ const res = await pageConfig(sourceId.value)
112
+ if (res.ltmplConfig) {
113
+ config.value = res.ltmplConfig
114
+ getEnums()
115
+ }
116
+ } catch (error) {
117
+ console.log(error)
118
+ }
119
+ }
120
+
121
+ // 获取枚举
122
+ async function getEnums() {
123
+ try {
124
+ const params: string[] = []
125
+ config.value.criteria?.forEach((item: any) => {
126
+ if (item.controlType === 'select' || item.controlType === 'multiselect') {
127
+ params.push(`mstrucIds=${item.mstrucId}`)
128
+ }
129
+ })
130
+
131
+ if (!params.length) return
132
+ const res = await enums(params.join('&'))
133
+ enumColumn.value = res.enumMap || {}
134
+ } catch (error) {
135
+ console.log('error:', error)
136
+ }
137
+ }
138
+
139
+ // @query所绑定的方法不要自己调用!!需要刷新列表数据时,只需要调用this.$refs.paging.reload()即可
140
+ async function queryList(pageNo: number, pageSize: number) {
141
+ // 此处请求仅为演示,请替换为自己项目中的请求
142
+ // request.queryList({ pageNo,pageSize }).then(res => {
143
+ // 将请求结果通过complete传给z-paging处理,同时也代表请求结束,这一行必须调用
144
+ // paging.value.complete(res.data.list);
145
+ // }).catch(res => {
146
+ // 如果请求失败写paging.value.complete(false);
147
+ // 注意,每次都需要在catch中写这句话很麻烦,z-paging提供了方案可以全局统一处理
148
+ // 在底层的网络请求抛出异常时,写uni.$emit('z-paging-error-emit');即可
149
+ // paging.value.complete(false);
150
+ // paging.value.reload() // 手动触发加载
151
+ // })
152
+
153
+ const search = uni.getStorageSync('paramsData')?.changedData || {}
154
+ const newParams = {
155
+ thirdCriterion: search.relValueField3 || '',
156
+ secondCriterion: search.relValueField?.toString() || '',
157
+ }
158
+ const params = Object.entries(newParams)
159
+ .map(([key, value]) => `${key}=${value}`)
160
+ .join('&')
161
+ let qre = searchData.value ? `${searchData.value + '&' + params}` : params
162
+ if (config.value.defaultCriteriaValue) {
163
+ for (const key in config.value.defaultCriteriaValue) {
164
+ if (Object.prototype.hasOwnProperty.call(config.value.defaultCriteriaValue, key)) {
165
+ const element = config.value.defaultCriteriaValue[key]
166
+ if (!qre.includes(key)) {
167
+ qre = `${qre}&${key}=${element}`
168
+ }
169
+ }
170
+ }
171
+ }
172
+
173
+ try {
174
+ const res = await pageKey(sourceId.value, '', qre) // 获取key
175
+ const data = await listData(res.key, pageNo, pageSize) // 获取数据
176
+ // const count = await getPageTotal(key.data?.key)// 获取总数
177
+ Zpaging.value.complete(data.entities)
178
+
179
+ // emits('loadData', data.data.entities)
180
+ } catch (error) {
181
+ Zpaging.value.complete(false)
182
+ console.error(error)
183
+ }
184
+ }
185
+
186
+ // 勾选变换监听
187
+ function handleChange(item: Entities) {
188
+ // 判断是否有当前选中值,有值则删除
189
+ if (selectData.value[item.code]) {
190
+ delete selectData.value[item.code]
191
+ return
192
+ }
193
+
194
+ // 判断是否为单选,清空选项
195
+ if (extControlType.value === 'relselect' || extControlType.value === 'relselect-extdis') {
196
+ selectData.value = {}
197
+ }
198
+
199
+ selectData.value[item.code] = `${item.code}@R@${item.fieldMap[config.value.primaryColumn.sourceId]}`
200
+ }
201
+ // 发送选中数据(与编辑页 / mulselect-picker 的 uni.$once(selectEvent) 约定一致)
202
+ function send() {
203
+ const keys = Object.keys(selectData.value)
204
+ if (!keys.length) {
205
+ globalToast.warning(`请选择${pageTitle.value}`)
206
+ return
207
+ }
208
+
209
+ const payload = Object.values(selectData.value)
210
+ if (selectEvent.value) {
211
+ uni.$emit(selectEvent.value, payload)
212
+ }
213
+
214
+ router.back()
215
+ }
216
+ // 取消
217
+ // function cancel() {
218
+ // send('cancel')
219
+ // router.back()
220
+ // }
221
+ // 确定
222
+ function confirm() {
223
+ send()
224
+ }
225
+ onUnmounted(() => {
226
+ uni.$off(selectEvent.value)
227
+ })
228
+
229
+ function submitSearch(data: any) {
230
+ searchData.value = data
231
+ Zpaging.value.reload()
232
+ }
233
+ const showAddressInfo = computed(() => {
234
+ return extControlType.value == 'relselect-extdis' || false
235
+ })
236
+ const formatAddress = (value: string) => {
237
+ return (value?.split(',') || [])[2] || ''
238
+ }
239
+ const checkboxType: any = computed(() => {
240
+ return ['relselect', 'relselect-extdis'].includes(extControlType.value) ? '' : 'square'
241
+ })
242
+ onUnmounted(() => {
243
+ uni.removeStorageSync('paramsData')
244
+ })
245
+ </script>
246
+
247
+ <template>
248
+ <z-paging ref="Zpaging" v-model="datas" :show-loading-more-when-reload="true" @query="queryList">
249
+ <template #top>
250
+ <Search
251
+ :enum-column="enumColumn"
252
+ :criteria="config.criteria"
253
+ :primary-criterion="config.primaryCriterion"
254
+ @submit="submitSearch"
255
+ />
256
+ <!-- <view>
257
+ <ListTopButtons :buttons="config.buttons" :source-id="sourceId" :page-title="pageTitle" />
258
+ </view> -->
259
+ <slot name="top" />
260
+ </template>
261
+
262
+ <foldCard
263
+ v-for="(item, index) in datas"
264
+ :key="item.code"
265
+ :index="index"
266
+ :data="item"
267
+ :columns="config.columns"
268
+ :primary-column="config.primaryColumn"
269
+ :second-column="config.secondColumn"
270
+ :model="model"
271
+ :groups="config"
272
+ :source-id="sourceId"
273
+ @click="
274
+ () => {
275
+ handleChange(item)
276
+ }
277
+ "
278
+ >
279
+ <template #select>
280
+ <wd-checkbox
281
+ :true-value="`${item.code}`"
282
+ false-value=""
283
+ :model-value="selectDataforMat[item.code]"
284
+ :type="checkboxType"
285
+ />
286
+ </template>
287
+
288
+ <template #addressInfo v-if="showAddressInfo">
289
+ <div>{{ item.fieldMap[config.extDisplayConfig?.secondColumn?.sourceId] }}</div>
290
+ </template>
291
+ <template #detailAddress v-if="showAddressInfo">
292
+ <div>{{ formatAddress(item.fieldMap[config.extDisplayConfig?.cardShowCols?.[0]?.sourceId]) }}</div>
293
+ </template>
294
+ <!-- <template #buttons>
295
+ <CardBotomButtons :data="item" :groups="config" :source-id="sourceId" :item="config" :code="item.code" />
296
+ </template> -->
297
+ </foldCard>
298
+
299
+ <template #bottom>
300
+ <slot name="bottom">
301
+ <view class="flex justify-between gap-1 p-2 bg-white dark:bg-[var(--wot-dark-background)]">
302
+ <!-- <wd-button class="flex-1" type="info" @click="cancel">
303
+ 取消
304
+ </wd-button> -->
305
+ <wd-button custom-class="flex-1" @click="confirm">确定</wd-button>
306
+ </view>
307
+ </slot>
308
+ </template>
309
+ </z-paging>
310
+ </template>