WXL
2024-11-26 007d3884ad259883d7a5db6714876e46525ae717
src/views/patient/propaganda/Missioncreation.vue
@@ -7,14 +7,13 @@
          <el-step
            icon="el-icon-edit"
            title="基础信息"
            description="选择模版、形式等基础信息"
            description="选择模板、形式等基础信息"
          ></el-step>
          <el-step
            icon="el-icon-user"
            title="任务主体"
            description="在本部选择服务患者"
          ></el-step>
          <el-step icon="el-icon-user" title="模版确认"></el-step>
        </el-steps>
      </div>
    </div>
@@ -22,7 +21,7 @@
    <div class="leftvlue" style="margin: 0 20px">
      <!-- 基本信息 -->
      <div v-if="Editprogress == 1">
        <el-alert title="选择模版、形式等基础信息" type="success" effect="dark">
        <el-alert title="选择模板、形式等基础信息" type="success" effect="dark">
        </el-alert>
        <div class="leftvlue-jbxx">
          <!-- 基础信息 -->
@@ -42,7 +41,7 @@
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="8"
                    ><el-form-item label="模版名称">
                    ><el-form-item label="模板名称">
                      <el-input
                        style="width: 220px"
                        :disabled="true"
@@ -57,7 +56,23 @@
                      @click="drawermb = true"
                      circle
                    ></el-button>
                    <el-button
                      v-if="form.templatename"
                      type="success"
                      icon="el-icon-search"
                      @click="previewfnm"
                      circle
                    ></el-button>
                  </el-col>
                  <!-- <el-col :span="2">
                    <el-button
                      v-if="form.templatename"
                      type="success"
                      icon="el-icon-search"
                      @click="previewfnm"
                      circle
                    ></el-button>
                  </el-col> -->
                </el-row>
                <el-form-item label="任务描述">
@@ -67,6 +82,48 @@
                    placeholder="请输入任务描述"
                  />
                </el-form-item>
                <el-row>
                  <el-col :span="20"
                    ><el-form-item label="适用科室" prop="region">
                      <el-select
                        v-model="form.deptcode"
                        style="width: 400px"
                        size="medium"
                        filterable
                        placeholder="请选择科室"
                      >
                        <el-option
                          class="ruleFormaa"
                          v-for="item in belongDepts"
                          :key="item.deptCode"
                          :label="item.deptName"
                          :value="item.deptCode"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-row>
                  <el-col :span="20"
                    ><el-form-item label="适用病区" prop="region">
                      <el-select
                        v-model="form.leavehospitaldistrictcode"
                        style="width: 400px"
                        size="medium"
                        filterable
                        placeholder="请选择病区"
                      >
                        <el-option
                          class="ruleFormaa"
                          v-for="item in belongWards"
                          :key="item.districtCode"
                          :label="item.districtName"
                          :value="item.districtCode"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-form-item label="发送设置:" v-if="currenttype != 2">
                  <el-radio-group v-model="form.sendType">
                    <el-radio :label="1">时间段发送</el-radio>
@@ -105,9 +162,7 @@
                <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
                      >
                      <span style="font-size: 18px; margin-right: 10px">①</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -122,9 +177,7 @@
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段二</span
                      >
                      <span style="font-size: 18px; margin-right: 10px">②</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -139,9 +192,7 @@
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段三</span
                      >
                      <span style="font-size: 18px; margin-right: 10px">③</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -157,30 +208,40 @@
                    </div>
                  </div>
                </el-form-item>
                <el-row>
                  <el-col :span="12"
                    ><el-form-item label="开场白" prop="kcb">
                      <el-input
                        type="textarea"
                        :rows="3"
                        v-model="form.kcb"
                        placeholder="请输入开场白"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                    ><el-form-item label="结束语" prop="jsy">
                      <el-input
                        type="textarea"
                        :rows="3"
                        v-model="form.jsy"
                        placeholder="请输入结束语"
                      /> </el-form-item
                  ></el-col>
                </el-row>
                <el-form-item label="服务形式">
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox
                      v-for="(item, index) in checkboxlist"
                      :key="index"
                      :label="item"
                    ></el-checkbox>
                      :label="item.value"
                    >
                      {{ item.label }}</el-checkbox
                    >
                  </el-checkbox-group>
                </el-form-item>
              </el-form>
            </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>
