WXL
2024-07-18 b09476a8669551619c1f8b57158c064b13499437
测试完成
已修改7个文件
496 ■■■■■ 文件已修改
src/App.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/external.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Regular/index.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionbank/particulars/index.vue 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/compilequer/index.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/outsideChainwt.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/QuestionnaireTask.vue 287 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue
@@ -17,20 +17,13 @@
  },
  data() {
    return {
      routers: this.$route.path.split("/").pop(),
      routers: window.location.href,
      routertf: true,
    };
  },
  created() {
    this.routertf = this.$route.query.param5;
    console.log(this.routertf, "12");
    // if (
    //   this.routers == "outsideChainxj" ||
    //   this.routers == "outsideChain" ||
    //   this.routers == "outsideChainwt"
    // ) {
    //   this.routertf = false;
    // }
    var startIndex = this.routers.indexOf("param5=") + "param5=".length; // 找到第一个字符的位置
    this.routertf = JSON.parse(this.routers.substring(startIndex)); // 截取从 'param5=' 之后的内容
  },
  metaInfo() {
    return {
src/api/AiCentre/external.js
@@ -12,8 +12,8 @@
// 提交问卷、随访
export function SetsaveQuestionAnswer(data) {
  return request({
    url: "/smartor/ivrtaskcalldetail/saveQuestionAnswer",
    // url: "/smartor/serviceSubtask/saveQuestionAnswer",
    // url: "/smartor/ivrtaskcalldetail/saveQuestionAnswer",
    url: "/smartor/serviceSubtask/saveQuestionAnswer",
    method: "post",
    data: data
  });
src/components/Regular/index.vue
@@ -150,6 +150,27 @@
          >
        </div>
      </el-form-item>
      <el-form-item label="选项文件" prop="sickness">
        <div style="width: 40vw">
          <el-upload
            class="upload-demo"
            :action="uploadImgUrl"
            :headers="headers"
            :accept="'image/*,video/*'"
            :on-success="handleChange.bind(this, item)"
          >
            <el-button size="small" type="primary">点击上传</el-button>
          </el-upload>
          <div style="margin: 20px">
            <el-image
              style="width: 100px; height: 100px"
              :src="item.picturePath"
              :preview-src-list="[...item.picturePath]"
            >
            </el-image>
          </div>
        </div>
      </el-form-item>
      <el-row :gutter="10">
        <el-col :span="16" v-if="intent">
@@ -205,6 +226,7 @@
<script>
import store from "@/store";
import { getToken } from "@/utils/auth";
export default {
  data() {
@@ -217,6 +239,10 @@
          url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
        },
      ],
      headers: {
        Authorization: "Bearer " + getToken(),
      },
      uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadSort",
      whether: 1, //1为关键词,2为否定关键词
      inputValue: "",
      inputVisible: false,
@@ -364,6 +390,13 @@
      console.log(this.TargetoptionList);
      this.$emit("handleSelectionChange", selection);
    },
    // 选项文件上传
    handleChange(item, response, file, fileList) {
      let index = this.TargetoptionList.findIndex(
        (obj) => obj.id == item.id && obj.name == item.name
      );
      this.TargetoptionList[index].picturePath = response.url;
    },
  },
};
</script>
src/views/knowledge/questionbank/particulars/index.vue
@@ -187,6 +187,28 @@
              ></el-input>
            </el-form-item>
            <el-form-item label="题干文件" prop="sickness">
              <div style="width: 40vw">
                <el-upload
                  class="upload-demo"
                  :action="uploadImgUrl"
                  :headers="headers"
                  :accept="'image/*,video/*'"
                  :on-change="handleChangetg"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
                <div style="margin: 20px">
                  <el-image
                    style="width: 100px; height: 100px"
                    :src="url"
                    :preview-src-list="[...url]"
                  >
                  </el-image>
                </div>
              </div>
            </el-form-item>
            <el-row>
              <el-form-item label="标签" prop="desc">
                <div class="xinz-inf">
@@ -273,54 +295,6 @@
                </div>
              </el-form-item>
            </el-row>
            <!-- <el-form-item label="通知变量" prop="name">
              <div style="margin-bottom: 5px" v-for="item in variablelist">
                <el-row>
                  <el-col :span="5">
                    <el-input
                      v-model="item.variatename"
                      placeholder="请输入变量名"
                    ></el-input>
                  </el-col>
                  <el-col :span="8" :offset="1">
                    <el-input
                      v-model="item.variate"
                      placeholder="请输入变量内容"
                    ></el-input>
                  </el-col>
                  <el-col :span="8" :offset="1">
                    <el-button
                      type="success"
                      icon="el-icon-plus"
                      circle
                      @click="addvariable(item)"
                    ></el-button>
                    <el-button
                      v-if="!item.default"
                      type="danger"
                      icon="el-icon-delete"
                      circle
                      @click="delvariable(item)"
                    ></el-button>
                  </el-col>
                </el-row>
              </div>
            </el-form-item>
            <el-row>
              <el-col :span="24">
                <div
                  style="display: flex; margin-left: 66px; margin-bottom: 10px"
                >
                  <div
                    v-for="item in variablelist"
                    class="tsgname"
                    @click="tsgnameto(item)"
                  >
                    {{ item.variatename }}
                  </div>
                </div>
              </el-col></el-row
            > -->
          </div>
          <div v-if="topicobj.scriptType != 3">
            <div class="headline">
