Skip to content

Commit

Permalink
fixbug: from
Browse files Browse the repository at this point in the history
  • Loading branch information
jsxiaosi committed Jan 20, 2022
1 parent d29c886 commit 9b005ad
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 32 deletions.
20 changes: 12 additions & 8 deletions src/components/Form/src/components/FormItem.vue
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,15 @@
function renderComponent() {
// const Comp = componentMap.get(formItem.component) as ReturnType<typeof defineComponent>;
const Comp = resolveComponent(formItem.component) as ReturnType<typeof defineComponent>;
return (
<Comp v-model={formModel[formItem.prop]} {...formItem.props}>
{childrenComponent()}
</Comp>
);
if (elComponentItem[formItem.component]) {
return (
<Comp v-model={formModel[formItem.prop]} {...formItem.props}>
{childrenComponent()}
</Comp>
);
} else {
return <Comp v-model={formModel[formItem.prop]} {...formItem.props} />;
}
}
function childrenComponent() {
Expand All @@ -47,7 +51,7 @@
</>
);
} else {
return null;
return;
}
}
Expand All @@ -66,11 +70,11 @@
return () => {
const { formItem } = props;
const { prop, render, rules, label, isSlot } = formItem;
const { prop, render, rules, label } = formItem;
const values = { formModel: formModel, formItem: formItem };
const solfn = getSlot(slots, prop, values);
const getContent = () => {
return isSlot ? solfn : render ? render(values) : renderComponent();
return solfn ? solfn : render ? render(values) : renderComponent();
};
return (
<el-form-item label={label} prop={prop} rules={rules}>
Expand Down
2 changes: 0 additions & 2 deletions src/components/Form/types/from.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ export interface FormItemProps {
* @param(component) 组件名称,ElInput,ElSelect
* @param(label) 标签名
* @param(prop) form表单双向绑定字段
* @param(isSlot) 是否自定义内容
* @param(props) 组件属性
* @param(rules) 表单校验
* @param(childrenComponent) 子组件属性 类似ElSelect、ElCheckboxGroup、ElRadioGroup等组件
Expand All @@ -28,7 +27,6 @@ export interface FormItemListProps {
component: string;
label: string;
prop: string;
isSlot?: boolean;
props?: object;
rules?: object | Array<object>;
childrenComponent?: {
Expand Down
1 change: 1 addition & 0 deletions src/styles/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ div:focus {
ul {
list-style-type: none;
padding: 0;
margin: 0;
}

@for $i from 1 to 6 {
Expand Down
34 changes: 12 additions & 22 deletions src/views/components/form/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,6 @@
placeholder="自定义输入框"
></el-input>
</template>
<template #dateTime="{ formModel, formItem }">
<el-date-picker
v-model="formModel[formItem.prop]"
type="datetimerange"
range-separator="To"
start-placeholder="Start date"
end-placeholder="End date"
></el-date-picker>
</template>
<template #cascader="{ formModel, formItem }">
<el-cascader
v-model="formModel[formItem.prop]"
:options="cascaderOptions"
type="datetimerange"
range-separator="To"
start-placeholder="Start date"
end-placeholder="End date"
/>
</template>
</Form>
</div>
</template>
Expand Down Expand Up @@ -331,13 +312,23 @@
{
component: 'ElDatePicker',
label: '时间选择器',
isSlot: true,
prop: 'dateTime',
props: {
type: 'datetimerange',
rangeSeparator: 'To',
startPlaceholder: 'Start date',
endPlaceholder: 'End date',
},
},
{
component: 'ElCascader',
label: '多级选择器',
isSlot: true,
props: {
options: cascaderOptions,
onVisibleChange: (e: any) => {
console.log(e);
},
},
prop: 'cascader',
},
],
Expand Down Expand Up @@ -389,7 +380,6 @@
component: 'ElInput',
label: 'slot组件',
prop: 'slotInput',
isSlot: true,
rules: [{ required: true, type: 'string' }],
},
{
Expand Down

0 comments on commit 9b005ad

Please sign in to comment.