UNPKG

tav-ui

Version:
148 lines (145 loc) 5.27 kB
import { ref, computed, unref } from 'vue'; import { isFunction, isObject, isBoolean } from 'lodash-es'; import '../../../../locales/index2.mjs'; import { useMessage } from '../../../../hooks/web/useMessage2.mjs'; import { DEFAULT_HTTP_ERROR_TIP } from '../consts2.mjs'; import { tavI18n } from '../../../../locales/transfer2.mjs'; const { createMessage } = useMessage(); function useRequest(options) { const resultRef = ref([]); const errorRef = ref(""); const { setLoading, setDisable, loading } = options; async function handleApi(options2) { const { apiParams: _apiParams, api: _api, beforeApi: _beforeApi, afterApi: _afterApi, catchError: _catchError, transformApiParamsToFormData: _transformApiParamsToFormData, successMessage: _successMessage, failureMessage: _failureMessage, useSuccessPassRes: _useSuccessPassRes, callback: _callback, responseDataType: _responseDataType = "array" } = options2; let apiParams = _apiParams; let api = _api; let beforeApi = _beforeApi; let afterApi = _afterApi; let catchError = _catchError; let transformApiParamsToFormData = _transformApiParamsToFormData; let successMessage = _successMessage; let failureMessage = _failureMessage; let useSuccessPassRes = _useSuccessPassRes; let callback = _callback; let responseDataType = _responseDataType; if (!api || !isFunction(api)) return; if (loading) { loading.value.value = true; } else { setLoading(true); } setDisable(true); try { if (beforeApi && isFunction(beforeApi)) { const beforeApiResult = await beforeApi(apiParams); if (isObject(beforeApiResult)) { apiParams = beforeApiResult.apiParams; api = beforeApiResult.api; beforeApi = beforeApiResult.beforeApi; afterApi = beforeApiResult.afterApi; catchError = beforeApiResult.catchError; transformApiParamsToFormData = beforeApiResult.transformApiParamsToFormData; successMessage = beforeApiResult.successMessage; failureMessage = beforeApiResult.failureMessage; useSuccessPassRes = beforeApiResult.useSuccessPassRes; callback = beforeApiResult.callback; responseDataType = beforeApiResult.responseDataType; } if (isBoolean(beforeApiResult) && beforeApiResult === false) { callback && callback(); return; } } if (responseDataType === "object") { resultRef.value = {}; } let apiResult; if (transformApiParamsToFormData) { if (!transformApiParamsToFormData.filterNames) { const formData = new FormData(); for (const [k, v] of Object.entries(apiParams)) { if (transformApiParamsToFormData["fileFiledName"] && k === transformApiParamsToFormData["fileFiledName"]) { ; v.forEach((file) => { formData.append(transformApiParamsToFormData["fileFiledName"], file); }); } else { formData.append(k, v); } } apiResult = await api(formData); } else { const formData = new FormData(); const __apiParams = {}; for (const [k, v] of Object.entries(apiParams)) { if (transformApiParamsToFormData.filterNames.includes(k)) { __apiParams[k] = v; } else { if (transformApiParamsToFormData["fileFiledName"] && k === transformApiParamsToFormData["fileFiledName"]) { ; v.forEach((file) => { formData.append(transformApiParamsToFormData["fileFiledName"], file); }); } else { formData.append(k, v); } } } __apiParams["formData"] = formData; apiResult = await api(__apiParams); } } else { apiResult = await api(apiParams); } const apiSuccess = useSuccessPassRes ? apiResult.success : apiResult.data && apiResult.success; if (apiSuccess) { resultRef.value = apiResult.data; errorRef.value = ""; successMessage && createMessage.success(successMessage()); if (afterApi && isFunction(afterApi)) { resultRef.value = await afterApi(apiResult.data) || apiResult.data; errorRef.value = ""; } } else { resultRef.value = []; errorRef.value = failureMessage ? failureMessage() : DEFAULT_HTTP_ERROR_TIP(tavI18n); } } catch (error2) { resultRef.value = []; errorRef.value = failureMessage ? failureMessage() : DEFAULT_HTTP_ERROR_TIP(tavI18n); if (catchError && isFunction(catchError)) { await catchError(error2); } } finally { if (loading) { loading.value.value = false; } else { setLoading(false); } setDisable(false); callback && callback(); } } const result = computed(() => unref(resultRef)); const error = computed(() => unref(errorRef)); return { result, error, handleApi }; } export { useRequest }; //# sourceMappingURL=use-request2.mjs.map