index.vue 1.6 KB

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