WXL
2024-11-01 0c26cb58f143c56f3753f4745519502222cde4ff
src/views/repositoryai/templateku/configurat/index.vue
@@ -234,6 +234,25 @@
              >疾病详情</el-button
            >
          </div>
          <el-form-item label="适用通用库" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.submoduleID"
              size="medium"
              multiple
              filterable
              placeholder="请选择通用库"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in generallist"
                :key="item.id"
                :label="item.extName"
                :value="item.id"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="适用院区" prop="region">
            <el-select
              style="width: 500px"
@@ -269,7 +288,7 @@
                    class="ruleFormaa"
                    v-for="item in flatArray"
                    :key="item.deptCode"
                    :label="item.deptName"
                    :label="item.label"
                    :value="item.deptCode"
                  >
                  </el-option>
@@ -291,12 +310,32 @@
                  <el-option
                    class="ruleFormaa"
                    v-for="item in flatArray"
                    :key="item.districtCode"
                    :label="item.districtName"
                    :value="item.districtCode"
                    :key="item.deptCode"
                    :label="item.label"
                    :value="item.deptCode"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-row>
            <el-col :span="12"
              ><el-form-item label="开场白" prop="revisitBefore">
                <el-input
                  type="textarea"
                  :rows="3"
                  v-model="ruleForm.revisitBefore"
                  placeholder="请输入开场白"
                /> </el-form-item
            ></el-col>
            <el-col :span="12"
              ><el-form-item label="结束语" prop="revisitAfter">
                <el-input
                  type="textarea"
                  :rows="3"
                  v-model="ruleForm.revisitAfter"
                  placeholder="请输入结束语"
                /> </el-form-item
            ></el-col>
          </el-row>
@@ -453,28 +492,20 @@
              >
                <div class="headline">题目设置详情</div>
                <el-row>
                  <el-col :span="12"
                  <el-col :span="24"
                    ><el-form-item label="题目标题">
                      <el-input
                        v-model="topicobj.scriptTopic"
                        placeholder="请从左侧列表选择"
                      ></el-input> </el-form-item
                  ></el-col>
                  <el-col :span="12">
                    <el-form-item label="下题跳转">
                      <el-input
                        v-model="topicobj.nextScriptno"
                        placeholder="请输入题号"
                      ></el-input>
                    </el-form-item>
                  </el-col>
                </el-row>
                <el-row>
                  <el-col :span="20"
                  <el-col :span="24"
                    ><el-form-item label="问题话术">
                      <el-input
                        type="textarea"
                        style="width: 400px"
                        style="width: 600px"
                        v-model="topicobj.scriptContent"
                        placeholder="请从左侧列表选择"
                      ></el-input> </el-form-item
@@ -487,6 +518,13 @@
                        v-model="topicobj.sort"
                        placeholder="请从左侧列表选择"
                        :disabled="true"
                      ></el-input> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                    ><el-form-item label="下题跳转">
                      <el-input
                        v-model="topicobj.nextScriptno"
                        placeholder="请输入题号"
                      ></el-input> </el-form-item
                  ></el-col>
                </el-row>
@@ -533,9 +571,30 @@
                    <el-radio :label="0">否</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item label="选中提示" v-if="topicobj.scriptType != 1">
                  <el-input
                    style="width: 24vw"
                    type="textarea"
                    autosize
                    placeholder="请输入内容"
                    v-model="topicobj.prompt"
                  >
                  </el-input
                ></el-form-item>
                <el-row>
                  <el-col :span="24"
                    ><el-form-item label="语音文本">
                      <el-input
                        type="textarea"
                        style="width: 600px"
                        v-model="topicobj.ivrtext"
                        placeholder="请从左侧列表选择"
                      ></el-input> </el-form-item
                  ></el-col>
                </el-row>
                <el-row>
                  <el-col :span="6">
                    <el-form-item label="问题语音" prop="verbaltrickyy">
                    <el-form-item label="语音文件" prop="verbaltrickyy">
                      <el-upload
                        class="upload-demo"
                        :action="uploadImgUrl"
