检查项目维护检查方法、部位前端表格数据映射ok

This commit is contained in:
qk123
2025-12-01 13:42:15 +08:00
parent 8beff2ee14
commit 2e341a123e

View File

@@ -205,13 +205,13 @@
</div> </div>
<div class="search-bar"> <div class="search-bar">
<div class="search-item"> <div class="search-item">
<label>检查方法</label> <label>检查类型</label>
<el-select v-model="searchParams.checkMethod" placeholder="选择检查方" style="width: 150px"> <el-select v-model="searchParams.checkMethod" placeholder="选择检查方类型" style="width: 150px">
<el-option <el-option
v-for="method in checkMethods" v-for="type in checkTypes"
:key="method.code" :key="type"
:label="method.name" :label="type"
:value="method.code" :value="type"
> >
</el-option> </el-option>
</el-select> </el-select>
@@ -221,7 +221,7 @@
<el-input placeholder="名称/编码" v-model="searchParams.name" /> <el-input placeholder="名称/编码" v-model="searchParams.name" />
</div> </div>
<div class="search-item"> <div class="search-item">
<label>使用套餐</label> <label>用套餐</label>
<el-select v-model="searchParams.packageId" placeholder="选择使用套餐" style="width: 150px"> <el-select v-model="searchParams.packageId" placeholder="选择使用套餐" style="width: 150px">
<el-option <el-option
v-for="pkg in checkPackages" v-for="pkg in checkPackages"
@@ -245,11 +245,11 @@
<thead> <thead>
<tr> <tr>
<th style="width: 50px;"></th> <th style="width: 50px;"></th>
<th style="width: 100px;">*</th> <th style="width: 100px;"></th>
<th style="width: 150px;">*方法名称</th> <th style="width: 150px;">名称</th>
<th style="width: 150px;">关联检查类型</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: 100px;">序号</th> <th style="width: 100px;">序号</th>
<th style="width: 150px;">备注</th> <th style="width: 150px;">备注</th>
<th style="width: 120px;">操作</th> <th style="width: 120px;">操作</th>
@@ -281,60 +281,35 @@
</td> </td>
<td> <td>
<template v-if="item.editing"> <template v-if="item.editing">
<select v-model="item.type" :class="{ 'placeholder-text': !item.type }"> <input type="text" placeholder="请输入检查类型" v-model="item.checkType">
<option value="">选择关联检查类型</option>
<option
v-for="type in checkTypes"
:key="type"
:value="type"
>
{{ type }}
</option>
</select>
</template> </template>
<template v-else> <template v-else>
<span v-if="item.type">{{ item.type }}</span> {{ item.checkType || '' }}
<span v-else class="placeholder-text">选择关联检查类型</span> </template>
</td>
<td>
<template v-if="item.editing">
<input type="text" placeholder="请输入套餐名称" v-model="item.packageName">
</template>
<template v-else>
{{ item.packageName || '' }}
</template> </template>
</td> </td>
<td> <td>
<template v-if="item.editing"> <template v-if="item.editing">
<select v-model="item.department" :class="{ 'placeholder-text': !item.department }"> <input type="text" v-model="item.exposureNum">
<option value="">选择执行科室</option>
<option
v-if="item.department"
:value="item.department"
>
{{ item.department }}
</option>
<option
v-for="dept in departments"
:key="dept.dictValue"
:value="dept.dictLabel"
>
{{ dept.dictLabel }}
</option>
</select>
</template> </template>
<template v-else> <template v-else>
<span v-if="item.department">{{ item.department }}</span> {{ item.exposureNum || 0}}
<span v-else class="placeholder-text">选择执行科室</span>
</template> </template>
</td> </td>
<td> <td>
<template v-if="item.editing"> <template v-if="item.editing">
<input type="number" min="0" step="0.01" placeholder="请输入收费金额" v-model="item.amount"> <input type="text" v-model="item.orderNum">
</template> </template>
<template v-else> <template v-else>
{{ item.amount || '0.00' }} {{ item.orderNum || '0' }}
</template>
</td>
<td>
<template v-if="item.editing">
<input type="text" v-model="item.number">
</template>
<template v-else>
{{ item.number || '999999' }}
</template> </template>
</td> </td>
<td> <td>
@@ -370,13 +345,13 @@
</div> </div>
<div class="search-bar"> <div class="search-bar">
<div class="search-item"> <div class="search-item">
<label>检查方法</label> <label>检查类型</label>
<el-select v-model="searchParams.checkMethod" placeholder="选择检查方法" style="width: 150px"> <el-select v-model="searchParams.checkType" placeholder="选择检查类型" style="width: 150px">
<el-option <el-option
v-for="method in checkMethods" v-for="type in checkTypes"
:key="method.code" :key="type"
:label="method.name" :label="type"
:value="method.code" :value="type"
> >
</el-option> </el-option>
</el-select> </el-select>
@@ -387,7 +362,7 @@
</div> </div>
<div class="search-item"> <div class="search-item">
<label>费用套餐</label> <label>费用套餐</label>
<el-input placeholder="名称" v-model="searchParams.name" /> <el-input placeholder="费用套餐" v-model="searchParams.packageName" />
</div> </div>
<div class="search-actions"> <div class="search-actions">
@@ -404,10 +379,14 @@
<tr> <tr>
<th style="width: 50px;"></th> <th style="width: 50px;"></th>
<th style="width: 100px;">*编码</th> <th style="width: 100px;">*编码</th>
<th style="width: 150px;">*部位名称</th> <th style="width: 150px;">*名称</th>
<th style="width: 120px;">优先级</th> <th style="width: 120px;">检查类型</th>
<th style="width: 100px;">是否可见</th> <th style="width: 100px;">曝光次数</th>
<th style="width: 100px;">序号</th> <th style="width: 120px;">费用套餐</th>
<th style="width: 100px;">金额</th>
<th style="width: 80px;">序号</th>
<th style="width: 120px;">服务范围</th>
<th style="width: 120px;">下级医技类型</th>
<th style="width: 150px;">备注</th> <th style="width: 150px;">备注</th>
<th style="width: 120px;">操作</th> <th style="width: 120px;">操作</th>
</tr> </tr>
@@ -430,7 +409,7 @@
</td> </td>
<td> <td>
<template v-if="item.editing"> <template v-if="item.editing">
<input type="text" placeholder="请输入部位名称" v-model="item.name"> <input type="text" placeholder="请输入名称" v-model="item.name">
</template> </template>
<template v-else> <template v-else>
{{ item.name }} {{ item.name }}
@@ -438,31 +417,60 @@
</td> </td>
<td> <td>
<template v-if="item.editing"> <template v-if="item.editing">
<input type="number" min="1" placeholder="请输入优先级" v-model="item.priority"> <input type="text" placeholder="请输入检查类型" v-model="item.checkType">
</template> </template>
<template v-else> <template v-else>
{{ item.priority || '1' }} {{ item.checkType || '' }}
</template> </template>
</td> </td>
<td> <td>
<template v-if="item.editing"> <template v-if="item.editing">
<select v-model="item.visible"> <input type="number" min="0" placeholder="请输入曝光次数" v-model="item.exposureNum">
<option value="1"></option>
<option value="0"></option>
</select>
</template> </template>
<template v-else> <template v-else>
{{ item.visible === '1' ? '' : '' }} {{ item.exposureNum || '0' }}
</template> </template>
</td> </td>
<td> <td>
<template v-if="item.editing"> <template v-if="item.editing">
<input type="text" v-model="item.number"> <input type="text" placeholder="请输入费用套餐" v-model="item.packageName">
</template>
<template v-else>
{{ item.packageName || '' }}
</template>
</td>
<td>
<template v-if="item.editing">
<input type="number" step="0.01" min="0" placeholder="请输入金额" v-model="item.price">
</template>
<template v-else>
{{ item.price || '0.00' }}
</template>
</td>
<td>
<template v-if="item.editing">
<input type="number" min="0" placeholder="请输入序号" v-model="item.number">
</template> </template>
<template v-else> <template v-else>
{{ item.number || '999999' }} {{ item.number || '999999' }}
</template> </template>
</td> </td>
<td>
<template v-if="item.editing">
<input type="text" placeholder="请输入服务范围" v-model="item.serviceScope">
</template>
<template v-else>
{{ item.serviceScope || '' }}
</template>
</td>
<td>
<template v-if="item.editing">
<input type="text" placeholder="请输入下级医技类型" v-model="item.subType">
</template>
<template v-else>
{{ item.subType || '' }}
</template>
</td>
<td> <td>
<template v-if="item.editing"> <template v-if="item.editing">
<input type="text" placeholder="请输入备注" v-model="item.remark"> <input type="text" placeholder="请输入备注" v-model="item.remark">
@@ -528,6 +536,8 @@ const searchParams = reactive({
checkMethod: '', checkMethod: '',
name: '', name: '',
packageId: '', packageId: '',
packageName: '',
checkType: '',
checkPartCode: '', checkPartCode: '',
checkPartName: '', checkPartName: '',
visible: '' visible: ''
@@ -686,10 +696,10 @@ async function loadMenuData(menu) {
row: (index + 1).toString(), row: (index + 1).toString(),
code: item.code, code: item.code,
name: item.name, name: item.name,
type: item.type || '', checkType: item.checkType || '',
department: item.department || '', packageName: item.packageName || '',
amount: item.amount || '0.00', exposureNum: item.exposureNum || 0,
number: item.number || '999999', orderNum: item.orderNum || 0,
remark: item.remark || '', remark: item.remark || '',
actions: true actions: true
}); });
@@ -701,7 +711,9 @@ async function loadMenuData(menu) {
// 构建检查部位的搜索参数 // 构建检查部位的搜索参数
const partSearchParams = { const partSearchParams = {
code: searchParams.checkPartCode, code: searchParams.checkPartCode,
name: searchParams.checkPartName, name: searchParams.name,
checkType: searchParams.checkType,
packageName: searchParams.packageName,
visible: searchParams.visible visible: searchParams.visible
}; };
const partResponse = await listCheckPart(partSearchParams); const partResponse = await listCheckPart(partSearchParams);
@@ -712,9 +724,13 @@ async function loadMenuData(menu) {
row: (index + 1).toString(), row: (index + 1).toString(),
code: item.code, code: item.code,
name: item.name, name: item.name,
priority: item.priority || '1', checkType: item.checkType || '',
visible: item.visible !== undefined ? String(item.visible) : '1', exposureNum: item.exposureNum || 0,
packageName: item.packageName || '',
price: item.price || 0,
number: item.number || '999999', number: item.number || '999999',
serviceScope: item.serviceScope || '',
subType: item.subType || '',
remark: item.remark || '', remark: item.remark || '',
actions: true actions: true
}); });
@@ -832,9 +848,13 @@ function handleAddNewRow() {
row: String(maxRowNum + 1), row: String(maxRowNum + 1),
code: '', code: '',
name: '', name: '',
priority: '1', checkType: '',
visible: '1', exposureNum: 0,
packageName: '',
price: 0,
number: '999999', number: '999999',
serviceScope: '',
subType: '',
remark: '', remark: '',
editing: true, // 新行默认进入编辑状态 editing: true, // 新行默认进入编辑状态
isNew: true, // 标记为新增行 isNew: true, // 标记为新增行
@@ -901,6 +921,8 @@ function handleReset() {
searchParams.checkMethod = ''; searchParams.checkMethod = '';
searchParams.name = ''; searchParams.name = '';
searchParams.packageId = ''; searchParams.packageId = '';
searchParams.packageName = '';
searchParams.checkType = '';
searchParams.checkPartCode = ''; searchParams.checkPartCode = '';
searchParams.checkPartName = ''; searchParams.checkPartName = '';
searchParams.visible = ''; searchParams.visible = '';