vue_zhongyou 1.0.11 → 1.0.13
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.
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
v-model="formData[field.field]"
|
|
9
9
|
:type="field.type === 'textarea' ? 'textarea' : 'text'"
|
|
10
10
|
:label="field.label"
|
|
11
|
-
:label-width="60"
|
|
11
|
+
:label-width="field.labelWidth || 60"
|
|
12
12
|
:placeholder="field.placeholder || `请输入${field.label}`"
|
|
13
13
|
:rules="field.rules || []"
|
|
14
14
|
:maxlength="field.maxlength"
|
|
@@ -20,7 +20,12 @@
|
|
|
20
20
|
/>
|
|
21
21
|
|
|
22
22
|
<!-- 单选 -->
|
|
23
|
-
<van-field
|
|
23
|
+
<van-field
|
|
24
|
+
v-else-if="field.type === 'radio'"
|
|
25
|
+
name="radio"
|
|
26
|
+
:label="field.label"
|
|
27
|
+
:label-width="field.labelWidth || 60"
|
|
28
|
+
:rules="field.rules || []">
|
|
24
29
|
<template #input>
|
|
25
30
|
<van-radio-group
|
|
26
31
|
v-model="formData[field.field]"
|
|
@@ -41,7 +46,12 @@
|
|
|
41
46
|
|
|
42
47
|
|
|
43
48
|
<!-- 多选 -->
|
|
44
|
-
<van-field
|
|
49
|
+
<van-field
|
|
50
|
+
v-else-if="field.type === 'checkbox'"
|
|
51
|
+
name="checkboxGroup"
|
|
52
|
+
:label="field.label"
|
|
53
|
+
:label-width="field.labelWidth || 60"
|
|
54
|
+
:rules="field.rules || []">
|
|
45
55
|
<template #input>
|
|
46
56
|
<van-checkbox-group
|
|
47
57
|
v-model="formData[field.field]"
|
|
@@ -66,6 +76,7 @@
|
|
|
66
76
|
is-link
|
|
67
77
|
readonly
|
|
68
78
|
:label="field.label"
|
|
79
|
+
:label-width="field.labelWidth || 60"
|
|
69
80
|
:placeholder="field.placeholder || `请选择${field.label}`"
|
|
70
81
|
:model-value="getSelectLabel(field)"
|
|
71
82
|
:rules="field.rules || []"
|
|
@@ -78,6 +89,7 @@
|
|
|
78
89
|
is-link
|
|
79
90
|
readonly
|
|
80
91
|
:label="field.label"
|
|
92
|
+
:label-width="field.labelWidth || 60"
|
|
81
93
|
:placeholder="field.placeholder || '请选择时间范围'"
|
|
82
94
|
:rules="field.rules || []"
|
|
83
95
|
:model-value="getDateRangeText(field)"
|
|
@@ -90,7 +102,7 @@
|
|
|
90
102
|
is-link
|
|
91
103
|
readonly
|
|
92
104
|
:label="field.label"
|
|
93
|
-
:label-width="60"
|
|
105
|
+
:label-width="field.labelWidth || 60"
|
|
94
106
|
:placeholder="field.placeholder || '请选择日期时间范围'"
|
|
95
107
|
:model-value="getDateTimeRangeText(field)"
|
|
96
108
|
:rules="field.rules || []"
|
|
@@ -103,6 +115,7 @@
|
|
|
103
115
|
is-link
|
|
104
116
|
readonly
|
|
105
117
|
:label="field.label"
|
|
118
|
+
:label-width="field.labelWidth || 60"
|
|
106
119
|
:placeholder="field.placeholder || '请选择地址'"
|
|
107
120
|
:rules="field.rules || []"
|
|
108
121
|
:model-value="getAddressText(field)"
|
|
@@ -115,7 +128,7 @@
|
|
|
115
128
|
is-link
|
|
116
129
|
readonly
|
|
117
130
|
:label="field.label"
|
|
118
|
-
:label-width="60"
|
|
131
|
+
:label-width="field.labelWidth || 60"
|
|
119
132
|
:placeholder="field.placeholder || '请选择日期时间'"
|
|
120
133
|
:model-value="getDateTimeText(field)"
|
|
121
134
|
:rules="field.rules || []"
|
|
@@ -283,6 +296,9 @@ const addressPopup = ref({
|
|
|
283
296
|
columnsPlaceholder: null
|
|
284
297
|
})
|
|
285
298
|
|
|
299
|
+
// 存储各个datetime字段的选择时间
|
|
300
|
+
const dateTimeValues = ref({})
|
|
301
|
+
|
|
286
302
|
// 单个日期时间弹窗状态
|
|
287
303
|
const dateTimePopup = ref({
|
|
288
304
|
visible: false,
|
|
@@ -341,16 +357,31 @@ watch(
|
|
|
341
357
|
|
|
342
358
|
const updateFieldValue = (field, value) => {
|
|
343
359
|
formData[field] = value
|
|
344
|
-
emit('update:modelValue', snapshot())
|
|
345
360
|
emit('change', { field, value, values: snapshot() })
|
|
346
361
|
}
|
|
347
362
|
|
|
348
363
|
const handleSubmit = () => {
|
|
364
|
+
emit('update:modelValue', snapshot())
|
|
349
365
|
emit('submit', snapshot())
|
|
350
366
|
}
|
|
351
367
|
|
|
352
368
|
const handleReset = () => {
|
|
353
|
-
|
|
369
|
+
// 清空表单数据
|
|
370
|
+
Object.keys(formData).forEach(key => {
|
|
371
|
+
delete formData[key]
|
|
372
|
+
})
|
|
373
|
+
|
|
374
|
+
// 清除保存的datetime值
|
|
375
|
+
Object.keys(dateTimeValues.value).forEach(key => {
|
|
376
|
+
delete dateTimeValues.value[key]
|
|
377
|
+
})
|
|
378
|
+
|
|
379
|
+
// 重新初始化表单数据为空值
|
|
380
|
+
normalizedSchema.value.forEach((field) => {
|
|
381
|
+
const key = field.field
|
|
382
|
+
formData[key] = getDefaultValue(field.type)
|
|
383
|
+
})
|
|
384
|
+
|
|
354
385
|
emit('update:modelValue', snapshot())
|
|
355
386
|
emit('reset', snapshot())
|
|
356
387
|
}
|
|
@@ -375,6 +406,9 @@ const onSelectConfirm = ({ selectedOptions }) => {
|
|
|
375
406
|
const option = selectedOptions?.[0]
|
|
376
407
|
if (option && selectPopup.value.field) {
|
|
377
408
|
updateFieldValue(selectPopup.value.field.field, option.value)
|
|
409
|
+
|
|
410
|
+
// 触发modelValue更新
|
|
411
|
+
emit('update:modelValue', snapshot())
|
|
378
412
|
}
|
|
379
413
|
closeSelect()
|
|
380
414
|
}
|
|
@@ -473,6 +507,9 @@ const confirmDateTimeRange = () => {
|
|
|
473
507
|
// 更新表单数据
|
|
474
508
|
if (dateTimeRangePopup.value.field) {
|
|
475
509
|
updateFieldValue(dateTimeRangePopup.value.field.field, [startDateStr, endDateStr])
|
|
510
|
+
|
|
511
|
+
// 触发modelValue更新
|
|
512
|
+
emit('update:modelValue', snapshot())
|
|
476
513
|
}
|
|
477
514
|
// 关闭弹窗
|
|
478
515
|
closeDateTimeRange()
|
|
@@ -548,6 +585,10 @@ const onDateRangeConfirm = (values) => {
|
|
|
548
585
|
}
|
|
549
586
|
const [start, end] = values
|
|
550
587
|
updateFieldValue(dateRangePopup.value.field.field, [formatDate(start), formatDate(end)])
|
|
588
|
+
|
|
589
|
+
// 触发modelValue更新
|
|
590
|
+
emit('update:modelValue', snapshot())
|
|
591
|
+
|
|
551
592
|
closeDateRange()
|
|
552
593
|
}
|
|
553
594
|
|
|
@@ -598,6 +639,10 @@ const onAddressConfirm = ({ selectedOptions }) => {
|
|
|
598
639
|
county: county?.text || '',
|
|
599
640
|
code: county?.value || city?.value || province?.value || ''
|
|
600
641
|
})
|
|
642
|
+
|
|
643
|
+
// 触发modelValue更新
|
|
644
|
+
emit('update:modelValue', snapshot())
|
|
645
|
+
|
|
601
646
|
closeAddressPicker()
|
|
602
647
|
}
|
|
603
648
|
|
|
@@ -613,16 +658,32 @@ const openDateTime = (field) => {
|
|
|
613
658
|
dateTimePopup.value.visible = true
|
|
614
659
|
dateTimePopup.value.field = field
|
|
615
660
|
|
|
616
|
-
//
|
|
617
|
-
const
|
|
618
|
-
|
|
619
|
-
|
|
661
|
+
// 检查是否已有该字段的保存值
|
|
662
|
+
const savedTime = dateTimeValues.value[field.field]
|
|
663
|
+
|
|
664
|
+
// 检查表单数据中是否有该字段的值
|
|
665
|
+
const formValue = formData[field.field]
|
|
620
666
|
|
|
621
|
-
|
|
622
|
-
|
|
667
|
+
if (savedTime) {
|
|
668
|
+
// 如果已经有保存的时间,则使用保存的时间
|
|
669
|
+
dateTimePopup.value.selectedTime = new Date(savedTime)
|
|
670
|
+
} else if (formValue) {
|
|
671
|
+
// 如果表单数据中有该字段的值,则使用表单数据中的值
|
|
672
|
+
dateTimePopup.value.selectedTime = typeof formValue === 'string' ? reverseFormatDateTime(formValue) : new Date(formValue)
|
|
673
|
+
} else if (field.defaultValue) {
|
|
674
|
+
// 如果字段有默认值,则使用字段的默认值
|
|
675
|
+
dateTimePopup.value.selectedTime = typeof field.defaultValue === 'string' ? reverseFormatDateTime(field.defaultValue) : new Date(field.defaultValue)
|
|
676
|
+
} else {
|
|
677
|
+
// 否则设置默认时间为当天8:30
|
|
678
|
+
const today = new Date()
|
|
679
|
+
const defaultTime = new Date(today)
|
|
680
|
+
defaultTime.setHours(8, 30, 0, 0)
|
|
681
|
+
dateTimePopup.value.selectedTime = defaultTime
|
|
682
|
+
}
|
|
623
683
|
|
|
624
|
-
//
|
|
625
|
-
dateTimePopup.value.
|
|
684
|
+
// 更新当前小时值
|
|
685
|
+
const hours = dateTimePopup.value.selectedTime.getHours()
|
|
686
|
+
dateTimePopup.value.currentHour = hours.toString().padStart(2, '0')
|
|
626
687
|
}
|
|
627
688
|
|
|
628
689
|
const closeDateTime = () => {
|
|
@@ -637,9 +698,15 @@ const confirmDateTime = () => {
|
|
|
637
698
|
// 格式化日期时间
|
|
638
699
|
const dateTimeStr = formatDateTime(dateTimePopup.value.selectedTime)
|
|
639
700
|
|
|
640
|
-
//
|
|
701
|
+
// 保存当前字段的时间值
|
|
641
702
|
if (dateTimePopup.value.field) {
|
|
703
|
+
dateTimeValues.value[dateTimePopup.value.field.field] = new Date(dateTimePopup.value.selectedTime)
|
|
704
|
+
|
|
705
|
+
// 更新表单数据
|
|
642
706
|
updateFieldValue(dateTimePopup.value.field.field, dateTimeStr)
|
|
707
|
+
|
|
708
|
+
// 触发modelValue更新
|
|
709
|
+
emit('update:modelValue', snapshot())
|
|
643
710
|
}
|
|
644
711
|
|
|
645
712
|
// 关闭弹窗
|