123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- <template>
- <div class="card content-box">
- <ProForm :items-options="items" :model="model">
- <template #username1="{ formModel }">
- <el-input v-model="formModel.username1" />
- </template>
- <template #transfer1="{ formModel }">
- <el-transfer v-model="formModel.transfer1" :data="dataT" />
- </template>
- </ProForm>
- </div>
- </template>
- <script setup lang="ts" name="Index">
- import ProForm from '@/components/ProForm/index.vue'
- let model = {
- username: 'ssss',
- username1: '自定义的插槽',
- sdsds: '1',
- sdssssds: ['1']
- }
- const initials = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
- const optionsData = Array.from({ length: 1000 }).map((_, idx) => ({
- value: `Option ${idx + 1}`,
- label: `${initials[idx % 10]}${idx}`
- }))
- const dataT = [
- {
- key: 1,
- label: '社么',
- disabled: false
- },
- {
- key: 2,
- label: 'wan',
- disabled: false
- },
- {
- key: 3,
- label: '伊尔',
- disabled: true
- }
- ]
- const treeData = [
- {
- label: '选项1',
- value: '1',
- children: [
- {
- label: '选项1-1',
- value: '1-1'
- },
- {
- label: '选项1-2',
- value: '1-2'
- }
- ]
- },
- {
- label: '选项2',
- value: '2'
- }
- ]
- const enumData = [
- {
- label: '选项1',
- value: '1'
- },
- {
- label: '选项2',
- value: '2'
- },
- {
- label: '选项3',
- value: '3'
- }
- ]
- let items: ProForm.ItemsOptions[] = [
- {
- label: '单行输入框',
- prop: 'username',
- rules: [{ required: true, message: '请选择步长', trigger: 'blur' }],
- compOptions: {
- elTagName: 'input',
- clearable: true,
- placeholder: '请输入用户名'
- }
- },
- {
- label: '多行输入框',
- prop: 'usernames',
- rules: [{ required: true, message: '请选择步长', trigger: 'blur' }],
- compOptions: {
- elTagName: 'input',
- type: 'textarea',
- clearable: true,
- placeholder: '请输入用户名'
- }
- },
- {
- label: '插槽',
- prop: 'username1',
- required: true,
- tooltip: '这是自定义插槽',
- compOptions: {
- elTagName: 'slot',
- clearable: true,
- placeholder: '请输入用户名'
- }
- },
- {
- label: '单选',
- prop: 'sdsds',
- required: true,
- compOptions: {
- elTagName: 'radio-group',
- enum: enumData
- }
- },
- {
- label: '复选',
- prop: 'sdssssds',
- required: true,
- compOptions: {
- elTagName: 'checkbox-group',
- enum: enumData
- }
- },
- {
- label: '下拉',
- prop: 'select',
- required: true,
- compOptions: {
- elTagName: 'select',
- enum: enumData
- }
- },
- {
- label: '下拉树',
- prop: 'treeSelect',
- required: true,
- compOptions: {
- elTagName: 'tree-select',
- enum: treeData
- }
- },
- {
- label: '虚拟下拉',
- prop: 'selectV2',
- required: true,
- compOptions: {
- elTagName: 'select-v2',
- enum: optionsData
- }
- },
- {
- label: '级联',
- prop: 'jilian',
- compOptions: {
- elTagName: 'cascader',
- enum: treeData,
- props: {
- expandTrigger: 'hover' as const
- }
- }
- },
- {
- label: '日期',
- prop: 'datePicker',
- compOptions: {
- elTagName: 'date-picker',
- type: 'date'
- }
- },
- {
- label: '日期范围',
- prop: 'datePicker',
- compOptions: {
- elTagName: 'date-picker',
- type: 'daterange',
- rangeSeparator: 'To',
- startPlaceholder: 'Start date',
- endPlaceholder: 'End date'
- }
- },
- {
- label: '数字框',
- prop: 'iNumber',
- compOptions: {
- elTagName: 'input-number',
- min: 1
- }
- },
- {
- label: '评分',
- prop: 'rate',
- compOptions: {
- elTagName: 'rate'
- }
- },
- {
- label: '滑块',
- prop: 'slider',
- compOptions: {
- elTagName: 'slider',
- step: 10
- }
- },
- {
- label: '开关',
- prop: 'switch',
- compOptions: {
- elTagName: 'switch'
- }
- },
- {
- label: '时间选择器',
- prop: 'timePicker',
- compOptions: {
- elTagName: 'time-picker'
- }
- },
- {
- label: '时间下拉',
- prop: 'timeSelect',
- compOptions: {
- elTagName: 'time-select'
- }
- },
- {
- label: '穿梭框',
- prop: 'transfer1',
- compOptions: {
- elTagName: 'slot'
- }
- }
- ]
- </script>
- <style scoped lang="scss"></style>
|