wui-components-v2 1.1.84 → 1.1.86

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.
@@ -1,9 +1,9 @@
1
1
  <template>
2
2
  <view class="rounded-md mb-3">
3
3
  <view class="rounded-md shadow-md dark:bg-[#252530] pb-3">
4
- <wd-textarea v-model="personDetail" placeholder="「粘贴识别」或输入文本,智能拆分、姓名、电话和地址" />
4
+ <wd-textarea v-model="personDetail" :readonly="readonly" placeholder="「粘贴识别」或输入文本,智能拆分、姓名、电话和地址" />
5
5
  <view class="flex justify-end align-center px-3">
6
- <view class="px-3 text-white bg-[#007AFF] rounded-md py-1 text-sm box-border" @click="identifyingFn">
6
+ <view v-if="!readonly" class="px-3 text-white bg-[#007AFF] rounded-md py-1 text-sm box-border" @click="identifyingFn">
7
7
  智能识别
8
8
  </view>
9
9
  </view>
@@ -20,6 +20,7 @@ defineOptions({
20
20
  })
21
21
  const props = defineProps<{
22
22
  group: any
23
+ readonly?: boolean
23
24
  }>()
24
25
  const model = defineModel<any>()
25
26
  const personDetail = ref('')
@@ -29,6 +30,7 @@ const form = ref(null)
29
30
  * @description: 智能识别
30
31
  */