@@ -226,6 +287,18 @@
              </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>
@@ -234,7 +307,7 @@
              <div class="jic-value">
                <el-row :gutter="20">
                  <!--用户数据-->
                  <el-form
                  <!-- <el-form
                    :model="topqueryParams"
                    ref="queryForm"
                    size="small"
@@ -246,51 +319,8 @@
                      <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.topic"
                        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 label="宣教结果" prop="status">
                      <el-select
                        v-model="topqueryParams.topic"
                        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 label="患者电话">
                      <el-input v-model="topqueryParams.name"></el-input>
                    <el-form-item label="就诊科室">
                      <el-input v-model="topqueryParams.deptName"></el-input>
                    </el-form-item>
                    <el-form-item>
                      <el-button
@@ -313,8 +343,8 @@
                        >当前患者一键发送</el-button
                      >
                    </el-form-item>
                  </el-form>
                  <el-divider></el-divider>
                  </el-form> -->
                  <!-- <el-divider></el-divider> -->
                  <el-row :gutter="10" class="mb8">
                    <el-col :span="1.5">
                      <el-select
@@ -353,6 +383,17 @@
                        >删除</el-button
                      >
                    </el-col>
                    <el-col :span="1.5">
                      <el-button
                        type="info"
                        plain
                        icon="el-icon-upload2"
                        size="medium"
                        @click="handleImport"
                        >导入</el-button
                      >
                    </el-col>
                    <!-- <el-col :span="1.5"> </el-col> -->
                  </el-row>
@@ -361,8 +402,9 @@
                    @details="detailhz"
                    @handleUpdate="handleUpdate"
                    :currentList="overallCase"
                    :tableLabel="tableLabelhz"
                    :tableLabel="tableLabelhzwb"
                    :serialnumber="false"
                    :searchTrue="true"
                    :multiplechoice="false"
                    :controlxz="false"
                    :typeinfo="2"
@@ -388,7 +430,7 @@
    </div>
    <!-- 添加患者 -->
    <el-dialog
      title="添加派发患者"
      title="选择患者"
      :visible.sync="dialogVisiblepatient"
      width="70%"
      :before-close="handleClosehz"
@@ -406,30 +448,24 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="患者名称:">
                <el-input v-model="patientqueryParams.name"></el-input>
              <el-form-item label="患者:">
                <el-input
                  v-model="patientqueryParams.name"
                  @keyup.enter.native="handleQuery"
                ></el-input>
              </el-form-item>
              <el-form-item label="就诊科室" prop="status">
                <el-select
                  v-model="patientqueryParams.topic"
                  placeholder="请选择"
              <el-select
                v-model="patientqueryParams.searchscope"
                placeholder="请选择患者范围"
              >
                <el-option
                  v-for="item in source"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                  <el-option-group
                    v-for="group in topicoptions[0].children"
                    :key="group.deptName"
                    :label="group.deptName"
                  >
                    <el-option
                      v-for="item in group.children"
                      :key="item.deptId"
                      :label="item.deptName"
                      :value="item.deptId"
                    >
                    </el-option>
                  </el-option-group>
                </el-select>
              </el-form-item>
                </el-option>
              </el-select>
              <el-form-item>
                <el-button
