This commit is contained in:
闫晓茹 2024-06-28 18:06:23 +08:00
parent 74103b0b62
commit ec0c2c5cc0
3 changed files with 333 additions and 130 deletions

View File

@ -2,7 +2,7 @@
<div class="app-container">
<el-descriptions title="编辑触发条件" style="height: 25px; width: 99px" />
<div class="title">
<div :class="show3 == false ? 'title' : 'titlement'">
<!-- <div >触发条件</div> -->
<div class="nodes">
<!-- 一级 -->
@ -30,7 +30,8 @@
@change="changetriggerLogic($event, index)"
>
<el-option
v-for="item in openlist.triggerConditionList.optionstriggerConditionOperator"
v-for="item in openlist.triggerConditionList
.optionstriggerConditionOperator"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
@ -127,7 +128,8 @@
@change="changetriggerLogic($event, index)"
>
<el-option
v-for="item in openlist.triggerConditionList.optionstriggerConditionOperator"
v-for="item in openlist.triggerConditionList
.optionstriggerConditionOperator"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
@ -205,7 +207,7 @@
</span>
</div>
</div>
<div class="list">
<div :class="show3 == true ? 'listment' : 'list'">
<div class="timelist">
<div class="timetitle">
管理路径节点({{ lists.length }})
@ -276,7 +278,7 @@
<el-form-item label="任务类型" prop="">
<el-select
v-model="form.taskType"
style="width: 110px"
style="width: 130px"
@change="changeTaskType"
>
<el-option
@ -291,7 +293,7 @@
<el-form-item label="任务细分" prop="">
<el-select
v-model="form.taskSubdivision"
style="width: 110px"
style="width: 130px"
@change="changetaskSubdivision"
>
<el-option
@ -317,7 +319,7 @@
<el-form-item label="二级分类描述" prop="">
<el-input
v-model="form.secondClassifyDescribe"
style="width: 110px"
style="width: 130px"
disabled
></el-input>
</el-form-item>
@ -849,7 +851,7 @@ export default indexjs;
}
.dialog-footer {
padding: 0px 30px;
padding: 4px 20px 0 30px;
text-align: right;
}
@ -966,7 +968,7 @@ export default indexjs;
.topform {
padding: 15px 0 0 15px;
height: 200px;
height: 150px;
.form {
::v-deep .el-input__inner {
@ -980,10 +982,10 @@ export default indexjs;
}
}
.title {
.titlement {
display: flex;
margin-left: 100px;
// height: 15vh;
.select {
font-weight: 550;
// margin-left: 10%;
@ -999,14 +1001,33 @@ export default indexjs;
}
}
}
.title {
display: flex;
margin-left: 100px;
height: 7vh;
.select {
font-weight: 550;
// margin-left: 10%;
position: relative;
right: 20px;
// width: 300px;
font-size: 13px;
.el-input {
width: 200px;
height: 30px !important;
line-height: 30px !important;
}
}
}
// .container {
// padding: 20px;
// }
.list {
.listment {
margin: 12px auto;
width: 100%;
// height: calc(100% - 80px);
// height: 60vh;
// height: calc(100% - 220px);
background-color: #f2f4f5;
display: flex;
padding-top: 15px;
@ -1041,6 +1062,45 @@ export default indexjs;
background-color: #fff;
}
}
.list {
// margin: 12px auto;
width: 100%;
height: 69vh;
// height: calc(100% - 80px);
background-color: #f2f4f5;
display: flex;
padding-top: 15px;
justify-content: space-evenly;
.timelist {
width: 25%;
background-color: #fff;
padding: 0 20px 20px;
// height: calc(100vh - 350px);
overflow: scroll;
.timetitle {
height: 60px;
display: flex;
align-items: center;
justify-content: space-between;
}
::v-deep .el-timeline {
width: 100%;
padding: 15px 0 0 !important;
}
}
.texts {
width: 73%;
// height: calc(100vh - 350px);
overflow: scroll;
background-color: #fff;
}
}
.cards {
border: 1px solid #409eff;

View File

@ -590,11 +590,12 @@ export default {
},
//wangeditor传值
onNodeContent(item) {
this.form.nodeContent = item.nodeContent;
if (this.form.nodeContent) {
if (item.nodeContent) {
this.form.nodeContent = item.nodeContent;
var abc = new RegExp("<br>", "g");
var bbb = this.form.nodeContent.replace(abc, "");
this.form.nodeContent = bbb;
console.log(this.form.nodeContent, 'this.form.nodeContent')
}
},
@ -699,13 +700,12 @@ export default {
},
bottomclickevent(uitem, index, uindex) {
// if (
// this.form.taskSubdivisiontemplateType != "QUESTIONNAIRE" &&
// this.form.taskSubdivisiontemplateType != "PROPAGANDA"
// ) {
// console.log()
this.$refs.wangeditor.emit();
// }
if (
this.form.taskSubdivisiontemplateType != "QUESTIONNAIRE" &&
this.form.taskSubdivisiontemplateType != "PROPAGANDA"
) {
this.$refs.wangeditor.emit();
}
setTimeout(() => {
this.form = uitem;
this.taskPartitionList = [];

View File

@ -2,8 +2,18 @@
<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'" />
<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>
@ -37,83 +47,187 @@
<div class="bottomheader">
<div style="display: flex">
<!-- 问卷模板 -->
<div class="right" v-if="$route.query.taskType == 'QUESTIONNAIRE_SCALE' ||
$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'
">
<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" :rules="rules" ref="questiondata">
<div
class="right"
v-if="
$route.query.taskType == 'QUESTIONNAIRE_SCALE' ||
$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'
"
>
<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"
:rules="rules"
ref="questiondata"
>
<el-form-item label="任务处理信息" prop="routeHandleRemark">
<el-input type="textarea" placeholder="请输入任务处理信息" v-model="questiondata.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'">
<div
class="sport"
v-if="$route.query.taskType == 'QUESTIONNAIRE_SCALE'"
>
问卷模板: Barthel指数评定问卷
</div>
<div class="words" v-if="$route.query.taskType == 'QUESTIONNAIRE_SCALE'">
<div
class="words"
v-if="$route.query.taskType == 'QUESTIONNAIRE_SCALE'"
>
您好!本问卷用于评估日常生活能力请根据自身日常实际表现选择合适的选项
</div>
<div class="sport" v-if="$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'">
<div
class="sport"
v-if="$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'"
>
人工随访模板: 神经内科人工随访
</div>
<div class="words" v-if="$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'">
<div
class="words"
v-if="$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'"
>
**您好!
</div>
<div class="words" v-if="$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'">
<div
class="words"
v-if="$route.query.taskType == 'ARTIFICIAL_FOLLOW_UP'"
>
我是医院的工作人员今天给您打电话想要了解一下您的恢复情况
</div>
<div class="words" v-for="(item, index) in questiondata.questionSubjectList" :key="index">
<div
class="words"
v-for="(item, index) in questiondata.questionSubjectList"
: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="questiondata[index]" class="custom-radio-group" @change="radioGroupChange($event, item)">
<el-radio class="custom" v-for="(aitem, aindex) in item.questionSubjectOptionList" :key="aindex"
:label="aitem.id" @change="radioChange($event, aitem, index)">{{ aitem.optionName }}</el-radio>
<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="questiondata[index]"
class="custom-radio-group"
@change="radioGroupChange($event, item)"
>
<el-radio
class="custom"
v-for="(aitem, aindex) in item.questionSubjectOptionList"
: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 v-for="(aitem, aindex) in item.questionSubjectOptionList" :key="aindex" :label="aitem.id"
@change="radioChangecheck($event, aitem, index, aindex)">{{ aitem.optionName }}</el-checkbox>
<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
v-for="(aitem, aindex) in item.questionSubjectOptionList"
: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 v-model="item.fillBlanksAnswer" placeholder="请输入答案" type="textarea" />
<div
v-if="
item.questionType == 'FILL_IN_THE_BLANKS' ||
item.questionType == 'COMBINATION_BLANKS_SUBJECT'
"
class="tk"
>
<el-input
v-model="item.fillBlanksAnswer"
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 @change="timepicker($event, index)" clearable v-model="item.fillBlanksAnswer" type="date"
value-format="yyyy-MM-dd" placeholder="选择日期">
<div
v-if="item.questionType == 'DATE_BLANKS_SUBJECT'"
style="margin: 20px 0 10px 30px"
>
<el-date-picker
@change="timepicker($event, index)"
clearable
v-model="item.fillBlanksAnswer"
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 @change="timepickerselect($event, index)" clearable v-model="item.fillBlanksAnswer"
<div
style="margin: 20px 0 10px 30px"
v-if="item.questionType == 'TIME_BLANKS_SUBJECT'"
>
<el-time-select
@change="timepickerselect($event, index)"
clearable
v-model="item.fillBlanksAnswer"
:picker-options="{
start: '08:30',
step: '00:30',
end: '23:30',
}" placeholder="选择时间">
start: '08:30',
step: '00:30',
end: '23:30',
}"
placeholder="选择时间"
>
</el-time-select>
</div>
</div>
@ -122,18 +236,36 @@
<div v-if="$route.query.taskType == 'PHONE_OUTBOUND'">
<div class="sport">电话外呼</div>
<div class="nexttime">
<el-form ref="formlist" :model="formlist" label-width="110px" :inline="true" :rules="rulesphone">
<el-form
ref="formlist"
:model="formlist"
label-width="110px"
:inline="true"
:rules="rulesphone"
>
<!-- <br/> -->
<el-form-item label="电话" prop="patientPhone">
<el-input
disabled
v-model="formlist.patientPhone"
placeholder="请输入电话"
/>
</el-form-item>
<br />
<el-form-item label="是否接通" prop="phone">
<el-radio v-model="formlist.phoneConnectStatus" label="CONNECTED">已接通</el-radio>
<el-radio v-model="formlist.phoneConnectStatus" label="NOTCONNECTED">未接通</el-radio>
<el-radio
v-model="formlist.phoneConnectStatus"
label="CONNECTED"
>已接通</el-radio
>
<el-radio
v-model="formlist.phoneConnectStatus"
label="NOTCONNECTED"
>未接通</el-radio
>
</el-form-item>
<br />
<el-form-item label="任务处理信息" prop="routeHandleRemark">
<el-input v-model="formlist.routeHandleRemark" placeholder="请输入任务处理信息" />
</el-form-item>
<br />
<!-- <el-form-item label="话术名称" prop="scriptName">
<el-input
disabled
@ -144,7 +276,11 @@
</el-form-item> -->
<!-- <br /> -->
<el-form-item label="通用话术名称" prop="phoneTemplateName">
<el-input disabled v-model="formlist.phoneTemplateName" placeholder="请输入通用话术名称" />
<el-input
disabled
v-model="formlist.phoneTemplateName"
placeholder="请输入通用话术名称"
/>
</el-form-item>
<br />
<!-- <el-form-item label="话术简介" prop="scriptIntroduction">
@ -164,58 +300,60 @@
/>
</el-form-item> -->
<!-- <br /> -->
<el-form-item label="电话推送" prop="phonePushSign">
<!-- <el-input
type="textarea"
v-model="formlist.routeHandleRemark"
placeholder="请输入任务处理信息"
/> -->
<!-- <el-switch
disabled
v-model="formlist.phonePushSign"
active-color="#13ce66"
active-value="1"
inactive-value="0"
>
</el-switch> -->
<el-radio disabled v-model="formlist.phonePushSign" label="1">已开启</el-radio>
<el-radio disabled v-model="formlist.phonePushSign" label="0">未开启</el-radio>
</el-form-item>
<br />
<el-form-item label="电话" prop="patientPhone">
<el-input disabled v-model="formlist.patientPhone" placeholder="请输入电话" />
</el-form-item>
<br />
<!-- <div style="background:red;width:200px;height:1600px"> -->
<el-form-item label="重复次数" prop="phoneRedialTimes">
<el-select v-model="formlist.phoneRedialTimes" disabled style="width: 200px">
<!-- <div v-for="(item,index) in optionslistS" :key="index">
<div>{{ item.label }}</div>
</div> -->
<el-input
disabled
v-model="formlist.phoneRedialTimes"
placeholder=""
/>
<!-- <el-select v-model="formlist.phoneRedialTimes" disabled style="width: 200px">
<el-option v-for="item in optionslistS" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
</el-select> -->
</el-form-item>
<br />
<el-form-item label="电话短信提醒" prop="phone">
<el-select disabled v-model="formlist.phoneMessageRemind" style="width: 200px">
<el-input
disabled
v-model="formlist.phoneMessageRemind"
placeholder=""
/>
<!-- <el-select disabled v-model="formlist.phoneMessageRemind" style="width: 200px">
<el-option v-for="item in optionslist" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
</el-select> -->
</el-form-item>
<br />
<el-form-item label="短信模板:" prop="phone">
<span class="spanname">
<message style="width: 200px;height:50px" @on-template="messageontemplateMESSAGE"
:templateId="formlist.phoneMessageTemplateId" :templateName="formlist.phoneMessageTemplateName">
<message
style="width: 200px; height: 50px"
@on-template="messageontemplateMESSAGE"
:templateId="formlist.phoneMessageTemplateId"
:templateName="formlist.phoneMessageTemplateName"
>
</message>
</span>
</el-form-item>
<br />
<el-form-item label="话术图" prop="phone">
<img :src="formlist.scriptFilePath" style="width: 250px; height: 200px" />
<!-- <img :src="formlist.scriptFilePath" style="width: 250px; height: 200px" /> -->
</el-form-item>
<br />
<el-form-item label="任务处理信息" prop="routeHandleRemark">
<el-input
type="textarea"
v-model="formlist.routeHandleRemark"
style="width: 500px"
placeholder="请输入任务处理信息"
/>
</el-form-item>
<br />
</el-form>
@ -290,33 +428,35 @@ export default {
routeHandlePerson: null,
routeHandleId: null,
},
parentDictCode: "",
};
},
created() {
this.id = this.$route.query.manageRouteId;
this.info();
this.infolistword()
this.infolistMESSAGE();
this.infolistword();
if (
this.$route.query.taskType == "QUESTIONNAIRE_SCALE" ||
this.$route.query.taskType == "ARTIFICIAL_FOLLOW_UP"
) {
this.questioninfo();
} else {
selectPhonePush(this.$route.query.manageRouteNodeId).then((response) => {
selectPhonePush(this.$route.query.manageRouteNodeId).then((response) => {
if (response.data) {
this.formlist = response.data;
if(this.formlist.phonePushSign==0){
this.formlist.phonePushSign='0'
}else if(this.formlist.phonePushSign==1){
this.formlist.phonePushSign='1'
this.formlist.phoneRedialTimes = response.data.phoneRedialTimes;
this.formlist.phoneMessageRemind = response.data.phoneMessageRemind;
// console.log(this.formlist, " this.formlist.phoneRedialTimes");
this.infolistMESSAGE();
this.infolistword()
if (this.formlist.phonePushSign == 0) {
this.formlist.phonePushSign = "0";
} else if (this.formlist.phonePushSign == 1) {
this.formlist.phonePushSign = "1";
}
}
});
}
},
methods: {
@ -326,6 +466,9 @@ export default {
getAgencytype(dictType).then((res) => {
this.optionslist = res.data;
// this.taskinfo();
this.formlist.phoneMessageRemind = this.optionslist.find(
(el) => el.dictValue == this.formlist.phoneMessageRemind
)?.dictLabel;
});
},
@ -341,6 +484,9 @@ export default {
var dictType = "redial_times";
getAgencytype(dictType).then((res) => {
this.optionslistS = res.data;
this.formlist.phoneRedialTimes = this.optionslistS.find(
(el) => el.dictValue == this.formlist.phoneRedialTimes
)?.dictLabel;
});
},
//
@ -351,7 +497,7 @@ export default {
timepickerselect(e, index) {
this.questiondata.questionSubjectList[index].fillBlanksAnswer = e;
},
radioGroupChange(e, item) { },
radioGroupChange(e, item) {},
// radio
radioChange(e, item, index) {
console.log(e, item, index, "选中某个单选框时");
@ -383,7 +529,6 @@ export default {
info() {
selectFollowPatientInfo(this.id).then((res) => {
this.list = res.data;
});
},
questioninfo() {
@ -532,10 +677,8 @@ export default {
(this.form.diseaseTypeId = this.formlist.diseaseTypeId),
(this.form.diseaseTypeName = this.formlist.diseaseTypeName),
(this.form.routeHandleRemark = this.formlist.routeHandleRemark);
(this.form.phoneConnectStatus = this.formlist.phoneConnectStatus);
(this.form.phoneMessageRemind = this.formlist.phoneMessageRemind);
this.form.phoneConnectStatus = this.formlist.phoneConnectStatus;
this.form.phoneMessageRemind = this.formlist.phoneMessageRemind;
(this.form.visitRecordId = this.$route.query.visitRecordId),
// console.log(this.form, 'this.form')
@ -680,7 +823,7 @@ export default {
.bottomheader {
overflow-y: scroll;
width: 99%;
height: 67vh;
height: 60vh;
background-color: #fff;
margin: 10px auto;
padding: 10px 20px;