<template>
|
<div class="Questionnairemanagement">
|
<!-- 上侧栏 -->
|
<div class="sidecolumn">
|
<div>
|
<el-steps simple :active="Editprogress">
|
<el-step
|
icon="el-icon-edit"
|
title="基础信息"
|
description="选择模版、形式等基础信息"
|
></el-step>
|
<el-step
|
icon="el-icon-user"
|
title="任务主体"
|
description="在本部选择服务患者"
|
></el-step>
|
</el-steps>
|
</div>
|
</div>
|
<!-- 下侧数据 -->
|
<div class="leftvlue" style="margin: 0 20px">
|
<!-- 基本信息 -->
|
<div v-if="Editprogress == 1">
|
<el-alert title="选择模版、形式等基础信息" type="success" effect="dark">
|
</el-alert>
|
<div class="leftvlue-jbxx">
|
<!-- 基础信息 -->
|
<div class="examine-jic">
|
<div class="headline">
|
<div>基础信息</div>
|
</div>
|
<div class="jic-value">
|
<el-form ref="form" :model="form" label-width="105px">
|
<el-row :gutter="20">
|
<el-col :span="12"
|
><el-form-item label="任务名称">
|
<el-input
|
style="width: 220px"
|
v-model="form.taskName"
|
placeholder="请输入任务名称"
|
/> </el-form-item
|
></el-col>
|
<el-col :span="8"
|
><el-form-item label="模版名称">
|
<el-input
|
style="width: 220px"
|
:disabled="true"
|
v-model="form.templatename"
|
placeholder="请在下列选择"
|
/> </el-form-item
|
></el-col>
|
<el-col :span="4">
|
<el-button
|
type="primary"
|
icon="el-icon-edit"
|
@click="drawermb = true"
|
circle
|
></el-button>
|
</el-col>
|
</el-row>
|
|
<el-form-item label="任务描述">
|
<el-input
|
type="textarea"
|
v-model="form.taskDesc"
|
placeholder="请输入任务描述"
|
/>
|
</el-form-item>
|
<el-form-item label="发送设置:">
|
<el-radio-group v-model="form.sendType">
|
<el-radio :label="1">时间段发送</el-radio>
|
<el-radio :label="3">时间点发送</el-radio>
|
<el-radio :label="2">即刻发送</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="发送日期:" v-if="form.sendType == 1">
|
<el-date-picker
|
v-model="daytime"
|
@change="changeTimeday"
|
type="daterange"
|
range-separator="至"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期"
|
value-format="yyyy-MM-dd"
|
>
|
</el-date-picker>
|
</el-form-item>
|
|
<el-form-item label="发送时间点:" v-if="form.sendType == 3">
|
<div style="display: flex">
|
<div style="margin-right: 10px">
|
<el-date-picker
|
v-model="time4"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
@change="Totaldate"
|
type="datetime"
|
placeholder="选择日期时间"
|
>
|
</el-date-picker>
|
</div>
|
</div>
|
</el-form-item>
|
|
<el-form-item label="发送时间段:" v-if="form.sendType == 1">
|
<div style="display: flex">
|
<div style="margin-right: 10px">
|
<span style="font-size: 18px; margin-right: 10px"
|
>时间段一</span
|
>
|
<el-time-picker
|
is-range
|
arrow-control
|
@change="changeTime"
|
v-model="time1"
|
range-separator="至"
|
start-placeholder="开始时间"
|
end-placeholder="结束时间"
|
placeholder="选择时间范围"
|
value-format="HH:mm:ss"
|
>
|
</el-time-picker>
|
</div>
|
<div style="margin-right: 10px">
|
<span style="font-size: 18px; margin-right: 10px"
|
>时间段二</span
|
>
|
<el-time-picker
|
is-range
|
arrow-control
|
@change="changeTime"
|
v-model="time2"
|
range-separator="至"
|
start-placeholder="开始时间"
|
end-placeholder="结束时间"
|
placeholder="选择时间范围"
|
value-format="HH:mm:ss"
|
>
|
</el-time-picker>
|
</div>
|
<div style="margin-right: 10px">
|
<span style="font-size: 18px; margin-right: 10px"
|
>时间段三</span
|
>
|
<el-time-picker
|
is-range
|
arrow-control
|
@change="changeTime"
|
v-model="time3"
|
range-separator="至"
|
start-placeholder="开始时间"
|
end-placeholder="结束时间"
|
placeholder="选择时间范围"
|
value-format="HH:mm:ss"
|
>
|
</el-time-picker>
|
</div>
|
</div>
|
</el-form-item>
|
<el-form-item label="服务形式">
|
<el-checkbox-group v-model="checkList">
|
<el-checkbox
|
v-for="(item, index) in checkboxlist"
|
:key="index"
|
:label="item.value"
|
>
|
{{ item.label }}</el-checkbox
|
>
|
</el-checkbox-group>
|
</el-form-item>
|
</el-form>
|
</div>
|
</div>
|
<div class="examine-jic">
|
<div class="headline">
|
<div>变量匹配量参</div>
|
</div>
|
<div class="examine-jic">
|
<div class="jic-value">
|
<el-row :gutter="20">
|
<el-table :data="variableList" style="width: 100%">
|
<el-table-column
|
prop="name"
|
align="center"
|
label="变量名称"
|
>
|
</el-table-column>
|
<el-table-column prop="value" align="center" label="匹配符">
|
</el-table-column>
|
<el-table-column label="替换值" align="center">
|
<template slot-scope="scope">
|
<el-input
|
:disabled="scope.row.default"
|
v-model="scope.row.fill"
|
placeholder="请输入内容"
|
></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作" align="center">
|
<template slot-scope="scope">
|
<!-- <el-button
|
size="mini"
|
@click="variableEdit(scope.$index, scope.row)"
|
>编辑</el-button
|
> -->
|
<el-button
|
size="mini"
|
type="danger"
|
@click="variableDelete(scope.$index, scope.row)"
|
>删除</el-button
|
>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-row>
|
</div>
|
</div>
|
</div>
|
</div>
|
<el-button type="success" @click="nextstep('ruleForm')">{{
|
quote ? "立即创建" : "任务详情配置"
|
}}</el-button>
|
<el-button @click="resetForm('ruleForm')">重置</el-button>
|
</div>
|
<!-- 任务详情 -->
|
<div v-if="Editprogress == 2">
|
<el-alert title="在本阶段选择宣教病人" type="success" effect="dark">
|
</el-alert>
|
<div class="leftvlue-jbxx">
|
<div class="examine-jic">
|
<div class="headline">
|
<div>患者列表</div>
|
</div>
|
<div class="examine-jic">
|
<div class="jic-value">
|
<el-row :gutter="20">
|
<el-row :gutter="10" class="mb8">
|
<el-col :span="1.5">
|
<el-select
|
v-model="patientqueryParams.allhosp"
|
placeholder="请选择新增类型"
|
>
|
<el-option
|
v-for="item in taskoptions"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-col>
|
<el-col :span="1.5">
|
<el-button
|
type="primary"
|
plain
|
icon="el-icon-plus"
|
size="medium"
|
:disabled="!patientqueryParams.allhosp"
|
@click="handleAddpatient"
|
>新增</el-button
|
>
|
</el-col>
|
|
<el-col :span="1.5">
|
<el-button
|
type="danger"
|
plain
|
icon="el-icon-delete"
|
size="medium"
|
:disabled="multiple"
|
@click="handleDelete"
|
>删除</el-button
|
>
|
</el-col>
|
|
<!-- <el-col :span="1.5"> </el-col> -->
|
</el-row>
|
<!-- 选中患者列表 -->
|
<SFtable
|
@details="detailhz"
|
@handleUpdate="handleUpdate"
|
:currentList="overallCase"
|
:tableLabel="tableLabelhz"
|
:serialnumber="false"
|
:searchTrue="true"
|
:multiplechoice="false"
|
:controlxz="false"
|
:typeinfo="2"
|
/>
|
<pagination
|
v-show="total > 0"
|
:total="total"
|
:page.sync="topqueryParams.pageNum"
|
:limit.sync="topqueryParams.pageSize"
|
@pagination="getList"
|
/>
|
</el-row>
|
</div>
|
</div>
|
</div>
|
</div>
|
<el-button type="primary" @click="laststep()">上一步</el-button>
|
<el-button type="success" @click="submitForm('ruleForm')">{{
|
quote ? "立即创建" : "确认任务配置"
|
}}</el-button>
|
<el-button @click="resetForm('ruleForm')">重置</el-button>
|
</div>
|
</div>
|
<!-- 添加患者 -->
|
<el-dialog
|
title="选择患者"
|
:visible.sync="dialogVisiblepatient"
|
width="70%"
|
:before-close="handleClosehz"
|
:close-on-click-modal="false"
|
>
|
<div class="examine-jic">
|
<div class="jic-value">
|
<el-row :gutter="20">
|
<!--用户数据-->
|
<el-form
|
:model="patientqueryParams"
|
ref="queryForm"
|
size="small"
|
:inline="true"
|
v-show="showSearch"
|
label-width="98px"
|
>
|
<el-form-item label="患者名称:">
|
<el-input
|
v-model="patientqueryParams.name"
|
@keyup.enter.native="handleQuery"
|
></el-input>
|
</el-form-item>
|
|
<el-form-item>
|
<el-button
|
type="primary"
|
icon="el-icon-search"
|
size="medium"
|
@click="handleQuery"
|
>搜索</el-button
|
>
|
<el-button
|
icon="el-icon-refresh"
|
size="medium"
|
@click="resetQuery"
|
>取消创建</el-button
|
>
|
</el-form-item>
|
</el-form>
|
<!-- 选择患者列表 -->
|
<SFtable
|
ref="multipleTable"
|
@handleUpdate="handleUpdate"
|
@handleSelectionChange="handleSelectionChange"
|
:currentList="patientuserList"
|
:tableLabel="tableLabelhz"
|
:serialnumber="false"
|
:center="false"
|
:typeinfo="3"
|
/>
|
</el-row>
|
<pagination
|
v-show="patienttotal > 0"
|
:total="patienttotal"
|
:page.sync="patientqueryParams.pageNum"
|
:limit.sync="patientqueryParams.pageSize"
|
@pagination="handleAddpatient"
|
/>
|
</div>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="dialogVisiblepatient = false">取 消</el-button>
|
<el-button type="primary" @click="AddDispatchpatients"
|
>确定添加</el-button
|
>
|
</span>
|
</el-dialog>
|
<el-dialog title="模版预览" :visible.sync="previewtf" width="60%">
|
<div class="preview-left">
|
<!-- 单选 -->
|
<div
|
class="scriptTopic-dev"
|
v-for="item in questionList"
|
:key="item.sort"
|
v-if="item.scriptType == 1"
|
>
|
<div class="dev-text">
|
{{ item.sort }}、[单选]<span>{{ item.scriptContent }}</span>
|
</div>
|
<div class="dev-xx">
|
<el-radio-group v-model="item.remark">
|
<el-radio
|
v-for="(items, index) in item.svyLibTemplateTargetoptions"
|
:key="index"
|
:label="index"
|
>{{ items.optioncontent }}</el-radio
|
>
|
</el-radio-group>
|
</div>
|
</div>
|
<!-- 多选 -->
|
<div
|
class="scriptTopic-dev"
|
v-for="item in questionList"
|
v-if="item.scriptType == 2"
|
>
|
<div class="dev-text">
|
{{ item.sort }}、[多选]<span>{{ item.scriptContent }}</span>
|
</div>
|
<div class="dev-xx">
|
<el-checkbox-group v-model="multiplechoice">
|
<el-checkbox
|
v-for="items in item.svyLibTemplateTargetoptions"
|
:key="items.optioncontent"
|
:label="items.optioncontent"
|
>
|
{{ items.optioncontent }}
|
</el-checkbox>
|
</el-checkbox-group>
|
</div>
|
</div>
|
<!-- 填空 -->
|
<div
|
class="scriptTopic-dev"
|
v-for="item in questionList"
|
:key="item.sort"
|
v-if="item.scriptType == 3"
|
>
|
<div class="dev-text">
|
{{ item.sort }}、[填空]<span>{{ item.scriptContent }}</span>
|
</div>
|
<div class="dev-xx">
|
<el-input placeholder="请输入答案" v-model="item.radioas" clearable>
|
</el-input>
|
</div>
|
</div>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="previewGo">前往模版详情修改</el-button>
|
<el-button type="primary" @click="previewFn">确认使用</el-button>
|
</span>
|
</el-dialog>
|
<el-drawer
|
title="问卷内容列表"
|
:visible.sync="drawermb"
|
direction="rtl"
|
size="50%"
|
>
|
<div class="headline"></div>
|
<div class="examine-jic">
|
<div class="jic-value">
|
<el-row :gutter="20">
|
<!--用户数据-->
|
|
<el-form
|
:model="topqueryParams"
|
ref="queryForm"
|
size="small"
|
:inline="true"
|
v-show="showSearch"
|
label-width="98px"
|
>
|
<el-form-item label="问卷名称">
|
<el-input
|
v-model="topqueryParams.name"
|
></el-input> </el-form-item
|
><el-form-item label="通知名称">
|
<el-input v-model="topqueryParams.name"></el-input>
|
</el-form-item>
|
<el-form-item label="问卷主题">
|
<el-input v-model="topqueryParams.name"></el-input>
|
</el-form-item>
|
|
<el-form-item label="问卷类型" prop="status">
|
<el-select v-model="topqueryParams.topic" placeholder="请选择">
|
<el-option
|
v-for="item in taskoptions"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="适用形式" prop="status">
|
<el-select v-model="topqueryParams.topica" placeholder="请选择">
|
<el-option
|
v-for="item in taskoptions"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
|
<el-form-item label="适用科室" prop="status">
|
<el-select v-model="topqueryParams.topicd" placeholder="请选择">
|
<el-option
|
v-for="item in topicoptions"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item>
|
<el-button
|
type="primary"
|
icon="el-icon-search"
|
size="medium"
|
@click="handleQuery"
|
>搜索</el-button
|
>
|
<el-button
|
icon="el-icon-refresh"
|
size="medium"
|
@click="resetQuery"
|
>重置</el-button
|
>
|
</el-form-item>
|
</el-form>
|
<el-divider></el-divider>
|
<!-- 选择模版列表 -->
|
<SFtable
|
@selectfn="selectfn"
|
:currentList="userList"
|
:tableLabel="tableLabel"
|
:serialnumber="false"
|
:controlsc="false"
|
:multiplechoice="false"
|
:typeinfo="1"
|
/>
|
<pagination
|
v-show="total > 0"
|
:total="total"
|
:page.sync="topqueryParams.pageNum"
|
:limit.sync="topqueryParams.pageSize"
|
@pagination="Acquisitiontype"
|
/>
|
</el-row>
|
</div>
|
</div>
|
</el-drawer>
|
</div>
|
</template>
|
|
<script>
|
import { messagelistpatient } from "@/api/patient/homepage";
|
import store from "@/store";
|
import {
|
getTaskpatient,
|
getlibrarylist,
|
getFollowuplist,
|
getQtemplatelist,
|
TaskQuestioncomit,
|
Questionnairetaskget,
|
gethetaskinfo,
|
delhetaskinfo,
|
Editsingletask,
|
} from "@/api/AiCentre/index";
|
import { listDept } from "@/api/system/dept";
|
|
import SFtable from "@/components/SFtable"; //表格组件
|
|
export default {
|
name: "ServiceDetails",
|
data() {
|
return {
|
title: "宣教内容列表",
|
currenttype: 1, //1宣教2门诊3出院4复诊5体检6问卷
|
id: "", //
|
previewid: "", //任务模版传递id
|
libName: "",
|
overallCase: [], //选择患者总
|
allpids: [],
|
libId: null, //模板库模版id
|
Editprogress: 1, //编辑进度
|
drawermb: false, //选择模版弹窗
|
previewtf: false, //预览
|
loading: false, // 遮罩层
|
patientloading: false, // 遮罩层
|
dialogVisiblepatient: false, //添加患者弹框
|
radio: 1,
|
checkboxlist: [],
|
tableLabel: [],
|
questionList: [],
|
// 患者表单
|
tableLabelhz: [
|
{ label: "序号", width: "", prop: "patid" },
|
{ label: "患者名称", width: "", prop: "name" },
|
{ label: "性别", width: "", prop: "sex" },
|
{ label: "年龄", width: "", prop: "age" },
|
{ label: "就诊科室", width: "", prop: "deptName" },
|
{ label: "入院日期", width: "", prop: "inhosptime" },
|
{ label: "创建人(缺)", width: "", prop: "update_by" },
|
],
|
|
tableLabelwj: [
|
{ label: "序号", width: "", prop: "svyid" },
|
{ label: "问卷名称", width: "", prop: "svyname" },
|
{ label: "问卷概述", width: "", prop: "description" },
|
{ label: "修改日期", width: "", prop: "updateTime" },
|
{ label: "创建人", width: "", prop: "createBy" },
|
],
|
// 变量
|
tableLabelvariable: [
|
{ label: "变量名称", width: "", prop: "variablename" },
|
{ label: "匹配符", width: "", prop: "character" },
|
{ label: "替换值", width: "", prop: "Replacementvalue" },
|
],
|
preachform: [
|
{ label: "多媒体", value: 1 },
|
{ label: "纸质", value: 2 },
|
{ label: "电话", value: 3 },
|
{ label: "短信", value: 4 },
|
{ label: "微信公众号", value: 5 },
|
{ label: "微信小程序", value: 6 },
|
{ label: "支付宝", value: 7 },
|
{ label: "智能小程序", value: 8 },
|
{ label: "钉钉", value: 9 },
|
{ label: "线下(纸质)", value: 10 },
|
{ label: "线上(短信/钉钉的文本、问卷链接)", value: 11 },
|
],
|
// 时间处理
|
daytime: [], //日期
|
applydaytime: [], //计算日期
|
time1: "", //上午时间段
|
time2: "", //下午时间段
|
time3: "", //晚上时间段
|
time4: "", //晚上时间段
|
topqueryParams: {
|
pageNum: 1, //
|
pageSize: 10,
|
},
|
checkList: [],
|
deliverytopqueryParams: {
|
pageNum: 1, //
|
pageSize: 10,
|
},
|
patientqueryParams: {
|
pageNum: 1, //
|
pageSize: 10,
|
},
|
topicoptions: [{ children: [{ children: [] }] }],
|
showSearch: true, //
|
total: 0, //
|
sontotal: 0, //
|
patienttotal: 0, //
|
// 选中数组
|
ids: [],
|
// 非单个禁用
|
single: true,
|
// 非多个禁用
|
multiple: true,
|
// 用户表格数据
|
userList: [], //模版列表
|
multiplechoice: [], //多选结果
|
patientuserList: [], //选择患者列表
|
sonuserList: [], //选中患者列表
|
delvariableList: [], //删除变量临时存储
|
variableList: [
|
{
|
name: "姓名",
|
value: "${name}",
|
fill: "派发时自动匹配",
|
default: true,
|
},
|
{
|
name: "地址",
|
value: "${dzz}",
|
fill: "派发时自动匹配",
|
default: true,
|
},
|
{
|
name: "电话",
|
value: "${dhh}",
|
fill: "派发时自动匹配",
|
default: true,
|
},
|
], //变量列表
|
transitionList: [
|
{
|
name: "姓名",
|
value: "${name}",
|
fill: "派发时自动匹配",
|
default: true,
|
},
|
{
|
name: "地址",
|
value: "${dzz}",
|
fill: "派发时自动匹配",
|
default: true,
|
},
|
{
|
name: "电话",
|
value: "${dhh}",
|
fill: "派发时自动匹配",
|
default: true,
|
},
|
],
|
variableListTime: [],
|
tasktopic: null, //新增类型
|
SelectPatientslist: [],
|
form: {
|
patTaskRelevances: [],
|
sendType: 1,
|
templatename: "",
|
templateid: null,
|
libtemplateid: null,
|
},
|
taskoptions: [
|
{
|
value: "1",
|
label: "出院病人",
|
},
|
{
|
value: "2",
|
label: "门诊病人",
|
},
|
{
|
value: "3",
|
label: "体检病人",
|
},
|
],
|
quote: false,
|
};
|
},
|
components: { SFtable },
|
|
created() {
|
this.id = this.$route.query.id;
|
this.form.type = this.$route.query.type;
|
this.form.typename = this.$route.query.typename;
|
this.form.serviceType = Number(this.$route.query.serviceType);
|
this.listDept();
|
this.Acquisitiontype();
|
this.Getdetails();
|
},
|
|
methods: {
|
// {
|
// 姓名: { "${name}": "龙傲天" },
|
// 地址: { "${dzz}": "龙宫" },
|
// 电话: { "${dhh}": "八个八" },
|
// }
|
// 变量转换对象转数组
|
convertFormat1ToFormat2(data) {
|
let result = [];
|
for (let key in data) {
|
let innerKey = Object.keys(data[key])[0];
|
result.push({
|
name: key,
|
value: innerKey,
|
fill: data[key][innerKey],
|
});
|
}
|
return result;
|
},
|
// 数组转对象
|
convertFormat2ToFormat1(data) {
|
let result = {};
|
data.forEach((item) => {
|
let innerObj = {};
|
innerObj[item.value] = item.fill;
|
result[item.name] = innerObj;
|
});
|
return result;
|
},
|
// 获取当前类型
|
Acquisitiontype() {
|
let queryParams = {
|
pageNum: this.topqueryParams.pageNum,
|
pageSize: this.topqueryParams.pageSize,
|
isavailable: "",
|
};
|
this.currenttype = this.$route.query.type;
|
this.title = "问卷内容列表";
|
this.tableLabel = this.tableLabelwj;
|
if (this.form.serviceType == 1) {
|
this.checkboxlist = [
|
{
|
value: "1",
|
label: "人工",
|
},
|
|
{
|
value: "2",
|
label: "纸质",
|
},
|
];
|
} else if (this.form.serviceType == 6) {
|
this.checkboxlist = [
|
{
|
value: "3",
|
label: "电话",
|
},
|
{
|
value: "4",
|
label: "短信",
|
},
|
{
|
value: "5",
|
label: "微信公众号",
|
},
|
{
|
value: "6",
|
label: "微信小程序",
|
},
|
|
{
|
value: "8",
|
label: "智能机器人",
|
},
|
];
|
} else if (this.form.serviceType == 7) {
|
this.checkboxlist = [
|
{
|
value: "1",
|
label: "人工",
|
},
|
{
|
value: "2",
|
label: "纸质",
|
},
|
{
|
value: "3",
|
label: "电话",
|
},
|
{
|
value: "4",
|
label: "短信",
|
},
|
{
|
value: "5",
|
label: "微信公众号",
|
},
|
{
|
value: "6",
|
label: "微信小程序",
|
},
|
];
|
}
|
getQtemplatelist(queryParams).then((response) => {
|
this.userList = response.rows;
|
this.total = response.total;
|
});
|
},
|
nextstep() {
|
if (this.Editprogress <= 3) {
|
return this.Editprogress++;
|
}
|
},
|
// 保存
|
submitForm(formName) {
|
this.form.preachform = this.checkList.join(",");
|
|
if (!this.form.patTaskRelevances[0]) {
|
this.$modal.msgError("请选择病人");
|
return;
|
}
|
const filteredArray = this.variableList.filter(
|
(item) =>
|
item.name !== "姓名" && item.name !== "电话" && item.name !== "地址"
|
);
|
console.log(filteredArray, "存前变量");
|
this.form.textParam = this.convertFormat2ToFormat1(filteredArray);
|
if (this.form.taskid) {
|
this.form.isoperation = 2;
|
} else {
|
this.form.isoperation = 1;
|
}
|
if (!this.form.type) {
|
this.form.type = this.$route.query.type;
|
}
|
Editsingletask(this.form).then((res) => {
|
if (res.code == 200) {
|
if (this.form.taskid) {
|
this.$modal.msgSuccess("新增成功");
|
} else {
|
this.$modal.msgSuccess("修改成功");
|
}
|
this.$router.push({
|
path: "/followvisit/tasklist",
|
query: { tasktopic: 6 },
|
});
|
}
|
});
|
},
|
// ----------------------表格子组件事件
|
// 确认选择模版放入任务模版
|
selectfn(row, type) {
|
// 模版情况下获取模版信息
|
if (type == 1) {
|
this.libName = row.svyname;
|
this.libId = row.svyid;
|
console.log(row, "row");
|
this.Tasktemplate = row;
|
this.questionList = row.svyTemplateLibScripts;
|
this.previewtf = true;
|
this.previewid = row.svyid;
|
this.Variablehandling(row.svyTemplateLibScripts, 1);
|
} else if (type == 2) {
|
} else if (type == 3) {
|
}
|
},
|
// 处理问题层变量
|
Variablehandling(arr, type) {
|
let Variablist = [];
|
if (type == 1) {
|
// 循环问题
|
arr.forEach((res) => {
|
// 循环选项
|
JSON.parse(res.otherdata).forEach((item) => {
|
if (item.default != 1) {
|
Variablist.push({
|
value: item.variate,
|
fill: "",
|
name: item.variatename,
|
});
|
}
|
});
|
});
|
console.log(Variablist, "Variablist");
|
const Aarr = Variablist.filter(
|
(obj, index, self) =>
|
index ===
|
self.findIndex((t) => t.name === obj.name && t.value === obj.value)
|
);
|
|
this.variableList = this.transitionList.concat(Aarr);
|
// this.form.textParam = this.convertFormat2ToFormat1(this.variableList);
|
}
|
},
|
// 子任务二级弹框
|
handleAddpatient(row) {
|
console.log(this.overallCase, "ssaaa");
|
this.allpids = [];
|
this.overallCase.forEach((item) => {
|
this.allpids.push(item.patid);
|
});
|
if (this.patientqueryParams.allhosp == 1) {
|
this.tableLabelhz = [
|
{ label: "序号", width: "", prop: "patid" },
|
{ label: "患者名称", width: "", prop: "name" },
|
{ label: "性别", width: "", prop: "sex" },
|
{ label: "年龄", width: "", prop: "age" },
|
{ label: "主任医师", width: "", prop: "drname" },
|
{ label: "就诊科室", width: "", prop: "deptName" },
|
{ label: "入院日期", width: "", prop: "inhosptime" },
|
{ label: "创建人", width: "", prop: "createBy" },
|
];
|
} else if (this.patientqueryParams.allhosp == 2) {
|
this.tableLabelhz = [
|
{ label: "序号", width: "", prop: "patid" },
|
{ label: "患者名称", width: "", prop: "name" },
|
{ label: "性别", width: "", prop: "sex" },
|
{ label: "年龄", width: "", prop: "age" },
|
{ label: "诊断", width: "", prop: "diagname" },
|
{ label: "就诊科室", width: "", prop: "deptName" },
|
{ label: "入院日期", width: "", prop: "inhosptime" },
|
{ label: "创建人", width: "", prop: "createBy" },
|
];
|
}
|
if (this.allpids[0]) {
|
this.patientqueryParams.pids = this.allpids;
|
console.log(this.patientqueryParams.pids);
|
} else {
|
this.patientqueryParams.pids = null;
|
}
|
|
getTaskpatient(this.patientqueryParams).then((response) => {
|
console.log(response);
|
this.patientuserList = response.rows;
|
this.patienttotal = response.total;
|
this.loading = false;
|
this.Restorecheck();
|
});
|
this.dialogVisiblepatient = true;
|
},
|
handleUpdate() {},
|
handleDelete() {},
|
handleExport() {},
|
|
// 选择患者表数据
|
handleSelectionChange(selection) {
|
console.log("多选患者");
|
this.SelectPatientslist = selection;
|
this.multiple = !selection.length;
|
|
// 赋值给整体选中数组
|
this.SelectPatientslist.forEach((item) => {
|
const isExist = this.overallCase.find((obj) => obj.name == item.name);
|
if (!isExist) {
|
item.isoperation = 1;
|
item.patid = item.id;
|
item.hospType = this.patientqueryParams.allhosp;
|
this.overallCase.push(item);
|
this.form.patTaskRelevances.push(item);
|
}
|
});
|
},
|
// 切换页后恢复选中
|
Restorecheck() {
|
console.log(this.overallCase, "this.overallCase");
|
const allid = this.overallCase.map((item) => item.patid);
|
const overlap = this.patientuserList.filter((value) => {
|
return allid.includes(value.patid);
|
});
|
// 保持ids和当前页面的同步性
|
this.SelectPatientslist = overlap;
|
console.log(this.SelectPatientslist, "进入分页SelectPatientslist");
|
|
this.toggleSelection(overlap);
|
},
|
// 挂载选择状态
|
toggleSelection(rows) {
|
if (rows) {
|
this.decision = true;
|
this.$nextTick(() => {
|
rows.forEach((row) => {
|
this.$refs.multipleTable.toggleRowSelection(row, true);
|
});
|
this.decision = false;
|
});
|
console.log(123);
|
} else {
|
this.$refs.multipleTable.clearSelection();
|
}
|
},
|
// 删除选中患者
|
detailhz(row, info) {
|
this.$modal
|
.confirm('是否确认删除患者"' + row.name + '"的服务项?')
|
.then(() => {
|
let indexa = this.overallCase.indexOf(row);
|
let indexb = this.form.patTaskRelevances.indexOf(row);
|
this.overallCase.splice(indexa, 1);
|
this.form.patTaskRelevances[indexb].isoperation = 3;
|
this.$modal.msgSuccess("删除成功");
|
});
|
},
|
getList() {},
|
handleQuery() {
|
this.handleAddpatient();
|
},
|
resetQuery() {},
|
handleClosehz() {
|
this.dialogVisiblepatient = false;
|
},
|
// 上一步
|
laststep() {
|
this.Editprogress--;
|
},
|
// 提交表单
|
resetForm(formName) {
|
this.$refs[formName].resetFields();
|
},
|
// 预览模版
|
PreviewTemplate() {},
|
Acknowledgereference() {
|
this.quote = true;
|
},
|
// 获取详情
|
Getdetails() {
|
if (this.id) {
|
Questionnairetaskget({ taskid: this.id }).then((res) => {
|
let filteredArray = "";
|
console.log(2233);
|
if (res.code == 200) {
|
this.form = res.data;
|
|
this.form.patTaskRelevances = this.form.patTaskRelevances
|
? this.form.patTaskRelevances
|
: [];
|
this.overallCase = this.form.patTaskRelevances.concat();
|
this.checkList = this.form.preachform.split(",");
|
console.log(this.form.showDate, "this.form");
|
this.daytime = this.form.showDate.split(",");
|
if (this.form.showTimeMorn) {
|
if (this.form.sendType == 3) {
|
this.time4 = this.form.showTimeMorn;
|
} else {
|
this.time1 = this.form.showTimeMorn.split(",");
|
}
|
}
|
if (this.form.showTimeNoon)
|
this.time2 = this.form.showTimeNoon.split(",");
|
if (this.form.showTimeNight)
|
this.time3 = this.form.showTimeNight.split(",");
|
console.log(1122);
|
filteredArray = this.convertFormat1ToFormat2(this.form.textParam);
|
this.variableList = this.transitionList.concat(filteredArray);
|
} else {
|
this.$modal.msgError(res.code);
|
}
|
});
|
}
|
},
|
// 获取科室列表
|
listDept() {
|
listDept().then((res) => {
|
this.topicoptions = this.handleTree(res.data, "deptId");
|
console.log(this.topicoptions, "topicoptions");
|
});
|
},
|
// 新增派送患者
|
AddDispatchpatients() {
|
// this.SelectPatientslist.forEach((item) => {
|
// item.isoperation = 1;
|
// });
|
// this.form.patTaskRelevances.push(...this.SelectPatientslist);
|
// this.overallCase.push(...this.SelectPatientslist);
|
this.dialogVisiblepatient = false;
|
},
|
|
variableDelete(index, row) {
|
this.variableList.splice(index, 1);
|
row.isoperation = 3;
|
this.delvariableList.push(row);
|
console.log(index, row);
|
},
|
// 时间----------
|
changeTime(row) {
|
console.log(row, "时间");
|
this.processingTime();
|
},
|
Totaldate(row) {
|
console.log(row, "时间");
|
this.form.sendTimeslot = [{ begantime: row, endtime: row, xh: 1 }];
|
this.form.showTimeMorn = row;
|
console.log(this.form.sendTimeslot, "时间");
|
},
|
changeTimeday(row) {
|
const startDate = new Date(row[0]);
|
const endDate = new Date(row[1]);
|
this.applydaytime = this.getDates(startDate, endDate);
|
this.processingTime();
|
},
|
getDates(startDate, endDate) {
|
const dates = [];
|
let currentDate = new Date(startDate);
|
|
while (currentDate <= endDate) {
|
dates.push(this.$moment(currentDate).format("YYYY-MM-DD"));
|
currentDate.setDate(currentDate.getDate() + 1);
|
}
|
|
return dates;
|
},
|
// 时间最终处理方法
|
processingTime() {
|
const combinedData = [];
|
let serialnumber = 1;
|
if (this.time3[0]) {
|
serialnumber = 3;
|
} else if (this.time2[0]) {
|
serialnumber = 2;
|
} else if (this.time1[0]) {
|
serialnumber = 1;
|
} else {
|
return;
|
}
|
|
for (let i = 0; i < this.applydaytime.length; i++) {
|
combinedData.push({
|
begantime: `${this.applydaytime[i]} ${this.time1[0]}`,
|
endtime: `${this.applydaytime[i]} ${this.time1[1]}`,
|
xh: serialnumber * i + 1,
|
});
|
if (serialnumber >= 2) {
|
combinedData.push({
|
begantime: `${this.applydaytime[i]} ${this.time2[0]}`,
|
endtime: `${this.applydaytime[i]} ${this.time2[1]}`,
|
xh: serialnumber * i + 2,
|
});
|
}
|
if (serialnumber >= 3) {
|
combinedData.push({
|
begantime: `${this.applydaytime[i]} ${this.time3[0]}`,
|
endtime: `${this.applydaytime[i]} ${this.time3[1]}`,
|
xh: serialnumber * i + 3,
|
});
|
}
|
}
|
this.form.sendTimeslot = combinedData;
|
// 展示数据临时存储日期、早、中、晚
|
|
this.form.showDate = this.daytime.join(",");
|
if (this.time1) this.form.showTimeMorn = this.time1.join(",");
|
if (this.time2) this.form.showTimeNoon = this.time2.join(",");
|
if (this.time3) this.form.showTimeNight = this.time3.join(",");
|
console.log(combinedData, "combinedData");
|
},
|
// 查看模版
|
previewGo() {
|
this.$router.push({
|
path: "/knowledge/tpuconfigurat/",
|
query: { id: this.previewid, task: true, data: this.form },
|
});
|
},
|
previewFn() {
|
let id = this.Tasktemplate.id;
|
this.Tasktemplate.id = null;
|
console.log(this.Tasktemplate);
|
|
this.Tasktemplate.svyTemplateLibScripts.forEach((item) => {
|
item.svyTaskTemplateTargetoptions = item.svyLibTemplateTargetoptions;
|
});
|
this.Tasktemplate.svyTaskTemplateScriptVOS =
|
this.Tasktemplate.svyTemplateLibScripts;
|
this.Tasktemplate.templateid = id;
|
this.Tasktemplate.isoperation = 1;
|
TaskQuestioncomit(this.Tasktemplate).then((response) => {
|
console.log(response);
|
this.previewtf = false;
|
this.form.templateid = response.data;
|
this.form.libtemplateid = this.libId;
|
this.form.templatename = this.libName;
|
this.$modal.msgSuccess("选择模版成功");
|
});
|
},
|
// 处理服务形式
|
formatFn(type) {
|
console.log(this.preachform, "preachform");
|
console.log(this.checkList, "checklist");
|
let list = [];
|
let formlist = [];
|
if (type == 1) {
|
this.preachform.forEach((item) => {
|
this.checkList.forEach((obj) => {
|
if (item.label == obj) {
|
list.push(item.value);
|
}
|
});
|
});
|
console.log(list, "list");
|
this.form.preachform = list.join(",");
|
} else {
|
console.log(this.form.preachform, "this.form.preachform");
|
formlist = this.form.preachform.split(",");
|
console.log(11);
|
this.preachform.forEach((item) => {
|
formlist.forEach((obj) => {
|
if (item.value == obj) {
|
list.push(item.label);
|
}
|
});
|
});
|
this.checkList = list;
|
}
|
},
|
},
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
.Questionnairemanagement {
|
}
|
.leftvlue-jbxx {
|
margin-top: 10px;
|
}
|
.sidecolumn {
|
width: 100%;
|
// min-height: 12vh;
|
margin: 20px;
|
margin-bottom: 0;
|
padding: 30px;
|
background: #edf1f7;
|
border: 1px solid #dcdfe6;
|
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
|
0 0 6px 0 rgba(0, 0, 0, 0.04);
|
}
|
.leftvlue {
|
// display: flex;
|
// flex: 1;
|
width: 100%;
|
margin-top: 20px;
|
// margin: 20px;
|
padding: 30px;
|
background: #ffff;
|
border: 1px solid #dcdfe6;
|
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
|
0 0 6px 0 rgba(0, 0, 0, 0.04);
|
}
|
.examine-jic {
|
margin: 20px;
|
.headline {
|
font-size: 24px;
|
border-left: 5px solid #41a1be;
|
padding-left: 5px;
|
margin-bottom: 10px;
|
display: flex;
|
justify-content: space-between;
|
.Add-details {
|
font-size: 18px;
|
color: #02a7f0;
|
cursor: pointer;
|
}
|
}
|
.jic-value {
|
font-size: 20px;
|
border-top: 1px solid #a7abac;
|
padding: 10px;
|
margin-bottom: 10px;
|
.details-jic {
|
padding: 10px 15px;
|
border: 1px solid #dcdfe6;
|
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
|
0 0 6px 0 rgba(0, 0, 0, 0.04);
|
.details-title {
|
display: flex;
|
justify-content: space-between;
|
margin-bottom: 10px;
|
div:nth-child(2) {
|
color: #02a7f0;
|
cursor: pointer;
|
}
|
}
|
.details-renw {
|
background: #e4ebfc;
|
padding: 15px 5px;
|
border-radius: 5px;
|
margin-bottom: 20px;
|
}
|
}
|
}
|
}
|
// .leftvlue-jbxx {
|
// margin-bottom: 50px;
|
// font-size: 20px;
|
// span {
|
// position: absolute;
|
// right: 80px;
|
// }
|
// .demo-cascader {
|
// margin-right: 20px;
|
// }
|
// .PreviewTemplate {
|
// color: #02a7f0;
|
// cursor: pointer;
|
// font-size: 20px;
|
// margin: 0 20px;
|
// }
|
// }
|
.preview-left {
|
margin: 20px;
|
// margin: 20px;
|
padding: 30px;
|
background: #ffff;
|
border: 1px solid #dcdfe6;
|
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
|
0 0 6px 0 rgba(0, 0, 0, 0.04);
|
.scriptTopic-dev {
|
margin-bottom: 25px;
|
font-size: 20px !important;
|
.dev-text {
|
margin-bottom: 10px;
|
}
|
}
|
}
|
.jic-value {
|
font-size: 20px;
|
border-top: 1px solid #a7abac;
|
padding: 10px;
|
margin-bottom: 10px;
|
.details-jic {
|
padding: 10px 15px;
|
border: 1px solid #dcdfe6;
|
-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
|
0 0 6px 0 rgba(0, 0, 0, 0.04);
|
.details-title {
|
display: flex;
|
justify-content: space-between;
|
margin-bottom: 10px;
|
div:nth-child(2) {
|
color: #02a7f0;
|
cursor: pointer;
|
}
|
}
|
.details-renw {
|
background: #e4ebfc;
|
padding: 15px 5px;
|
border-radius: 5px;
|
margin-bottom: 20px;
|
}
|
}
|
}
|
::v-deep .addtopic-input {
|
input {
|
background: #02a7f0;
|
color: #edf1f7;
|
width: 150px;
|
}
|
}
|
::v-deep.el-step.is-vertical .el-step__title {
|
font-size: 25px;
|
}
|
::v-deep.el-row {
|
margin-bottom: 10px;
|
}
|
// ::v-deep.el-input--medium {
|
// font-size: 24px !important;
|
// }
|
::v-deep.ruleFormaa.el-select {
|
display: inline-block;
|
position: relative;
|
width: 700px;
|
}
|
.el-select__tags {
|
font-size: 20px;
|
max-width: 888px !important;
|
}
|
::v-deep.el-radio__inner {
|
width: 22px;
|
height: 22px;
|
}
|
// ::v-deep.topic-dev.el-radio__label {
|
// font-size: 24px;
|
// }
|
::v-deep.el-radio-group {
|
span {
|
font-size: 24px;
|
}
|
}
|
::v-deep.el-input.is-disabled .el-input__inner {
|
background-color: #f5f7fa;
|
border-color: #dfe4ed;
|
color: rgb(253, 66, 66);
|
cursor: not-allowed;
|
}
|
::v-deep.el-checkbox-group {
|
span {
|
font-size: 24px;
|
}
|
}
|
</style>
|