WXL
2024-06-02 628fd01beea81bac2f0299472d528860ae07cf3f
src/views/patient/propaganda/particty.vue
@@ -7,7 +7,7 @@
          <el-step
            icon="el-icon-edit"
            title="基础信息"
            description="选择宣教模版、形式等基础信息"
            description="选择模版、形式等基础信息"
          ></el-step>
          <el-step
            icon="el-icon-user"
@@ -22,11 +22,7 @@
    <div class="leftvlue" style="margin: 0 20px">
      <!-- 基本信息 -->
      <div v-if="Editprogress == 1">
        <el-alert
          title="选择宣教模版、形式等基础信息"
          type="success"
          effect="dark"
        >
        <el-alert title="选择模版、形式等基础信息" type="success" effect="dark">
        </el-alert>
        <div class="leftvlue-jbxx">
          <!-- 基础信息 -->
@@ -45,7 +41,7 @@
                        placeholder="请输入任务名称"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                  <el-col :span="8"
                    ><el-form-item label="模版名称">
                      <el-input
                        style="width: 220px"
@@ -54,6 +50,13 @@
                        placeholder="请在下列选择"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="4">
                    <el-button
                      type="primary"
                      icon="el-icon-edit"
                      circle
                    ></el-button>
                  </el-col>
                </el-row>
                <el-form-item label="任务描述">
@@ -85,7 +88,7 @@
                  <div style="display: flex">
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >上午</span
                        >时间段一</span
                      >
                      <el-time-picker
                        is-range
@@ -102,7 +105,7 @@
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >下午</span
                        >时间段二</span
                      >
                      <el-time-picker
                        is-range
@@ -119,7 +122,7 @@
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >晚间</span
                        >时间段三</span
                      >
                      <el-time-picker
                        is-range
@@ -331,7 +334,7 @@
                    :total="total"
                    :page.sync="topqueryParams.pageNum"
                    :limit.sync="topqueryParams.pageSize"
                    @pagination="getList"
                    @pagination="Acquisitiontype"
                  />
                </el-row>
              </div>
@@ -339,7 +342,7 @@
          </div>
        </div>
        <el-button type="success" @click="nextstep('ruleForm')">{{
          quote ? "立即创建" : "任务详情设置"
          quote ? "立即创建" : "任务详情配置"
        }}</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </div>
@@ -528,10 +531,10 @@
                  <SFtable
                    @details="detailhz"
                    @handleUpdate="handleUpdate"
                    @handleSelectionChange="handleSelectionChange"
                    :currentList="form.patTaskRelevances"
                    :currentList="overallCase"
                    :tableLabel="tableLabelhz"
                    :serialnumber="false"
                    :multiplechoice="false"
                    :controlxz="false"
                    :typeinfo="2"
                  />
@@ -548,9 +551,9 @@
          </div>
        </div>
        <el-button type="primary" @click="laststep()">上一步</el-button>
        <el-button type="success" @click="submitForm('ruleForm')"
          >立即创建</el-button
        >
        <el-button type="success" @click="submitForm('ruleForm')">{{
          quote ? "立即创建" : "确认任务配置"
        }}</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </div>
    </div>
@@ -560,6 +563,7 @@
      :visible.sync="dialogVisiblepatient"
      width="70%"
      :before-close="handleClosehz"
      :close-on-click-modal="false"
    >
      <div class="examine-jic">
        <div class="jic-value">
@@ -576,20 +580,7 @@
              <el-form-item label="患者名称:">
                <el-input v-model="patientqueryParams.name"></el-input>
              </el-form-item>
              <!-- <el-form-item label="患者来源" prop="status">
                <el-select
                  v-model="patientqueryParams.topic"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in topicoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item> -->
              <el-form-item label="就诊科室" prop="status">
                <el-select
                  v-model="patientqueryParams.topic"
@@ -629,6 +620,7 @@
            </el-form>
            <!-- 选择患者列表 -->
            <SFtable
              ref="multipleTable"
              @handleUpdate="handleUpdate"
              @handleSelectionChange="handleSelectionChange"
              :currentList="patientuserList"
