|
@@ -24,14 +24,11 @@
|
|
|
:placeholder="field.placeholder || '请选择日期范围'" @change="handleDateChange" />
|
|
:placeholder="field.placeholder || '请选择日期范围'" @change="handleDateChange" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else-if="field.type === 'picker'">
|
|
<template v-else-if="field.type === 'picker'">
|
|
|
- <uni-data-picker
|
|
|
|
|
- v-model="formData[field.key]"
|
|
|
|
|
- :localdata="field.options"
|
|
|
|
|
|
|
+ <uni-data-picker v-model="formData[field.key]" :localdata="field.options"
|
|
|
:popup-title="field.popupTitle || t('State.All')"
|
|
:popup-title="field.popupTitle || t('State.All')"
|
|
|
:map="field.map || { value: 'value', text: 'label' }"
|
|
:map="field.map || { value: 'value', text: 'label' }"
|
|
|
@change="(e) => field.onChange?.(e)"
|
|
@change="(e) => field.onChange?.(e)"
|
|
|
- @nodeclick="(node) => field.onNodeClick?.(node)"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ @nodeclick="(node) => field.onNodeClick?.(node)" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else-if="field.type === 'number'">
|
|
<template v-else-if="field.type === 'number'">
|
|
|
<uni-easyinput v-model="formData[field.key]" type="number"
|
|
<uni-easyinput v-model="formData[field.key]" type="number"
|
|
@@ -97,14 +94,10 @@
|
|
|
:placeholder="field.placeholder || '请输入数字'" />
|
|
:placeholder="field.placeholder || '请输入数字'" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else-if="field.type === 'picker'">
|
|
<template v-else-if="field.type === 'picker'">
|
|
|
- <uni-data-picker
|
|
|
|
|
- v-model="tempFormData[field.key]"
|
|
|
|
|
- :localdata="field.options"
|
|
|
|
|
|
|
+ <uni-data-picker v-model="tempFormData[field.key]" :localdata="field.options"
|
|
|
:popup-title="field.popupTitle || t('State.All')"
|
|
:popup-title="field.popupTitle || t('State.All')"
|
|
|
:map="field.map || { value: 'value', text: 'label' }"
|
|
:map="field.map || { value: 'value', text: 'label' }"
|
|
|
- @change="(e) => field.onChange?.(e)"
|
|
|
|
|
- @nodeclick="(node) => field.onNodeClick?.(node)"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ @change="(e) => field.onChange?.(e)" @nodeclick="(node) => field.onNodeClick?.(node)" />
|
|
|
</template>
|
|
</template>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -210,6 +203,7 @@ const initFormData = () => {
|
|
|
})
|
|
})
|
|
|
formData.value = initial
|
|
formData.value = initial
|
|
|
tempFormData.value = JSON.parse(JSON.stringify(initial))
|
|
tempFormData.value = JSON.parse(JSON.stringify(initial))
|
|
|
|
|
+ handleSearch()
|
|
|
}
|
|
}
|
|
|
// 获取第一个日期或日期范围字段(用于移动端顶部快捷显示)
|
|
// 获取第一个日期或日期范围字段(用于移动端顶部快捷显示)
|
|
|
const dateField = computed(() => {
|
|
const dateField = computed(() => {
|
|
@@ -221,6 +215,8 @@ const shouldUseSelect = (field) => {
|
|
|
return field.options.length > 10 || field.isSelect === true
|
|
return field.options.length > 10 || field.isSelect === true
|
|
|
}
|
|
}
|
|
|
const handleDateChange = (value) => {
|
|
const handleDateChange = (value) => {
|
|
|
|
|
+ formData.value[dateField.value.key] = value
|
|
|
|
|
+ tempFormData.value[dateField.value.key] = value
|
|
|
// 日期变化时自动触发搜索
|
|
// 日期变化时自动触发搜索
|
|
|
handleSearch()
|
|
handleSearch()
|
|
|
}
|
|
}
|
|
@@ -274,11 +270,16 @@ watch(formData, (newVal) => {
|
|
|
const resetForm = () => {
|
|
const resetForm = () => {
|
|
|
const empty = {}
|
|
const empty = {}
|
|
|
props.fields.forEach(field => {
|
|
props.fields.forEach(field => {
|
|
|
|
|
+ // 有默认值 → 用默认值
|
|
|
if (field.defaultValue !== undefined) {
|
|
if (field.defaultValue !== undefined) {
|
|
|
empty[field.key] = field.defaultValue
|
|
empty[field.key] = field.defaultValue
|
|
|
- } else if (field.type === 'date' || field.type === 'daterange') {
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ // 日期字段 → 用默认日期
|
|
|
|
|
+ else if (field.type === 'date' || field.type === 'daterange') {
|
|
|
empty[field.key] = getDefaultDateValue(field)
|
|
empty[field.key] = getDefaultDateValue(field)
|
|
|
- } else {
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ // 无默认值 → 清空
|
|
|
|
|
+ else {
|
|
|
empty[field.key] = ''
|
|
empty[field.key] = ''
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
@@ -304,17 +305,21 @@ const closePopup = () => {
|
|
|
const resetTempForm = () => {
|
|
const resetTempForm = () => {
|
|
|
const empty = {}
|
|
const empty = {}
|
|
|
props.fields.forEach(field => {
|
|
props.fields.forEach(field => {
|
|
|
|
|
+ // 有默认值 → 用默认值
|
|
|
if (field.defaultValue !== undefined) {
|
|
if (field.defaultValue !== undefined) {
|
|
|
empty[field.key] = field.defaultValue
|
|
empty[field.key] = field.defaultValue
|
|
|
- } else if (field.type === 'date' || field.type === 'daterange') {
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ // 日期字段 → 用默认日期
|
|
|
|
|
+ else if (field.type === 'date' || field.type === 'daterange') {
|
|
|
empty[field.key] = getDefaultDateValue(field)
|
|
empty[field.key] = getDefaultDateValue(field)
|
|
|
- } else {
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ // 无默认值 → 清空
|
|
|
|
|
+ else {
|
|
|
empty[field.key] = ''
|
|
empty[field.key] = ''
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
tempFormData.value = empty
|
|
tempFormData.value = empty
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
const applyFilter = () => {
|
|
const applyFilter = () => {
|
|
|
// 将临时数据同步到正式表单
|
|
// 将临时数据同步到正式表单
|
|
|
formData.value = JSON.parse(JSON.stringify(tempFormData.value))
|
|
formData.value = JSON.parse(JSON.stringify(tempFormData.value))
|