| | |
| | | fileName: string; |
| | | /** 执行导入的接口函数 (file, updateSupport) => Promise */ |
| | | importFn: (file: File, updateSupport: boolean) => Promise<unknown>; |
| | | /** 是否允许覆盖已有数据 */ |
| | | allowUpdate?: boolean; |
| | | uploadHint?: string; |
| | | /** 不提供模板下载时隐藏弹窗内的下载按钮。 */ |
| | | showTemplateDownload?: boolean; |
| | | /** 下载模板的接口函数 () => Promise(blob) */ |
| | | templateFn: () => Promise<BlobPart>; |
| | | templateFn?: () => Promise<BlobPart>; |
| | | } |
| | | |
| | | const emit = defineEmits(['success']); |
| | |
| | | label: '数据文件', |
| | | component: 'Upload', |
| | | rules: 'required', |
| | | help: '仅允许导入 xls、xlsx 格式文件', |
| | | help: () => config.value.uploadHint || '仅允许导入 xls、xlsx 格式文件', |
| | | }, |
| | | { |
| | | fieldName: 'updateSupport', |
| | | dependencies: { triggerFields: ['file'], show: () => config.value.allowUpdate !== false }, |
| | | label: '是否覆盖', |
| | | component: 'Switch', |
| | | componentProps: { |
| | |
| | | |
| | | /** 下载模版 */ |
| | | async function handleDownload() { |
| | | if (!config.value.templateFn) return; |
| | | const data = await config.value.templateFn(); |
| | | downloadFileFromBlobPart({ fileName: config.value.fileName, source: data }); |
| | | } |
| | |
| | | </template> |
| | | </Form> |
| | | <template #prepend-footer> |
| | | <div class="flex flex-auto items-center"> |
| | | <div v-if="config.showTemplateDownload !== false" class="flex flex-auto items-center"> |
| | | <Button @click="handleDownload"> 下载导入模板 </Button> |
| | | </div> |
| | | </template> |