@@ -556,10 +615,10 @@
                  <el-col :span="6">
                    <span
                      style="font-size: 18px; margin-top: 10px"
                      v-if="topicobj.scriptVoice"
                      v-if="topicobj.ivrVoice"
                      >{{
                        topicobj.scriptVoice.substring(
                          topicobj.scriptVoice.lastIndexOf("/") + 1
                        topicobj.ivrVoice.substring(
                          topicobj.ivrVoice.lastIndexOf("/") + 1
                        )
                      }}</span
                    >
@@ -567,8 +626,8 @@
                  <el-col :span="6">
                    <mini-audio
                      :audio-source="
                        topicobj.scriptVoice
                          ? topicobj.scriptVoice
                        topicobj.ivrVoice
                          ? topicobj.ivrVoice
                          : 'https://example.com/example.mp3'
                      "
                    ></mini-audio>
@@ -607,6 +666,7 @@
                    @branchFlagfn="branchFlagfn"
                    :branchFlag="topicobj.branchFlag ? true : false"
                    :controlsc="false"
                    :scriptType="topicobj.scriptType"
                  />
                  <!-- 无匹配类型 -->
                  <div class="topicxq">
@@ -869,6 +929,8 @@
    <!-- 添加题目弹窗 -->
    <el-drawer
      title="添加题目"
      @close="$forceUpdate()"
      @closed="$forceUpdate()"
      :visible.sync="drawer"
      custom-class="demo-drawer"
      size="50%"
@@ -999,7 +1061,7 @@
                    <el-col :span="18"
                      ><el-form-item label="问题话术">
                        <el-input
                          style="width: 400px"
                          style="width: 600px"
                          type="textarea"
                          v-model="indexform.scriptContent"
                          placeholder="请从左侧列表选择"
@@ -1039,9 +1101,33 @@
                        </el-select> </el-form-item
                    ></el-col> -->
                  </el-row>
                  <el-form-item
                    label="选中提示"
                    v-if="topicobj.scriptType != 1"
                  >
                    <el-input
                      style="width: 24vw"
                      type="textarea"
                      autosize
                      placeholder="请输入内容"
                      v-model="indexform.prompt"
                    >
                    </el-input
                  ></el-form-item>
                  <el-row :gutter="10">
                    <el-col :span="18"
                      ><el-form-item label="语音文本">
                        <el-input
                          style="width: 600px"
                          type="textarea"
                          v-model="indexform.ivrtext"
                          placeholder="请从左侧列表选择"
                        ></el-input> </el-form-item
                    ></el-col>
                  </el-row>
                  <el-row>
                    <el-col :span="6">
                      <el-form-item label="问题语音" prop="verbaltrickyy">
                      <el-form-item label="语音文件" prop="verbaltrickyy">
                        <el-upload
                          class="upload-demo"
                          :action="uploadImgUrl"
@@ -1062,10 +1148,10 @@
                    <el-col :span="6">
                      <span
                        style="font-size: 18px; margin-top: 10px"
                        v-if="indexform.scriptVoice"
                        v-if="indexform.ivrVoice"
                        >{{
                          indexform.scriptVoice.substring(
                            indexform.scriptVoice.lastIndexOf("/") + 1
                          indexform.ivrVoice.substring(
                            indexform.ivrVoice.lastIndexOf("/") + 1
                          )
                        }}</span
                      >
@@ -1073,8 +1159,8 @@
                    <el-col :span="6">
                      <mini-audio
                        :audio-source="
                          indexform.scriptVoice
                            ? indexform.scriptVoice
                          indexform.ivrVoice
                            ? indexform.ivrVoice
                            : 'https://example.com/example.mp3'
                        "
                      ></mini-audio>
@@ -1372,7 +1458,7 @@
import { deptTreeSelect } from "@/api/system/user";
export default {
  name: "Tpuconfigurat",
  name: "tpuconfigurat",
  components: { Regular, OptionalForm },
  data() {
    return {
@@ -1399,14 +1485,18 @@
      inputValue: "",
      inputValueillness: "",
      topicobj: {
        noMatchText: "",
        noClearlyText: "",
        slienceText: "",
        noMatchText: "抱歉,我没有听懂,您能再说一遍吗?",
        noClearlyText: "抱歉,我没有听清您说的话,您可以再说一次吗?",
        slienceText: "抱歉,我没有听到您说的话,您可以再说一次吗?",
      },
      total: 1,
      id: "",
      ruleForm: {
        templateName: "",
        revisitBefore:
          "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访随访。",
        revisitAfter:
          "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
        ivrLibaTemplateTagList: [],
        ivrLibaTemplateScriptVOList: [],
        tempDetpRelevances: [],
@@ -1464,8 +1554,9 @@
        { variatename: "电话", variate: "${phone}", default: 1 },
        { variatename: "病情", variate: "${illness}", default: 1 },
      ],
      deptList: [],
      flatArray:[],
      deptlist: [],
      hosplist: [],
      flatArray: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
      variablelist: [
@@ -1474,6 +1565,10 @@
          value: "表示患者的标识",
        },
      ],
      queryParamsdept: {
        tempid: "",
        type: 2,
      },
      valssu: [],
      radio: "",
@@ -1495,9 +1590,6 @@
    };
  },
  activated() {
    console.log(this.id);
    console.log(this.$route.query.id);
    if (this.id != this.$route.query.id) {
      console.log(1);
@@ -1556,6 +1648,7 @@
    RoutingDataProcessing() {
      this.id = this.$route.query.id;
      this.task = this.$route.query.task;
      this.queryParamsdept.tempid = this.id;
    },
    // 获取科室树
    getDeptTree() {
@@ -1563,27 +1656,26 @@
      deptTreeSelect().then((response) => {
        this.deptOptions = response.data;
        this.flatArray = this.flattenArray(response.data);
        console.log(this.flatArray,'扩展数据');
      });
    },
    flattenArray(multiArray) {
      let result = [];
      // 递归函数,用于将多级数组转换为一维数组
      function flatten(element, parentId) {
        // 克隆元素以避免修改原始数据
        let item = JSON.parse(JSON.stringify(element));
        if (parentId !== undefined) {
          item.parentId = parentId; // 使用字符串或数字作为键
        }
        result.push(item); // 将元素添加到结果数组
      // 递归函数,用于将多级数组转换为一维数组,只包含最底层的元素
      function flatten(element) {
        // 如果当前元素有子元素,继续递归
        if (element.children && element.children.length > 0) {
          element.children.forEach((child) => flatten(child, element.id)); // 递归处理子元素
          element.children.forEach((child) => flatten(child));
        } else {
          // 克隆元素以避免修改原始数据
          let item = JSON.parse(JSON.stringify(element));
          result.push(item); // 将最底层的元素添加到结果数组
        }
      }
      multiArray.forEach((element) => flatten(element, null)); // 从顶层元素开始递归
      return result; // 返回一维数组
      // 从顶层元素开始递归
      multiArray.forEach((element) => flatten(element));
      return result; // 返回只包含最底层元素的一维数组
    },
    // 获取表单数据
    getvFollowup() {
@@ -1592,9 +1684,11 @@
          if (res.code == 200) {
            console.log(2211);
            this.ruleForm = res.data;
            this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames);
            if (this.ruleForm.deptNames)
              this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames);
            this.ruleForm.suitway = this.ruleForm.suitway.split(",");
            this.ruleForm.campus = this.ruleForm.campus.split(",");
            if (this.ruleForm.campus)
              this.ruleForm.campus = this.ruleForm.campus.split(",");
            this.ruleForm.submoduleID = this.ruleForm.submoduleID.split(",");
            this.ruleForm.submoduleID = this.ruleForm.submoduleID.map((res) => {
              return Number(res);
@@ -1628,10 +1722,6 @@
        this.dynamicTags = [];
        this.tempDetpRelevanceslist = [];
      }
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
    },
    // 附属数据表
    auxiliary() {
@@ -1641,24 +1731,29 @@
      });
      this.tempDetpRelevanceslist = [];
      this.tempbelongWards = [];
      depthospgetsonlist(this.queryParamsdept).then((res) => {
        if (res.code == 200) {
          let arr = res.rows;
          arr.forEach((item) => {
            if (item.deptType == 1) {
              this.deptlist.push(item);
              this.tempDetpRelevanceslist.push(item.deptCode);
            } else if (item.deptType == 2) {
              this.hosplist.push(item);
              this.tempbelongWards.push(item.deptCode);
            }
          });
        }
      });
      // 科室
      listDept(this.queryParams).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
      if (this.id) {
        depthospgetsonlist(this.queryParamsdept).then((res) => {
          if (res.code == 200) {
            let arr = res.rows;
            console.log(arr, "arr");
            arr.forEach((item) => {
              if (item.deptType == 1) {
                console.log(this.deptlist, "11");
                this.deptlist.push(item);
                console.log("22");
                this.tempDetpRelevanceslist.push(item.deptCode);
              } else if (item.deptType == 2) {
                this.hosplist.push(item);
                this.tempbelongWards.push(item.deptCode);
                console.log("33");
              }
            });
          }
        });
      }
      // 疾病
      getillnesslist({
        pageNum: 1,
@@ -1713,20 +1808,47 @@
            return item;
          });
      });
      compileFollowup(this.ruleForm).then((res) => {
        if (res.code == 200) {
          this.$modal.msgSuccess("编辑成功");
          this.$modal.closeLoading();
          this.confirmillness(res.data);
          const obj = { path: "/knowledge/templateku/" };
          this.$tab.closeOpenPage(obj);
        } else {
          this.$modal.msgError("保存失败");
          this.$modal.closeLoading();
        }
      this.delScriptVOList.forEach((item) => {
        this.ruleForm.ivrLibaTemplateScriptVOList.push(item);
      });
      // compileFollowup(this.ruleForm).then((res) => {
      //   if (res.code == 200) {
      //     this.$modal.msgSuccess("编辑成功");
      //     this.$modal.closeLoading();
      //     this.confirmillness(res.data);
      //     // window.location.reload();
      //     // const obj = { path: "/knowledge/tpuconfigurat/?id=" + this.id };
      //     // this.$tab.closeOpenPage(obj);
      //   } else {
      //     this.$modal.msgError("保存失败");
      //     this.$modal.closeLoading();
      //   }
      // });
      if (this.id) {
        this.ruleForm.isoperation = 2;
        this.ruleForm.tempDetpRelevances = [];
        compileFollowup(this.ruleForm).then((res) => {
          this.$modal.msgSuccess("修改成功");
          this.confirmillness();
          this.putbelongDepts(this.id);
          this.$modal.closeLoading();
          // this.$router.go(-1);
          window.location.reload();
        });
      } else {
        this.ruleForm.isoperation = 1;
        this.ruleForm.version = this.ruleForm.version
          ? this.ruleForm.version
          : "1.0";
        this.ruleForm.tempDetpRelevances = [];
        compileFollowup(this.ruleForm).then((res) => {
          this.$modal.msgSuccess("新增成功");
          this.confirmillness(res.data);
          this.putbelongDepts(res.data);
          this.$modal.closeLoading();
          this.$router.go(-1);
        });
      }
    },
    confirmillness(guid) {
      this.illnesslist.forEach((item, index) => {
@@ -1750,9 +1872,7 @@
    Departmenttreatment() {
      this.$modal.loading("正在修正保存数据,请稍候...");
      this.tempDetpRelevanceslist.forEach((item) => {
        console.log(item);
        let result = this.deptlist.some((obj) => obj.deptCode == item);
        console.log(this.result, "result");
        if (!result) {
          this.tempDetpRelevanceslistform.push({
@@ -1760,7 +1880,7 @@
            longTemp: this.ruleForm.longTemp,
            deptCode: item,
            tempid: this.id,
            type: 1,
            type: 2,
          });
        }
      });
@@ -1772,7 +1892,8 @@
            longTemp: this.ruleForm.longTemp,
            deptCode: item,
            tempid: this.id,
            type: 1,
            type: 2,
            // 1 : 问卷模板库id、11:问卷任务模板库id;2 :语音问卷库id、21:语音任务模板库id,3 : 宣教模板库id,33:宣教任务模板库id
          });
        }
      });
@@ -1783,6 +1904,13 @@
    },
    // 保存科室/病区
    putbelongDepts(id) {
      this.tempDetpRelevanceslistform.forEach((item) => {
        if (!item.tempid) item.tempid = id;
      });
      this.tempbelongWardsform.forEach((item) => {
        if (!item.tempid) item.tempid = id;
      });
      if (this.tempDetpRelevanceslistform.length > 0) {
        depthospgetson(this.tempDetpRelevanceslistform).then((res) => {
          if (res.code == 200) {
@@ -1831,7 +1959,7 @@
      console.log(response);
      console.log(additionalParam);
      if (additionalParam == 1) {
        this.indexform.scriptVoice = response.url;
        this.indexform.ivrVoice = response.url;
      } else if (additionalParam == 2) {
        this.indexform.nomatchvoice = response.url;
      } else if (additionalParam == 3) {
@@ -1846,7 +1974,7 @@
      console.log(response);
      console.log(additionalParam);
      if (additionalParam == 1) {
        this.topicobj.scriptVoice = response.url;
        this.topicobj.ivrVoice = response.url;
      } else if (additionalParam == 2) {
        this.topicobj.nomatchvoice = response.url;
      } else if (additionalParam == 3) {
@@ -1872,13 +2000,10 @@
        tagcategoryid: "0",
      };
      listtag(tagqueryParams).then((response) => {
        console.log(response);
        this.optionstag = response.rows;
      });
    },
    handleClosetag(tag) {
      console.log(tag);
      console.log(this.dynamicTags.indexOf(tag));
      const lindex = this.dynamicTags.indexOf(tag);
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      this.ruleForm.ivrLibaTemplateTagList[lindex].isoperation = 3;
@@ -1965,7 +2090,6 @@
        });
        this.ruleForm.ivrLibaTemplateScriptVOList.push(res.data);
        this.sortFn();
        this.$forceUpdate();
        this.$modal.msgSuccess("添加成功");
      });
    },
@@ -1978,7 +2102,9 @@
            1
          );
          row.isoperation = 3;
          this.delScriptVOList.push(row);
          if (row.id) {
            this.delScriptVOList.push(row);
          }
          this.sortFn();
          this.$modal.msgSuccess("已删除,保存模板生效");
        })
@@ -2045,6 +2171,8 @@
          });
        }
      });
      this.$forceUpdate();
      console.log(this.ruleForm.ivrLibaTemplateScriptVOList);
    },
    // -----------------------话术选项
@@ -2114,7 +2242,11 @@
        .then((res) => {
          this.$router.push({
            path: "/knowledge/templateku/configurat/measurement",
            query: { id: this.id, name: this.ruleForm.templateName },
            query: {
              id: this.id,
              name: this.ruleForm.templateName,
              timeout: this.ruleForm.silencetime,
            },
          });
        })
        .catch(() => {});