{"version":3,"file":"use-handle-data-source2.mjs","sources":["../../../../../../../../../packages/components/file/src/FileCard/hooks/use-handle-data-source.ts"],"sourcesContent":["import { type ComputedRef, type SetupContext, computed, shallowRef, unref } from 'vue'\nimport { tavI18n } from '@tav-ui/locales'\nimport { type ApiQueryFileByActualIds, type FileCardEmits, type FileCardProps } from '../types'\nimport {\n  type FileActionUploadApiResponseRecord,\n  type FileActualIdsObjectArray,\n  type GlobalConfigFileProps,\n} from '../../typings'\nimport {\n  type UseRequestHandleApiDefaultOptions,\n  type UseRequestReturn,\n  type VersionCaches,\n} from '../../hooks'\nimport {\n  type ReturnOf,\n  validateDataSourceIsObjectArray,\n  validateDataSourceIsStringArray,\n} from '../../utils'\n\nexport function useHandleDataSource(options: {\n  mergedProps: ComputedRef<GlobalConfigFileProps & FileCardProps>\n  emits: SetupContext<FileCardEmits>['emit']\n  VersionCachesController: VersionCaches\n  ApiResult: ComputedRef<any>\n  ApiError: ComputedRef<string>\n  handleApi: UseRequestReturn['handleApi']\n}) {\n  const { mergedProps, ApiResult, ApiError, handleApi } = options\n\n  //:========================================: api actions :========================================://\n  function apiQueryFileOptions(apiParams: FileCardProps['apiParams']) {\n    if (!mergedProps.value.apiQueryFileList) {\n      console.warn('[tavui TaFileCard] apiQueryFileList is undefined')\n      return\n    }\n\n    const modeQueryApiTypeListConfig: any = {\n      api: mergedProps.value.apiQueryFileList,\n      beforeApi: mergedProps.value.beforeApiQueryFileList,\n      afterApi: mergedProps.value.afterApiQueryFileList,\n      apiParams: {\n        appId: apiParams.appId,\n        businessCheck: apiParams.businessCheck,\n        ...(apiParams.businessDisplayItem\n          ? {\n              businessDisplayItem: apiParams.businessDisplayItem,\n            }\n          : {}),\n        ...(apiParams.businessIds\n          ? {\n              businessIds: apiParams.businessIds,\n            }\n          : {}),\n        businessKey: apiParams.businessKey,\n        ...(apiParams.businessSearchItems\n          ? {\n              businessSearchItems: apiParams.businessSearchItems,\n            }\n          : {}),\n        endTime: apiParams.endTime,\n        ...(typeof apiParams.excludeDeleted !== 'undefined'\n          ? { excludeDeleted: apiParams.excludeDeleted }\n          : {}),\n        ...(typeof apiParams.excludeStaging !== 'undefined'\n          ? { excludeStaging: apiParams.excludeStaging }\n          : {}),\n        ...(apiParams.ids ? { ids: apiParams.ids } : {}),\n        moduleCode: apiParams.moduleCode,\n        owners: apiParams.owners,\n        permissionControl: apiParams.permissionControl,\n        ...(apiParams.searchValue ? { searchValue: apiParams.searchValue } : {}),\n        ...(apiParams.startTime ? { startTime: apiParams.startTime } : {}),\n        ...(apiParams.suffix ? { suffix: apiParams.suffix } : {}),\n        ...(apiParams.typeCodes ? { typeCodes: apiParams.typeCodes } : {}),\n        ...(apiParams.visibleSubModules ? { visibleSubModules: apiParams.visibleSubModules } : {}),\n      },\n    }\n\n    const options: UseRequestHandleApiDefaultOptions<\n      FileCardProps['apiParams'],\n      FileActionUploadApiResponseRecord[]\n    > = {\n      ...modeQueryApiTypeListConfig,\n      failureMessage: () => {\n        return tavI18n('Tav.common.httpError')\n      },\n    }\n\n    if (mergedProps.value.mode === 'read') {\n      //\n    } else if (mergedProps.value.mode === 'create') {\n      // 必须为空数据状态\n    } else if (mergedProps.value.mode === 'update') {\n      //\n    } else {\n      //\n    }\n\n    return options\n  }\n\n  function apiQueryFileByActualIdsOptions(apiParams: {\n    actualIds: FileCardProps['apiParams']['actualIds']\n  }) {\n    if (!mergedProps.value.apiQueryFileByActualIds) {\n      console.warn('[tavui TaFileCard] apiQueryFileByActualIds is undefined')\n      return\n    }\n\n    const options: UseRequestHandleApiDefaultOptions<\n      ApiQueryFileByActualIds,\n      FileActionUploadApiResponseRecord[]\n    > = {\n      api: mergedProps.value.apiQueryFileByActualIds,\n      beforeApi: mergedProps.value.beforeApiQueryFileByActualIds,\n      afterApi: mergedProps.value.afterApiQueryFileByActualIds,\n      apiParams: {\n        fileActualIds: apiParams.actualIds,\n      },\n      failureMessage: () => {\n        return tavI18n('Tav.common.httpError')\n      },\n    }\n\n    // if (mergedProps.value.mode === 'read') {\n    // } else if (mergedProps.value.mode === 'create') {\n    // } else if (mergedProps.value.mode === 'update') {\n    // } else {\n    // }\n\n    return options\n  }\n  //:========================================: api actions :========================================://\n\n  async function handleStringArrayDataSource() {\n    // 字符串数组，需要查接口处理数据格式\n    const options = apiQueryFileByActualIdsOptions({\n      actualIds: mergedProps.value.dataSource as string[],\n    })\n    if (!options) {\n      setDataSource([])\n      return\n    }\n    await handleApi(options)\n    if (!ApiError.value) {\n      setDataSource(ApiResult.value)\n      return\n    } else {\n      setDataSource([])\n      return\n    }\n  }\n\n  function handleObjectArrayDataSource() {\n    // 对象数组，需要处理数据格式\n    setDataSource(\n      (mergedProps.value.dataSource as FileActualIdsObjectArray)\n        .map((row) => row.versionList.at(-1))\n        .filter(Boolean) as FileActionUploadApiResponseRecord[]\n    )\n  }\n\n  async function handleApiDataSource(params?: any) {\n    const options = apiQueryFileOptions({ ...mergedProps.value.apiParams, ...(params ?? {}) })\n    if (!options) {\n      setDataSource([])\n      return\n    }\n    await handleApi(options)\n    if (!ApiError.value && ApiResult.value.length > 0) {\n      setDataSource(ApiResult.value)\n      return\n    } else {\n      setDataSource([])\n      return\n    }\n  }\n\n  const dataSourceRef = shallowRef<FileActionUploadApiResponseRecord[]>([])\n  async function handleDataSource() {\n    if (mergedProps.value.mode === 'read') {\n      if (mergedProps.value.dataSource) {\n        /**\n         * 只读模式，使用 datasource 数据源\n         * 1. reload 方法直接返回（给不执行提示）\n         */\n        if (validateDataSourceIsStringArray(mergedProps.value.dataSource)) {\n          await handleStringArrayDataSource()\n        } else if (validateDataSourceIsObjectArray(mergedProps.value.dataSource)) {\n          handleObjectArrayDataSource()\n        } else {\n          setDataSource(mergedProps.value.dataSource as FileActionUploadApiResponseRecord[])\n        }\n      } else {\n        /**\n         * 只读模式，使用 api 数据源\n         * 1. 支持不分页接口\n         */\n        await handleApiDataSource()\n      }\n    } else if (mergedProps.value.mode === 'create') {\n      if (mergedProps.value.dataSource) {\n        /**\n         * 新增模式，使用 datasource 数据源\n         * 1. reload 方法直接返回（给不执行提示）\n         */\n        if (validateDataSourceIsStringArray(mergedProps.value.dataSource)) {\n          await handleStringArrayDataSource()\n        } else if (validateDataSourceIsObjectArray(mergedProps.value.dataSource)) {\n          handleObjectArrayDataSource()\n        } else {\n          setDataSource([])\n        }\n      } else {\n        /**\n         * 新增模式，不支持 api 数据源，因为此时无 bizid & bizkey。\n         * 强制置为 empty\n         */\n        console.warn('[tavui TaFileCard] \"create\" mode force \"api\" empty')\n        setDataSource([])\n      }\n    } else if (mergedProps.value.mode === 'update') {\n      if (mergedProps.value.dataSource) {\n        /**\n         * 编辑模式，使用 datasource 数据源\n         * 1. reload 方法直接返回（给不执行提示）\n         */\n        if (validateDataSourceIsStringArray(mergedProps.value.dataSource)) {\n          await handleStringArrayDataSource()\n        } else if (validateDataSourceIsObjectArray(mergedProps.value.dataSource)) {\n          handleObjectArrayDataSource()\n        } else {\n          setDataSource(mergedProps.value.dataSource as FileActionUploadApiResponseRecord[])\n        }\n      } else {\n        /**\n         * 编辑模式，使用 api 数据源\n         * 1. 只能使用不分页接口\n         */\n        await handleApiDataSource()\n      }\n    } else {\n      if (mergedProps.value.dataSource) {\n        /**\n         * 立即更新模式，使用 datasource 数据源\n         * 1. reload 方法直接返回（给不执行提示）\n         */\n        if (validateDataSourceIsStringArray(mergedProps.value.dataSource)) {\n          await handleStringArrayDataSource()\n        } else if (validateDataSourceIsObjectArray(mergedProps.value.dataSource)) {\n          handleObjectArrayDataSource()\n        } else {\n          setDataSource(mergedProps.value.dataSource as FileActionUploadApiResponseRecord[])\n        }\n      } else {\n        /**\n         * 立即更新模式，使用 api 数据源\n         * 1. 支持不分页接口\n         */\n        await handleApiDataSource()\n      }\n    }\n  }\n\n  function setDataSource(data: FileActionUploadApiResponseRecord[]) {\n    dataSourceRef.value = [...data]\n  }\n\n  const dataSource = computed(() => unref(dataSourceRef))\n\n  return {\n    apiActions: {\n      apiQueryFileOptions,\n      apiQueryFileByActualIdsOptions,\n    },\n    dataSource,\n    handleDataSource,\n    setDataSource,\n    handleApiDataSource,\n  }\n}\n\nexport type UseHandleDataSourceReturn = ReturnOf<typeof useHandleDataSource>\n"],"names":[],"mappings":"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"}