85 lines
2.4 KiB
JavaScript
85 lines
2.4 KiB
JavaScript
export function isEnglishLocale(i18n) {
|
||
return !!(i18n && i18n.locale === 'en-US')
|
||
}
|
||
|
||
export function getDictLabel(item, isEn) {
|
||
if (!item) return ''
|
||
if (isEn) {
|
||
return item.dict_value_en || item.dict_value_zh || item.dict_value || ''
|
||
}
|
||
return item.dict_value_zh || item.dict_value || item.dict_value_en || ''
|
||
}
|
||
|
||
export function extractConsultOptionList(res) {
|
||
if (res && Array.isArray(res.data)) return res.data
|
||
if (res && res.data && Array.isArray(res.data.data)) return res.data.data
|
||
return []
|
||
}
|
||
|
||
export function normalizeDictOptions(list, type) {
|
||
return list
|
||
.filter(item => item && item.dict_type === type)
|
||
.sort((a, b) => Number(a.sort_order || 0) - Number(b.sort_order || 0))
|
||
.map(item => ({
|
||
id: String(item.dict_key),
|
||
nameZh: item.dict_value_zh || item.dict_value || '',
|
||
nameEn: item.dict_value_en || item.dict_value_zh || item.dict_value || ''
|
||
}))
|
||
}
|
||
|
||
export function parseDirectionParts(label, isEn) {
|
||
if (!label) {
|
||
return { title: '', desc: '' }
|
||
}
|
||
|
||
const text = String(label)
|
||
if (isEn) {
|
||
const match = text.match(/^(.+?)\s*\((.+)\)\s*$/)
|
||
return match
|
||
? { title: match[1].trim(), desc: match[2].trim() }
|
||
: { title: text, desc: '' }
|
||
}
|
||
|
||
const match = text.match(/^(.+?)((.+?))$/)
|
||
return match
|
||
? { title: match[1].trim(), desc: match[2].trim() }
|
||
: { title: text, desc: '' }
|
||
}
|
||
|
||
export function normalizeDirectionOptions(list) {
|
||
return list
|
||
.filter(item => item && item.dict_type === 'direction')
|
||
.sort((a, b) => Number(a.sort_order || 0) - Number(b.sort_order || 0))
|
||
.map(item => {
|
||
const nameZh = item.dict_value_zh || item.dict_value || ''
|
||
const nameEn = item.dict_value_en || nameZh
|
||
const parts = parseDirectionParts(nameZh, false)
|
||
|
||
return {
|
||
id: String(item.dict_key),
|
||
nameZh,
|
||
nameEn,
|
||
titleZh: parts.title,
|
||
descZh: parts.desc,
|
||
titleEn: parseDirectionParts(nameEn, true).title,
|
||
descEn: parseDirectionParts(nameEn, true).desc
|
||
}
|
||
})
|
||
}
|
||
|
||
export function localizeDictOptions(options, isEn) {
|
||
return (options || []).map(item => ({
|
||
...item,
|
||
name: isEn ? item.nameEn : item.nameZh
|
||
}))
|
||
}
|
||
|
||
export function localizeDirectionOptions(options, isEn) {
|
||
return (options || []).map(item => ({
|
||
...item,
|
||
name: isEn ? item.nameEn : item.nameZh,
|
||
title: isEn ? item.titleEn : item.titleZh,
|
||
desc: isEn ? item.descEn : item.descZh
|
||
}))
|
||
}
|