{"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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"}