WXL
8 天以前 45f9797c4e878d5f87a8d04d5ee07af8d39b5567
src/views/followvisit/record/detailpage/index.vue
@@ -32,7 +32,11 @@
        </div>
      </div>
      <div>
        <el-table :data="logsheetlist" :row-class-name="tableRowClassName" style="width: 100%">
        <el-table
          :data="logsheetlist"
          :row-class-name="tableRowClassName"
          style="width: 100%"
        >
          <el-table-column
            prop="sendname"
            align="center"
@@ -372,7 +376,7 @@
                      : 'scriptTopic-dev'
                  "
                  :key="index"
                  v-if="item.scriptType == 1"
                  v-if="item.scriptType == 1 && !item.astrict"
                >
                  <div class="dev-text">
                    {{ index + 1 }}、[单选]<span>{{ item.scriptContent }}</span>
@@ -380,14 +384,20 @@
                  <div class="dev-xx">
                    <el-radio-group
                      v-model="item.scriptResult"
                      @change="handleOptionChange($event, index, item)"
                      @change="
                        handleOptionChange(
                          $event,
                          index,
                          item.svyLibTemplateTargetoptions
                        )
                      "
                    >
                      <el-radio
                        v-for="(
                          items, index
                          items, indexs
                        ) in item.svyLibTemplateTargetoptions"
                        :class="items.isabnormal ? 'red-star' : ''"
                        :key="index"
                        :key="indexs"
                        :label="items.optioncontent"
                        >{{ items.optioncontent }}</el-radio
                      >
@@ -405,7 +415,7 @@
                      : 'scriptTopic-dev'
                  "
                  :key="index"
                  v-if="item.scriptType == 2"
                  v-if="item.scriptType == 2 && !item.astrict"
                >
                  <div class="dev-text">
                    {{ index + 1 }}、[多选]<span>{{ item.scriptContent }}</span>
@@ -436,7 +446,7 @@
                <div
                  class="scriptTopic-dev"
                  :key="index"
                  v-if="item.scriptType == 4"
                  v-if="item.scriptType == 4 && !item.astrict"
                >
                  <div class="dev-text">
                    {{ index + 1 }}、[问答]<span>{{ item.scriptContent }}</span>
@@ -612,26 +622,95 @@
            v-model="form.endtime"
          ></el-input>
        </el-form-item>
        <div class="headline">上次随访</div>
        <el-divider></el-divider>
        <el-row>
          <el-col :span="12">
            <el-form-item label="随访方式">
              <el-select
                v-model="form.visitType2"
                filterable
                allow-create
                default-first-option
                disabled
                placeholder="请选择随访方式"
                class="custom-disabled"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="随访时间">
              <el-date-picker
                type="date"
                disabled
                placeholder="选择日期"
                :picker-options="pickerOptions"
                align="right"
                v-model="form.date2"
                class="custom-disabled"
              ></el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>
        <el-form-item label="随访记录">
          <el-input
            class="custom-disabled"
            type="textarea"
            disabled
            v-model="form.remark2"
          ></el-input>
        </el-form-item>
        <div class="headline">下次随访</div>
        <el-divider></el-divider>
        <el-row>
          <el-col :span="12">
            <el-form-item label="随访方式" prop="date1">
              <el-select
                v-model="form.visitType"
                filterable
                allow-create
                default-first-option
                @change="visitChange"
                placeholder="请选择随访方式"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="随访时间" prop="date1">
              <el-date-picker
                type="date"
                placeholder="选择日期"
                :picker-options="pickerOptions"
                align="right"
                v-model="form.date1"
              ></el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>
        <el-form-item label="随访方式" prop="resource">
          <el-radio-group v-model="form.resource">
            <el-radio label="1">本病区随访</el-radio>
            <el-radio label="2">随访中心随访</el-radio>
          </el-radio-group>
        </el-form-item>
        <!-- <el-form-item label="即刻发送">
          <el-switch v-model="zcform.delivery"></el-switch>
        </el-form-item> -->
        <el-form-item label="随访时间" prop="date1">
          <el-date-picker
            type="date"
            placeholder="选择日期"
             :picker-options="pickerOptions"
             align="right"
            v-model="form.date1"
            style="width: 100%"
          ></el-date-picker>
        </el-form-item>
        <el-form-item label="随访记录">
          <el-input type="textarea" v-model="form.remark"></el-input>
        </el-form-item>
