WXL
2024-09-09 d27e3ada8f1e9c005747988e9bf2519fcd6da21a
src/views/patient/propaganda/QuestionnaireTask.vue
@@ -30,33 +30,68 @@
              <div>基础信息</div>
            </div>
            <div class="jic-value">
              <el-form ref="form" :model="form" label-width="105px">
              <el-form
                ref="form"
                :model="form"
                :rules="rules"
                label-width="125px"
              >
                <el-row :gutter="20">
                  <el-col :span="12"
                    ><el-form-item label="任务名称">
                    ><el-form-item label="任务名称" prop="taskName">
                      <el-input
                        style="width: 220px"
                        v-model="form.taskName"
                        placeholder="请输入任务名称"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                    ><el-form-item label="任务类型">
                      <el-select
                        v-model="serviceType"
                        placeholder="请选择新增类型"
                      >
                        <el-option
                          v-for="item in tasktypes"
                          :key="item.value"
                          :label="item.label"
                          :value="item.value"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-form-item label="任务描述">
                <el-form-item label="任务描述" prop="taskDesc">
                  <el-input
                    type="textarea"
                    v-model="form.taskDesc"
                    placeholder="请输入任务描述"
                  />
                </el-form-item>
                <el-form-item label="发送设置:">
                <el-form-item label="服务形式">
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox
                      v-for="(item, index) in checkboxlist"
                      :key="index"
                      :label="item.value"
                    >
                      {{ item.label }}</el-checkbox
                    >
                  </el-checkbox-group>
                </el-form-item>
                <el-form-item label="执行设置" prop="sendType">
                  <el-radio-group v-model="form.sendType">
                    <el-radio :label="1">时间段发送</el-radio>
                    <el-radio :label="3">时间点发送</el-radio>
                    <el-radio :label="2">即刻发送</el-radio>
                    <el-radio :label="1">时间段执行</el-radio>
                    <el-radio :label="3">时间点执行</el-radio>
                    <el-radio :label="2">即刻执行</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item label="发送日期:" v-if="form.sendType == 1">
                <el-form-item
                  label="执行日期"
                  v-if="form.sendType == 1"
                  prop="daytime"
                >
                  <el-date-picker
                    v-model="daytime"
                    @change="changeTimeday"
@@ -69,7 +104,11 @@
                  </el-date-picker>
                </el-form-item>
                <el-form-item label="发送时间点:" v-if="form.sendType == 3">
                <el-form-item
                  label="执行时间点"
                  v-if="form.sendType == 3"
                  prop="daytime"
                >
                  <div style="display: flex">
                    <div style="margin-right: 10px">
                      <el-date-picker
@@ -84,12 +123,14 @@
                  </div>
                </el-form-item>
                <el-form-item label="发送时间段:" v-if="form.sendType == 1">
                <el-form-item
                  label="执行时间段"
                  v-if="form.sendType == 1"
                  prop="daytime"
                >
                  <div style="display: flex">
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段一</span
                      >
                      <span style="font-size: 18px; margin-right: 10px">①</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -104,9 +145,7 @@
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段二</span
                      >
                      <span style="font-size: 18px; margin-right: 10px">②</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -121,9 +160,7 @@
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段三</span
                      >
                      <span style="font-size: 18px; margin-right: 10px">③</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -139,28 +176,21 @@
                    </div>
                  </div>
                </el-form-item>
                <el-form-item label="服务形式">
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox
                      v-for="(item, index) in checkboxlist"
                      :key="index"
                      :label="item.value"
                    >
                      {{ item.label }}</el-checkbox
                    >
                  </el-checkbox-group>
                </el-form-item>
                <el-row :gutter="20">
                  <el-col :span="10"
                    ><el-form-item label="模板名称">
                      <el-input
                        style="width: 300px"
                        :disabled="true"
                        v-model="form.templatename"
                        placeholder="请在下列选择"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="4">
              </el-form>
            </div>
          </div>
          <div class="examine-jic">
            <div class="headline">
              <div>任务使用模板</div>
              <div style="margin-left: 20px">
                <el-form ref="forms">
                  <el-form-item label="">
                    <el-input
                      style="width: 300px"
                      :disabled="true"
                      v-model="form.templatename"
                      placeholder="请点击右侧选择"
                    />
                    <el-button
                      type="primary"
                      icon="el-icon-edit"
