WXL
2024-07-04 0700456fd5717931c424c2e46552561716f1eb81
测试完成
已修改4个文件
395 ■■■■ 文件已修改
src/api/AiCentre/external.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/publicity.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/tasklist/index.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/Missioncreation.vue 356 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/external.js
@@ -3,7 +3,7 @@
// 外链获取随访或问卷详情
export function getExternalfollowup(data) {
  return request({
    url: "/smartor/servicetask/getScriptInfoByCondition",
    url: "/smartor/serviceTask/getScriptInfoByCondition",
    // url: "/smartor/servicetask/getScriptInfoByCondition",
    method: "post",
    data: data
src/api/AiCentre/publicity.js
@@ -32,6 +32,14 @@
      data: data,
    });
  }
  // 新增或修改宣教模版
export function getcompiletask(data) {
  return request({
    url: "/smartor/heTaskSingle/queryHeTaskByCondition",
    method: "post",
    data: data,
  });
}
  export function addrichText(data) {
    return request({
      url: "/common/htmlContent",
src/views/followvisit/tasklist/index.vue
@@ -755,23 +755,38 @@
          path: "/followvisit/QuestionnaireTask",
          query: { type: 2, typename: typename },
        });
      } else if (this.tasktopic == 1) {
        this.$router.push({
          path: "/followvisit/Missioncreation",
          query: { type: 3, typename: typename },
        });
      }
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      // this.$router.push({
      //   path: "/followvisit/particty",
      //   query: { type: this.tasktopic, id: row.taskid },
      // });
      if (
        this.tasktopic == 2 ||
        this.tasktopic == 3 ||
        this.tasktopic == 4 ||
        this.tasktopic == 5
      ) {
      this.$router.push({
        path: "/followvisit/particty",
        query: { type: this.tasktopic, id: row.taskid },
      });
      if (this.tasktopic == 1 || this.tasktopic == 2 || this.tasktopic == 3) {
        this.$router.push({
          path: "/followvisit/particty",
          query: { type: this.tasktopic, id: row.taskid },
          query: { type: 1, id: row.taskid },
        });
      } else if (this.tasktopic == 6) {
        this.$router.push({
          path: "/followvisit/QuestionnaireTask",
          query: { type: this.tasktopic, id: row.taskid },
          query: { type: 2, id: row.taskid },
        });
      } else if (this.tasktopic == 1) {
        this.$router.push({
          path: "/followvisit/Missioncreation",
          query: { type: 3, id: row.taskid },
        });
      }
    },
