From 0e39ea474a7e18a4b342234e83377b698a3d3467 Mon Sep 17 00:00:00 2001 From: juetan Date: Sun, 6 Aug 2023 21:04:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96API=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/instance/api.ts | 5 ++--- src/components/form/form-config.ts | 5 +++++ src/components/form/form-modal.tsx | 6 +++++- src/components/form/form.tsx | 9 ++++++++- src/components/table/table.config.tsx | 4 ++++ src/components/table/table.tsx | 12 ++++++++++-- 6 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 src/components/form/form-config.ts diff --git a/src/api/instance/api.ts b/src/api/instance/api.ts index 779fb49..e7420f2 100644 --- a/src/api/instance/api.ts +++ b/src/api/instance/api.ts @@ -51,11 +51,10 @@ api.instance.interceptors.response.use( }, (error) => { error.config.closeToast?.(); - if (error.request) { - console.log("request error", error.request); - } if (error.response) { console.log("response error", error.response); + } else if (error.request) { + console.log("request error", error.request); } return Promise.reject(error); } diff --git a/src/components/form/form-config.ts b/src/components/form/form-config.ts new file mode 100644 index 0000000..153d7b4 --- /dev/null +++ b/src/components/form/form-config.ts @@ -0,0 +1,5 @@ +export const config = { + getApiErrorMessage(error: any) { + return error?.response?.data?.message || error?.message || "Error"; + }, +}; diff --git a/src/components/form/form-modal.tsx b/src/components/form/form-modal.tsx index a0d08fd..2a4a379 100644 --- a/src/components/form/form-modal.tsx +++ b/src/components/form/form-modal.tsx @@ -2,6 +2,7 @@ import { Button, ButtonInstance, FormInstance, Message, Modal } from "@arco-desi import { assign, cloneDeep, omit } from "lodash-es"; import { PropType, VNode, defineComponent } from "vue"; import { Form } from "./form"; +import { config } from "./form-config"; import { IFormItem } from "./form-item"; /** @@ -100,7 +101,10 @@ export const FormModal = defineComponent({ res?.data?.message && Message.success(`提示: ${res.data.message}`); emit("submited", res); } catch (error: any) { - error.message && Message.error(`提示: ${error.message}`); + const message = config.getApiErrorMessage(error); + if (message) { + Message.error(`提示: ${message}`); + } return false; } return true; diff --git a/src/components/form/form.tsx b/src/components/form/form.tsx index c6a11e4..5d3c877 100644 --- a/src/components/form/form.tsx +++ b/src/components/form/form.tsx @@ -93,7 +93,14 @@ export const Form = defineComponent({ try { loading.value = true; const res = await props.submit?.({ model, items: props.items }); - res.message && Message.success(`提示: ${res.message}`); + if (res?.message) { + Message.success(`提示: ${res.message}`); + } + } catch (error: any) { + const message = error?.response?.data?.message || error?.message || "提交失败"; + if (message) { + Message.error(`提示: ${message}`); + } } finally { loading.value = false; } diff --git a/src/components/table/table.config.tsx b/src/components/table/table.config.tsx index 7a5ce27..1c037bb 100644 --- a/src/components/table/table.config.tsx +++ b/src/components/table/table.config.tsx @@ -60,4 +60,8 @@ export const config = { hideCancel: false, maskClosable: false, }, + getApiErrorMessage(error: any): string { + const message = error?.response?.data?.message || error?.message || "请求失败"; + return message; + } }; diff --git a/src/components/table/table.tsx b/src/components/table/table.tsx index 765598d..d786488 100644 --- a/src/components/table/table.tsx +++ b/src/components/table/table.tsx @@ -1,4 +1,9 @@ -import { TableColumnData as BaseColumn, TableData as BaseData, Table as BaseTable } from "@arco-design/web-vue"; +import { + TableColumnData as BaseColumn, + TableData as BaseData, + Table as BaseTable, + Message, +} from "@arco-design/web-vue"; import { merge } from "lodash-es"; import { PropType, computed, defineComponent, reactive, ref, watch } from "vue"; import { Form, FormInstance, FormModal, FormModalInstance, FormModalProps, FormProps } from "../form"; @@ -102,7 +107,10 @@ export const Table = defineComponent({ props.pagination.total = total; props.pagination.current = paging.page; } catch (error) { - console.log("table error", error); + const message = config.getApiErrorMessage(error); + if (message) { + Message.error(`提示:${message}`); + } } finally { loading.value = false; }