index.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <PageWrapper title="上传组件示例">
  3. <a-alert message="基础示例" class="my-5"></a-alert>
  4. <BasicUpload :maxSize="20" :maxNumber="10" @change="handleChange" :api="uploadApi" />
  5. <a-alert message="嵌入表单,加入表单校验" class="my-5"></a-alert>
  6. <BasicForm @register="register" />
  7. </PageWrapper>
  8. </template>
  9. <script lang="ts">
  10. import { defineComponent } from 'vue';
  11. import { BasicUpload } from '/@/components/Upload';
  12. import { useMessage } from '/@/hooks/web/useMessage';
  13. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  14. import { PageWrapper } from '/@/components/Page';
  15. import { Alert } from 'ant-design-vue';
  16. import { uploadApi } from '/@/api/sys/upload';
  17. const schemas: FormSchema[] = [
  18. {
  19. field: 'field1',
  20. component: 'Upload',
  21. label: '字段1',
  22. colProps: {
  23. span: 8,
  24. },
  25. rules: [{ required: true, message: '请选择上传文件' }],
  26. componentProps: {
  27. api: uploadApi,
  28. },
  29. },
  30. ];
  31. export default defineComponent({
  32. components: { BasicUpload, BasicForm, PageWrapper, [Alert.name]: Alert },
  33. setup() {
  34. const { createMessage } = useMessage();
  35. const [register] = useForm({
  36. labelWidth: 120,
  37. schemas,
  38. actionColOptions: {
  39. span: 16,
  40. },
  41. });
  42. return {
  43. handleChange: (list: string[]) => {
  44. createMessage.info(`已上传文件${JSON.stringify(list)}`);
  45. },
  46. uploadApi,
  47. register,
  48. };
  49. },
  50. });
  51. </script>