Przeglądaj źródła

feat(axiosSuccess): 操作成功后根据传入提示模式进行相应 (#2326)

mfish 2 lat temu
rodzic
commit
17d16ae545

+ 1 - 0
src/locales/lang/en/sys.ts

@@ -2,6 +2,7 @@ export default {
   api: {
     operationFailed: 'Operation failed',
     errorTip: 'Error Tip',
+    successTip: 'Success Tip',
     errorMessage: 'The operation failed, the system is abnormal!',
     timeoutMessage: 'Login timed out, please log in again!',
     apiTimeoutMessage: 'The interface request timed out, please refresh the page and try again!',

+ 1 - 0
src/locales/lang/zh-CN/sys.ts

@@ -2,6 +2,7 @@ export default {
   api: {
     operationFailed: '操作失败',
     errorTip: '错误提示',
+    successTip: '成功提示',
     errorMessage: '操作失败,系统异常!',
     timeoutMessage: '登录超时,请重新登录!',
     apiTimeoutMessage: '接口请求超时,请刷新页面重试!',

+ 10 - 1
src/utils/http/axios/index.ts

@@ -22,7 +22,7 @@ import axios from 'axios';
 
 const globSetting = useGlobSetting();
 const urlPrefix = globSetting.urlPrefix;
-const { createMessage, createErrorModal } = useMessage();
+const { createMessage, createErrorModal, createSuccessModal } = useMessage();
 
 /**
  * @description: 数据处理,方便区分多种处理方式
@@ -56,6 +56,15 @@ const transform: AxiosTransform = {
     // 这里逻辑可以根据项目进行修改
     const hasSuccess = data && Reflect.has(data, 'code') && code === ResultEnum.SUCCESS;
     if (hasSuccess) {
+      let successMsg = message;
+      if (successMsg === null || successMsg === undefined || successMsg === '') {
+        successMsg = '操作成功';
+      }
+      if (options.successMessageMode === 'modal') {
+        createSuccessModal({ title: t('sys.api.successTip'), content: successMsg });
+      } else if (options.successMessageMode === 'message') {
+        createMessage.success(successMsg);
+      }
       return result;
     }
 

+ 3 - 0
types/axios.d.ts

@@ -1,4 +1,5 @@
 export type ErrorMessageMode = 'none' | 'modal' | 'message' | undefined;
+export type SuccessMessageMode = ErrorMessageMode;
 
 export interface RequestOptions {
   // Splicing request parameters to url
@@ -18,6 +19,8 @@ export interface RequestOptions {
   urlPrefix?: string;
   // Error message prompt type
   errorMessageMode?: ErrorMessageMode;
+  // Success message prompt type
+  successMessageMode?: SuccessMessageMode;
   // Whether to add a timestamp
   joinTime?: boolean;
   ignoreCancelToken?: boolean;