UNPKG

tav-ui

Version:
1 lines 11.2 kB
{"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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"}