|
@ -3,8 +3,8 @@ |
|
|
<template v-for="(item, index) in formList"> |
|
|
<template v-for="(item, index) in formList"> |
|
|
<ElFormItem class="formItem" :rules="getRules(item)" v-if="formItemVisible(item)" :key="item.key" |
|
|
<ElFormItem class="formItem" :rules="getRules(item)" v-if="formItemVisible(item)" :key="item.key" |
|
|
:label="item.label" :style="gridStyle(item, index)"> |
|
|
:label="item.label" :style="gridStyle(item, index)"> |
|
|
<slot :name="item.key" :data="item" :formData="formData"> |
|
|
<slot :name="item.key" :data="item" :formData="modelFormData"> |
|
|
<component :is="getComponent(item.type)" v-bind="getBindData(item)" v-model="formData[item.key]" |
|
|
<component :is="getComponent(item.type)" v-bind="getBindData(item)" v-model="modelFormData[item.key]" |
|
|
v-on="resolveListeners(item.ons)" /> |
|
|
v-on="resolveListeners(item.ons)" /> |
|
|
</slot> |
|
|
</slot> |
|
|
</ElFormItem> |
|
|
</ElFormItem> |
|
@ -67,15 +67,28 @@ export default { |
|
|
default: "3" |
|
|
default: "3" |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
model: { |
|
|
|
|
|
prop: 'value', |
|
|
|
|
|
event: "update:value" |
|
|
|
|
|
}, |
|
|
data() { |
|
|
data() { |
|
|
return { |
|
|
return { |
|
|
formData: {} |
|
|
formData: this.value || {} |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
created() { |
|
|
created() { |
|
|
this.reset(); |
|
|
this.reset(); |
|
|
}, |
|
|
}, |
|
|
computed: { |
|
|
computed: { |
|
|
|
|
|
modelFormData: { |
|
|
|
|
|
get() { |
|
|
|
|
|
return this.formData; |
|
|
|
|
|
}, |
|
|
|
|
|
set(data) { |
|
|
|
|
|
this.formData = data; |
|
|
|
|
|
this.$emit('update:value', this.formData); |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
gridStyle() { |
|
|
gridStyle() { |
|
|
return (item, index) => ({ |
|
|
return (item, index) => ({ |
|
|
gridRow: `span ${item.gridRow || 1}`, |
|
|
gridRow: `span ${item.gridRow || 1}`, |
|
@ -84,7 +97,7 @@ export default { |
|
|
}, |
|
|
}, |
|
|
formItemVisible() { |
|
|
formItemVisible() { |
|
|
return item => { |
|
|
return item => { |
|
|
const result = item.visible ? item.visible(this.formData) : true; |
|
|
const result = item.visible ? item.visible(this.modelFormData) : true; |
|
|
|
|
|
|
|
|
// if (!result) { |
|
|
// if (!result) { |
|
|
// delete this.formData[item.key]; |
|
|
// delete this.formData[item.key]; |
|
@ -102,13 +115,13 @@ export default { |
|
|
const result = {}; |
|
|
const result = {}; |
|
|
|
|
|
|
|
|
for (const key in callbacks) { |
|
|
for (const key in callbacks) { |
|
|
result[key] = (...args) => callbacks[key](...args, this.formData, this) |
|
|
result[key] = (...args) => callbacks[key](...args, this.modelFormData, this) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return result |
|
|
return result |
|
|
}, |
|
|
}, |
|
|
reset() { |
|
|
reset() { |
|
|
return this.formData = reduceDefaultValue(this.formList); |
|
|
return this.modelFormData = reduceDefaultValue(this.formList); |
|
|
}, |
|
|
}, |
|
|
getStyle() { |
|
|
getStyle() { |
|
|
return { |
|
|
return { |
|
|