@@ -399,6 +373,27 @@
                  </el-input
                ></el-form-item>
              </el-row>
              <el-form-item label="选项文件" prop="sickness">
                <div style="width: 40vw">
                  <el-upload
                    class="upload-demo"
                    :action="uploadImgUrl"
                    :headers="headers"
                    :accept="'image/*,video/*'"
                    :on-success="handleChange.bind(this, item)"
                  >
                    <el-button size="small" type="primary">点击上传</el-button>
                  </el-upload>
                  <div style="margin: 20px">
                    <el-image
                      style="width: 100px; height: 100px"
                      :src="item.picturePath"
                      :preview-src-list="[...item.picturePath]"
                    >
                    </el-image>
                  </div>
                </div>
              </el-form-item>
            </div>
          </div>
        </el-form>
@@ -504,6 +499,7 @@
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
import { getToken } from "@/utils/auth";
export default {
  data() {
@@ -511,6 +507,10 @@
      topicobj: {
        svyLibScriptOptions: [],
      },
      headers: {
        Authorization: "Bearer " + getToken(),
      },
      uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadSort",
      inputVisible: false,
      inputValue: "",
      currentInputId: "",
@@ -526,6 +526,11 @@
        { variatename: "姓名", variate: "${name}", default: 1 },
        { variatename: "电话", variate: "${phone}", default: 1 },
        { variatename: "病情", variate: "${illness}", default: 1 },
      ],
      url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
      srcList: [
        "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg",
        "https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg",
      ],
      // 查询参数
      queryParams: {
@@ -998,9 +1003,22 @@
    // 筛选错误路线
    screen(data) {
      const arraysGreaterThan10 = data.filter((arr) => this.sumArray(arr) > 21);
      console.log(arraysGreaterThan10, "筛选错误路线大于13分");
    },
    // 选项文件上传
    handleChange(item, response, file, fileList) {
      let index = this.topicobj.svyLibScriptOptions.findIndex(
        (obj) => obj.id == item.id && obj.name == item.name
      );
      this.topicobj.svyLibScriptOptions[index].picturePath = response.url;
    },
    // 题干文件上传
    handleChangetg(item, file, fileList) {
      let index = this.topicobj.svyLibScriptOptions.findIndex(
        (obj) => obj.id == item.id && obj.name == item.name
      );
      this.topicobj.svyLibScriptOptions[index].picturePath = file.response.url;
    },
  },
};
</script>
src/views/knowledge/questionnaire/compilequer/index.vue
@@ -97,21 +97,6 @@
            </el-input
          ></el-form-item>
          <el-form-item label="文件" prop="sickness">
            <div style="width: 40%">
              <el-upload
                class="upload-demo"
                action="https://jsonplaceholder.typicode.com/posts/"
                :on-change="handleChange"
                :file-list="fileList"
              >
                <el-button size="small" type="primary">点击上传</el-button>
                <div slot="tip" class="el-upload__tip">
                  只能上传jpg/png/xsl文件,且不超过50mb
                </div>
              </el-upload>
            </div>
          </el-form-item>
          <el-row>
            <el-form-item label="标签" prop="desc">
              <div class="xinz-inf">
@@ -503,7 +488,6 @@
                      </el-col> -->
                    </el-row>
                    <el-row :gutter="10">
                      <el-form-item label="选中提示">
                        <el-input
                          style="width: 20vw"
@@ -526,11 +510,20 @@
                          type="textarea"
                          autosize
                          placeholder="此处放置患者回答"
                          v-model="radioas"
                          v-model="topicobj.reply"
                        >
                        </el-input
                      ></el-form-item>
                    </el-row>
                    <el-form-item label="分值">
                      <el-input
                        type="text"
                        placeholder="请输入选项分值"
                        v-model="topicobj.score"
                        show-word-limit
                      >
                      </el-input>
                    </el-form-item>
                  </div>
                </div>
              </el-form>
