Commit 714a351036042ae9883d821e99feed9802aa8d22

Authored by yx lin
Committed by GitHub
1 parent a78c3a30

Feat/cancel event (#2593)

* feat(excel): add cancel event for import excel

* feat(excel): add cancel emits
src/components/Excel/src/ImportExcel.vue
... ... @@ -37,10 +37,11 @@
37 37 default: false,
38 38 },
39 39 },
40   - emits: ['success', 'error'],
  40 + emits: ['success', 'error', 'cancel'],
41 41 setup(props, { emit }) {
42 42 const inputRef = ref<HTMLInputElement | null>(null);
43 43 const loadingRef = ref<Boolean>(false);
  44 + const cancelRef = ref<Boolean>(true);
44 45  
45 46 function shapeWorkSheel(sheet: XLSX.WorkSheet, range: XLSX.Range) {
46 47 let str = ' ',
... ... @@ -184,6 +185,7 @@
184 185  
185 186 if (!rawFile) return;
186 187  
  188 + cancelRef.value = false;
187 189 if (props.isReturnFile) {
188 190 emit('success', rawFile);
189 191 return;
... ... @@ -192,11 +194,28 @@
192 194 }
193 195  
194 196 /**
  197 + * @description 文件选择器关闭后,判断取消状态
  198 + */
  199 + function handleFocusChange() {
  200 + const timeId = setInterval(() => {
  201 + if (cancelRef.value === true) {
  202 + emit('cancel');
  203 + }
  204 + clearInterval(timeId);
  205 + window.removeEventListener('focus', handleFocusChange);
  206 + }, 1000);
  207 + }
  208 +
  209 + /**
195 210 * @description: 点击上传按钮
196 211 */
197 212 function handleUpload() {
198 213 const inputRefDom = unref(inputRef);
199   - inputRefDom && inputRefDom.click();
  214 + if (inputRefDom) {
  215 + cancelRef.value = true;
  216 + inputRefDom.click();
  217 + window.addEventListener('focus', handleFocusChange);
  218 + }
200 219 }
201 220  
202 221 return { handleUpload, handleInputClick, inputRef };
... ...