This commit is contained in:
闫晓茹 2024-08-12 14:11:17 +08:00
parent 1f4c6a662f
commit 5db895aa37
5 changed files with 466 additions and 190 deletions

View File

@ -1,7 +1,8 @@
<template> <template>
<div class="header" v-if="signPatientRecordld != ''"> <div>
<div class="leftheader"> <div class="header" v-if="signPatientRecordld != ''">
<div class="dataall" v-if="form">数据总览</div> <div class="leftheader" >
<div class="dataall">数据总览</div>
<div class="background" :style="!fold ? 'height:calc(100vh - 283px)':'height:calc(100vh - 399px)'"> <div class="background" :style="!fold ? 'height:calc(100vh - 283px)':'height:calc(100vh - 399px)'">
<el-timeline> <el-timeline>
<el-timeline-item <el-timeline-item
@ -161,7 +162,8 @@
></questionopen> ></questionopen>
</div> </div>
</div> </div>
<el-empty description="暂无" style="width: 100%" v-else></el-empty>
<!-- <el-empty description="暂无" style="width: 100%" v-else></el-empty> -->
<!-- 话术预览弹框 --> <!-- 话术预览弹框 -->
<el-dialog <el-dialog
@ -203,6 +205,8 @@
</el-dialog> </el-dialog>
</div> </div>
<el-empty description="暂无" style="width: 100%" v-else></el-empty> <el-empty description="暂无" style="width: 100%" v-else></el-empty>
</div>
</template> </template>
<script> <script>
import { getList } from "@/api/manage/healthEducation"; import { getList } from "@/api/manage/healthEducation";
@ -339,6 +343,9 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.el-empty {
padding: 220px 0
}
::v-deep.el-timeline-item { ::v-deep.el-timeline-item {
padding: 0 25px 0 12px; padding: 0 25px 0 12px;
} }

View File

@ -50,7 +50,7 @@
<!-- <span class="mz" v-if="item.patientType == 'CONTRACTED_PATIENT'">签约</span> --> <!-- <span class="mz" v-if="item.patientType == 'CONTRACTED_PATIENT'">签约</span> -->
</div> </div>
<div class="diagnosis">诊断名称{{ item.mainDiagnosis }}</div> <div class="diagnosis">诊断名称{{ item.mainDiagnosis }}</div>
<div class="diagnosi">诊断状态:{{ item.patientSignStatus }}</div> <div class="diagnosi">诊断状态{{ item.patientSignStatus }}</div>
<div class="formitembutton" @click.stop="handleedit(item)"> <div class="formitembutton" @click.stop="handleedit(item)">
画像编辑 画像编辑
</div> </div>
@ -275,8 +275,7 @@ export default {
margin: 10px 0 0 10px; margin: 10px 0 0 10px;
width: 50px; width: 50px;
height: 50px; height: 50px;
cursor: pointer; cursor: pointer;
} }
.agesex { .agesex {
@ -370,6 +369,8 @@ export default {
.formitembutton:hover { .formitembutton:hover {
color: #2d56fb; color: #2d56fb;
border-bottom: 1px solid #2d56fb; border-bottom: 1px solid #2d56fb;
cursor: pointer;
} }
.name { .name {
@ -380,8 +381,7 @@ export default {
white-space: nowrap; /* 确保文本在一行内显示 */ white-space: nowrap; /* 确保文本在一行内显示 */
overflow: hidden; /* 超出容器部分隐藏 */ overflow: hidden; /* 超出容器部分隐藏 */
text-overflow: ellipsis; /* 超出部分显示省略号 */ text-overflow: ellipsis; /* 超出部分显示省略号 */
cursor: pointer; cursor: pointer;
} }
} }
} }

View File

@ -184,7 +184,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="住址" align="center" prop="address" /> <el-table-column label="住址" align="center" prop="address" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="100"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" @click="handleAuthRole(scope.row)">详情</el-button> <el-button size="mini" type="text" @click="handleAuthRole(scope.row)">详情</el-button>
<el-button size="mini" type="text" @click="handleDischarge(scope.row)">出院</el-button> <el-button size="mini" type="text" @click="handleDischarge(scope.row)">出院</el-button>

View File