@@ -654,6 +646,43 @@
        >
      </span>
    </el-dialog>
    <el-dialog title="模版预览" :visible.sync="previewtf" width="60%">
      <div class="preview-left">
        <!-- 单选 -->
        <div
          class="topic-dev"
          v-for="(item, index) in questionList"
          :key="item.aaa"
        >
          <div class="dev-text">
            {{ index + 1 }}、<span>{{ item.questionText }}</span>
          </div>
          <div class="dev-xx" v-if="item.valueType == 1">
            <el-radio-group v-model="item.radio">
              <el-radio
                v-for="(items, index) in item.ivrLibaScriptTargetoptionList"
                :key="items.id"
                :label="items.id"
                >{{ items.targetvalue }}</el-radio
              >
            </el-radio-group>
          </div>
          <div v-else>
            <el-input
              type="textarea"
              placeholder="未获取到信息"
              v-model.sync="item.questionResult"
              :rows="2"
            />
          </div>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="previewGo">前往模版详情修改</el-button>
        <el-button type="primary" @click="previewFn">确认使用</el-button>
      </span>
    </el-dialog>
  </div>
</template>
@@ -665,6 +694,7 @@
  getlibrarylist,
  getFollowuplist,
  getQtemplatelist,
  TaskTemplatecomit,
  getTaskInfo,
  gethetaskinfo,
  delhetaskinfo,
