Feat/cancel event (#2593)
* feat(excel): add cancel event for import excel
* feat(excel): add cancel emits
| | |
| | | default: false, |
| | | }, |
| | | }, |
| | | emits: ['success', 'error'], |
| | | emits: ['success', 'error', 'cancel'], |
| | | setup(props, { emit }) { |
| | | const inputRef = ref<HTMLInputElement | null>(null); |
| | | const loadingRef = ref<Boolean>(false); |
| | | const cancelRef = ref<Boolean>(true); |
| | | |
| | | function shapeWorkSheel(sheet: XLSX.WorkSheet, range: XLSX.Range) { |
| | | let str = ' ', |
| | |
| | | |
| | | if (!rawFile) return; |
| | | |
| | | cancelRef.value = false; |
| | | if (props.isReturnFile) { |
| | | emit('success', rawFile); |
| | | return; |
| | |
| | | } |
| | | |
| | | /** |
| | | * @description 文件选择器关闭后,判断取消状态 |
| | | */ |
| | | function handleFocusChange() { |
| | | const timeId = setInterval(() => { |
| | | if (cancelRef.value === true) { |
| | | emit('cancel'); |
| | | } |
| | | clearInterval(timeId); |
| | | window.removeEventListener('focus', handleFocusChange); |
| | | }, 1000); |
| | | } |
| | | |
| | | /** |
| | | * @description: 点击上传按钮 |
| | | */ |
| | | function handleUpload() { |
| | | const inputRefDom = unref(inputRef); |
| | | inputRefDom && inputRefDom.click(); |
| | | if (inputRefDom) { |
| | | cancelRef.value = true; |
| | | inputRefDom.click(); |
| | | window.addEventListener('focus', handleFocusChange); |
| | | } |
| | | } |
| | | |
| | | return { handleUpload, handleInputClick, inputRef }; |