import { getDictDataApi } from "@/api/common";
/**
 * 根据类型获取EUM数据。
 * 该函数用于根据给定的类型从本地存储或服务器获取EUM数据。如果数据已在本地存储中，则直接返回；
 * 否则，从服务器获取数据，并将其存储在本地，然后返回。
 *
 * @param {string} type - 数据的类型。用于指定要获取的EUM数据的类型。
 * @returns {Promise} - 返回一个Promise对象，该对象在数据获取成功后解析为相应的数据。
 */
export const getEumData = type => {
    const storage = getStorageSync(type);
    const codeToNumbers = data => {
        data.forEach(v => {
            v.code = Number(v.code);
        });
        return data;
    };
    return new Promise(resolve => {
        if (storage) {
            resolve(codeToNumbers(storage));
        } else {
            getDictDataApi([type]).then(res => {
                const data = res.data[type];
                setStorageSync(type, data);
                resolve(codeToNumbers(data));
            });
        }
    });
};
export const getEnumText = async (type, code) => {
    const eumData = await getEumData(type);
    return eumData.find(item => item.code == code)?.text || "无";
};
/**
 * 将数据存储在本地存储空间中。
 * @param {string} key 要存储的数据的关键字，用于检索数据。
 * @param {*} data 要存储的具体数据，可以是各种数据类型。
 */
export const setStorageSync = (key, data) => {
    uni.setStorageSync(key, data);
};
export const getStorageSync = key => uni.getStorageSync(key);

// 路由跳转
export const navigateTo = (url, type = "navigateTo") => {
    if (!url) return;
    uni[type]({
        url: url
    });
};
