feat: 优化API请求错误输出

master
绝弹 2023-08-06 21:04:01 +08:00
parent 611dfe5727
commit 0e39ea474a
6 changed files with 34 additions and 7 deletions

View File

@ -51,11 +51,10 @@ api.instance.interceptors.response.use(
}, },
(error) => { (error) => {
error.config.closeToast?.(); error.config.closeToast?.();
if (error.request) {
console.log("request error", error.request);
}
if (error.response) { if (error.response) {
console.log("response error", error.response); console.log("response error", error.response);
} else if (error.request) {
console.log("request error", error.request);
} }
return Promise.reject(error); return Promise.reject(error);
} }

View File

@ -0,0 +1,5 @@
export const config = {
getApiErrorMessage(error: any) {
return error?.response?.data?.message || error?.message || "Error";
},
};

View File

@ -2,6 +2,7 @@ import { Button, ButtonInstance, FormInstance, Message, Modal } from "@arco-desi
import { assign, cloneDeep, omit } from "lodash-es"; import { assign, cloneDeep, omit } from "lodash-es";
import { PropType, VNode, defineComponent } from "vue"; import { PropType, VNode, defineComponent } from "vue";
import { Form } from "./form"; import { Form } from "./form";
import { config } from "./form-config";
import { IFormItem } from "./form-item"; import { IFormItem } from "./form-item";
/** /**
@ -100,7 +101,10 @@ export const FormModal = defineComponent({
res?.data?.message && Message.success(`提示: ${res.data.message}`); res?.data?.message && Message.success(`提示: ${res.data.message}`);
emit("submited", res); emit("submited", res);
} catch (error: any) { } catch (error: any) {
error.message && Message.error(`提示: ${error.message}`); const message = config.getApiErrorMessage(error);
if (message) {
Message.error(`提示: ${message}`);
}
return false; return false;
} }
return true; return true;

View File

@ -93,7 +93,14 @@ export const Form = defineComponent({
try { try {
loading.value = true; loading.value = true;
const res = await props.submit?.({ model, items: props.items }); 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 { } finally {
loading.value = false; loading.value = false;
} }

View File

@ -60,4 +60,8 @@ export const config = {
hideCancel: false, hideCancel: false,
maskClosable: false, maskClosable: false,
}, },
getApiErrorMessage(error: any): string {
const message = error?.response?.data?.message || error?.message || "请求失败";
return message;
}
}; };

View File

@ -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 { merge } from "lodash-es";
import { PropType, computed, defineComponent, reactive, ref, watch } from "vue"; import { PropType, computed, defineComponent, reactive, ref, watch } from "vue";
import { Form, FormInstance, FormModal, FormModalInstance, FormModalProps, FormProps } from "../form"; import { Form, FormInstance, FormModal, FormModalInstance, FormModalProps, FormProps } from "../form";
@ -102,7 +107,10 @@ export const Table = defineComponent({
props.pagination.total = total; props.pagination.total = total;
props.pagination.current = paging.page; props.pagination.current = paging.page;
} catch (error) { } catch (error) {
console.log("table error", error); const message = config.getApiErrorMessage(error);
if (message) {
Message.error(`提示:${message}`);
}
} finally { } finally {
loading.value = false; loading.value = false;
} }