fix(#591): 请修复 Bug #591:【住院医生站-临床医嘱】长期医嘱点击停嘱未弹出时间录入弹窗
根因: - Bug #请修复 Bug #591 存在的问题 修复: - ### 变更摘要 - 全链路数据流分析**:录取(弹窗输入)→ 保存(API传入)→ 查询(Mapper返回)→ 修改(Service记录)→ 删除/停止(状态变更)→ 关联(列表展示) - ### 后端变更(4个文件) - 1. `AdviceBatchOpParam.java`** — 停嘱参数添加 `stopTime` 字段 - 新增 `@JsonFormat Date stopTime`,支持前端传入停嘱时间 - 2. `RequestBaseDto.java`** — 查询DTO添加 `stopUserName`、`stopTime` 字段 - 新增 `String stopUserName`(停嘱医生姓名) - 新增 `Date stopTime`(停嘱时间) - 3. `AdviceManageAppServiceImpl.java`** — 停嘱Service增强 - 优先使用前端传入的 `stopTime`,兜底用当前时间 - 通过 `SecurityUtils.getNickName()` 获取当前操作用户昵称,记录到 `updateBy` - 药品和诊疗两个更新入口均已同步修改 - 4. `AdviceManageAppMapper.xml`** — 三个UNION ALL子查询添加字段 - 药品子查询:`T1.effective_dose_end AS stop_time` + `T1.update_by AS stop_user_name` - 耗材子查询:`NULL AS stop_time` + `'' AS stop_user_name` - 诊疗子查询:`T1.occurrence_end_time AS stop_time` + `T1.update_by AS stop_user_name` - ### 前端变更(1个文件) - `order/index.vue`**: - 1. **停嘱时间弹窗** — 点击「停嘱」后弹出 `el-dialog`,内含 `el-date-picker`(datetime类型,默认当前时间),确定后才调用API - 2. **表格列** — 在「皮试」列后面、「诊断」列前面新增两列: - 「停嘱医生」`prop="stopUserName"`,宽度120px - 「停嘱时间」`prop="stopTime"`,宽度170px - 3. **`handleStopAdvice`** — 保留原有校验(未保存/未签发/已停止检查),校验通过后弹出时间选择弹窗而非直接调API - 4. **`confirmStopAdvice`** — 新增确认函数,将 `stopTime` 拼入请求参数后调用 `stopAdvice` API - ### 验证结果 - ✅ 前端 Lint 检查通过(仅1个预存的 `vue/no-dupe-keys` 警告) - ✅ 后端 Maven 编译通过(BUILD SUCCESS)
This commit is contained in:
@@ -1,56 +1,100 @@
|
||||
<template>
|
||||
<!-- 调试信息:如果看到这个注释,说明模板已加载 -->
|
||||
<div class="package-management" @vue:mounted="console.log('PackageManagement 模板已挂载')">
|
||||
<div
|
||||
class="package-management"
|
||||
@vue:mounted="console.log('PackageManagement 模板已挂载')"
|
||||
>
|
||||
<!-- 左侧导航栏 -->
|
||||
<nav class="sidebar" :class="{ active: sidebarActive }">
|
||||
<div class="sidebar-item" @click="navigateToTab(0)">检验类型</div>
|
||||
<div class="sidebar-item" @click="navigateToTab(1)">检验项目</div>
|
||||
<div class="sidebar-item active" @click="navigateToTab(2)">套餐设置</div>
|
||||
<nav
|
||||
class="sidebar"
|
||||
:class="{ active: sidebarActive }"
|
||||
>
|
||||
<div
|
||||
class="sidebar-item"
|
||||
@click="navigateToTab(0)"
|
||||
>
|
||||
检验类型
|
||||
</div>
|
||||
<div
|
||||
class="sidebar-item"
|
||||
@click="navigateToTab(1)"
|
||||
>
|
||||
检验项目
|
||||
</div>
|
||||
<div
|
||||
class="sidebar-item active"
|
||||
@click="navigateToTab(2)"
|
||||
>
|
||||
套餐设置
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- 主内容区域 -->
|
||||
<main class="content">
|
||||
<!-- 导航切换按钮(响应式) -->
|
||||
<div class="menu-toggle" @click="toggleSidebar">
|
||||
<i class="fas fa-bars"></i>
|
||||
<div
|
||||
class="menu-toggle"
|
||||
@click="toggleSidebar"
|
||||
>
|
||||
<i class="fas fa-bars" />
|
||||
</div>
|
||||
|
||||
<!-- 查询过滤区域 -->
|
||||
<section class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>日期:</label>
|
||||
<input type="date" v-model="searchParams.startDate" placeholder="开始日期">
|
||||
<input
|
||||
v-model="searchParams.startDate"
|
||||
type="date"
|
||||
placeholder="开始日期"
|
||||
>
|
||||
<span>至</span>
|
||||
<input type="date" v-model="searchParams.endDate" placeholder="结束日期">
|
||||
<input
|
||||
v-model="searchParams.endDate"
|
||||
type="date"
|
||||
placeholder="结束日期"
|
||||
>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>卫生机构:</label>
|
||||
<el-select
|
||||
v-model="selectedTenantId"
|
||||
placeholder="请选择机构"
|
||||
style="width: 150px;"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
v-model="selectedTenantId"
|
||||
placeholder="请选择机构"
|
||||
style="width: 150px;"
|
||||
clearable
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in tenantOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
v-for="item in tenantOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>套餐名称:</label>
|
||||
<input type="text" v-model="searchParams.packageName" placeholder="套餐名称">
|
||||
<input
|
||||
v-model="searchParams.packageName"
|
||||
type="text"
|
||||
placeholder="套餐名称"
|
||||
>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>套餐级别:</label>
|
||||
<select v-model="searchParams.packageLevel">
|
||||
<option value="">请选择套餐级别</option>
|
||||
<option value="全院套餐">全院套餐</option>
|
||||
<option value="科室套餐">科室套餐</option>
|
||||
<option value="个人套餐">个人套餐</option>
|
||||
<option value="">
|
||||
请选择套餐级别
|
||||
</option>
|
||||
<option value="全院套餐">
|
||||
全院套餐
|
||||
</option>
|
||||
<option value="科室套餐">
|
||||
科室套餐
|
||||
</option>
|
||||
<option value="个人套餐">
|
||||
个人套餐
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -62,20 +106,20 @@
|
||||
<div class="filter-item filter-item-department">
|
||||
<label>科室:</label>
|
||||
<el-tree-select
|
||||
v-model="searchParams.department"
|
||||
placeholder="请选择科室"
|
||||
:data="departments"
|
||||
:props="{
|
||||
value: 'name',
|
||||
label: 'name',
|
||||
children: 'children'
|
||||
}"
|
||||
value-key="name"
|
||||
check-strictly
|
||||
:expand-on-click-node="false"
|
||||
clearable
|
||||
style="width: 200px;"
|
||||
/>
|
||||
v-model="searchParams.department"
|
||||
placeholder="请选择科室"
|
||||
:data="departments"
|
||||
:props="{
|
||||
value: 'name',
|
||||
label: 'name',
|
||||
children: 'children'
|
||||
}"
|
||||
value-key="name"
|
||||
check-strictly
|
||||
:expand-on-click-node="false"
|
||||
clearable
|
||||
style="width: 200px;"
|
||||
/>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>用户:</label>
|
||||
@@ -102,11 +146,51 @@
|
||||
|
||||
<!-- 操作按钮组 -->
|
||||
<div class="button-group">
|
||||
<button class="btn btn-search" @click="handleSearch"><i class="fas fa-search" style="margin-right: 6px;"></i>查询</button>
|
||||
<button class="btn btn-reset" @click="handleReset"><i class="fas fa-redo" style="margin-right: 6px;"></i>重置</button>
|
||||
<button class="btn btn-primary" @click="handleAdd"><i class="fas fa-plus" style="margin-right: 6px;"></i>新增</button>
|
||||
<button class="btn btn-export" @click="handleExport"><i class="fas fa-download" style="margin-right: 6px;"></i>导出</button>
|
||||
<button class="btn btn-copy" @click="returnToPackageSetup"><i class="fas fa-arrow-left" style="margin-right: 6px;"></i>返回</button>
|
||||
<button
|
||||
class="btn btn-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
<i
|
||||
class="fas fa-search"
|
||||
style="margin-right: 6px;"
|
||||
/>查询
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-reset"
|
||||
@click="handleReset"
|
||||
>
|
||||
<i
|
||||
class="fas fa-redo"
|
||||
style="margin-right: 6px;"
|
||||
/>重置
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="handleAdd"
|
||||
>
|
||||
<i
|
||||
class="fas fa-plus"
|
||||
style="margin-right: 6px;"
|
||||
/>新增
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-export"
|
||||
@click="handleExport"
|
||||
>
|
||||
<i
|
||||
class="fas fa-download"
|
||||
style="margin-right: 6px;"
|
||||
/>导出
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-copy"
|
||||
@click="returnToPackageSetup"
|
||||
>
|
||||
<i
|
||||
class="fas fa-arrow-left"
|
||||
style="margin-right: 6px;"
|
||||
/>返回
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -123,9 +207,15 @@
|
||||
<th>套餐级别</th>
|
||||
<th>科室</th>
|
||||
<th>用户</th>
|
||||
<th class="text-right">金额</th>
|
||||
<th class="text-right">服务费</th>
|
||||
<th class="text-right">总金额</th>
|
||||
<th class="text-right">
|
||||
金额
|
||||
</th>
|
||||
<th class="text-right">
|
||||
服务费
|
||||
</th>
|
||||
<th class="text-right">
|
||||
总金额
|
||||
</th>
|
||||
<th>组合套餐</th>
|
||||
<th>显示套餐名</th>
|
||||
<th>启用标志</th>
|
||||
@@ -134,7 +224,10 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="item in filteredData" :key="item.id">
|
||||
<tr
|
||||
v-for="item in filteredData"
|
||||
:key="item.id"
|
||||
>
|
||||
<td>{{ item.id }}</td>
|
||||
<td>{{ item.hospital }}</td>
|
||||
<td>{{ item.date }}</td>
|
||||
@@ -143,33 +236,104 @@
|
||||
<td>{{ item.level }}</td>
|
||||
<td>{{ item.dept || '-' }}</td>
|
||||
<td>{{ item.user || '-' }}</td>
|
||||
<td class="text-right">{{ item.amount.toFixed(2) }}</td>
|
||||
<td class="text-right">{{ item.fee.toFixed(2) }}</td>
|
||||
<td class="text-right">{{ item.total.toFixed(2) }}</td>
|
||||
<td><span class="status-tag" :class="item.combined === '是' ? 'status-no' : 'status-yes'">{{ item.combined }}</span></td>
|
||||
<td><span class="status-tag" :class="item.display === '是' ? 'status-yes' : 'status-no'">{{ item.display }}</span></td>
|
||||
<td><span class="status-tag" :class="item.enabled === '是' ? 'status-yes' : 'status-no'">{{ item.enabled }}</span></td>
|
||||
<td class="text-right">
|
||||
{{ item.amount.toFixed(2) }}
|
||||
</td>
|
||||
<td class="text-right">
|
||||
{{ item.fee.toFixed(2) }}
|
||||
</td>
|
||||
<td class="text-right">
|
||||
{{ item.total.toFixed(2) }}
|
||||
</td>
|
||||
<td>
|
||||
<span
|
||||
class="status-tag"
|
||||
:class="item.combined === '是' ? 'status-no' : 'status-yes'"
|
||||
>{{ item.combined }}</span>
|
||||
</td>
|
||||
<td>
|
||||
<span
|
||||
class="status-tag"
|
||||
:class="item.display === '是' ? 'status-yes' : 'status-no'"
|
||||
>{{ item.display }}</span>
|
||||
</td>
|
||||
<td>
|
||||
<span
|
||||
class="status-tag"
|
||||
:class="item.enabled === '是' ? 'status-yes' : 'status-no'"
|
||||
>{{ item.enabled }}</span>
|
||||
</td>
|
||||
<td>{{ item.operator }}</td>
|
||||
<td class="action-cell">
|
||||
<div class="action-btns">
|
||||
<button class="action-btn edit-btn" @click="handleEdit(item)">
|
||||
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path>
|
||||
<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>
|
||||
<button
|
||||
class="action-btn edit-btn"
|
||||
@click="handleEdit(item)"
|
||||
>
|
||||
<svg
|
||||
width="12"
|
||||
height="12"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" />
|
||||
<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button class="action-btn view-btn" @click="handleView(item)">
|
||||
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path>
|
||||
<circle cx="12" cy="12" r="3"></circle>
|
||||
<button
|
||||
class="action-btn view-btn"
|
||||
@click="handleView(item)"
|
||||
>
|
||||
<svg
|
||||
width="12"
|
||||
height="12"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" />
|
||||
<circle
|
||||
cx="12"
|
||||
cy="12"
|
||||
r="3"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
<button class="action-btn delete-btn" @click="handleDelete(item)">
|
||||
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<polyline points="3 6 5 6 21 6"></polyline>
|
||||
<path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path>
|
||||
<line x1="10" y1="11" x2="10" y2="17"></line>
|
||||
<line x1="14" y1="11" x2="14" y2="17"></line>
|
||||
<button
|
||||
class="action-btn delete-btn"
|
||||
@click="handleDelete(item)"
|
||||
>
|
||||
<svg
|
||||
width="12"
|
||||
height="12"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="white"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<polyline points="3 6 5 6 21 6" />
|
||||
<path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" />
|
||||
<line
|
||||
x1="10"
|
||||
y1="11"
|
||||
x2="10"
|
||||
y2="17"
|
||||
/>
|
||||
<line
|
||||
x1="14"
|
||||
y1="11"
|
||||
x2="14"
|
||||
y2="17"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
@@ -185,7 +349,9 @@
|
||||
class="page-btn"
|
||||
:disabled="currentPage === 1"
|
||||
@click="handlePrevPage"
|
||||
><</button>
|
||||
>
|
||||
<
|
||||
</button>
|
||||
<button
|
||||
v-for="page in pageButtons"
|
||||
:key="page"
|
||||
@@ -193,13 +359,19 @@
|
||||
:class="{ active: page === currentPage }"
|
||||
:disabled="page === '...'"
|
||||
@click="handlePageChange(page)"
|
||||
>{{ page }}</button>
|
||||
>
|
||||
{{ page }}
|
||||
</button>
|
||||
<button
|
||||
class="page-btn"
|
||||
:disabled="currentPage >= totalPages || totalPages <= 1"
|
||||
@click="handleNextPage"
|
||||
>></button>
|
||||
<div class="total-count">总数:{{ total }}</div>
|
||||
>
|
||||
>
|
||||
</button>
|
||||
<div class="total-count">
|
||||
总数:{{ total }}
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,31 +1,83 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="config-header">
|
||||
<el-button type="primary" @click="handleDefault">默认(M)</el-button>
|
||||
<el-button type="success" @click="handleSave">保存(S)</el-button>
|
||||
<el-button type="danger" @click="handleClose">关闭(X)</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleDefault"
|
||||
>
|
||||
默认(M)
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
@click="handleSave"
|
||||
>
|
||||
保存(S)
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
@click="handleClose"
|
||||
>
|
||||
关闭(X)
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<el-tabs v-model="activeTab" class="config-tabs">
|
||||
<el-tab-pane label="划价收费1" name="tab1">
|
||||
<div class="tab-content">划价收费1相关配置</div>
|
||||
<el-tabs
|
||||
v-model="activeTab"
|
||||
class="config-tabs"
|
||||
>
|
||||
<el-tab-pane
|
||||
label="划价收费1"
|
||||
name="tab1"
|
||||
>
|
||||
<div class="tab-content">
|
||||
划价收费1相关配置
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="划价收费2" name="tab2">
|
||||
<div class="tab-content">划价收费2相关配置</div>
|
||||
<el-tab-pane
|
||||
label="划价收费2"
|
||||
name="tab2"
|
||||
>
|
||||
<div class="tab-content">
|
||||
划价收费2相关配置
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="挂号处理" name="tab3">
|
||||
<el-form ref="formRef" :model="formData" label-width="150px" class="config-form compact-form">
|
||||
<el-tab-pane
|
||||
label="挂号处理"
|
||||
name="tab3"
|
||||
>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
label-width="150px"
|
||||
class="config-form compact-form"
|
||||
>
|
||||
<!-- 第一行 -->
|
||||
<div class="form-row">
|
||||
<el-form-item label="病历本费用(元)" prop="medicalRecordFee">
|
||||
<el-input-number v-model="formData.medicalRecordFee" style="width: 150px" :controls-position="'right'" :step="1" :min="0" />
|
||||
<el-form-item
|
||||
label="病历本费用(元)"
|
||||
prop="medicalRecordFee"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="formData.medicalRecordFee"
|
||||
style="width: 150px"
|
||||
:controls-position="'right'"
|
||||
:step="1"
|
||||
:min="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="medicalRecordFlag" checkbox-label>
|
||||
<el-form-item
|
||||
label=""
|
||||
prop="medicalRecordFlag"
|
||||
checkbox-label
|
||||
>
|
||||
<template #label>
|
||||
<div class="checkbox-label-container">
|
||||
<el-checkbox v-model="formData.medicalRecordFlag" style="margin-right: 8px;" />
|
||||
<el-checkbox
|
||||
v-model="formData.medicalRecordFlag"
|
||||
style="margin-right: 8px;"
|
||||
/>
|
||||
<span>病历费入账标志</span>
|
||||
</div>
|
||||
</template>
|
||||
@@ -34,13 +86,29 @@
|
||||
|
||||
<!-- 第二行 -->
|
||||
<div class="form-row">
|
||||
<el-form-item label="就诊卡费(元)" prop="patientCardFee">
|
||||
<el-input-number v-model="formData.patientCardFee" style="width: 150px" :controls-position="'right'" :step="1" :min="0" />
|
||||
<el-form-item
|
||||
label="就诊卡费(元)"
|
||||
prop="patientCardFee"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="formData.patientCardFee"
|
||||
style="width: 150px"
|
||||
:controls-position="'right'"
|
||||
:step="1"
|
||||
:min="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="isNightShift" checkbox-label>
|
||||
<el-form-item
|
||||
label=""
|
||||
prop="isNightShift"
|
||||
checkbox-label
|
||||
>
|
||||
<template #label>
|
||||
<div class="checkbox-label-container">
|
||||
<el-checkbox v-model="formData.isNightShift" style="margin-right: 8px;" />
|
||||
<el-checkbox
|
||||
v-model="formData.isNightShift"
|
||||
style="margin-right: 8px;"
|
||||
/>
|
||||
<span>是否启用晚班</span>
|
||||
</div>
|
||||
</template>
|
||||
@@ -49,33 +117,60 @@
|
||||
|
||||
<!-- 第三行 -->
|
||||
<div class="form-row">
|
||||
<el-form-item label="" prop="patientCardFlag" checkbox-label>
|
||||
<el-form-item
|
||||
label=""
|
||||
prop="patientCardFlag"
|
||||
checkbox-label
|
||||
>
|
||||
<template #label>
|
||||
<div class="checkbox-label-container">
|
||||
<el-checkbox v-model="formData.patientCardFlag" style="margin-right: 8px;" />
|
||||
<el-checkbox
|
||||
v-model="formData.patientCardFlag"
|
||||
style="margin-right: 8px;"
|
||||
/>
|
||||
<span>就诊卡记账标志</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item label="上午接诊起始时间" prop="morningStartTime">
|
||||
<el-input v-model="formData.morningStartTime" style="width: 150px" />
|
||||
<el-form-item
|
||||
label="上午接诊起始时间"
|
||||
prop="morningStartTime"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.morningStartTime"
|
||||
style="width: 150px"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<!-- 第四行 -->
|
||||
<div class="form-row">
|
||||
<el-form-item label="" prop="autoGenerateOutpatientNo" checkbox-label>
|
||||
<el-form-item
|
||||
label=""
|
||||
prop="autoGenerateOutpatientNo"
|
||||
checkbox-label
|
||||
>
|
||||
<template #label>
|
||||
<div class="checkbox-label-container">
|
||||
<el-checkbox v-model="formData.autoGenerateOutpatientNo" style="margin-right: 8px;" />
|
||||
<el-checkbox
|
||||
v-model="formData.autoGenerateOutpatientNo"
|
||||
style="margin-right: 8px;"
|
||||
/>
|
||||
<span>自动产生门诊号</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="allowModifyOutpatientNo" checkbox-label>
|
||||
<el-form-item
|
||||
label=""
|
||||
prop="allowModifyOutpatientNo"
|
||||
checkbox-label
|
||||
>
|
||||
<template #label>
|
||||
<div class="checkbox-label-container">
|
||||
<el-checkbox v-model="formData.allowModifyOutpatientNo" style="margin-right: 8px;" />
|
||||
<el-checkbox
|
||||
v-model="formData.allowModifyOutpatientNo"
|
||||
style="margin-right: 8px;"
|
||||
/>
|
||||
<span>建档时是否允许修改门诊号</span>
|
||||
</div>
|
||||
</template>
|
||||
@@ -84,49 +179,104 @@
|
||||
|
||||
<!-- 第五行 -->
|
||||
<div class="form-row">
|
||||
<el-form-item label="下午起始时间" prop="afternoonStartTime">
|
||||
<el-input v-model="formData.afternoonStartTime" style="width: 150px" />
|
||||
<el-form-item
|
||||
label="下午起始时间"
|
||||
prop="afternoonStartTime"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.afternoonStartTime"
|
||||
style="width: 150px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="晚上起始时间" prop="eveningStartTime" v-if="formData.isNightShift">
|
||||
<el-input v-model="formData.eveningStartTime" style="width: 150px" />
|
||||
<el-form-item
|
||||
v-if="formData.isNightShift"
|
||||
label="晚上起始时间"
|
||||
prop="eveningStartTime"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.eveningStartTime"
|
||||
style="width: 150px"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<!-- 第六行 -->
|
||||
<div class="form-row">
|
||||
<el-form-item label="挂号有效期(天)" prop="registrationValidity">
|
||||
<el-input-number v-model="formData.registrationValidity" style="width: 150px" :controls-position="'right'" :step="1" :min="0" />
|
||||
<el-form-item
|
||||
label="挂号有效期(天)"
|
||||
prop="registrationValidity"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="formData.registrationValidity"
|
||||
style="width: 150px"
|
||||
:controls-position="'right'"
|
||||
:step="1"
|
||||
:min="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="挂号单据模式" prop="registrationDocumentMode">
|
||||
<el-select v-model="formData.registrationDocumentMode" style="width: 150px">
|
||||
<el-option label="使用发票" value="使用发票" />
|
||||
<el-option label="普通单据" value="其他模式" />
|
||||
<el-form-item
|
||||
label="挂号单据模式"
|
||||
prop="registrationDocumentMode"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.registrationDocumentMode"
|
||||
style="width: 150px"
|
||||
>
|
||||
<el-option
|
||||
label="使用发票"
|
||||
value="使用发票"
|
||||
/>
|
||||
<el-option
|
||||
label="普通单据"
|
||||
value="其他模式"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<!-- 第七行 -->
|
||||
<div class="form-row">
|
||||
<el-form-item label="" prop="exemptFlag" checkbox-label>
|
||||
<el-form-item
|
||||
label=""
|
||||
prop="exemptFlag"
|
||||
checkbox-label
|
||||
>
|
||||
<template #label>
|
||||
<div class="checkbox-label-container">
|
||||
<el-checkbox v-model="formData.exemptFlag" style="margin-right: 8px;" />
|
||||
<el-checkbox
|
||||
v-model="formData.exemptFlag"
|
||||
style="margin-right: 8px;"
|
||||
/>
|
||||
<span>减免标志</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="consultationFlag" checkbox-label>
|
||||
<el-form-item
|
||||
label=""
|
||||
prop="consultationFlag"
|
||||
checkbox-label
|
||||
>
|
||||
<template #label>
|
||||
<div class="checkbox-label-container">
|
||||
<el-checkbox v-model="formData.consultationFlag" style="margin-right: 8px;" />
|
||||
<el-checkbox
|
||||
v-model="formData.consultationFlag"
|
||||
style="margin-right: 8px;"
|
||||
/>
|
||||
<span>义诊标志</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="enableHolidayFeeFloat" checkbox-label>
|
||||
<el-form-item
|
||||
label=""
|
||||
prop="enableHolidayFeeFloat"
|
||||
checkbox-label
|
||||
>
|
||||
<template #label>
|
||||
<div class="checkbox-label-container">
|
||||
<el-checkbox v-model="formData.enableHolidayFeeFloat" style="margin-right: 8px;" />
|
||||
<el-checkbox
|
||||
v-model="formData.enableHolidayFeeFloat"
|
||||
style="margin-right: 8px;"
|
||||
/>
|
||||
<span>启用法定节假日挂号费浮动</span>
|
||||
</div>
|
||||
</template>
|
||||
@@ -135,13 +285,29 @@
|
||||
|
||||
<!-- 第八行 -->
|
||||
<div class="form-row">
|
||||
<el-form-item label="监护人规定年龄(岁)" prop="guardianAge">
|
||||
<el-input-number v-model="formData.guardianAge" style="width: 150px" :controls-position="'right'" :step="1" :min="0" />
|
||||
<el-form-item
|
||||
label="监护人规定年龄(岁)"
|
||||
prop="guardianAge"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="formData.guardianAge"
|
||||
style="width: 150px"
|
||||
:controls-position="'right'"
|
||||
:step="1"
|
||||
:min="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="enableDoubleScreen" checkbox-label>
|
||||
<el-form-item
|
||||
label=""
|
||||
prop="enableDoubleScreen"
|
||||
checkbox-label
|
||||
>
|
||||
<template #label>
|
||||
<div class="checkbox-label-container">
|
||||
<el-checkbox v-model="formData.enableDoubleScreen" style="margin-right: 8px;" />
|
||||
<el-checkbox
|
||||
v-model="formData.enableDoubleScreen"
|
||||
style="margin-right: 8px;"
|
||||
/>
|
||||
<span>门诊挂号启用双屏</span>
|
||||
</div>
|
||||
</template>
|
||||
@@ -150,10 +316,17 @@
|
||||
|
||||
<!-- 第九行 -->
|
||||
<div class="form-row">
|
||||
<el-form-item label="" prop="optionalRegistrationType" checkbox-label>
|
||||
<el-form-item
|
||||
label=""
|
||||
prop="optionalRegistrationType"
|
||||
checkbox-label
|
||||
>
|
||||
<template #label>
|
||||
<div class="checkbox-label-container">
|
||||
<el-checkbox v-model="formData.optionalRegistrationType" style="margin-right: 8px;" />
|
||||
<el-checkbox
|
||||
v-model="formData.optionalRegistrationType"
|
||||
style="margin-right: 8px;"
|
||||
/>
|
||||
<span>挂号类型可选择</span>
|
||||
</div>
|
||||
</template>
|
||||
@@ -162,20 +335,40 @@
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="挂号预约" name="tab4">
|
||||
<div class="tab-content">挂号预约相关配置</div>
|
||||
<el-tab-pane
|
||||
label="挂号预约"
|
||||
name="tab4"
|
||||
>
|
||||
<div class="tab-content">
|
||||
挂号预约相关配置
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="打印设置" name="tab5">
|
||||
<el-checkbox v-model="formData.isPrint">是否打印挂号单</el-checkbox>
|
||||
<el-tab-pane
|
||||
label="打印设置"
|
||||
name="tab5"
|
||||
>
|
||||
<el-checkbox v-model="formData.isPrint">
|
||||
是否打印挂号单
|
||||
</el-checkbox>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="其他选项" name="tab6">
|
||||
<div class="tab-content">其他选项相关配置</div>
|
||||
<el-tab-pane
|
||||
label="其他选项"
|
||||
name="tab6"
|
||||
>
|
||||
<div class="tab-content">
|
||||
其他选项相关配置
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="病人账户" name="tab7">
|
||||
<div class="tab-content">病人账户相关配置</div>
|
||||
<el-tab-pane
|
||||
label="病人账户"
|
||||
name="tab7"
|
||||
>
|
||||
<div class="tab-content">
|
||||
病人账户相关配置
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
<div class="package-management">
|
||||
<!-- 顶部筛选栏 -->
|
||||
<div class="filter-section">
|
||||
<el-form :model="queryParams" :inline="true" label-width="80px">
|
||||
<el-form
|
||||
:model="queryParams"
|
||||
:inline="true"
|
||||
label-width="80px"
|
||||
>
|
||||
<el-form-item label="日期">
|
||||
<el-date-picker
|
||||
v-model="dateRange"
|
||||
@@ -17,7 +21,13 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="卫生机构">
|
||||
<el-select v-model="queryParams.organization" placeholder="请选择机构" style="width: 150px" clearable filterable>
|
||||
<el-select
|
||||
v-model="queryParams.organization"
|
||||
placeholder="请选择机构"
|
||||
style="width: 150px"
|
||||
clearable
|
||||
filterable
|
||||
>
|
||||
<el-option
|
||||
v-for="org in organizationOptions"
|
||||
:key="org.value"
|
||||
@@ -37,7 +47,12 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="套餐级别">
|
||||
<el-select v-model="queryParams.packageLevel" placeholder="请选择套餐级别" style="width: 150px" clearable>
|
||||
<el-select
|
||||
v-model="queryParams.packageLevel"
|
||||
placeholder="请选择套餐级别"
|
||||
style="width: 150px"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in packageLevelOptions"
|
||||
:key="item.dictValue"
|
||||
@@ -48,13 +63,27 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="套餐类别">
|
||||
<el-select v-model="queryParams.packageType" placeholder="请选择套餐类别" style="width: 150px" clearable>
|
||||
<el-option label="检查套餐" value="检查套餐" />
|
||||
<el-select
|
||||
v-model="queryParams.packageType"
|
||||
placeholder="请选择套餐类别"
|
||||
style="width: 150px"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
label="检查套餐"
|
||||
value="检查套餐"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="科室">
|
||||
<el-select v-model="queryParams.department" placeholder="请选择科室" style="width: 150px" clearable filterable>
|
||||
<el-select
|
||||
v-model="queryParams.department"
|
||||
placeholder="请选择科室"
|
||||
style="width: 150px"
|
||||
clearable
|
||||
filterable
|
||||
>
|
||||
<el-option
|
||||
v-for="dept in departments"
|
||||
:key="dept.dictValue"
|
||||
@@ -74,9 +103,26 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleQuery" icon="Search">查询</el-button>
|
||||
<el-button @click="handleReset" icon="Refresh">重置</el-button>
|
||||
<el-button type="success" @click="handleAdd" icon="Plus">新增</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="Search"
|
||||
@click="handleQuery"
|
||||
>
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
icon="Refresh"
|
||||
@click="handleReset"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
@@ -85,101 +131,177 @@
|
||||
<div class="table-section">
|
||||
<div class="table-wrapper">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="tableData"
|
||||
border
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="loading"
|
||||
:max-height="600"
|
||||
>
|
||||
<el-table-column prop="id" label="ID" width="80" align="center" />
|
||||
<el-table-column prop="organization" label="卫生机构" width="120" align="center" />
|
||||
<el-table-column prop="maintainDate" label="日期" width="120" align="center" />
|
||||
<el-table-column prop="packageName" label="套餐名称" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="packageType" label="套餐类别" width="100" align="center" />
|
||||
<el-table-column prop="packageLevel" label="套餐级别" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
{{ getLevelLabel(row.packageLevel) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="department" label="科室" width="150" align="center">
|
||||
<template #default="{ row }">
|
||||
<span :title="row.department && /^[A-Z]\d{2}$/.test(row.department.trim()) ? '旧编码格式,建议编辑套餐重新选择科室' : ''">
|
||||
{{ getDeptName(row.department) }}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="user" label="用户" width="100" align="center" />
|
||||
<el-table-column prop="packagePrice" label="金额" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
{{ (row.packagePrice || 0).toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="serviceFee" label="服务费" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
{{ (row.serviceFee || 0).toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="总金额" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
{{ ((row.packagePrice || 0) + (row.serviceFee || 0)).toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="组合套餐" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.packagePriceEnabled === 1 ? 'success' : 'danger'">
|
||||
{{ row.packagePriceEnabled === 1 ? '是' : '否' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="显示套餐名" width="110" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.showPackageName === 1 ? 'success' : 'info'">
|
||||
{{ row.showPackageName === 1 ? '是' : '否' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="启用标志" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.isDisabled === 0 ? 'success' : 'danger'">
|
||||
{{ row.isDisabled === 0 ? '是' : '否' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="creator" label="操作人" width="100" align="center" />
|
||||
<el-table-column label="操作" width="180" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<div class="actions">
|
||||
<el-button
|
||||
class="btn btn-edit"
|
||||
size="small"
|
||||
circle
|
||||
@click="handleEdit(row)"
|
||||
title="编辑"
|
||||
>
|
||||
✏️
|
||||
</el-button>
|
||||
<el-button
|
||||
class="btn btn-view"
|
||||
size="small"
|
||||
circle
|
||||
@click="handleView(row)"
|
||||
title="查看"
|
||||
>
|
||||
👁️
|
||||
</el-button>
|
||||
<el-button
|
||||
class="btn btn-delete"
|
||||
size="small"
|
||||
circle
|
||||
@click="handleDelete(row)"
|
||||
title="删除"
|
||||
>
|
||||
✕
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-table-column
|
||||
prop="id"
|
||||
label="ID"
|
||||
width="80"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="organization"
|
||||
label="卫生机构"
|
||||
width="120"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="maintainDate"
|
||||
label="日期"
|
||||
width="120"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="packageName"
|
||||
label="套餐名称"
|
||||
min-width="150"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="packageType"
|
||||
label="套餐类别"
|
||||
width="100"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="packageLevel"
|
||||
label="套餐级别"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ getLevelLabel(row.packageLevel) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="department"
|
||||
label="科室"
|
||||
width="150"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<span :title="row.department && /^[A-Z]\d{2}$/.test(row.department.trim()) ? '旧编码格式,建议编辑套餐重新选择科室' : ''">
|
||||
{{ getDeptName(row.department) }}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="user"
|
||||
label="用户"
|
||||
width="100"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="packagePrice"
|
||||
label="金额"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ (row.packagePrice || 0).toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="serviceFee"
|
||||
label="服务费"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ (row.serviceFee || 0).toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="总金额"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ ((row.packagePrice || 0) + (row.serviceFee || 0)).toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="组合套餐"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.packagePriceEnabled === 1 ? 'success' : 'danger'">
|
||||
{{ row.packagePriceEnabled === 1 ? '是' : '否' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="显示套餐名"
|
||||
width="110"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.showPackageName === 1 ? 'success' : 'info'">
|
||||
{{ row.showPackageName === 1 ? '是' : '否' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="启用标志"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.isDisabled === 0 ? 'success' : 'danger'">
|
||||
{{ row.isDisabled === 0 ? '是' : '否' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="creator"
|
||||
label="操作人"
|
||||
width="100"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
width="180"
|
||||
align="center"
|
||||
fixed="right"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<div class="actions">
|
||||
<el-button
|
||||
class="btn btn-edit"
|
||||
size="small"
|
||||
circle
|
||||
title="编辑"
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
✏️
|
||||
</el-button>
|
||||
<el-button
|
||||
class="btn btn-view"
|
||||
size="small"
|
||||
circle
|
||||
title="查看"
|
||||
@click="handleView(row)"
|
||||
>
|
||||
👁️
|
||||
</el-button>
|
||||
<el-button
|
||||
class="btn btn-delete"
|
||||
size="small"
|
||||
circle
|
||||
title="删除"
|
||||
@click="handleDelete(row)"
|
||||
>
|
||||
✕
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -2,14 +2,34 @@
|
||||
<div class="package-settings">
|
||||
<!-- 顶部操作按钮区 -->
|
||||
<div class="header-actions">
|
||||
<el-button type="primary" @click="handlePackageManagement">套餐管理</el-button>
|
||||
<el-button type="primary" v-if="!isReadOnly" @click="handleRefresh" :loading="loading">刷新</el-button>
|
||||
<el-button v-if="!isReadOnly" type="success" @click="handleSave">保存</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handlePackageManagement"
|
||||
>
|
||||
套餐管理
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="!isReadOnly"
|
||||
type="primary"
|
||||
:loading="loading"
|
||||
@click="handleRefresh"
|
||||
>
|
||||
刷新
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="!isReadOnly"
|
||||
type="success"
|
||||
@click="handleSave"
|
||||
>
|
||||
保存
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<!-- 基本信息表单区 -->
|
||||
<div class="basic-info-section">
|
||||
<h3 class="section-title">基本信息</h3>
|
||||
<h3 class="section-title">
|
||||
基本信息
|
||||
</h3>
|
||||
<el-form
|
||||
ref="basicFormRef"
|
||||
:model="formData"
|
||||
@@ -18,22 +38,46 @@
|
||||
class="basic-form"
|
||||
>
|
||||
<el-row :gutter="20">
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-form-item label="套餐类别" prop="packageType">
|
||||
<el-select v-model="formData.packageType" placeholder="请选择套餐类别" style="width: 100%" :disabled="isReadOnly">
|
||||
<el-option label="检查套餐" value="检查套餐" />
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item
|
||||
label="套餐类别"
|
||||
prop="packageType"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.packageType"
|
||||
placeholder="请选择套餐类别"
|
||||
style="width: 100%"
|
||||
:disabled="isReadOnly"
|
||||
>
|
||||
<el-option
|
||||
label="检查套餐"
|
||||
value="检查套餐"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-form-item label="套餐级别" prop="packageLevel">
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item
|
||||
label="套餐级别"
|
||||
prop="packageLevel"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.packageLevel"
|
||||
placeholder="请选择套餐级别"
|
||||
style="width: 100%"
|
||||
@change="handlePackageLevelChange"
|
||||
:disabled="isReadOnly"
|
||||
@change="handlePackageLevelChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in packageLevelOptions"
|
||||
@@ -45,9 +89,23 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col v-if="formData.packageLevel === '2'" :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-form-item label="科室选择" prop="department">
|
||||
<el-select v-model="formData.department" placeholder="请选择科室" style="width: 100%" :disabled="isReadOnly">
|
||||
<el-col
|
||||
v-if="formData.packageLevel === '2'"
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item
|
||||
label="科室选择"
|
||||
prop="department"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.department"
|
||||
placeholder="请选择科室"
|
||||
style="width: 100%"
|
||||
:disabled="isReadOnly"
|
||||
>
|
||||
<el-option
|
||||
v-for="dept in departments"
|
||||
:key="dept.deptCode || dept.dictValue"
|
||||
@@ -58,23 +116,62 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col v-if="formData.packageLevel === '3'" :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-form-item label="用户选择" prop="user">
|
||||
<el-select v-model="formData.user" placeholder="请选择用户" style="width: 100%" :disabled="isReadOnly">
|
||||
<el-option label="当前用户" value="当前用户" />
|
||||
<el-col
|
||||
v-if="formData.packageLevel === '3'"
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item
|
||||
label="用户选择"
|
||||
prop="user"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.user"
|
||||
placeholder="请选择用户"
|
||||
style="width: 100%"
|
||||
:disabled="isReadOnly"
|
||||
>
|
||||
<el-option
|
||||
label="当前用户"
|
||||
value="当前用户"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-form-item label="套餐名称" prop="packageName">
|
||||
<el-input v-model="formData.packageName" placeholder="请输入套餐名称" :disabled="isReadOnly" />
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item
|
||||
label="套餐名称"
|
||||
prop="packageName"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.packageName"
|
||||
placeholder="请输入套餐名称"
|
||||
:disabled="isReadOnly"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item label="卫生机构">
|
||||
<el-select v-model="formData.organization" placeholder="请选择卫生机构" style="width: 100%" :disabled="isReadOnly">
|
||||
<el-select
|
||||
v-model="formData.organization"
|
||||
placeholder="请选择卫生机构"
|
||||
style="width: 100%"
|
||||
:disabled="isReadOnly"
|
||||
>
|
||||
<el-option
|
||||
v-for="org in organizationOptions"
|
||||
:key="org.value"
|
||||
@@ -85,108 +182,217 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item label="套餐金额">
|
||||
<el-input v-model="packagePriceDisplay" :disabled="true" placeholder="自动计算">
|
||||
<template #append>元</template>
|
||||
<el-input
|
||||
v-model="packagePriceDisplay"
|
||||
:disabled="true"
|
||||
placeholder="自动计算"
|
||||
>
|
||||
<template #append>
|
||||
元
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item label="折扣">
|
||||
<el-input
|
||||
v-model="formData.discount"
|
||||
placeholder="请输入折扣"
|
||||
@input="handleDiscountChange"
|
||||
:disabled="isReadOnly"
|
||||
@input="handleDiscountChange"
|
||||
>
|
||||
<template #append>%</template>
|
||||
<template #append>
|
||||
%
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item label="制单人">
|
||||
<el-input v-model="formData.creator" :disabled="true" />
|
||||
<el-input
|
||||
v-model="formData.creator"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-form-item label="是否停用">
|
||||
<el-radio-group v-model="formData.isDisabled" :disabled="isReadOnly">
|
||||
<el-radio :value="0">启用</el-radio>
|
||||
<el-radio :value="1">停用</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item label="是否停用">
|
||||
<el-radio-group
|
||||
v-model="formData.isDisabled"
|
||||
:disabled="isReadOnly"
|
||||
>
|
||||
<el-radio :value="0">
|
||||
启用
|
||||
</el-radio>
|
||||
<el-radio :value="1">
|
||||
停用
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-form-item label="显示套餐名">
|
||||
<el-radio-group v-model="formData.showPackageName" :disabled="isReadOnly">
|
||||
<el-radio :value="1">是</el-radio>
|
||||
<el-radio :value="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item label="显示套餐名">
|
||||
<el-radio-group
|
||||
v-model="formData.showPackageName"
|
||||
:disabled="isReadOnly"
|
||||
>
|
||||
<el-radio :value="1">
|
||||
是
|
||||
</el-radio>
|
||||
<el-radio :value="0">
|
||||
否
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-form-item label="生成服务费">
|
||||
<el-radio-group v-model="formData.generateServiceFee" :disabled="isReadOnly">
|
||||
<el-radio :value="1">是</el-radio>
|
||||
<el-radio :value="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item label="生成服务费">
|
||||
<el-radio-group
|
||||
v-model="formData.generateServiceFee"
|
||||
:disabled="isReadOnly"
|
||||
>
|
||||
<el-radio :value="1">
|
||||
是
|
||||
</el-radio>
|
||||
<el-radio :value="0">
|
||||
否
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-form-item label="套餐价格">
|
||||
<el-radio-group v-model="formData.packagePriceEnabled" :disabled="isReadOnly">
|
||||
<el-radio :value="1">启用</el-radio>
|
||||
<el-radio :value="0">不启用</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item label="套餐价格">
|
||||
<el-radio-group
|
||||
v-model="formData.packagePriceEnabled"
|
||||
:disabled="isReadOnly"
|
||||
>
|
||||
<el-radio :value="1">
|
||||
启用
|
||||
</el-radio>
|
||||
<el-radio :value="0">
|
||||
不启用
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||||
<el-form-item label="服务费">
|
||||
<el-input-number
|
||||
v-model="formData.serviceFee"
|
||||
:precision="2"
|
||||
:min="0"
|
||||
placeholder="自动合计"
|
||||
style="width: 100%"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="8"
|
||||
:lg="6"
|
||||
>
|
||||
<el-form-item label="服务费">
|
||||
<el-input-number
|
||||
v-model="formData.serviceFee"
|
||||
:precision="2"
|
||||
:min="0"
|
||||
placeholder="自动合计"
|
||||
style="width: 100%"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :xs="24" :sm="12" :md="12" :lg="12">
|
||||
<el-form-item label="备注">
|
||||
<el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" :disabled="isReadOnly" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col
|
||||
:xs="24"
|
||||
:sm="12"
|
||||
:md="12"
|
||||
:lg="12"
|
||||
>
|
||||
<el-form-item label="备注">
|
||||
<el-input
|
||||
v-model="formData.remark"
|
||||
type="textarea"
|
||||
placeholder="请输入备注"
|
||||
:disabled="isReadOnly"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<!-- 套餐明细表格区 -->
|
||||
<div class="package-detail-section">
|
||||
<h3 class="section-title">套餐明细</h3>
|
||||
<h3 class="section-title">
|
||||
套餐明细
|
||||
</h3>
|
||||
<el-table
|
||||
:data="detailData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:max-height="450"
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||
<el-table-column prop="code" label="编号" width="120" align="center">
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
width="60"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="code"
|
||||
label="编号"
|
||||
width="120"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-input v-if="row.editing" v-model="row.code" placeholder="请输入编号" />
|
||||
<el-input
|
||||
v-if="row.editing"
|
||||
v-model="row.code"
|
||||
placeholder="请输入编号"
|
||||
/>
|
||||
<span v-else>{{ row.code }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="itemName" label="项目名称/规格" min-width="200">
|
||||
<el-table-column
|
||||
prop="itemName"
|
||||
label="项目名称/规格"
|
||||
min-width="200"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.editing">
|
||||
<el-select
|
||||
@@ -196,10 +402,10 @@
|
||||
remote
|
||||
:remote-method="(query) => handleProjectSearch(query, row)"
|
||||
style="width: 100%"
|
||||
@change="handleItemSelect(row)"
|
||||
@focus="initializeSearchList(row)"
|
||||
:loading="diagnosisTreatmentList.length === 0"
|
||||
clearable
|
||||
@change="handleItemSelect(row)"
|
||||
@focus="initializeSearchList(row)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in (row.filteredList || diagnosisTreatmentList)"
|
||||
@@ -218,11 +424,11 @@
|
||||
<template #empty>
|
||||
<div style="padding: 10px; text-align: center; color: #999;">
|
||||
<div v-if="diagnosisTreatmentList.length > 0">
|
||||
无匹配项目<br/>
|
||||
无匹配项目<br>
|
||||
<small>请尝试其他关键词</small>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无项目数据<br/>
|
||||
暂无项目数据<br>
|
||||
<small>请先在【系统管理-目录管理-诊疗项目】中添加项目</small>
|
||||
</div>
|
||||
</div>
|
||||
@@ -232,7 +438,12 @@
|
||||
<span v-else>{{ row.itemName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="dose" label="剂量" width="100" align="center">
|
||||
<el-table-column
|
||||
prop="dose"
|
||||
label="剂量"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-input
|
||||
v-if="row.editing"
|
||||
@@ -243,19 +454,42 @@
|
||||
<span v-else>{{ row.dose || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="method" label="途径" width="80" align="center">
|
||||
<el-table-column
|
||||
prop="method"
|
||||
label="途径"
|
||||
width="80"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-input v-if="row.editing" v-model="row.method" placeholder="-" />
|
||||
<el-input
|
||||
v-if="row.editing"
|
||||
v-model="row.method"
|
||||
placeholder="-"
|
||||
/>
|
||||
<span v-else>{{ row.method || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="frequency" label="频次" width="80" align="center">
|
||||
<el-table-column
|
||||
prop="frequency"
|
||||
label="频次"
|
||||
width="80"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-input v-if="row.editing" v-model="row.frequency" placeholder="-" />
|
||||
<el-input
|
||||
v-if="row.editing"
|
||||
v-model="row.frequency"
|
||||
placeholder="-"
|
||||
/>
|
||||
<span v-else>{{ row.frequency || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="days" label="天数" width="100" align="center">
|
||||
<el-table-column
|
||||
prop="days"
|
||||
label="天数"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-input
|
||||
v-if="row.editing"
|
||||
@@ -266,7 +500,12 @@
|
||||
<span v-else>{{ row.days || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="quantity" label="数量" width="100" align="center">
|
||||
<el-table-column
|
||||
prop="quantity"
|
||||
label="数量"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-input-number
|
||||
v-if="row.editing"
|
||||
@@ -281,13 +520,23 @@
|
||||
<span v-else>{{ row.quantity }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="unit" label="单位" width="80" align="center">
|
||||
<el-table-column
|
||||
prop="unit"
|
||||
label="单位"
|
||||
width="80"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.editing">{{ row.unit || '-' }}</span>
|
||||
<span v-else>{{ row.unit || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="unitPrice" label="单价" width="150" align="center">
|
||||
<el-table-column
|
||||
prop="unitPrice"
|
||||
label="单价"
|
||||
width="150"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-input
|
||||
v-if="row.editing"
|
||||
@@ -300,12 +549,22 @@
|
||||
<span v-else>{{ row.unitPrice?.toFixed(6) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="amount" label="金额" width="100" align="center">
|
||||
<el-table-column
|
||||
prop="amount"
|
||||
label="金额"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ row.amount?.toFixed(2) || '0.00' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="serviceCharge" label="服务费" width="100" align="center">
|
||||
<el-table-column
|
||||
prop="serviceCharge"
|
||||
label="服务费"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-input-number
|
||||
v-if="row.editing"
|
||||
@@ -320,18 +579,37 @@
|
||||
<span v-else>{{ row.serviceCharge?.toFixed(2) || '0.00' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="total" label="总金额" width="100" align="center">
|
||||
<el-table-column
|
||||
prop="total"
|
||||
label="总金额"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ row.total?.toFixed(2) || '0.00' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="origin" label="产地" width="120">
|
||||
<el-table-column
|
||||
prop="origin"
|
||||
label="产地"
|
||||
width="120"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-input v-if="row.editing" v-model="row.origin" placeholder="-" />
|
||||
<el-input
|
||||
v-if="row.editing"
|
||||
v-model="row.origin"
|
||||
placeholder="-"
|
||||
/>
|
||||
<span v-else>{{ row.origin || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" v-if="!isReadOnly" width="150" align="center" fixed="right">
|
||||
<el-table-column
|
||||
v-if="!isReadOnly"
|
||||
label="操作"
|
||||
width="150"
|
||||
align="center"
|
||||
fixed="right"
|
||||
>
|
||||
<template #default="{ row, $index }">
|
||||
<div class="actions">
|
||||
<el-button
|
||||
@@ -339,8 +617,8 @@
|
||||
class="btn btn-edit"
|
||||
size="small"
|
||||
circle
|
||||
@click="handleEditRow(row)"
|
||||
title="编辑"
|
||||
@click="handleEditRow(row)"
|
||||
>
|
||||
✏️
|
||||
</el-button>
|
||||
@@ -349,8 +627,8 @@
|
||||
class="btn btn-confirm"
|
||||
size="small"
|
||||
circle
|
||||
@click="handleConfirmRow(row)"
|
||||
title="保存"
|
||||
@click="handleConfirmRow(row)"
|
||||
>
|
||||
✓
|
||||
</el-button>
|
||||
@@ -358,8 +636,8 @@
|
||||
class="btn btn-add"
|
||||
size="small"
|
||||
circle
|
||||
@click="handleAddRow"
|
||||
title="添加"
|
||||
@click="handleAddRow"
|
||||
>
|
||||
+
|
||||
</el-button>
|
||||
@@ -367,8 +645,8 @@
|
||||
class="btn btn-delete"
|
||||
size="small"
|
||||
circle
|
||||
@click="handleDeleteRow($index)"
|
||||
title="删除"
|
||||
@click="handleDeleteRow($index)"
|
||||
>
|
||||
✕
|
||||
</el-button>
|
||||
|
||||
@@ -62,25 +62,47 @@
|
||||
<div class="header">
|
||||
<h1>{{ activeMenu }}管理</h1>
|
||||
<div class="header-actions">
|
||||
<button class="btn btn-add-new" @click="handleAddNewRow">+
|
||||
<button
|
||||
class="btn btn-add-new"
|
||||
@click="handleAddNewRow"
|
||||
>
|
||||
+
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="table-container">
|
||||
<div class="table-container">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50px;">行</th>
|
||||
<th style="width: 100px;">*编码</th>
|
||||
<th style="width: 150px;">*名称</th>
|
||||
<th style="width: 150px;">*检查类型</th>
|
||||
<th style="width: 120px;">选择部位</th>
|
||||
<th style="width: 150px;">*执行科室</th>
|
||||
<th style="width: 100px;">序号</th>
|
||||
<th style="width: 150px;">备注</th>
|
||||
<th style="width: 120px;">操作</th>
|
||||
<th style="width: 50px;">
|
||||
行
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
*编码
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
*名称
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
*检查类型
|
||||
</th>
|
||||
<th style="width: 120px;">
|
||||
选择部位
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
*执行科室
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
序号
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
备注
|
||||
</th>
|
||||
<th style="width: 120px;">
|
||||
操作
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -93,7 +115,11 @@
|
||||
<td>{{ item.row }}</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" placeholder="请输入编码" v-model="item.code">
|
||||
<input
|
||||
v-model="item.code"
|
||||
type="text"
|
||||
placeholder="请输入编码"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.code }}
|
||||
@@ -101,7 +127,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" placeholder="请输入名称" v-model="item.name">
|
||||
<input
|
||||
v-model="item.name"
|
||||
type="text"
|
||||
placeholder="请输入名称"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.name }}
|
||||
@@ -109,8 +139,13 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<select v-model="item.type" :class="{ 'placeholder-text': !item.type }">
|
||||
<option value="">选择检查类型</option>
|
||||
<select
|
||||
v-model="item.type"
|
||||
:class="{ 'placeholder-text': !item.type }"
|
||||
>
|
||||
<option value="">
|
||||
选择检查类型
|
||||
</option>
|
||||
<option
|
||||
v-for="opt in checkTypeOptions"
|
||||
:key="opt.value"
|
||||
@@ -122,16 +157,28 @@
|
||||
</template>
|
||||
<template v-else>
|
||||
<span v-if="item.type">{{ getCheckTypeLabel(item.type) }}</span>
|
||||
<span v-else class="placeholder-text">选择检查类型</span>
|
||||
<span
|
||||
v-else
|
||||
class="placeholder-text"
|
||||
>选择检查类型</span>
|
||||
</template>
|
||||
</td>
|
||||
<td class="checkbox-container">
|
||||
<input type="checkbox" v-model="item.selected" @click.stop>
|
||||
<input
|
||||
v-model="item.selected"
|
||||
type="checkbox"
|
||||
@click.stop
|
||||
>
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<select v-model="item.department" :class="{ 'placeholder-text': !item.department }">
|
||||
<option value="">选择执行科室</option>
|
||||
<select
|
||||
v-model="item.department"
|
||||
:class="{ 'placeholder-text': !item.department }"
|
||||
>
|
||||
<option value="">
|
||||
选择执行科室
|
||||
</option>
|
||||
<option
|
||||
v-if="item.department"
|
||||
:value="item.department"
|
||||
@@ -149,12 +196,18 @@
|
||||
</template>
|
||||
<template v-else>
|
||||
<span v-if="item.department">{{ item.department }}</span>
|
||||
<span v-else class="placeholder-text">选择执行科室</span>
|
||||
<span
|
||||
v-else
|
||||
class="placeholder-text"
|
||||
>选择执行科室</span>
|
||||
</template>
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" v-model="item.number">
|
||||
<input
|
||||
v-model="item.number"
|
||||
type="text"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.number }}
|
||||
@@ -162,7 +215,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" placeholder="请输入备注" v-model="item.remark">
|
||||
<input
|
||||
v-model="item.remark"
|
||||
type="text"
|
||||
placeholder="请输入备注"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.remark || '' }}
|
||||
@@ -170,34 +227,50 @@
|
||||
</td>
|
||||
<td class="actions">
|
||||
<template v-if="item.editing">
|
||||
<button class="btn btn-confirm" @click.stop="handleConfirm(index)" title="保存">
|
||||
<button
|
||||
class="btn btn-confirm"
|
||||
title="保存"
|
||||
@click.stop="handleConfirm(index)"
|
||||
>
|
||||
✓
|
||||
</button>
|
||||
<button class="btn btn-cancel" @click.stop="handleCancelEdit(index)" title="取消">
|
||||
<button
|
||||
class="btn btn-cancel"
|
||||
title="取消"
|
||||
@click.stop="handleCancelEdit(index)"
|
||||
>
|
||||
✕
|
||||
</button>
|
||||
<button
|
||||
v-if="!item.parentId"
|
||||
class="btn btn-add"
|
||||
@click.stop="handleAdd(index)"
|
||||
title="添加子项"
|
||||
@click.stop="handleAdd(index)"
|
||||
>
|
||||
+
|
||||
</button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<button class="btn btn-edit" @click.stop="handleEdit(index)" title="修改">
|
||||
<button
|
||||
class="btn btn-edit"
|
||||
title="修改"
|
||||
@click.stop="handleEdit(index)"
|
||||
>
|
||||
✏️
|
||||
</button>
|
||||
<button
|
||||
v-if="!item.parentId"
|
||||
class="btn btn-add"
|
||||
@click.stop="handleAdd(index)"
|
||||
title="添加子项"
|
||||
@click.stop="handleAdd(index)"
|
||||
>
|
||||
+
|
||||
</button>
|
||||
<button class="btn btn-delete" @click.stop="handleDelete(index)" title="删除">
|
||||
<button
|
||||
class="btn btn-delete"
|
||||
title="删除"
|
||||
@click.stop="handleDelete(index)"
|
||||
>
|
||||
✕
|
||||
</button>
|
||||
</template>
|
||||
@@ -214,57 +287,108 @@
|
||||
<h1>{{ activeMenu }}管理</h1>
|
||||
</div>
|
||||
<div class="search-bar search-bar-method">
|
||||
<div class="search-filters">
|
||||
<div class="search-item">
|
||||
<label>检查类型</label>
|
||||
<el-select v-model="searchParamsMethod.checkType" placeholder="选择检查类型" style="width: 150px">
|
||||
<el-option
|
||||
v-for="item in checkTypeOptionsForMethodPart"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>名称</label>
|
||||
<el-input placeholder="名称/编码" v-model="searchParamsMethod.name" />
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>费用套餐</label>
|
||||
<el-select v-model="searchParamsMethod.packageName" placeholder="选择使用套餐" style="width: 150px" filterable clearable>
|
||||
<el-option
|
||||
v-for="pkg in checkPackages"
|
||||
:key="pkg.id"
|
||||
:label="pkg.packageName"
|
||||
:value="pkg.packageName"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="search-filters">
|
||||
<div class="search-item">
|
||||
<label>检查类型</label>
|
||||
<el-select
|
||||
v-model="searchParamsMethod.checkType"
|
||||
placeholder="选择检查类型"
|
||||
style="width: 150px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in checkTypeOptionsForMethodPart"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="search-actions">
|
||||
<el-button type="primary" @mouseenter="hoverAddButton = true" @mouseleave="hoverAddButton = false" @click="handleAddNewRow">新增</el-button>
|
||||
<el-button type="primary" @click="handleSearch">查询</el-button>
|
||||
<el-button type="primary" @click="handleReset">重置</el-button>
|
||||
<el-button type="success" @click="handleExport">导出表格</el-button>
|
||||
<div class="search-item">
|
||||
<label>名称</label>
|
||||
<el-input
|
||||
v-model="searchParamsMethod.name"
|
||||
placeholder="名称/编码"
|
||||
/>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>费用套餐</label>
|
||||
<el-select
|
||||
v-model="searchParamsMethod.packageName"
|
||||
placeholder="选择使用套餐"
|
||||
style="width: 150px"
|
||||
filterable
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="pkg in checkPackages"
|
||||
:key="pkg.id"
|
||||
:label="pkg.packageName"
|
||||
:value="pkg.packageName"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-actions">
|
||||
<el-button
|
||||
type="primary"
|
||||
@mouseenter="hoverAddButton = true"
|
||||
@mouseleave="hoverAddButton = false"
|
||||
@click="handleAddNewRow"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleSearch"
|
||||
>
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleReset"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
@click="handleExport"
|
||||
>
|
||||
导出表格
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="table-container">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50px;">行</th>
|
||||
<th style="width: 100px;">代码</th>
|
||||
<th style="width: 150px;">名称</th>
|
||||
<th style="width: 150px;">检查类型</th>
|
||||
<th style="width: 150px;">套餐名称</th>
|
||||
<th style="width: 100px;">曝光次数</th>
|
||||
<th style="width: 100px;">序号</th>
|
||||
<th style="width: 150px;">备注</th>
|
||||
<th style="width: 120px;">操作</th>
|
||||
<th style="width: 50px;">
|
||||
行
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
代码
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
名称
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
检查类型
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
套餐名称
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
曝光次数
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
序号
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
备注
|
||||
</th>
|
||||
<th style="width: 120px;">
|
||||
操作
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -277,7 +401,11 @@
|
||||
<td>{{ item.row }}</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" placeholder="请输入编码" v-model="item.code">
|
||||
<input
|
||||
v-model="item.code"
|
||||
type="text"
|
||||
placeholder="请输入编码"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.code }}
|
||||
@@ -285,7 +413,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" placeholder="请输入方法名称" v-model="item.name">
|
||||
<input
|
||||
v-model="item.name"
|
||||
type="text"
|
||||
placeholder="请输入方法名称"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.name }}
|
||||
@@ -293,7 +425,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<el-select v-model="item.checkType" placeholder="选择检查类型" style="width: 100%">
|
||||
<el-select
|
||||
v-model="item.checkType"
|
||||
placeholder="选择检查类型"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="opt in checkTypeOptionsForMethodPart"
|
||||
:key="opt.value"
|
||||
@@ -332,15 +468,21 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" v-model="item.exposureNum">
|
||||
<input
|
||||
v-model="item.exposureNum"
|
||||
type="text"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.exposureNum || 0}}
|
||||
{{ item.exposureNum || 0 }}
|
||||
</template>
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" v-model="item.orderNum">
|
||||
<input
|
||||
v-model="item.orderNum"
|
||||
type="text"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.orderNum || '0' }}
|
||||
@@ -348,7 +490,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" placeholder="请输入备注" v-model="item.remark">
|
||||
<input
|
||||
v-model="item.remark"
|
||||
type="text"
|
||||
placeholder="请输入备注"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.remark || '' }}
|
||||
@@ -356,21 +502,41 @@
|
||||
</td>
|
||||
<td class="actions">
|
||||
<template v-if="item.editing">
|
||||
<button class="btn btn-confirm" @click.stop="handleConfirm(index)" title="保存">
|
||||
<button
|
||||
class="btn btn-confirm"
|
||||
title="保存"
|
||||
@click.stop="handleConfirm(index)"
|
||||
>
|
||||
✓
|
||||
</button>
|
||||
<button class="btn btn-cancel" @click.stop="handleCancelEdit(index)" title="取消">
|
||||
<button
|
||||
class="btn btn-cancel"
|
||||
title="取消"
|
||||
@click.stop="handleCancelEdit(index)"
|
||||
>
|
||||
✕
|
||||
</button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<button class="btn btn-edit" @click.stop="handleEdit(index)" title="编辑">
|
||||
<button
|
||||
class="btn btn-edit"
|
||||
title="编辑"
|
||||
@click.stop="handleEdit(index)"
|
||||
>
|
||||
✏️
|
||||
</button>
|
||||
<button class="btn btn-confirm" @click.stop="handleConfirm(index)" title="保存">
|
||||
<button
|
||||
class="btn btn-confirm"
|
||||
title="保存"
|
||||
@click.stop="handleConfirm(index)"
|
||||
>
|
||||
✓
|
||||
</button>
|
||||
<button class="btn btn-delete" @click.stop="handleDelete(index)" title="删除">
|
||||
<button
|
||||
class="btn btn-delete"
|
||||
title="删除"
|
||||
@click.stop="handleDelete(index)"
|
||||
>
|
||||
✕
|
||||
</button>
|
||||
</template>
|
||||
@@ -387,65 +553,115 @@
|
||||
<h1>{{ activeMenu }}管理</h1>
|
||||
</div>
|
||||
<div class="search-bar search-bar-part">
|
||||
<div class="search-item">
|
||||
<label>检查类型</label>
|
||||
<el-select v-model="searchParamsPart.checkType" placeholder="选择检查类型" style="width: 150px">
|
||||
<el-option
|
||||
v-for="item in checkTypeOptionsForMethodPart"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>名称</label>
|
||||
<el-input placeholder="名称/编码" v-model="searchParamsPart.name" />
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>费用套餐</label>
|
||||
<el-select
|
||||
v-model="searchParamsPart.packageName"
|
||||
placeholder="选择套餐"
|
||||
style="width: 150px"
|
||||
filterable
|
||||
clearable
|
||||
:filter-method="filterPackageOptions"
|
||||
>
|
||||
<el-option
|
||||
v-for="pkg in filteredPackageOptions"
|
||||
:key="pkg.id"
|
||||
:label="pkg.packageName"
|
||||
:value="pkg.packageName"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<div class="search-actions">
|
||||
<el-button type="primary" @click="handleAddNewRow">新增</el-button>
|
||||
<el-button type="primary" @click="handleSearch">查询</el-button>
|
||||
<el-button type="primary" @click="handleReset">重置</el-button>
|
||||
<el-button type="success" @click="handleExport">导出表格</el-button>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>检查类型</label>
|
||||
<el-select
|
||||
v-model="searchParamsPart.checkType"
|
||||
placeholder="选择检查类型"
|
||||
style="width: 150px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in checkTypeOptionsForMethodPart"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>名称</label>
|
||||
<el-input
|
||||
v-model="searchParamsPart.name"
|
||||
placeholder="名称/编码"
|
||||
/>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>费用套餐</label>
|
||||
<el-select
|
||||
v-model="searchParamsPart.packageName"
|
||||
placeholder="选择套餐"
|
||||
style="width: 150px"
|
||||
filterable
|
||||
clearable
|
||||
:filter-method="filterPackageOptions"
|
||||
>
|
||||
<el-option
|
||||
v-for="pkg in filteredPackageOptions"
|
||||
:key="pkg.id"
|
||||
:label="pkg.packageName"
|
||||
:value="pkg.packageName"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<div class="search-actions">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleAddNewRow"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleSearch"
|
||||
>
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleReset"
|
||||
>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
@click="handleExport"
|
||||
>
|
||||
导出表格
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="table-container">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50px;">行</th>
|
||||
<th style="width: 100px;">*编码</th>
|
||||
<th style="width: 100px;">*名称</th>
|
||||
<th style="width: 120px;">检查类型</th>
|
||||
<th style="width: 80px;">曝光次数</th>
|
||||
<th style="width: 120px;">费用套餐</th>
|
||||
<th style="width: 100px;">金额</th>
|
||||
<th style="width: 100px;">序号</th>
|
||||
<th style="width: 120px;">服务范围</th>
|
||||
<th style="width: 120px;">下级医技类型</th>
|
||||
<th style="width: 150px;">备注</th>
|
||||
<th style="width: 120px;">操作</th>
|
||||
<th style="width: 50px;">
|
||||
行
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
*编码
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
*名称
|
||||
</th>
|
||||
<th style="width: 120px;">
|
||||
检查类型
|
||||
</th>
|
||||
<th style="width: 80px;">
|
||||
曝光次数
|
||||
</th>
|
||||
<th style="width: 120px;">
|
||||
费用套餐
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
金额
|
||||
</th>
|
||||
<th style="width: 100px;">
|
||||
序号
|
||||
</th>
|
||||
<th style="width: 120px;">
|
||||
服务范围
|
||||
</th>
|
||||
<th style="width: 120px;">
|
||||
下级医技类型
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
备注
|
||||
</th>
|
||||
<th style="width: 120px;">
|
||||
操作
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -458,7 +674,11 @@
|
||||
<td>{{ item.row }}</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" placeholder="请输入编码" v-model="item.code">
|
||||
<input
|
||||
v-model="item.code"
|
||||
type="text"
|
||||
placeholder="请输入编码"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.code }}
|
||||
@@ -466,7 +686,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" placeholder="请输入名称" v-model="item.name">
|
||||
<input
|
||||
v-model="item.name"
|
||||
type="text"
|
||||
placeholder="请输入名称"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.name }}
|
||||
@@ -474,7 +698,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<el-select v-model="item.checkType" placeholder="选择检查类型" style="width: 100%">
|
||||
<el-select
|
||||
v-model="item.checkType"
|
||||
placeholder="选择检查类型"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="opt in checkTypeOptionsForMethodPart"
|
||||
:key="opt.value"
|
||||
@@ -489,7 +717,12 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="number" min="0" placeholder="请输入曝光次数" v-model="item.exposureNum">
|
||||
<input
|
||||
v-model="item.exposureNum"
|
||||
type="number"
|
||||
min="0"
|
||||
placeholder="请输入曝光次数"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.exposureNum || '0' }}
|
||||
@@ -520,7 +753,13 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="number" step="0.01" min="0" placeholder="请输入金额" v-model="item.price">
|
||||
<input
|
||||
v-model="item.price"
|
||||
type="number"
|
||||
step="0.01"
|
||||
min="0"
|
||||
placeholder="请输入金额"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.price || '0.00' }}
|
||||
@@ -528,7 +767,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" placeholder="请输入序号" v-model="item.number">
|
||||
<input
|
||||
v-model="item.number"
|
||||
type="text"
|
||||
placeholder="请输入序号"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.number || '999999' }}
|
||||
@@ -536,7 +779,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<el-select v-model="item.serviceScope" placeholder="选择服务范围" style="width: 100%">
|
||||
<el-select
|
||||
v-model="item.serviceScope"
|
||||
placeholder="选择服务范围"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="opt in serviceScopeDicts"
|
||||
:key="opt.dictValue"
|
||||
@@ -551,7 +798,13 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<el-select v-model="item.subType" placeholder="选择下级医技类型" style="width: 100%" clearable filterable>
|
||||
<el-select
|
||||
v-model="item.subType"
|
||||
placeholder="选择下级医技类型"
|
||||
style="width: 100%"
|
||||
clearable
|
||||
filterable
|
||||
>
|
||||
<el-option
|
||||
v-for="opt in getSubTypeOptions(item.checkType)"
|
||||
:key="opt.value"
|
||||
@@ -566,7 +819,11 @@
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" placeholder="请输入备注" v-model="item.remark">
|
||||
<input
|
||||
v-model="item.remark"
|
||||
type="text"
|
||||
placeholder="请输入备注"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.remark || '' }}
|
||||
@@ -574,21 +831,41 @@
|
||||
</td>
|
||||
<td class="actions">
|
||||
<template v-if="item.editing">
|
||||
<button class="btn btn-confirm" @click.stop="handleConfirm(index)" title="保存">
|
||||
<button
|
||||
class="btn btn-confirm"
|
||||
title="保存"
|
||||
@click.stop="handleConfirm(index)"
|
||||
>
|
||||
✓
|
||||
</button>
|
||||
<button class="btn btn-cancel" @click.stop="handleCancelEdit(index)" title="取消">
|
||||
<button
|
||||
class="btn btn-cancel"
|
||||
title="取消"
|
||||
@click.stop="handleCancelEdit(index)"
|
||||
>
|
||||
✕
|
||||
</button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<button class="btn btn-edit" @click.stop="handleEdit(index)" title="编辑">
|
||||
<button
|
||||
class="btn btn-edit"
|
||||
title="编辑"
|
||||
@click.stop="handleEdit(index)"
|
||||
>
|
||||
✏️
|
||||
</button>
|
||||
<button class="btn btn-confirm" @click.stop="handleConfirm(index)" title="保存">
|
||||
<button
|
||||
class="btn btn-confirm"
|
||||
title="保存"
|
||||
@click.stop="handleConfirm(index)"
|
||||
>
|
||||
✓
|
||||
</button>
|
||||
<button class="btn btn-delete" @click.stop="handleDelete(index)" title="删除">
|
||||
<button
|
||||
class="btn btn-delete"
|
||||
title="删除"
|
||||
@click.stop="handleDelete(index)"
|
||||
>
|
||||
✕
|
||||
</button>
|
||||
</template>
|
||||
@@ -599,7 +876,10 @@
|
||||
</div>
|
||||
</template>
|
||||
<!-- 分页区域 -->
|
||||
<div class="pagination" v-if="activeMenu === '检查类型'">
|
||||
<div
|
||||
v-if="activeMenu === '检查类型'"
|
||||
class="pagination"
|
||||
>
|
||||
<button
|
||||
class="pagination-btn"
|
||||
:disabled="checkTypePagination.currentPage <= 1"
|
||||
@@ -618,10 +898,17 @@
|
||||
›
|
||||
</button>
|
||||
</div>
|
||||
<div class="pagination" v-else>
|
||||
<button class="pagination-btn">‹</button>
|
||||
<div
|
||||
v-else
|
||||
class="pagination"
|
||||
>
|
||||
<button class="pagination-btn">
|
||||
‹
|
||||
</button>
|
||||
<span>1</span>
|
||||
<button class="pagination-btn">›</button>
|
||||
<button class="pagination-btn">
|
||||
›
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<template>
|
||||
<div class="lis-group-maintain">
|
||||
|
||||
<!-- 标题区域 -->
|
||||
<div class="header">
|
||||
<h2>LIS分组维护</h2>
|
||||
@@ -10,105 +9,176 @@
|
||||
<div class="table-container">
|
||||
<table class="data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50px;">行</th>
|
||||
<th style="width: 150px;">卫生机构</th>
|
||||
<th style="width: 150px;">日期</th>
|
||||
<th style="width: 200px;">LIS分组名称</th>
|
||||
<th style="width: 120px;">采血管</th>
|
||||
<th style="width: 300px;">备注</th>
|
||||
<th style="width: 150px;">操作</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 50px;">
|
||||
行
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
卫生机构
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
日期
|
||||
</th>
|
||||
<th style="width: 200px;">
|
||||
LIS分组名称
|
||||
</th>
|
||||
<th style="width: 120px;">
|
||||
采血管
|
||||
</th>
|
||||
<th style="width: 300px;">
|
||||
备注
|
||||
</th>
|
||||
<th style="width: 150px;">
|
||||
操作
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr
|
||||
<tr
|
||||
v-for="(item, index) in tableData"
|
||||
:key="item.id || index"
|
||||
:class="{ 'editing-row': item.editing, 'success-row': item.success, 'deleting-row': item.deleting }"
|
||||
>
|
||||
<td>{{ index + 1 }}</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input
|
||||
type="text"
|
||||
>
|
||||
<td>{{ index + 1 }}</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input
|
||||
v-model="item.healthInstitution"
|
||||
disabled
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.healthInstitution }}
|
||||
</template>
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" v-model="item.date" disabled>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.date }}
|
||||
</template>
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input
|
||||
type="text"
|
||||
v-model="item.lisGroupName"
|
||||
placeholder="请输入分组名称"
|
||||
:class="{ 'error-input': item.errors?.lisGroupName, 'focus-target': item.isNew }"
|
||||
>
|
||||
<span v-if="item.errors?.lisGroupName" class="error-message">{{ item.errors.lisGroupName }}</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.lisGroupName }}
|
||||
</template>
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<select
|
||||
v-model="item.bloodCollectionTube"
|
||||
:class="{ 'error-input': item.errors?.bloodCollectionTube }"
|
||||
>
|
||||
<option value="">请选择采血管</option>
|
||||
<option v-for="tube in bloodTubeOptions" :key="tube" :value="tube">
|
||||
{{ tube }}
|
||||
</option>
|
||||
</select>
|
||||
<span v-if="item.errors?.bloodCollectionTube" class="error-message">{{ item.errors.bloodCollectionTube }}</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.bloodCollectionTube }}
|
||||
</template>
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input type="text" v-model="item.remark" placeholder="请输入备注信息">
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.remark || '' }}
|
||||
</template>
|
||||
</td>
|
||||
<td>
|
||||
<div class="actions">
|
||||
<template v-if="!item.editing">
|
||||
<button class="btn btn-edit" @click="startEdit(item)">✏️</button>
|
||||
<button class="btn btn-primary" @click="addRow">+</button>
|
||||
<button class="btn btn-delete" @click="deleteRow(index)">🗑</button>
|
||||
disabled
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
<button class="btn btn-confirm" @click="confirmEdit(item)">√</button>
|
||||
<button class="btn btn-cancel" @click="cancelEdit(item)">×</button>
|
||||
{{ item.healthInstitution }}
|
||||
</template>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input
|
||||
v-model="item.date"
|
||||
type="text"
|
||||
disabled
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.date }}
|
||||
</template>
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input
|
||||
v-model="item.lisGroupName"
|
||||
type="text"
|
||||
placeholder="请输入分组名称"
|
||||
:class="{ 'error-input': item.errors?.lisGroupName, 'focus-target': item.isNew }"
|
||||
>
|
||||
<span
|
||||
v-if="item.errors?.lisGroupName"
|
||||
class="error-message"
|
||||
>{{ item.errors.lisGroupName }}</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.lisGroupName }}
|
||||
</template>
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<select
|
||||
v-model="item.bloodCollectionTube"
|
||||
:class="{ 'error-input': item.errors?.bloodCollectionTube }"
|
||||
>
|
||||
<option value="">
|
||||
请选择采血管
|
||||
</option>
|
||||
<option
|
||||
v-for="tube in bloodTubeOptions"
|
||||
:key="tube"
|
||||
:value="tube"
|
||||
>
|
||||
{{ tube }}
|
||||
</option>
|
||||
</select>
|
||||
<span
|
||||
v-if="item.errors?.bloodCollectionTube"
|
||||
class="error-message"
|
||||
>{{ item.errors.bloodCollectionTube }}</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.bloodCollectionTube }}
|
||||
</template>
|
||||
</td>
|
||||
<td>
|
||||
<template v-if="item.editing">
|
||||
<input
|
||||
v-model="item.remark"
|
||||
type="text"
|
||||
placeholder="请输入备注信息"
|
||||
>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ item.remark || '' }}
|
||||
</template>
|
||||
</td>
|
||||
<td>
|
||||
<div class="actions">
|
||||
<template v-if="!item.editing">
|
||||
<button
|
||||
class="btn btn-edit"
|
||||
@click="startEdit(item)"
|
||||
>
|
||||
✏️
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="addRow"
|
||||
>
|
||||
+
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-delete"
|
||||
@click="deleteRow(index)"
|
||||
>
|
||||
🗑
|
||||
</button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<button
|
||||
class="btn btn-confirm"
|
||||
@click="confirmEdit(item)"
|
||||
>
|
||||
√
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-cancel"
|
||||
@click="cancelEdit(item)"
|
||||
>
|
||||
×
|
||||
</button>
|
||||
</template>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 分页区域 -->
|
||||
<div class="pagination">
|
||||
<button class="pagination-btn" @click="prevPage" :disabled="currentPage <= 1">‹</button>
|
||||
<button
|
||||
class="pagination-btn"
|
||||
:disabled="currentPage <= 1"
|
||||
@click="prevPage"
|
||||
>
|
||||
‹
|
||||
</button>
|
||||
<span>{{ currentPage }}</span>
|
||||
<button class="pagination-btn" @click="nextPage" :disabled="currentPage >= totalPages">›</button>
|
||||
<button
|
||||
class="pagination-btn"
|
||||
:disabled="currentPage >= totalPages"
|
||||
@click="nextPage"
|
||||
>
|
||||
›
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user