tav-ui
Version:
138 lines (133 loc) • 4.73 kB
JavaScript
;
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