|
|
|
@ -12,7 +12,14 @@ |
|
|
|
|
|
|
|
<Alert message="嵌入表单,加入表单校验" /> |
|
|
|
|
|
|
|
<BasicForm @register="register" class="my-5" /> |
|
|
|
<BasicForm @register="registerValiate" class="my-5" /> |
|
|
|
|
|
|
|
<Alert message="嵌入表单,加入resultFiled自定义返回值" /> |
|
|
|
<BasicForm @register="registerCustom" class="my-5" /> |
|
|
|
|
|
|
|
<Alert message="嵌入表单,自定义预览内容" /> |
|
|
|
<BasicForm @register="registerPreview" class="my-5" /> |
|
|
|
|
|
|
|
</PageWrapper> |
|
|
|
</template> |
|
|
|
<script lang="ts" setup> |
|
|
|
@ -20,33 +27,193 @@ |
|
|
|
import { useMessage } from '@/hooks/web/useMessage'; |
|
|
|
import { BasicForm, FormSchema, useForm } from '@/components/Form'; |
|
|
|
import { PageWrapper } from '@/components/Page'; |
|
|
|
import { Alert } from 'ant-design-vue'; |
|
|
|
import { Alert,Button } from 'ant-design-vue'; |
|
|
|
import { uploadApi } from '@/api/sys/upload'; |
|
|
|
import { createVNode } from "vue" |
|
|
|
|
|
|
|
const schemas: FormSchema[] = [ |
|
|
|
const schemasValiate: FormSchema[] = [ |
|
|
|
{ |
|
|
|
field: 'field1', |
|
|
|
component: 'Upload', |
|
|
|
label: '字段1', |
|
|
|
rules: [{ required: true, message: '请选择上传文件' }], |
|
|
|
componentProps: { |
|
|
|
api: uploadApi, |
|
|
|
}, |
|
|
|
},{ |
|
|
|
field: 'field2', |
|
|
|
component: "ImageUpload", |
|
|
|
label: '字段2(ImageUpload)', |
|
|
|
colProps: { |
|
|
|
span: 8, |
|
|
|
}, |
|
|
|
rules: [{ required: true, message: '请选择上传文件' }], |
|
|
|
componentProps: { |
|
|
|
api: uploadApi, |
|
|
|
} |
|
|
|
}, |
|
|
|
]; |
|
|
|
const schemasCustom: FormSchema[] = [ |
|
|
|
{ |
|
|
|
field: 'field3', |
|
|
|
component: 'Upload', |
|
|
|
label: '字段3', |
|
|
|
componentProps: { |
|
|
|
resultField:"data3.url", |
|
|
|
api: (file,progress)=>{ |
|
|
|
return new Promise((resolve)=>{ |
|
|
|
uploadApi(file,progress).then((uploadApiResponse)=>{ |
|
|
|
resolve({ |
|
|
|
code:200, |
|
|
|
data3:{ |
|
|
|
url:uploadApiResponse.data.url |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
field: 'field4', |
|
|
|
component: "ImageUpload", |
|
|
|
label: '字段4(ImageUpload)', |
|
|
|
colProps: { |
|
|
|
span: 8, |
|
|
|
}, |
|
|
|
componentProps: { |
|
|
|
resultField:"data4.url", |
|
|
|
api: (file,progress)=>{ |
|
|
|
return new Promise((resolve)=>{ |
|
|
|
uploadApi(file,progress).then((uploadApiResponse)=>{ |
|
|
|
resolve({ |
|
|
|
code:200, |
|
|
|
data4:{ |
|
|
|
url:uploadApiResponse.data.url |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
]; |
|
|
|
const schemasPreview: FormSchema[] = [ |
|
|
|
{ |
|
|
|
field: 'field5', |
|
|
|
component: 'Upload', |
|
|
|
label: '字段5', |
|
|
|
componentProps: { |
|
|
|
previewColumns:[{ |
|
|
|
title:"url5", |
|
|
|
dataIndex:"url5" |
|
|
|
},{ |
|
|
|
title:"type5", |
|
|
|
dataIndex:"type5" |
|
|
|
},{ |
|
|
|
title:"name5", |
|
|
|
dataIndex:"name5" |
|
|
|
}, |
|
|
|
{ |
|
|
|
title:"operation", |
|
|
|
dataIndex:"", |
|
|
|
customRender: ({ record })=>{ |
|
|
|
return createVNode(Button,{ |
|
|
|
onclick:()=>{ |
|
|
|
console.log(record) |
|
|
|
createMessage.success(`请到控制台查看该行输出结果`); |
|
|
|
} |
|
|
|
},"点我") |
|
|
|
} |
|
|
|
}, |
|
|
|
], |
|
|
|
beforePreviewData:(arg)=>{ |
|
|
|
let data = arg.filter((item) => !!item).map((item) => { |
|
|
|
if(typeof item !== "string"){ |
|
|
|
console.error("return value should be string") |
|
|
|
return |
|
|
|
} |
|
|
|
return { |
|
|
|
url5: item, |
|
|
|
type5: item.split('.').pop() || '', |
|
|
|
name5: item.split('/').pop() || '', |
|
|
|
}; |
|
|
|
}) |
|
|
|
return data |
|
|
|
}, |
|
|
|
resultField:"data5.url", |
|
|
|
api: (file,progress)=>{ |
|
|
|
return new Promise((resolve)=>{ |
|
|
|
uploadApi(file,progress).then((uploadApiResponse)=>{ |
|
|
|
resolve({ |
|
|
|
code:200, |
|
|
|
data5:{ |
|
|
|
url:uploadApiResponse.data.url |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const { createMessage } = useMessage(); |
|
|
|
const [register] = useForm({ |
|
|
|
labelWidth: 120, |
|
|
|
schemas, |
|
|
|
|
|
|
|
function handleChange(list: string[]) { |
|
|
|
createMessage.success(`已上传文件${JSON.stringify(list)}`); |
|
|
|
} |
|
|
|
const [registerValiate,{getFieldsValue:getFieldsValueValiate,validate}] = useForm({ |
|
|
|
labelWidth: 160, |
|
|
|
schemas:schemasValiate, |
|
|
|
actionColOptions: { |
|
|
|
span: 16, |
|
|
|
span: 18, |
|
|
|
}, |
|
|
|
submitFunc:()=>{ |
|
|
|
return new Promise((resolve)=>{ |
|
|
|
validate().then((e)=>{ |
|
|
|
resolve() |
|
|
|
console.log(getFieldsValueValiate()) |
|
|
|
createMessage.success(`请到控制台查看结果`); |
|
|
|
}).catch(()=>{ |
|
|
|
createMessage.error(`请输入必填项`); |
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
function handleChange(list: string[]) { |
|
|
|
createMessage.info(`已上传文件${JSON.stringify(list)}`); |
|
|
|
} |
|
|
|
// resultFields 字段示例 |
|
|
|
const [registerCustom,{getFieldsValue:getFieldsValueCustom}] = useForm({ |
|
|
|
labelWidth: 160, |
|
|
|
schemas:schemasCustom, |
|
|
|
actionColOptions: { |
|
|
|
span: 18, |
|
|
|
}, |
|
|
|
submitFunc:()=>{ |
|
|
|
return new Promise((resolve)=>{ |
|
|
|
console.log(getFieldsValueCustom()) |
|
|
|
resolve() |
|
|
|
createMessage.success(`请到控制台查看结果`); |
|
|
|
}) |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
// registerPreview |
|
|
|
const [registerPreview,{getFieldsValue:getFieldsValuePreview}] = useForm({ |
|
|
|
labelWidth: 160, |
|
|
|
schemas:schemasPreview, |
|
|
|
actionColOptions: { |
|
|
|
span: 18, |
|
|
|
}, |
|
|
|
submitFunc:()=>{ |
|
|
|
return new Promise((resolve)=>{ |
|
|
|
console.log(getFieldsValuePreview()) |
|
|
|
resolve() |
|
|
|
createMessage.success(`请到控制台查看结果`); |
|
|
|
}) |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
</script> |
|
|
|
|