31
32
  function identifyingFn() {
33
+ if (props.readonly) return
32
34
  if (!personDetail.value) {
33
35
  toast.info('请输入内容')
34
36
  return
@@ -4,10 +4,10 @@ import { useRouter } from 'uni-mini-router'
4
4
  import { onLoad } from '@dcloudio/uni-app'
5
5
  import type { ClassEditConfigs, Columns, Entities, Enums, Fields, Groups, rowActions } from '../../type'
6
6
  import ActionPopup from '../action-popup/action-popup.vue'
7
- import { actionDataSave, deleteData } from '../../api/page'
7
+ import { actionDataSave, deleteData, editPageConfig } from '../../api/page'
8
8
  import { useGlobalToast } from '../../composables/useGlobalToast'
9
9
  import { useGlobalMessage } from '../../composables/useGlobalMessage'
10
- import { comparator } from '../../utils/index'
10
+ import { comparator, generateHighResolutionID } from '../../utils/index'
11
11
  import ControlTypeSupportor from '../../utils/control-type-supportor'
12
12
  import { formatItemData } from '../../utils'
13
13
 
@@ -202,7 +202,30 @@ function closeMoreButn() {
202
202
  }
203
203
 
204
204
  // 点击更多按钮
205
- function select({ item }: { item: any }) {
205
+ async function select({ item }: { item: any }) {
206
+ // 复制操作:跳转新增页,仅复制基本信息(fieldMap),不带原 ID 和 relation 分组数据(如快递运单)
207
+ if (item.title.includes('复制')) {
208
+ // 优先用编辑同款接口拉取完整 fieldMap(含关联选择字段值如基地名称/快递公司),失败回退列表行数据
209
+ let fieldMapData = props.data.fieldMap
210
+ try {
211
+ const res: any = await editPageConfig(props.sourceId, props.code)
212
+ const entity = res?.dtmplConfig?.entity
213
+ if (entity?.fieldMap) fieldMapData = entity.fieldMap
214
+ } catch (e) {
215
+ console.log('[copy] 拉取完整实体失败,回退使用列表数据', e)
216
+ }
217
+ // 生成复制标识:URL 带 copyEvent 区分"复制新增";存储以 copyEvent 为 key,仅本次复制可读,不污染普通新增
218
+ const copyEvent = generateHighResolutionID()
219
+ uni.setStorageSync(copyEvent, {
220
+ code: '',
221
+ fieldMap: fieldMapData,
222
+ arrayMap: {}, // 不复制 relation 分组数据(快递运单等需用户重新填写)
223
+ })
224
+ router.push(
225
+ `/pages/edit-page/index?sourceId=${props.sourceId}&id=&title=${props.item.title}&pageType=${props.pageType}&addEvent=${props.addEvent}&copyEvent=${copyEvent}`
226
+ )
227
+ return
228
+ }
206
229
  if (item.title.includes('评价') && item.actionType === 'rowActions') {
207
230
  return action(item)
208
231
  }
@@ -13,6 +13,7 @@ const props = defineProps({
13
13
  type: { type: String, default: 'date' },
14
14
  min: String,
15
15
  max: String,
16
+ readonly: { type: Boolean, default: false },
16
17
  })
17
18
 
18
19
  const emit = defineEmits<{
@@ -64,9 +65,9 @@ console.log('labelText', props)
64
65
 
65
66
  <template>
66
67
  <div class="flex items-center justify-between">
67
- <wd-input v-model="labelText" readonly :placeholder="placeholder" class="flex-1" @click="open = true" />
68
- <wd-icon v-if="labelText" name="close-circle" size="16px" @click="clear" />
69
- <wd-icon v-else name="right" size="16px" @click="clear" />
68
+ <wd-input v-model="labelText" readonly :placeholder="placeholder" class="flex-1" @click="!readonly && (open = true)" />
69
+ <wd-icon v-if="!readonly && labelText" name="close-circle" size="16px" @click="clear" />
70
+ <wd-icon v-else-if="!readonly" name="right" size="16px" @click="clear" />
70
71
  </div>
71
72
 
72
73
  <wd-calendar
@@ -14,6 +14,7 @@ const props = defineProps({
14
14
  labelKey: { type: String, default: 'label' },
15
15
  valueKey: { type: String, default: 'value' },
16
16
  type: { type: String, default: 'radio' },
17
+ readonly: { type: Boolean, default: false },
17
18
  })
18
19
 
19
20
  const emit = defineEmits<{
@@ -63,9 +64,15 @@ const labelText = computed(() => {
63
64
 
64
65
  <template>
65
66
  <div class="flex items-center justify-between">
66
- <wd-input v-model="labelText" readonly :placeholder="placeholder" class="flex-1" @click="open = true" />
67
- <wd-icon v-if="labelText" name="close-circle" size="16px" @click="clear" />
68
- <wd-icon v-else name="right" size="16px" @click="clear" />
67
+ <wd-input
68
+ v-model="labelText"
69
+ readonly
70
+ :placeholder="placeholder"
71
+ class="flex-1"
72
+ @click="!readonly && (open = true)"
73
+ />
74
+ <wd-icon v-if="!readonly && labelText" name="close-circle" size="16px" @click="clear" />
75
+ <wd-icon v-else-if="!readonly" name="right" size="16px" @click="clear" />
69
76
  </div>
70
77
 
71
78
  <wd-select-picker
@@ -76,6 +83,7 @@ const labelText = computed(() => {
76
83
  value-key="value"
77
84
  class="custom-select-picker"
78
85
  :type="type as any"
86
+ :readonly="readonly"
79
87
  />
80
88
  </template>
81
89
 
@@ -111,7 +111,7 @@ function initFormData() {
111
111
 
112
112
  // 时间
113
113
  if (
114
- ControlTypeSupportor.getControlType(item, props.entity && props.entity[item.sourceId]) === 'datetime' ||
114
+ ControlTypeSupportor.getControlType(item, props.entity && props.entity[item.sourceId]) === 'eetime' ||
115
115
  ControlTypeSupportor.getControlType(item, props.entity && props.entity[item.sourceId]) === 'date'
116
116
  ) {
117
117
  return (models[item.sourceId] =
@@ -623,6 +623,7 @@ console.log('clearValueMap', clearValueMap)
623
623
  :placeholder="`请选择${item.title}`"
624
624
  :columns="enumColumn && formatSelectColumns(enumColumn[item.mstrucId])"
625
625
  type="radio"
626
+ :readonly="item.disabled || item.rowEditType === 'readonly'"
626
627
  />
627
628
  </wd-form-item>
628
629
  <wd-form-item
@@ -642,6 +643,7 @@ console.log('clearValueMap', clearValueMap)
642
643
  :title="item.title"
643
644
  :add-event="addEvent"
644
645
  :ext-control-type="item.extControlType"
646
+ :readonly="item.disabled || item.rowEditType === 'readonly'"
645
647
  />
646
648
  </wd-form-item>
647
649
  <wd-form-item
@@ -657,6 +659,7 @@ console.log('clearValueMap', clearValueMap)
657
659
  :placeholder="`请选择${item.title}`"
658
660
  :columns="enumColumn && formatSelectColumns(enumColumn[item.mstrucId])"
659
661
  type="checkbox"
662
+ :readonly="item.disabled || item.rowEditType === 'readonly'"
660
663
  />
661
664
  </wd-form-item>
662
665
  <wd-form-item
@@ -672,6 +675,7 @@ console.log('clearValueMap', clearValueMap)
672
675
  type="date"
673
676
  :clearable="!item.disabled"
674
677
  :placeholder="`请选择${item.title}`"
678
+ :readonly="item.disabled || item.rowEditType === 'readonly'"
675
679
  />
676
680
  </wd-form-item>
677
681
  <wd-form-item
@@ -688,6 +692,7 @@ console.log('clearValueMap', clearValueMap)
688
692
  type="datetime"
689
693
  :clearable="!item.disabled"
690
694
  :placeholder="`请选择${item.title}`"
695
+ :readonly="item.disabled || item.rowEditType === 'readonly'"
691
696
  />
692
697
  </wd-form-item>
693
698
  <wd-form-item
@@ -704,6 +709,7 @@ console.log('clearValueMap', clearValueMap)
704
709
  use-second
705
710
  :clearable="!item.disabled"
706
711
  :placeholder="`请选择${item.title}`"
712
+ :readonly="item.disabled || item.rowEditType === 'readonly'"
707
713
  />
708
714
  </wd-form-item>
709
715
  <wd-form-item
@@ -720,6 +726,7 @@ console.log('clearValueMap', clearValueMap)
720
726
  use-second
721
727
  :clearable="!item.disabled"
722
728
  :placeholder="`请选择${item.title}`"
729
+ :readonly="item.disabled || item.rowEditType === 'readonly'"
723
730
  />
724
731
  </wd-form-item>
725
732
  <wd-form-item
@@ -736,6 +743,7 @@ console.log('clearValueMap', clearValueMap)
736
743
  use-second
737
744
  :clearable="!item.disabled"
738
745
  :placeholder="`请选择${item.title}`"
746
+ :readonly="item.disabled || item.rowEditType === 'readonly'"
739
747
  />
740
748
  </wd-form-item>
741
749
  <wd-form-item
@@ -31,6 +31,7 @@ const props = defineProps({
31
31
  sourceId: String,
32
32
  title: String,
33
33
  extControlType: String,
34
+ readonly: { type: Boolean, default: false },
34
35
  })
35
36
 
36
37
  const emit = defineEmits<{
@@ -49,6 +50,7 @@ const showValue = reactive({
49
50
  const EVENT_NAME = `userChooseSelected_${generateHighResolutionID()}`
50
51
 
51
52
  const addUser = () => {
53
+ if (props.readonly) return
52
54
  const addEvent = generateHighResolutionID()
53
55
  // 当前已有数据时,跳转到编辑页面
54
56
  if (currentValue.value && typeof currentValue.value === 'string') {
@@ -69,6 +71,7 @@ const addUser = () => {
69
71
  }
70
72
 
71
73
  const toAddressList = () => {
74
+ if (props.readonly) return
72
75
  uni.navigateTo({
73
76
  url: `/pages/select-list/index?sourceId=${props.sourceId}&title=${props.title}&extControlType=${props.extControlType}&selectEvent=${EVENT_NAME}`,
74
77
  })
@@ -58,6 +58,11 @@ const addEvent = ref('')
58
58
  const editEvent = ref('')
59
59
  const rowAddEvent = ref('')
60
60
  const sendRowAddEvent = ref('')
61
+ const copyEvent = ref('') // 复制场景:携带源行数据的事件名
62
+ const copyData = ref<any>(null) // 复制场景:源行数据(已剥离 ID)
63
+ const copyApplied = ref(false) // 复制数据是否已写入 entity
64
+ // 复制场景下,需等复制数据写入 entity 后再渲染表单,否则 FormControl 在 onBeforeMount 时读不到值
65
+ const formReady = computed(() => !!pageConfig.value?.groups?.length && (!copyEvent.value || copyApplied.value))
61
66
  const smartPaste = ref(false)
62
67
  // 折叠面板
63
68
  const collapses = ref('')
@@ -96,6 +101,15 @@ onLoad((option: any) => {
96
101
  pageType.value = option.pageType || ''
97
102
  rowAddEvent.value = option.rowAddEvent
98
103
  sendRowAddEvent.value = option.sendRowAddEvent
104
+ copyEvent.value = option.copyEvent
105
+ // 复制场景:仅当 URL 带 copyEvent 标识(即"复制新增")才读取预填数据;
106
+ // 普通新增不带该标识,绝不读取存储,避免复制残留数据污染普通新增
107
+ if (copyEvent.value) {
108
+ copyData.value = uni.getStorageSync(copyEvent.value) || null
109
+ if (copyData.value) {
110
+ console.log('[copy] 读取到复制数据:', JSON.parse(JSON.stringify(copyData.value)))
111
+ }
112
+ }
99
113
  getEditPageConfig()
100
114
  })
101
115
 
@@ -106,6 +120,7 @@ onUnmounted(() => {
106
120
  // uni.$off(addEvent.value)
107
121
  uni.$off(editEvent.value)
108
122
  uni.$off(sendRowAddEvent.value)
123
+ uni.$off(copyEvent.value)
109
124
  })
110
125
 
111
126
  onBeforeMount(() => {
@@ -113,6 +128,49 @@ onBeforeMount(() => {
113
128
  hydrocarbonProgramToken.value = uni.getStorageSync('HYDROCARBON_PROGRAM_TOKEN')
114
129
  token.value = uni.getStorageSync('TOKEN')
115
130
  })
131
+
132
+ // 复制场景:将源行数据写入 entity,且强制 code 为空(新增,不带原 ID)
133
+ function applyCopyData() {
134
+ pageConfig.value.entity = {
135
+ ...pageConfig.value.entity,
136
+ code: '',
137
+ fieldMap: copyData.value.fieldMap || {},
138
+ arrayMap: copyData.value.arrayMap || {},
139
+ }
140
+ copyApplied.value = true
141
+ console.log('[copy] 已预填 entity:', JSON.parse(JSON.stringify(pageConfig.value.entity)))
142
+ }
143
+
144
+ // 根据已加载的 entity 初始化关联(勾选/行)数据
145
+ function initRelationData() {
146
+ pageConfig.value.groups.forEach((item: Groups) => {
147
+ // 初始化勾选数据
148
+ if (item.type === 'relation' && (item.buttons.includes('dtmplAdd') || item.buttons.includes('selectAdd'))) {
149
+ selectData.value[item.id] = {
150
+ data:
151
+ (pageConfig.value.entity &&
152
+ pageConfig.value.entity.arrayMap[item.id]?.map((sebitem: any) => {
153
+ return `${sebitem.code}`
154
+ })) ||
155
+ [],
156
+ loading: false,
157
+ }
158
+ }
159
+ // 初始化行数据
160
+ if (item.type === 'relation' && item.buttons.includes('rowAdd')) {
161
+ rowData.value[item.id] =
162
+ (pageConfig.value.entity &&
163
+ pageConfig.value.entity.arrayMap[item.id]?.map((sebitem: any) => {
164
+ return {
165
+ id: sebitem.code,
166
+ ...sebitem.fieldMap,
167
+ }
168
+ })) ||
169
+ []
170
+ }
171
+ })
172
+ }
173
+
116
174
  // 获取编辑页面配置
117
175
  async function getEditPageConfig() {
118
176
  // 判断是否为行新增事件
@@ -158,35 +216,19 @@ async function getEditPageConfig() {
158
216
  title: `${res.dtmplConfig.title}`,
159
217
  })
160
218
  pageConfig.value = res.dtmplConfig
219
+ // 复制场景:用携带的行数据预填表单,但不带原记录 ID(保持新增)
220
+ if (copyEvent.value && copyData.value) {
221
+ applyCopyData()
222
+ } else if (copyEvent.value) {
223
+ // 兜底:复制数据迟到或丢失时,最多等待 800ms 后渲染空表单,避免页面空白卡死
224
+ setTimeout(() => {
225
+ if (!copyApplied.value) copyApplied.value = true
226
+ }, 800)
227
+ }
161
228
  const visibleGroups = pageConfig.value.groups.filter((item: Groups) => item.displayConfig.includes('displayed'))
162
229
  collapses.value = visibleGroups.length > 0 ? visibleGroups[0].id : ''
163
230
 
164
- pageConfig.value.groups.forEach((item: Groups) => {
165
- // 初始化勾选数据
166
- if (item.type === 'relation' && (item.buttons.includes('dtmplAdd') || item.buttons.includes('selectAdd'))) {
167
- selectData.value[item.id] = {
168
- data:
169
- (pageConfig.value.entity &&
170
- pageConfig.value.entity.arrayMap[item.id]?.map((sebitem: any) => {
171
- return `${sebitem.code}`
172
- })) ||
173
- [],
174
- loading: false,
175
- }
176
- }
177
- // 初始化行数据
178
- if (item.type === 'relation' && item.buttons.includes('rowAdd')) {
179
- rowData.value[item.id] =
180
- (pageConfig.value.entity &&
181
- pageConfig.value.entity.arrayMap[item.id]?.map((sebitem: any) => {
182
- return {
183
- id: sebitem.code,
184
- ...sebitem.fieldMap,
185
- }
186
- })) ||
187
- []
188
- }
189
- })
231
+ initRelationData()
190
232
  getEnums()
191
233
  console.log(pageConfig.value, 'pageConfig.value')
192
234
  }
@@ -342,6 +384,9 @@ async function save() {
342
384
  // ★ 通知 wui-select-popup 刷新列表数据
343
385
  uni.$emit('selectPopup:refresh', sourceId.value)
344
386
 
387
+ // 复制场景:保存成功后清除本次复制数据(按 copyEvent key),避免残留
388
+ if (copyEvent.value) uni.removeStorageSync(copyEvent.value)
389
+
345
390
  subLoading.value = false
346
391
  router.back()
347
392
  } catch (error) {
@@ -877,7 +922,7 @@ console.log(pageConfig, 'props111')
877
922
  </template>
878
923
 
879
924
  <FormControl
880
- v-if="group.type === 'fieldGroup'"
925
+ v-if="group.type === 'fieldGroup' && formReady"
881
926
  ref="formControlRef"
882
927
  :field-group="group"
883
928
  :entity="pageConfig?.entity?.fieldMap"
@@ -425,8 +425,8 @@ console.log(props, 'props')
425
425
 
426
426
  <!-- 右侧箭头 -->
427
427
  <view class="cell-arrow">
428
- <wd-icon v-if="clearable && displayValue" name="close-circle" size="16px" @click.stop="clear" />
429
- <wd-icon name="right" v-else size="16px"></wd-icon>
428
+ <wd-icon v-if="clearable && !readonly && displayValue" name="close-circle" size="16px" @click.stop="clear" />
429
+ <wd-icon v-else-if="!readonly" name="right" size="16px"></wd-icon>
430
430
  </view>
431
431
  </view>
432
432
 
@@ -40,51 +40,74 @@ export function useCompanyFieldFilter(
40
40
  )
41
41
  }
42
42
 
43
- const formatFieldsItem = (company: string, item: any) => {
44
- const transDefaultValue = item.usableRuleCriteria?.[0]?.transDefaultValue || ''
45
- const isHidden = item?.unusableMode === 'hidden'
46
- const values = transDefaultValue.split(',').map(v => v.trim())
47
- if (!company) {
48
- return {
49
- ...item,
50
- hidden: isHidden,
51
- }
52
- } else {
53
- return {
54
- ...item,
55
- hidden: values.some(v => v.includes(company)) ? false : item.hidden,
56
- }
57
- }
43
+ // 判断值是否为空(依赖字段无数据)
44
+ const isEmptyValue = (v: any) => {
45
+ if (v == null) return true
46
+ if (typeof v === 'string') return v.trim() === ''
47
+ if (Array.isArray(v)) return v.length === 0
48
+ return false
58
49
  }
50
+
51
+ // 评估单条可用规则(usableRuleCriteria)的就绪/命中状态
52
+ // criterion 通过 mstrucId 关联同一分组内的其它字段,再拿该字段在 model 中的实时值与 transDefaultValue 比对
53
+ // 返回值:'empty'(依赖字段无数据)| 'match'(命中)| 'unmatch'(未命中)
54
+ const evaluateCriterion = (criterion: any, fieldsMap: Map<string, any>, modelValue: any): 'empty' | 'match' | 'unmatch' => {
55
+ const target = criterion?.mstrucId ? fieldsMap.get(criterion.mstrucId) : null
56
+ // 找不到被关联字段时 fail-open,视为命中,避免误隐藏
57
+ if (!target) return 'match'
58
+ const refValue = modelValue[target.sourceId]
59
+ // 依赖字段无数据:该项隐藏
60
+ if (isEmptyValue(refValue)) return 'empty'
61
+ const expected = (criterion?.transDefaultValue || '')
62
+ .split(',')
63
+ .map((v: string) => v.trim())
64
+ .filter(Boolean)
65
+ if (expected.length === 0) return 'match'
66
+ const rv = String(refValue)
67
+ // include_anyone:被关联字段值 与 规则值 任一方包含对方即视为命中(兼容"顺丰"匹配"顺丰速运"这类模糊场景)
68
+ const matched = expected.some((e: string) => {
69
+ const ev = String(e)
70
+ return ev === rv || ev.includes(rv) || rv.includes(ev)
71
+ })
72
+ return matched ? 'match' : 'unmatch'
73
+ }
74
+
75
+ // 计算字段是否隐藏:依据 usableRuleCriteria 关联其它字段实时值
76
+ // - 无可用规则:保持字段自身 unusableMode 决定的显隐
77
+ // - 有可用规则:
78
+ // 1) 任一依赖字段无数据 -> 隐藏该项
79
+ // 2) 依赖均有数据后,所有规则命中才显示,否则隐藏
80
+ const computeHidden = (item: any, fieldsMap: Map<string, any>, modelValue: any, isEnabled: boolean) => {
81
+ const baseHidden = item?.unusableMode === 'hidden'
82
+ if (!isEnabled) return baseHidden
83
+ const criteria = item?.usableRuleCriteria
84
+ if (!criteria || criteria.length === 0) return baseHidden
85
+ // 任一依赖字段无数据 -> 隐藏
86
+ if (criteria.some((c: any) => evaluateCriterion(c, fieldsMap, modelValue) === 'empty')) return true
87
+ // 依赖就绪后:所有规则命中才显示
88
+ const usable = criteria.every((c: any) => evaluateCriterion(c, fieldsMap, modelValue) === 'match')
89
+ return usable ? false : true
90
+ }
91
+
59
92
  const filteredFields = computed(() => {
60
- const company = selectedCompany.value
61
93
  const allFields = fieldGroup()?.fields
62
94
  if (!allFields) return []
63
- const formattedFields = allFields.filter((item: any) => {
64
- // 如果没有选中公司,所有字段都显示
65
- if (!company) {
66
- return true
67
- }
68
- // 检查 usableRuleCriteria 是否存在且有值
69
- if (!item.usableRuleCriteria || item.usableRuleCriteria.length === 0) {
70
- return true
71
- }
72
- // 获取 transDefaultValue 并检查是否包含选中的公司
73
- const transDefaultValue = item.usableRuleCriteria?.[0]?.transDefaultValue
74
- if (typeof transDefaultValue === 'string') {
75
- const values = transDefaultValue.split(',').map(v => v.trim())
76
- // console.log('transDefaultValue', company, 'values', values,values.includes(company))
77
- return values.some(v => v.includes(company))
78
- }
79
- return true
95
+ // 建立 mstrucId -> field 映射,供可用规则关联同分组内其它字段
96
+ const fieldsMap = new Map<string, any>()
97
+ allFields.forEach((f: any) => {
98
+ if (f?.mstrucId) fieldsMap.set(f.mstrucId, f)
80
99
  })
81
- console.log('formattedFields', formattedFields)
82
- return formattedFields.map((item: any) => formatFieldsItem(company, item))
100
+ const modelValue = model.value
101
+ // 保留全部字段(监听所有数据),仅通过 hidden 控制显隐,规则随 model 实时联动
102
+ return allFields.map((item: any) => ({
103
+ ...item,
104
+ hidden: computeHidden(item, fieldsMap, modelValue, enabled),
105
+ }))
83
106
  })
84
107
  watch(
85
108
  filteredFields,
86
- val => {
87
- // console.log('filteredFields变化了', val, 'selectedCompany:', selectedCompany.value)
109
+ () => {
110
+ // 字段显隐随 model 实时变化,可在此做监听/埋点
88
111
  },
89
112
  { immediate: true }
90
113
  )
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wui-components-v2",
3
- "version": "1.1.84",
3
+ "version": "1.1.86",
4
4
  "description": "wui 组件库",
5
5
  "author": "wgxshh",
6
6
  "license": "MIT",