import { message } from 'ant-design-vue' import { Ref } from 'vue' import { ResultInfo } from './interface' /** * 获取请求接口时候成功或者失败信息 * @param map 提示信息数据集合 * @param type 数据集合 的key * @returns [成功信息, 失败信息] */ export function getRequestResultInfo(map: Map, type: number): ResultInfo { if (map.has(type)) { const result = map.get(type) as ResultInfo return result } else { return ['成功', '失败'] } } /** * 请求接口通用信息处理(此方法用于不关心请求结果,只关心成功或者失败状态) * @param fn 处理服务接口的函数 * @param sign 自定义成功和失败的信息 * @param loading loading状态 */ export function commonResultInfo(fn: Promise, sign: ResultInfo, loading: Ref): Promise { return fn.then(() => { message.success(sign[0]) return Promise.resolve(sign[0]) }) .catch((err: string) => { console.warn(`${fn}调用失败: err`); message.error(sign[1] + err) return Promise.reject(sign[1] + err) }).finally(() => { loading.value = false }) } /** * 控制 请求接口 打开与关闭loading * @param fn 请求接口 函数 * @param param 请求接口 参数 * @param loading * @returns */ export async function controlLoading(fn: Function, loading: Ref, param?: any,): Promise { loading.value = true; try { return await param ? fn(param) : fn() } catch (err) { Promise.resolve(err) } finally { loading.value = false; } } /** * 控制服务请求成功和失败的弹窗提示 * @param fn 请求接口 函数 * @param msgInfo [成功结果, 失败结果] * @returns */ export function controlResultInfo(fn: Promise, msgInfo: [string, string] = ['成功', '失败']) { const [sucInfo, errInfo] = msgInfo return fn.then(res => { message.success(sucInfo) return res; }).catch(err => { console.warn(`${fn}调用失败: err`); const result = errInfo + err message.error(result) Promise.reject(result) }) } /** * 用户查询数据,成功返回数据,失败提示 * @param fn * @returns */ export function controlResultErrInfo(fn: Promise) { return fn.then(res => { console.log('查询数据', res) return res }).catch(err => { console.error(err) message.error(err) }) } /** * 处理服务请求时候的loading和 成功和失败提示 * @param fn * @param param * @param loading * @param messageInfo * @returns */ export function requestResultLoadingAndInfo(fn: Function, param: any, loading: Ref, messageInfo: [string, string] = ['成功', '失败']) { return controlResultInfo(controlLoading(fn, loading, param), messageInfo) } /** * 查询数据 loading 成功和失败提示 * @param fn * @param loading * @param param * @returns */ export function queryResultLoadingAndInfo(fn: Function, loading: Ref, param?: any) { return controlResultErrInfo(controlLoading(fn, loading, param)) }