@@ -719,10 +712,15 @@
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
import { getToken } from "@/utils/auth";
export default {
  data() {
    return {
      headers: {
        Authorization: "Bearer " + getToken(),
      },
      uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadSort",
      sidecolumnrabs: "left", //方向
      Editprogress: 1, //编辑进度
      currentVersion: "1.2.3", //当前版本
@@ -1067,10 +1065,7 @@
        console.log("未找到该对象");
      }
    },
    // 控制文件
    handleChange(file, fileList) {
      this.fileList = fileList.slice(-3);
    },
    // 标签-----------------
    gettabList() {
      const tagqueryParams = {
src/views/outsideChainwt.vue
@@ -113,7 +113,7 @@
      let form = {
        param1: this.encrypt(this.taskid),
        param2: this.encrypt(this.patid),
        ivrTaskcalldetailList: [],
        svyTasksingledetailList: [],
      };
      this.questionList.forEach((item) => {
        let optionarr = [];
@@ -123,10 +123,12 @@
        let ivrTaskcalldetail = {
          asrtext: item.asrtext,
          valueType: item.valueType,
          questiontext: item.questiontext,
          questionvoice: item.questionvoice,
          scriptContent: item.scriptContent,
          targetoptions: optionarr.join(","),
        };
        form.ivrTaskcalldetailList.push(ivrTaskcalldetail);
        form.svyTasksingledetailList.push(ivrTaskcalldetail);
      });
      console.log(form, "form");
src/views/patient/propaganda/QuestionnaireTask.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="请选择"
@@ -669,31 +479,59 @@
      <div class="preview-left">
        <!-- 单选 -->
        <div
          class="topic-dev"
          v-for="(item, index) in questionList"
          :key="item.id"
          class="scriptTopic-dev"
          v-for="item in questionList"
          :key="item.sort"
          v-if="item.scriptType == 1"
        >
          <div class="dev-text">
            {{ index + 1 }}、<span>{{ item.script }}</span>
            {{ item.sort }}、[单选]<span>{{ item.scriptContent }}</span>
          </div>
          <div class="dev-xx" v-if="item.scripttype != 3">
            <el-radio-group v-model="item.radio">
          <div class="dev-xx">
            <el-radio-group v-model="item.remark">
              <el-radio
                v-for="(items, index) in item.svyLibTemplateTargetoptions"
                :key="items.id"
                :label="items.id"
                >{{ items.optioncontent }}
              </el-radio>
                :key="index"
                :label="index"
                >{{ 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
          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>
@@ -703,7 +541,7 @@
      </span>
    </el-dialog>
    <el-drawer
      title="随访内容列表"
      title="问卷内容列表"
      :visible.sync="drawermb"
      direction="rtl"
      size="50%"
@@ -729,7 +567,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 +621,7 @@
                </el-select>
              </el-form-item>
              <el-form-item
                label="随访类型"
                label="问卷类型"
                prop="status"
                v-if="currenttype == 2 || currenttype == 3 || currenttype == 7"
              >
@@ -986,6 +824,7 @@
      multiple: true,
      // 用户表格数据
      userList: [], //模版列表
      multiplechoice: [], //多选结果
      patientuserList: [], //选择患者列表
      sonuserList: [], //选中患者列表
      delvariableList: [], //删除变量临时存储
@@ -1106,7 +945,11 @@
      this.currenttype = this.$route.query.type;
      this.title = "问卷内容列表";
      this.tableLabel = this.tableLabelwj;
      this.checkboxlist = ["线下(纸质)", "线上(短信/钉钉的文本、问卷链接)"];
      this.checkboxlist = [
        "线下(纸质)",
        "线上(短信/钉钉的文本、问卷链接)",
        "微信公众号",
      ];
      getQtemplatelist(queryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
@@ -1159,11 +1002,10 @@
        this.libId = row.svyid;
        console.log(row, "row");
        this.Tasktemplate = row;
        this.questionList = row.svyLibScripts;
        this.questionList = row.svyTemplateLibScripts;
        this.previewtf = true;
        this.previewid = row.svyid;
        console.log(this.questionList, "questionList");
        this.Variablehandling(row.svyLibScripts, 1);
        this.Variablehandling(row.svyTemplateLibScripts, 1);
      } else if (type == 2) {
      } else if (type == 3) {
      }
@@ -1172,10 +1014,8 @@
    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) {
@@ -1193,6 +1033,7 @@
            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);
      }
@@ -1443,10 +1284,11 @@
    previewFn() {
      let id = this.Tasktemplate.id;
      this.Tasktemplate.id = null;
      this.Tasktemplate.svyLibScripts.svyTaskTemplateTargetoptions =
        this.Tasktemplate.svyLibScripts.svyLibTemplateTargetoptions;
      console.log(this.Tasktemplate);
      this.Tasktemplate.svyTemplateLibScripts.svyTaskTemplateTargetoptions =
        this.Tasktemplate.svyTemplateLibScripts.svyLibTemplateTargetoptions;
      this.Tasktemplate.svyTaskTemplateScriptVOS =
        this.Tasktemplate.svyLibScripts;
        this.Tasktemplate.svyTemplateLibScripts;
      this.Tasktemplate.templateid = id;
      this.Tasktemplate.isoperation = 1;
      TaskQuestioncomit(this.Tasktemplate).then((response) => {
@@ -1522,6 +1364,7 @@
    0 0 6px 0 rgba(0, 0, 0, 0.04);
}
.examine-jic {
  margin: 20px;
  .headline {
    font-size: 24px;
    border-left: 5px solid #41a1be;
@@ -1588,7 +1431,7 @@
  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);
  .topic-dev {
  .scriptTopic-dev {
    margin-bottom: 25px;
    font-size: 20px !important;
    .dev-text {