Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
2026-01-07 17:00:19 +08:00
3 changed files with 82 additions and 74 deletions

View File

@@ -43,38 +43,6 @@
</el-popover>
</el-form-item>
</el-col>
<el-col :span="6" style="padding: 0">
<el-button type="primary" icon="Plus" @click="handleAddPatient" style="width: 65px">
新建
</el-button>
<el-button
type="primary"
plain
icon="Search"
@click="handleSearch"
style="width: 65px"
>
查询
</el-button>
<el-button type="primary" plain @click="handleReadCard('01')" style="width: 65px">
电子凭证
</el-button>
<el-button type="primary" plain @click="handleReadCard('02')" style="width: 65px">
身份证
</el-button>
<el-button type="primary" plain @click="handleReadCard('03')" style="width: 65px">
医保卡
</el-button>
<!-- <el-button
type="primary"
plain
@click="handleReadCard('99')"
style="width: 65px"
:disabled="true"
>
学生卡
</el-button> -->
</el-col>
<el-col :span="5">
<el-form-item label="姓名:" prop="name">
<el-input v-model="form.name" placeholder="姓名" :disabled="true" />
@@ -991,6 +959,11 @@ async function handleReadCard(value) {
// }
}
/** 跳转到患者档案页面 */
function goToPatientRecord() {
router.push('/patient/patientmgr');
}
/** 新增用户信息弹窗 */
function handleAddPatient() {
proxy.$refs['patientAddRef'].show(); // 确保子组件更新后再调用 show 方法

View File

@@ -47,9 +47,10 @@
<option>检验套餐</option>
</select>
</div>
<div class="filter-item">
<div class="filter-item filter-item-department">
<label>科室</label>
<el-tree-select
v-model="searchParams.department"
placeholder="请选择科室"
:data="departments"
:props="{
@@ -58,7 +59,10 @@
children: 'children'
}"
value-key="name"
style="width: 100%;"
check-strictly
:expand-on-click-node="false"
clearable
style="width: 200px;"
/>
</div>
<div class="filter-item">
@@ -235,7 +239,8 @@ const searchParams = ref({
startDate: getCurrentDate(),
endDate: getCurrentDate(),
packageName: '',
packageLevel: ''
packageLevel: '',
department: ''
});
// 过滤后的数据
@@ -251,6 +256,9 @@ const filteredData = computed(() => {
// 套餐级别筛选
if (searchParams.value.packageLevel && item.level !== searchParams.value.packageLevel) return false;
// 科室筛选
if (searchParams.value.department && item.department !== searchParams.value.department) return false;
return true;
});
});
@@ -281,7 +289,8 @@ function handleReset() {
startDate: getCurrentDate(),
endDate: getCurrentDate(),
packageName: '',
packageLevel: ''
packageLevel: '',
department: ''
};
}
@@ -452,6 +461,14 @@ function convertToCSV(data) {
gap: 8px;
}
.filter-item-department {
min-width: 280px;
}
.filter-item-department .el-tree-select {
width: 100%;
}
.filter-item label {
font-size: 14px;
color: var(--text-secondary);

View File

@@ -411,12 +411,22 @@
<div class="form-item">
<span class="form-label">套餐级别</span>
<select class="form-control form-select" id="packageLevel" v-model="packageLevel">
<option value="">请选择套餐级别</option>
<option value="全院套餐">全院套餐</option>
<option value="科室套餐">科室套餐</option>
<option value="个人套餐">个人套餐</option>
</select>
<el-select
v-model="packageLevel"
filterable
allow-create
default-first-option
placeholder="请选择或输入套餐级别"
style="width: 100%;"
@change="handlePackageLevelChange"
>
<el-option
v-for="item in packageLevelOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div class="form-item" id="departmentContainer" v-show="packageLevel === '科室套餐'">
<span class="form-label">科室</span>
@@ -468,47 +478,31 @@
</div>
<div class="form-item">
<span class="form-label">是否停用</span>
<div class="radio-group">
<label class="radio-item">
<input type="radio" v-model="isDisabled" :value="false" checked> 启用
</label>
<label class="radio-item">
<input type="radio" v-model="isDisabled" :value="true"> 停用
</label>
</div>
<el-radio-group v-model="isDisabled" size="medium">
<el-radio :label="false">启用</el-radio>
<el-radio :label="true">停用</el-radio>
</el-radio-group>
</div>
<div class="form-item">
<span class="form-label">显示套餐名</span>
<div class="radio-group">
<label class="radio-item">
<input type="radio" v-model="showPackageName" :value="true" checked>
</label>
<label class="radio-item">
<input type="radio" v-model="showPackageName" :value="false">
</label>
</div>
<el-radio-group v-model="showPackageName" size="medium">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
</el-radio-group>
</div>
<div class="form-item">
<span class="form-label">生成服务费</span>
<div class="radio-group">
<label class="radio-item">
<input type="radio" v-model="generateServiceFee" :value="true" checked>
</label>
<label class="radio-item">
<input type="radio" v-model="generateServiceFee" :value="false">
</label>
</div>
<el-radio-group v-model="generateServiceFee" size="medium">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
</el-radio-group>
</div>
<div class="form-item">
<span class="form-label">套餐价格</span>
<div class="radio-group">
<label class="radio-item">
<input type="radio" v-model="enablePackagePrice" :value="true" checked> 启用
</label>
<label class="radio-item">
<input type="radio" v-model="enablePackagePrice" :value="false"> 不启用
</label>
</div>
<el-radio-group v-model="enablePackagePrice" size="medium">
<el-radio :label="true">启用</el-radio>
<el-radio :label="false">启用</el-radio>
</el-radio-group>
</div>
<div class="form-item">
@@ -848,6 +842,14 @@ function handleDepartmentChange(selectedNode, item) {
}
}
// 处理套餐级别选择变化
function handlePackageLevelChange(value) {
console.log('选择的套餐级别:', value);
if (value !== '科室套餐') {
department.value = '';
}
}
// 处理套餐科室选择变化
function handlePackageDepartmentChange(selectedNode) {
console.log('选择的套餐科室节点:', selectedNode);
@@ -973,6 +975,11 @@ const resetFilters = () => {
// 套餐相关数据
const packageCategory = ref('检验套餐');
const packageLevel = ref('');
const packageLevelOptions = ref([
{ value: '全院套餐', label: '全院套餐' },
{ value: '科室套餐', label: '科室套餐' },
{ value: '个人套餐', label: '个人套餐' }
]);
const packageName = ref('');
const department = ref('');
const discount = ref('');
@@ -2058,6 +2065,8 @@ watch(packageItems, (newVal) => {
flex: 1;
padding: 20px;
overflow-y: auto;
overflow-x: hidden;
max-width: 100%;
}
/* 页面标题 */
@@ -2407,6 +2416,8 @@ watch(packageItems, (newVal) => {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03);
padding: 16px;
margin-bottom: 16px;
max-width: 100%;
overflow-x: hidden;
}
.section-title {
@@ -2426,6 +2437,8 @@ watch(packageItems, (newVal) => {
.form-item {
display: flex;
align-items: center;
min-width: 0;
max-width: 100%;
}
.form-label {
@@ -2522,6 +2535,11 @@ watch(packageItems, (newVal) => {
border-radius: 4px;
padding: 0 8px;
font-size: 14px;
max-width: 100%;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.form-control:focus {