299 lines
7.5 KiB
Vue
299 lines
7.5 KiB
Vue
<template>
|
|
<div style="width: 1024px">
|
|
<DynamicsForm
|
|
v-model="form_data"
|
|
:model="form_data"
|
|
:render_data="damo_data"
|
|
ref="dynamicsFormRef"
|
|
>
|
|
<template #default="scope">
|
|
<el-form-item label="其他字段">
|
|
<el-input v-model="scope.form_value['zha']" /> </el-form-item
|
|
></template>
|
|
</DynamicsForm>
|
|
<el-button @click="click">点我校验</el-button>
|
|
</div>
|
|
</template>
|
|
<script setup lang="ts">
|
|
import type { FormField } from '@/components/dynamics-form/type'
|
|
import DynamicsForm from '@/components/dynamics-form/index.vue'
|
|
import { ref } from 'vue'
|
|
import type { Dict } from '@/api/type/common'
|
|
|
|
const damo_data: Array<FormField> = [
|
|
{ field: 'name', input_type: 'PasswordInput', label: '用戶名', required: false },
|
|
{
|
|
field: 'array_object_card_field',
|
|
input_type: 'ArrayObjectCard',
|
|
label: '測試',
|
|
trigger_type: 'CHILD_FORMS',
|
|
attrs: { 'label-width': '120px', 'label-suffix': ':ssss', 'label-position': 'top' },
|
|
required: false,
|
|
children: [
|
|
{ field: 'name1', input_type: 'TextInput', label: '用戶名1' },
|
|
{ field: 'name2', input_type: 'TextInput', label: '用戶名2' },
|
|
{ field: 'name3', input_type: 'TextInput', label: '用戶名3' }
|
|
]
|
|
},
|
|
{
|
|
field: 'maxkb_tokens',
|
|
input_type: 'Slider',
|
|
default_value: 1,
|
|
attrs: {
|
|
min: 0,
|
|
max: 10,
|
|
step: 1,
|
|
precision: 1,
|
|
'show-input-controls': false,
|
|
'show-input': true
|
|
},
|
|
label: { label: '温度', attrs: { tooltip: 'sss' }, input_type: 'TooltipLabel' }
|
|
},
|
|
{
|
|
field: 'object_card_field',
|
|
input_type: 'ObjectCard',
|
|
label: '測試',
|
|
trigger_type: 'CHILD_FORMS',
|
|
attrs: { 'label-width': '120px', 'label-suffix': ':ssss', 'label-position': 'left' },
|
|
required: false,
|
|
children: [
|
|
{ field: 'name1', input_type: 'TextInput', label: '用戶名1' },
|
|
{ field: 'name2', input_type: 'TextInput', label: '用戶名2' },
|
|
{ field: 'name3', input_type: 'TextInput', label: '用戶名3' }
|
|
]
|
|
},
|
|
{
|
|
field: 'tab_card_field',
|
|
input_type: 'TabCard',
|
|
label: '測試',
|
|
trigger_type: 'CHILD_FORMS',
|
|
attrs: { 'label-width': '120px', 'label-suffix': ':ssss', 'label-position': 'left' },
|
|
required: false,
|
|
relation_trigger_field_dict: {
|
|
'array_object_card_field.0.name1': ['111']
|
|
},
|
|
props_info: { tabs_label: '用户' },
|
|
children: [
|
|
{ field: 'name1', input_type: 'TextInput', label: '用戶名1' },
|
|
{ field: 'name2', input_type: 'TextInput', label: '用戶名2' },
|
|
{ field: 'name3', input_type: 'TextInput', label: '用戶名3' }
|
|
]
|
|
},
|
|
{
|
|
field: 'single_select_field',
|
|
input_type: 'SingleSelect',
|
|
label: '测试单选',
|
|
required: true,
|
|
attrs: { placeholder: '请选择' },
|
|
option_list: [
|
|
{
|
|
key: '测试',
|
|
value: 'test'
|
|
},
|
|
{
|
|
key: '测试1',
|
|
value: 'test1'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
field: 'multi_select_field',
|
|
input_type: 'MultiSelect',
|
|
default_value: ['test1'],
|
|
relation_show_field_dict: {
|
|
'object_card_field.name1': []
|
|
},
|
|
label: '测试多选下拉',
|
|
required: true,
|
|
attrs: { placeholder: '请选择' },
|
|
option_list: [
|
|
{
|
|
key: '测试',
|
|
value: 'test'
|
|
},
|
|
{
|
|
key: '测试1',
|
|
value: 'test1'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
field: 'radio_field',
|
|
input_type: 'Radio',
|
|
label: '测试单选',
|
|
required: true,
|
|
attrs: { placeholder: '请选择' },
|
|
option_list: [
|
|
{
|
|
key: '测试',
|
|
value: 'test'
|
|
},
|
|
{
|
|
key: '测试1',
|
|
value: 'test1'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
field: 'radio_button_field',
|
|
input_type: 'RadioButton',
|
|
label: '测试单选',
|
|
required: true,
|
|
attrs: { placeholder: '请选择' },
|
|
option_list: [
|
|
{
|
|
key: '测试',
|
|
value: 'test'
|
|
},
|
|
{
|
|
key: '测试1',
|
|
value: 'test1'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
field: 'radio_card_field',
|
|
input_type: 'RadioCard',
|
|
label: '测试单选1',
|
|
required: true,
|
|
attrs: { placeholder: '请选择' },
|
|
option_list: [
|
|
{
|
|
key: '测试',
|
|
value: 'test'
|
|
},
|
|
{
|
|
key: '测试111111',
|
|
value: 'test1'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
field: 'table_radio_field',
|
|
input_type: 'TableRadio',
|
|
label: '表格单选',
|
|
required: true,
|
|
attrs: { placeholder: '请选择' },
|
|
props_info: {
|
|
active_msg: '当前选中',
|
|
table_columns: [
|
|
{
|
|
property: '`${row.key}${row.number}`',
|
|
label: '名称',
|
|
type: 'eval'
|
|
},
|
|
{
|
|
property: 'ProgressTableItem',
|
|
label: '数值',
|
|
type: 'component',
|
|
value_field: 'number',
|
|
attrs: {
|
|
color: [
|
|
{ color: '#f56c6c', percentage: 20 },
|
|
{ color: '#e6a23c', percentage: 40 },
|
|
{ color: '#5cb87a', percentage: 60 },
|
|
{ color: '#1989fa', percentage: 80 },
|
|
{ color: '#6f7ad3', percentage: 100 }
|
|
]
|
|
},
|
|
props_info: {
|
|
view_card: [
|
|
{
|
|
type: 'eval',
|
|
title: '测试',
|
|
value_field:
|
|
'`${parseFloat(row.number).toLocaleString("zh-CN",{style: "decimal",maximumFractionDigits:1})}% `'
|
|
},
|
|
{
|
|
type: 'eval',
|
|
title: '名称',
|
|
value_field: '`${row.key} `'
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
style: { width: '500px' }
|
|
},
|
|
option_list: [
|
|
{
|
|
key: '测试',
|
|
value: 'test',
|
|
number: 10
|
|
},
|
|
{
|
|
key: '测试111111',
|
|
value: 'test1',
|
|
number: 100
|
|
}
|
|
]
|
|
},
|
|
{
|
|
field: 'table_checkbox_field',
|
|
input_type: 'TableCheckbox',
|
|
label: '表格多选',
|
|
required: true,
|
|
attrs: { placeholder: '请选择' },
|
|
props_info: {
|
|
active_msg: '当前选中',
|
|
table_columns: [
|
|
{
|
|
property: '`${row.key}${row.number}`',
|
|
label: '名称',
|
|
type: 'eval'
|
|
},
|
|
{
|
|
property: 'ProgressTableItem',
|
|
label: '数值',
|
|
type: 'component',
|
|
value_field: 'number',
|
|
attrs: {
|
|
color: [
|
|
{ color: '#f56c6c', percentage: 20 },
|
|
{ color: '#e6a23c', percentage: 40 },
|
|
{ color: '#5cb87a', percentage: 60 },
|
|
{ color: '#1989fa', percentage: 80 },
|
|
{ color: '#6f7ad3', percentage: 100 }
|
|
]
|
|
},
|
|
props_info: {
|
|
view_card: [
|
|
{
|
|
type: 'eval',
|
|
title: '测试',
|
|
value_field:
|
|
'`${parseFloat(row.number).toLocaleString("zh-CN",{style: "decimal",maximumFractionDigits:1})}% `'
|
|
},
|
|
{
|
|
type: 'eval',
|
|
title: '名称',
|
|
value_field: '`${row.key} `'
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
style: { width: '500px' }
|
|
},
|
|
option_list: [
|
|
{
|
|
key: '测试',
|
|
value: 'test',
|
|
number: 10
|
|
},
|
|
{
|
|
key: '测试111111',
|
|
value: 'test1',
|
|
number: 100
|
|
}
|
|
]
|
|
}
|
|
]
|
|
const form_data = ref<Dict<any>>({})
|
|
const dynamicsFormRef = ref<InstanceType<typeof DynamicsForm>>()
|
|
const click = () => {
|
|
dynamicsFormRef.value?.validate()
|
|
}
|
|
</script>
|
|
<style lang="scss" scope></style>
|