@@ -676,19 +755,17 @@
      activeName: "wj",
      voice: "",
      templateid: "",
      again:'',
      again: "",
      zcform: {},
      form: {},
      tableDatatop: [], //题目表
      voiceDatatop: [], //题目表
      dynamicTags: [],
      zcrules: {
        date1: [
        resource: [
          { required: true, message: "请选择随访方式", trigger: "change" },
        ],
        resource: [
          { required: true, message: "请选择随访时间", trigger: "blur" },
        ],
        date1: [{ required: true, message: "请选择随访时间", trigger: "blur" }],
      },
      url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo",
      postData: {
@@ -725,33 +802,88 @@
        },
      },
      pickerOptions: {
          shortcuts: [{
            text: '七天后',
        shortcuts: [
          {
            text: "七天后",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() + 3600 * 1000 * 24 * 7);
              picker.$emit('pick', date);
            }
          }, {
            text: '15天后',
              picker.$emit("pick", date);
            },
          },
          {
            text: "15天后",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() + 3600 * 1000 * 24* 15);
              picker.$emit('pick', date);
            }
          }, {
            text: '30天后',
              date.setTime(date.getTime() + 3600 * 1000 * 24 * 15);
              picker.$emit("pick", date);
            },
          },
          {
            text: "一个月后",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() + 3600 * 1000 * 24 * 30);
              picker.$emit('pick', date);
            }
          }]
              picker.$emit("pick", date);
            },
          },
          {
            text: "三个月后",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() + 3600 * 1000 * 24 * 90);
              picker.$emit("pick", date);
            },
          },
          {
            text: "六个月后",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() + 3600 * 1000 * 24 * 180);
              picker.$emit("pick", date);
            },
          },
          {
            text: "一年后",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() + 3600 * 1000 * 24 * 365);
              picker.$emit("pick", date);
            },
          },
        ],
      },
      options: [
        {
          value: "七天后",
          label: "七天后",
        },
        {
          value: "15天后",
          label: "15天后",
        },
        {
          value: "一个月后",
          label: "一个月后",
        },
        {
          value: "三个月后",
          label: "三个月后",
        },
        {
          value: "六个月后",
          label: "六个月后",
        },
        {
          value: "一年后",
          label: "一年后",
        },
      ],
      userform: {},
      Whetherall: true, //是否全部记录展示
      dialogFormVisible: false,
      Voicetype: 0, //是否为语音服务
      visitCount: null,
      logsheetlist: [],
      topicobj: {},
      sendname: null,
@@ -769,6 +901,7 @@
    this.patid = this.$route.query.patid;
    this.again = this.$route.query.again;
    this.Voicetype = this.$route.query.Voicetype;
    this.visitCount = this.$route.query.visitCount;
    this.serviceType = this.$route.query.serviceType;
    this.getTaskservelist();