src/views/patient/propaganda/Missioncreation.vue
@@ -169,196 +169,6 @@
              </el-form>
            </div>
          </div>
          <div class="examine-jic">
            <div class="headline">
              <div>{{ title }}</div>
            </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="宣教主题"
                      v-if="currenttype == 1 || currenttype == 8"
                    >
                      <el-input v-model="topqueryParams.name"></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>
                    <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-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>
          </div>
        </div>
        <el-button type="success" @click="nextstep('ruleForm')">{{
          quote ? "立即创建" : "任务详情配置"
@@ -465,7 +275,7 @@
                        </el-option>
                      </el-select>
                    </el-form-item>
                    <el-form-item label="随访结果" prop="status">
                    <el-form-item label="宣教结果" prop="status">
                      <el-select
                        v-model="topqueryParams.topic"
                        placeholder="请选择"
@@ -668,34 +478,7 @@
    <el-dialog title="模版预览" :visible.sync="previewtf" width="60%">
      <div class="preview-left">
        <!-- 单选 -->
        <div
          class="topic-dev"
          v-for="(item, index) in questionList"
          :key="item.id"
        >
          <div class="dev-text">
            {{ index + 1 }}、<span>{{ item.script }}</span>
          </div>
          <div class="dev-xx" v-if="item.scripttype != 3">
            <el-radio-group v-model="item.radio">
              <el-radio
                v-for="(items, index) in item.svyLibTemplateTargetoptions"
                :key="items.id"
                :label="items.id"
                >{{ items.optioncontent }}
              </el-radio>
            </el-radio-group>
          </div>
          <div v-else>
            <el-input
              type="textarea"
              placeholder="未获取到信息"
              v-model.sync="item.questionResult"
              :rows="2"
            />
          </div>
        </div>
        <div v-html="richText"></div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="previewGo">前往模版详情修改</el-button>
@@ -703,13 +486,13 @@
      </span>
    </el-dialog>
    <el-drawer
      title="随访内容列表"
      title="宣教内容列表"
      :visible.sync="drawermb"
      direction="rtl"
      size="50%"
    >
      <div class="headline"></div>
      <div class="examine-jic">
      <div style="margin: 20px">
        <div class="jic-value">
          <el-row :gutter="20">
            <!--用户数据-->
@@ -729,7 +512,7 @@
                <el-input v-model="topqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item
                label="随访名称"
                label="宣教名称"
                v-if="currenttype == 2 || currenttype == 3 || currenttype == 7"
              >
                <el-input
@@ -783,7 +566,7 @@
                </el-select>
              </el-form-item>
              <el-form-item
                label="随访类型"
                label="宣教类型"
                prop="status"
                v-if="currenttype == 2 || currenttype == 3 || currenttype == 7"
              >
@@ -878,6 +661,8 @@
<script>
import { messagelistpatient } from "@/api/patient/homepage";
import axios from "axios";
import store from "@/store";
import {
  getTaskpatient,
@@ -885,7 +670,7 @@
  getFollowuplist,
  getQtemplatelist,
  TaskQuestioncomit,
  Questionnairetaskget,
  getTaskInfo,
  gethetaskinfo,
  delhetaskinfo,
  Editsingletask,
@@ -916,6 +701,7 @@
      checkboxlist: [],
      tableLabel: [],
      questionList: [],
      richText: "<p>Hello, <strong>world</strong>!</p>",
      // 患者表单
      tableLabelhz: [
        { label: "序号", width: "", prop: "patid" },
@@ -927,12 +713,13 @@
        { 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" },
      tableLabelxj: [
        { label: "宣教名称", width: "", prop: "preachname" },
        { label: "宣教描述", width: "", prop: "note" },
        { label: "宣教形式", width: "", prop: "playType" },
        { label: "适用方式", width: "", prop: "suitway" },
        { label: "修改日期", width: "", prop: "uploadTime" },
        { label: "创建人(缺)", width: "", prop: "updateBy" },
      ],
      // 变量
      tableLabelvariable: [
@@ -1104,10 +891,14 @@
        isavailable: "",
      };
      this.currenttype = this.$route.query.type;
      this.title = "问卷内容列表";
      this.tableLabel = this.tableLabelwj;
      this.checkboxlist = ["线下(纸质)", "线上(短信/钉钉的文本、问卷链接)"];
      getQtemplatelist(queryParams).then((response) => {
      this.title = "宣教内容列表";
      this.tableLabel = this.tableLabelxj;
      this.checkboxlist = [
        "线下(纸质)",
        "线上(短信/钉钉的文本视频)",
        "宣教链接",
      ];
      getlibrarylist(queryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
      });
@@ -1145,7 +936,7 @@
          }
          this.$router.push({
            path: "/followvisit/tasklist",
            query: { tasktopic: 6 },
            query: { tasktopic: 1 },
          });
        }
      });
@@ -1154,49 +945,62 @@
    // 确认选择模版放入任务模版
    selectfn(row, type) {
      // 模版情况下获取模版信息
      if (type == 1) {
        this.libName = row.svyname;
        this.libId = row.svyid;
      this.libName = row.preachname;
      this.richText = null;
      this.libId = row.id;
        console.log(row, "row");
        this.Tasktemplate = row;
        this.questionList = row.svyLibScripts;
        this.previewtf = true;
        this.previewid = row.svyid;
        console.log(this.questionList, "questionList");
        this.Variablehandling(row.svyLibScripts, 1);
      } else if (type == 2) {
      } else if (type == 3) {
      }
      // this.Variablehandling(row.svyLibScripts, 1);
      console.log(row.richText);
      axios
        .get(row.richText)
        .then((response) => {
          console.log(response.data, "数据"); // 输出获取到的文件内容
          this.richText = response.data;
          this.richText = this.addStyleToImages(this.richText);
        })
        .catch((error) => {
          console.error("Failed to fetch file:", error);
        });
    },
    addStyleToImages(html) {
      return html.replace(
        /<img([^>]*)style=(['"])(?:(?!\2).)*\2([^>]*)>/g,
        '<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);
      }
    },
    // 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");
@@ -1305,7 +1109,7 @@
    // 获取详情
    Getdetails() {
      if (this.id) {
        Questionnairetaskget({ taskid: this.id }).then((res) => {
        getTaskInfo({ taskid: this.id }).then((res) => {
          let filteredArray = "";
          console.log(2233);
          if (res.code == 200) {
@@ -1441,13 +1245,9 @@
      });
    },
    previewFn() {
      let id = this.Tasktemplate.id;
      this.Tasktemplate.id = null;
      this.Tasktemplate.svyLibScripts.svyTaskTemplateTargetoptions =
        this.Tasktemplate.svyLibScripts.svyLibTemplateTargetoptions;
      this.Tasktemplate.svyTaskTemplateScriptVOS =
        this.Tasktemplate.svyLibScripts;
      this.Tasktemplate.templateid = id;
      this.Tasktemplate.templateid = this.libId;
      this.Tasktemplate.isoperation = 1;
      TaskQuestioncomit(this.Tasktemplate).then((response) => {
        console.log(response);