tav-ui
Version:
1 lines • 11.7 kB
Source Map (JSON)
{"version":3,"file":"cascade-pro2.mjs","sources":["../../../../../../../../packages/components/cascade-pro/src/utils/cascade-pro.ts"],"sourcesContent":["import pinyin from 'js-pinyin'\nimport type { CascadeProOption } from '../types'\n\n/**\n * 获取汉字拼音首字母\n *\n * @param name\n * @param idx 第几位,默认为 0\n * @returns\n */\nexport function getLetter(name: string | undefined, idx = 0): string {\n if (!name) return 'Z' // 无值则归属最后一个字母\n if (name.indexOf('重庆') > -1) return 'C' // 多音字修正\n return pinyin.getCamelChars(name)[idx]\n}\n\nexport function createGroupOptions(level: number) {\n const cache = [] as any[]\n for (let i = 0; i < level; i++) {\n cache[i] = []\n }\n return cache as CascadeProOption[][]\n}\n\nconst DEFAULT_CONFIG = {\n name: 'name',\n id: 'id',\n children: 'children',\n pid: 'pid',\n}\n\ntype TreeHelperConfig = typeof DEFAULT_CONFIG\n\nconst getConfig = (config: Partial<TreeHelperConfig>) => Object.assign({}, DEFAULT_CONFIG, config)\n\n/**\n * 重新生成地址信息,原数据依赖于 geo.ts 中的 ProvinceCityOptions。目前只支持三级联动(省-市-区)\n *\n * @param tree 原始数据\n * @param deleteParentChildren\n * @returns\n */\n\n/**\n * 重新生成组件所需数据,默认options原数据为地址数据,依赖于 geo.ts 中的 ProvinceCityOptions。目前只支持三级联动(省-市-区)\n *\n * @param options props 中传入 options 原始数据\n * @param keyConfig\n * @param fieldLength 即 fields.length\n * @param isFirstLetterVisible\n * @returns\n */\nexport function handleOptions(\n options: any[],\n keyConfig,\n fieldLength,\n isFirstLetterVisible\n): {\n tree: CascadeProOption[]\n group: CascadeProOption[][]\n list: CascadeProOption[]\n} {\n /** 处理后的原始数据 */\n const treeOptions: CascadeProOption[] = []\n /** 根据 fields 分组后的数据 */\n const groupOptions: CascadeProOption[][] = createGroupOptions(fieldLength)\n /** 扁平化数据 */\n const listOptions: CascadeProOption[] = [] // TODO 删掉 children 减少内存做优化\n\n if (fieldLength <= 0)\n return {\n tree: treeOptions,\n group: groupOptions,\n list: listOptions,\n }\n\n /** 根据 level 创建二维数组数据,一层代表一个field */\n let level = 0\n /** 处理数据 */\n const conf = getConfig(keyConfig) as TreeHelperConfig\n const { name, id, children } = conf\n\n function handler(\n options: any[],\n tree: any[],\n group: any[],\n list: any[],\n pid = '',\n idPath = '',\n namePath = ''\n ) {\n for (let i = 0; i < options.length; i++) {\n const temp = {\n ...options[i],\n name: `${options[i][name]}`,\n id: `${options[i][id]}`,\n pid: pid ? `${pid}` : '',\n idPath: idPath ? `${idPath}-${options[i][id]}` : `${options[i][id]}`,\n namePath: namePath ? `${namePath}-${options[i][name]}` : `${options[i][name]}`,\n isIdSameAsOnlyOneChild:\n options[i][children] &&\n options[i][children].length &&\n options[i][children].length === 1 &&\n options[i][children][0][id] === options[i][id]\n ? true\n : false,\n }\n\n if (isFirstLetterVisible) {\n temp['firstLetter'] = getLetter(options[i][name])\n }\n\n level = temp.idPath.split('-').length - 1\n\n if (level <= fieldLength - 1) {\n if (options[i][children] && options[i][children].length) {\n temp['children'] = []\n tree.push(temp)\n\n group[level].push(temp)\n\n list.push(temp)\n\n handler(\n options[i][children],\n temp['children'],\n group,\n list,\n temp.id,\n temp.idPath || temp.id,\n temp.namePath || temp.name\n )\n } else {\n tree.push(temp)\n\n group[level].push(temp)\n\n list.push(temp)\n }\n }\n\n if (i === options.length - 1 && level === fieldLength - 1) level = 0\n }\n }\n\n handler(options, treeOptions, groupOptions, listOptions)\n\n return {\n tree: treeOptions,\n group: groupOptions,\n list: listOptions,\n }\n}\n\nexport const DEFAULT_CASCADE_PRO_SELECT_RECORD: CascadeProOption = {\n name: '',\n id: '',\n pid: '',\n idPath: '',\n namePath: '',\n}\n\nexport const DEFAULT_CASCADE_PRO_SELECT_RECORDS: CascadeProOption[] = [\n DEFAULT_CASCADE_PRO_SELECT_RECORD,\n]\n\n/**\n * 后端以对象数组存储,对象中key顺序不固定,所以这里需要使用 fields 将其修改为组件内需要的数据结构\n *\n * @param defaultValue\n * @param fields\n * @returns\n */\nexport function getDefaultValue(\n defaultValue: any[],\n fields: string[]\n): {\n selectRecord: CascadeProOption\n selectRecords: CascadeProOption[]\n} {\n if (defaultValue && defaultValue.length > 0) {\n const selectRecords = defaultValue.map((option) => {\n const temp: CascadeProOption = { ...option }\n let name = ''\n let id = ''\n let pid = ''\n let idPath = ''\n let namePath = ''\n\n for (let i = 0; i < fields.length; i++) {\n const key = fields[i]\n if (option[key]) {\n name = `${option[`${key}Name`]}`\n id = `${option[key]}`\n idPath = idPath ? `${idPath}-${option[key]}` : `${option[key]}`\n namePath = namePath ? `${namePath}-${option[`${key}Name`]}` : `${option[`${key}Name`]}`\n }\n }\n\n const idPathSplitResult = idPath.split('-')\n pid = idPathSplitResult[idPathSplitResult.length - 1 - 1]\n ? idPathSplitResult[idPathSplitResult.length - 1 - 1]\n : ''\n\n return {\n ...temp,\n name,\n id,\n pid,\n idPath,\n namePath,\n }\n })\n const selectRecord = selectRecords.slice(-1)[0]\n return {\n selectRecord,\n selectRecords,\n }\n } else {\n return {\n selectRecord: DEFAULT_CASCADE_PRO_SELECT_RECORD,\n selectRecords: DEFAULT_CASCADE_PRO_SELECT_RECORDS,\n }\n }\n}\n"],"names":[],"mappings":"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"}