UNPKG

tav-ui

Version:
1 lines 12.2 kB
{"version":3,"file":"use-request2.mjs","sources":["../../../../../../../../packages/components/file/src/hooks/use-request.ts"],"sourcesContent":["import { type Ref, type WritableComputedRef, computed, ref, unref } from 'vue'\nimport { isBoolean, isFunction, isObject } from 'lodash-es'\nimport { tavI18n } from '@tav-ui/locales'\nimport { useMessage } from '@tav-ui/hooks/web/useMessage'\nimport { DEFAULT_HTTP_ERROR_TIP } from '../consts'\nimport { type ReturnOf } from '../utils'\nimport { type UseDisableReturn, type UseLoadingReturn } from './'\n\nconst { createMessage } = useMessage()\n\nexport interface UseRequestHandleApiDefaultOptions<T, K> {\n apiParams: T\n api?: (params: T) => Promise<{ data: K; [k: string]: any }>\n /** 返回 true 继续执行;返回 T 代表修改后的 apiparams,用其继续执行;返回其他则退出请求*/\n beforeApi?: (params: T) => Promise<T | boolean>\n afterApi?: (params: K) => Promise<any>\n catchError?: (params: K) => Promise<any>\n /** 是否将参数全部转换为 formdata */\n transformApiParamsToFormData?: {\n fileFiledName?: string\n filterNames?: string[]\n }\n /** 成功提示 */\n successMessage?: (...args: any[]) => string\n /** 失败提示 */\n failureMessage?: (...args: any[]) => string\n /** 只用 success 判断接口成功,默认使用 success + data */\n useSuccessPassRes?: boolean\n callback?: () => void\n responseDataType?: 'object' | 'array'\n}\n\nexport function useRequest(options: {\n setLoading: UseLoadingReturn['setLoading']\n setDisable: UseDisableReturn['setDisable']\n loading?: WritableComputedRef<Ref<boolean>>\n}) {\n const resultRef = ref<any>([])\n const errorRef = ref<string>('')\n const { setLoading, setDisable, loading } = options\n\n async function handleApi<\n O extends Record<string, any>,\n T extends Record<string, any>,\n K extends Record<string, any> | Record<string, any>[]\n >(options: O & UseRequestHandleApiDefaultOptions<T, K>) {\n const {\n apiParams: _apiParams,\n api: _api,\n beforeApi: _beforeApi,\n afterApi: _afterApi,\n catchError: _catchError,\n transformApiParamsToFormData: _transformApiParamsToFormData,\n successMessage: _successMessage,\n failureMessage: _failureMessage,\n useSuccessPassRes: _useSuccessPassRes,\n callback: _callback,\n responseDataType: _responseDataType = 'array',\n } = options\n\n let apiParams = _apiParams\n let api = _api\n let beforeApi = _beforeApi\n let afterApi = _afterApi\n let catchError = _catchError\n let transformApiParamsToFormData = _transformApiParamsToFormData\n let successMessage = _successMessage\n let failureMessage = _failureMessage\n let useSuccessPassRes = _useSuccessPassRes\n let callback = _callback\n let responseDataType = _responseDataType\n\n if (!api || !isFunction(api)) return\n\n if (loading) {\n loading.value.value = true\n } else {\n setLoading(true)\n }\n setDisable(true)\n\n try {\n if (beforeApi && isFunction(beforeApi)) {\n const beforeApiResult = await beforeApi(apiParams)\n if (isObject(beforeApiResult)) {\n apiParams = beforeApiResult.apiParams\n api = beforeApiResult.api\n beforeApi = beforeApiResult.beforeApi\n afterApi = beforeApiResult.afterApi\n catchError = beforeApiResult.catchError\n transformApiParamsToFormData = beforeApiResult.transformApiParamsToFormData\n successMessage = beforeApiResult.successMessage\n failureMessage = beforeApiResult.failureMessage\n useSuccessPassRes = beforeApiResult.useSuccessPassRes\n callback = beforeApiResult.callback\n responseDataType = beforeApiResult.responseDataType\n }\n if (isBoolean(beforeApiResult) && beforeApiResult === false) {\n callback && callback()\n return\n }\n }\n\n if (responseDataType === 'object') {\n resultRef.value = {}\n }\n\n let apiResult: { data: K; [k: string]: any }\n\n if (transformApiParamsToFormData) {\n // 组装数据\n if (!transformApiParamsToFormData.filterNames) {\n const formData = new FormData()\n // 全部组装为 formdata\n for (const [k, v] of Object.entries(apiParams as any)) {\n if (\n transformApiParamsToFormData['fileFiledName'] &&\n k === transformApiParamsToFormData['fileFiledName']!\n ) {\n ;(v as File[]).forEach((file) => {\n formData.append(transformApiParamsToFormData!['fileFiledName']!, file)\n })\n } else {\n formData.append(k, v as any)\n }\n }\n apiResult = await (api as unknown as (params: FormData) => Promise<any>)(formData)\n } else {\n const formData = new FormData()\n const __apiParams = {} as any\n // 部分组装为 formdata\n for (const [k, v] of Object.entries(apiParams as any)) {\n if (transformApiParamsToFormData.filterNames.includes(k)) {\n __apiParams[k] = v\n } else {\n if (\n transformApiParamsToFormData['fileFiledName'] &&\n k === transformApiParamsToFormData['fileFiledName']!\n ) {\n ;(v as File[]).forEach((file) => {\n formData.append(transformApiParamsToFormData!['fileFiledName']!, file)\n })\n } else {\n formData.append(k, v as any)\n }\n }\n }\n __apiParams['formData'] = formData\n apiResult = await api!(__apiParams)\n }\n } else {\n apiResult = await api!(apiParams)\n }\n\n const apiSuccess = useSuccessPassRes ? apiResult.success : apiResult.data && apiResult.success\n if (apiSuccess) {\n resultRef.value = apiResult.data\n errorRef.value = ''\n\n successMessage && createMessage.success(successMessage())\n\n if (afterApi && isFunction(afterApi)) {\n resultRef.value = (await afterApi(apiResult.data)) || apiResult.data\n errorRef.value = ''\n }\n } else {\n resultRef.value = []\n errorRef.value = failureMessage ? failureMessage() : DEFAULT_HTTP_ERROR_TIP(tavI18n)\n }\n } catch (error: any) {\n resultRef.value = []\n errorRef.value = failureMessage ? failureMessage() : DEFAULT_HTTP_ERROR_TIP(tavI18n)\n // createMessage.error(failureMessage ? failureMessage() : DEFAULT_HTTP_ERROR_TIP(tavI18n))\n if (catchError && isFunction(catchError)) {\n await catchError(error)\n }\n } finally {\n if (loading) {\n loading.value.value = false\n } else {\n setLoading(false)\n }\n setDisable(false)\n callback && callback()\n }\n }\n\n const result = computed(() => unref(resultRef))\n const error = computed(() => unref(errorRef))\n\n return {\n result,\n error,\n handleApi,\n }\n}\n\nexport type UseRequestReturn = ReturnOf<typeof useRequest>\n"],"names":[],"mappings":"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"}