@@ -475,15 +511,108 @@
        >
      </span>
    </el-dialog>
    <el-dialog title="模版预览" :visible.sync="previewtf" width="60%">
    <!-- 模板预览 -->
    <el-dialog title="模板预览" :visible.sync="previewtf" width="60%">
      <div class="preview-left">
        <!-- 单选 -->
        <div v-html="richText"></div>
        <div v-html="htmlRichText"></div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="previewGo">前往模版详情修改</el-button>
        <!-- <el-button @click="previewGo">前往模板详情修改</el-button> -->
        <el-button type="primary" @click="previewFn">确认使用</el-button>
      </span>
    </el-dialog>
    <!-- 用户导入对话框 -->
    <el-dialog
      :title="upload.title"
      :visible.sync="upload.open"
      width="70%"
      append-to-body
    >
      <el-steps :active="dractive" simple>
        <el-step title="上传导入文件" icon="el-icon-upload"></el-step>
        <el-step title="导入检查" icon="el-icon-picture"></el-step>
      </el-steps>
      <!-- 上传导入文件 -->
      <div class="download" v-if="dractive == 1">
        <el-upload
          class="upload-demo"
          ref="upload"
          :limit="1"
          accept=".xlsx, .xls"
          :headers="upload.headers"
          :action="upload.url"
          :disabled="upload.isUploading"
          :on-progress="handleFileUploadProgress"
          :on-success="handleFileSuccess"
          drag
        >
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
          <div class="el-upload__tip text-center" slot="tip">
            <!-- <div class="el-upload__tip" slot="tip">
              <el-checkbox v-model="upload.updateSupport" />
              是否更新已经存在的用户数据
            </div> -->
            <span>仅允许导入xls、xlsx格式文件。</span>
            <el-link
              type="primary"
              :underline="false"
              style="font-size: 24px; vertical-align: baseline"
              @click="importTemplate"
              >下载模板
            </el-link>
            <!-- <el-link
              type="success"
              :underline="false"
              style="font-size: 24px; vertical-align: baseline"
              href="http://m.qpic.cn/psc?/V50ZTolo1AIhq00dqrJP2169QM2VHGTU/ruAMsa53pVQWN7FLK88i5qfmCJclyMduqqL6kjE4h7TXDAjimVtmLmTyGVfF4qlkyOISsYQ4Mxx705X2tkXEIUPrfCS4L4yK.f11SmO8Tq0!/b&bo=twb0AgAAAAADB2U!&rf=viewer_4"
              target="_blank"
            >
              查看模板</el-link
            > -->
          </div>
        </el-upload>
      </div>
      <!-- 完成 -->
      <div class="drexamine" v-else-if="dractive == 2">
        <div style="display: flex">
          <img src="@/assets/images/导入.png" />
          <p>导入患者成功!</p>
          <p>
            本次成功导入<span style="color: #72d3a9; font-size: 20px">{{
              uploadingData.length
            }}</span
            >位患者
          </p>
        </div>
        <el-table :data="uploadingData" style="width: 100%">
          <el-table-column prop="serial" label="患者id"> </el-table-column>
          <el-table-column prop="name" label="姓名"> </el-table-column>
          <el-table-column prop="sex" label="性别"> </el-table-column>
          <el-table-column prop="idcardno" width="300" label="证件号码"> </el-table-column>
          <el-table-column prop="goday" label="出生日期"> </el-table-column>
          <el-table-column prop="telcode" width="200" label="联系方式"> </el-table-column>
          <el-table-column prop="createTime"  width="200" label="创建日期">
          </el-table-column>
        </el-table>
        <!-- <pagination
          v-show="total > 0"
          :total="total"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="geterryList"
        /> -->
      </div>
      <div slot="footer">
        <el-button type="primary" @click="submitFileForm">{{
          dractive == 1 ? "下一步" : "加入任务"
        }}</el-button>
        <el-button @click="submitclose">取 消</el-button>
      </div>
    </el-dialog>
    <el-drawer
      title="宣教内容列表"
@@ -496,7 +625,6 @@
        <div class="jic-value">
          <el-row :gutter="20">
            <!--用户数据-->
            <el-form
              :model="topqueryParams"
              ref="queryForm"
