修改校验和任务记录

This commit is contained in:
闫晓茹 2024-03-28 10:35:04 +08:00
parent d8ac6c12d7
commit 5eddbf30ea
8 changed files with 1226 additions and 130 deletions

View File

@ -0,0 +1,50 @@
import request from '@/utils/request'
// 查询患者管理任务执行记录列表
export function listTaskExecuteRecord(query) {
return request({
url: '/system/taskExecuteRecord/list',
method: 'get',
params: query
})
}
// 查询患者管理任务执行记录详细
export function getTaskExecuteRecord(id) {
return request({
url: '/system/taskExecuteRecord/' + id,
method: 'get'
})
}
// 新增患者管理任务执行记录
export function addTaskExecuteRecord(data) {
return request({
url: '/system/taskExecuteRecord',
method: 'post',
data: data
})
}
// 修改患者管理任务执行记录
export function updateTaskExecuteRecord(data) {
return request({
url: '/system/taskExecuteRecord',
method: 'put',
data: data
})
}
// 删除患者管理任务执行记录
export function delTaskExecuteRecord(id) {
return request({
url: '/system/taskExecuteRecord/' + id,
method: 'delete'
})
}
// 入院记录
export function selectVisitRecord(id) {
return request({
url: `/system/taskExecuteRecord/selectVisitRecord?id=${id}` ,
method: 'get'
})
}

View File