@ -54,7 +54,7 @@
</span> </span>
</div> </div>
<div> <div>
<i class="el-icon-edit" @click.stop="edit"></i> <i class="el-icon-edit" style=" color: #1890FF;" @click.stop="edit">编辑</i>
<!-- <i class="el-icon-delete" @click.stop="delspecialDiseaseRoute"></i> --> <!-- <i class="el-icon-delete" @click.stop="delspecialDiseaseRoute"></i> -->
</div> </div>
</div> </div>
@ -669,6 +669,7 @@ export default {
.el-icon-edit { .el-icon-edit {
cursor: pointer; cursor: pointer;
// color: #1890FF;
} }
.el-icon-delete { .el-icon-delete {

View File

@ -8,8 +8,18 @@
</div> </div>
<div class="select"> <div class="select">
<span> 适用范围 </span> <span> 适用范围 </span>
<el-select v-model="updata.suitRange" placeholder="请选择" @change="changeoptions" disabled> <el-select
<el-option v-for="item in options" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue"> v-model="updata.suitRange"
placeholder="请选择"
@change="changeoptions"
disabled
>
<el-option
v-for="item in options"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
@ -21,30 +31,59 @@
<i class="el-icon-circle-plus-outline" @click="addlist"></i> <i class="el-icon-circle-plus-outline" @click="addlist"></i>
</div> </div>
<el-timeline> <el-timeline>
<el-timeline-item v-for="(item, index) in lists" :key="index" :color="listindex == index ? '#409EFF' : ''"> <el-timeline-item
v-for="(item, index) in lists"
:key="index"
:color="listindex == index ? '#409EFF' : ''"
>
<div class="top"> <div class="top">
<div class="toptop"> <div class="toptop">
<el-select v-model="item.routeNodeName" style="width: 100px"> <el-select v-model="item.routeNodeName" style="width: 100px">
<el-option v-for="item in parentDictCodelist" :key="item.dictValue" :label="item.dictLabel" <el-option
:value="item.dictValue"> v-for="item in parentDictCodelist"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>
</el-option> </el-option>
</el-select> </el-select>
<el-input v-model="item.routeNodeDay" type="number" style="width: 70px" :min="0"></el-input> <el-input
v-model="item.routeNodeDay"
type="number"
style="width: 70px"
:min="0"
></el-input>
<span></span> <span></span>
</div> </div>
<div> <div>
<i class="el-icon-delete" @click="delitem(item, index)"></i> <i class="el-icon-delete" @click="delitem(item, index)"></i>
<i class="el-icon-circle-plus-outline" @click="additem(item)"></i> <i
class="el-icon-circle-plus-outline"
@click="additem(item)"
></i>
</div> </div>
</div> </div>
<el-card v-for="(uitem, uindex) in item.list" :key="uitem.id" <el-card
v-for="(uitem, uindex) in item.list"
:key="uitem.id"
@click.native="bottomclickevent(uitem, index, uindex, item)" @click.native="bottomclickevent(uitem, index, uindex, item)"
:class="listindex == index && itemindex == uindex ? 'cards' : ''"> :class="listindex == index && itemindex == uindex ? 'cards' : ''"
>
<h3 style="height: 20px">{{ uitem.taskTypeName }}</h3> <h3 style="height: 20px">{{ uitem.taskTypeName }}</h3>
<el-tag v-if="uitem.routeCheckStatus == 'AGREE'" class="routeCheckStatus">已审核</el-tag> <el-tag
<el-tag v-else-if="uitem.routeCheckStatus == 'DISAGREE'" type="danger" v-if="uitem.routeCheckStatus == 'AGREE'"
class="routeCheckStatus">不同意</el-tag> class="routeCheckStatus"
<el-tag v-else type="warning" class="routeCheckStatus">未审核</el-tag> >已审核</el-tag
>
<el-tag
v-else-if="uitem.routeCheckStatus == 'DISAGREE'"
type="danger"
class="routeCheckStatus"
>不同意</el-tag
>
<el-tag v-else type="warning" class="routeCheckStatus"
>未审核</el-tag
>
<p style="height: 16px">{{ uitem.taskSubdivisionName }}</p> <p style="height: 16px">{{ uitem.taskSubdivisionName }}</p>
</el-card> </el-card>
</el-timeline-item> </el-timeline-item>
@ -54,22 +93,43 @@
<div class="topform"> <div class="topform">
<el-form ref="form" :inline="true" :model="form" class="form"> <el-form ref="form" :inline="true" :model="form" class="form">
<el-form-item label="任务类型" prop=""> <el-form-item label="任务类型" prop="">
<el-select v-model="form.taskType" style="width: 150px" @change="changeTaskType"> <el-select
<el-option v-for="item in selectTaskTypeList" :key="item.taskTypeCode" :label="item.taskTypeName" v-model="form.taskType"
:value="item.taskTypeCode"> style="width: 150px"
@change="changeTaskType"
>
<el-option
v-for="item in selectTaskTypeList"
:key="item.taskTypeCode"
:label="item.taskTypeName"
:value="item.taskTypeCode"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="任务细分" prop=""> <el-form-item label="任务细分" prop="">
<el-select v-model="form.taskSubdivision" style="width: 150px" @change="changetaskSubdivision"> <el-select
<el-option v-for="item in taskPartitionList" :key="item.taskPartitionCode" v-model="form.taskSubdivision"
:label="item.taskPartitionName" :value="item.taskPartitionCode"> style="width: 150px"
@change="changetaskSubdivision"
>
<el-option
v-for="item in taskPartitionList"
:key="item.taskPartitionCode"
:label="item.taskPartitionName"
:value="item.taskPartitionCode"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="任务节点类型" prop=""> <el-form-item label="任务节点类型" prop="">
<el-select v-model="form.taskNodeType" style="width: 150px"> <el-select v-model="form.taskNodeType" style="width: 150px">
<el-option v-for="item in taskNodeTypeList" :key="item.id" :label="item.name" :value="item.code"> <el-option
v-for="item in taskNodeTypeList"
:key="item.id"
:label="item.name"
:value="item.code"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -81,40 +141,88 @@
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item label="二级分类描述" prop=""> <el-form-item label="二级分类描述" prop="">
<el-input v-model="form.secondClassifyDescribe" style="width: 110px" disabled></el-input> <el-input
v-model="form.secondClassifyDescribe"
style="width: 110px"
disabled
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="执行时间" prop=""> <el-form-item label="执行时间" prop="">
<el-time-select v-model="form.executionTime" style="width: 120px" placeholder="选择时间" disabled> <el-time-select
v-model="form.executionTime"
style="width: 120px"
placeholder="选择时间"
disabled
>
</el-time-select> </el-time-select>
</el-form-item> </el-form-item>
<el-form-item label="问卷库模板选择" prop="" v-if="form.taskNodeType == 'QUESTIONNAIRE_SCALE'"> <el-form-item
<question @on-template="questionontemplate" :templateId="form.templateId" label="问卷库模板选择"
:templateName="form.templateName"></question> prop=""
v-if="form.taskNodeType == 'QUESTIONNAIRE_SCALE'"
>
<question
@on-template="questionontemplate"
:templateId="form.templateId"
:templateName="form.templateName"
></question>
</el-form-item> </el-form-item>
<span style="display: inline-block; width: 10px" v-if="form.taskNodeType == 'QUESTIONNAIRE_SCALE' && form.templateId <span
"> style="display: inline-block; width: 10px"
v-if="
form.taskNodeType == 'QUESTIONNAIRE_SCALE' && form.templateId
"
>
<el-button @click.native="looklist">预览</el-button> <el-button @click.native="looklist">预览</el-button>
</span> </span>
<el-form-item label="开启人工随访" v-if="form.taskNodeType == 'QUESTIONNAIRE_SCALE'" style="margin-left: 75px"> <el-form-item
<el-switch v-model="form.phoneDialMethod" active-color="#13ce66" active-value="COMMON" inactive-value=" "> label="开启人工随访"
v-if="form.taskNodeType == 'QUESTIONNAIRE_SCALE'"
style="margin-left: 75px"
>
<el-switch
v-model="form.phoneDialMethod"
active-color="#13ce66"
active-value="COMMON"
inactive-value=" "
>
</el-switch> </el-switch>
</el-form-item> </el-form-item>
<el-form-item label="宣教库模板选择" prop="" v-if="form.taskNodeType == 'PROPAGANDA_ARTICLE'"> <el-form-item
<propaganda @on-template="propagandaontemplate" :templateId="form.templateId" label="宣教库模板选择"
:templateName="form.templateName"></propaganda> prop=""
v-if="form.taskNodeType == 'PROPAGANDA_ARTICLE'"
>
<propaganda
@on-template="propagandaontemplate"
:templateId="form.templateId"
:templateName="form.templateName"
></propaganda>
</el-form-item> </el-form-item>
<span style="display: inline-block; width: 10px" v-if="form.taskNodeType == 'PROPAGANDA_ARTICLE' && form.templateId <span
"> style="display: inline-block; width: 10px"
v-if="
form.taskNodeType == 'PROPAGANDA_ARTICLE' && form.templateId
"
>
<el-button @click="imagepreviews">预览</el-button> <el-button @click="imagepreviews">预览</el-button>
</span> </span>
</el-form> </el-form>
</div> </div>
<!-- 宣教 --> <!-- 宣教 -->
<el-dialog title="宣教预览" :visible.sync="imageScriptpreviews" width="60%"> <el-dialog
<div class="imageScriptpreviews" v-if="formview && title="宣教预览"
form.taskNodeType == 'PROPAGANDA_ARTICLE' && :visible.sync="imageScriptpreviews"
form.templateId width="60%"
"> >
<div
class="imageScriptpreviews"
v-if="
formview &&
form.taskNodeType == 'PROPAGANDA_ARTICLE' &&
form.templateId
"
>
<div class="titletop">文章模板:{{ formview.propagandaTitle }}</div> <div class="titletop">文章模板:{{ formview.propagandaTitle }}</div>
<div class="bodytop"> <div class="bodytop">
<div class="titledata">{{ formview.propagandaTitle }}</div> <div class="titledata">{{ formview.propagandaTitle }}</div>
@ -122,29 +230,48 @@
<img :src="baseUrl + formview.propagandaCoverPath" alt="" /> <img :src="baseUrl + formview.propagandaCoverPath" alt="" />
<div class="know">知识卡片</div> <div class="know">知识卡片</div>
<div class="knowlist"> <div class="knowlist">
<Editorxj v-model="formview.propagandaContent" :min-height="192" /> <Editorxj
v-model="formview.propagandaContent"
:min-height="192"
/>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="imageScriptpreviews = false">关闭</el-button> <el-button type="primary" @click="imageScriptpreviews = false"
>关闭</el-button
>
</span> </span>
</el-dialog> </el-dialog>
<!-- 问卷 --> <!-- 问卷 -->
<el-dialog title="问卷预览" :visible.sync="lookquestionlist" width="40%"> <el-dialog
title="问卷预览"
:visible.sync="lookquestionlist"
width="40%"
>
<questionopennew :lookitemnew="lookitemnew"></questionopennew> <questionopennew :lookitemnew="lookitemnew"></questionopennew>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="lookquestionlist = false">关闭</el-button> <el-button type="primary" @click="lookquestionlist = false"
>关闭</el-button
>
</span> </span>
</el-dialog> </el-dialog>
<div class="bottomform"> <div class="bottomform">
<wangeditor v-show="form.taskNodeType != 'QUESTIONNAIRE_SCALE' && <wangeditor
form.taskNodeType != 'PROPAGANDA_ARTICLE' && v-show="
form.taskNodeType != 'PHONE_OUTBOUND' form.taskNodeType != 'QUESTIONNAIRE_SCALE' &&
" style="width: 100%" :nodeContent="form.nodeContent" :taskPartitionDictId="taskPartitionDictId" form.taskNodeType != 'PROPAGANDA_ARTICLE' &&
:taskSubdivision="form.taskSubdivision" :specialDiseaseNodeId="form.specialDiseaseNodeId" form.taskNodeType != 'PHONE_OUTBOUND'
@on-nodeContent="onNodeContent" ref="wangeditor" /> "
style="width: 100%"
:nodeContent="form.nodeContent"
:taskPartitionDictId="taskPartitionDictId"
:taskSubdivision="form.taskSubdivision"
:specialDiseaseNodeId="form.specialDiseaseNodeId"
@on-nodeContent="onNodeContent"
ref="wangeditor"
/>
<div class="card" v-show="form.taskNodeType != 'PHONE_OUTBOUND'"> <div class="card" v-show="form.taskNodeType != 'PHONE_OUTBOUND'">
<div class="flex"> <div class="flex">
@ -154,11 +281,19 @@
</div> </div>
<div class="pushMethod"> <div class="pushMethod">
模板 模板
<message @on-template="messageontemplate" :templateId="form.messageTemplateId" <message
:templateName="form.messageTemplateName"></message> @on-template="messageontemplate"
:templateId="form.messageTemplateId"
:templateName="form.messageTemplateName"
></message>
</div> </div>
<div class="pushMethod"> <div class="pushMethod">
<el-switch v-model="form.messagePushSign" active-color="#13ce66" active-value="1" inactive-value="0"> <el-switch
v-model="form.messagePushSign"
active-color="#13ce66"
active-value="1"
inactive-value="0"
>
</el-switch> </el-switch>
</div> </div>
</div> </div>
@ -176,13 +311,21 @@
<div class="pushMethod"> <div class="pushMethod">
模板 模板
<span> <span>
<officialAccount @on-template="officialAccountontemplate" :templateId="form.officialTemplateId" <officialAccount
:templateName="form.officialTemplateName"> @on-template="officialAccountontemplate"
:templateId="form.officialTemplateId"
:templateName="form.officialTemplateName"
>
</officialAccount> </officialAccount>
</span> </span>
</div> </div>
<div class="pushMethod"> <div class="pushMethod">
<el-switch v-model="form.officialPushSign" active-color="#13ce66" active-value="1" inactive-value="0"> <el-switch
v-model="form.officialPushSign"
active-color="#13ce66"
active-value="1"
inactive-value="0"
>
</el-switch> </el-switch>
</div> </div>
</div> </div>
@ -200,13 +343,21 @@
<div class="pushMethod"> <div class="pushMethod">
模板 模板
<span> <span>
<miniProgram @on-template="miniProgramtemplate" :templateId="form.appletTemplateId" <miniProgram
:templateName="form.appletTemplateName"> @on-template="miniProgramtemplate"
:templateId="form.appletTemplateId"
:templateName="form.appletTemplateName"
>
</miniProgram> </miniProgram>
</span> </span>
</div> </div>
<div class="pushMethod"> <div class="pushMethod">
<el-switch v-model="form.appletPushSign" active-color="#13ce66" active-value="1" inactive-value="0"> <el-switch
v-model="form.appletPushSign"
active-color="#13ce66"
active-value="1"
inactive-value="0"
>
</el-switch> </el-switch>
</div> </div>
</div> </div>
@ -219,12 +370,19 @@
<el-input v-model="form.appletPromptDescription" class="textarea" disabled></el-input> <el-input v-model="form.appletPromptDescription" class="textarea" disabled></el-input>
</div> --> </div> -->
</div> </div>
<div class="card" style="margin-top: -30px" v-show="form.taskNodeType == 'PHONE_OUTBOUND'"> <div
class="card"
style="margin-top: -30px"
v-show="form.taskNodeType == 'PHONE_OUTBOUND'"
>
<div class="flex"> <div class="flex">
<div class="pushMethod"> <div class="pushMethod">
推送方式 推送方式
<span> <span>
<el-radio-group v-model="form.phoneDialMethod" @change="changephoneDialMethod"> <el-radio-group
v-model="form.phoneDialMethod"
@change="changephoneDialMethod"
>
<el-radio label="COMMON">人工电话</el-radio> <el-radio label="COMMON">人工电话</el-radio>
<el-radio label="AI">自动外呼</el-radio> <el-radio label="AI">自动外呼</el-radio>
</el-radio-group> </el-radio-group>
@ -234,11 +392,23 @@
<div class="flexs"> <div class="flexs">
<div class="pushMethods"> <div class="pushMethods">
话术模板 话术模板
<span :class="form.templateId && form.phoneDialMethod == 'COMMON' ? 'spanname' : ''"> <span
<scripts @on-template="messageontemplateword" :templateId="form.phoneTemplateId" :class="
:templateName="form.phoneTemplateName"></scripts> form.templateId && form.phoneDialMethod == 'COMMON'
? 'spanname'
: ''
"
>
<scripts
@on-template="messageontemplateword"
:templateId="form.phoneTemplateId"
:templateName="form.phoneTemplateName"
></scripts>
</span> </span>
<span style="display: inline-block; width: 10px" v-if="form.phoneTemplateId"> <span
style="display: inline-block; width: 10px"
v-if="form.phoneTemplateId"
>
<el-button @click="look">预览</el-button> <el-button @click="look">预览</el-button>
</span> </span>
<!-- <br/> --> <!-- <br/> -->
@ -267,9 +437,17 @@
<div class="pushMethod"> <div class="pushMethod">
重拨次数 重拨次数
<span> <span>
<el-select v-model="form.phoneRedialTimes" style="width: 100px" @change="changephoneRedialTimes"> <el-select
<el-option v-for="item in optionslistS" :key="item.dictValue" :label="item.dictLabel" v-model="form.phoneRedialTimes"
:value="item.dictValue"> style="width: 100px"
@change="changephoneRedialTimes"
>
<el-option
v-for="item in optionslistS"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>
</el-option> </el-option>
</el-select> </el-select>
</span> </span>
@ -277,8 +455,11 @@
<div class="pushMethod"> <div class="pushMethod">
时间间隔() 时间间隔()
<span> <span>
<el-input v-model.number="form.phoneTimeInterval" oninput="value=value.replace(/[^\d]/g,'')" <el-input
style="width: 100px"> v-model.number="form.phoneTimeInterval"
oninput="value=value.replace(/[^\d]/g,'')"
style="width: 100px"
>
<!-- <el-option <!-- <el-option
v-for="item in optionslistS" v-for="item in optionslistS"
:key="item.dictValue" :key="item.dictValue"
@ -291,32 +472,63 @@
</div> </div>
<div class="pushMethod"> <div class="pushMethod">
短信提醒 短信提醒
<el-select v-model="form.phoneMessageRemind" style="width: 150px"> <el-select
<el-option v-for="item in optionslist" :key="item.dictValue" :label="item.dictLabel" v-model="form.phoneMessageRemind"
:value="item.dictValue"> style="width: 150px"
>
<el-option
v-for="item in optionslist"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
<div class="pushMethod"> <div class="pushMethod">
短信模板 短信模板
<span :class="form.phoneMessageRemind == 'NOT_SEND_MESSAGE' ? 'spanname' : ''"> <span
<message style="width: 200px" @on-template="messageontemplateMESSAGE" :class="
:templateId="form.phoneMessageTemplateId" :templateName="form.phoneMessageTemplateName"></message> form.phoneMessageRemind == 'NOT_SEND_MESSAGE'
? 'spanname'
: ''
"
>
<message
style="width: 200px"
@on-template="messageontemplateMESSAGE"
:templateId="form.phoneMessageTemplateId"
:templateName="form.phoneMessageTemplateName"
></message>
</span> </span>
</div> </div>
</div> </div>
<!-- 话术模板内容 --> <!-- 话术模板内容 -->
<el-dialog title="话术预览" :visible.sync="lookNodeContent" width="90%"> <el-dialog
<Scriptpreview :phoneNodeContent="phoneNodeContent"></Scriptpreview> title="话术预览"
:visible.sync="lookNodeContent"
width="90%"
>
<Scriptpreview
:phoneNodeContent="phoneNodeContent"
></Scriptpreview>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="lookNodeContent = false">关闭</el-button> <el-button type="primary" @click="lookNodeContent = false"
>关闭</el-button
>
</span> </span>
</el-dialog> </el-dialog>
<!-- 问卷模板内容 --> <!-- 问卷模板内容 -->
<el-dialog title="问卷预览" :visible.sync="lookquestionname" width="40%"> <el-dialog
title="问卷预览"
:visible.sync="lookquestionname"
width="40%"
>
<questionopennew :lookitemnew="lookitemnew"></questionopennew> <questionopennew :lookitemnew="lookitemnew"></questionopennew>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="lookquestionname = false">关闭</el-button> <el-button type="primary" @click="lookquestionname = false"
>关闭</el-button
>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
@ -325,19 +537,42 @@
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="TemporaryStorage"> </el-button> <el-button @click="TemporaryStorage"> </el-button>
<el-button type="primary" @click="dialogVisible = true" v-if="form.specialDiseaseNodeId">审核完成 {{ agreeNumber ? <el-button
agreeNumber : "0" }} / type="primary"
{{ totalNumber ? totalNumber : "0" }}</el-button> @click="dialogVisible = true"
v-if="form.specialDiseaseNodeId"
>审核完成 {{ agreeNumber ? agreeNumber : "0" }} /
{{ totalNumber ? totalNumber : "0" }}</el-button
>
</div> </div>
<el-dialog title="提交审核完成" :visible.sync="dialogVisible" width="30%" :before-close="handleClose"> <el-dialog
<el-form ref="routeform" :model="routeform" label-width="120px" :rules="rules"> title="提交审核完成"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose"
>
<el-form
ref="routeform"
:model="routeform"
label-width="120px"
:rules="rules"
>
<el-form-item label="节点审核状态" prop="routeCheckStatus"> <el-form-item label="节点审核状态" prop="routeCheckStatus">
<el-radio v-model="routeform.routeCheckStatus" label="AGREE">同意</el-radio> <el-radio v-model="routeform.routeCheckStatus" label="AGREE"
<el-radio v-model="routeform.routeCheckStatus" label="DISAGREE">不同意</el-radio> >同意</el-radio
>
<el-radio v-model="routeform.routeCheckStatus" label="DISAGREE"
>不同意</el-radio
>
</el-form-item> </el-form-item>
<div class="txxt"> <div class="txxt">
<el-form-item label="节点审核备注"> <el-form-item label="节点审核备注">
<el-input type="textarea" :rows="2" placeholder="请输入节点审核备注" v-model="routeform.routeCheckRemark"> <el-input
type="textarea"
:rows="2"
placeholder="请输入节点审核备注"
v-model="routeform.routeCheckRemark"
>
</el-input> </el-input>
</el-form-item> </el-form-item>
</div> </div>
@ -420,7 +655,6 @@ export default {
suitRange: "", suitRange: "",
routeName: "", routeName: "",
specialDiseaseNodeList: [], specialDiseaseNodeList: [],
}, },
form: { form: {
nodeContent: "<p></p>", nodeContent: "<p></p>",
@ -440,10 +674,10 @@ export default {
messagePreview: "", messagePreview: "",
appletRemindContent: "", appletRemindContent: "",
appletPromptDescription: "", appletPromptDescription: "",
taskNodeType: '', taskNodeType: "",
phoneDialMethod: '', phoneDialMethod: "",
phoneMessageRemind: '', phoneMessageRemind: "",
phoneTimeInterval: '', phoneTimeInterval: "",
phoneRedialTimes: "", phoneRedialTimes: "",
}, },
itemindex: 0, itemindex: 0,
@ -462,21 +696,21 @@ export default {
taskPartitionDictId: "", taskPartitionDictId: "",
taskNodeTypeList: [ taskNodeTypeList: [
{ {
name: '电话外呼', name: "电话外呼",
code: 'PHONE_OUTBOUND', code: "PHONE_OUTBOUND",
}, },
{ {
name: '问卷量表', name: "问卷量表",
code: 'QUESTIONNAIRE_SCALE', code: "QUESTIONNAIRE_SCALE",
}, },
{ {
name: '宣教文案', name: "宣教文案",
code: 'PROPAGANDA_ARTICLE', code: "PROPAGANDA_ARTICLE",
}, },
{ {
name: '文字提醒', name: "文字提醒",
code: 'TEXT_REMIND', code: "TEXT_REMIND",
} },
], ],
}; };
}, },
@ -509,14 +743,16 @@ export default {
// phoneTemplateId // phoneTemplateId
}, },
}, },
mounted() { }, mounted() {},
methods: { methods: {
// //
changephoneRedialTimes(e) { changephoneRedialTimes(e) {
if (this.optionslistS.find(el => el.dictValue == e)?.dictLabel != '不重播') { if (
this.form.phoneTimeInterval = 30 this.optionslistS.find((el) => el.dictValue == e)?.dictLabel != "不重播"
}else{ ) {
this.form.phoneTimeInterval = '' this.form.phoneTimeInterval = 30;
} else {
this.form.phoneTimeInterval = "";
} }
}, },
// //
@ -602,7 +838,14 @@ export default {
this.parentDictCode = this.options.find( this.parentDictCode = this.options.find(
(el) => el.dictValue == this.updata.suitRange (el) => el.dictValue == this.updata.suitRange
)?.dictCode; )?.dictCode;
this.changelisy(); list(this.parentDictCode).then((res) => {
this.parentDictCodelist = res.rows;
res.rows.forEach((e) => {
this.lists.forEach((el) => {
el.routeNodeName = e.dictValue;
});
});
});
this.updata.routeName = this.$route.query.routeName; this.updata.routeName = this.$route.query.routeName;
this.updata.specialDiseaseRouteId = this.$route.query.id; this.updata.specialDiseaseRouteId = this.$route.query.id;
selectSpecialDisease(this.$route.query.id).then((res) => { selectSpecialDisease(this.$route.query.id).then((res) => {
@ -641,7 +884,10 @@ export default {
); );
this.form = this.lists[0].list[0]; this.form = this.lists[0].list[0];
// //
if (this.form.taskNodeType == "PROPAGANDA_ARTICLE" && this.form.templateId) { if (
this.form.taskNodeType == "PROPAGANDA_ARTICLE" &&
this.form.templateId
) {
getPropaganda(this.form.templateId).then((response) => { getPropaganda(this.form.templateId).then((response) => {
this.formview = response.data; this.formview = response.data;
}); });
@ -682,10 +928,10 @@ export default {
taskNodeType: "", taskNodeType: "",
appletRemindContent: "", appletRemindContent: "",
appletPromptDescription: "", appletPromptDescription: "",
taskNodeType: '', taskNodeType: "",
phoneDialMethod: '', phoneDialMethod: "",
phoneMessageRemind: '', phoneMessageRemind: "",
phoneTimeInterval: '', phoneTimeInterval: "",
phoneRedialTimes: "", phoneRedialTimes: "",
}, },
], ],
@ -774,8 +1020,10 @@ export default {
messageontemplateword(item) { messageontemplateword(item) {
this.form.phoneTemplateId = item.templateId; this.form.phoneTemplateId = item.templateId;
this.form.phoneTemplateName = item.templateName; this.form.phoneTemplateName = item.templateName;
this.lists[this.listindex].list[this.itemindex].scriptInfoId = item.scriptInfoId this.lists[this.listindex].list[this.itemindex].scriptInfoId =
this.lists[this.listindex].list[this.itemindex].phoneTemplateId = item.phoneTemplateId item.scriptInfoId;
this.lists[this.listindex].list[this.itemindex].phoneTemplateId =
item.phoneTemplateId;
// this.form.messagePreview = item.templateContent; // this.form.messagePreview = item.templateContent;
this.phoneNodeContent = item.phoneNodeContent; this.phoneNodeContent = item.phoneNodeContent;
}, },
@ -811,23 +1059,26 @@ export default {
this.lists.forEach((e) => { this.lists.forEach((e) => {
e.list.length > 0 e.list.length > 0
? e.list.forEach((el) => { ? e.list.forEach((el) => {
el.routeNodeDay = e.routeNodeDay; console.log(el, "el");
el.routeNodeName = e.routeNodeName;
if (el.phoneDialMethod == "COMMON" && el.templateId) { // return;
el.phonePushSign = "1"; el.routeNodeDay = e.routeNodeDay;
el.taskNodeType = "QUESTIONNAIRE_SCALE"; el.routeNodeName = e.routeNodeName;
} else if ( if (el.phoneDialMethod == "COMMON" && el.templateId) {
el.phoneDialMethod == "COMMON" && el.phonePushSign = "1";
el.phoneTemplateId el.taskNodeType = "QUESTIONNAIRE_SCALE";
) { } else if (
el.phonePushSign = "1"; el.phoneDialMethod == "COMMON" &&
el.taskNodeType = "PHONE_OUTBOUND"; el.phoneTemplateId
} else if (el.phoneDialMethod == "AI" && el.phoneTemplateId) { ) {
el.taskNodeType = "PHONE_OUTBOUND"; el.phonePushSign = "1";
el.phonePushSign = "1"; el.taskNodeType = "PHONE_OUTBOUND";
} } else if (el.phoneDialMethod == "AI" && el.phoneTemplateId) {
this.updata.specialDiseaseNodeList.push(el); el.taskNodeType = "PHONE_OUTBOUND";
}) el.phonePushSign = "1";
}
this.updata.specialDiseaseNodeList.push(el);
})
: ""; : "";
}); });
// this.updata.specialDiseaseNodeList = // this.updata.specialDiseaseNodeList =
@ -839,28 +1090,46 @@ export default {
// !e.taskSubdivision && // !e.taskSubdivision &&
// !e.taskStatus // !e.taskStatus
// ); // );
// return // return;
specialDiseaseNode(this.updata).then((res) => { this.updata.specialDiseaseNodeList.forEach((ele) => {
let wangeditorlist = []; loading.close();
if (localStorage.getItem("wangeditorlist")) {
wangeditorlist = JSON.parse(localStorage.getItem("wangeditorlist")); if (ele.taskNodeType == "PHONE_OUTBOUND") {
wangeditorlist = wangeditorlist.filter( if (ele.phoneDialMethod == null || ele.phoneDialMethod == "") {
(e) => e.specialDiseaseNodeId == this.form.specialDiseaseNodeId this.$message.error("请先选择推送方式");
); } else if (
localStorage.setItem( ele.phoneTemplateId == null ||
"wangeditorlist", ele.phoneTemplateId == ""
JSON.stringify(wangeditorlist) ) {
); this.$message.error("请先选择话术模板");
} else {
specialDiseaseNode(this.updata).then((res) => {
let wangeditorlist = [];
if (localStorage.getItem("wangeditorlist")) {
wangeditorlist = JSON.parse(
localStorage.getItem("wangeditorlist")
);
wangeditorlist = wangeditorlist.filter(
(e) =>
e.specialDiseaseNodeId == this.form.specialDiseaseNodeId
);
localStorage.setItem(
"wangeditorlist",
JSON.stringify(wangeditorlist)
);
}
this.info();
loading.close();
this.$modal.msgSuccess("暂存成功!");
this.listindex = 0;
this.itemindex = 0;
});
setTimeout(() => {
loading.close();
}, 3000);
}
} }
this.info();
loading.close();
this.$modal.msgSuccess("暂存成功!");
this.listindex = 0;
this.itemindex = 0;
}); });
setTimeout(() => {
loading.close();
}, 3000);
}); });
}, },
// //
@ -901,10 +1170,7 @@ export default {
}); });
this.listindex = index; this.listindex = index;
this.itemindex = uindex; this.itemindex = uindex;
if ( if (uitem.taskNodeType == "PROPAGANDA_ARTICLE" && uitem.templateId) {
uitem.taskNodeType == "PROPAGANDA_ARTICLE" &&
uitem.templateId
) {
getPropaganda(uitem.templateId).then((response) => { getPropaganda(uitem.templateId).then((response) => {
this.formview = response.data; this.formview = response.data;
}); });
@ -915,9 +1181,7 @@ export default {
questionname(uitem.templateId).then((res) => { questionname(uitem.templateId).then((res) => {
this.lookitemnew = res.data; this.lookitemnew = res.data;
}); });
} else if ( } else if (uitem.taskNodeType == "PHONE_OUTBOUND") {
uitem.taskNodeType == "PHONE_OUTBOUND"
) {
if (uitem.flowScheme) { if (uitem.flowScheme) {
this.phoneNodeContent = uitem.flowScheme; this.phoneNodeContent = uitem.flowScheme;
} else { } else {
@ -926,7 +1190,7 @@ export default {
flowScheme: null, flowScheme: null,
nodes: [], nodes: [],
edges: [], edges: [],
}) });
} }
} }
this.taskPartitionList = []; this.taskPartitionList = [];
@ -995,7 +1259,7 @@ export default {
background: "rgba(0, 0, 0, 0.7)", background: "rgba(0, 0, 0, 0.7)",
}); });
if (!type) { if (!type) {
this.form.taskStatus = '' this.form.taskStatus = "";
} }
this.form.taskSubdivisionName = this.taskPartitionList?.find( this.form.taskSubdivisionName = this.taskPartitionList?.find(
(e) => e.taskPartitionCode == code (e) => e.taskPartitionCode == code
@ -1077,10 +1341,10 @@ export default {
messagePushSign: "0", messagePushSign: "0",
messagePreview: "", messagePreview: "",
taskNodeType: "", taskNodeType: "",
taskNodeType: '', taskNodeType: "",
phoneDialMethod: '', phoneDialMethod: "",
phoneMessageRemind: '', phoneMessageRemind: "",
phoneTimeInterval: '', phoneTimeInterval: "",
phoneRedialTimes: "", phoneRedialTimes: "",
}, },
], ],
@ -1105,10 +1369,10 @@ export default {
appletPromptDescription: "", appletPromptDescription: "",
messagePreview: "", messagePreview: "",
taskNodeType: "", taskNodeType: "",
taskNodeType: '', taskNodeType: "",
phoneDialMethod: '', phoneDialMethod: "",
phoneMessageRemind: '', phoneMessageRemind: "",
phoneTimeInterval: '', phoneTimeInterval: "",
phoneRedialTimes: "", phoneRedialTimes: "",
}); });
}, },
@ -1137,8 +1401,8 @@ export default {
spinner: "el-icon-loading", spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)", background: "rgba(0, 0, 0, 0.7)",
}); });
console.log(this.form) console.log(this.form);
if (this.form.taskNodeType != 'PHONE_OUTBOUND') { if (this.form.taskNodeType != "PHONE_OUTBOUND") {
if (this.form.messagePushSign == "1") { if (this.form.messagePushSign == "1") {
if (!this.form.messageTemplateId) { if (!this.form.messageTemplateId) {
this.$message.error("请选择短信模板"); this.$message.error("请选择短信模板");
@ -1162,7 +1426,11 @@ export default {
this.$message.error("请选择推送方式"); this.$message.error("请选择推送方式");
return loading.close(); return loading.close();
} }
if (this.optionslist.find(e => e.dictValue == this.form.phoneMessageRemind)?.dictLabel == '未接通发短信') { if (
this.optionslist.find(
(e) => e.dictValue == this.form.phoneMessageRemind
)?.dictLabel == "未接通发短信"
) {
if (!this.form.phoneMessageTemplateId) { if (!this.form.phoneMessageTemplateId) {
this.$message.error("请选择短信模板"); this.$message.error("请选择短信模板");
return loading.close(); return loading.close();
@ -1199,8 +1467,8 @@ export default {
this.info(); this.info();
this.handleClose(); this.handleClose();
this.$modal.msgSuccess("审核成功!"); this.$modal.msgSuccess("审核成功!");
this.listindex = 0 this.listindex = 0;
this.itemindex = 0 this.itemindex = 0;
} }
}); });
} }
@ -1279,7 +1547,6 @@ export default {
height: 40px; height: 40px;
overflow: visible; overflow: visible;
} }
} }
::v-deep .el-card__body { ::v-deep .el-card__body {
@ -1471,11 +1738,11 @@ export default {
} }
.list { .list {
margin: 20px auto; margin: 10px auto;
width: 100%; width: 100%;
background-color: #f2f4f5; background-color: #f2f4f5;
display: flex; display: flex;
padding-top: 15px; padding-top: 10px;
justify-content: space-evenly; justify-content: space-evenly;
.timelist { .timelist {
@ -1500,7 +1767,7 @@ export default {
} }
.texts { .texts {
width: 73%; width: 74%;
// height: 680px; // height: 680px;
height: calc(100vh - 294px); height: calc(100vh - 294px);
overflow: auto; overflow: auto;
@ -1554,6 +1821,7 @@ export default {
} }
.container { .container {
padding: 20px; // padding: 20px;
padding: 16px 0 16px 16px;
} }
</style> </style>