@@ -681,15 +711,21 @@
    return {
      title: "宣教内容列表",
      currenttype: 1, //1宣教2门诊3出院4复诊5体检6问卷
      id: "",
      id: "", //
      previewid: "", //任务模版传递id
      libName: "",
      overallCase: [], //选择患者总
      allpids: [],
      libId: null, //模板库模版id
      Editprogress: 1, //编辑进度
      previewtf: false, //预览
      loading: false, // 遮罩层
      patientloading: false, // 遮罩层
      dialogVisiblepatient: false, //添加患者弹框
      radio: 1,
      checkboxlist: [],
      tableLabel: [],
      questionList: [],
      // 患者表单
      tableLabelhz: [
        { label: "序号", width: "", prop: "patid" },
@@ -828,6 +864,7 @@
        sendType: 1,
        templatename: "",
        templateid: null,
        libtemplateid: null,
      },
      taskoptions: [
        {
@@ -888,8 +925,8 @@
    // 获取当前类型
    Acquisitiontype() {
      let queryParams = {
        pageNum: 1,
        pageSize: 10,
        pageNum: this.topqueryParams.pageNum,
        pageSize: this.topqueryParams.pageSize,
        isavailable: "",
      };
      this.currenttype = this.$route.query.type;
@@ -956,14 +993,14 @@
      );
      console.log(filteredArray, "存前变量");
      this.form.textParam = this.convertFormat2ToFormat1(filteredArray);
      if (this.form.id) {
      if (this.form.taskid) {
        this.form.isoperation = 2;
      } else {
        this.form.isoperation = 1;
      }
      Editsingletask(this.form).then((res) => {
        if (res.code == 200) {
          if (this.form.id) {
          if (this.form.taskid) {
            this.$modal.msgSuccess("新增成功");
          } else {
            this.$modal.msgSuccess("修改成功");
@@ -973,7 +1010,7 @@
      });
    },
    // ----------------------表格子组件事件
    // 选择模版
    // 确认选择模版放入任务模版
    selectfn(row, type) {
      // 模版情况下获取模版信息
      if (type == 1) {
@@ -984,15 +1021,20 @@
          currenttype == 5 ||
          currenttype == 7
        ) {
          this.form.templatename = row.templateName;
          this.form.templateid = row.id;
          this.libName = row.templateName;
          this.libId = row.id;
        } else if (this.currenttype == 1) {
          this.form.templatename = row.preachname;
          this.form.templateid = row.id;
          this.libName = row.preachname;
          this.libId = row.id;
        }
        getvFollowup({ id: row.id }).then((res) => {
          if (res.code == 200) {
            this.Tasktemplate = res.data;
            const data = res.data;
            this.questionList = data.ivrLibaTemplateScriptVOList;
            this.previewtf = true;
            this.previewid = data.id;
            console.log(this.questionList, "questionList");
            this.Variablehandling(data.ivrLibaTemplateScriptVOList, 1);
          }
        });
@@ -1031,29 +1073,88 @@
    },
    // 子任务二级弹框
    handleAddpatient(row) {
      console.log(this.overallCase, "ssaaa");
      this.allpids = [];
      this.overallCase.forEach((item) => {
        this.allpids.push(item.patid);
      });
      if (this.allpids[0]) {
        this.patientqueryParams.pids = this.allpids;
        console.log(this.patientqueryParams.pids);
      } else {
        this.patientqueryParams.pids = null;
      }
      getTaskpatient(this.patientqueryParams).then((response) => {
        console.log(response);
        this.patientuserList = response.rows;
        this.patienttotal = response.total;
        this.loading = false;
        this.Restorecheck();
      });
      this.dialogVisiblepatient = true;
    },
    handleUpdate() {},
    handleDelete() {},
    handleExport() {},
    // 多选框选中数据
    // 选中患者表
    handlePitchionChange() {},
    // 选择患者表数据
    handleSelectionChange(selection) {
      console.log("多选患者");
      this.SelectPatientslist = selection;
      this.ids = null;
      this.ids = selection.map((item) => item.patid).join(",");
      // let result = this.ids.join(",");
      this.multiple = !selection.length;
      console.log(this.ids);
      // 赋值给整体选中数组
      this.SelectPatientslist.forEach((item) => {
        const isExist = this.overallCase.find((obj) => obj.name == item.name);
        if (!isExist) {
          item.isoperation = 1;
          this.overallCase.push(item);
          this.form.patTaskRelevances.push(item);
        }
      });
    },
    // 切换页后恢复选中
    Restorecheck() {
      console.log(this.overallCase, "this.overallCase");
      const allid = this.overallCase.map((item) => item.patid);
      const overlap = this.patientuserList.filter((value) => {
        return allid.includes(value.patid);
      });
      // 保持ids和当前页面的同步性
      this.SelectPatientslist = overlap;
      console.log(this.SelectPatientslist, "进入分页SelectPatientslist");
      this.toggleSelection(overlap);
    },
    // 挂载选择状态
    toggleSelection(rows) {
      if (rows) {
        this.decision = true;
        this.$nextTick(() => {
          rows.forEach((row) => {
            this.$refs.multipleTable.toggleRowSelection(row, true);
          });
          this.decision = false;
        });
        console.log(123);
      } else {
        this.$refs.multipleTable.clearSelection();
      }
    },
    // 删除选中患者
    detailhz(row, info) {},
    detailhz(row, info) {
      this.$modal
        .confirm('是否确认删除患者"' + row.name + '"的服务项?')
        .then(() => {
          let indexa = this.overallCase.indexOf(row);
          let indexb = this.form.patTaskRelevances.indexOf(row);
          this.overallCase.splice(indexa, 1);
          this.form.patTaskRelevances[indexb].isoperation = 3;
          this.$modal.msgSuccess("删除成功");
        });
    },
    getList() {},
    handleQuery() {
      this.handleAddpatient();
@@ -1082,21 +1183,21 @@
          let filteredArray = "";
          if (res.code == 200) {
            this.form = res.data;
            this.overallCase = this.form.patTaskRelevances.concat();
            this.checkList = this.form.serviceform.split(",");
            this.daytime = this.form.sendlimitabegin.split(",");
            if (this.form.sendlimitaend)
              this.time1 = this.form.sendlimitaend.split(",");
            if (this.form.sendlimitnbegin)
              this.time2 = this.form.sendlimitaend.split(",");
            if (this.form.sendlimitnend)
              this.time3 = this.form.sendlimitaend.split(",");
            this.daytime = this.form.showDate.split(",");
            if (this.form.showTimeMorn)
              this.time1 = this.form.showTimeMorn.split(",");
            if (this.form.showTimeNoon)
              this.time2 = this.form.showTimeNoon.split(",");
            if (this.form.showTimeNight)
              this.time3 = this.form.showTimeNight.split(",");
            filteredArray = this.convertFormat1ToFormat2(this.form.textParam);
            console.log(filteredArray, "filteredArray");
            this.variableList = this.transitionList.concat(filteredArray);
          } else {
            this.$modal.msgError(res.code);
          }
          console.log(res);
        });
      }
    },
@@ -1109,17 +1210,14 @@
    },
    // 新增派送患者
    AddDispatchpatients() {
      this.SelectPatientslist.forEach((item) => {
        item.isoperation = 1;
      });
      this.form.patTaskRelevances.push(...this.SelectPatientslist);
      // this.SelectPatientslist.forEach((item) => {
      //   item.isoperation = 1;
      // });
      // this.form.patTaskRelevances.push(...this.SelectPatientslist);
      // this.overallCase.push(...this.SelectPatientslist);
      this.dialogVisiblepatient = false;
    },
    // 变量---------------
    // variableEdit(index, row) {
    //   console.log(index, row);
    // },
    variableDelete(index, row) {
      this.variableList.splice(index, 1);
      row.isoperation = 3;
@@ -1186,11 +1284,39 @@
      this.form.sendTimeslot = combinedData;
      // 展示数据临时存储日期、早、中、晚
      this.form.sendlimitabegin = this.daytime.join(",");
      if (this.time1) this.form.sendlimitaend = this.time1.join(",");
      if (this.time2) this.form.sendlimitnbegin = this.time2.join(",");
      if (this.time3) this.form.sendlimitnend = this.time3.join(",");
      this.form.showDate = this.daytime.join(",");
      if (this.time1) this.form.showTimeMorn = this.time1.join(",");
      if (this.time2) this.form.showTimeNoon = this.time2.join(",");
      if (this.time3) this.form.showTimeNight = this.time3.join(",");
      console.log(combinedData, "combinedData");
    },
    // 查看模版
    previewGo() {
      this.$router.push({
        path: "/knowledge/templateku/configurat/",
        query: { id: this.previewid, task: true, data: this.form },
      });
    },
    previewFn() {
      let id = this.Tasktemplate.id;
      this.Tasktemplate.id = null;
      this.Tasktemplate.ivrLibaTemplateScriptVOList.ivrTaskScriptTargetoptionList =
        this.Tasktemplate.ivrLibaTemplateScriptVOList.ivrLibaScriptTargetoptionList;
      this.Tasktemplate.ivrTaskTemplateScriptVOList =
        this.Tasktemplate.ivrLibaTemplateScriptVOList;
      this.Tasktemplate.ivrLibaTemplateTagList = null;
      this.Tasktemplate.tempDetpRelevances = null;
      this.Tasktemplate.libtemplateid = id;
      this.Tasktemplate.isoperation = 1;
      this.Tasktemplate.libtemplatename = this.Tasktemplate.templateName;
      TaskTemplatecomit(this.Tasktemplate).then((response) => {
        console.log(response);
        this.previewtf = false;
        this.form.templateid = response.data;
        this.form.libtemplateid = this.libId;
        this.form.templatename = this.libName;
        this.$modal.msgSuccess("选择模版成功");
      });
    },
  },
};
@@ -1284,6 +1410,22 @@
//     margin: 0 20px;
//   }
// }
.preview-left {
  margin: 20px;
  //   margin: 20px;
  padding: 30px;
  background: #ffff;
  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 {
    margin-bottom: 25px;
    font-size: 20px !important;
    .dev-text {
      margin-bottom: 10px;
    }
  }
}
.jic-value {
  font-size: 20px;
  border-top: 1px solid #a7abac;