diff --git a/src/api/server/axiosInstance.ts b/src/api/server/axiosInstance.ts index 8607f59..8fb273d 100644 --- a/src/api/server/axiosInstance.ts +++ b/src/api/server/axiosInstance.ts @@ -168,7 +168,11 @@ const createAxiosInstance = (module: APIConfigKeys, config: Config) => { }, (error: any): Promise => { if (isCancel(error)) { - return Promise.resolve() + return Promise.reject({ + name: 'CanceledError', + message: 'canceled', + code: 10001 + }) } const message = '请求错误' if (error.code === 'ECONNABORTED') { @@ -211,7 +215,6 @@ const createAxiosInstance = (module: APIConfigKeys, config: Config) => { const result = (await service(config)) as Result return result } catch (err: any) { - console.log(err) const result: Result = { code: err?.code || -1, msg: err.msg || err.message, diff --git a/src/views/engineering/components/channel-dlg.vue b/src/views/engineering/components/channel-dlg.vue index a9c13f1..0d097a0 100644 --- a/src/views/engineering/components/channel-dlg.vue +++ b/src/views/engineering/components/channel-dlg.vue @@ -131,7 +131,6 @@ function open(item?: ICustomFormData) { async function onSave() { if (verifyData()) return emit('on-save', form.value) - message.success('保存成功') close() } diff --git a/src/views/engineering/config/components/StepChannel.vue b/src/views/engineering/config/components/StepChannel.vue index 9571c37..2ed8435 100644 --- a/src/views/engineering/config/components/StepChannel.vue +++ b/src/views/engineering/config/components/StepChannel.vue @@ -17,7 +17,6 @@ >
-
- +
+
+
+ + + + 新增通道 +
+
+ +
-
- +
+
+
+ + + + 新增设备 +
+
+ +
- +
+
+
+ + + + 新增设备类别 +
+
+ +
- { const handleFileChange = async (file: UploadFile, fileName: string) => { if (!file.raw) return - const controller = new AbortController() uploadControllers[fileName] = controller uploadingStates[fileName] = true @@ -285,17 +293,15 @@ const handleFileChange = async (file: UploadFile, fileName: string) => { }, controller, ) - if (res.code === 0) { - ElMessage.success('上传成功') - emit('on-load-device-categoty') - } else { - ElMessage.error(res.msg || '上传失败') - } - } catch (error: any) { - if (error.name === 'CanceledError' || error.message === 'canceled') { - ElMessage.info('上传已取消') - } else { - ElMessage.error('上传失败') + if (res) { + if (res.code === 0) { + ElMessage.success('上传成功') + emit('on-load-device-categoty') + } else if (res.code === 10001) { + ElMessage.success('取消成功') + } else { + ElMessage.error(res.msg || '上传失败') + } } } finally { delete uploadControllers[fileName] @@ -312,6 +318,48 @@ const handleCancelUpload = (fileName: string) => { uploadingStates[fileName] = false } } + +// Check if there are any uploading files +const hasUploadingFiles = () => { + return Object.values(uploadingStates).some(state => state === true) +} + +// Cancel all uploads +const cancelAllUploads = () => { + Object.keys(uploadControllers).forEach(fileName => { + handleCancelUpload(fileName) + }) +} + +// Check before leaving step +const checkBeforeLeave = async (): Promise => { + if (!hasUploadingFiles()) { + return true + } + + return new Promise(resolve => { + ElMessageBox.confirm( + '当前有文件正在上传,离开将取消所有上传任务,是否确定离开?', + '提示', + { + confirmButtonText: '确定离开', + cancelButtonText: '取消', + type: 'warning', + }, + ) + .then(() => { + cancelAllUploads() + resolve(true) + }) + .catch(() => { + resolve(false) + }) + }) +} + +defineExpose({ + checkBeforeLeave, +})