import { cascaderHn } from '/@/api/model/dict'

const storageKey = 'app_dict_data_area_cascaderHn'

let areaOptions = []
export async function getDictData() {
    // 先从本地加载数据
    let dictData = getLocalDict()
    if (!dictData) {
        // 如果本地没有数据，则从接口获取
        const res = await cascaderHn()
        const data = JSON.stringify(res[0].children).replace(/label/g, 'text')
        uni.setStorageSync(storageKey, data)
        dictData = JSON.parse(data)
    }

    areaOptions = dictData
    return dictData
}

/**
 *  获取本地数据
 */
export function getLocalDict() {
    const data = uni.getStorageSync(storageKey)
    if (data) {
        return data ? JSON.parse(data) : null
    }
    return null
}

/**
 *  刷新数据
 */
export function refreshDictData() {
    // 删除本地数据
    uni.removeStorageSync(storageKey)
    // 重新获取数据
    getDictData()
}

export function getText(scope: string, spliced: string) {
    if (!scope || !areaOptions || areaOptions.length === 0) {
        return ''
    }

    const values = scope.split(',')
    const labels = []

    // 递归查找label
    const findLabel = (nodes, value) => {
        for (const node of nodes) {
            if (node.value === value) {
                return node.text
            }
            if (node.children && node.children.length > 0) {
                const found = findLabel(node.children, value)
                if (found) {
                    return found
                }
            }
        }
        return null // 如果没找到，返回原始value
    }

    for (const value of values) {
        const text = findLabel(areaOptions, value.trim())
        labels.push(text)
    }

    if (spliced) {
        return labels ? labels.join(spliced) : ''
    } else {
        return labels ? labels.join('') : ''
    }
}
