admin-vben5/apps/web-antd/src/views/演示使用自行删除/upload/index.vue

64 lines
2.0 KiB
Vue
Raw Normal View History

2024-10-06 12:19:24 +08:00
<script setup lang="ts">
import { ref } from 'vue';
import { JsonPreview, Page } from '@vben/common-ui';
2024-10-08 13:37:14 +08:00
import { Alert, RadioGroup } from 'ant-design-vue';
2024-10-06 12:19:24 +08:00
2024-10-08 13:37:14 +08:00
import { FileUpload, ImageUpload } from '#/components/upload';
2024-10-06 12:19:24 +08:00
const resultField = ref<'ossId' | 'url'>('ossId');
2024-10-08 13:37:14 +08:00
const imageList = ref([]);
2024-10-06 12:19:24 +08:00
const fileList = ref([]);
const fieldOptions = [
{ label: 'ossId', value: 'ossId' },
{ label: '链接地址', value: 'url' },
];
2024-10-08 13:37:14 +08:00
const fileAccept = ['txt', 'excel', 'word', 'pdf'];
const signleImage = ref<string>('');
2024-10-06 12:19:24 +08:00
</script>
<template>
2024-10-08 13:37:14 +08:00
<Page content-class="flex flex-col gap-[12px]">
<div class="bg-background flex flex-col gap-[12px] rounded-lg p-6">
<Alert
:show-icon="true"
message="新特性: 单张图片会被绑定为string而非string[]类型 省去手动转换"
/>
<ImageUpload v-model:value="signleImage" :max-number="1" />
<Alert
:show-icon="true"
message="默认给空字符串会被转为[], 上传之后为正常string类型"
/>
<JsonPreview :data="signleImage" />
</div>
2024-10-06 12:19:24 +08:00
<div class="bg-background flex flex-col gap-[12px] rounded-lg p-6">
<div class="flex gap-[8px]">
<span>返回字段: </span>
<RadioGroup v-model:value="resultField" :options="fieldOptions" />
</div>
2024-10-08 13:37:14 +08:00
<ImageUpload v-model:value="imageList" :result-field="resultField" />
<JsonPreview :data="imageList" />
</div>
<div class="bg-background flex flex-col gap-[12px] rounded-lg p-6">
<div class="flex gap-[8px]">
<span>返回字段: </span>
<RadioGroup v-model:value="resultField" :options="fieldOptions" />
</div>
<Alert
:message="`支持的文件类型:${fileAccept.join(', ')}`"
:show-icon="true"
type="info"
/>
<FileUpload
v-model:value="fileList"
:accept="fileAccept"
:result-field="resultField"
/>
2024-10-06 12:19:24 +08:00
<JsonPreview :data="fileList" />
</div>
</Page>
</template>