|
@@ -7,57 +7,16 @@
|
|
layout="horizontal"
|
|
layout="horizontal"
|
|
size="small"
|
|
size="small"
|
|
>
|
|
>
|
|
- <FormItem
|
|
|
|
- v-for="item in formItems"
|
|
|
|
- :key="item.prop"
|
|
|
|
- :label="item.label"
|
|
|
|
- :name="item.prop"
|
|
|
|
- :rules="item.rules"
|
|
|
|
- >
|
|
|
|
- <template v-if="item.type === 'input'">
|
|
|
|
- <Input v-model:value="formModel[item.prop]" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else-if="item.type === 'select'">
|
|
|
|
- <Select v-model:value="formModel[item.prop]" :options="item.options" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else-if="item.type === 'inputnumber'">
|
|
|
|
- <InputNumber v-model:value="formModel[item.prop]" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else-if="item.type === 'image'">
|
|
|
|
- <Image v-model:value="formModel[item.prop]" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else-if="item.type === 'checkbox'">
|
|
|
|
- <Checkbox v-model:value="formModel[item.prop]" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else-if="item.type === 'backgroundSelect'">
|
|
|
|
- <BackgroundSelect v-model:background="formModel[item.prop]" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else-if="item.type === 'colorSelect'">
|
|
|
|
- <ColorSelect v-model:value="formModel[item.prop]" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else-if="item.type === 'radioGroup'">
|
|
|
|
- <ElRadioGroup v-model="formModel[item.prop]" size="small">
|
|
|
|
- <ElRadioButton v-for="option in item.options" :key="option.value" :value="option.value">
|
|
|
|
- {{ option.label }}
|
|
|
|
- </ElRadioButton>
|
|
|
|
- </ElRadioGroup>
|
|
|
|
- </template>
|
|
|
|
- <!--<template v-else-if="item.type === 'boderRadiusSelect'">
|
|
|
|
- <BoderRadiusSelect v-model="formModel[item.key]" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else-if="item.type === 'shodowSelect'">
|
|
|
|
- <ShodowSelect v-model="formModel[item.key]" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else-if="item.type === 'paddingSelect'">
|
|
|
|
- <PaddingSelect v-model="formModel[item.key]" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else-if="item.type === 'rotateSelect'">
|
|
|
|
- <RotateSelect v-model="formModel[item.key]" />
|
|
|
|
- </template>
|
|
|
|
- <template v-else-if="item.type === 'opacitySelect'">
|
|
|
|
- <OpacitySelect v-model="formModel[item.key]" />
|
|
|
|
- </template> -->
|
|
|
|
- </FormItem>
|
|
|
|
|
|
+ <template v-for="item in formItems" :key="item.prop">
|
|
|
|
+ <!-- 分组 -->
|
|
|
|
+ <Collapse v-if="item.type === 'group'">
|
|
|
|
+ <CollapsePanel :name="item.prop" :label="item.label">
|
|
|
|
+ <CusFormItem :item="item" v-model="formModel[item.prop]" />
|
|
|
|
+ </CollapsePanel>
|
|
|
|
+ </Collapse>
|
|
|
|
+ <!-- 单个表单项 -->
|
|
|
|
+ <CusFormItem v-else :item="item" v-model="formModel[item.prop]" />
|
|
|
|
+ </template>
|
|
</Form>
|
|
</Form>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -74,20 +33,10 @@ import {
|
|
} from "vue";
|
|
} from "vue";
|
|
import {
|
|
import {
|
|
Form,
|
|
Form,
|
|
- FormItem,
|
|
|
|
- Input,
|
|
|
|
- Select,
|
|
|
|
- InputNumber,
|
|
|
|
- Checkbox,
|
|
|
|
- Image,
|
|
|
|
|
|
+ Collapse,
|
|
|
|
+ CollapsePanel
|
|
} from "ant-design-vue";
|
|
} from "ant-design-vue";
|
|
-import {
|
|
|
|
- ElRadioGroup,
|
|
|
|
- ElRadioButton,
|
|
|
|
-} from "element-plus";
|
|
|
|
-
|
|
|
|
-import BackgroundSelect from "./BackgroundSelect.vue";
|
|
|
|
-import ColorSelect from "./ColorSelect.vue";
|
|
|
|
|
|
+import CusFormItem from "./CusFormItem.vue";
|
|
|
|
|
|
const props = defineProps<{
|
|
const props = defineProps<{
|
|
columns: IFormItem[];
|
|
columns: IFormItem[];
|
|
@@ -113,7 +62,15 @@ watch(
|
|
(val) => {
|
|
(val) => {
|
|
val &&
|
|
val &&
|
|
props.columns?.forEach((item) => {
|
|
props.columns?.forEach((item) => {
|
|
- formModel.value[item.prop] = item?.defaultValue;
|
|
|
|
|
|
+ // 设置表单初始值
|
|
|
|
+ if (item.type === "group") {
|
|
|
|
+ const children = item.children || [];
|
|
|
|
+ children.forEach((child) => {
|
|
|
|
+ formModel.value[child.prop] = child?.defaultValue;
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ formModel.value[item.prop] = item?.defaultValue;
|
|
|
|
+ }
|
|
});
|
|
});
|
|
},
|
|
},
|
|
{ immediate: true }
|
|
{ immediate: true }
|