diff --git a/package.json b/package.json index 85393ce..df5943a 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "lodash": "4.17.21", "pinia": "2.0.23", "pinia-plugin-persist-uni": "1.2.0", + "pinyin-pro": "^3.27.0", "uview-plus": "3.1.20", "vconsole": "3.15.1", "vue": "3.2.45", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f7f452b..71729c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -74,6 +74,9 @@ importers: pinia-plugin-persist-uni: specifier: 1.2.0 version: 1.2.0(pinia@2.0.23(typescript@4.8.3)(vue@3.2.45))(vue@3.2.45) + pinyin-pro: + specifier: ^3.27.0 + version: 3.27.0 uview-plus: specifier: 3.1.20 version: 3.1.20 @@ -2946,6 +2949,9 @@ packages: typescript: optional: true + pinyin-pro@3.27.0: + resolution: {integrity: sha512-Osdgjwe7Rm17N2paDMM47yW+jUIUH3+0RGo8QP39ZTLpTaJVDK0T58hOLaMQJbcMmAebVuK2ePunTEVEx1clNQ==} + pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} @@ -7572,6 +7578,8 @@ snapshots: optionalDependencies: typescript: 4.8.3 + pinyin-pro@3.27.0: {} + pirates@4.0.7: {} pixelmatch@4.0.2: diff --git a/src/config.ts b/src/config.ts index 435a593..510e355 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,7 +1,7 @@ const ip: string = "127.0.0.1:8897"; // const ip: string = "lzcxsx.cn"; const fwqip: string = "lzcxsx.cn"; -//const ip: string = "zhxy.yufangzc.com"; +// const ip: string = "zhxy.yufangzc.com"; //const fwqip: string = "zhxy.yufangzc.com"; //打包服务器接口代理标识 const SERVERAGENT: string = "/jzd-api"; diff --git a/src/utils/pinyinUtil.ts b/src/utils/pinyinUtil.ts new file mode 100644 index 0000000..21e21e4 --- /dev/null +++ b/src/utils/pinyinUtil.ts @@ -0,0 +1,50 @@ +// utils/pinyinUtils.ts +import { pinyin } from 'pinyin-pro'; + +/** + * 将汉字转换为拼音 + * @param text 需要转换的汉字文本 + * @returns 拼音字符串 + */ +export function chineseToPinyin(text: string): string { + try { + return pinyin(text, { toneType: 'none', type: 'array', mode: 'surname' }).join(''); + } catch (error) { + console.error('拼音转换失败:', error); + return text; + } +} + +/** + * 获取汉字首字母 + * @param text 需要转换的汉字文本 + * @returns 首字母字符串 + */ +export function getFirstLetter(text: string): string { + try { + return pinyin(text, { pattern: 'first', toneType: 'none' }); + } catch (error) { + console.error('首字母提取失败:', error); + return text; + } +} + +/** + * 中文排序函数 + * @param list 需要排序的数组 + * @param key 排序字段(如果是对象数组) + * @returns 排序后的数组 + */ +export function sortChinese(list: any, key?: string) { + return list.sort((a:any, b: any) => { + const textA = key ? a[key] : a as unknown as string; + const textB = key ? b[key] : b as unknown as string; + + const pinyinA = chineseToPinyin(textA); + const pinyinB = chineseToPinyin(textB); + + return pinyinA.localeCompare(pinyinB, 'zh-Hans-CN', { + sensitivity: 'accent' + }); + }); +} \ No newline at end of file