@@ -169,23 +199,21 @@
                    ></el-button>
                    <el-button
                    v-if="this.form.libtemplateid"
                      v-if="form.libtemplateid"
                      type="success"
                      icon="el-icon-search"
                      @click="previewfnmb"
                      circle
                    ></el-button>
                  </el-col>
                </el-row>
              </el-form>
                  </el-form-item>
                </el-form>
              </div>
            </div>
          </div>
          <div class="examine-jic">
            <div class="headline">
              <div>变量匹配量参</div>
            </div>
            <div class="examine-jic">
              <div class="jic-value">
                <div style="margin-bottom: 10px">模板中使用的变量:</div>
                <el-row :gutter="20">
                  <el-table :data="variableList" style="width: 100%">
                    <el-table-column
@@ -335,7 +363,7 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="患者名称:">
              <el-form-item label="患者:">
                <el-input
                  v-model="patientqueryParams.name"
                  @keyup.enter.native="handleQuery"
@@ -474,18 +502,6 @@
              <el-form-item label="问卷名称">
                <el-input v-model="topqueryParams.svyname"></el-input>
              </el-form-item>
              <!-- <el-form-item label="问卷类型" prop="status">
                <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
@@ -497,18 +513,6 @@
                  </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"
@@ -592,13 +596,13 @@
      questionList: [],
      // 患者表单
      tableLabelhz: [
        // { label: "序号", width: "", prop: "patid" },
        { label: "患者名称", width: "", prop: "name" },
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "idcardno" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "就诊科室", width: "", prop: "deptName" },
        { label: "入院日期", width: "", prop: "inhosptime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
        { label: "医生", width: "", prop: "drname" },
        { label: "科室", width: "", prop: "deptName" },
        { label: "就诊/出院日期", width: "280", prop: "inhosptime" },
      ],
      tableLabelwj: [
@@ -728,8 +732,60 @@
          label: "体检病人",
        },
      ],
      tasktypes: [
        {
          value: 1,
          label: "监测评估",
        },
        {
          value: 2,
          label: "出院随访",
        },
        {
          value: 3,
          label: "门诊随访",
        },
        {
          value: 4,
          label: "宣教关怀",
        },
        {
          value: 5,
          label: "复诊管理",
        },
        {
          value: 6,
          label: "满意度调查",
        },
        {
          value: 7,
          label: "患者报告",
        },
        {
          value: 8,
          label: "其他通知",
        },
      ],
      rules: {
        taskName: [
          { required: true, message: "任务名称不能为空", trigger: "blur" },
          {
            min: 2,
            max: 30,
            message: "任务名称长度必须介于 2 和 30 之间",
            trigger: "blur",
          },
        ],
        taskDesc: [
          { required: true, message: "任务描述不能为空", trigger: "blur" },
        ],
        sendType: [
          { required: true, message: "发送设置不能为空", trigger: "blur" },
        ],
      },
      quote: false,
      serviceType:null,
      serviceType: null,
    };
  },
  components: { SFtable },
