<template>
|
<div class="seedetails-dialog">
|
<div class="examine-jic">
|
<div class="jic-value">
|
<!-- 查询表单 -->
|
<el-form
|
:model="patientqueryParams"
|
ref="patientQueryForm"
|
size="small"
|
:inline="true"
|
class="detail-query-form"
|
>
|
<el-form-item label="患者:" prop="name">
|
<el-input
|
v-model="patientqueryParams.name"
|
placeholder="请输入患者姓名"
|
clearable
|
@keyup.enter.native="handleSearch"
|
style="width: 180px"
|
/>
|
</el-form-item>
|
|
<el-form-item label="患者诊断:" prop="leavediagname">
|
<el-input
|
v-model="patientqueryParams.leavediagname"
|
placeholder="请输入患者诊断"
|
clearable
|
@keyup.enter.native="handleSearch"
|
style="width: 200px"
|
/>
|
</el-form-item>
|
|
<el-form-item>
|
<el-button
|
type="primary"
|
icon="el-icon-search"
|
@click="handleSearch"
|
:loading="loading"
|
>
|
搜索
|
</el-button>
|
<el-button icon="el-icon-refresh" @click="handleReset">
|
重置
|
</el-button>
|
</el-form-item>
|
</el-form>
|
|
<!-- 患者列表表格 -->
|
<el-table
|
v-loading="loading"
|
:data="logsheetlist"
|
style="width: 100%"
|
:border="true"
|
class="patient-table"
|
>
|
<el-table-column
|
prop="sendname"
|
label="姓名"
|
align="center"
|
width="100"
|
/>
|
|
<el-table-column
|
prop="taskName"
|
label="任务名称"
|
align="center"
|
width="200"
|
show-overflow-tooltip
|
/>
|
|
<el-table-column
|
prop="sendstate"
|
label="任务状态"
|
align="center"
|
width="120"
|
>
|
<template slot-scope="{ row }">
|
<div v-if="row.sendstate == 1">
|
<el-tag type="primary" size="small">表单已领取</el-tag>
|
</div>
|
<div v-if="row.sendstate == 2">
|
<el-tag type="primary" size="small">待随访</el-tag>
|
</div>
|
<div v-if="row.sendstate == 3">
|
<el-tag type="success" size="small">表单已发送</el-tag>
|
</div>
|
<div v-if="row.sendstate == 4">
|
<el-tag type="info" size="small">不执行</el-tag>
|
</div>
|
<div v-if="row.sendstate == 5">
|
<el-tag type="danger" size="small">发送失败</el-tag>
|
</div>
|
<div v-if="row.sendstate == 6">
|
<el-tag type="success" size="small">已完成</el-tag>
|
</div>
|
</template>
|
</el-table-column>
|
|
<el-table-column
|
prop="visitTime"
|
label="应随访时间"
|
align="center"
|
width="180"
|
show-overflow-tooltip
|
/>
|
|
<el-table-column
|
prop="finishtime"
|
label="随访完成时间"
|
align="center"
|
width="180"
|
show-overflow-tooltip
|
>
|
<template slot-scope="{ row }">
|
<span v-if="row.finishtime">{{ row.finishtime }}</span>
|
<span v-else style="color: #f56c6c">未完成</span>
|
</template>
|
</el-table-column>
|
|
<el-table-column
|
label="出院日期"
|
width="120"
|
align="center"
|
key="endtime"
|
prop="endtime"
|
>
|
<template slot-scope="{ row }">
|
<span v-if="row.endtime">{{ formatTime(row.endtime) }}</span>
|
<span v-else>-</span>
|
</template>
|
</el-table-column>
|
|
<el-table-column
|
label="责任护士"
|
width="120"
|
align="center"
|
key="nurseName"
|
prop="nurseName"
|
/>
|
|
<el-table-column
|
label="主治医生"
|
width="120"
|
align="center"
|
key="drname"
|
prop="drname"
|
/>
|
|
<el-table-column
|
label="结果状态"
|
align="center"
|
key="excep"
|
prop="excep"
|
width="120"
|
>
|
<template slot-scope="{ row }">
|
<dict-tag
|
:options="dict.type.sys_yujing"
|
:value="row.excep"
|
size="small"
|
/>
|
</template>
|
</el-table-column>
|
|
<el-table-column
|
label="处理意见"
|
align="center"
|
key="suggest"
|
prop="suggest"
|
width="120"
|
>
|
<template slot-scope="{ row }">
|
<dict-tag
|
:options="dict.type.sys_suggest"
|
:value="row.suggest"
|
size="small"
|
/>
|
</template>
|
</el-table-column>
|
|
<el-table-column
|
prop="templatename"
|
label="服务模板"
|
width="150"
|
align="center"
|
show-overflow-tooltip
|
/>
|
|
<el-table-column
|
prop="remark"
|
label="服务记录"
|
width="150"
|
align="center"
|
show-overflow-tooltip
|
/>
|
|
<el-table-column
|
prop="bankcardno"
|
label="呼叫状态"
|
width="120"
|
align="center"
|
/>
|
|
<el-table-column
|
label="操作"
|
fixed="right"
|
align="center"
|
width="100"
|
>
|
<template slot-scope="{ row }">
|
<el-button
|
type="text"
|
size="small"
|
@click="handleViewDetail(row)"
|
>
|
<i class="el-icon-view"></i> 查看
|
</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<!-- 分页 -->
|
<div class="pagination" v-if="patienttotal > 0">
|
<el-pagination
|
background
|
layout="total, sizes, prev, pager, next, jumper"
|
:current-page="patientqueryParams.pn"
|
:page-size="patientqueryParams.ps"
|
:page-sizes="[10, 20, 30]"
|
:total="patienttotal"
|
@size-change="handleSizeChange"
|
@current-change="handlePageChange"
|
/>
|
</div>
|
</div>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import { selectTimelyRate } from "@/api/system/user";
|
|
export default {
|
name: 'SeedetailsDialog',
|
dicts: ['sys_yujing', 'sys_suggest'],
|
props: {
|
rowData: {
|
type: Object,
|
default: () => ({})
|
},
|
queryParams: {
|
type: Object,
|
default: () => ({})
|
}
|
},
|
data() {
|
return {
|
// 查询参数
|
patientqueryParams: {
|
pn: 1,
|
ps: 10,
|
name: '',
|
leavediagname: ''
|
},
|
|
// 加载状态
|
loading: false,
|
|
// 患者列表
|
logsheetlist: [],
|
|
// 总条数
|
patienttotal: 0
|
};
|
},
|
|
mounted() {
|
this.loadData();
|
},
|
|
methods: {
|
// 加载数据
|
async loadData() {
|
this.loading = true;
|
try {
|
const params = {
|
...this.patientqueryParams,
|
deptcode: this.rowData.deptcode || '',
|
starttime: this.queryParams.dateRange?.[0] ? this.parseTime(this.queryParams.dateRange[0]) : '',
|
endtime: this.queryParams.dateRange?.[1] ? this.parseTime(this.queryParams.dateRange[1]) : ''
|
};
|
|
const response = await selectTimelyRate(params);
|
this.logsheetlist = response.data?.detail || [];
|
this.patienttotal = response.data?.total || 0;
|
} catch (error) {
|
console.error('获取未及时随访详情失败:', error);
|
this.$message.error('获取数据失败');
|
} finally {
|
this.loading = false;
|
}
|
},
|
|
// 处理搜索
|
handleSearch() {
|
this.patientqueryParams.pn = 1;
|
this.loadData();
|
},
|
|
// 处理重置
|
handleReset() {
|
this.patientqueryParams = {
|
pn: 1,
|
ps: 10,
|
name: '',
|
leavediagname: ''
|
};
|
this.loadData();
|
},
|
|
// 处理分页大小变化
|
handleSizeChange(size) {
|
this.patientqueryParams.ps = size;
|
this.patientqueryParams.pn = 1;
|
this.loadData();
|
},
|
|
// 处理页码变化
|
handlePageChange(page) {
|
this.patientqueryParams.pn = page;
|
this.loadData();
|
},
|
|
// 格式化时间
|
formatTime(time) {
|
if (!time) return '-';
|
return time;
|
},
|
|
// 解析时间
|
parseTime(time) {
|
if (!time) return '';
|
return time;
|
},
|
|
// 查看详情
|
handleViewDetail(row) {
|
this.$emit('close');
|
|
let type = "";
|
if (row.preachformson && row.preachformson.includes("3")) {
|
type = 1;
|
}
|
|
setTimeout(() => {
|
this.$router.push({
|
path: "/followvisit/record/detailpage/",
|
query: {
|
taskid: row.taskid,
|
patid: row.patid,
|
id: row.id,
|
Voicetype: type
|
}
|
});
|
}, 300);
|
}
|
}
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
.seedetails-dialog {
|
.detail-query-form {
|
margin-bottom: 20px;
|
padding-bottom: 20px;
|
border-bottom: 1px solid #f0f0f0;
|
|
::v-deep .el-form-item {
|
margin-bottom: 0;
|
margin-right: 20px;
|
}
|
}
|
|
.patient-table {
|
margin-bottom: 20px;
|
|
::v-deep .el-table__header-wrapper th {
|
background-color: #f8f9fa;
|
font-weight: 600;
|
color: #333;
|
}
|
}
|
|
.pagination {
|
display: flex;
|
justify-content: flex-end;
|
padding-top: 20px;
|
border-top: 1px solid #f0f0f0;
|
}
|
}
|
</style>
|