@@ -505,97 +633,33 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item
                label="宣教主题"
                v-if="currenttype == 1 || currenttype == 8"
              >
                <el-input v-model="topqueryParams.name"></el-input>
              <el-form-item label="宣教名称">
                <el-input v-model="topqueryParams.preachname"></el-input>
              </el-form-item>
              <el-form-item
                label="宣教名称"
                v-if="currenttype == 2 || currenttype == 3 || currenttype == 7"
              >
                <el-input
                  v-model="topqueryParams.name"
                ></el-input> </el-form-item
              ><el-form-item
                label="通知名称"
                v-if="currenttype == 4 || currenttype == 5"
              >
                <el-input
                  v-model="topqueryParams.name"
                ></el-input> </el-form-item
              ><el-form-item label="体检套餐" v-if="currenttype == 5">
                <el-input v-model="topqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item label="问卷主题" v-if="currenttype == 6">
                <el-input v-model="topqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item label="适用疾病" v-if="currenttype != 5">
                <el-input v-model="topqueryParams.name"></el-input>
              <el-form-item label="宣教分类" prop="region">
                <el-select
                  v-model="topqueryParams.assortid"
                  size="medium"
                  filterable
                  placeholder="请选择分类"
                >
                  <el-option-group
                    v-for="group in sortlist"
                    :key="group.id"
                    :label="group.assortname"
                  >
                    <el-option
                      v-for="item in group.heLibraryAssortList"
                      :key="item.id"
                      :label="item.assortname"
                      :value="item.id"
                    >
                    </el-option>
                  </el-option-group>
                </el-select>
              </el-form-item>
              <el-form-item
                label="宣教类型"
                prop="status"
                v-if="currenttype == 1 || currenttype == 8"
              >
                <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"
                v-if="currenttype == 4 || currenttype == 5"
              >
                <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"
                v-if="currenttype == 2 || currenttype == 3 || currenttype == 7"
              >
                <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"
                v-if="currenttype == 6"
              >
                <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-form-item label="适用形式" prop="status">
                <el-select v-model="topqueryParams.topica" placeholder="请选择">
                  <el-option
                    v-for="item in taskoptions"
@@ -605,9 +669,9 @@
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              </el-form-item> -->
              <el-form-item label="适用科室" prop="status">
              <!-- <el-form-item label="适用科室" prop="status">
                <el-select v-model="topqueryParams.topicd" placeholder="请选择">
                  <el-option
                    v-for="item in topicoptions"
@@ -617,13 +681,13 @@
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              </el-form-item> -->
              <el-form-item>
                <el-button
                  type="primary"
                  icon="el-icon-search"
                  size="medium"
                  @click="handleQuery"
                  @click="Acquisitiontypeget"
                  >搜索</el-button
                >
                <el-button
@@ -635,7 +699,7 @@
              </el-form-item>
            </el-form>
            <el-divider></el-divider>
            <!-- 选择模版列表 -->
            <!-- 选择模板列表 -->
            <SFtable
              @selectfn="selectfn"
              :currentList="userList"
@@ -650,7 +714,7 @@
              :total="total"
              :page.sync="topqueryParams.pageNum"
              :limit.sync="topqueryParams.pageSize"
              @pagination="Acquisitiontype"
              @pagination="Acquisitiontypeget"
            />
          </el-row>
        </div>
