检查项目设置-套餐设置

This commit is contained in:
2025-11-26 16:18:47 +08:00
parent 6d9ff7dc10
commit 1bd2089047

View File

@@ -623,19 +623,104 @@ function handleDeleteRow(index) {
}).catch(() => {})
}
// 获取拼音首字母
function getPinYinFirstLetter(str) {
if (!str) return ''
// 简单的拼音首字母映射表(常用汉字)
const pinyinMap = {
'啊': 'A', '阿': 'A', '癌': 'A', '按': 'A', '暗': 'A',
'八': 'B', '白': 'B', '百': 'B', '班': 'B', '帮': 'B', '保': 'B', '报': 'B', '杯': 'B', '本': 'B', '鼻': 'B', '比': 'B', '变': 'B', '标': 'B', '表': 'B', '病': 'B', '部': 'B', '不': 'B',
'彩': 'C', '超': 'C', '查': 'C', '常': 'C', '肠': 'C', '成': 'C', '穿': 'C', '床': 'C', '次': 'C',
'大': 'D', '带': 'D', '单': 'D', '胆': 'D', '蛋': 'D', '导': 'D', '道': 'D', '的': 'D', '低': 'D', '地': 'D', '电': 'D', '点': 'D', '定': 'D', '动': 'D', '度': 'D', '多': 'D',
'二': 'E', '耳': 'E',
'发': 'F', '法': 'F', '反': 'F', '防': 'F', '房': 'F', '肺': 'F', '分': 'F', '风': 'F', '腹': 'F', '妇': 'F', '复': 'F',
'肝': 'G', '感': 'G', '高': 'G', '骨': 'G', '功': 'G', '宫': 'G', '管': 'G', '光': 'G', '广': 'G', '过': 'G',
'核': 'H', '黑': 'H', '红': 'H', '后': 'H', '化': 'H', '换': 'H', '患': 'H', '黄': 'H', '回': 'H', '会': 'H',
'基': 'J', '及': 'J', '急': 'J', '疾': 'J', '甲': 'J', '检': 'J', '简': 'J', '见': 'J', '降': 'J', '交': 'J', '结': 'J', '介': 'J', '金': 'J', '进': 'J', '经': 'J', '精': 'J', '颈': 'J', '静': 'J',
'开': 'K', '抗': 'K', '康': 'K', '科': 'K', '可': 'K', '口': 'K',
'来': 'L', '类': 'L', '理': 'L', '力': 'L', '例': 'L', '粒': 'L', '连': 'L', '量': 'L', '疗': 'L', '淋': 'L', '临': 'L', '流': 'L', '瘤': 'L', '路': 'L', '卵': 'L',
'慢': 'M', '门': 'M', '免': 'M', '面': 'M', '敏': 'M', '明': 'M', '模': 'M', '目': 'M',
'内': 'N', '脑': 'N', '尿': 'N', '凝': 'N', '女': 'N',
'排': 'P', '培': 'P', '皮': 'P', '片': 'P', '平': 'P', '普': 'P',
'期': 'Q', '其': 'Q', '前': 'Q', '强': 'Q', '切': 'Q', '清': 'Q', '球': 'Q', '全': 'Q',
'染': 'R', '热': 'R', '人': 'R', '容': 'R', '溶': 'R', '肉': 'R', '入': 'R', '乳': 'R',
'三': 'S', '色': 'S', '扫': 'S', '伤': 'S', '上': 'S', '少': 'S', '肾': 'S', '生': 'S', '声': 'S', '时': 'S', '实': 'S', '室': 'S', '试': 'S', '视': 'S', '手': 'S', '术': 'S', '双': 'S', '水': 'S', '速': 'S', '酸': 'S',
'胎': 'T', '糖': 'T', '套': 'T', '特': 'T', '体': 'T', '铁': 'T', '听': 'T', '通': 'T', '痛': 'T', '头': 'T', '图': 'T',
'外': 'W', '胃': 'W', '卫': 'W', '温': 'W', '五': 'W', '无': 'W',
'西': 'X', '洗': 'X', '系': 'X', '细': 'X', '下': 'X', '显': 'X', '线': 'X', '腺': 'X', '相': 'X', '消': 'X', '小': 'X', '心': 'X', '新': 'X', '型': 'X', '性': 'X', '胸': 'X', '血': 'X',
'压': 'Y', '炎': 'Y', '眼': 'Y', '验': 'Y', '腰': 'Y', '药': 'Y', '液': 'Y', '一': 'Y', '医': 'Y', '疫': 'Y', '阴': 'Y', '引': 'Y', '应': 'Y', '影': 'Y', '用': 'Y', '右': 'Y', '于': 'Y', '预': 'Y', '原': 'Y', '月': 'Y', '孕': 'Y', '运': 'Y',
'早': 'Z', '增': 'Z', '诊': 'Z', '正': 'Z', '症': 'Z', '支': 'Z', '脂': 'Z', '指': 'Z', '质': 'Z', '治': 'Z', '中': 'Z', '肿': 'Z', '重': 'Z', '注': 'Z', '主': 'Z', '状': 'Z', '子': 'Z', '自': 'Z', '总': 'Z', '组': 'Z', '左': 'Z', '做': 'Z'
}
let result = ''
for (let i = 0; i < str.length; i++) {
const char = str[i]
if (pinyinMap[char]) {
result += pinyinMap[char]
} else if (/[a-zA-Z]/.test(char)) {
result += char.toUpperCase()
} else if (/[0-9]/.test(char)) {
result += char
}
}
return result
}
// 初始化搜索列表
function initializeSearchList(row) {
if (!row.filteredList) {
row.filteredList = diagnosisTreatmentList.value
}
}
// 项目搜索处理(支持首字母和模糊搜索)
function handleProjectSearch(query, row) {
console.log('搜索关键字:', query)
if (!query || query.trim() === '') {
row.filteredList = diagnosisTreatmentList.value
return
}
const searchText = query.trim().toUpperCase()
row.filteredList = diagnosisTreatmentList.value.filter(item => {
const name = (item.name || item.itemName || '').toUpperCase()
const code = (item.busNo || item.code || '').toUpperCase()
// 1. 名称模糊匹配
if (name.includes(searchText)) {
return true
}
// 2. 编号模糊匹配
if (code.includes(searchText)) {
return true
}
// 3. 拼音首字母匹配
const pinyin = getPinYinFirstLetter(item.name || item.itemName || '')
if (pinyin.includes(searchText)) {
return true
}
return false
})
console.log(`搜索"${query}"找到 ${row.filteredList.length} 个结果`)
}
// 项目选择处理
function handleItemSelect(row) {
console.log('选择项目ID:', row.itemId)
console.log('诊疗项目列表:', diagnosisTreatmentList.value)
const item = diagnosisTreatmentList.value.find(i => i.id === row.itemId)
console.log('找到的项目:', item)
if (item) {
row.itemName = item.name || item.itemName || ''
row.code = item.busNo || item.code || item.itemCode || ''
// 获取单价,尝试多个可能的字段名
row.unitPrice = item.retailPrice || item.unitPrice || item.price || 0
row.unitPrice = parseFloat(item.retailPrice || item.unitPrice || item.price || 0)
console.log('设置单价:', row.unitPrice)
calculateAmount(row)
} else {