海信医疗-远程超声管理平台-信创国产化
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1184 lines
35 KiB

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" label-width="90px">
<el-row>
<el-col :span="6">
<el-form-item>
<el-radio-group v-model="timeType">
<el-radio label="create_time">创建时间</el-radio>
<el-radio label="review_time">审核时间</el-radio>
<el-radio label="date_time">预约时间</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="日期范围">
<el-date-picker
v-model="date"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="datePickerOptions"
style="width: 100%"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="检查类型"
prop="patient_type"
v-show="showSearch"
>
<el-select
v-model="queryParams.patient_type"
placeholder="请选择检查类型"
filterable
clearable
style="width: 100%"
>
<el-option
v-for="item in patientTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="检查诊室" prop="exam_room" v-show="showSearch">
<el-select
v-model="queryParams.exam_room"
placeholder="请选择检查诊室"
filterable
clearable
style="width: 100%"
>
<el-option
v-for="item in examRoomsList"
:key="item.name"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="检查部位" prop="body_text" v-show="showSearch">
<el-input
v-model="queryParams.body_text"
placeholder="请输入检查部位"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="检查设备" prop="equipment" v-show="showSearch">
<el-select
v-model="queryParams.equipment"
placeholder="请选择检查设备"
filterable
clearable
style="width: 100%"
>
<el-option
v-for="item in equipmentsList"
:key="item.value"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="诊断医师"
prop="reporter_name"
v-show="showSearch"
>
<el-input
v-model="queryParams.reporter_name"
placeholder="请输入诊断医师"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="审核医生"
prop="reviewer_name"
v-show="showSearch"
>
<el-input
v-model="queryParams.reviewer_name"
placeholder="请输入审核医生"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="病例类型" prop="report_type">
<el-select
v-model="queryParams.report_type"
placeholder="请选择病例类型"
filterable
clearable
style="width: 100%"
>
<el-option
v-for="item in reportTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item
label="患者姓名"
prop="patient_name"
v-show="showSearch"
>
<el-input
v-model="queryParams.patient_name"
placeholder="请输入患者姓名"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="病例号" prop="patient_id" v-show="showSearch">
<el-input
v-model="queryParams.patient_id"
placeholder="请输入病例号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="检查结果" prop="negative" v-show="showSearch">
<el-select
v-model="queryParams.negative"
placeholder="请选择检查结果"
filterable
clearable
style="width: 100%"
>
<el-option
v-for="item in negativeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
>
查询
</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" @click="handleAdd">
新增
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" />
</el-row>
<el-table
v-loading="loading"
:data="caseList"
border
height="calc(100vh - 300px)"
@row-dblclick="handleView"
>
<el-table-column
label="检查号"
prop="id"
width="80"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="患者姓名"
prop="patient_name"
width="100"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
{{
desensitize(
scope.row.patient_name,
1,
0,
scope.row.patient_name.length
)
}}
</template>
</el-table-column>
<el-table-column
label="病例号"
prop="patient_id"
width="110"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="性别"
width="70"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
{{
patientSexList.find((i) => i.value == scope.row.patient_sex)
.label || "-"
}}
</template>
</el-table-column>
<el-table-column
label="年龄"
width="80"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.patient_age }}
{{
patientAgeTypeList.find(
(i) => i.value == scope.row.patient_age_type
).label || "-"
}}
</template>
</el-table-column>
<el-table-column
label="预约时间"
width="200"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-button type="text" @click="handleTimeSectionUpdate(scope.row)">
{{ scope.row.date_time }} {{ scope.row.time_section }}
<i class="el-icon-edit el-icon--right"></i>
</el-button>
</template>
</el-table-column>
<el-table-column
label="检查部位"
width="120"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.positions.map((item) => item.level2.name).join("|") }}
</template>
</el-table-column>
<el-table-column
label="检查类型"
width="90"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
{{
patientTypeList.find((i) => i.value == scope.row.patient_type)
.label || "-"
}}
</template>
</el-table-column>
<el-table-column
label="检查结果"
width="90"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
{{
negativeList.find((i) => i.value == scope.row.negative).label || "-"
}}
</template>
</el-table-column>
<el-table-column
label="检查诊室"
width="120"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.exam_rooms.map((item) => item.name).join(", ") || "-" }}
</template>
</el-table-column>
<el-table-column
label="诊断医师"
prop="reporter_name"
width="100"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="审核医生"
prop="reviewer_name"
width="100"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="报告状态"
width="90"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ statusList.find((i) => i.value == scope.row.status).label || "-" }}
</template>
</el-table-column>
<el-table-column
label="打印次数"
prop="print"
width="80"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="创建时间"
prop="create_time"
width="160"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="审核时间"
prop="review_time"
width="160"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="门诊号"
prop="outpatient_number"
width="100"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="住院号"
prop="hospitalization_number"
width="100"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="病区号"
prop="area_number"
width="80"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="床位号"
prop="bed_number"
width="80"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="申请医师"
prop="request_doctor"
width="100"
align="center"
show-overflow-tooltip
/>
</el-table>
<pagination
v-show="queryParams.total > 0"
:total="queryParams.total"
:page.sync="queryParams.page"
:limit.sync="queryParams.size"
@pagination="getList"
/>
<!-- 添加对话框 -->
<el-dialog :title="title" :visible.sync="open" width="60%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="90px">
<el-row :gutter="20">
<el-col :span="6" v-if="!isEditMode">
<el-form-item label="患者姓名" prop="patient_name">
<el-input
v-model="form.patient_name"
placeholder="请输入患者姓名"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="6" v-if="!isEditMode">
<el-form-item label="性别" prop="patient_sex">
<el-select
v-model="form.patient_sex"
style="width: 100%"
placeholder="请选择性别"
filterable
clearable
>
<el-option
v-for="item in patientSexList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" v-if="!isEditMode">
<el-form-item label="年龄" prop="patient_age">
<el-input-number
v-model="form.patient_age"
placeholder="请输入年龄"
clearable
:min="0"
style="width: 100%"
/>
</el-form-item>
</el-col>
<el-col :span="4" v-if="!isEditMode">
<el-form-item label="" prop="patient_age_type" label-width="0">
<el-select
v-model="form.patient_age_type"
style="width: 100%"
placeholder="请选择年龄单位"
filterable
clearable
:disabled="isEditMode"
>
<el-option
v-for="item in patientAgeTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="病例号" prop="patient_id">
<el-input
v-model="form.patient_id"
placeholder="请输入病例号"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="检查类型" prop="patient_type">
<el-select
v-model="form.patient_type"
style="width: 100%"
placeholder="请选择检查类型"
filterable
clearable
>
<el-option
v-for="item in patientTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
v-show="item.value != -1"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="门诊号" prop="outpatient_number">
<el-input
v-model="form.outpatient_number"
placeholder="请输入门诊号"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="住院号" prop="hospitalization_number">
<el-input
v-model="form.hospitalization_number"
placeholder="请输入住院号"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="病区号" prop="area_number">
<el-input
v-model="form.area_number"
placeholder="请输入病区号"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="床位号" prop="bed_number">
<el-input
v-model="form.bed_number"
placeholder="请输入床位号"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="申请医师" prop="request_doctor">
<el-input
v-model="form.request_doctor"
placeholder="请输入申请医师"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="专家" prop="expert_ids">
<el-select
v-model="form.expert_ids"
multiple
style="width: 100%"
placeholder="请选择专家"
filterable
clearable
>
<el-option
v-for="item in expertIdsList"
:key="item.id"
:label="item.name"
:value="item.id"
>
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">
{{ item.username }}
</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="检查设备" prop="equipments">
<el-select
v-model="form.equipments"
multiple
style="width: 100%"
placeholder="请选择检查设备"
filterable
clearable
>
<el-option
v-for="item in equipmentsList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="检查部位" prop="templates">
<el-select
v-model="form.templates"
multiple
style="width: 100%"
placeholder="请选择检查部位"
filterable
clearable
>
<el-option-group
v-for="group in templatesList"
:key="group.id"
:label="group.name"
>
<el-option
v-for="item in group.child"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-option-group>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="检查诊室" prop="exam_rooms">
<el-select
v-model="form.exam_rooms"
style="width: 100%"
placeholder="请选择检查诊室"
@change="handleExamRoomsChange"
filterable
clearable
multiple
>
<el-option
v-for="item in examRoomsList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="!isEditMode">
<el-form-item label="自定义部位" prop="position_text">
<el-input
v-model="form.position_text"
placeholder="请输入自定义部位"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="预约日期" prop="date_time">
<el-date-picker
v-model="form.date_time"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择预约日期"
style="width: 100%"
clearable
:disabled="isEditMode"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="" prop="time_section">
<el-select
v-model="form.time_section"
placeholder="请选择预约时间"
style="width: 100%"
filterable
clearable
>
<el-option label="自动" value="auto" />
<el-option
v-for="item in timeSectionList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
postReportList,
postReportExamRoomList,
postReportTemplateTree,
postReportEquipmentList,
postReportTimeSections,
postReportCreate,
postReportInfo,
postReportTimeSectionEdit,
} from "@/api/cases/index.js";
import { searchUsers } from "@/api/contacts/index.js";
export default {
name: "Case",
data() {
// 获取今天日期
const today = new Date().toISOString().split("T")[0];
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 显示搜索条件
showSearch: false,
// 表格数据
caseList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 是否为编辑模式
isEditMode: false,
// 字典
// 性别
patientSexList: [
// { label: "所有", value: "-1" },
{ label: "未知", value: 0 },
{ label: "男", value: 1 },
{ label: "女", value: 2 },
],
// 年龄单位
patientAgeTypeList: [
{ label: "岁", value: 0 },
{ label: "月", value: 1 },
{ label: "日", value: 2 },
{ label: "时", value: 3 },
{ label: "分", value: 4 },
{ label: "秒", value: 5 },
],
// 检查类型
patientTypeList: [
{ label: "全部", value: -1 },
{ label: "门诊", value: 0 },
{ label: "急诊", value: 1 },
{ label: "住院", value: 2 },
],
// 专家
expertIdsList: [],
// 检查设备
equipmentsList: [],
// 检查部位
templatesList: [],
// 检查诊室
examRoomsList: [],
// 预约时间
timeSectionList: [],
// 病例类型
reportTypeList: [
{ label: "本院报告", value: 1 },
{ label: "我参与的会诊", value: 2 },
{ label: "我审核的", value: 3 },
],
// 检查结果
negativeList: [
{ label: "全部", value: -1 },
{ label: "阳性", value: 0 },
{ label: "阴性", value: 1 },
],
statusList: [
{ label: "新建", value: 1 },
{ label: "暂存", value: 5 },
{ label: "已提交", value: 10 },
{ label: "驳回", value: 15 },
{ label: "已完成", value: 20 },
],
// 查询参数
timeType: "date_time",
date: [],
datePickerOptions: {
shortcuts: [
{
text: "今天",
onClick: (picker) => {
const end = new Date();
const start = new Date();
picker.$emit("pick", [start, end]);
},
},
{
text: "昨天",
onClick: (picker) => {
const end = new Date();
end.setTime(end.getTime() - 3600 * 1000 * 24);
const start = new Date(end);
picker.$emit("pick", [start, end]);
},
},
{
text: "本周",
onClick: (picker) => {
const end = new Date();
const start = new Date();
const day = start.getDay();
start.setDate(start.getDate() - day + (day === 0 ? -6 : 1));
picker.$emit("pick", [start, end]);
},
},
{
text: "本月",
onClick: (picker) => {
const end = new Date();
const start = new Date(
new Date().getFullYear(),
new Date().getMonth(),
1
);
picker.$emit("pick", [start, end]);
},
},
{
text: "上月",
onClick: (picker) => {
const end = new Date(
new Date().getFullYear(),
new Date().getMonth(),
0
);
const start = new Date(
new Date().getFullYear(),
new Date().getMonth() - 1,
1
);
picker.$emit("pick", [start, end]);
},
},
{
text: "今年",
onClick: (picker) => {
const end = new Date();
const start = new Date(new Date().getFullYear(), 0, 1);
picker.$emit("pick", [start, end]);
},
},
],
},
queryParams: {
page: 1,
size: 10,
total: 0,
create_time_start: "",
create_time_end: "",
review_time_start: "",
review_time_end: "",
date_time_start: "",
date_time_end: "",
patient_type: -1,
exam_room: "",
body_text: "",
equipment: "",
reporter_name: "",
reviewer_name: "",
report_type: 1,
patient_name: "",
patient_id: "",
negative: -1,
},
// 表单参数
form: {
// 患者姓名*
patient_name: "",
// 性别*
patient_sex: "",
// 年龄*
patient_age: "",
// 年龄类型*
patient_age_type: "",
// 病例号*
patient_id: "",
// 检查类型*
patient_type: "",
// 门诊号
outpatient_number: "",
// 住院号
hospitalization_number: "",
// 病区号
area_number: "",
// 床位号
bed_number: "",
// 申请医生
request_doctor: "",
// 专家
expert_ids: [],
// 检查设备
equipments: [],
// 检查部位
templates: [],
// 检查诊室
exam_rooms: [],
// 自定义部位
position_text: "",
// 预约日期
date_time: "",
// 预约时间
time_section: "",
// 备注
comment: "",
// 患者电话
patient_phone: "",
// 会诊ID
consultation_id: 0,
// 离线会诊ID
off_consultation_id: 0,
},
// 表单校验
rules: {
patient_name: [
{ required: true, message: "患者姓名不能为空", trigger: "blur" },
{
min: 2,
max: 50,
message: "患者姓名长度必须在2到50个字符之间",
trigger: "blur",
},
],
patient_age: [
{ required: true, message: "年龄不能为空", trigger: "change" },
],
patient_age_type: [
{ required: true, message: "年龄类型不能为空", trigger: "change" },
],
patient_sex: [
{ required: true, message: "性别不能为空", trigger: "change" },
],
patient_id: [
{ required: true, message: "病例号不能为空", trigger: "blur" },
{
min: 0,
max: 50,
message: "病例号长度必须在0到50个字符之间",
trigger: "blur",
},
],
patient_type: [
{ required: true, message: "检查类型不能为空", trigger: "change" },
],
},
};
},
created() {
this.resetQuery();
this.initDataDictionaries();
},
methods: {
// 初始化数据字典
initDataDictionaries() {
this.loadExpertIdsList();
this.loadExamRooms();
this.loadEquipments();
this.loadTemplateTree();
},
// 加载专家列表
loadExpertIdsList() {
searchUsers({
role_id: 1,
size: 99999,
})
.then((response) => {
if (response.code === 200 && response.data) {
this.expertIdsList = response.data.list;
}
})
.catch((error) => {
console.error("加载专家列表失败:", error);
});
},
// 加载检查设备列表
loadEquipments() {
postReportEquipmentList({})
.then((response) => {
if (response.code === 200 && response.data) {
this.equipmentsList = response.data;
}
})
.catch((error) => {
console.error("加载检查设备列表失败:", error);
});
},
// 加载检查部位
loadTemplateTree() {
postReportTemplateTree({})
.then((response) => {
if (response.code === 200 && response.data) {
this.templatesList = response.data;
}
})
.catch((error) => {
console.error("加载检查部位模板树失败:", error);
});
},
// 检查诊室列表
loadExamRooms() {
postReportExamRoomList({})
.then((response) => {
if (response.code === 200 && response.data) {
this.examRoomsList = response.data;
}
})
.catch((error) => {
console.error("加载检查诊室列表失败:", error);
});
},
// 选择检查室后,根据日期和检查室获取可用时间槽
handleExamRoomsChange(exam_rooms_id) {
this.form.time_section = "";
if (this.form.date_time) this.fetchTimeSlots(exam_rooms_id[0]);
else this.timeSectionList = [];
},
async fetchTimeSlots(exam_rooms_id) {
postReportTimeSections({ exam_room_id: exam_rooms_id }).then(
(response) => {
this.timeSectionList = response.data || [];
}
);
},
// 构建时间范围参数
buildTimeRangeParams() {
if (this.date && Array.isArray(this.date) && this.date.length === 2) {
// 先清除之前的时间范围参数
const timeTypes = ["create_time", "review_time", "date_time"];
timeTypes.forEach((type) => {
delete this.queryParams[`${type}_start`];
s;
delete this.queryParams[`${type}_end`];
});
// 根据当前 timeType 设置对应的时间范围参数
this.queryParams[`${this.timeType}_start`] = this.date[0];
this.queryParams[`${this.timeType}_end`] = this.date[1];
}
},
// 搜索按钮操作
handleQuery() {
this.queryParams.page = 1;
this.buildTimeRangeParams();
this.getList();
},
// 重置按钮操作
resetQuery() {
this.resetForm("queryForm");
const today = new Date().toISOString().split("T")[0];
this.timeType = "date_time";
this.date = [today, today];
this.queryParams.patient_type = this.patientTypeList[0].value;
// this.queryParams.report_type = this.reportTypeList[0].value;
this.handleQuery();
},
// 查询列表
getList() {
this.loading = true;
postReportList(this.queryParams)
.then((response) => {
this.caseList = response.data?.list || [];
this.queryParams.total = response.data.total;
console.log("病例库", response.data);
this.loading = false;
})
.catch(() => {
this.caseList = [];
this.queryParams.total = 0;
this.loading = false;
});
},
cancel() {
this.open = false;
},
// 新增按钮操作
handleAdd() {
this.reset();
const today = new Date().toISOString().split("T")[0];
this.form = {
patient_sex: this.patientSexList[0].value,
patient_type: this.patientTypeList[1].value,
patient_age_type: this.patientAgeTypeList[0].value,
date_time: today,
};
this.open = true;
this.title = "新增病例";
this.isEditMode = false;
},
// 修改预约时间按钮操作
handleTimeSectionUpdate(row) {
this.reset();
postReportInfo({ report_id: row.id }).then((response) => {
this.fetchTimeSlots(response.data.exam_rooms[0].id);
this.form = response.data || {};
this.open = true;
this.title = "修改预约时间";
this.isEditMode = true;
});
},
// 提交按钮
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != undefined) {
// 修改病例
postReportTimeSectionEdit({
date_time: this.form.date_time,
report_id: this.form.id,
time_section: this.form.time_section,
})
.then((response) => {
if (response.code === 200) {
this.$modal.msgSuccess("预约时间修改成功");
this.open = false;
this.getList();
} else {
this.$modal.msgError(response.msg || "预约时间修改成功失败");
}
})
.catch(() => {
this.$modal.msgError("预约时间修改成功失败");
});
} else {
// 新增病例
postReportCreate(this.form)
.then((response) => {
if (response.code === 200) {
this.$modal.msgSuccess("新增成功");
this.open = false;
if (response.data && response.data.id) {
this.handleView(response.data);
} else {
this.getList();
}
} else {
this.$modal.msgError(response.msg || "新增失败");
}
})
.catch(() => {
this.$modal.msgError("新增失败");
});
}
}
});
},
// 表单重置
reset() {
this.form = {};
this.resetForm("form");
},
// 查看按钮操作
handleView(row) {
// 先获取病例详情
postReportInfo({ id: row.id })
.then((response) => {
if (response.code === 200 && response.data) {
this.$router.push({
name: "PatientDetail",
params: {
id: response.data.id,
patientName: response.data.patient_name,
},
});
} else {
this.$modal.msgError("获取病例详情失败");
}
})
.catch(() => {
// 如果接口失败,使用传入的 row 数据
this.$router.push({
name: "PatientDetail",
params: {
id: row.id,
patientName: row.patient_name || row.patientName,
},
});
});
},
},
};
</script>