WXL
2024-10-22 b10795e18a07b9beb72f25406f26f42491828be5
测试完成
已修改16个文件
909 ■■■■■ 文件已修改
src/components/Regular/index.vue 173 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/getters.js 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/knowledge/questionnaire/compilequer/index.vue 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/follow/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/PatientChart.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/behospitalized.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/hospital.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/index.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/outpatient.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/physical.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/Missioncreation.vue 323 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/QuestionnaireTask.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/particty.vue 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/index.vue 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/verbaltrick/particulars/index.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Regular/index.vue
@@ -1,7 +1,7 @@
<template>
  <div>
    <div class="topicxq" v-for="item in TargetoptionList">
      <el-form :inline="true" :rules="rules" :model="item">
      <el-form :inline="true" :rules="rules" :model="item" label-width="80px">
        <el-row :gutter="10">
          <el-col :span="12"
            ><el-form-item prop="targetvalue" label="选项名称">
@@ -36,7 +36,7 @@
          <el-col :span="20"
            ><el-form-item label="选项说明">
              <el-input
              style="width: 500px;"
                style="width: 500px"
                type="textarea"
                :rows="2"
                placeholder="请输入"
@@ -70,90 +70,95 @@
              </el-input> </el-form-item
          ></el-col>
        </el-row>
        <el-form-item label="关键字(含)" prop="desc" v-if="hasValue">
          <div class="xinz-inf">
            <el-tag
              :key="crux"
              type="success"
              v-for="crux in item.dynamiccruxs"
              closable
              effect="dark"
              :disable-transitions="false"
              @close="handleClosecrux(crux, item, 1)"
            >
              {{ crux }}
            </el-tag>
            <el-select
              v-model="inputValue"
              v-if="item.inputVisible"
              @change="handleInputConfirm(item)"
              filterable
              remote
              allow-create
              reserve-keyword
              default-first-option
              :loading="loading"
              placeholder="请选择"
            >
              <el-option
                v-for="items in regular"
                :key="items.label"
                :label="items.label"
                :value="items.label"
        <el-row>
          <el-form-item label="关键字(含)" prop="desc" v-if="hasValue">
            <div class="xinz-inf">
              <el-tag
                :key="crux"
                type="success"
                v-for="crux in item.dynamiccruxs"
                closable
                effect="dark"
                :disable-transitions="false"
                @close="handleClosecrux(crux, item, 1)"
              >
              </el-option>
            </el-select>
            <el-button
              v-else
              class="button-new-tag"
              size="small"
              @click="showInput(item)"
              >+ 新增</el-button
            >
          </div>
        </el-form-item>
        <el-form-item label="关键字(非)" prop="adesc" v-if="hasValue">
          <div class="xinz-inf">
            <el-tag
              :key="crux"
              type="warning"
              v-for="crux in item.nodynamiccruxs"
              closable
              effect="dark"
              :disable-transitions="false"
              @close="handleClosecrux(crux, item, 2)"
            >
              {{ crux }}
            </el-tag>
            <el-select
              v-model="inputValue"
              v-if="item.noinputVisible"
              @change="handleInputConfirm(item)"
              filterable
              remote
              allow-create
              reserve-keyword
              default-first-option
              :loading="loading"
              placeholder="请选择"
            >
              <el-option
                v-for="items in noregular"
                :key="items.value"
                :label="items.label"
                :value="items.label"
                {{ crux }}
              </el-tag>
              <el-select
                v-model="inputValue"
                v-if="item.inputVisible"
                @change="handleInputConfirm(item)"
                filterable
                remote
                allow-create
                reserve-keyword
                default-first-option
                :loading="loading"
                placeholder="请选择"
              >
              </el-option>
            </el-select>
            <el-button
              v-else
              class="button-new-tag"
              size="small"
              @click="showInputno(item)"
              >+ 新增</el-button
            >
          </div>
        </el-form-item>
                <el-option
                  v-for="items in regular"
                  :key="items.label"
                  :label="items.label"
                  :value="items.label"
                >
                </el-option>
              </el-select>
              <el-button
                v-else
                class="button-new-tag"
                size="small"
                @click="showInput(item)"
                >+ 新增</el-button
              >
            </div>
          </el-form-item>
        </el-row>
        <el-row>
          <el-form-item label="关键字(非)" prop="adesc" v-if="hasValue">
            <div class="xinz-inf">
              <el-tag
                :key="crux"
                type="warning"
                v-for="crux in item.nodynamiccruxs"
                closable
                effect="dark"
                :disable-transitions="false"
                @close="handleClosecrux(crux, item, 2)"
              >
                {{ crux }}
              </el-tag>
              <el-select
                v-model="inputValue"
                v-if="item.noinputVisible"
                @change="handleInputConfirm(item)"
                filterable
                remote
                allow-create
                reserve-keyword
                default-first-option
                :loading="loading"
                placeholder="请选择"
              >
                <el-option
                  v-for="items in noregular"
                  :key="items.value"
                  :label="items.label"
                  :value="items.label"
                >
                </el-option>
              </el-select>
              <el-button
                v-else
                class="button-new-tag"
                size="small"
                @click="showInputno(item)"
                >+ 新增</el-button
              >
            </div>
          </el-form-item>
        </el-row>
        <el-form-item label="选项文件" prop="sickness" v-if="Verbalproblem">
          <div style="width: 40vw">
            <el-upload