@@ -674,9 +738,10 @@
  gethetaskinfo,
  delhetaskinfo,
  Editsingletask,
  getheLibraryAssort,
} from "@/api/AiCentre/index";
import { listDept } from "@/api/system/dept";
import { getToken } from "@/utils/auth";
import SFtable from "@/components/SFtable"; //表格组件
export default {
@@ -686,40 +751,58 @@
      title: "宣教内容列表",
      currenttype: 1, //1宣教2门诊3出院4复诊5体检6问卷
      id: "", //
      previewid: "", //任务模版传递id
      previewid: "", //任务模板传递id
      libName: "",
      overallCase: [], //选择患者总
      allpids: [],
      libId: null, //模板库模版id
      libId: null, //模板库模板id
      Editprogress: 1, //编辑进度
      drawermb: false, //选择模版弹窗
      drawermb: false, //选择模板弹窗
      previewtf: false, //预览
      loading: false, // 遮罩层
      patientloading: false, // 遮罩层
      dialogVisiblepatient: false, //添加患者弹框
      radio: 1,
      checkboxlist: [],
      // 科室/病区
      belongWards: [],
      belongWards: [],
      tableLabel: [],
      questionList: [],
      richText: "<p>Hello, <strong>world</strong>!</p>",
      uploadingData: [],
      htmlRichText: "<p>Hello, <strong>world</strong>!</p>",
      // 患者表单
      tableLabelhz: [
        { label: "序号", width: "", prop: "patid" },
        { label: "患者名称", width: "", prop: "name" },
        { label: "出院日期", width: "150", prop: "inhosptime" },
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "sfzh" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "就诊科室", width: "", prop: "deptName" },
        { label: "入院日期", width: "", prop: "inhosptime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
        { label: "责任护士", width: "", prop: "nurseName" },
        { label: "主治医生", width: "", prop: "drname" },
        { label: "科室", width: "240", prop: "dept" },
        { label: "病区", width: "240", prop: "leavehospitaldistrictname" },
      ],
      // 患者表单
      tableLabelhzwb: [
        { label: "出院日期", width: "150", prop: "endtime" },
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "sfzh" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "责任护士", width: "", prop: "nurseName" },
        { label: "主治医生", width: "", prop: "drname" },
        { label: "科室", width: "180", prop: "deptName" },
        { label: "病区", width: "150", prop: "leavehospitaldistrictname" },
      ],
      tableLabelxj: [
        { label: "宣教名称", width: "", prop: "preachname" },
        { label: "宣教描述", width: "", prop: "note" },
        { label: "宣教形式", width: "", prop: "playType" },
        { label: "创建人", width: "", prop: "createBy" },
        { label: "宣教名称", width: "180", prop: "preachname" },
        { label: "宣教描述", width: "180", prop: "preachcontent" },
        // { label: "宣教形式", width: "", prop: "playType" },
        { label: "适用方式", width: "", prop: "suitway" },
        { label: "修改日期", width: "", prop: "uploadTime" },
        { label: "创建人(缺)", width: "", prop: "updateBy" },
      ],
      // 变量
      tableLabelvariable: [
@@ -728,18 +811,30 @@
        { label: "替换值", width: "", prop: "Replacementvalue" },
      ],
      preachform: [
        { label: "多媒体", value: 1 },
        { label: "纸质", value: 2 },
        { label: "电话", value: 3 },
        { 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 },
        { label: "微信公众", value: 5 },
        { label: "钉钉", value: 6 },
        { label: "智能机器人", value: 7 },
      ],
      upload: {
        // 是否显示弹出层(用户导入)
        open: false,
        // 弹出层标题(用户导入)
        title: "",
        // 是否禁用上传
        isUploading: false,
        // 是否更新已经存在的用户数据
        updateSupport: 0,
        // 设置上传的请求头部
        headers: { Authorization: "Bearer " + getToken() },
        // 上传的地址
        url: process.env.VUE_APP_BASE_API + "/smartor/import/importPatInfo",
      },
      //导入进度
      dractive: 1,
      // 时间处理
      daytime: [], //日期
      applydaytime: [], //计算日期
@@ -772,7 +867,7 @@
      // 非多个禁用
      multiple: true,
      // 用户表格数据
      userList: [], //模版列表
      userList: [], //模板列表
      patientuserList: [], //选择患者列表
      sonuserList: [], //选中患者列表
      delvariableList: [], //删除变量临时存储
@@ -817,6 +912,7 @@
        },
      ],
      variableListTime: [],
      sortlist: [],
      tasktopic: null, //新增类型
      SelectPatientslist: [],
      form: {
@@ -825,11 +921,17 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb: "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。",
        jsy: "生活上要劳逸结合,注意休息和营养,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次宣教内容就到这里,祝您身体健康!",
      },
      taskoptions: [
        {
          value: "1",
          label: "出院病人",
        },
        {
          value: "4",
          label: "在院病人",
        },
        {
          value: "2",
@@ -840,6 +942,20 @@
          label: "体检病人",
        },
      ],
      source: [
        {
          value: 0,
          label: "所属患者",
        },
        {
          value: 1,
          label: "科室患者",
        },
        {
          value: 2,
          label: "病区患者",
        },
      ],
      quote: false,
    };
  },
