Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
shidongli 2024-04-11 17:24:54 +08:00
commit 161811ab96
5 changed files with 478 additions and 67 deletions

View File

@ -41,6 +41,13 @@ export function delTaskExecuteRecord(id) {
method: 'delete'
})
}
export function selectPatientQuestionSubmit(taskExecuteRecordId) {
return request({
url: `/system/taskExecuteRecord/selectPatientQuestionSubmit?taskExecuteRecordId=${taskExecuteRecordId}`,
method: 'get'
})
}
// 入院记录
export function selectVisitRecord(id) {
return request({

View File

@ -244,9 +244,11 @@
<el-input v-model="form.deviceName" placeholder="请输入设备名称" />
</el-form-item>
<el-form-item label="设备编码" prop="deviceCode">
<el-input v-model="form.deviceCode" placeholder="请输入设备编码"
onKeyUp="value=value.replace(/[\W]/g,'')"
/>
<el-input
v-model="form.deviceCode"
placeholder="请输入设备编码"
onKeyUp="value=value.replace(/[\W]/g,'')"
/>
</el-form-item>
<el-form-item label="设备类型" prop="deviceType">
<el-select
@ -556,8 +558,7 @@ export default {
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams.deviceType=''
this.queryParams.deviceType = "";
this.handleQuery();
},
//

View File

@ -43,16 +43,19 @@
<el-table-column label="问卷模板ID" align="center" prop="questionnaireId" />
<el-table-column label="问卷状态" align="center" prop="questionnaireStatus">
<template slot-scope="scope">
<!-- active-text="已发布" inactive-text="未发布" -->
<el-switch v-model="scope.row.questionnaireStatus" active-color="#13ce66" inactive-color="#ff4949"
active-value="PUBLISHED" inactive-value="UNPUBLISHED" @change="switchstatus($event, scope.row)">
</el-switch>
<el-tag type="success" v-if="scope.row.questionnaireStatus == 'PUBLISHED'">已发布</el-tag>
<el-tag type="warning" v-else>未发布</el-tag>
</template>
</el-table-column>
<el-table-column label="病种名称" align="center" prop="diseaseTypeName" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<!-- <el-switch v-model="scope.row.questionnaireStatus" active-color="#13ce66" inactive-color="#ff4949"
active-value="PUBLISHED" inactive-value="UNPUBLISHED" @change="switchstatus($event, scope.row)">
</el-switch> -->
<el-button size="mini" type="text" @click="switchstatus('UNPUBLISHED', scope.row)"
v-if="scope.row.questionnaireStatus == 'PUBLISHED'">取消发布</el-button>
<el-button size="mini" type="text" @click="switchstatus('PUBLISHED', scope.row)" v-else>发布</el-button>
<el-button size="mini" type="text" @click="handleClassification(scope.row)"
v-hasPermi="['system:question:edit']">分类管理</el-button>
<el-button size="mini" type="text" @click="handleUpdate(scope.row)"
@ -172,7 +175,7 @@ export default {
},
//
handleClassification(row) {
this.classificationform = row
this.classificationform = JSON.parse(JSON.stringify(row))
if (this.classificationform.departmentId) {
let query = {
departmentId: this.classificationform.departmentId
@ -199,6 +202,8 @@ export default {
}
diseaseList(query).then(res => {
this.diseaselist = res.data
this.classificationform.diseaseTypeId = ''
this.classificationform.diseaseTypeName = ''
})
},
changediseaseType(e) {
@ -207,22 +212,32 @@ export default {
//
switchstatus(e, item) {
if (!item.departmentId && !this.diseaseTypeId) {
this.$message.error('请选择问卷所属的科室以及科室病种后发布!');
this.getList();
this.$message.error('请选择问卷所属的科室以及科室病种后发布 / 取消发布!');
return
}
let query = {
id: item.id,
questionnaireStatus: e
let text
if (e == 'PUBLISHED') {
text = '是否发布此问卷模板?'
} else {
text = '是否取消发布此问卷模板?'
}
updateclassification(query).then(res => {
if (e == 'PUBLISHED') {
this.$modal.msgSuccess("修改为已发布");
} else if (e == 'UNPUBLISHED') {
this.$modal.msgSuccess("修改为未发布");
this.$confirm(`${text}`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(() => {
let query = {
id: item.id,
questionnaireStatus: e
}
updateclassification(query).then(res => {
if (e == 'PUBLISHED') {
this.$modal.msgSuccess("修改为已发布");
} else if (e == 'UNPUBLISHED') {
this.$modal.msgSuccess("修改为未发布");
}
this.getList();
})
})
this.getList();
},
//
handleNodeClick(data) {

View File

@ -73,7 +73,7 @@
<div class="sports">抗阻运动</div>
<div class="word">
抗阳运动可以加强心脏功能改善血液循环有效降低脑梗风,险您每周进行2次每次30分钟抗阳运动在运动时心率维持,指导如下
</div> -->
<!-- <div class="videoleft"><video src=""></video></div>
<div class="attention">运动注意事项</div>
@ -102,7 +102,7 @@
</div> -->
<div style="display: flex">
<!-- 出院记录 -->
<div style="width: 30%; overflow: auto; height: 500px">
<div style="width: 30%; overflow: auto">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="入院记录" name="first">
<div>
@ -118,82 +118,427 @@
</el-tabs>
</div>
<!-- 文章模板 -->
<div
class="right"
v-if="$route.query.taskContent == 'PROPAGANDA_ARTICLE'"
>
<div class="sport">文章模板:靶向药帮助肺肿瘤人群走向康复!</div>
<div class="right" v-if="$route.query.taskType == 'PROPAGANDA_ARTICLE'">
<div class="sport">文章模板:{{ formview.propagandaTitle }}</div>
<div class="bodytop">
<div>
<div class="know">靶向药帮助肺肿瘤人群走向康复!</div>
<div class="know">{{ formview.propagandaTitle }}</div>
<div class="knowlist">
有种药每天只需服用一到两次就能在最快的一周内缓解肺肿瘤症状一个月后肿瘤就有可能显著缩小甚至有可能在几个月后实现完全缓解这就是靶向治疗药物一种帮助肺肿瘤人群走向康复的神奇药物!
{{ formview.propagandaContent }}
</div>
<img src="@/assets/system/userinfo.jpg" alt="" />
<video src=""></video>
<img :src="baseUrl + formview.propagandaCoverPath" alt="" />
<video
v-if="materialsType == 'VIDEO'"
ref="myVideo"
:src="baseUrl + materialsFilePath"
controls
></video>
</div>
</div>
</div>
<!-- 问卷模板 -->
<div
class="right"
v-if="$route.query.taskContent == 'QUESTIONNAIRE_SCALE'"
v-if="
$route.query.taskType == 'QUESTIONNAIRE_SCALE' ||
$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'
"
>
<div class="sport">问卷模板: Barthel指数评定问卷</div>
<div class="words">
<div
style="float: right; margin-top: 20px"
v-if="
$route.query.taskType == 'QUESTIONNAIRE_SCALE' ||
$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'
"
>
<el-form
:inline="true"
class="demo-form-inline"
:model="questiondata"
ref="questiondata"
>
<el-form-item label="任务处理信息" prop="routeHandleRemark">
<el-input
type="textarea"
placeholder="请输入任务处理信息"
v-model="questiondata.routeHandleRemark"
/>
</el-form-item>
</el-form>
</div>
<div
class="sport"
v-if="$route.query.taskType == 'QUESTIONNAIRE_SCALE'"
>
问卷模板: Barthel指数评定问卷
</div>
<div
class="words"
v-if="$route.query.taskType == 'QUESTIONNAIRE_SCALE'"
>
您好!本问卷用于评估日常生活能力请根据自身日常实际表现选择合适的选项
</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>
<div
class="sport"
v-if="$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'"
>
人工随访模板: 神经内科人工随访
</div>
<div
class="words"
v-if="$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'"
>
**您好!
</div>
<div
class="words"
v-if="$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'"
>
我是医院的工作人员今天给您打电话想要了解一下您的恢复情况
</div>
<div
class="words"
v-for="(item, index) in questiondata.subjectResultList"
:key="index"
>
{{ index + 1 }}.{{ item.questionName }}
<span v-if="item.questionType == 'MULTIPLE_CHOICE'"
>单选题</span
>
<span v-if="item.questionType == 'MULTIPLE_CHOICE_QUESTIONS'"
>多选题</span
>
<span v-if="item.questionType == 'SCORING_QUESTIONS'"
>打分题</span
>
<span v-if="item.questionType == 'COMBINATION_RADIO_SUBJECT'"
>组合单选题</span
>
<span v-if="item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'"
>组合多选题</span
>
<span v-if="item.questionType == 'COMBINATION_BLANKS_SUBJECT'"
>组合填空题</span
>
<span v-if="item.questionType == 'FILL_IN_THE_BLANKS'"
>填空题</span
>
<span v-if="item.questionType == 'COMBINATION_SCORING_SUBJECT'"
>组合打分题</span
>
<span v-if="item.questionType == 'DATE_BLANKS_SUBJECT'"
>日期填空题</span
>
<span v-if="item.questionType == 'TIME_BLANKS_SUBJECT'"
>时间填空题</span
>
<el-radio-group
v-if="
item.questionType == 'MULTIPLE_CHOICE' ||
item.questionType == 'COMBINATION_RADIO_SUBJECT' ||
item.questionType == 'SCORING_QUESTIONS' ||
item.questionType == 'COMBINATION_SCORING_SUBJECT'
"
v-model="item.checked"
class="custom-radio-group"
@change="radioGroupChange($event, item)"
>
<el-radio
disabled
class="custom"
v-for="(aitem, aindex) in item.optionResults"
:key="aindex"
:label="aitem.id"
@change="radioChange($event, aitem, index)"
>{{ aitem.optionName }}</el-radio
>
</el-radio-group>
<!-- 多选组合多选 -->
<el-checkbox-group
v-model="checkeddata"
@change="radioGroupChange($event, item, 'checkbox')"
v-if="
item.questionType == 'MULTIPLE_CHOICE_QUESTIONS' ||
item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'
"
>
<el-checkbox
disabled
v-for="(aitem, aindex) in item.optionResults"
:key="aindex"
:label="aitem.id"
@change="radioChangecheck($event, aitem, index, aindex)"
>{{ aitem.optionName }}</el-checkbox
>
</el-checkbox-group>
<!-- 填空题组合填空 -->
<div
v-if="
item.questionType == 'FILL_IN_THE_BLANKS' ||
item.questionType == 'COMBINATION_BLANKS_SUBJECT'
"
class="tk"
>
<el-input
disabled
v-model="item.optionAnswer"
placeholder="请输入答案"
type="textarea"
/>
<!-- <el-input></el-input> -->
</div>
<!-- 日期填空题 -->
<div
v-if="item.questionType == 'DATE_BLANKS_SUBJECT'"
style="margin: 20px 0 10px 30px"
>
<el-date-picker
disabled
@change="timepicker($event, index)"
clearable
v-model="item.optionAnswer"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
>
</el-date-picker>
</div>
<!-- 时间填空题 -->
<div
style="margin: 20px 0 10px 30px"
v-if="item.questionType == 'TIME_BLANKS_SUBJECT'"
>
<el-time-select
disabled
@change="timepickerselect($event, index)"
clearable
v-model="item.optionAnswer"
:picker-options="{
start: '08:30',
step: '00:30',
end: '23:30',
}"
placeholder="选择时间"
>
</el-time-select>
</div>
</div>
</div>
<!-- 电话外呼 -->
<div v-if="$route.query.taskContent == 'PHONE_OUTBOUND'">
<div v-if="$route.query.taskType == 'PHONE_OUTBOUND'">
<div class="sport">电话外呼</div>
<div class="nexttime">话术名称</div>
<div class="nexttime">
<el-form
ref="form"
:model="formlist"
label-width="110px"
:inline="true"
>
<el-form-item label="话术名称" prop="scriptName">
<el-input
disabled
v-model="formlist.scriptName"
placeholder="请输入话术名称"
/>
</el-form-item>
<br />
<el-form-item label="通用话术名称" prop="commonScriptName">
<el-input
disabled
v-model="formlist.commonScriptName"
placeholder="请输入通用话术名称"
/>
</el-form-item>
<br />
<el-form-item label="话术简介" prop="scriptIntroduction">
<el-input
disabled
type="textarea"
v-model="formlist.scriptIntroduction"
placeholder="请输入话术简介"
/>
</el-form-item>
</el-form>
</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 v-if="$route.query.taskType == 'TEXT_REMIND'">
<div class="sport">文字提醒</div>
<!-- <div class="nexttime">话术名称</div> -->
<div class="nexttime">
<el-form
ref="form"
:model="formlists"
label-width="110px"
:inline="true"
>
<el-form-item label="提醒内容" prop="textRemindContent">
<el-input
disabled
type="textarea"
v-model="formlists.textRemindContent"
placeholder="请输入提醒内容"
/>
</el-form-item>
</el-form>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { selectVisitRecord } from "@/api/system/taskExecuteRecord";
import { getPropaganda } from "@/api/manage/propaganda";
import {
selectVisitRecord,
selectPatientQuestionSubmit,
} from "@/api/system/taskExecuteRecord";
import { getScript } from "@/api/manage/script";
export default {
name: "patientdetails",
data() {
return {
checkeddata: [],
formlists: [],
baseUrl: process.env.VUE_APP_BASE_API,
radio: "1",
activeName: "first",
id: "",
list: [],
questiondata: {
totalScore: 0, //
routeHandlePerson: null,
routeHandleId: null,
},
formview: [],
//
formlist: {},
materialsFilePath: "",
materialsType: "",
// rules: {
// routeHandleRemark: [
// { required: true, message: "", trigger: "change" },
// ],
// },
};
},
created() {
console.log(this.$route.query);
this.id = this.$route.query.patientId;
this.info();
//
if (this.$route.query.taskType == "PROPAGANDA_ARTICLE") {
this.getPropagandaLIST();
} else if (
// 访
this.$route.query.taskType == "ARTIFICIAL_FOLLOW_UP" ||
this.$route.query.taskType == "QUESTIONNAIRE_SCALE"
) {
this.selectlist();
} else if (this.$route.query.taskType == "PHONE_OUTBOUND") {
//
getScript(this.$route.query.templateId).then((response) => {
if (response.data) {
this.formlist = response.data;
}
});
}
},
methods: {
//
getPropagandaLIST() {
getPropaganda(this.$route.query.templateId).then((response) => {
this.formview = response.data;
this.formview.materialsInfoList.forEach((e) => {
this.materialsType = e.materialsType;
this.materialsFilePath = e.materialsFilePath;
});
});
},
// 访
selectlist() {
selectPatientQuestionSubmit(this.$route.query.patientId).then((res) => {
console.log(res, "res");
this.questiondata = res.data;
if (this.$route.query.routeHandleRemark) {
this.questiondata.routeHandleRemark =
this.$route.query.routeHandleRemark;
}
if (this.$route.query.textRemindContent) {
this.formlists.textRemindContent =
this.$route.query.textRemindContent;
}
this.questiondata.subjectResultList.forEach((e) => {
e.optionResults.forEach((el) => {
// console.log(el, "el");
if (
(el.optionChooseSign == "0" &&
e.questionType == "MULTIPLE_CHOICE") ||
e.questionType == "COMBINATION_RADIO_SUBJECT"
) {
e.checked = el.id;
} else if (
(el.optionChooseSign == "0" &&
e.questionType == "MULTIPLE_CHOICE_QUESTIONS") ||
e.questionType == "COMBINATION_MULTIPLE_SUBJECT"
) {
this.checkeddata.push(el.id);
} else if (
el.optionChooseSign == "0" &&
e.questionType == "SCORING_QUESTIONS"
) {
e.checked = el.id;
}
});
});
});
},
//
timepicker(e, index) {
this.questiondata.questionSubjectList[index].optionAnswer = e;
},
//
timepickerselect(e, index) {
console.log(e);
this.questiondata.questionSubjectList[index].optionAnswer = e;
},
radioGroupChange(e, item) {},
// radio
radioChange(e, item, index) {
console.log(e, item, index, "选中某个单选框时");
this.questiondata.questionSubjectList[
index
].questionSubjectOptionList.forEach((el) => {
if (el.id == item.id) {
el.optionChooseSign = "0";
} else {
el.optionChooseSign = "1";
}
});
},
//
radioChangecheck(e, item, index, aindex) {
console.log(e, item, index, "选中某个复选框时");
if (e == true) {
this.questiondata.questionSubjectList[index].questionSubjectOptionList[
aindex
].optionChooseSign = "0";
} else {
this.questiondata.questionSubjectList[index].questionSubjectOptionList[
aindex
].optionChooseSign = "1";
}
console.log(this.questiondata, "11111111复选框");
},
info() {
selectVisitRecord(this.id).then((res) => {
selectVisitRecord(this.$route.query.patientId).then((res) => {
console.log(res);
this.list = res.data;
});
@ -205,6 +550,26 @@ export default {
};
</script>
<style lang="scss" scoped>
::v-deep .el-radio {
padding: 10px;
}
::v-deep .el-checkbox-group {
display: flex;
flex-direction: column;
padding: 10px 0px 10px 24px;
}
::v-deep .el-checkbox {
padding: 10px 0 10px 0px;
// padding: 10px;
}
.custom-radio-group {
display: flex;
flex-direction: column;
padding: 10px 0 10px 10px;
.custom {
padding: 10px 0 10px 10px;
}
}
.custom-radio-group {
display: flex;
flex-direction: column;
@ -216,8 +581,8 @@ export default {
.bodytop {
position: relative;
top: 20px;
// height: 500px;
width: 400px;
height: 500px;
width: 600px;
margin: 0 auto;
// background: red;f
overflow: auto;
@ -235,6 +600,9 @@ export default {
// height: 127px;
margin: 0px 0px 0px 30px;
}
video {
margin: 0px 0px 0px 30px;
}
.know {
margin: 11px 0px 10px 30px;
font-size: 20px;
@ -263,6 +631,7 @@ export default {
}
.bottomheader {
overflow: auto;
width: 99%;
background-color: #fff;
margin: 10px auto;
@ -406,4 +775,3 @@ export default {
}
}
</style>

View File

@ -175,8 +175,28 @@
label="签约患者管理任务名称"
align="center"
prop="manageRouteName"
/>
>
<template slot-scope="scope">
<span
>{{ scope.row.manageRouteName == "AFTER_DISCHARGE" ? "出院后" : "" }}
{{
scope.row.manageRouteName == "AFTER_ADMISSION" ? "入院后" : ""
}}
{{
scope.row.manageRouteName == "AFTER_CONSULTATION" ? "就诊后" : ""
}}
{{ scope.row.manageRouteName == "AFTER_VISIT_DISCHARGE" ? "就诊/出院后" : "" }}
{{
scope.row.manageRouteName == "PREOPERATIVE" ? "术前" : ""
}}
{{
scope.row.manageRouteName == "POSTOPERATIVE" ? "术后" : ""
}}
</span>
</template>
</el-table-column
>
<el-table-column
label="入院时间"
align="center"
@ -216,11 +236,7 @@
<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">
@ -454,12 +470,16 @@ export default {
this.$router.push({
path: "/task/record",
query: {
patientId: row.patientId,
patientId: row.id,
taskContent: row.taskContent,
taskType:row.taskType,
templateId:row.templateId,
cardNo: row.cardNo,
patientName: row.patientName,
patientPhone: row.patientPhone,
sex: row.sex,
routeHandleRemark:row.routeHandleRemark,
textRemindContent:row.textRemindContent,
birthDate: row.birthDate,
familyMemberPhone: row.familyMemberPhone,
address: row.address,