@@ -784,17 +917,25 @@
        isFinish: false,
      }).then((res) => {
        if (res.code === 200) {
          if (this.again&&res.data.upScriptResult) {
          this.tableDatatop = res.data.upScriptResult;
          }else{
            this.tableDatatop = res.data.scriptResult;
          // 针对再次随访服务进行删除结果赋值
          if (this.again && res.data.upScriptResult) {
            res.data.upScriptResult.forEach((itemA) => {
              const itemB = res.data.scriptResult.find(
                (item) => item.scriptContent === itemA.scriptContent
              );
              if (itemB) {
                itemB.scriptResult = itemA.scriptResult;
              }
            });
          }
          this.tableDatatop = res.data.scriptResult;
          this.tableDatatop.forEach((item) => {
            if (item.scriptType == 2) item.scriptResult = [];
            if (item.scriptResult && item.scriptType != 2) {
            if (item.scriptResultId && item.scriptType != 2) {
              item.isoption = 3;
              item.scriptResult = item.scriptResult;
            } else if (item.scriptResult && item.scriptType == 2) {
            } else if (item.scriptResultId && item.scriptType == 2) {
              item.scriptResult = item.scriptResult.split("&");
              item.isoption = 3;
            }
@@ -842,6 +983,25 @@
        }
      });
    },
    // 再次随访时间选取
    visitChange(value) {
      // 根据选择的随访方式设置时间
      const now = new Date();
      if (value.includes("七天后")) {
        this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 7);
      } else if (value.includes("15天后")) {
        this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 15);
      } else if (value.includes("一个月后")) {
        this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 30);
      } else if (value.includes("三个月后")) {
        this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 90);
      } else if (value.includes("六个月后")) {
        this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 180);
      } else if (value.includes("一年后")) {
        this.form.date1 = new Date(now.getTime() + 3600 * 1000 * 24 * 365);
      }
    },
    // 获取语音数据
    getPersonVoices(id) {
      let obj = {
@@ -945,13 +1105,45 @@
            .confirm(
              '任务保存成功是否针对患者:"' +
                this.logsheetlist[0].sendname +
                '"再次随访?'
                '"再次随访?',
              "确认",
              {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                showCancelButton: true,
                dangerouslyUseHTMLString: true,
                confirmButtonClass: "custom-confirm-button", // 自定义确认按钮的类名
                cancelButtonClass: "custom-cancel-button", // 自定义取消按钮的类名
              }
            )
            .then(() => {
              document.querySelector("#app").scrollTo(0, 0);
              this.formtidy();
              this.dialogFormVisible = true;
            })
            .catch(() => {});
            .catch(() => {
              if (this.form.serviceType == 13) {
                if (this.visitCount) {
                  this.$router.push({
                    path: "/logisticsservice/zbAgain",
                  });
                } else {
                  this.$router.push({
                    path: "/logisticsservice/record",
                  });
                }
              } else if (form.serviceType == 2) {
                if (this.visitCount) {
                  this.$router.push({
                    path: "/followvisit/again",
                  });
                } else {
                  this.$router.push({
                    path: "/followvisit/discharge",
                  });
                }
              }
            });
        })
        .catch((error) => {
          // 如果有任何一个异步操作失败,会进入这里
@@ -983,17 +1175,56 @@
          this.$modal.msgSuccess("服务保存成功");
          this.$modal
            .confirm(
              '任务保存成功是否针对患者:"' + this.userform.name + '"再次随访?'
              '任务保存成功是否针对患者:"' +
                this.userform.name +
                '"再次随访?',
              "确认",
              {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                showCancelButton: true,
                dangerouslyUseHTMLString: true,
                confirmButtonClass: "custom-confirm-button", // 自定义确认按钮的类名
                cancelButtonClass: "custom-cancel-button", // 自定义取消按钮的类名
              }
            )
            .then(() => {
              document.querySelector("#app").scrollTo(0, 0);
              this.formtidy();
              this.dialogFormVisible = true;
            })
            .catch(() => {});
            .catch(() => {
              if (this.form.serviceType == 13) {
                if (this.visitCount) {
                  this.$router.push({
                    path: "/logisticsservice/zbAgain",
                  });
                } else {
                  this.$router.push({
                    path: "/logisticsservice/record",
                  });
                }
              } else if (form.serviceType == 2) {
                if (this.visitCount) {
                  this.$router.push({
                    path: "/followvisit/again",
                  });
                } else {
                  this.$router.push({
                    path: "/followvisit/discharge",
                  });
                }
              }
            });
        }
      });
    },
    // 再次随访数据更替
    formtidy() {
      this.form.visitType2 = this.form.visitType;
      this.form.date2 = this.form.longSendTime;
      this.form.remark2 = this.form.remark;
    },
    // 获取患者记录
    getTaskservelist(id) {
      if (id) {
@@ -1007,7 +1238,9 @@
        subId: id,
      }).then((res) => {
        if (res.code == 200) {
          this.form = res.rows[0].serviceSubtaskList.find(item => item.id == this.id);
          this.form = res.rows[0].serviceSubtaskList.find(
            (item) => item.id == this.id
          );
          this.logsheetlist = res.rows[0].serviceSubtaskList;
          this.templateid = this.logsheetlist[0].templateid;
          const targetDate = new Date(this.form.longSendTime); // 目标日期
@@ -1050,14 +1283,15 @@
      });
    },
    Editsingletasksonyic(sendstate) {
      let objson = {};
      getTaskservelist({
        patid: this.patid,
        subId: this.id,
      }).then((res) => {
        if (res.code == 200) {
          objson = res.rows[0].serviceSubtaskList.find(item => item.id == this.id);
          objson = res.rows[0].serviceSubtaskList.find(
            (item) => item.id == this.id
          );
          objson.remark = this.form.remark;
          if (sendstate) objson.sendstate = sendstate;
          Editsingletaskson(objson).then((res) => {
@@ -1087,6 +1321,7 @@
    sendAgain() {
      document.querySelector("#app").scrollTo(0, 0);
      // scrollTo(0, 0)
      this.formtidy();
      this.dialogFormVisible = true;
    },
    // 查看详情
@@ -1108,8 +1343,18 @@
        .catch(() => {});
    },
    handleOptionChange(a, b, c) {
console.log(a);
      const result = c.find((item) => item.optioncontent == a);
      if (result.nextQuestion == 0) {
        this.tableDatatop = this.tableDatatop.reduce((acc, item, i) => {
          acc.push(i > b ? { ...item, astrict: 1 } : item);
          return acc;
        }, []);
      } else {
        this.tableDatatop = this.tableDatatop.reduce((acc, item, i) => {
          acc.push(i > b ? { ...item, astrict: 0 } : item);
          return acc;
        }, []);
      }
      if (this.Voicetype) {
        var obj = this.tableDatatop[b].ivrTaskScriptTargetoptionList.find(
          (item) => item.optioncontent == a
@@ -1153,9 +1398,15 @@
          if (form.resource) {
            if (form.resource == 2) {
              form.serviceType = 13;
              form.visitDeptCode = localStorage.getItem("deptCode");
              form.visitDeptName = "随访中心";
            } else {
              form.visitDeptCode = form.deptcode;
              form.visitDeptName = form.deptname;
            }
          } else {
            this.$modal.msgError("未选择随访方式");
            return;
          }
          // form.id = null;
          form.sendstate = 2;
@@ -1164,11 +1415,11 @@
              this.$modal.msgSuccess("创建成功");
              if (form.serviceType == 13) {
                this.$router.push({
                  path: "/logisticsservice/record",
                  path: "/logisticsservice/again",
                });
              } else if (form.serviceType == 2) {
                this.$router.push({
                  path: "/followvisit/discharge",
                  path: "/logisticsservice/zbAgain",
                });
              }
            } else {
@@ -1191,14 +1442,12 @@
      return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
    },
    updateScore(a, b, c) {
    },
    updateScore(a, b, c) {},
  },
};
</script>
<style lang="scss" scoped>
<style lang="scss">
.Followupdetailspage {
  margin: 10px;
}
@@ -1369,8 +1618,25 @@
::v-deep.el-link.el-link--default {
  color: #02a7f0 !important;
}
.el-message-box__btns button:nth-child(2) {
  margin-left: 10px;
  background-color: #f57676;
  border-color: #f57676;
}
.mulsz {
  font-size: 25px;
  margin-top: 20px;
}
.el-input.is-disabled .el-input__inner {
  background-color: #fff; /* 背景颜色 */
  border-color: #dcdfe6; /* 边框颜色 */
  color: #080808 !important; /* 文字颜色 */
  cursor: not-allowed; /* 鼠标样式 */
}
.el-textarea.is-disabled .el-textarea__inner {
  background-color: #fff; /* 背景颜色 */
  border-color: #dcdfe6; /* 边框颜色 */
  color: #080808 !important; /* 文字颜色 */
  cursor: not-allowed; /* 鼠标样式 */
}
</style>