1
lkk
2025-01-21 7d2dba2945bf807413e7fc809fc06acebe3721a8
src/views/doctor/checkAll/index.vue
@@ -144,12 +144,19 @@
          width="130px"
        />
        <el-table-column
        <!-- <el-table-column
          label="体检时间"
          align="center"
          prop="tjTime"
          :show-overflow-tooltip="true"
          width="110px"
        /> -->
        <el-table-column
          label="审核时间"
          align="center"
          prop="shsj"
          :show-overflow-tooltip="true"
          width="180px"
        />
        <el-table-column
          label="完成时间"
@@ -163,10 +170,10 @@
          align="center"
          prop="tjStatus"
          :show-overflow-tooltip="true"
          width="50px"
          width="120px"
        >
          <template slot-scope="scope">
            <span>{{ scope.row.tjStatus == "1" ? "已检" : "未检" }}</span>
            <span>{{ scope.row.tjStatus == "1" ? "已审核" : "未审核" }}</span>
          </template>
        </el-table-column>
        <el-table-column
@@ -183,7 +190,7 @@
            />
          </template>
        </el-table-column>
        <el-table-column label="操作" align="center" width="90px" fixed="right">
        <el-table-column label="操作" align="center" width="120px" fixed="right">
          <template slot-scope="scope">
            <el-button
              fixed="right"
@@ -311,32 +318,34 @@
      <div style="margin-right: 10px; display: flex" class="btnbox">
        <div class="btn1" v-if="msgtuwen == 'y' || msgtuwen == 'Y'">
          <el-button @click="Graphicreport()" type="primary"
            >图文报告</el-button
          >
          <el-button @click="Graphicreport()" type="primary">
            <span class="vertical-text">图文报告</span>
          </el-button>
        </div>
        <div class="btn1">
          <el-button @click="historicalreport()" type="primary"
            >历史报告</el-button
            ><span class="vertical-text">历史报告</span></el-button
          >
        </div>
        <div v-if="tableAll.tjCategory == '02'" class="btn1">
          <el-button @click="medicalhistory()" type="primary"
            >职业病史</el-button
            ><span class="vertical-text">职业病史</span></el-button
          >
        </div>
        <div class="btn1" v-if="msgjianqian == 'y' || msgjianqian == 'Y'">
          <el-button @click="jianqian()" type="primary">检前问诊</el-button>
          <el-button @click="jianqian()" type="primary"
            ><span class="vertical-text">检前问诊</span></el-button
          >
        </div>
        <div class="btn1">
          <el-button @click="xiangmuqingkuang()" type="primary"
            >项目情况</el-button
            ><span class="vertical-text">项目情况</span></el-button
          >
        </div>
        <div class="btn1">
          <el-button @click="yichangjieguo()" type="primary"
            >异常结果</el-button
            ><span class="vertical-text">异常结果</span></el-button
          >
        </div>
      </div>
@@ -345,9 +354,9 @@
          class="left"
          style="
            font-size: 14px;
            height: calc(100% - 11%);
            width: 1100px;
            margin-left: 10px;
            padding: 0 0 50px;
          "
        >
          <div v-for="(item, index) in changedate" :key="index">
@@ -388,6 +397,12 @@
                    <div v-else>{{ scope.row.proAdvice }}</div>
                  </template>
                </el-table-column>
                <el-table-column
                  align="center"
                  prop="conclusion"
                  label="异常"
                  width="180"
                ></el-table-column>
                <el-table-column align="center" prop="" label=" 参考范围">
                  <template slot-scope="scope">
                    <div v-if="scope.row.project != null">
@@ -570,8 +585,9 @@
            <el-button type="primary" @click="proposalChange"
              >生成建议</el-button
            >
          </div>
          <el-form
            ref="numberValidateForm"
            label-width="80px"
@@ -611,7 +627,7 @@
        <div class="rightbox">
          <div class="right">
            <template v-if="status == 0">
            <template v-if="status1 == 0">
              <div v-for="(item, index) in yichangList" :key="index">
                <div
                  style="
