|
|
@@ -21,6 +21,8 @@ |
|
|
|
<!-- 通过多个 col === null 可以控制更灵活的 span 大小 --> |
|
|
|
<el-form-item v-if="col !== null" :label="col.label" :prop="col.prop" :rules="col.rules || null"> |
|
|
|
<el-input v-if="col.input" v-model="dataForm[col.prop]" clearable :disabled="detailMode" v-bind="col.elparams" /> |
|
|
|
<el-input v-if="col.forceDisabled && col.eraseOnSubmit" v-model="shadowDataForm[col.prop]" disabled v-bind="col.elparams" /> |
|
|
|
<el-input v-if="col.forceDisabled && !col.eraseOnSubmit" v-model="dataForm[col.prop]" disabled v-bind="col.elparams" /> |
|
|
|
<el-cascader |
|
|
|
v-if="col.cascader" |
|
|
|
v-model="dataForm[col.prop]" |
|
|
@@ -130,10 +132,17 @@ export default { |
|
|
|
inject: ["urls"], |
|
|
|
data() { |
|
|
|
const dataForm = {}; |
|
|
|
const shadowDataForm = {}; |
|
|
|
const savedDatalist = {}; |
|
|
|
|
|
|
|
this.configs.form.rows.forEach((row) => { |
|
|
|
row.forEach((col) => { |
|
|
|
if (col.prop) dataForm[col.prop] = col.default ?? null; |
|
|
|
if (!col.eraseOnSubmit && col.prop) dataForm[col.prop] = col.default ?? null; |
|
|
|
else shadowDataForm[col.prop] = col.default ?? null; |
|
|
|
|
|
|
|
if ("autoUpdateProp" in col) { |
|
|
|
savedDatalist[col.prop] = []; |
|
|
|
} |
|
|
|
|
|
|
|
if (col.fetchData) |
|
|
|
col.fetchData().then(({ data: res }) => { |
|
|
@@ -148,6 +157,10 @@ export default { |
|
|
|
value: col.optionValue ? i[col.optionValue] : i.id, |
|
|
|
})) |
|
|
|
); |
|
|
|
|
|
|
|
if ("autoUpdateProp" in col) { |
|
|
|
this.$set(savedDatalist, col.prop, res.data.list); |
|
|
|
} |
|
|
|
} else if (Array.isArray(res.data)) { |
|
|
|
this.$set( |
|
|
|
col, |
|
|
@@ -157,6 +170,9 @@ export default { |
|
|
|
value: col.optionValue ? i[col.optionValue] : i.id, |
|
|
|
})) |
|
|
|
); |
|
|
|
if ("autoUpdateProp" in col) { |
|
|
|
this.$set(savedDatalist, col.prop, res.data); |
|
|
|
} |
|
|
|
} |
|
|
|
// col.options = res.data.list; |
|
|
|
} else { |
|
|
@@ -184,6 +200,8 @@ export default { |
|
|
|
return { |
|
|
|
loadingStatus: false, |
|
|
|
dataForm, |
|
|
|
shadowDataForm, |
|
|
|
savedDatalist, |
|
|
|
detailMode: false, |
|
|
|
baseDialogConfig: null, |
|
|
|
defaultQuillConfig: { |
|
|
@@ -258,6 +276,9 @@ export default { |
|
|
|
if (excludeId && key === "id") return; |
|
|
|
this.dataForm[key] = null; |
|
|
|
}); |
|
|
|
Object.keys(this.shadowDataForm).forEach((key) => { |
|
|
|
this.shadowDataForm[key] = null; |
|
|
|
}); |
|
|
|
console.log("[DialogJustForm resetForm()] clearing form..."); |
|
|
|
this.$refs.dataForm.clearValidate(); |
|
|
|
this.$emit("dialog-closed"); // 触发父组件销毁自己 |
|
|
@@ -332,7 +353,12 @@ export default { |
|
|
|
|
|
|
|
/** handlers */ |
|
|
|
handleSelectChange(col, eventValue) { |
|
|
|
// console.log("[dialog] select change: ", col, eventValue); |
|
|
|
if ("autoUpdateProp" in col) { |
|
|
|
// 自动更新 相关联 的字段 |
|
|
|
// console.log(col.options, eventValue, this.savedDatalist); |
|
|
|
const item = this.savedDatalist[col.prop].find(item => item.id === eventValue) |
|
|
|
this.shadowDataForm[col.autoUpdateProp] = item.cate ?? null |
|
|
|
} |
|
|
|
this.$forceUpdate(); |
|
|
|
}, |
|
|
|
|
|
|
|