diff --git a/src/api/cases/index.js b/src/api/cases/index.js
index a6366b4..1c84cfc 100644
--- a/src/api/cases/index.js
+++ b/src/api/cases/index.js
@@ -67,4 +67,12 @@ export function postReportEdit(data) {
method: 'post',
data: data
})
-}
\ No newline at end of file
+}
+// 修改预约时间
+export function postReportTimeSectionEdit(data) {
+ return request({
+ url: '/report/time_section/edit',
+ method: 'post',
+ data: data
+ })
+}
diff --git a/src/views/cases/index.vue b/src/views/cases/index.vue
index 206b9c1..df1f3f3 100644
--- a/src/views/cases/index.vue
+++ b/src/views/cases/index.vue
@@ -48,23 +48,19 @@
-
+
@@ -80,37 +76,32 @@
-
+
@@ -219,6 +210,7 @@
:data="caseList"
border
height="calc(100vh - 300px)"
+ @row-dblclick="handleView"
>
{{ scope.row.patient_age }}
- {{ getAgeUnit(scope.row.patient_age_type) }}
+ {{
+ patientAgeTypeList.find(
+ (i) => i.value == scope.row.patient_age_type
+ ).label || "-"
+ }}
- {{ scope.row.date_time }} {{ scope.row.time_section }}
+
+ {{ scope.row.date_time }} {{ scope.row.time_section }}
+
+
- {{ scope.row.positions.map((r) => r.level2.name).join("|") }}
+ {{ scope.row.positions.map((item) => item.level2.name).join("|") }}
- {{ scope.row.exam_rooms.map((r) => r.name).join(", ") || "-" }}
+ {{ scope.row.exam_rooms.map((item) => item.name).join(", ") || "-" }}
-
-
-
- 查看
-
-
- 编辑
-
-
-
+ />
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
+ v-for="item in expertIdsList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ >
+ {{ item.name }}
+
+ {{ item.username }}
+
+
-
+
-
-
+
+
-
- {{ item.label }}
-
- {{ item.category }}
-
-
+
+
+
-
+
-
+
@@ -688,9 +657,9 @@
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择预约日期"
- @change="handleDateChange"
style="width: 100%"
clearable
+ :disabled="isEditMode"
/>
@@ -705,10 +674,10 @@
>
@@ -728,10 +697,12 @@ import {
postReportExamRoomList,
postReportTemplateTree,
postReportEquipmentList,
+ postReportTimeSections,
postReportCreate,
postReportInfo,
- postReportEdit,
+ postReportTimeSectionEdit,
} from "@/api/cases/index.js";
+import { searchUsers } from "@/api/contacts/index.js";
export default {
name: "Case",
data() {
@@ -760,6 +731,7 @@ export default {
{ label: "男", value: 1 },
{ label: "女", value: 2 },
],
+ // 年龄单位
patientAgeTypeList: [
{ label: "岁", value: 0 },
{ label: "月", value: 1 },
@@ -775,10 +747,16 @@ export default {
{ label: "急诊", value: 1 },
{ label: "住院", value: 2 },
],
+ // 专家
+ expertIdsList: [],
// 检查设备
- equipmentList: [],
+ equipmentsList: [],
+ // 检查部位
+ templatesList: [],
// 检查诊室
- examRoomList: [],
+ examRoomsList: [],
+ // 预约时间
+ timeSectionList: [],
// 病例类型
reportTypeList: [
{ label: "本院报告", value: 1 },
@@ -787,11 +765,10 @@ export default {
],
// 检查结果
negativeList: [
- // { label: "全部", value: -1 },
+ { label: "全部", value: -1 },
{ label: "阳性", value: 0 },
{ label: "阴性", value: 1 },
],
-
statusList: [
{ label: "新建", value: 1 },
{ label: "暂存", value: 5 },
@@ -799,34 +776,9 @@ export default {
{ label: "驳回", value: 15 },
{ label: "已完成", value: 20 },
],
-
- templateTree: [],
- doctorList: [
- { label: "专家1", value: "1" },
- { label: "专家2", value: "2" },
- ],
-
- body_textList: [
- { label: "肝脏", value: "1", category: "腹部" },
- { label: "胆囊", value: "2", category: "腹部" },
- { label: "胰腺", value: "3", category: "腹部" },
- { label: "肾脏", value: "4", category: "腹部" },
- { label: "脾脏", value: "5", category: "腹部" },
- { label: "腹部血管", value: "6", category: "腹部" },
- { label: "子宫", value: "7", category: "子宫" },
- { label: "颈部血管", value: "8", category: "外周血管" },
- { label: "上肢血管", value: "9", category: "外周血管" },
- { label: "下肢血管", value: "10", category: "外周血管" },
- { label: "产科", value: "11", category: "产科" },
- { label: "甲状腺", value: "12", category: "甲状腺" },
- { label: "乳腺", value: "13", category: "乳腺" },
- { label: "睾丸", value: "14", category: "睾丸" },
- { label: "泌尿", value: "15", category: "泌尿" },
- { label: "心脏", value: "16", category: "心脏" },
- { label: "其它", value: "17", category: "其它" },
- { label: "眼科", value: "18", category: "眼科" },
- ],
- availableTimeSlots: [],
+ // 查询参数
+ timeType: "date_time",
+ date: [],
datePickerOptions: {
shortcuts: [
{
@@ -894,39 +846,105 @@ export default {
},
],
},
- // 查询参数
- timeType: "date_time",
- date: [],
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_id: "",
+ exam_room: "",
body_text: "",
- equipment_ids: [],
+ equipment: "",
reporter_name: "",
reviewer_name: "",
- report_type: 0,
+ report_type: 1,
patient_name: "",
patient_id: "",
negative: -1,
- create_time_start: "",
- create_time_end: "",
- review_time_start: "",
- review_time_end: "",
- date_time_start: "",
- date_time_end: "",
},
// 表单参数
- form: {},
+ 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: {
- patientName: [
+ patient_name: [
{ required: true, message: "患者姓名不能为空", trigger: "blur" },
+ {
+ min: 2,
+ max: 50,
+ message: "患者姓名长度必须在2到50个字符之间",
+ trigger: "blur",
+ },
],
- patientRecordNumber: [
+ 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" },
],
},
};
@@ -938,20 +956,24 @@ export default {
methods: {
// 初始化数据字典
initDataDictionaries() {
+ this.loadExpertIdsList();
this.loadExamRooms();
this.loadEquipments();
this.loadTemplateTree();
},
- // 检查诊室列表
- loadExamRooms() {
- postReportExamRoomList({})
+ // 加载专家列表
+ loadExpertIdsList() {
+ searchUsers({
+ role_id: 1,
+ size: 99999,
+ })
.then((response) => {
if (response.code === 200 && response.data) {
- this.examRoomList = response.data;
+ this.expertIdsList = response.data.list;
}
})
.catch((error) => {
- console.error("加载检查诊室列表失败:", error);
+ console.error("加载专家列表失败:", error);
});
},
// 加载检查设备列表
@@ -959,132 +981,49 @@ export default {
postReportEquipmentList({})
.then((response) => {
if (response.code === 200 && response.data) {
- this.equipmentList = response.data;
+ this.equipmentsList = response.data;
}
})
.catch((error) => {
console.error("加载检查设备列表失败:", error);
});
},
- // 查询列表
- getList() {
- this.loading = true;
- postReportList(this.queryParams)
- .then((response) => {
- (this.caseList = [
- {
- id: 61141,
- patient_id: "病区号",
- patient_name: "患者姓名",
- patient_sex: 1,
- patient_age: 3,
- patient_age_type: 0,
- patient_number: "",
- number: "HJ2026052817270301",
- outpatient_number: "门诊号",
- request_doctor: "申请医师",
- hospitalization_number: "住院号",
- area_number: "病区号",
- bed_number: "床位号",
- patient_type: 0,
- patient_phone: "",
- comment: "",
- position_text: "自定义部位",
- print: 0,
- negative: 1,
- status: 1,
- status_comment: "",
- reporter_id: 688,
- reviewer_id: 0,
- review_time: "",
- create_time: "2026-05-28 17:27:03",
- date_time: "2026-05-28",
- time_section: "08:00-08:10",
- reporter_name: "会诊专家测试01",
- reviewer_name: "",
- positions: [
- {
- level1: {
- template_id: 1,
- name: "腹部",
- },
- level2: {
- template_id: 2,
- name: "肝脏",
- },
- },
- ],
- exam_rooms: [
- {
- id: 6,
- name: "我的诊室",
- },
- ],
- },
- ]),
- (this.queryParams.total = response.data.total);
- console.log("病例库", response.data);
- this.loading = false;
- })
- .catch(() => {
- this.caseList = [];
- this.queryParams.total = 0;
- this.loading = false;
- });
- },
- // 获取年龄单位
- getAgeUnit(type) {
- const unit = this.patientAgeTypeList.find((i) => i.value == type);
- return unit ? unit.label : "";
- },
-
- // 加载检查部位模板树
+ // 加载检查部位
loadTemplateTree() {
postReportTemplateTree({})
.then((response) => {
if (response.code === 200 && response.data) {
- this.templateTree = response.data;
- this.buildBodyTextList(response.data);
+ this.templatesList = response.data;
}
})
.catch((error) => {
console.error("加载检查部位模板树失败:", error);
});
},
- // 构建检查部位列表
- buildBodyTextList(treeData) {
- const flatList = [];
- const flatten = (items, parentName = "") => {
- items.forEach((item) => {
- if (item.children && item.children.length > 0) {
- flatten(item.children, item.name);
- } else {
- flatList.push({
- label: item.name,
- value: item.id.toString(),
- category: parentName || item.level1?.name || "",
- level1: item.level1,
- level2: item.level2,
- });
+ // 检查诊室列表
+ loadExamRooms() {
+ postReportExamRoomList({})
+ .then((response) => {
+ if (response.code === 200 && response.data) {
+ this.examRoomsList = response.data;
}
+ })
+ .catch((error) => {
+ console.error("加载检查诊室列表失败:", error);
});
- };
- flatten(treeData);
- this.body_textList = flatList;
- },
- cancel() {
- this.open = false;
},
- // 表单重置
- reset() {
- this.form = {};
- this.resetForm("form");
+ // 选择检查室后,根据日期和检查室获取可用时间槽
+ handleExamRoomsChange(exam_rooms_id) {
+ this.form.time_section = "";
+ if (this.form.date_time) this.fetchTimeSlots(exam_rooms_id[0]);
+ else this.timeSectionList = [];
},
- // 搜索按钮操作
- handleQuery() {
- this.queryParams.page = 1;
- this.buildTimeRangeParams();
- this.getList();
+ async fetchTimeSlots(exam_rooms_id) {
+ postReportTimeSections({ exam_room_id: exam_rooms_id }).then(
+ (response) => {
+ this.timeSectionList = response.data || [];
+ }
+ );
},
// 构建时间范围参数
buildTimeRangeParams() {
@@ -1101,6 +1040,12 @@ export default {
this.queryParams[`${this.timeType}_end`] = this.date[1];
}
},
+ // 搜索按钮操作
+ handleQuery() {
+ this.queryParams.page = 1;
+ this.buildTimeRangeParams();
+ this.getList();
+ },
// 重置按钮操作
resetQuery() {
this.resetForm("queryForm");
@@ -1111,137 +1056,76 @@ export default {
// 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 = {
- gender: this.patientSexList[0].value,
- patient_type: this.patientTypeList[0].value,
- ageUnit: this.patientAgeTypeList[0].value,
+ 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;
},
- // 修改按钮操作
- handleUpdate(row) {
+ // 修改预约时间按钮操作
+ handleTimeSectionUpdate(row) {
this.reset();
- // postReportInfo({ report_id: row.id }).then((response) => {
- this.form = {
- id: 61141,
- patient_id: "病区号",
- patient_name: "患者姓名",
- patient_sex: 1,
- patient_age: 3,
- patient_age_type: 0,
- patient_number: "",
- number: "HJ2026052817270301",
- outpatient_number: "门诊号",
- request_doctor: "申请医师",
- hospitalization_number: "住院号",
- area_number: "病区号",
- bed_number: "床位号",
- patient_type: 0,
- patient_phone: "",
- comment: "",
- position_text: "自定义部位",
- extend_json: "",
- consultation_id: 0,
- off_consultation_id: 0,
- print: 0,
- negative: 1,
- status: 1,
- status_comment: "",
- group_id: 23,
- hospital_id: 23,
- p_code: "37",
- c_code: "3702",
- a_code: "370202",
- reporter_id: 688,
- reviewer_id: 0,
- del_flag: 0,
- review_time: "",
- date_time: "2026-05-28",
- time_section: "08:00-08:10",
- pstkey: null,
- hmac: "",
- create_time: "2026-05-28 17:27:03",
- update_time: "2026-05-28 17:27:03",
- positions: [
- {
- level1: {
- template_id: 1,
- name: "腹部",
- },
- level2: {
- template_id: 2,
- name: "肝脏",
- },
- },
- ],
- equipments: [
- {
- id: 25,
- name: "测试B超检测设备",
- },
- ],
- exam_rooms: [
- {
- id: 6,
- name: "我的诊室",
- },
- ],
- text_comment: "",
- text_conclusion: "",
- attachment: [],
- reporter_name: "会诊专家测试01",
- reporter_signature: "",
- reporter_sign_hash: "",
- reviewer_name: "",
- reviewer_signature: "",
- reviewer_sign_hash: "",
- experts: [
- {
- expert_id: 10,
- expert_name: "测试01",
- user_comment: "",
- confirm: 0,
- signature: "",
- sign_hash: "",
- comment_time: "2026-05-28 17:27:03",
- },
- ],
- };
- this.open = true;
- this.title = "修改病例";
- this.isEditMode = true;
- // });
+ 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) {
- const formData = this.buildCaseFormData();
if (this.form.id != undefined) {
// 修改病例
- postReportEdit(formData)
+ 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.$modal.msgSuccess("预约时间修改成功");
this.open = false;
this.getList();
} else {
- this.$modal.msgError(response.msg || "修改失败");
+ this.$modal.msgError(response.msg || "预约时间修改成功失败");
}
})
.catch(() => {
- this.$modal.msgError("修改失败");
+ this.$modal.msgError("预约时间修改成功失败");
});
} else {
// 新增病例
- postReportCreate(formData)
+ postReportCreate(this.form)
.then((response) => {
if (response.code === 200) {
this.$modal.msgSuccess("新增成功");
@@ -1262,101 +1146,10 @@ export default {
}
});
},
- // 构建病例表单数据
- buildCaseFormData() {
- const form = { ...this.form };
- // 转换字段名以匹配API要求
- if (form.patientName !== undefined) form.patient_name = form.patientName;
- if (form.gender !== undefined) form.patient_sex = parseInt(form.gender);
- if (form.age !== undefined) form.patient_age = parseInt(form.age);
- if (form.ageUnit !== undefined)
- form.patient_age_type = parseInt(form.ageUnit);
- if (form.patientRecordNumber !== undefined)
- form.patient_id = form.patientRecordNumber;
- if (form.checkType !== undefined)
- form.patient_type = parseInt(form.checkType);
- if (form.outpatient_number !== undefined)
- form.outpatient_number = form.outpatient_number;
- if (form.inpatientNumber !== undefined)
- form.hospitalization_number = form.inpatientNumber;
- if (form.wardNumber !== undefined) form.area_number = form.wardNumber;
- if (form.bedNumber !== undefined) form.bed_number = form.bedNumber;
- if (form.applyDoctor !== undefined)
- form.request_doctor = form.applyDoctor;
- if (form.checkRoom !== undefined)
- form.exam_room_id = parseInt(form.checkRoom);
- if (form.customPart !== undefined) form.position_text = form.customPart;
- if (form.date_time !== undefined) form.date_time = form.date_time;
- if (form.time_section !== undefined)
- form.time_section = form.time_section;
- return form;
- },
- // 选择检查室后,根据日期和检查室获取可用时间槽
- handleexam_roomChange(roomId) {
- this.form.time_section = "";
- if (roomId && this.form.date_time)
- this.fetchTimeSlots(roomId, this.form.date_time);
- else this.availableTimeSlots = [];
- },
- handleDateChange(date) {
- this.form.time_section = "";
- if (this.form.exam_room && date)
- this.fetchTimeSlots(this.form.exam_room, date);
- else this.availableTimeSlots = [];
- },
- async fetchTimeSlots(roomId) {
- const mockData = {
- 1: [
- { label: "13:30-14:00", value: "13:30-14:00" },
- { label: "14:00-14:30", value: "14:00-14:30" },
- { label: "14:30-15:00", value: "14:30-15:00" },
- { label: "15:00-15:30", value: "15:00-15:30" },
- ],
- 2: [
- { label: "09:00-09:30", value: "09:00-09:30" },
- { label: "09:30-10:00", value: "09:30-10:00" },
- { label: "10:00-10:30", value: "10:00-10:30" },
- { label: "10:30-11:00", value: "10:30-11:00" },
- ],
- };
- this.availableTimeSlots = mockData[roomId] || [];
- },
- getTimeSlots(roomId) {
- const mockData = {
- 1: [
- { label: "13:30-14:00", value: "13:30-14:00" },
- { label: "14:00-14:30", value: "14:00-14:30" },
- { label: "14:30-15:00", value: "14:30-15:00" },
- { label: "15:00-15:30", value: "15:00-15:30" },
- ],
- 2: [
- { label: "09:00-09:30", value: "09:00-09:30" },
- { label: "09:30-10:00", value: "09:30-10:00" },
- { label: "10:00-10:30", value: "10:00-10:30" },
- { label: "10:30-11:00", value: "10:30-11:00" },
- ],
- };
- return mockData[roomId] || [];
- },
- // 选择预约时间后,更新预约时间
- handletime_sectionChange(row) {
- const updateData = {
- id: row.id,
- date_time: row.date_time,
- time_section: row.time_section,
- };
- updateCase(updateData)
- .then((response) => {
- if (response.code === 200) {
- this.$modal.msgSuccess("预约时间修改成功");
- this.getList();
- } else {
- this.$modal.msgError(response.msg || "修改失败");
- }
- })
- .catch(() => {
- this.$modal.msgError("修改失败");
- });
+ // 表单重置
+ reset() {
+ this.form = {};
+ this.resetForm("form");
},
// 查看按钮操作
handleView(row) {