@@ -622,66 +638,123 @@
                >
                  {{ item.proName || "" }}
                </div>
                <el-table
                  :stripe="true"
                  :row-style="red"
                  :data="item.sone"
                  border
                  style="width: 100%"
                  :header-cell-style="{ background: '#67C23A' }"
                  :expand-row-keys="expends"
                  :row-key="getRowKeys"
                >
                  <el-table-column type="expand">
                    <template slot-scope="props">
                      <div
                        v-if="props.row.advices && props.row.advices.length > 0"
                      >
                <template v-if="item.jyjc == '0'">
                  <el-table
                    :stripe="true"
                    :row-style="red"
                    :data="item.sone"
                    border
                    style="width: 100%"
                    :header-cell-style="{ background: '#67C23A' }"
                    :expand-row-keys="expends"
                    :row-key="getRowKeys"
                  >
                    <el-table-column type="expand">
                      <template slot-scope="props">
                        <div
                          v-for="(jianyi, index1) in props.row.advices"
                          :key="index1"
                          style="padding: 0 10px; margin-bottom: 10px"
                          v-if="
                            props.row.advices && props.row.advices.length > 0
                          "
                        >
                          <div>标题:{{ jianyi.bt || "" }}</div>
                          <div>内容:{{ jianyi.nr || "" }}</div>
                          <div
                            v-for="(jianyi, index1) in props.row.advices"
                            :key="index1"
                            style="padding: 0 10px; margin-bottom: 10px"
                          >
                            <div>标题:{{ jianyi.bt || "" }}</div>
                            <div>内容:{{ jianyi.nr || "" }}</div>
                          </div>
                        </div>
                      </div>
                      <div v-else style="padding: 0 10px">暂无内容</div>
                    </template>
                  </el-table-column>
                        <div v-else style="padding: 0 10px">暂无内容</div>
                      </template>
                    </el-table-column>
                  <el-table-column align="center" label="检测项目" width="335">
                    <template slot-scope="scope">
                      <div>{{ scope.row.proName }}</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    align="center"
                    prop="proResult"
                    label="检测结果"
                    width="85"
                  >
                  </el-table-column>
                    <el-table-column
                      align="center"
                      label="检测项目"
                      width="353"
                    >
                      <template slot-scope="scope">
                        <div>{{ scope.row.proName }}</div>
                      </template>
                    </el-table-column>
                    <el-table-column
                      align="center"
                      prop="proResult"
                      label="检测结果"
                      width="85"
                    >
                    </el-table-column>
                  <el-table-column
                    align="center"
                    prop="stanId"
                    label=" 参考范围"
                    width="117"
                  >
                  </el-table-column>
                    <el-table-column
                      align="center"
                      prop="stanId"
                      label=" 参考范围"
                      width="117"
                    >
                    </el-table-column>
                  <el-table-column
                    align="center"
                    prop="proAdvice"
                    label="单位"
                    width="78"
                    <el-table-column
                      align="center"
                      prop="proAdvice"
                      label="单位"
                      width="78"
                    >
                    </el-table-column>
                  </el-table>
                </template>
                <template v-if="item.jyjc == '1'">
                  <el-table
                    :stripe="true"
                    :row-style="red"
                    :data="item.sone"
                    border
                    style="width: 100%"
                    :header-cell-style="{ background: '#67C23A' }"
                    :expand-row-keys="expends"
                    :row-key="getRowKeys"
                  >
                  </el-table-column>
                </el-table>
                    <el-table-column type="expand">
                      <template slot-scope="props">
                        <div
                          v-if="
                            props.row.advices && props.row.advices.length > 0
                          "
                        >
                          <div
                            v-for="(jianyi, index1) in props.row.advices"
                            :key="index1"
                            style="padding: 0 10px; margin-bottom: 10px"
                          >
                            <div>标题:{{ jianyi.bt || "" }}</div>
                            <div>内容:{{ jianyi.nr || "" }}</div>
                          </div>
                        </div>
                        <div v-else style="padding: 0 10px">暂无内容</div>
                      </template>
                    </el-table-column>
                    <el-table-column
                      align="center"
                      label="检测项目"
                      width="232"
                    >
                      <template slot-scope="scope">
                        <div>{{ scope.row.proName }}</div>
                      </template>
                    </el-table-column>
                    <el-table-column
                      align="center"
                      prop="proResult"
                      label="检测结果"
                      width="403"
                    >
                    </el-table-column>
                  </el-table>
                </template>
              </div>
            </template>
            <template v-if="status == 1">
            <template v-if="status1 == 1">
              <div>
                <div
                  style="
@@ -697,12 +770,12 @@
                  :data="statusList"
                  style="width: 100%"
                  :header-cell-style="{ background: '#e6a23c' }"
                  :stripe="true"
                >
                  <el-table-column
                    align="center"
                    label="部门"
                    width="185"
                    width="144"
                    prop="deptName"
                  >
                  </el-table-column>
