{"version":3,"file":"useColumnApi2.mjs","sources":["../../../../../../../../packages/components/table-pro/src/hooks/useColumnApi.ts"],"sourcesContent":["import { unref, watch } from 'vue'\nimport { treeToList } from '@tav-ui/utils'\nimport { ComponentName } from '../const'\nimport type { ConfigProviderContext } from '@tav-ui/hooks/global/useGlobalProvider'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { TableProColumn, TableProProps } from '../types'\nimport type { CustomActionRef } from '../typings'\nimport type { Emitter } from '@tav-ui/utils/mitt'\n\nexport function useColumnApi(\n  // tablePropsRef: ComputedRef<TableProProps>,\n  id: TableProProps['id'],\n  customActionConfigColumn: TableProProps['customActionConfig']['column'],\n  globalContext: Ref<Partial<ConfigProviderContext>>,\n  tableEmitter: Emitter\n) {\n  const globalConfig = unref(globalContext)\n  if (!globalConfig) return null\n  const globalConfigComponents = unref(globalConfig)['components']\n  if (!globalConfigComponents) return null\n  const tableGlobalConfig = unref(globalConfigComponents)[ComponentName]\n  if (!tableGlobalConfig) return null\n  const appId = unref(globalConfig)['appId']\n  const userInfo = unref(globalConfig)['userInfo']\n  const columnsGetApi = tableGlobalConfig.columnsGetApi\n  const columnsSetApi = tableGlobalConfig.columnsSetApi\n  if (!userInfo || !columnsGetApi || !columnsSetApi) return null\n\n  /** 获取当前table id */\n  function getTableId() {\n    // return unref(tablePropsRef).id!\n    return id\n  }\n\n  /** 获取表格列数据参数 module */\n  function getColumnApiParamModule() {\n    return `appId:${appId}_user:${userInfo?.phone}_table:${getTableId()}`\n  }\n\n  /** 获取表格列数据参数 version */\n  function getColumnApiParamVersion() {\n    return `appId:${appId}_user:${userInfo?.phone}_table:${getTableId()}`\n  }\n\n  /** 获取表格列持久化接口信息 */\n  function getColumnApiInfo(\n    columnSettingInfo: any,\n    type: 'get' | 'set',\n    module = getColumnApiParamModule(),\n    version = getColumnApiParamVersion()\n  ) {\n    const apiInfo = {\n      api: null as any,\n      params: {\n        module,\n        version,\n        tableJson: null as any,\n      },\n    }\n    if (type === 'get') {\n      const api = columnsGetApi\n      if (api) apiInfo.api = api\n    }\n\n    if (type === 'set') {\n      const api = columnsSetApi\n      if (api) {\n        apiInfo.api = api\n      }\n    }\n\n    if (columnSettingInfo) {\n      apiInfo.params.tableJson = JSON.stringify(columnSettingInfo)\n    } else {\n      Reflect.deleteProperty(apiInfo.params, 'tableJson')\n    }\n\n    return apiInfo\n  }\n\n  /** 获取表格列配置，覆盖当前列 */\n  function useCachedColumnCoverCurrentColumns(\n    getColumns: ComputedRef<{\n      columns: TableProColumn[]\n    }>,\n    customActionRef: Ref<CustomActionRef | null>\n  ) {\n    /**\n     * 必须已当前传入的columns为主，因为传入的列配置中可能包含自定义逻辑\n     * @param columns\n     * @param cachedColumns\n     * @returns\n     */\n    const handleMerge = (columns, cachedColumns) => {\n      if (!cachedColumns && !cachedColumns.length) return columns\n\n      const columnsList = treeToList(columns, { id: 'key' })\n\n      const handleColumn = (cachedColumn) => {\n        const { key } = cachedColumn\n        const keySplitResult = key.split('-')\n        const targetKey = keySplitResult[keySplitResult.length - 1]\n        const targetKeySplitResult = targetKey.split('_')\n        const field = targetKeySplitResult[targetKeySplitResult.length - 1]\n\n        const targetColumn = columnsList.find((column) => {\n          return field === column.field\n        })\n\n        if (targetColumn) {\n          return {\n            ...targetColumn,\n            title: cachedColumn.title,\n            key: cachedColumn.key,\n            disabled: cachedColumn.disabled,\n            visible: cachedColumn.visible,\n          }\n        } else {\n          return null\n        }\n      }\n\n      const traverse = (cachedColumns) => {\n        //修改前逻辑\n        const datas = cachedColumns.map((cachedColumn) => {\n          if (cachedColumn.children && cachedColumn.children.length) {\n            const current = handleColumn(cachedColumn)\n            const children = traverse(cachedColumn.children)\n            return { ...current, children }\n          } else {\n            return handleColumn(cachedColumn)\n          }\n        })\n        return datas\n      }\n\n      const data = traverse(cachedColumns)\n      console.log(data)\n      return data\n    }\n\n    const coverCurrentColumns = async (columns) => {\n      const { api, params } = getColumnApiInfo(null, 'get')\n      const { success, data } = await api(params)\n      if (success && data && data.tableJson) {\n        const {\n          options: cachedColumns,\n          checkedList,\n          halfCheckedList = [],\n        } = JSON.parse(data.tableJson)\n        const options = handleMerge(columns, cachedColumns)\n        const coverColumnsSetting = (customActionRef.value?.settingsRef as any).columnRef\n          .coverColumnsSetting\n        if (coverColumnsSetting) coverColumnsSetting(options, checkedList, halfCheckedList)\n      } else {\n        tableEmitter.emit('table-pro:column-covered-no-data')\n      }\n    }\n\n    // watch(\n    //   () => getColumns,\n    //   (val) => {\n    //     if (val && val.value.columns && val.value.columns.length > 0) {\n    //       // 在原本column载入后再加载接口中的列配置\n    //       unref(tablePropsRef).customActionConfig.column && coverCurrentColumns(val.value.columns)\n    //     }\n    //   },\n    //   { deep: true, immediate: true }\n    // )\n    // 修改为监听 getColumns.value.columns，判断columns是否改变，避免离开页面后多次调用接口\n    watch(\n      () => getColumns.value.columns,\n      (val, oldVal) => {\n        if (val && val.length > 0) {\n          // unref(tablePropsRef).customActionConfig.column &&\n          customActionConfigColumn &&\n            JSON.stringify(val) !== JSON.stringify(oldVal) &&\n            coverCurrentColumns(val)\n        }\n      },\n      { deep: true, immediate: true }\n    )\n  }\n\n  return {\n    getTableId,\n    getColumnApiParamModule,\n    getColumnApiParamVersion,\n    getColumnApiInfo,\n    useCachedColumnCoverCurrentColumns,\n  }\n}\n\nexport type TableProColumnApiOptions = ReturnType<typeof useColumnApi>\n"],"names":[],"mappings":"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"}