|
|
@ -2,6 +2,7 @@ |
|
|
|
* @Description: 右侧属性面板控件 表单属性面板 |
|
|
|
* @Description: 右侧属性面板控件 表单属性面板 |
|
|
|
--> |
|
|
|
--> |
|
|
|
<script lang="ts" setup> |
|
|
|
<script lang="ts" setup> |
|
|
|
|
|
|
|
import { computed } from 'vue' |
|
|
|
import type { RadioChangeEvent } from 'ant-design-vue' |
|
|
|
import type { RadioChangeEvent } from 'ant-design-vue' |
|
|
|
import { |
|
|
|
import { |
|
|
|
Checkbox, |
|
|
|
Checkbox, |
|
|
@ -9,11 +10,12 @@ import { |
|
|
|
Form, |
|
|
|
Form, |
|
|
|
FormItem, |
|
|
|
FormItem, |
|
|
|
InputNumber, |
|
|
|
InputNumber, |
|
|
|
Radio, |
|
|
|
|
|
|
|
Slider, |
|
|
|
Slider, |
|
|
|
} from 'ant-design-vue' |
|
|
|
} from 'ant-design-vue' |
|
|
|
import { useFormDesignState } from '../../../hooks/useFormDesignState' |
|
|
|
import { useFormDesignState } from '../../../hooks/useFormDesignState' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
defineOptions({ name: 'FormProps' }) |
|
|
|
|
|
|
|
|
|
|
|
const { formConfig } = useFormDesignState() |
|
|
|
const { formConfig } = useFormDesignState() |
|
|
|
|
|
|
|
|
|
|
|
formConfig.value = formConfig.value || { |
|
|
|
formConfig.value = formConfig.value || { |
|
|
@ -21,10 +23,17 @@ formConfig.value = formConfig.value || { |
|
|
|
wrapperCol: { span: 24 }, |
|
|
|
wrapperCol: { span: 24 }, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function lableLayoutChange(e: RadioChangeEvent) { |
|
|
|
function labelLayoutChange(e: RadioChangeEvent) { |
|
|
|
if (e.target.value === 'Grid') |
|
|
|
if (e.target.value === 'Grid') |
|
|
|
formConfig.value.layout = 'horizontal' |
|
|
|
formConfig.value.layout = 'horizontal' |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const sliderSpan = computed(() => { |
|
|
|
|
|
|
|
if (formConfig.value.labelLayout) |
|
|
|
|
|
|
|
return Number(formConfig.value.labelCol!.span) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return 0 |
|
|
|
|
|
|
|
}) |
|
|
|
</script> |
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
<template> |
|
|
|
<template> |
|
|
@ -33,33 +42,33 @@ function lableLayoutChange(e: RadioChangeEvent) { |
|
|
|
<!-- <e-upload v-model="fileList"></e-upload> --> |
|
|
|
<!-- <e-upload v-model="fileList"></e-upload> --> |
|
|
|
|
|
|
|
|
|
|
|
<FormItem label="表单布局"> |
|
|
|
<FormItem label="表单布局"> |
|
|
|
<Radio.Group v-model:value="formConfig.layout" button-style="solid"> |
|
|
|
<RadioGroup v-model:value="formConfig.layout" button-style="solid"> |
|
|
|
<Radio.Button value="horizontal"> |
|
|
|
<RadioButton value="horizontal"> |
|
|
|
水平 |
|
|
|
水平 |
|
|
|
</Radio.Button> |
|
|
|
</RadioButton> |
|
|
|
<Radio.Button value="vertical" :disabled="formConfig.labelLayout === 'Grid'"> |
|
|
|
<RadioButton value="vertical" :disabled="formConfig.labelLayout === 'Grid'"> |
|
|
|
垂直 |
|
|
|
垂直 |
|
|
|
</Radio.Button> |
|
|
|
</RadioButton> |
|
|
|
<Radio.Button value="inline" :disabled="formConfig.labelLayout === 'Grid'"> |
|
|
|
<RadioButton value="inline" :disabled="formConfig.labelLayout === 'Grid'"> |
|
|
|
行内 |
|
|
|
行内 |
|
|
|
</Radio.Button> |
|
|
|
</RadioButton> |
|
|
|
</Radio.Group> |
|
|
|
</RadioGroup> |
|
|
|
</FormItem> |
|
|
|
</FormItem> |
|
|
|
|
|
|
|
|
|
|
|
<!-- <Row> --> |
|
|
|
<!-- <Row> --> |
|
|
|
<FormItem label="标签布局"> |
|
|
|
<FormItem label="标签布局"> |
|
|
|
<Radio.Group |
|
|
|
<RadioGroup |
|
|
|
v-model:value="formConfig.labelLayout" |
|
|
|
v-model:value="formConfig.labelLayout" |
|
|
|
button-style="solid" |
|
|
|
button-style="solid" |
|
|
|
@change="lableLayoutChange" |
|
|
|
@change="labelLayoutChange" |
|
|
|
> |
|
|
|
> |
|
|
|
<Radio.Button value="flex"> |
|
|
|
<RadioButton value="flex"> |
|
|
|
固定 |
|
|
|
固定 |
|
|
|
</Radio.Button> |
|
|
|
</RadioButton> |
|
|
|
<Radio.Button value="Grid" :disabled="formConfig.layout !== 'horizontal'"> |
|
|
|
<RadioButton value="Grid" :disabled="formConfig.layout !== 'horizontal'"> |
|
|
|
栅格 |
|
|
|
栅格 |
|
|
|
</Radio.Button> |
|
|
|
</RadioButton> |
|
|
|
</Radio.Group> |
|
|
|
</RadioGroup> |
|
|
|
</FormItem> |
|
|
|
</FormItem> |
|
|
|
<!-- </Row> --> |
|
|
|
<!-- </Row> --> |
|
|
|
<FormItem v-show="formConfig.labelLayout === 'flex'" label="标签宽度(px)"> |
|
|
|
<FormItem v-show="formConfig.labelLayout === 'flex'" label="标签宽度(px)"> |
|
|
@ -72,35 +81,35 @@ function lableLayoutChange(e: RadioChangeEvent) { |
|
|
|
</FormItem> |
|
|
|
</FormItem> |
|
|
|
<div v-if="formConfig.labelLayout === 'Grid'"> |
|
|
|
<div v-if="formConfig.labelLayout === 'Grid'"> |
|
|
|
<FormItem label="labelCol"> |
|
|
|
<FormItem label="labelCol"> |
|
|
|
<Slider v-model:value="formConfig.labelCol!.span" :max="24" /> |
|
|
|
<Slider v-model:value="sliderSpan" :max="24" /> |
|
|
|
</FormItem> |
|
|
|
</FormItem> |
|
|
|
<FormItem label="wrapperCol"> |
|
|
|
<FormItem label="wrapperCol"> |
|
|
|
<Slider v-model:value="formConfig.wrapperCol!.span" :max="24" /> |
|
|
|
<Slider v-model:value="sliderSpan" :max="24" /> |
|
|
|
</FormItem> |
|
|
|
</FormItem> |
|
|
|
|
|
|
|
|
|
|
|
<FormItem label="标签对齐"> |
|
|
|
<FormItem label="标签对齐"> |
|
|
|
<Radio.Group v-model:value="formConfig.labelAlign" button-style="solid"> |
|
|
|
<RadioGroup v-model:value="formConfig.labelAlign" button-style="solid"> |
|
|
|
<Radio.Button value="left"> |
|
|
|
<RadioButton value="left"> |
|
|
|
靠左 |
|
|
|
靠左 |
|
|
|
</Radio.Button> |
|
|
|
</RadioButton> |
|
|
|
<Radio.Button value="right"> |
|
|
|
<RadioButton value="right"> |
|
|
|
靠右 |
|
|
|
靠右 |
|
|
|
</Radio.Button> |
|
|
|
</RadioButton> |
|
|
|
</Radio.Group> |
|
|
|
</RadioGroup> |
|
|
|
</FormItem> |
|
|
|
</FormItem> |
|
|
|
|
|
|
|
|
|
|
|
<FormItem label="控件大小"> |
|
|
|
<FormItem label="控件大小"> |
|
|
|
<Radio.Group v-model:value="formConfig.size" button-style="solid"> |
|
|
|
<RadioGroup v-model:value="formConfig.size" button-style="solid"> |
|
|
|
<Radio.Button value="default"> |
|
|
|
<RadioButton value="default"> |
|
|
|
默认 |
|
|
|
默认 |
|
|
|
</Radio.Button> |
|
|
|
</RadioButton> |
|
|
|
<Radio.Button value="small"> |
|
|
|
<RadioButton value="small"> |
|
|
|
小 |
|
|
|
小 |
|
|
|
</Radio.Button> |
|
|
|
</RadioButton> |
|
|
|
<Radio.Button value="large"> |
|
|
|
<RadioButton value="large"> |
|
|
|
大 |
|
|
|
大 |
|
|
|
</Radio.Button> |
|
|
|
</RadioButton> |
|
|
|
</Radio.Group> |
|
|
|
</RadioGroup> |
|
|
|
</FormItem> |
|
|
|
</FormItem> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<FormItem label="表单属性"> |
|
|
|
<FormItem label="表单属性"> |
|
|
|