UNPKG

tav-ui

Version:
138 lines (133 loc) 4.73 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); require('../../../../utils/index2.js'); var _const = require('../const2.js'); var treeHelper = require('../../../../utils/helper/treeHelper2.js'); function useColumnApi(id, customActionConfigColumn, globalContext, tableEmitter) { const globalConfig = vue.unref(globalContext); if (!globalConfig) return null; const globalConfigComponents = vue.unref(globalConfig)["components"]; if (!globalConfigComponents) return null; const tableGlobalConfig = vue.unref(globalConfigComponents)[_const.ComponentName]; if (!tableGlobalConfig) return null; const appId = vue.unref(globalConfig)["appId"]; const userInfo = vue.unref(globalConfig)["userInfo"]; const columnsGetApi = tableGlobalConfig.columnsGetApi; const columnsSetApi = tableGlobalConfig.columnsSetApi; if (!userInfo || !columnsGetApi || !columnsSetApi) return null; function getTableId() { return id; } function getColumnApiParamModule() { return `appId:${appId}_user:${userInfo?.phone}_table:${getTableId()}`; } function getColumnApiParamVersion() { return `appId:${appId}_user:${userInfo?.phone}_table:${getTableId()}`; } function getColumnApiInfo(columnSettingInfo, type, module = getColumnApiParamModule(), version = getColumnApiParamVersion()) { const apiInfo = { api: null, params: { module, version, tableJson: null } }; if (type === "get") { const api = columnsGetApi; if (api) apiInfo.api = api; } if (type === "set") { const api = columnsSetApi; if (api) { apiInfo.api = api; } } if (columnSettingInfo) { apiInfo.params.tableJson = JSON.stringify(columnSettingInfo); } else { Reflect.deleteProperty(apiInfo.params, "tableJson"); } return apiInfo; } function useCachedColumnCoverCurrentColumns(getColumns, customActionRef) { const handleMerge = (columns, cachedColumns) => { if (!cachedColumns && !cachedColumns.length) return columns; const columnsList = treeHelper.treeToList(columns, { id: "key" }); const handleColumn = (cachedColumn) => { const { key } = cachedColumn; const keySplitResult = key.split("-"); const targetKey = keySplitResult[keySplitResult.length - 1]; const targetKeySplitResult = targetKey.split("_"); const field = targetKeySplitResult[targetKeySplitResult.length - 1]; const targetColumn = columnsList.find((column) => { return field === column.field; }); if (targetColumn) { return { ...targetColumn, title: cachedColumn.title, key: cachedColumn.key, disabled: cachedColumn.disabled, visible: cachedColumn.visible }; } else { return null; } }; const traverse = (cachedColumns2) => { const datas = cachedColumns2.map((cachedColumn) => { if (cachedColumn.children && cachedColumn.children.length) { const current = handleColumn(cachedColumn); const children = traverse(cachedColumn.children); return { ...current, children }; } else { return handleColumn(cachedColumn); } }); return datas; }; const data = traverse(cachedColumns); console.log(data); return data; }; const coverCurrentColumns = async (columns) => { const { api, params } = getColumnApiInfo(null, "get"); const { success, data } = await api(params); if (success && data && data.tableJson) { const { options: cachedColumns, checkedList, halfCheckedList = [] } = JSON.parse(data.tableJson); const options = handleMerge(columns, cachedColumns); const coverColumnsSetting = (customActionRef.value?.settingsRef).columnRef.coverColumnsSetting; if (coverColumnsSetting) coverColumnsSetting(options, checkedList, halfCheckedList); } else { tableEmitter.emit("table-pro:column-covered-no-data"); } }; vue.watch(() => getColumns.value.columns, (val, oldVal) => { if (val && val.length > 0) { customActionConfigColumn && JSON.stringify(val) !== JSON.stringify(oldVal) && coverCurrentColumns(val); } }, { deep: true, immediate: true }); } return { getTableId, getColumnApiParamModule, getColumnApiParamVersion, getColumnApiInfo, useCachedColumnCoverCurrentColumns }; } exports.useColumnApi = useColumnApi; //# sourceMappingURL=useColumnApi2.js.map