190 检查项目设置-》套餐设置:项目名称字段模糊查询出预览界面增加项目单价字段显示

191 检查项目设置-》套餐设置:单价字段的值未自动获取项目单价的值并可编辑
192 检查项目设置-》套餐设置:数量和服务费字段的值被加减按钮挡住了看不见数值
193 检查项目设置-》套餐设置:套餐级别选中个人套餐时系统未自动获取当前登录账号名称赋值给用户选择字段
This commit is contained in:
Ranyunqiao
2026-03-18 16:51:38 +08:00
parent 0cdf332ee7
commit 81c97de170
2 changed files with 74 additions and 47 deletions

View File

@@ -54,7 +54,7 @@
v-for="dept in departments"
:key="dept.dictValue"
:label="dept.dictLabel"
:value="dept.dictLabel"
:value="dept.deptCode || dept.busNoPrefix || dept.rawOrg?.busNo || dept.dictLabel"
/>
</el-select>
</el-form-item>
@@ -200,10 +200,57 @@ import {getDicts} from '@/api/system/dict/data'
import {listDept} from '@/api/system/dept'
import {delCheckPackage, getCheckPackage, listCheckPackage} from '@/api/system/checkType'
import request from '@/utils/request'
import useUserStore from '@/store/modules/user'
// 定义emit事件
const emit = defineEmits(['switch-to-settings'])
const userStore = useUserStore()
//删除
function handleDelete(row) {
const currentUser = userStore.name
console.log('当前用户:', currentUser, '套餐创建者:', row.creator)
//只有创建者本人才能删除creator为空时不能删除
if(!row.creator){
ElMessage.warning('该套餐创建者未知,无法删除')
return
}
if(row.creator !== currentUser){
ElMessage.warning(`该套餐由"${row.creator}"创建,您没有权限删除`)
return
}
ElMessageBox.confirm(
`确认删除套餐ID:${row.id} - ${row.packageName} 吗?删除后将无法恢复`,
'确认删除',
{
confirmButtonText:'确定删除',
cancelButtonText:'取消',
type: 'warning',
buttonSize:'default'
}
).then(async () => {
try{const response = await delCheckPackage(row.id)
if(response && response.code === 200 || response.code === 0){
ElMessage.success('删除成功')
handleQuery()
}else{
ElMessage.error(response?.msg || response?.message || '删除失败')
}
}catch(error){
console.error('删除失败:',error)
const errorMsg = error?.response?.data?.msg || error?.message || ''
if(errorMsg.includes('foreign key') || errorMsg.includes('violates foreign key')){
ElMessage.warning('该套餐已被使用,无法删除')
}else{
ElMessage.error('删除失败:'+(error.message || '未知错误'))
}
}
}).catch(() => {})
}
// 查询参数
const queryParams = reactive({
pageNo: 1,
@@ -541,33 +588,7 @@ async function handleView(row) {
}
}
// 删除
function handleDelete(row) {
ElMessageBox.confirm(
`确认删除套餐ID:${row.id} - ${row.packageName}吗?删除后将无法恢复!`,
'删除确认',
{
confirmButtonText: '确定删除',
cancelButtonText: '取消',
type: 'warning',
buttonSize: 'default'
}
).then(async () => {
try {
const response = await delCheckPackage(row.id)
if (response && (response.code === 200 || response.code === 0)) {
ElMessage.success('删除成功')
handleQuery()
} else {
ElMessage.error(response?.msg || response?.message || '删除失败')
}
} catch (error) {
console.error('删除失败:', error)
ElMessage.error('删除失败: ' + (error.message || '未知错误'))
}
}).catch(() => {})
}
// 查询参数
</script>
<style scoped>

View File

@@ -215,10 +215,13 @@
:label="(item.name || item.itemName || '未命名') + (item.busNo ? ' [' + item.busNo + ']' : '')"
:value="item.id"
>
<span style="float: left">{{ item.name || item.itemName }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">
{{ item.busNo || item.code }}
</span>
<div style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
<span>{{ item.name || item.itemName }}</span>
<span style="display: flex; align-items: center; gap: 8px;">
<span style="color: #8492a6; font-size: 13px;">{{ item.busNo || item.code }}</span>
<span style="color: #E6A23C; font-size: 13px; font-weight: 500;">¥{{ item.retailPrice || item.price || item.unitPrice || 0 }}</span>
</span>
</div>
</el-option>
<template #empty>
<div style="padding: 10px; text-align: center; color: #999;">
@@ -233,12 +236,6 @@
</div>
</template>
</el-select>
<div style="font-size: 12px; color: #999; margin-top: 4px;">
共 {{ diagnosisTreatmentList.length }} 个可选项目
<span v-if="row.filteredList && row.filteredList.length < diagnosisTreatmentList.length">
(搜索结果: {{ row.filteredList.length }} 个)
</span>
</div>
</div>
<span v-else>{{ row.itemName }}</span>
</template>
@@ -286,21 +283,21 @@
:precision="0"
placeholder="请输入数量"
style="width: 100%"
:controls="false"
@change="calculateAmount(row)"
/>
<span v-else>{{ row.quantity }}</span>
</template>
</el-table-column>
<el-table-column prop="unitPrice" label="单价" width="120" align="center">
<el-table-column prop="unitPrice" label="单价" width="150" align="center">
<template #default="{ row }">
<el-input-number
<el-input
v-if="row.editing"
v-model="row.unitPrice"
:min="0"
:precision="6"
placeholder="请输入单价"
placeholder="自动获取"
style="width: 100%"
@change="calculateAmount(row)"
size="small"
disabled
/>
<span v-else>{{ row.unitPrice?.toFixed(6) }}</span>
</template>
@@ -319,6 +316,7 @@
:precision="2"
placeholder="服务费"
style="width: 100%"
:controls="false"
@change="calculateTotal(row)"
/>
<span v-else>{{ row.serviceCharge?.toFixed(2) || '0.00' }}</span>
@@ -524,8 +522,8 @@ function loadPackageData(data) {
})
// 填充明细数据
if (data.details && Array.isArray(data.details)) {
detailData.value = data.details.map(item => ({
if (data.items && Array.isArray(data.items)) {
detailData.value = data.items.map(item => ({
code: item.itemCode || '',
itemId: item.checkItemId,
itemName: item.itemName || '',
@@ -690,7 +688,10 @@ onMounted(async () => {
await loadDiagnosisTreatmentList(false)
// 初始化一行空数据
handleAddRow()
if(props.mode === 'add'){
handleAddRow()
}
} catch (error) {
console.error('✗ 初始化数据失败:', error)
}
@@ -824,6 +825,10 @@ function handlePackageLevelChange(value) {
// 个人套餐,用户必填
formRules.user = [{ required: true, message: '请选择用户', trigger: 'change' }]
formRules.department = []
// 自动获取当前登录账号名称赋值给用户选择字段
if (!formData.user && userStore.name) {
formData.user = userStore.name
}
} else {
// 全院套餐,都不必填
formRules.department = []
@@ -1185,6 +1190,7 @@ async function handleSave() {
if (response && (response.code === 200 || response.code === 0)) {
ElMessage.success('套餐数据已保存')
emit('save-success')
// 如果有返回ID更新formData.id以便后续更新
if (response.data && !formData.id) {
formData.id = response.data