|
|
@ -1,110 +1,47 @@ |
|
|
|
<template> |
|
|
|
<div class="app-container"> |
|
|
|
<el-row :gutter="10" class="mb8"> |
|
|
|
<right-toolbar |
|
|
|
:showSearch.sync="showSearch" |
|
|
|
@queryTable="getList" |
|
|
|
></right-toolbar> |
|
|
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
|
|
|
</el-row> |
|
|
|
<el-tabs v-model="queryParams.param.status" @tab-click="handleClick"> |
|
|
|
<el-tab-pane label="待随访" name="0"></el-tab-pane> |
|
|
|
<el-tab-pane label="已随访" name="1"></el-tab-pane> |
|
|
|
<el-tab-pane label="失访" name="2"></el-tab-pane> |
|
|
|
</el-tabs> |
|
|
|
<el-table |
|
|
|
v-loading="loading" |
|
|
|
:data="listDat" |
|
|
|
@selection-change="handleSelectionChange" |
|
|
|
> |
|
|
|
<el-table v-loading="loading" :data="listDat" @selection-change="handleSelectionChange"> |
|
|
|
<el-table-column type="selection" width="55" align="center" /> |
|
|
|
<el-table-column |
|
|
|
label="工单id" |
|
|
|
fixed |
|
|
|
show-overflow-tooltip |
|
|
|
align="center" |
|
|
|
prop="id" |
|
|
|
width="200" |
|
|
|
/> |
|
|
|
<el-table-column |
|
|
|
fixed |
|
|
|
label="随访队列" |
|
|
|
show-overflow-tooltip |
|
|
|
align="center" |
|
|
|
prop="" |
|
|
|
width="100" |
|
|
|
/> |
|
|
|
<el-table-column |
|
|
|
fixed |
|
|
|
label="患者姓名" |
|
|
|
align="center" |
|
|
|
prop="name" |
|
|
|
width="100" |
|
|
|
/> |
|
|
|
<el-table-column |
|
|
|
label="性别" |
|
|
|
align="center" |
|
|
|
prop="gender" |
|
|
|
show-overflow-tooltip |
|
|
|
width="100" |
|
|
|
> |
|
|
|
<el-table-column label="工单id" fixed show-overflow-tooltip align="center" prop="id" width="200" /> |
|
|
|
<el-table-column fixed label="随访队列" show-overflow-tooltip align="center" prop="queueName" width="150" /> |
|
|
|
<el-table-column fixed label="患者姓名" align="center" prop="name" width="100" /> |
|
|
|
<el-table-column label="性别" align="center" prop="gender" show-overflow-tooltip width="60"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="scope.row.gender == 0">男</span> |
|
|
|
<span v-if="scope.row.gender == 1">女</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column |
|
|
|
label="年龄" |
|
|
|
align="center" |
|
|
|
prop="age" |
|
|
|
show-overflow-tooltip |
|
|
|
width="150" |
|
|
|
/> |
|
|
|
<el-table-column |
|
|
|
label="证件号码" |
|
|
|
align="center" |
|
|
|
prop="idCard" |
|
|
|
show-overflow-tooltip |
|
|
|
width="180" |
|
|
|
/> |
|
|
|
<el-table-column |
|
|
|
label="手机号码" |
|
|
|
align="center" |
|
|
|
prop="phone" |
|
|
|
show-overflow-tooltip |
|
|
|
width="150" |
|
|
|
/> |
|
|
|
<el-table-column |
|
|
|
label="随访序号" |
|
|
|
align="center" |
|
|
|
prop="phone" |
|
|
|
show-overflow-tooltip |
|
|
|
width="150" |
|
|
|
/> |
|
|
|
<el-table-column |
|
|
|
label="开始时间" |
|
|
|
align="center" |
|
|
|
prop="startTime" |
|
|
|
show-overflow-tooltip |
|
|
|
width="150" |
|
|
|
/> |
|
|
|
<el-table-column |
|
|
|
label="结束时间" |
|
|
|
align="center" |
|
|
|
prop="endTime" |
|
|
|
show-overflow-tooltip |
|
|
|
width="150" |
|
|
|
/> |
|
|
|
<el-table-column label="年龄" align="center" prop="age" show-overflow-tooltip width="60" /> |
|
|
|
<el-table-column label="证件号码" align="center" prop="idCard" show-overflow-tooltip width="180" /> |
|
|
|
<el-table-column label="手机号码" align="center" prop="phone" show-overflow-tooltip width="150" /> |
|
|
|
<el-table-column label="随访序号" align="center" prop="phone" show-overflow-tooltip width="150" /> |
|
|
|
<el-table-column label="开始时间" align="center" prop="startTime" show-overflow-tooltip width="150"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span>{{ |
|
|
|
parseTime(scope.row.startTime, "{y}-{m}-{d} {h}:{i}") |
|
|
|
}}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="结束时间" align="center" prop="endTime" show-overflow-tooltip width="150"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span>{{ |
|
|
|
parseTime(scope.row.endTime, "{y}-{m}-{d} {h}:{i}") |
|
|
|
}}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<!--待随访: 随访状态(待随访/即将超期/超期) --> |
|
|
|
<!--已随访: 随访状态(已随访/超随访期) --> |
|
|
|
<!--待随访: 随访状态(待随访) --> |
|
|
|
<el-table-column |
|
|
|
label="随访状态" |
|
|
|
align="center" |
|
|
|
prop="phone" |
|
|
|
show-overflow-tooltip |
|
|
|
width="150" |
|
|
|
> |
|
|
|
<el-table-column label="随访状态" align="center" prop="phone" show-overflow-tooltip width="150"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ status[scope.row.status] }} |
|
|
|
</template> |
|
|
@ -116,78 +53,37 @@ |
|
|
|
show-overflow-tooltip |
|
|
|
width="150" |
|
|
|
/> --> |
|
|
|
<el-table-column |
|
|
|
label="失访原因" |
|
|
|
align="center" |
|
|
|
prop="reason" |
|
|
|
show-overflow-tooltip |
|
|
|
width="150" |
|
|
|
/> |
|
|
|
<el-table-column label="失访原因" align="center" prop="reason" show-overflow-tooltip width="150" /> |
|
|
|
|
|
|
|
<el-table-column fixed="right" label="操作" align="center" width="150"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<!-- :disabled="scope.row.status !== '0'" --> |
|
|
|
<el-button |
|
|
|
:disabled="scope.row.status !== '0'" |
|
|
|
size="mini" |
|
|
|
type="text" |
|
|
|
icon="el-icon-s-check" |
|
|
|
@click="handleFollow(scope.row)" |
|
|
|
> |
|
|
|
<el-button :disabled="scope.row.status !== '0'" size="mini" type="text" icon="el-icon-s-check" |
|
|
|
@click="handleFollow(scope.row)"> |
|
|
|
随访 |
|
|
|
</el-button> |
|
|
|
<el-button |
|
|
|
:disabled="scope.row.status !== '0'" |
|
|
|
size="mini" |
|
|
|
type="text" |
|
|
|
icon="el-icon-s-release" |
|
|
|
@click="handleLossFollow(scope.row)" |
|
|
|
> |
|
|
|
<el-button :disabled="scope.row.status !== '0'" size="mini" type="text" icon="el-icon-s-release" |
|
|
|
@click="handleLossFollow(scope.row)"> |
|
|
|
失访 |
|
|
|
</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
|
|
|
|
<pagination |
|
|
|
v-show="total > 0" |
|
|
|
:total="total" |
|
|
|
:page.sync="queryParams.pageNum" |
|
|
|
:limit.sync="queryParams.pageSize" |
|
|
|
@pagination="getList" |
|
|
|
/> |
|
|
|
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" |
|
|
|
:limit.sync="queryParams.pageSize" @pagination="getList" /> |
|
|
|
|
|
|
|
<!-- 失访 --> |
|
|
|
<el-dialog |
|
|
|
class="popup" |
|
|
|
title="失访" |
|
|
|
:visible.sync="open" |
|
|
|
width="780px" |
|
|
|
append-to-body |
|
|
|
> |
|
|
|
<el-form |
|
|
|
class="formStep" |
|
|
|
ref="form" |
|
|
|
:model="form" |
|
|
|
:rules="rules" |
|
|
|
label-width="90px" |
|
|
|
> |
|
|
|
<el-dialog class="popup" title="失访" :visible.sync="open" width="780px" append-to-body> |
|
|
|
<el-form class="formStep" ref="form" :model="form" :rules="rules" label-width="90px"> |
|
|
|
<el-form-item label="随访次数" prop="times"> |
|
|
|
<el-input v-model="form.times" placeholder="请输入" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="失访原因" prop="reason"> |
|
|
|
<el-select v-model="form.reason" placeholder="请选择"> |
|
|
|
<el-option-group |
|
|
|
v-for="group in options" |
|
|
|
:key="group.label" |
|
|
|
:label="group.label" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in group.options" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
> |
|
|
|
<el-option-group v-for="group in options" :key="group.label" :label="group.label"> |
|
|
|
<el-option v-for="item in group.options" :key="item.value" :label="item.label" |
|
|
|
:value="item.value"> |
|
|
|
</el-option> |
|
|
|
</el-option-group> |
|
|
|
</el-select> |
|
|
@ -199,31 +95,14 @@ |
|
|
|
</div> |
|
|
|
</el-dialog> |
|
|
|
<!-- 随访 --> |
|
|
|
<el-dialog |
|
|
|
class="popup" |
|
|
|
title="随访" |
|
|
|
:visible.sync="open1" |
|
|
|
width="780px" |
|
|
|
append-to-body |
|
|
|
> |
|
|
|
<el-form |
|
|
|
class="formStep" |
|
|
|
ref="form1" |
|
|
|
:model="form" |
|
|
|
:rules="rules" |
|
|
|
label-width="90px" |
|
|
|
> |
|
|
|
<el-dialog class="popup" title="随访" :visible.sync="open1" width="780px" append-to-body> |
|
|
|
<el-form class="formStep" ref="form1" :model="form" :rules="rules" label-width="90px"> |
|
|
|
<el-form-item label="随访人" prop="followuper"> |
|
|
|
<el-input v-model="form.followuper" placeholder="请输入" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="随访时间" prop="followupTime"> |
|
|
|
<el-date-picker |
|
|
|
format="yyyy-MM-dd HH:mm:ss" |
|
|
|
value-format="yyyy-MM-dd HH:mm:ss" |
|
|
|
v-model="form.followupTime" |
|
|
|
type="datetime" |
|
|
|
placeholder="选择日期" |
|
|
|
> |
|
|
|
<el-date-picker format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" |
|
|
|
v-model="form.followupTime" type="datetime" placeholder="选择日期"> |
|
|
|
</el-date-picker> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="随访次数" prop="times"> |
|
|
@ -242,16 +121,18 @@ |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import { queryTask, updStatus, followPatient } from "@/api/followupFile"; |
|
|
|
export default { |
|
|
|
import { |
|
|
|
queryTask, |
|
|
|
updStatus, |
|
|
|
followPatient |
|
|
|
} from "@/api/followupFile"; |
|
|
|
export default { |
|
|
|
name: "Notice", |
|
|
|
data() { |
|
|
|
return { |
|
|
|
options: [ |
|
|
|
{ |
|
|
|
options: [{ |
|
|
|
label: "患者原因", |
|
|
|
options: [ |
|
|
|
{ |
|
|
|
options: [{ |
|
|
|
value: "患者病情加重或死亡,无法参与随访", |
|
|
|
}, |
|
|
|
{ |
|
|
@ -270,8 +151,7 @@ export default { |
|
|
|
}, |
|
|
|
{ |
|
|
|
label: "医疗机构原因", |
|
|
|
options: [ |
|
|
|
{ |
|
|
|
options: [{ |
|
|
|
value: "随访管理不足,未及时安排随访", |
|
|
|
}, |
|
|
|
{ |
|
|
@ -287,8 +167,7 @@ export default { |
|
|
|
}, |
|
|
|
{ |
|
|
|
label: "不可抗力", |
|
|
|
options: [ |
|
|
|
{ |
|
|
|
options: [{ |
|
|
|
value: "社会动荡或自然灾害", |
|
|
|
}, |
|
|
|
{ |
|
|
@ -359,22 +238,32 @@ export default { |
|
|
|
form: {}, |
|
|
|
// 表单校验 |
|
|
|
rules: { |
|
|
|
followuper: [ |
|
|
|
{ required: true, message: "随访人不能为空", trigger: "blur" }, |
|
|
|
], |
|
|
|
followupTime: [ |
|
|
|
{ required: true, message: "随访时间不能为空", trigger: "change" }, |
|
|
|
], |
|
|
|
followupText: [ |
|
|
|
{ required: true, message: "随访内容不能为空", trigger: "blur" }, |
|
|
|
], |
|
|
|
times: [ |
|
|
|
{ required: true, message: "随访次数不能为空", trigger: "blur" }, |
|
|
|
], |
|
|
|
followuper: [{ |
|
|
|
required: true, |
|
|
|
message: "随访人不能为空", |
|
|
|
trigger: "blur" |
|
|
|
}, ], |
|
|
|
followupTime: [{ |
|
|
|
required: true, |
|
|
|
message: "随访时间不能为空", |
|
|
|
trigger: "change" |
|
|
|
}, ], |
|
|
|
followupText: [{ |
|
|
|
required: true, |
|
|
|
message: "随访内容不能为空", |
|
|
|
trigger: "blur" |
|
|
|
}, ], |
|
|
|
times: [{ |
|
|
|
required: true, |
|
|
|
message: "随访次数不能为空", |
|
|
|
trigger: "blur" |
|
|
|
}, ], |
|
|
|
|
|
|
|
reason: [ |
|
|
|
{ required: true, message: "失访原因不能为空", trigger: "change" }, |
|
|
|
], |
|
|
|
reason: [{ |
|
|
|
required: true, |
|
|
|
message: "失访原因不能为空", |
|
|
|
trigger: "change" |
|
|
|
}, ], |
|
|
|
}, |
|
|
|
}; |
|
|
|
}, |
|
|
@ -443,7 +332,7 @@ export default { |
|
|
|
this.form.status = 2; |
|
|
|
}, |
|
|
|
/** 提交按钮 */ |
|
|
|
submitForm: function () { |
|
|
|
submitForm: function() { |
|
|
|
this.$refs["form"].validate((valid) => { |
|
|
|
if (valid) { |
|
|
|
if (this.form.id != undefined) { |
|
|
@ -463,7 +352,7 @@ export default { |
|
|
|
}); |
|
|
|
}, |
|
|
|
/** 失访 */ |
|
|
|
submitForm: function () { |
|
|
|
submitForm: function() { |
|
|
|
this.$refs["form"].validate((valid) => { |
|
|
|
if (valid) { |
|
|
|
updStatus(this.form).then((response) => { |
|
|
@ -475,7 +364,7 @@ export default { |
|
|
|
}); |
|
|
|
}, |
|
|
|
/** 随访 */ |
|
|
|
submitForm1: function () { |
|
|
|
submitForm1: function() { |
|
|
|
this.$refs["form1"].validate((valid) => { |
|
|
|
if (valid) { |
|
|
|
followPatient(this.form).then((response) => { |
|
|
@ -491,8 +380,10 @@ export default { |
|
|
|
const idList = row.id ? [row.id] : this.ids; |
|
|
|
this.$modal |
|
|
|
.confirm("是否确认删除当前选择的数据?") |
|
|
|
.then(function () { |
|
|
|
return patientDel({ idList: idList }); |
|
|
|
.then(function() { |
|
|
|
return patientDel({ |
|
|
|
idList: idList |
|
|
|
}); |
|
|
|
}) |
|
|
|
.then(() => { |
|
|
|
this.getList(); |
|
|
@ -503,8 +394,7 @@ export default { |
|
|
|
/** 导出按钮操作 */ |
|
|
|
handleExport() { |
|
|
|
this.download( |
|
|
|
"system/user/export", |
|
|
|
{ |
|
|
|
"system/user/export", { |
|
|
|
...this.queryParams.params, |
|
|
|
}, |
|
|
|
`患者档案.xlsx` |
|
|
@ -516,20 +406,22 @@ export default { |
|
|
|
this.upload.open = true; |
|
|
|
}, |
|
|
|
}, |
|
|
|
}; |
|
|
|
}; |
|
|
|
</script> |
|
|
|
<style scoped src="@/assets/styles/common.css"></style> |
|
|
|
<style scoped> |
|
|
|
.form-item-age { |
|
|
|
.form-item-age { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
} |
|
|
|
.form-item-age span { |
|
|
|
} |
|
|
|
|
|
|
|
.form-item-age span { |
|
|
|
margin: 0 10px; |
|
|
|
} |
|
|
|
.form-item-age >>> .el-input { |
|
|
|
} |
|
|
|
|
|
|
|
.form-item-age>>>.el-input { |
|
|
|
width: 100px; |
|
|
|
} |
|
|
|
} |
|
|
|
</style> |
|
|
|
<!-- >>> .el-input__inner { |
|
|
|
padding: 0 15px !important; |
|
|
|