Commit 534b8dcfbb4f6df19cea48ed2bff36f55d843851
Merge branch 'fix/DEFECT-1565' into 'main_dev'
fix: DEFECT-1565 修复设备导入上传文件后返回上一步文件消失 See merge request yunteng/thingskit-front!859
Showing
2 changed files
with
20 additions
and
8 deletions
1 | 1 | <script lang="ts" setup> |
2 | 2 | import { Upload, Button } from 'ant-design-vue'; |
3 | 3 | import { InboxOutlined } from '@ant-design/icons-vue'; |
4 | - import { computed, ref } from 'vue'; | |
4 | + import { computed } from 'vue'; | |
5 | 5 | import StepContainer from './StepContainer.vue'; |
6 | 6 | import XLSX, { CellObject } from 'xlsx'; |
7 | 7 | import { basicProps } from './props'; |
... | ... | @@ -10,15 +10,17 @@ |
10 | 10 | |
11 | 11 | const props = defineProps({ |
12 | 12 | ...basicProps, |
13 | + fileList: { | |
14 | + required: true, | |
15 | + type: Array as PropType<(Record<'uid' | 'name', string> & File)[]>, | |
16 | + }, | |
13 | 17 | value: { |
14 | 18 | require: true, |
15 | 19 | type: Object as PropType<UploadFileParseValue>, |
16 | 20 | }, |
17 | 21 | }); |
18 | 22 | |
19 | - const emit = defineEmits(['update:value']); | |
20 | - | |
21 | - const fileList = ref<Record<'uid' | 'name', string>[]>([]); | |
23 | + const emit = defineEmits(['update:value', 'update:fileList']); | |
22 | 24 | |
23 | 25 | interface FileRequestParams { |
24 | 26 | file: File & { uid: string }; |
... | ... | @@ -83,19 +85,19 @@ |
83 | 85 | }; |
84 | 86 | |
85 | 87 | const handleParseFile = async ({ file, onSuccess, onError }: FileRequestParams) => { |
86 | - fileList.value = []; | |
87 | 88 | const value = await readFile(file); |
88 | 89 | if (!value) { |
89 | 90 | onError(); |
90 | 91 | return; |
91 | 92 | } |
92 | - fileList.value = [file]; | |
93 | + | |
94 | + emit('update:fileList', [file]); | |
93 | 95 | emit('update:value', value); |
94 | 96 | onSuccess({}, file); |
95 | 97 | }; |
96 | 98 | |
97 | 99 | const canGoNextStep = computed(() => { |
98 | - return !!fileList.value.length; | |
100 | + return !!props.fileList.length; | |
99 | 101 | }); |
100 | 102 | |
101 | 103 | const handlePreviousStep = () => { |
... | ... | @@ -105,16 +107,22 @@ |
105 | 107 | const handleNextStep = () => { |
106 | 108 | props.goNextStep?.(); |
107 | 109 | }; |
110 | + | |
111 | + const handleRemove = () => { | |
112 | + emit('update:fileList', []); | |
113 | + return true; | |
114 | + }; | |
108 | 115 | </script> |
109 | 116 | |
110 | 117 | <template> |
111 | 118 | <StepContainer> |
112 | 119 | <div class="">设备文件</div> |
113 | 120 | <Upload.Dragger |
114 | - v-model:fileList="fileList" | |
121 | + :fileList="fileList" | |
115 | 122 | :customRequest="handleParseFile" |
116 | 123 | accept=".csv" |
117 | 124 | name="file" |
125 | + :remove="handleRemove" | |
118 | 126 | > |
119 | 127 | <section class="cursor-pointer flex flex-col justify-center items-center"> |
120 | 128 | <InboxOutlined class="text-[4rem] !text-blue-400" /> | ... | ... |
... | ... | @@ -17,6 +17,8 @@ |
17 | 17 | |
18 | 18 | const basicInfo = ref({}); |
19 | 19 | |
20 | + const fileList = ref<(File & Record<'uid' | 'name', string>)[]>([]); | |
21 | + | |
20 | 22 | const fileParseValue = ref<UploadFileParseValue>({ header: [], content: [] }); |
21 | 23 | |
22 | 24 | const columnConfiguration = ref<Record<'type', string>[]>([]); |
... | ... | @@ -61,6 +63,7 @@ |
61 | 63 | |
62 | 64 | const reset = () => { |
63 | 65 | basicInfo.value = {}; |
66 | + fileList.value = []; | |
64 | 67 | fileParseValue.value = { header: [], content: [] }; |
65 | 68 | columnConfiguration.value = []; |
66 | 69 | importResult.value = {} as unknown as ImportDeviceResponse; |
... | ... | @@ -109,6 +112,7 @@ |
109 | 112 | /> |
110 | 113 | <ImportCsv |
111 | 114 | v-if="StepsEnum[item] === StepsEnum.IMPORT_FILE && StepsEnum[item] === currentStep" |
115 | + v-model:fileList="fileList" | |
112 | 116 | v-model:value="fileParseValue" |
113 | 117 | :go-next-step="goNextStep" |
114 | 118 | :go-previous-step="goPreviousStep" | ... | ... |