190 检查项目设置-》套餐设置:项目名称字段模糊查询出预览界面增加项目单价字段显示
191 检查项目设置-》套餐设置:单价字段的值未自动获取项目单价的值并可编辑 192 检查项目设置-》套餐设置:数量和服务费字段的值被加减按钮挡住了看不见数值 193 检查项目设置-》套餐设置:套餐级别选中个人套餐时系统未自动获取当前登录账号名称赋值给用户选择字段
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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 }}
|
||||
<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)
|
||||
|
||||
// 初始化一行空数据
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user