@@ -719,11 +792,11 @@
                    align="center"
                    prop="type"
                    :show-overflow-tooltip="true"
                    width="60"
                    width="120"
                  >
                    <template slot-scope="scope">
                      <span v-if="scope.row.type == '0'">未检</span>
                      <span v-if="scope.row.type == '1'">已检</span>
                      <span v-if="scope.row.type == '0'">未审核</span>
                      <span v-if="scope.row.type == '1'">已审核</span>
                      <span v-if="scope.row.type == '2'">弃检</span>
                      <span v-if="scope.row.type == '3'">延期</span>
                    </template>
@@ -1255,6 +1328,7 @@
  data() {
    return {
      // 更新总检建议
      initialTotalCheckAdvice: "",
      initialState: "",
      preObj: {},
@@ -1274,7 +1348,6 @@
      cusobj: {},
      xiaojie: "",
      isdisabled: false,
      dialogVisible: false,
      src: "",
      url: "",
      userId: "",
@@ -1382,7 +1455,7 @@
        tjCategory: undefined,
        payType: undefined,
      },
      status: 0, // 0展示异常1展示项目情况
      status1: 0, // 0展示异常1展示项目情况
      viewportHeight: 0,
      expends: [],
    };
@@ -1427,7 +1500,7 @@
    // 项目情况
    xiangmuqingkuang() {
      cSWebGetPro(this.tjNumber).then((res) => {
        this.status = 1;
        this.status1 = 1;
        this.statusList = res.data;
        if (this.statusList.length == 0) {
@@ -1439,24 +1512,27 @@
      this.drawer = false;
    },
    yichangjieguo() {
      this.status = 0;
      this.status1 = 0;
      let _this = this;
      yichang({
        tjNum: this.tjNumber,
      }).then((res) => {
        this.yichangList = res.data;
        this.getExpends();
        if (this.yichangList.length == 0) {
          _this.$message.msgSuccess("暂无异常报告");
        if (!this.yichangList) {
          _this.$message({
            type: "warning ",
            message: "暂无异常报告",
          });
        }
      });
    },
    getdate() {
      getNewDateList().then((res) => {
        this.startTime = [
        /* this.startTime = [
          moment(res.data).format("YYYY-MM-DD 00:00:00"),
          moment(res.data).format("YYYY-MM-DD 23:59:00"),
        ];
        ]; */
        this.getList();
      });
    },
@@ -1731,6 +1807,7 @@
      if (this.tjproject == "0") {
        getupdateCheckType(this.tjNumber).then((response) => {
          this.changedate = response.data;
          this.changedate.forEach((item) => {
            this.textarea1 = item.checkAdvice;
          });
@@ -1869,10 +1946,11 @@
      };
    },
    redxiangmu({ row }) {
      if (row.type == 0) {
      if (row.type != 1) {
        // 变颜色的条件
        return {
          color: "red", // 这个return的就是样式 可以是color 也可以是backgroundColor
          backgroundColor: '#AAD8DF !important', // 这个return的就是样式 可以是color 也可以是backgroundColor
          // color: "#AAD8DF ",
        };
      }
    },
@@ -1907,39 +1985,160 @@
      getState(this.tjNumber).then((res) => {
        this.status = res.data;
        if (this.status) {
          if (this.status.status === "1") {
            this.yichangjieguo();
            getInfo().then((response) => {
              this.userId = response.user.userId;
              if (this.userId) {
                let data = {
                  userId: this.userId,
                  tjNumber: this.tjNumber,
                  state: 0,
                };
                getModifiedState(data).then((res) => {
                  this.MsgId = res.msg;
                  this.drawer = true;
                  getupdateCheckType(this.tjNumber).then((response) => {
                    this.changedate = response.data;
                    if (this.changedate) {
                      this.changedate.forEach((item) => {
                        this.textarea1 = item.checkAdvice || "";
                      });
        if (this.status.status === "1") {
                      // 这里设置初始值
                      this.initialTotalCheckAdvice = this.textarea1; // 保存总检建议
                      // 保存初始状态
                      this.initialState = JSON.parse(
                        JSON.stringify(this.changedate)
                      );
                      for (let i = 0; i < this.changedate.length; i++) {
                        this.remark = this.changedate[i].remark;
                      }
                      this.changedate.forEach((item) => {
                        // this.remark = item.remark;
                        // item.sons.forEach((item3) => {
                        //   if (item3.standard.tjStandardGtValue === null) {
                        //     item3.standard.tjStandardGtValue = "";
                        //   }
                        //   if (item3.standard.tjStandardLtValue === null) {
                        //     item3.standard.tjStandardLtValue = "";
                        //   }
                        // });
                      });
                    } else {
                      this.$message({
                        type: "warning ",
                        message: "该客户没有体检项目数据",
                      });
                    }
                  });
                });
              }
            });
          } else {
            this.$confirm(
              "" + this.status.name + "正在修改该信息, 是否强制进去?",
              "提示",
              {
                confirmButtonText: "是",
                cancelButtonText: "否",
                type: "warning",
              }
            )
              .then(() => {
                this.yichangjieguo();
                getInfo().then((response) => {
                  this.userId = response.user.userId;
                  if (this.userId) {
                    let data = {
                      userId: this.userId,
                      tjNumber: this.tjNumber,
                      state: 0,
                    };
                    getforceIn(data).then((res) => {
                      this.MsgId = res.msg;
                      this.drawer = true;
                      getupdateCheckType(this.tjNumber).then((response) => {
                        this.changedate = response.data;
                        if (this.changedate) {
                          for (let i = 0; i < this.changedate.length; i++) {
                            this.remark = this.changedate[i].remark;
                          }
                          this.initialState = JSON.parse(
                            JSON.stringify(this.changedate)
                          );
                          this.changedate.forEach((item) => {
                            this.textarea1 = item.checkAdvice || "";
                            // this.remark = item.remark;
                            // item.sons.forEach((item3) => {
                            //   if (item3.standard.tjStandardGtValue === null) {
                            //     item3.standard.tjStandardGtValue = "";
                            //   }
                            //   if (item3.standard.tjStandardLtValue === null) {
                            //     item3.standard.tjStandardLtValue = "";
                            //   }
                            // });
                            // item.remark = "";
                          });
                          // 保存总检建议
                          this.totalCheckAdvice = this.changedate.map(
                            (item) => item.totalCheckAdvice
                          );
                        } else {
                          this.$message({
                            type: "warning ",
                            message: "该客户没有体检项目数据",
                          });
                        }
                      });
                    });
                  }
                });
              })
              .catch(() => {
                this.$message({
                  type: "info",
                  message: "已取消进入",
                });
              });
            this.drawer = false;
          }
        } else {
          this.drawer = true;
          this.yichangjieguo();
          getInfo().then((response) => {
            this.userId = response.user.userId;
            if (this.userId) {
              let data = {
                userId: this.userId,
                tjNumber: this.tjNumber,
                state: 0,
              };
              getModifiedState(data).then((res) => {
              getforceIn(data).then((res) => {
                this.MsgId = res.msg;
                this.drawer = true;
                getupdateCheckType(this.tjNumber).then((response) => {
                  this.changedate = response.data;
                  if (this.changedate) {
                    this.changedate.forEach((item) => {
                      this.textarea1 = item.checkAdvice || "";
                    });
                    // 这里设置初始值
                    this.initialTotalCheckAdvice = this.textarea1; // 保存总检建议
                    // 保存初始状态
                    for (let i = 0; i < this.changedate.length; i++) {
                      this.remark = this.changedate[i].remark;
                    }
                    this.initialState = JSON.parse(
                      JSON.stringify(this.changedate)
                    );
                    for (let i = 0; i < this.changedate.length; i++) {
                      this.remark = this.changedate[i].remark;
                    }
                    this.changedate.forEach((item) => {
                      this.textarea1 = item.checkAdvice || "";
                      // this.remark = item.remark;
                      // item.sons.forEach((item3) => {
                      //   if (item3.standard.tjStandardGtValue === null) {
@@ -1949,7 +2148,13 @@
                      //     item3.standard.tjStandardLtValue = "";
                      //   }
                      // });
                      // item.remark = "";
                    });
                    // 保存总检建议
                    this.totalCheckAdvice = this.changedate.map(
                      (item) => item.totalCheckAdvice
                    );
                  } else {
                    this.$message({
                      type: "warning ",
@@ -1960,78 +2165,6 @@
              });
            }
          });
        } else {
          this.$confirm(
            "" + this.status.name + "正在修改该信息, 是否强制进去?",
            "提示",
            {
              confirmButtonText: "是",
              cancelButtonText: "否",
              type: "warning",
            }
          )
            .then(() => {
              this.yichangjieguo();
              getInfo().then((response) => {
                this.userId = response.user.userId;
                if (this.userId) {
                  let data = {
                    userId: this.userId,
                    tjNumber: this.tjNumber,
                    state: 0,
                  };
                  getforceIn(data).then((res) => {
                    this.MsgId = res.msg;
                    this.drawer = true;
                    getupdateCheckType(this.tjNumber).then((response) => {
                      this.changedate = response.data;
                      if (this.changedate) {
                        for (let i = 0; i < this.changedate.length; i++) {
                          this.remark = this.changedate[i].remark;
                        }
                        this.initialState = JSON.parse(
                          JSON.stringify(this.changedate)
                        );
                        this.changedate.forEach((item) => {
                          this.textarea1 = item.checkAdvice || "";
                          // this.remark = item.remark;
                          // item.sons.forEach((item3) => {
                          //   if (item3.standard.tjStandardGtValue === null) {
                          //     item3.standard.tjStandardGtValue = "";
                          //   }
                          //   if (item3.standard.tjStandardLtValue === null) {
                          //     item3.standard.tjStandardLtValue = "";
                          //   }
                          // });
                          // item.remark = "";
                        });
                        // 保存总检建议
                        this.totalCheckAdvice = this.changedate.map(
                          (item) => item.totalCheckAdvice
                        );
                      } else {
                        this.$message({
                          type: "warning ",
                          message: "该客户没有体检项目数据",
                        });
                      }
                    });
                  });
                }
              });
            })
            .catch(() => {
              this.$message({
                type: "info",
                message: "已取消进入",
              });
            });
          this.drawer = false;
        }
      });
@@ -2273,13 +2406,9 @@
.mainbox {
  position: relative;
}
.tanchu {
  background-color: red;
}
.btn {
  margin: 20px 0px;
}
/* 按钮的初始状态 */
.btnbox {
  display: flex;
  flex-direction: column;
@@ -2293,13 +2422,12 @@
/* 每个按钮的样式 */
.btn1 {
  animation: fadeInUp 0.5s ease-out forwards; /* 按钮加载时的淡入动画 */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  writing-mode: vertical-rl; /* 按钮文本竖直排列 */
  text-align: center; /* 文字居中 */
  text-align: center;
}
.vertical-text {
  writing-mode: vertical-rl;
  text-orientation: upright;
}
/* 设置动画效果 */
@@ -2346,7 +2474,7 @@
}
.main {
  height: 700px;
  height: 800px;
  overflow: hidden;
}
@@ -2369,7 +2497,23 @@
  -moz-border-radius: 2em;
  border-radius: 2em;
}
::v-deep .el-dialog {
  width: 1700px;
  height: 900px;
}
::v-deep .el-dialog__header{
  padding: 8px;
}
::v-deep .el-dialog__body{
padding: 0;
}
::v-deep .el-button--medium {
  padding: 10px;
}
::v-deep .el-dialog__headerbtn{
  // position: relative;
  top: 13px;
}
/* .el-dialog {
  width: 1264px;
  height: 800px;
@@ -2403,9 +2547,8 @@
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0px 20px;
  z-index: 1000; /* 确保按钮层级在其他内容上方 */
  width: 100%;
  width: 300px;
  background-color: white; /* 可根据需要调整背景颜色 */
}
@@ -2421,24 +2564,24 @@
}
.box {
  display: flex;
  position: sticky;
  top: 0px;
  height: 85vh;
  overflow: auto; // 确保父容器可以滚动
  height: 100vh;
}
.rightbox {
  margin-left: 60px;
  overflow-y: scroll;
  position: sticky;
  top: 0px;
  position: fixed;
  top: 107px;
  right: 56px;
  width: 684px;
  .right {
    position: sticky;
    top: 0px;
    background-color: #fff;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    // box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    z-index: 10;
    max-height: calc(100vh - 100px); /* 假设你想为顶部和底部留出一些空间 */
    overflow-y: auto; /* 允许垂直滚动 */
    padding: 0 0 50px; /* 可选:添加一些内边距以避免内容紧贴边缘 */
  }
}
@@ -2464,6 +2607,12 @@
::v-deep .el-table--medium .el-table__cell {
  padding: 5px 0;
}
::-webkit-scrollbar {
  display: none;
}
::v-deep .el-drawer {
  padding: 0 0 50px;
}
</style>