trs-ui-app
Version:
TRS 可视化低代码平台 前端移动 UI 组件库 👍
38 lines (35 loc) • 1.61 kB
JavaScript
import { toRefs, ref } from 'vue';
import useAPIData from './useAPIData.js';
import useStaticData from './useStaticData.js';
async function dealData(data, sourceOptions, eventHandlers) {
if (sourceOptions.after && eventHandlers[sourceOptions.after]) {
data = await eventHandlers[sourceOptions.after](data);
}
return data;
}
async function useGetData(sourceKey, props, allRefs, dymicStores, globalData, route, eventHandlers, logFunction, selfStates = {}, params = {}, isResutlSingleObj = false) {
const { uiSchema, trsData } = toRefs(props);
const data = ref([]);
if (trsData.value && JSON.stringify(trsData.value) !== '{}' && trsData.value[sourceKey]) {
data.value = trsData.value[sourceKey];
if (isResutlSingleObj) {
data.value = data.value[0];
}
return data;
}
const dataOption = uiSchema.value.dataOptions.find((it) => it.sourceKey === sourceKey);
if (dataOption && dataOption.sourceType === 'API') {
data.value = await useAPIData(dataOption.sourceOptions, dymicStores, allRefs, selfStates, globalData, route, params, isResutlSingleObj, eventHandlers, logFunction);
data.value = await dealData(data.value, dataOption.sourceOptions, eventHandlers);
return data;
}
else if (dataOption && dataOption.sourceType === 'Static') {
data.value = useStaticData(dataOption.sourceOptions.data);
if (isResutlSingleObj) {
data.value = data.value[0];
}
return data;
}
return data;
}
export { useGetData as default };