@@ -893,23 +949,49 @@
      });
    },
    nextstep() {
      if (this.Editprogress <= 3) {
        return this.Editprogress++;
      }
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.Editprogress <= 3) {
            return this.Editprogress++;
          }
        } else {
          this.$modal.msgError("表单内容未完善,请检查");
        }
      });
    },
    // 保存
    submitForm(formName) {
      this.form.preachform = this.checkList.join(",");
      if (this.time4 && this.form.sendType == 3)
        this.form.showTimeMorn = this.time4;
      this.form.sendTimeslot = [{
        begantime: this.time4,
        endtime: "",
        xh: 1,
      }];
      if (this.checkList[0]) {
        this.form.preachform = this.checkList.join(",");
      } else {
        this.$modal.msgError("请选择服务类型");
        return;
      }
      if (!this.form.patTaskRelevances[0]) {
        this.$modal.msgError("请选择病人");
        return;
      }
      if (!this.form.templatename) {
        this.$modal.msgError("未选择模板");
        return;
      }
      if ((this.form.sendType == 1 && this.time1) || this.form.sendType == 2) {
      } else if (this.form.sendType == 3 && this.time4) {
      } else {
        return this.$modal.msgError("时间信息缺失");
      }
      const filteredArray = this.variableList.filter(
        (item) =>
          item.name !== "姓名" && item.name !== "电话" && item.name !== "地址"
      );
      console.log(filteredArray, "存前变量");
      this.form.textParam = this.convertFormat2ToFormat1(filteredArray);
      if (this.form.taskid) {
        this.form.isoperation = 2;
@@ -919,7 +1001,7 @@
      if (!this.form.type) {
        this.form.type = this.$route.query.type;
      }
      this.form.serviceType=this.serviceType;
      this.form.serviceType = this.serviceType;
      Editsingletask(this.form).then((res) => {
        if (res.code == 200) {
          if (this.form.taskid) {
@@ -1001,17 +1083,17 @@
      });
      if (this.patientqueryParams.allhosp == 1) {
        this.tableLabelhz = [
          { label: "患者名称", width: "", prop: "name" },
          { label: "患者", width: "", prop: "name" },
          { label: "身份证", width: "200", prop: "idcardno" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "主任医师", width: "", prop: "drname" },
          { label: "就诊科室", width: "", prop: "deptName" },
          { label: "入院日期", width: "", prop: "inhosptime" },
          { label: "创建人", width: "", prop: "createBy" },
          { label: "医生", width: "", prop: "drname" },
          { label: "科室", width: "", prop: "deptName" },
          { label: "就诊/出院日期", width: "280", prop: "inhosptime" },
        ];
      } else if (this.patientqueryParams.allhosp == 2) {
        this.tableLabelhz = [
          { label: "患者名称", width: "", prop: "name" },
          { label: "患者", width: "", prop: "name" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "诊断", width: "", prop: "diagname" },
@@ -1127,30 +1209,31 @@
    },
    // 获取详情
    Getdetails() {
      this.form= {
      this.form = {
        patTaskRelevances: [],
        sendType: 1,
        templatename: "",
        templateid: null,
        libtemplateid: null,
      };
      this.questionList=[];
      this.questionList = [];
      if (this.id) {
        Questionnairetaskget({ taskid: this.id }).then((res) => {
          let filteredArray = "";
          if (res.code == 200) {
            this.form = res.data;
            this.form.serviceType=this.serviceType;
            this.form.serviceType = this.serviceType;
            this.form.patTaskRelevances = this.form.patTaskRelevances
              ? this.form.patTaskRelevances
              : [];
            this.overallCase = this.form.patTaskRelevances.concat();
            this.checkList = this.form.preachform.split(",");
            console.log(this.form.showDate, "this.form");
            this.daytime = this.form.showDate.split(",");
            console.log(this.form, "this.form");
            if (this.form.showDate)this.daytime = this.form.showDate.split(",");
            if (this.form.showTimeMorn) {
              if (this.form.sendType == 3) {
                this.time4 = this.form.showTimeMorn;
                console.log(1122);
              } else {
                this.time1 = this.form.showTimeMorn.split(",");
              }
@@ -1261,7 +1344,6 @@
      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() {
@@ -1357,11 +1439,12 @@
  margin: 20px;
  .headline {
    font-size: 24px;
    height: 40px;
    border-left: 5px solid #41a1be;
    padding-left: 5px;
    margin-bottom: 10px;
    display: flex;
    justify-content: space-between;
    // justify-content: space-between;
    .Add-details {
      font-size: 18px;
      color: #02a7f0;