fix: 日期组件:已选中默认值,显示类型在由 dates 切换 到其他类型,或其他类型切换到 dates 时 的报错导致整个设计器无响应

This commit is contained in:
TTTTian 2024-06-04 10:05:13 +00:00
parent 5849f15766
commit cf706a9e5b
2 changed files with 28 additions and 2 deletions

View File

@ -2,7 +2,7 @@
<form-item-wrapper :designer="designer" :field="field" :rules="rules" :design-state="designState" <form-item-wrapper :designer="designer" :field="field" :rules="rules" :design-state="designState"
:parent-widget="parentWidget" :parent-list="parentList" :index-of-parent-list="indexOfParentList" :parent-widget="parentWidget" :parent-list="parentList" :index-of-parent-list="indexOfParentList"
:sub-form-row-index="subFormRowIndex" :sub-form-col-index="subFormColIndex" :sub-form-row-id="subFormRowId"> :sub-form-row-index="subFormRowIndex" :sub-form-col-index="subFormColIndex" :sub-form-row-id="subFormRowId">
<el-date-picker ref="fieldEditor" :type="field.options.type" v-model="fieldModel" <el-date-picker ref="fieldEditor" :key="field.options.type" :type="field.options.type" v-model="fieldModel"
:class="[!!field.options.autoFullWidth ? 'auto-full-width' : '']" :class="[!!field.options.autoFullWidth ? 'auto-full-width' : '']"
:readonly="field.options.readonly" :disabled="field.options.disabled" :readonly="field.options.readonly" :disabled="field.options.disabled"
:size="widgetSize" :size="widgetSize"
@ -63,6 +63,19 @@
}, },
computed: { computed: {
},
watch: {
'field.options.type': {
deep: true,
handler(val, oldVal){
if (val === 'dates' && oldVal !== 'dates'){
this.fieldModel = [this.fieldModel]
}
if (val !== 'dates' && oldVal === 'dates'){
this.fieldModel = this.fieldModel[0]
}
},
}
}, },
beforeCreate() { beforeCreate() {
/* 这里不能访问方法和属性!! */ /* 这里不能访问方法和属性!! */

View File

@ -1,6 +1,6 @@
<template> <template>
<el-form-item :label="i18nt('designer.setting.defaultValue')"> <el-form-item :label="i18nt('designer.setting.defaultValue')">
<el-date-picker :type="optionModel.type" v-model="optionModel.defaultValue" @change="emitDefaultValueChange" <el-date-picker :key="optionModel.type" :type="optionModel.type" v-model="optionModel.defaultValue" @change="emitDefaultValueChange"
:format="optionModel.format" :value-format="optionModel.valueFormat" style="width: 100%"> :format="optionModel.format" :value-format="optionModel.valueFormat" style="width: 100%">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
@ -18,6 +18,19 @@
selectedWidget: Object, selectedWidget: Object,
optionModel: Object, optionModel: Object,
}, },
watch: {
'optionModel.type': {
deep: true,
handler(val, oldVal){
if (val === 'dates' && oldVal !== 'dates'){
this.optionModel.defaultValue = [this.optionModel.defaultValue]
}
if (val !== 'dates' && oldVal === 'dates'){
this.optionModel.defaultValue = this.optionModel.defaultValue[0]
}
},
}
},
} }
</script> </script>