视讯-会诊记录-接口联调

main
ysn 4 days ago
parent 0dd4edec04
commit fc085d1222
  1. 16
      src/api/videoCommunication.js
  2. 297
      src/views/videoCommunication/index.vue

@ -1,10 +1,18 @@
import request from '@/utils/request'
// 视讯-会议列表
export function listConsultation(query) {
export function getConsultationList(data) {
return request({
url: '/v1/consultation/list',
method: 'get',
params: query
url: '/consultation/list',
method: 'post',
data
})
}
// 视讯-会议详情
export function getConsultationMeetingInfo(data) {
return request({
url: '/consultation/meeting_info',
method: 'post',
data
})
}

@ -45,26 +45,27 @@
<div class="table-wrapper">
<el-table
v-loading="loading"
:data="recordList"
:data="list"
:show-header="false"
stripe
height="calc(100vh - 550px)"
>
<el-table-column label="头像" prop="avatar" align="center" width="50">
<el-table-column label="视迅头像" prop="avatar" align="center" width="50">
<template slot-scope="scope">
<el-avatar :src="scope.row.avatar" />
</template>
</el-table-column>
<el-table-column label="会议名称" prop="name" align="center" />
<el-table-column label="类型" prop="type" align="center" />
<el-table-column label="时间" prop="time" align="center" />
<el-table-column label="视迅名称" prop="name" align="center" />
<el-table-column label="视迅类型" prop="meet_type_name" align="center" />
<el-table-column label="加入会诊时间" prop="create_time" align="center" />
<!-- 状态status 1-开始 0-结束 -->
<el-table-column label="操作" align="center" width="50">
<template slot-scope="scope">
<el-button
type="text"
icon="el-icon-more"
class="more-btn"
@click="showDetail(scope.row)"
@click="handleDetail(scope.row)"
/>
</template>
</el-table-column>
@ -74,50 +75,82 @@
<pagination
v-show="queryParams.total > 0"
:total="queryParams.total"
:page.sync="queryParams.pageNum"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-card>
<!-- 会诊详情弹框 -->
<el-dialog
title="会诊详情"
:visible.sync="showDetailDialog"
width="400px"
:title="meetingDetail.name"
:visible.sync="meetingDetailVisible"
width="35%"
:close-on-click-modal="false"
>
<el-form :model="selectedRecord" label-width="110px">
<el-form-item label="会议状态">
{{ selectedRecord.status || "已结束" }}
<el-form-item>
{{ getStatusText(meetingDetail.status) }}
</el-form-item>
<el-divider />
<el-form-item label="会议时间">
{{ selectedRecord.time || "" }}
{{ meetingDetail.create_time || "" }}
</el-form-item>
<el-form-item label="会议持续时间">
{{ selectedRecord.duration || "0分钟0秒" }}
{{ formatDuration(meetingDetail.duration) }}
</el-form-item>
<el-form-item label="病例数记录">
<el-form-item label="总病例数">
{{ selectedRecord.totalCases || "2" }}
{{ meetingDetail.total_patients }}
</el-form-item>
<el-form-item label="阳性病例数">
{{ selectedRecord.positiveCases || "0" }}
</el-form-item>
<el-form-item label="阴性病例数">
{{ selectedRecord.negativeCases || "0" }}
{{ meetingDetail.positive_patients }}
</el-form-item>
<el-form-item label="上级转诊病例数">
{{ selectedRecord.referralCases || "4" }}
{{ meetingDetail.transfer_patients }}
</el-form-item>
</el-form-item>
<el-divider />
<el-form-item label="会议发起人">
{{ selectedRecord.sponsor || "" }}
<el-row>
<el-col :span="3">
<el-form-item>
<el-avatar
:src="meetingDetail.user_list && meetingDetail.user_list[0] ? meetingDetail.user_list[0].avatar : ''"
size="48"
class="person-avatar"
/>
</el-form-item>
</el-col>
<el-col :span="21">
<el-form-item>
{{ meetingDetail.user_name || "" }}
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-divider />
<el-form-item label="参会人员">
{{ selectedRecord.participants || "" }}
<el-form-item label="参会人员" label-position="top">
<el-row v-for="(item, index) in meetingDetail.user_list" :key="index">
<el-col :span="3">
<el-form-item>
<el-avatar
:src="item.avatar"
size="48"
class="person-avatar"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
{{ item.name || "" }}
</el-form-item>
</el-col>
<el-col :span="15">
<el-form-item label="入会时间">
{{ item.join_time || "" }}
</el-form-item>
</el-col>
</el-row>
</el-form-item>
</el-form>
</el-dialog>
@ -125,113 +158,10 @@
</template>
<script>
// import { listMeeting, getMeeting, joinMeeting } from "@/api/videoCommunication";
//
const mockRecordList = [
{
id: 1,
name: "超声事业部的云诊室",
type: "会诊",
time: "2026-05-07 09:09:23",
avatar:
"https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",
iconType: "blue",
duration: "0分钟0秒",
totalCases: "2",
positiveCases: "0",
negativeCases: "0",
referralCases: "4",
status: "已结束",
sponsor: "张三",
participants: "李四、王五",
},
{
id: 2,
name: "超声事业部的云诊室",
type: "会诊",
time: "2026-05-06 13:40:51",
avatar:
"https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",
iconType: "blue",
duration: "0分钟0秒",
totalCases: "2",
positiveCases: "0",
negativeCases: "0",
referralCases: "4",
status: "已结束",
sponsor: "张三",
participants: "李四、王五",
},
{
id: 3,
name: "超声事业部的云教学",
type: "教学",
time: "2026-05-06 13:40:38",
avatar:
"https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",
iconType: "orange",
duration: "0分钟0秒",
totalCases: "2",
positiveCases: "0",
negativeCases: "0",
referralCases: "4",
status: "已结束",
sponsor: "张三",
participants: "李四、王五",
},
{
id: 4,
name: "超声事业部的云诊室",
type: "会诊",
time: "2026-04-29 13:16:48",
avatar:
"https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",
iconType: "blue",
duration: "0分钟0秒",
totalCases: "2",
positiveCases: "0",
negativeCases: "0",
referralCases: "4",
status: "已结束",
sponsor: "张三",
participants: "李四、王五",
},
{
id: 5,
name: "质控会议-6019100",
type: "质控",
time: "2026-04-20 18:14:20",
avatar:
"https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",
iconType: "blue",
duration: "0分钟0秒",
totalCases: "2",
positiveCases: "0",
negativeCases: "0",
referralCases: "4",
status: "已结束",
sponsor: "张三",
participants: "李四、王五",
},
{
id: 6,
name: "超声事业部的云诊室",
type: "会诊",
time: "2026-04-20 18:14:09",
avatar:
"https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",
iconType: "blue",
duration: "0分钟0秒",
totalCases: "2",
positiveCases: "0",
negativeCases: "0",
referralCases: "4",
status: "已结束",
sponsor: "张三",
participants: "李四、王五",
},
];
import {
getConsultationList,
getConsultationMeetingInfo,
} from "@/api/videoCommunication";
export default {
name: "VideoPage",
@ -240,9 +170,9 @@ export default {
meetingCode: "",
loading: false,
queryParams: {
pageNum: 1,
page: 1,
pageSize: 10,
total: 125, // 125
total: 0,
},
meetingModes: [
{
@ -274,20 +204,32 @@ export default {
routePath: "/videoCommunication/caseStudy",
},
],
recordList: [],
showDetailDialog: false,
selectedRecord: {},
list: [],
meetingDetailVisible: false,
meetingDetail: {},
};
},
computed: {
totalPage() {
return Math.ceil(this.queryParams.total / this.queryParams.pageSize);
},
},
mounted() {
this.getList();
},
methods: {
//
getStatusText(status) {
const statusMap = {
0: "已结束",
1: "进行中",
2: "空闲",
};
return statusMap[status] || "已结束";
},
//
formatDuration(seconds) {
if (!seconds) return '-'
const h = Math.floor(seconds / 3600)
const m = Math.floor((seconds % 3600) / 60)
const s = seconds % 60
return `${h}${m}${s}`
},
//
joinMeeting() {
if (!this.meetingCode.trim()) {
@ -321,68 +263,23 @@ export default {
this.$router.push({ name: mode.routeName });
},
//
async getList() {
//
getList() {
this.loading = true;
try {
//
// const response = await listMeeting(this.queryParams);
// this.recordList = response.rows;
// this.queryParams.total = response.total;
//
throw new Error("接口请求失败");
} catch (error) {
console.warn("接口请求失败,使用假数据:", error);
this.$message.warning("获取会议列表失败,已加载模拟数据");
// 使
this.recordList = [...mockRecordList];
this.queryParams.total = 125;
} finally {
getConsultationList(this.queryParams).then((res) => {
console.log("会诊记录列表", res);
this.list = res.data.list;
this.queryParams.total = Number(res.data.total);
this.loading = false;
}
},
//
goFirst() {
this.queryParams.pageNum = 1;
this.getList();
},
goPrev() {
if (this.queryParams.pageNum > 1) {
this.queryParams.pageNum--;
this.getList();
}
},
goNext() {
if (this.queryParams.pageNum < this.totalPage) {
this.queryParams.pageNum++;
this.getList();
}
});
},
goLast() {
this.queryParams.pageNum = this.totalPage;
this.getList();
},
//
async showDetail(record) {
this.loading = true;
try {
//
// const response = await getMeeting(record.id);
// this.selectedRecord = response.data;
// 使
throw new Error("获取详情失败");
} catch (error) {
console.warn("获取详情接口失败,使用当前记录数据:", error);
this.$message.warning("获取会议详情失败,已加载基础信息");
this.selectedRecord = { ...record };
} finally {
this.showDetailDialog = true;
this.loading = false;
}
//
handleDetail(row) {
getConsultationMeetingInfo(row).then((res) => {
console.log("会诊记录详情", res);
this.meetingDetail = res.data;
this.meetingDetailVisible = true;
});
},
},
};
@ -505,7 +402,7 @@ export default {
}
}
// ss
//
.more-btn {
color: #009696;
cursor: pointer;

Loading…
Cancel
Save