@ -231,6 +231,7 @@ export default {
},
/** 详情操作 */
handleAuthRole(row) {
this.$router.push({
path: "/patient/patientdetails",
query: {

View File

@ -8,14 +8,6 @@
v-show="showSearch"
label-width="68px"
>
<!-- <el-form-item label="所属患者" prop="patientId">
<el-input
v-model="queryParams.patientId"
placeholder="请输入患者"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item label="患者姓名" prop="patientName">
<el-input
v-model="queryParams.patientName"
@ -64,38 +56,6 @@
/>
</el-form-item>
<!-- <el-form-item label="设备绑定时间" prop="deviceBindTime">
<el-date-picker clearable
v-model="queryParams.deviceBindTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择设备绑定时间">
</el-date-picker>
</el-form-item>
<el-form-item label="设备解绑时间" prop="deviceUnbindTime">
<el-date-picker clearable
v-model="queryParams.deviceUnbindTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择设备解绑时间">
</el-date-picker>
</el-form-item>
<el-form-item label="设备IP地址" prop="deviceIp">
<el-input
v-model="queryParams.deviceIp"
placeholder="请输入设备IP地址"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备端口" prop="devicePort">
<el-input
v-model="queryParams.devicePort"
placeholder="请输入设备端口"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item>
<el-button
type="primary"
@ -169,8 +129,6 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="主键id" align="center" prop="id" /> -->
<!-- <el-table-column label="患者" align="center" prop="patientId" /> -->
<el-table-column label="患者姓名" align="center" prop="patientName" />
<el-table-column label="身份证号" align="center" prop="cardNo" />
<!-- :show-overflow-tooltip="true" -->
@ -195,17 +153,7 @@
<span>{{ parseTime(scope.row.deviceBindTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<!-- <el-table-column
label="设备解绑时间"
align="center"
prop="deviceUnbindTime"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.deviceUnbindTime, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column> -->
<el-table-column
label="设备IP地址"
align="center"
@ -286,7 +234,11 @@
>
</el-form-item>
<el-form-item label="身份证号" prop="cardNo">
<el-input v-model="form.cardNo" placeholder="请输入身份证号" maxlength="18" />
<el-input
v-model="form.cardNo"
placeholder="请输入身份证号"
maxlength="18"
/>
</el-form-item>
<el-form-item label="设备名称" prop="deviceName" maxlength="300">
<el-input v-model="form.deviceName" placeholder="请输入设备名称" />
@ -309,28 +261,7 @@
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="设备绑定时间" prop="deviceBindTime">
<el-date-picker
clearable
v-model="form.deviceBindTime"
type="date"
style="width: 208px"
value-format="yyyy-MM-dd"
placeholder="请选择设备绑定时间"
>
</el-date-picker>
</el-form-item> -->
<!-- <el-form-item label="设备解绑时间" prop="deviceUnbindTime">
<el-date-picker
clearable
style="width: 208px"
v-model="form.deviceUnbindTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择设备解绑时间"
>
</el-date-picker>
</el-form-item> -->
<el-form-item label="设备IP地址" prop="deviceIp">
<el-input v-model="form.deviceIp" placeholder="请输入设备IP地址" />
</el-form-item>
@ -455,22 +386,6 @@ import { getAgencytype } from "@/api/system/agency";
export default {
name: "Projectdevice",
data() {
//
var isCardId = (rule, value, callback) => {
console.log(value)
if (value==null) {
callback(new Error("身份证号不能为空!"));
} else {
const reg =
/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/;
const card = reg.test(value);
if (!card) {
callback(new Error("身份证号格式有误!"));
} else {
callback();
}
}
};
return {
options: [],
//
@ -498,6 +413,9 @@ export default {
pageSize: 10,
// patientId: null,
patientName: null,
cardNo: null,
deviceType: null,
deviceCode: null,
},
queryParams: {
pageNum: 1,
@ -525,7 +443,13 @@ export default {
{ required: true, message: "患者不能为空", trigger: "blur" },
],
cardNo: [
{ required: true, message: "", validator: isCardId, trigger: "blur" },
{
required: true,
message: "请输入正确的身份证号",
trigger: "blur",
pattern:
/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/,
},
],
deviceCode: [
{ required: true, message: "设备编码不能为空", trigger: "blur" },
@ -552,6 +476,11 @@ export default {
this.informationqueryParams = {
pageNum: 1,
pageSize: 10,
patientName: null,
patientName: null,
cardNo: null,
deviceType: null,
deviceCode: null,
};
this.informationInfoinfo();
},

View File

@ -94,7 +94,9 @@
<el-descriptions-item label="机构名称">{{
agencyList.agencyName
}}</el-descriptions-item>
<el-descriptions-item label="机构简介">{{ agencyList.agencyRemark }}</el-descriptions-item>
<el-descriptions-item label="机构简介">{{
agencyList.agencyRemark
}}</el-descriptions-item>
<el-descriptions-item label="机构状态">
{{ agencyList.agencyStatus == "ON" ? "启用" : "" }}
{{
@ -131,23 +133,25 @@
<el-descriptions-item label="卫生机构类别">{{
agencyList.agencyCategoryName
}}</el-descriptions-item>
<el-descriptions-item label="机构分类管理类别"> {{
agencyList.agencyCategoryManageLevel ==
"NON_PROFIT_MEDICAL_AGENCY"
? "非营利性医疗机构"
: ""
}}
{{
agencyList.agencyCategoryManageLevel ==
"FOR_PROFIT_MEDICAL_AGENCY"
? "营利性医疗机构"
: ""
}}
{{
agencyList.agencyCategoryManageLevel == "OTHER_HEALTH_AGENCY"
? "其他卫生机构"
: ""
}}</el-descriptions-item>
<el-descriptions-item label="机构分类管理类别">
{{
agencyList.agencyCategoryManageLevel ==
"NON_PROFIT_MEDICAL_AGENCY"
? "非营利性医疗机构"
: ""
}}
{{
agencyList.agencyCategoryManageLevel ==
"FOR_PROFIT_MEDICAL_AGENCY"
? "营利性医疗机构"
: ""
}}
{{
agencyList.agencyCategoryManageLevel == "OTHER_HEALTH_AGENCY"
? "其他卫生机构"
: ""
}}</el-descriptions-item
>
<el-descriptions-item label="行政区划"
>{{ agencyList.areaName }}
</el-descriptions-item>
@ -467,7 +471,7 @@
</el-form-item>
<el-form-item label="机构联系电话" prop="agencyPhone">
<el-input
maxlength="12"
maxlength="11"
v-model="form.agencyPhone"
placeholder="请输入机构联系电话"
/>
@ -719,6 +723,13 @@ export default {
areaCode: [
{ required: true, message: "行政区划不能为空", trigger: "blur" },
],
agencyPhone: [
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机码",
trigger: "blur",
},
],
},
treeOptionsagencyCategoryId: [],
treeOptions: [],
@ -1114,20 +1125,19 @@ export default {
</script>
<style lang="scss" scoped>
::v-deep.el-button--text {
border-color: transparent;
color: #1890ff;
background: transparent;
padding-left: 15px;
padding-right: 0;
border-color: transparent;
color: #1890ff;
background: transparent;
padding-left: 15px;
padding-right: 0;
}
::v-deep.el-descriptions-item__container {
display: -webkit-box;
padding: 15px !important;
display: -ms-flexbox;
display: flex;
display: -webkit-box;
padding: 15px !important;
display: -ms-flexbox;
display: flex;
}
.el-col-4 {
// width: 18%;
height: 600px;
@ -1170,6 +1180,6 @@ export default {
// align-items: center;
// justify-content: space-between;
// font-size: 14px;
padding-right: 28px;
padding-right: 28px;
}
</style>

View File

@ -724,6 +724,20 @@ export default {
departmentName: [
{ required: true, message: "科室名称不能为空", trigger: "blur" },
],
departmentPhone: [
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机码",
trigger: "blur",
},
],
departmentMail: [
{
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"]
}
],
},
};
},

View File

@ -0,0 +1,409 @@
<template>
<div class="header">
<div class="topheader">
<div class="user">
<img
class="headsculpture"
src="../../../assets/manage/touxiang.png"
alt=""
v-if="list.sex == 'MALE'"
/>
<img
class="headsculpture"
src="../../../assets/manage/nvtouxiang.png"
alt=""
v-if="list.sex == 'FEMALE'"
/>
<div class="name">
{{ list.patientName }}
</div>
<div class="gender">
{{ list.sex == "MALE" ? "男" : list.sex == "FEMALE" ? "女" : "" }}
</div>
<div class="age">
{{ list.age }}
</div>
<div class="source">
<div
class="item"
style="color: #00e06e; border-color: #00e06e"
v-if="list.patientSource == 'WE_CHAT_OFFICIAL_ACCOUNT'"
>
<img
src="../../../assets/manage/gzh.png"
alt=""
style="width: 24px"
/>
<div>公众号</div>
</div>
<div
class="item"
style="color: #339de5; border-color: #339de5"
v-if="list.patientSource == 'WE_CHAT_APPLET'"
>
<img src="../../../assets/manage/xcx.png" alt="" />
<div>小程序</div>
</div>
<div
class="item"
style="color: #f4881f; border-color: #f4881f"
v-if="list.patientSource == 'MANAGE_END'"
>
<img src="../../../assets/manage/gld.png" alt="" />
<div>管理端</div>
</div>
</div>
</div>
<div class="information">
<div class="top">
<div>身份证号{{ list.cardNo }}</div>
<div>患者电话{{ list.patientPhone }}</div>
<div style="width: 50%">出生日期{{ list.birthDate }}</div>
</div>
<div class="bottom">
<!-- <div>注册时间{{ $route.query.createTime }}</div> -->
<div>家属电话{{ list.familyMemberPhone }}</div>
<div style="width: 50%">住址{{ list.address }}</div>
</div>
</div>
</div>
<div class="bottomheader">
<!-- 运动指导 -->
<!-- <div class="sport">运动指导</div>
<div class="sports">抗阻运动</div>
<div class="word">
抗阳运动可以加强心脏功能改善血液循环有效降低脑梗风,险您每周进行2次每次30分钟抗阳运动在运动时心率维持,指导如下
</div> -->
<!-- <div class="videoleft"><video src=""></video></div>
<div class="attention">运动注意事项</div>
<div class="attention">
1每次运动前需做热身运动5分钟运动后需做放松运动5分钟主要以低强度的有运动如慢步走为主
</div>
<div class="attention">
2劳逸结合:注意控制锻炼时间注意劳逸结合运动后无明显的疲倦感3循序渐进:循序渐进地进行锻炼初始以简单低强度的运动为主随后可逐渐增加强度和锻炼时间
</div>
<div class="attention">
3循序渐进:循序渐进地进行锻炼初始以简单低强度的运动为主随后可逐渐增加强度和锻炼时间
</div> -->
<!-- 复诊提醒 -->
<!-- <div>
<div class="sport">复诊提醒</div>
<div class="time">
<span class="number">1</span>
复诊时间
</div>
<div class="nexttime">您的下次复诊时间为2024-03-26</div>
<div class="images">
<image src="../assets/images/profile.jpg"></image>
</div>
</div> -->
<div style="display: flex">
<!-- 出院记录 -->
<div style="width: 30%; overflow: auto; height: 500px">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="入院记录" name="first">
<div>
{{ list.inHospitalInfo }}
</div></el-tab-pane
>
<el-tab-pane label="手术记录" name="second">
<div>{{ list.surgicalRecord }}</div>
</el-tab-pane>
<el-tab-pane label="出院记录" name="third"
><div>{{ list.outHospitalInfo }}</div>
</el-tab-pane>
</el-tabs>
</div>
<!-- 文章模板 -->
<div
class="right"
v-if="$route.query.taskContent == 'PROPAGANDA_ARTICLE'"
>
<div class="sport">文章模板:靶向药帮助肺肿瘤人群走向康复!</div>
<div class="bodytop">
<div>
<div class="know">靶向药帮助肺肿瘤人群走向康复!</div>
<div class="knowlist">
有种药每天只需服用一到两次就能在最快的一周内缓解肺肿瘤症状一个月后肿瘤就有可能显著缩小甚至有可能在几个月后实现完全缓解这就是靶向治疗药物一种帮助肺肿瘤人群走向康复的神奇药物!
</div>
<img src="@/assets/system/userinfo.jpg" alt="" />
<video src=""></video>
</div>
</div>
</div>
<!-- 问卷模板 -->
<div
class="right"
v-if="$route.query.taskContent == 'QUESTIONNAIRE_SCALE'"
>
<div class="sport">问卷模板: Barthel指数评定问卷</div>
<div class="words">
您好!本问卷用于评估日常生活能力请根据自身日常实际表现选择合适的选项
</div>
<div class="words">
1.进食单选题
<el-radio-group v-model="radio" class="custom-radio-group">
<el-radio label="1" class="custom">备选项</el-radio>
<el-radio label="2" class="custom">备选项</el-radio>
<el-radio label="3" class="custom">备选项</el-radio>
</el-radio-group>
</div>
</div>
<!-- 电话外呼 -->
<div v-if="$route.query.taskContent == 'PHONE_OUTBOUND'">
<div class="sport">电话外呼</div>
<div class="nexttime">话术名称</div>
</div>
<!-- 文字提醒 -->
<div v-if="$route.query.taskContent == 'TEXT_REMIND'">
<div class="sport">提醒内容:</div>
<!-- <div class="nexttime">话术名称</div> -->
</div>
<!-- 人工随访 -->
<div v-if="$route.query.taskContent == 'ARTIFICIAL_FOLLOW_UP'">
<div class="sport">人工随访模板:</div>
<div class="sport">人工随访模板内容:</div>
<!-- <div class="nexttime">话术名称</div> -->
</div>
</div>
</div>
</div>
</template>
<script>
import { selectVisitRecord } from "@/api/system/taskExecuteRecord";
export default {
name: "patientdetails",
data() {
return {
radio: "1",
activeName: "first",
id: "",
list: [],
};
},
created() {
console.log(this.$route.query);
this.id = this.$route.query.patientId;
this.info();
},
methods: {
info() {
selectVisitRecord(this.id).then((res) => {
console.log(res);
this.list = res.data;
});
},
handleClick(tab, event) {
console.log(tab, event);
},
},
};
</script>
<style lang="scss" scoped>
.custom-radio-group {
display: flex;
flex-direction: column;
padding: 10px 0 10px 10px;
.custom {
padding: 10px 0 10px 10px;
}
}
.bodytop {
position: relative;
top: 20px;
// height: 500px;
width: 400px;
margin: 0 auto;
// background: red;f
overflow: auto;
border: 1px solid #e2e2e2;
.titledata {
margin: 30px 0px 15px 30px;
top: 14px;
font-size: 20px;
}
.audiotop {
margin: 10px 0px 10px 30px;
}
img {
// width: 362px;
// height: 127px;
margin: 0px 0px 0px 30px;
}
.know {
margin: 11px 0px 10px 30px;
font-size: 20px;
font-weight: 550;
}
.knowlist {
margin: 10px 0px 10px 30px;
font-size: 16px;
}
}
.right {
width: 70%;
height: 500px;
// background: yellow;
}
.header {
background-color: #f1f3f5;
padding-top: 10px;
::v-deep .el-tabs__header {
margin: 0 !important;
width: 100%;
// overflow: auto;
// height: 500px;
// background: red;
}
.bottomheader {
width: 99%;
background-color: #fff;
margin: 10px auto;
padding: 10px 20px;
.sport {
padding: 10px 50px 10px 10px;
font-size: 20px;
font-weight: 600;
}
.words {
font-size: 15px;
padding: 10px 50px 10px 10px;
}
.sports {
position: absolute;
left: 50%;
transform: translate(-50%);
font-size: 18px;
font-weight: 600;
}
.word {
font-size: 14px;
font-weight: 550;
padding: 50px 50px 10px 10px;
}
.videoleft {
width: 40%;
height: 200px;
background: red;
}
.time {
font-size: 20px;
font-weight: 550;
padding: 10px 50px 10px 10px;
}
.number {
width: 25px;
height: 25px;
text-align: center;
display: inline-block;
color: white;
background: blue;
border-radius: 50%;
}
.nexttime {
font-size: 15px;
padding: 10px 50px 10px 10px;
}
.images {
width: 53%;
height: 241px;
margin: 0 auto;
background: red;
}
.attention {
font-size: 14px;
font-weight: 550;
padding: 10px 50px 10px 10px;
}
// .videobottom
// {
// font-size: 14px;
// font-weight: 550;
// padding: 10px 50px 10px 10px;
// }
}
.topheader {
width: 99%;
background-color: #fff;
margin: 0 auto;
.information {
display: flex;
flex-wrap: wrap;
padding: 10px 20px;
height: 110px;
.top,
.bottom {
color: #666666;
width: 100%;
display: flex;
div {
width: 25%;
}
}
}
.user {
width: 100%;
padding: 0 20px;
display: flex;
height: 80px;
align-items: center;
line-height: 80px;
.source {
display: flex;
.item {
line-height: 30px;
font-size: 14px;
margin-left: 20px;
border: 1px solid #c7c7c7;
width: 100px;
border-radius: 5px;
justify-content: center;
height: 30px;
display: flex;
align-items: center;
img {
margin-right: 10px;
width: 20px;
height: 20px;
}
}
}
.name {
font-size: 20px;
padding-left: 12px;
}
.gender {
padding-left: 10px;
}
.age {
padding-left: 10px;
}
.headsculpture {
border-radius: 50%;
width: 40px;
height: 40px;
}
}
}
}
</style>

View File

@ -0,0 +1,675 @@
<template>
<div class="app-container">
<!-- <el-tabs v-model="queryParams.serviceStatus" @tab-click="handleClick">
<el-tab-pane label="未执行" name="INTENTIONAL_SIGNING"></el-tab-pane>
<el-tab-pane label="执行中" name="SERVICE_CENTER"></el-tab-pane>
<el-tab-pane label="已执行" name="SERVICE_END"></el-tab-pane>
</el-tabs> -->
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item label="执行时间" prop="startDate" label-width="110px">
<el-date-picker
v-model="intentionalTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
style="width: 300px"
value-format="yyyy-MM-dd"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<!-- <el-form-item
label="出院时间"
prop="intentionalTimeStart"
label-width="110px"
v-if="queryParams.serviceStatus == 'INTENTIONAL_SIGNING'"
>
<el-date-picker
v-model="intentionalTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
style="width: 300px"
value-format="yyyy-MM-dd"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item> -->
<!-- <el-form-item
label="入院时间"
prop="intentionalTimeStart"
label-width="110px"
v-if="queryParams.serviceStatus == 'INTENTIONAL_SIGNING'"
>
<el-date-picker
v-model="intentionalTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
style="width: 300px"
value-format="yyyy-MM-dd"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item> -->
<el-form-item label="医院" prop="hospitalAgencyId">
<el-select
v-model="queryParams.hospitalAgencyId"
filterable
placeholder="请选择医院"
style="width: 200px"
clearable
>
<!-- @clear="clearhospitalAgency" -->
<el-option
v-for="item in hospitalAgencylist"
:key="item.id"
:label="item.agencyName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item
label="院区"
prop="campusAgencyId"
v-if="queryParams.hospitalAgencyId"
>
<el-select
v-model="queryParams.campusAgencyId"
filterable
placeholder="请选择院区"
style="width: 200px"
clearable
@clear="clearcampusAgency"
@change="changecampusAgency"
>
<el-option
v-for="item in campusAgencylist"
:key="item.id"
:label="item.agencyName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label="科室"
prop="departmentId"
v-if="queryParams.campusAgencyId"
>
<el-select
v-model="queryParams.departmentId"
filterable
placeholder="请选择科室"
style="width: 200px"
clearable
@clear="cleardepartment"
@change="changedepartment"
>
<el-option
v-for="item in departmentlist"
:key="item.id"
:label="item.departmentName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="病区" prop="wardId" v-if="queryParams.departmentId">
<el-select
v-model="queryParams.wardId"
filterable
placeholder="请选择病区"
style="width: 200px"
clearable
>
<el-option
v-for="item in wardlist"
:key="item.id"
:label="item.departmentName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item> -->
<el-form-item label="就诊方式" prop="visitMethod">
<el-select
v-model="queryParams.visitMethod"
placeholder="请选择就诊方式"
clearable
>
<el-option
v-for="dict in dict.type.visit_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="患者表id" prop="patientId">
<el-input
v-model="queryParams.patientId"
placeholder="请输入患者表id"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item label="就诊流水号" prop="visitSerialNumber">
<el-input
v-model="queryParams.visitSerialNumber"
placeholder="请输入就诊流水号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="签约患者管理任务节点表id" prop="manageRouteNodeId">
<el-input
v-model="queryParams.manageRouteNodeId"
placeholder="请输入签约患者管理任务节点表id"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item label="患者姓名" prop="patientName">
<el-input
v-model="queryParams.patientName"
placeholder="请输入患者姓名"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="任务名称" prop="manageRouteName">
<el-input
v-model="queryParams.manageRouteName"
placeholder="请输入任务名称"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="路径节点名称" prop="manageRouteNodeName">
<el-input
v-model="queryParams.manageRouteNodeName"
placeholder="请输入管理路径节点名称"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<!-- <el-form-item label="任务执行时间" prop="executeTime">
<el-date-picker
clearable
style="width: 200px"
v-model="queryParams.executeTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择任务执行时间格式yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
</el-form-item> -->
<!-- <el-form-item label="执行人姓名" prop="executePerson">
<el-input
v-model="queryParams.executePerson"
placeholder="请输入执行人姓名"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<!-- <el-form-item label="模板名称" prop="executeRemark">
<el-input
v-model="queryParams.executeRemark"
placeholder="请输入模板名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:taskExecuteRecord:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:taskExecuteRecord:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:taskExecuteRecord:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:taskExecuteRecord:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> -->
<el-table
v-loading="loading"
:data="taskExecuteRecordList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="主键id" align="center" prop="id" /> -->
<!-- <el-table-column label="患者表id" align="center" prop="patientId" /> -->
<el-table-column label="患者姓名" align="center" prop="patientName" />
<el-table-column label="电话" align="center" prop="patientPhone" />
<el-table-column label="就诊流水号" align="center" prop="visitSerialNumber" />
<el-table-column label="医院" align="center" prop="hospitalAgencyName" />
<el-table-column label="院区" align="center" prop="campusAgencyName" />
<el-table-column label="科室名称" align="center" prop="departmentName" />
<el-table-column label="病区名称" align="center" prop="wardName" />
<!-- <el-table-column label="门诊/住院号" align="center" prop="patientName" />
<el-table-column label="手术名称" align="center" prop="patientName" /> -->
<el-table-column label="执行人姓名" align="center" prop="executePerson" />
<el-table-column label="签约患者管理路径节点名称" align="center" prop="manageRouteNodeName" />
<el-table-column label="签约患者管理任务名称" align="center" prop="manageRouteName" />
<el-table-column
label="入院时间"
align="center"
prop="admissionDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.admissionDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="出院时间"
align="center"
prop="dischargeDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.dischargeDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="就诊方式" align="center" prop="visitMethod">
<template slot-scope="scope">
<span
>{{ scope.row.visitMethod == "OUTPATIENT_SERVICE" ? "门诊" : "" }}
{{ scope.row.visitMethod == "BE_HOSPITALIZED" ? "住院" : "" }}
</span>
</template></el-table-column
>
<el-table-column label="任务名称" align="center" prop="manageRouteName" />
<el-table-column
label="执行时间"
align="center"
prop="executeTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.executeTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="签约患者管理路径节点名称"
align="center"
prop="manageRouteNodeName"
/>
<el-table-column label="任务内容" align="center" prop="taskContent">
<template slot-scope="scope">
<span
>{{ scope.row.taskContent == "PHONE_OUTBOUND" ? "电话外呼" : "" }}
{{
scope.row.taskContent == "QUESTIONNAIRE_SCALE" ? "问卷量表" : ""
}}
{{
scope.row.taskContent == "PROPAGANDA_ARTICLE" ? "宣教文章" : ""
}}
{{ scope.row.taskContent == "TEXT_REMIND" ? "文字提醒" : "" }}
{{
scope.row.taskContent == "ARTIFICIAL_FOLLOW_UP" ? "人工随访" : ""
}}
</span>
</template></el-table-column
>
<el-table-column
label="执行时间"
align="center"
prop="executeTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.executeTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="执行人姓名,手动执行时记录" align="center" prop="executePerson" /> -->
<!-- <el-table-column label="任务执行方式人工执行MANUAL_EXECUTE系统自动执行SYSTEM_AUTOMATIC_EXECUTE" align="center" prop="executeType" /> -->
<!-- <el-table-column
label="任务推送方式"
align="center"
prop="executeRemark"
/> -->
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
fixed="right"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-notebook-2"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:taskExecuteRecord:edit']"
>详情</el-button
>
<!-- <el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:taskExecuteRecord:remove']"
>删除</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"
/>
</div>
</template>
<script>
import {
listTaskExecuteRecord,
delTaskExecuteRecord,
addTaskExecuteRecord,
updateTaskExecuteRecord,
} from "@/api/system/taskExecuteRecord";
import { getAge } from "@/utils/age";
import {
selectAgencyList,
} from "@/api/manage/selectAgencyList";
export default {
name: "TaskExecuteRecord",
dicts: ["visit_type"],
data() {
return {
intentionalTime: [],
//list
hospitalAgencylist: [],
// list
// campusAgencylist: [],
// //list
// departmentlist: [],
// //list
// wardlist: [],
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
taskExecuteRecordList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
visitSerialNumber: null,
patientId: null,
visitMethod: null,
manageRouteId: null,
manageRouteNodeId: null,
patientName: null,
startDate: null,
endDate: null,
manageRouteName: null,
manageRouteNodeName: null,
taskContent: null,
executeTime: null,
executePerson: null,
executeType: null,
executeRemark: null,
hospitalAgencyId: null,
campusAgencyId: null,
departmentId: null,
wardId: null,
},
//
form: {},
//
// rules: {
// patientId: [
// { required: true, message: "id", trigger: "blur" },
// ],
// },
};
},
created() {
this.getList();
this.selectAgencyinfo();
},
methods: {
//list
selectAgencyinfo() {
let query = {
agencyStatus: "ON",
nodeType: "HOSPITAL",
};
selectAgencyList(query).then((res) => {
this.hospitalAgencylist = res.data;
});
},
/** 查询患者管理任务执行记录列表 */
getList() {
this.loading = true;
listTaskExecuteRecord(this.queryParams).then((response) => {
this.taskExecuteRecordList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
patientId: null,
manageRouteId: null,
manageRouteNodeId: null,
patientName: null,
manageRouteName: null,
manageRouteNodeName: null,
taskContent: null,
executeTime: null,
executePerson: null,
executeType: null,
executeRemark: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
if (this.intentionalTime.length > 0) {
this.queryParams.startDate = this.intentionalTime[0]
this.queryParams.endDate = this.intentionalTime[1]
}
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
this.intentionalTime = [];
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加患者管理任务执行记录";
},
/** 修改按钮操作 */
handleUpdate(row) {
console.log(row)
this.$router.push({
path: "/task/record",
query: {
patientId: row.patientId,
taskContent:row.taskContent,
cardNo: row.cardNo,
patientName: row.patientName,
patientPhone: row.patientPhone,
sex: row.sex,
birthDate: row.birthDate,
familyMemberPhone: row.familyMemberPhone,
address: row.address,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.birthDate ? getAge(row.birthDate) : "",
},
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateTaskExecuteRecord(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addTaskExecuteRecord(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
// handleClick(tab, event) {
// this.intentionalTime = [];
// this.queryParams.startDate = null;
// this.queryParams.endDate = null;
// // this.signTime = []
// // this.queryParams.signTimeStart = null
// // this.queryParams.signTimeEnd = null
// this.getList();
// },
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm(
'是否确认删除患者管理任务执行记录编号为"' + ids + '"的数据项?'
)
.then(function () {
return delTaskExecuteRecord(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"system/taskExecuteRecord/export",
{
...this.queryParams,
},
`taskExecuteRecord_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -356,9 +356,10 @@
<el-col :span="12">
<el-form-item label="身份证号" prop="userCardNo">
<el-input
style="width: 220px"
v-model="form.userCardNo"
placeholder="请输入身份证号"
maxlength="30"
maxlength="18"
/>
</el-form-item>
</el-col>
@ -399,8 +400,9 @@
<el-col :span="12">
<el-form-item label="账号类型" prop="email">
<el-input
style="width: 220px"
v-model="form.email"
placeholder="请输入邮箱"
placeholder="请输入账号类型"
maxlength="50"
/>
</el-form-item>
@ -1024,6 +1026,14 @@ export default {
trigger: "blur",
},
],
userCardNo: [
{
pattern:
/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/,
message: "请输入正确的身份证号",
trigger: "blur",
},
],
email: [
{
type: "email",
@ -1063,9 +1073,8 @@ export default {
this.$refs.multipleTabledep.toggleRowSelection(selection.pop()); //
}
this.nowSelectDatadep = selection;
if(selection.length>0){
if (selection.length > 0) {
this.formlistdep.departmentId = selection[0].departmentId;
}
},
// //
@ -1089,7 +1098,7 @@ export default {
},
//
handleSelectionChangenleft(selection) {
console.log(selection,'55555555')
console.log(selection, "55555555");
this.$nextTick(() => {
if (selection.length > 1) {
this.$refs.multipleTable.clearSelection(); //
@ -1097,10 +1106,9 @@ export default {
}
});
this.nowSelectData = selection;
if(selection.length>0){
if (selection.length > 0) {
this.formlist.agencyId = selection[0].agencyId;
}
},
//