@@ -848,10 +964,15 @@
  created() {
    this.id = this.$route.query.id;
    this.form.type = this.$route.query.type;
    this.newadd = this.$route.query.newadd;
    this.belongWards = store.getters.belongWards;
    this.belongDepts = store.getters.belongDepts;
    this.form.typename = this.$route.query.typename;
    this.form.serviceType = Number(this.$route.query.serviceType);
    this.listDept();
    this.Acquisitiontype();
    this.Getdetails();
    this.getheLibraryAssort();
  },
  methods: {
@@ -883,6 +1004,14 @@
      });
      return result;
    },
    Acquisitiontypeget() {
      console.log(2211);
      getlibrarylist(this.topqueryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
      });
    },
    // 获取当前类型
    Acquisitiontype() {
      let queryParams = {
@@ -893,13 +1022,56 @@
      this.currenttype = this.$route.query.type;
      this.title = "宣教内容列表";
      this.tableLabel = this.tableLabelxj;
      this.checkboxlist = [
        "线下(纸质)",
        "线上(短信/钉钉的文本视频)",
        "宣教链接",
        "微信公众号",
        "短信",
      ];
      if (this.form.serviceType == 4) {
        this.checkboxlist = [
          {
            value: "2",
            label: "纸质",
          },
          {
            value: "4",
            label: "短信",
          },
          {
            value: "5",
            label: "微信公众号",
          },
          {
            value: "6",
            label: "微信小程序",
          },
          {
            value: "8",
            label: "智能机器人",
          },
        ];
      } else if (this.form.serviceType == 8) {
        this.checkboxlist = [
          {
            value: "4",
            label: "短信",
          },
          {
            value: "5",
            label: "微信公众号",
          },
          {
            value: "6",
            label: "微信小程序",
          },
          {
            value: "8",
            label: "智能机器人",
          },
          {
            value: "9",
            label: "钉钉",
          },
        ];
      }
      getlibrarylist(queryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
@@ -912,9 +1084,16 @@
    },
    // 保存
    submitForm(formName) {
      // this.form.preachform = this.checkList.join(",");
      this.formatFn(1);
      this.form.hospType = this.currenttype;
      this.form.preachform = this.checkList.join(",");
      // this.formatFn(1);
      if (!this.form.patTaskRelevances[0]) {
        this.$modal.msgError("请选择病人");
        return;
      }
      if (!this.form.templatename) {
        this.$modal.msgError("未选择模板");
        return;
      }
      const filteredArray = this.variableList.filter(
        (item) =>
          item.name !== "姓名" && item.name !== "电话" && item.name !== "地址"
@@ -925,10 +1104,17 @@
        this.form.isoperation = 2;
      } else {
        this.form.isoperation = 1;
        this.form.sendState=1;
      }
      if (!this.form.type) {
        this.form.type = this.$route.query.type;
      }
      this.form.leaveldeptcodes = store.getters.belongDepts.map(
        (obj) => obj.deptCode
      );
      this.form.leavehospitaldistrictcodes = store.getters.belongWards.map(
        (obj) => obj.districtCode
      );
      Editsingletask(this.form).then((res) => {
        if (res.code == 200) {
          if (this.form.taskid) {
@@ -938,17 +1124,17 @@
          }
          this.$router.push({
            path: "/followvisit/tasklist",
            query: { tasktopic: 1 },
            query: { tasktopic: this.form.serviceType },
          });
        }
      });
    },
    // ----------------------表格子组件事件
    // 确认选择模版放入任务模版
    // 选择模板并预览
    selectfn(row, type) {
      // 模版情况下获取模版信息
      // 模板情况下获取模板信息
      this.libName = row.preachname;
      this.richText = null;
      this.htmlRichText = null;
      this.libId = row.id;
      console.log(row, "row");
      this.Tasktemplate = row;
@@ -956,17 +1142,39 @@
      this.previewid = row.svyid;
      console.log(this.questionList, "questionList");
      // this.Variablehandling(row.svyLibScripts, 1);
      console.log(row.richText);
      console.log(row.htmlRichText);
      axios
        .get(row.richText)
        .get(row.htmlRichText)
        .then((response) => {
          console.log(response.data, "数据"); // 输出获取到的文件内容
          this.richText = response.data;
          this.richText = this.addStyleToImages(this.richText);
          this.htmlRichText = response.data;
          this.htmlRichText = this.addStyleToImages(this.htmlRichText);
        })
        .catch((error) => {
          this.$modal.msgError("获取富文本失败");
          console.error("Failed to fetch file:", error);
        });
    },
    // 预览模板
    previewfnm() {
      getlibrarylist({ id: this.form.libtemplateid }).then((res) => {
        this.libName = res.rows[0].preachname;
        this.htmlRichText = null;
        this.libId = res.rows[0].id;
        this.Tasktemplate = res.rows[0];
        this.previewtf = true;
        this.previewid = res.rows[0].svyid;
        axios
          .get(res.rows[0].htmlRichText)
          .then((response) => {
            this.htmlRichText = response.data;
            this.htmlRichText = this.addStyleToImages(this.htmlRichText);
          })
          .catch((error) => {
            this.$modal.msgError("获取富文本失败");
            console.error("Failed to fetch file:", error);
          });
      });
    },
    addStyleToImages(html) {
      return html.replace(
@@ -974,47 +1182,64 @@
        '<img$1style="width:100%;height:auto;"$3>'
      );
    },
    // 处理问题层变量
    // Variablehandling(arr, type) {
    //   let Variablist = [];
    //   if (type == 1) {
    //     console.log(arr);
    //     // 循环问题
    //     arr.forEach((res) => {
    //       console.log(JSON.parse(res.otherdata), "ss");
    //       // 循环选项
    //       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: "150", prop: "endtime" },
          { label: "患者", width: "", prop: "name" },
          { label: "身份证", width: "200", prop: "sfzh" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "责任护士", width: "", prop: "nurseName" },
          { label: "医生", width: "", prop: "drname" },
          { label: "科室", width: "180", prop: "dept" },
          { label: "病区", width: "150", prop: "leavehospitaldistrictname" },
        ];
      } 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;
      }
      // 类型判断
      if (this.patientqueryParams.allhosp == 1) {
        this.patientqueryParams.cry = 1;
      } else if (this.patientqueryParams.allhosp == 4) {
        this.patientqueryParams.cry = 0;
        this.patientqueryParams.allhosp = "1";
      }
      if (this.patientqueryParams.searchscope == 1) {
        this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.patientqueryParams.leavehospitaldistrictcodes = [];
      } else if (this.patientqueryParams.searchscope == 2) {
        this.patientqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
        this.patientqueryParams.leaveldeptcodes = [];
      } else {
        this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.patientqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      getTaskpatient(this.patientqueryParams).then((response) => {
@@ -1031,7 +1256,7 @@
    handleExport() {},
    // 选择患者表数据
    handleSelectionChange(selection) {
    handleSelectionChange(selection,type) {
      console.log("多选患者");
      this.SelectPatientslist = selection;
      this.multiple = !selection.length;
@@ -1041,7 +1266,15 @@
        const isExist = this.overallCase.find((obj) => obj.name == item.name);
        if (!isExist) {
          item.isoperation = 1;
          item.hospType = this.patientqueryParams.allhosp;
          item.patid = item.id;
          if (item.idcardno) {
            item.sfzh = item.idcardno;
          }
          if (type) {
            item.hospType=type
          }else{
            item.hospType = this.patientqueryParams.allhosp;
          }
          this.overallCase.push(item);
          this.form.patTaskRelevances.push(item);
        }
@@ -1103,13 +1336,24 @@
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    // 预览模版
    // 预览模板
    PreviewTemplate() {},
    Acknowledgereference() {
      this.quote = true;
    },
    // 获取详情
    Getdetails() {
      this.form = {
        patTaskRelevances: [],
        sendType: 1,
        templatename: "",
        templateid: null,
        libtemplateid: null,
        serviceType: Number(this.$route.query.serviceType),
        kcb: "亲爱的患者-家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。",
        jsy: "生活上要劳逸结合,注意休息和营养,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
      };
      if (this.id) {
        getTaskInfo({ taskid: this.id }).then((res) => {
          let filteredArray = "";
@@ -1121,9 +1365,11 @@
              ? this.form.patTaskRelevances
              : [];
            this.overallCase = this.form.patTaskRelevances.concat();
            this.formatFn(2);
            this.checkList = this.form.preachform.split(",");
            console.log(this.form.showDate, "this.form");
            this.daytime = this.form.showDate.split(",");
            if (this.form.daytime) this.daytime = this.form.showDate.split(",");
            console.log(this.newadd, "依照");
            if (this.form.showTimeMorn) {
              if (this.form.sendType == 3) {
                this.time4 = this.form.showTimeMorn;
@@ -1141,8 +1387,33 @@
          } else {
            this.$modal.msgError(res.code);
          }
          if (this.newadd) {
            this.neWaddfn();
          }
        });
      }
    },
    // 依照新增时处理
    neWaddfn() {
      this.id = null;
      // this.form.taskName = "";
      this.form.taskid = null;
      console.log("依照");
      this.overallCase = [];
      this.form.patTaskRelevances = [];
      this.daytime = []; //日期
      this.applydaytime = []; //计算日期
      this.time1 = ""; //上午时间段
      this.time2 = ""; //下午时间段
      this.time3 = ""; //晚上时间段
      this.time4 = ""; //晚上时间段
    },
    getheLibraryAssort() {
      // 宣教分类
      getheLibraryAssort({}).then((res) => {
        this.sortlist = res.rows;
        console.log(this.sortlist);
      });
    },
    // 获取科室列表
    listDept() {
@@ -1239,10 +1510,10 @@
      if (this.time3) this.form.showTimeNight = this.time3.join(",");
      console.log(combinedData, "combinedData");
    },
    // 查看模版
    // 查看模板
    previewGo() {
      this.$router.push({
        path: "/knowledge/templateku/configurat/",
        path: "/knowledge/tpuconfigurat/",
        query: { id: this.previewid, task: true, data: this.form },
      });
    },
@@ -1257,7 +1528,7 @@
        this.form.templateid = response.data;
        this.form.libtemplateid = this.libId;
        this.form.templatename = this.libName;
        this.$modal.msgSuccess("选择模版成功");
        this.$modal.msgSuccess("选择模板成功");
      });
    },
    // 处理服务形式
@@ -1289,6 +1560,46 @@
        });
        this.checkList = list;
      }
    },
    /** 导入按钮操作 */
    handleImport() {
      this.upload.title = "用户导入";
      this.upload.open = true;
    },
    handleFileUploadProgress(event, file, fileList) {
      this.upload.isUploading = true;
    },
    // 文件上传成功处理
    handleFileSuccess(response, file, fileList) {
      this.upload.isUploading = false;
      this.uploadingData = response.rows;
      this.$refs.upload.clearFiles();
    },
    // 提交上传文件
    submitFileForm() {
      // 上传
      if (this.dractive == 1) {
        this.$refs.upload.submit();
        this.dractive++;
      } else if (this.dractive == 2) {
        this.handleSelectionChange(this.uploadingData,4);
        this.upload.open = false;
        this.dractive = 1
      }
    },
    /** 下载模板操作 */
    importTemplate() {
      this.download(
        "smartor/import/getImportPatTemplate",
        {},
        `user_template_${new Date().getTime()}.xlsx`
      );
    },
    submitclose() {
      this.upload.open = false;
      this.dractive = 1;
    },
  },
};
@@ -1425,6 +1736,41 @@
    }
  }
}
.download {
  text-align: center;
  .el-upload__tip {
    font-size: 23px;
  }
  .el-upload__text {
    font-size: 23px;
  }
}
.uploading {
  margin-top: 20px;
  margin: 20px;
  padding: 30px;
  background: #ffffff;
  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);
}
.drexamine {
  // display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: #daeaf5;
  img {
    width: 50px;
    height: 50px;
  }
}
.button-textsc {
  color: #28cfe6;
}
.button-textxg {
  color: #de7897;
}
::v-deep .addtopic-input {
  input {
    background: #02a7f0;