src/store/getters.js
@@ -382,7 +382,7 @@
  courtyardlist: (state) => [
    {
      value: "1",
      label: "之江院区",
      label: "潮王院区",
      raw: {
        cssClass: "",
        listClass: "",
@@ -390,20 +390,12 @@
    },
    {
      value: "2",
      label: "庆春院区",
      label: "申花院区",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: "3",
      label: "余杭院区",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    }
  ],
  // 语言
  languagelist: (state) => [
src/views/knowledge/questionnaire/compilequer/index.vue
@@ -1435,6 +1435,7 @@
        this.ruleForm.svyLibTemplateTagList.filter(
          (item) => item.isoperation != 3
        );
      if (this.ruleForm.suitway)
        this.ruleForm.suitway = this.ruleForm.suitway.split(",");
      this.delScriptVOList = [];
      this.tempDetpRelevanceslistform = [];
@@ -1455,7 +1456,6 @@
    this.appraiselist = store.getters.appraiselist;
    this.belongWards = store.getters.belongWards;
    this.belongDepts = store.getters.belongDepts;
    // this.test();
  },
@@ -1517,7 +1517,9 @@
          this.dynamicTags = this.ruleForm.svyLibTemplateTagList.map(
            this.processElement
          );
          this.ruleForm.suitway = this.ruleForm.suitway.split(",");
          console.log(this.dynamicTags, "this.dynamicTags");
          if (this.ruleForm.suitway)
            this.ruleForm.suitway = this.ruleForm.suitway.split(",");
        });
        getillness({ outid: this.id, type: 5 }).then((res) => {
          this.illnesslist = res.rows;
@@ -1559,6 +1561,24 @@
      if (!this.ruleForm.categoryid) {
        this.ruleForm.categoryid = -1;
      }
      // 题目保存处理
        //   提交
        this.ruleForm.svyTemplateLibScripts.forEach((res) => {
        if (!res.isoperation) {
          res.isoperation = 2;
        }
        res.ivrLibaScriptTargetoptionList =
          res.svyLibTemplateTargetoptions.map((item) => {
            if (!item.isoperation) {
              item.isoperation = 2;
              item.templateID = this.ruleForm.id;
            }
            return item;
          });
      });
      this.delScriptVOList.forEach((item)=>{
          this.ruleForm.svyTemplateLibScripts.push(item)
        })
      if (this.id) {
        this.ruleForm.isoperation = 2;
        this.ruleForm.tempDetpRelevances = null;
@@ -1567,7 +1587,8 @@
          this.confirmillness();
          this.putbelongDepts();
          this.$modal.closeLoading();
          this.$router.go(-1);
          // this.$router.go(-1);
          window.location.reload();
        });
      } else {
        this.ruleForm.isoperation = 1;
@@ -1586,7 +1607,6 @@
    },
    // 科室/院区处理
    Departmenttreatment() {
      this.tempDetpRelevanceslist.forEach((item) => {
        console.log(item);
        let result = this.deptlist.some((obj) => obj.deptCode == item);
@@ -1615,7 +1635,6 @@
        }
      });
      // return
      setTimeout(() => {
        this.submitForm();
@@ -1639,12 +1658,12 @@
      let result = this.hosplist
        .filter((item) => item.deptCode == row)
        .map((item) => item.id);
        if (result.length) {
          depthospgetsondel(result).then((res) => {
            if (res.code) {
            }
          });
        }
      if (result.length) {
        depthospgetsondel(result).then((res) => {
          if (res.code) {
          }
        });
      }
    },
    // 下一步
    nextstep() {
src/views/patient/follow/index.vue
@@ -518,7 +518,7 @@
    /** 下载模板操作 */
    importTemplate() {
      this.download(
        "system/user/importTemplate",
        "smartor/import/getImportPatTemplate",
        {},
        `user_template_${new Date().getTime()}.xlsx`
      );
src/views/patient/patient/PatientChart.vue
@@ -942,7 +942,7 @@
    /** 下载模板操作 */
    importTemplate() {
      this.download(
        "system/user/importTemplate",
        "smartor/import/getImportPatTemplate",
        {},
        `user_template_${new Date().getTime()}.xlsx`
      );
src/views/patient/patient/behospitalized.vue
@@ -720,7 +720,7 @@
    /** 下载模板操作 */
    importTemplate() {
      this.download(
        "system/user/importTemplate",
        "smartor/import/getImportPatTemplate",
        {},
        `user_template_${new Date().getTime()}.xlsx`
      );
src/views/patient/patient/hospital.vue
@@ -692,7 +692,7 @@
    /** 下载模板操作 */
    importTemplate() {
      this.download(
        "system/user/importTemplate",
        "smartor/import/getImportPatTemplate",
        {},
        `user_template_${new Date().getTime()}.xlsx`
      );
src/views/patient/patient/index.vue
@@ -649,20 +649,19 @@
          :limit="1"
          accept=".xlsx, .xls"
          :headers="upload.headers"
          :action="upload.url + '?updateSupport=' + upload.updateSupport"
          :action="upload.url"
          :disabled="upload.isUploading"
          :on-progress="handleFileUploadProgress"
          :on-success="handleFileSuccess"
          :auto-upload="false"
          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">
            <!-- <div class="el-upload__tip" slot="tip">
              <el-checkbox v-model="upload.updateSupport" />
              是否更新已经存在的用户数据
            </div>
            </div> -->
            <span>仅允许导入xls、xlsx格式文件。</span>
            <el-link
              type="primary"
@@ -671,7 +670,7 @@
              @click="importTemplate"
              >下载模板
            </el-link>
            <el-link
            <!-- <el-link
              type="success"
              :underline="false"
              style="font-size: 24px; vertical-align: baseline"
@@ -679,7 +678,7 @@
              target="_blank"
            >
              查看模板</el-link
            >
            > -->
          </div>
        </el-upload>
      </div>
@@ -950,7 +949,7 @@
        // 设置上传的请求头部
        headers: { Authorization: "Bearer " + getToken() },
        // 上传的地址
        url: process.env.VUE_APP_BASE_API + "/system/user/importData",
        url: process.env.VUE_APP_BASE_API + "/smartor/import/importPatInfo",
      },
      // 查询参数
      queryParams: {
@@ -1227,7 +1226,7 @@
    /** 下载模板操作 */
    importTemplate() {
      this.download(
        "system/user/importTemplate",
        "smartor/import/getImportPatTemplate",
        {},
        `user_template_${new Date().getTime()}.xlsx`
      );
src/views/patient/patient/outpatient.vue
@@ -681,7 +681,7 @@
    /** 下载模板操作 */
    importTemplate() {
      this.download(
        "system/user/importTemplate",
        "smartor/import/getImportPatTemplate",
        {},
        `user_template_${new Date().getTime()}.xlsx`
      );
src/views/patient/patient/physical.vue
@@ -858,7 +858,7 @@
    /** 下载模板操作 */
    importTemplate() {
      this.download(
        "system/user/importTemplate",
        "smartor/import/getImportPatTemplate",
        {},
        `user_template_${new Date().getTime()}.xlsx`
      );
src/views/patient/propaganda/Missioncreation.vue
@@ -383,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>
@@ -437,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
@@ -506,6 +511,7 @@
        >
      </span>
    </el-dialog>
    <!-- 模板预览 -->
    <el-dialog title="模板预览" :visible.sync="previewtf" width="60%">
      <div class="preview-left">
        <!-- 单选 -->
@@ -515,6 +521,98 @@
        <!-- <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="宣教内容列表"
@@ -643,7 +741,7 @@
  getheLibraryAssort,
} from "@/api/AiCentre/index";
import { listDept } from "@/api/system/dept";
import { getToken } from "@/utils/auth";
import SFtable from "@/components/SFtable"; //表格组件
export default {
@@ -671,6 +769,7 @@
      belongWards: [],
      tableLabel: [],
      questionList: [],
      uploadingData: [],
      htmlRichText: "<p>Hello, <strong>world</strong>!</p>",
      // 患者表单
      tableLabelhz: [
@@ -720,6 +819,22 @@
        { 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: [], //计算日期
@@ -815,12 +930,30 @@
          label: "出院病人",
        },
        {
          value: "4",
          label: "在院病人",
        },
        {
          value: "2",
          label: "门诊病人",
        },
        {
          value: "3",
          label: "体检病人",
        },
      ],
      source: [
        {
          value: 0,
          label: "所属患者",
        },
        {
          value: 1,
          label: "科室患者",
        },
        {
          value: 2,
          label: "病区患者",
        },
      ],
      quote: false,
@@ -971,6 +1104,7 @@
        this.form.isoperation = 2;
      } else {
        this.form.isoperation = 1;
        this.form.sendState=1;
      }
      if (!this.form.type) {
        this.form.type = this.$route.query.type;
@@ -1048,35 +1182,7 @@
        '<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) {
      this.allpids = [];
@@ -1109,9 +1215,31 @@
      }
      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) => {
@@ -1128,7 +1256,7 @@
    handleExport() {},
    // 选择患者表数据
    handleSelectionChange(selection) {
    handleSelectionChange(selection,type) {
      console.log("多选患者");
      this.SelectPatientslist = selection;
      this.multiple = !selection.length;
@@ -1139,7 +1267,14 @@
        if (!isExist) {
          item.isoperation = 1;
          item.patid = item.id;
          item.hospType = this.patientqueryParams.allhosp;
          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);
        }
@@ -1232,7 +1367,7 @@
            this.overallCase = this.form.patTaskRelevances.concat();
            this.checkList = this.form.preachform.split(",");
            console.log(this.form.showDate, "this.form");
            if (this.form.daytime)this.daytime = this.form.showDate.split(",");
            if (this.form.daytime) this.daytime = this.form.showDate.split(",");
            console.log(this.newadd, "依照");
            if (this.form.showTimeMorn) {
@@ -1426,6 +1561,47 @@
        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;
      console.log(response, "文件");
      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;
    },
  },
};
</script>
@@ -1561,6 +1737,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;
src/views/patient/propaganda/QuestionnaireTask.vue
@@ -1538,7 +1538,7 @@
      this.overallCase.forEach((item) => {
        this.allpids.push(item.patid);
      });
      if (this.patientqueryParams.allhosp == 1) {
      if (this.patientqueryParams.allhosp == 1||(this.patientqueryParams.allhosp == 1&&this.patientqueryParams.cry == 1)) {
        this.tableLabelhz = [
          // { label: "入院日期", width: "170", prop: "starttime" },
          { label: "出院日期", width: "150", prop: "endtime" },
@@ -1576,6 +1576,7 @@
        this.patientqueryParams.cry = 1;
      } else if (this.patientqueryParams.allhosp == 4) {
        this.patientqueryParams.cry = 0;
        this.patientqueryParams.allhosp = '1';
      }
      // 来源判断
src/views/patient/propaganda/particty.vue
@@ -70,16 +70,34 @@
                  />
                </el-form-item>
                <el-form-item label="服务形式">
                  <el-checkbox-group v-model="checkList">
                  <el-checkbox-group
                    v-model="checkList"
                    @change="handleCheckedCitiesChange"
                  >
                    <el-checkbox
                      v-for="(item, index) in checkboxlist"
                      :key="index"
                      :label="item.value"
                       @change="checkboxChange($event, item.value)"
                    >
                      {{ item.label }}</el-checkbox
                    >
                  </el-checkbox-group>
                </el-form-item>
                <div class="xinz-infs">
                  <el-form-item label="服务执行顺序" prop="daytime">
                    <el-tag
                      :key="tag.label"
                      type="success"
                      v-for="(tag, index) in foncheckList"
                      closable
                      :disable-transitions="false"
                      @close="handleClosetag(tag)"
                    >
                      ({{index+1}}){{ tag.label }}
                    </el-tag>
                  </el-form-item>
                </div>
                <el-form-item label="是否长期" prop="longTask">
                  <el-radio-group v-model="form.longTask">
                    <el-radio :label="0">普通任务</el-radio>
@@ -977,6 +995,12 @@
        pageSize: 10,
      },
      checkList: [],
      foncheckList: [],
      formatvalue: {
        format1: "",
        format2: "",
        format3: "",
      },
      deliverytopqueryParams: {
        pageNum: 1, //
        pageSize: 10,
@@ -1052,7 +1076,7 @@
      SelectPatientslist: [],
      form: {
        patTaskRelevances: [],
        sendType: 1,
        sendType: 3,
        longTask: 0,
        templatename: "",
        templateid: null,
@@ -1444,7 +1468,6 @@
            this.objyl.suitway = this.objyl.suitway.split(",");
            this.questionList = res.data.ivrLibaTemplateScriptVOList;
            this.getillness(row.id);
        console.log(res.data, "11");
            this.Variablehandling(res.data.ivrLibaTemplateScriptVOList, 1);
            this.previewtf = true;
          }
@@ -1881,14 +1904,14 @@
      if (this.form.templateid) {
        deleteTaskparticty(this.form.templateid).then((res) => {
          if (res.code == 200) {
              Taskparticty(this.objyl).then((response) => {
                this.previewtf = false;
                this.form.libtemplateid = this.objyl.id;
                this.form.templateid = response.data;
                this.putbelongDepts(response.data);
                this.form.templatename = this.objyl.templateName;
                this.$modal.msgSuccess("选择模板成功");
              });
            Taskparticty(this.objyl).then((response) => {
              this.previewtf = false;
              this.form.libtemplateid = this.objyl.id;
              this.form.templateid = response.data;
              this.putbelongDepts(response.data);
              this.form.templatename = this.objyl.templateName;
              this.$modal.msgSuccess("选择模板成功");
            });
          }
        });
      } else {
@@ -1923,33 +1946,24 @@
        }
      });
    },
    // 处理服务形式
    formatFn(type) {
      let list = [];
      let formlist = [];
      if (type == 1) {
        this.preachform.forEach((item) => {
          this.checkList.forEach((obj) => {
            if (item.label == obj) {
              list.push(item.value);
            }
          });
        });
        console.log(list, "list");
        this.form.preachform = list.join(",");
      } else {
        console.log(this.form.preachform, "this.form.preachform");
        formlist = this.form.preachform.split(",");
        console.log(11);
        this.preachform.forEach((item) => {
          formlist.forEach((obj) => {
            if (item.value == obj) {
              list.push(item.label);
            }
          });
        });
        this.checkList = list;
      }
    checkboxChange(checked, value){
    },
    // 服务形式选取
    handleCheckedCitiesChange(row) {
      console.log(row, "服务");
      this.foncheckList = this.checkboxlist.filter((obj) =>
        row.includes(obj.value)
      );
    },
    // 服务形式删除
    handleClosetag(tag) {
      console.log(tag, "tag");
      console.log(this.foncheckList, "foncheckList");
      this.checkList = this.checkList.filter((item) => item != tag.value);
      this.foncheckList = this.foncheckList.filter(obj => obj.value !== tag.value);
      console.log(this.checkList, "checkList");
    },
    // 科室处理
    Departmenttreatment() {
@@ -2063,23 +2077,7 @@
    margin-left: 10px;
  }
}
// .leftvlue-jbxx {
//   margin-bottom: 50px;
//   font-size: 20px;
//   span {
//     position: absolute;
//     right: 80px;
//   }
//   .demo-cascader {
//     margin-right: 20px;
//   }
//   .PreviewTemplate {
//     color: #02a7f0;
//     cursor: pointer;
//     font-size: 20px;
//     margin: 0 20px;
//   }
// }
.preview-left {
  margin: 20px;
  //   margin: 20px;
src/views/repositoryai/templateku/configurat/index.vue
@@ -453,28 +453,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 +479,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>
@@ -534,8 +533,19 @@
                  </el-radio-group>
                </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 +566,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 +577,8 @@
                  <el-col :span="6">
                    <mini-audio
                      :audio-source="
                        topicobj.scriptVoice
                          ? topicobj.scriptVoice
                        topicobj.ivrVoice
                          ? topicobj.ivrVoice
                          : 'https://example.com/example.mp3'
                      "
                    ></mini-audio>
@@ -1001,7 +1011,7 @@
                    <el-col :span="18"
                      ><el-form-item label="问题话术">
                        <el-input
                          style="width: 400px"
                          style="width: 600px"
                          type="textarea"
                          v-model="indexform.scriptContent"
                          placeholder="请从左侧列表选择"
@@ -1041,9 +1051,20 @@
                        </el-select> </el-form-item
                    ></el-col> -->
                  </el-row>
                  <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"
@@ -1064,10 +1085,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
                      >
@@ -1075,8 +1096,8 @@
                    <el-col :span="6">
                      <mini-audio
                        :audio-source="
                          indexform.scriptVoice
                            ? indexform.scriptVoice
                          indexform.ivrVoice
                            ? indexform.ivrVoice
                            : 'https://example.com/example.mp3'
                        "
                      ></mini-audio>
@@ -1374,7 +1395,7 @@
import { deptTreeSelect } from "@/api/system/user";
export default {
  name: "Tpuconfigurat",
  name: "tpuconfigurat",
  components: { Regular, OptionalForm },
  data() {
    return {
@@ -1468,7 +1489,7 @@
      ],
      deptlist: [],
      hosplist: [],
      flatArray:[],
      flatArray: [],
      props: { multiple: true, value: "deptId", label: "deptName" },
      variablelist: [
@@ -1477,6 +1498,10 @@
          value: "表示患者的标识",
        },
      ],
      queryParamsdept: {
        tempid: "",
        type: 2,
      },
      valssu: [],
      radio: "",
@@ -1484,7 +1509,6 @@
      // 题目表格数据
      userList: [],
      belongWards: [],
      belongDepts: [],
      belongDepts: [],
      // 查询参数
      queryParams: {
@@ -1499,9 +1523,6 @@
    };
  },
  activated() {
    console.log(this.id);
    console.log(this.$route.query.id);
    if (this.id != this.$route.query.id) {
      console.log(1);
@@ -1560,6 +1581,7 @@
    RoutingDataProcessing() {
      this.id = this.$route.query.id;
      this.task = this.$route.query.task;
      this.queryParamsdept.tempid = this.id;
    },
    // 获取科室树
    getDeptTree() {
@@ -1572,21 +1594,21 @@
    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() {
@@ -1631,8 +1653,6 @@
        this.dynamicTags = [];
        this.tempDetpRelevanceslist = [];
      }
    },
    // 附属数据表
    auxiliary() {
@@ -1643,26 +1663,27 @@
      this.tempDetpRelevanceslist = [];
      this.tempbelongWards = [];
      depthospgetsonlist(this.queryParamsdept).then((res) => {
        if (res.code == 200) {
          let arr = res.rows;
          console.log(arr,'arr');
      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');
            }
          });
        }
      });
            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({
@@ -1718,14 +1739,17 @@
            return item;
          });
      });
      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);
          const obj = { path: "/knowledge/templateku/" };
          this.$tab.closeOpenPage(obj);
          window.location.reload();
          // const obj = { path: "/knowledge/tpuconfigurat/?id=" + this.id };
          // this.$tab.closeOpenPage(obj);
        } else {
          this.$modal.msgError("保存失败");
@@ -1834,7 +1858,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) {
@@ -1849,7 +1873,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) {
@@ -1977,7 +2001,9 @@
            1
          );
          row.isoperation = 3;
          this.delScriptVOList.push(row);
          if (row.id) {
            this.delScriptVOList.push(row);
          }
          this.sortFn();
          this.$modal.msgSuccess("已删除,保存模板生效");
        })
src/views/repositoryai/verbaltrick/particulars/index.vue
@@ -40,6 +40,28 @@
          :rules="rules"
          label-width="100px"
        >
        <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="问题主旨" prop="scriptTopic">
                <el-input
                  v-model="indexform.scriptTopic"
                  placeholder="请输入问题主旨"
                  maxlength="80"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-form-item label="问题文本" prop="scriptContent">
                <el-input
                  :rows="2"
                  type="textarea"
                  id="scriptContent"
                  show-word-limit
                  placeholder="请输入内容"
                  v-model.sync="indexform.scriptContent"
                  @focus="handleInput('scriptContent')"
                />
              </el-form-item>
          <el-row>
            <el-col :span="12">
              <el-form-item label="语言" prop="deptId">
@@ -109,17 +131,7 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="20">
              <el-form-item label="问题主旨" prop="scriptTopic">
                <el-input
                  v-model="indexform.scriptTopic"
                  placeholder="请输入问题主旨"
                  maxlength="80"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-form-item label="标签" prop="desc">
            <div class="xinz-inf">
              <el-tag
@@ -202,7 +214,7 @@
              </div>
            </el-form-item>
          </el-drawer>
          <el-row>
          <!-- <el-row>
            <el-col :span="6">
              <el-form-item label="仅限院区" prop="region">
                <el-select
@@ -239,7 +251,7 @@
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          </el-row> -->
          <el-row>
            <el-col :span="24">
              <el-form-item label="问题变量" prop="scriptContent">
@@ -260,21 +272,21 @@
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="问题文本" prop="scriptContent">
              <el-form-item label="语音文本" prop="scriptContent">
                <el-input
                  :rows="2"
                  type="textarea"
                  id="scriptContent"
                  show-word-limit
                  placeholder="请输入内容"
                  v-model.sync="indexform.scriptContent"
                  v-model.sync="indexform.ivrtext"
                  @focus="handleInput('scriptContent')"
                />
              </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"
@@ -291,17 +303,17 @@
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <span style="font-size: 12px" v-if="indexform.scriptVoice">{{
                indexform.scriptVoice.substring(
                  indexform.scriptVoice.lastIndexOf("/") + 1
              <span style="font-size: 12px" v-if="indexform.ivrVoice">{{
                indexform.ivrVoice.substring(
                  indexform.ivrVoice.lastIndexOf("/") + 1
                )
              }}</span>
            </el-col>
            <el-col :span="6">
              <mini-audio
                :audio-source="
                  indexform.scriptVoice
                    ? indexform.scriptVoice
                  indexform.ivrVoice
                    ? indexform.ivrVoice
                    : 'https://example.com/example.mp3'
                "
              ></mini-audio>
@@ -957,7 +969,7 @@
    handleChange(response, file, additionalParam) {
      console.log(response);
      if (additionalParam == 1) {
        this.indexform.scriptVoice = response.url;
        this.indexform.ivrVoice = response.url;
      } else if (additionalParam == 2) {
        this.indexform.nomatchvoice = response.url;
        console.log(this.indexform.nomatchvoice);
src/views/system/user/index.vue
@@ -979,7 +979,7 @@
    /** 下载模板操作 */
    importTemplate() {
      this.download(
        "system/user/importTemplate",
        "smartor/import/getImportPatTemplate",
        {},
        `user_template_${new Date().getTime()}.xlsx`
      );