wwl
2025-02-14 c6b785037442a26b5b45e4bc9834e49c47e3fb09
src/views/doctor/checkAll/index.vue
@@ -190,7 +190,12 @@
            />
          </template>
        </el-table-column>
        <el-table-column label="操作" align="center" width="120px" fixed="right">
        <el-table-column
          label="操作"
          align="center"
          width="120px"
          fixed="right"
        >
          <template slot-scope="scope">
            <el-button
              fixed="right"
@@ -397,6 +402,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">
@@ -579,9 +590,8 @@
            <el-button type="primary" @click="proposalChange"
              >生成建议</el-button
            >
          </div>
          <el-form
            ref="numberValidateForm"
            label-width="80px"
@@ -645,27 +655,67 @@
                  >
                    <el-table-column type="expand">
                      <template slot-scope="props">
                        <div
                          v-if="
                            props.row.advices && props.row.advices.length > 0
                          "
                        >
                        <div>
                          <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>
                                标题:
                                <el-input
                                  v-model="jianyi.bt"
                                  size="small"
                                  type="textarea"
                                  autosize
                                ></el-input>
                              </div>
                              <div>
                                内容:
                                <el-input
                                  v-model="jianyi.nr"
                                  size="small"
                                  type="textarea"
                                  autosize
                                ></el-input>
                              </div>
                            </div>
                          </div>
                          <!-- 如果 advices 为空时,渲染空的输入框 -->
                          <div v-else>
                            <div>
                              标题:
                              <el-input
                                v-model="emptyAdvice.bt"
                                size="small"
                                type="textarea"
                                autosize
                              ></el-input>
                            </div>
                            <div>
                              内容:
                              <el-input
                                v-model="emptyAdvice.nr"
                                size="small"
                                type="textarea"
                                autosize
                              ></el-input>
                            </div>
                          </div>
                        </div>
                        <div v-else style="padding: 0 10px">暂无内容</div>
                      </template>
                    </el-table-column>
                    <el-table-column
                      align="center"
                      label="检测项目"
                      :show-overflow-tooltip="true"
                      width="353"
                    >
                      <template slot-scope="scope">
@@ -695,6 +745,14 @@
                      width="78"
                    >
                    </el-table-column>
                    <el-table-column
      fixed="right"
      label="操作"
      width="100">
      <template slot-scope="scope">
        <el-button @click="handleClick(scope.row)"  type="danger" size="small">删除</el-button>
      </template>
    </el-table-column>
                  </el-table>
                </template>
                <template v-if="item.jyjc == '1'">
@@ -710,21 +768,61 @@
                  >
                    <el-table-column type="expand">
                      <template slot-scope="props">
                        <div
                          v-if="
                            props.row.advices && props.row.advices.length > 0
                          "
                        >
                        <div>
                          <!-- 如果 advices 非空,渲染其内容 -->
                          <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>
                                标题:
                                <el-input
                                  v-model="jianyi.bt"
                                  size="small"
                                  type="textarea"
                                  autosize
                                ></el-input>
                              </div>
                              <div>
                                内容:
                                <el-input
                                  v-model="jianyi.nr"
                                  size="small"
                                  type="textarea"
                                  autosize
                                ></el-input>
                              </div>
                            </div>
                          </div>
                          <!-- 如果 advices 为空时,渲染空的输入框 -->
                          <div v-else>
                            <div>
                              标题:
                              <el-input
                                v-model="emptyAdvice.bt"
                                size="small"
                                type="textarea"
                                autosize
                              ></el-input>
                            </div>
                            <div>
                              内容:
                              <el-input
                                v-model="emptyAdvice.nr"
                                size="small"
                                type="textarea"
                                autosize
                              ></el-input>
                            </div>
                          </div>
                        </div>
                        <div v-else style="padding: 0 10px">暂无内容</div>
                      </template>
                    </el-table-column>
@@ -732,6 +830,7 @@
                      align="center"
                      label="检测项目"
                      width="232"
                      :show-overflow-tooltip="true"
                    >
                      <template slot-scope="scope">
                        <div>{{ scope.row.proName }}</div>
@@ -764,7 +863,6 @@
                  :data="statusList"
                  style="width: 100%"
                  :header-cell-style="{ background: '#e6a23c' }"
                >
                  <el-table-column
                    align="center"
@@ -1282,6 +1380,7 @@
  gettoPdf,
  getModified,
  isPdfOrJimu,
  addOrder,
} from "@/api/doctor/checkAll";
import { getInfoById } from "@/api/hosp/history";
import { getInfo } from "@/api/login";
@@ -1296,6 +1395,7 @@
import { getNewDateList } from "@/api/hosp/order";
import { getconfigKey } from "@/api/login";
import moment from "moment";
import { get } from "sortablejs";
export default {
  components: {
@@ -1322,7 +1422,10 @@
  data() {
    return {
      // 更新总检建议
      emptyAdvice: {
        bt: "",
        nr: "",
      },
      initialTotalCheckAdvice: "",
      initialState: "",
      preObj: {},
@@ -1512,7 +1615,27 @@
        tjNum: this.tjNumber,
      }).then((res) => {
        this.yichangList = res.data;
        console.log(this.yichangList, 3232);
        this.getExpends();
        this.yichangList.forEach((item) => {
          item.sone.forEach((soneItem) => {
            if (
              !Array.isArray(soneItem.advices) ||
              soneItem.advices.length === 0
            ) {
              // 如果 advices 是空,设置默认值
              soneItem.advices = [
                {
                  bt: "",
                  nr: "",
                },
              ];
            }
          });
        });
        if (!this.yichangList) {
          _this.$message({
            type: "warning ",
@@ -1801,6 +1924,7 @@
      if (this.tjproject == "0") {
        getupdateCheckType(this.tjNumber).then((response) => {
          this.changedate = response.data;
          this.changedate.forEach((item) => {
            this.textarea1 = item.checkAdvice;
          });
@@ -1942,7 +2066,7 @@
      if (row.type != 1) {
        // 变颜色的条件
        return {
          backgroundColor: '#AAD8DF !important', // 这个return的就是样式 可以是color 也可以是backgroundColor
          backgroundColor: "#AAD8DF !important", // 这个return的就是样式 可以是color 也可以是backgroundColor
          // color: "#AAD8DF ",
        };
      }
@@ -2254,63 +2378,121 @@
    //   }
    // },
    change(vale) {},
    /*  determine() {
      let tjNumber = this.tableAll.tjNumber;
      let advice = this.textarea1;
      let data = {
        tjNumber,
        advice,
        checkStatus: 1,
      };
      this.loading = true;
      getTjdetailList(data).then((response) => {
        if (response.code === 200) {
          this.$modal.msgSuccess("提交成功");
          let tjNumber = this.tjNumber;
          let data = {
            userId: this.userId,
            tjNumber: tjNumber,
            state: 1,
            id: this.MsgId,
          };
          gettoPdf(tjNumber)
            .then((res) => {
              this.$modal.msgSuccess("已生成报告!请前往报告核收页面确认!");
            })
            .catch((error) => {
              this.$modal.msgError(
                "打印报告失败,请前往报告打印页面补打报告!"
              );
            })
          getfiedState(data).then((res) => {
            this.drawer = false;
          });
          this.queryParams.page = 1;
          this.queryParams.pageSize = 10;
          this.submitForm();
          this.$forceUpdate();
      });
      for (let i = 0; i < this.changedate.length; i++) {
        this.proIds = this.changedate[i].parentId;
        let remarks = this.changedate[i].remark;
        let updateOrderRemarkVos = [
          {
            tjNumber,
            proId: this.proIds.toString(),
            remarks,
          },
        ];
        getModified(updateOrderRemarkVos).then((response) => {});
      }
    // determine() {
    //   let tjNumber = this.tableAll.tjNumber;
    //   let tjh = this.tableAll.tjNumber;
    //   // let jyjc = this.yichangList.map(item => item.jyjc || null);
    //   let advice = this.textarea1;
    //   let data = {
    //     tjNumber,
    //     advice,
    //     checkStatus: 1,
    //   };
      // this.changedate.forEach((item) => {
      //   this.proIds = item.parentId;
      //   // this.remark = item.remark;
      // });
    }, */
    //   console.log(this.yichangList, 66);
    //   let dataList = this.yichangList
    //     .map((item) => {
    //       return item.sone.map((soneItem) => ({
    //         tjh,
    //         parentName: item.proName,
    //         jcxm: soneItem.proName,
    //         map: soneItem.advices,
    //         jyjc: item.jyjc, // assuming jyjc belongs to the outer item, not soneItem
    //         jcjg: soneItem.proResult,
    //         ckfw: soneItem.stanId,
    //         dw: soneItem.proAdvice,
    //       }));
    //     })
    //     .flat(); // 使用 flat() 方法将嵌套数组展平
    //   console.log(dataList, 777);
    //   /*  addOrder(dataList).then((res) => {
    //     console.log(res, 999);
    //   }); */
    //   getTjdetailList(data)
    //     .then((response) => {
    //       if (response.code === 200) {
    //         this.$modal.msgSuccess("提交成功");
    //         // 准备生成报告的请求数据
    //         let reportData = {
    //           userId: this.userId,
    //           tjNumber: tjNumber,
    //           state: 1,
    //           id: this.MsgId,
    //         };
    //         // 生成报告并保持 loading 打开
    //         const reportPromise = gettoPdf(tjNumber)
    //           .then((res) => {
    //             this.$modal.msgSuccess("已生成报告!请前往报告核收页面确认!");
    //           })
    //           .catch((error) => {
    //             this.$modal.msgError(
    //               "打印报告失败,请前往报告打印页面补打报告!"
    //             );
    //           });
    //         // 更新状态并提交修改请求
    //         const statePromise = getfiedState(reportData).then((res) => {
    //           this.drawer = false;
    //         });
    //         // const addOrderPromise = addOrder(dataList).then((res) => {
    //         //   console.log(res, 999);
    //         // });
    //         // 处理其他修改操作
    //         const updatePromises = this.changedate.map((item) => {
    //           this.proIds = item.parentId;
    //           let remarks = item.remark;
    //           let updateOrderRemarkVos = [
    //             {
    //               tjNumber,
    //               proId: this.proIds.toString(),
    //               remarks,
    //             },
    //           ];
    //           return getModified(updateOrderRemarkVos); // 返回 Promise
    //         });
    //         // 等待所有请求完成
    //         Promise.all([
    //           reportPromise,
    //           statePromise,
    //           // addOrderPromise,
    //           ...updatePromises,
    //         ])
    //           .then(() => {
    //             // 所有请求完成,关闭 loading
    //             this.loading = false;
    //             // 更新分页信息
    //             this.queryParams.page = 1;
    //             this.queryParams.pageSize = 10;
    //             this.submitForm();
    //             this.$forceUpdate();
    //           })
    //           .catch((error) => {
    //             // 处理错误情况
    //             this.loading = false;
    //             console.error("发生错误:", error);
    //           });
    //       } else {
    //         // 提交失败,关闭 loading
    //         this.loading = false;
    //       }
    //     })
    //     .catch((error) => {
    //       // 提交请求失败,关闭 loading
    //       this.loading = false;
    //       console.error("提交请求失败:", error);
    //     });
    // },
    determine() {
      let tjNumber = this.tableAll.tjNumber;
      let tjh = this.tableAll.tjNumber;
      let advice = this.textarea1;
      let data = {
        tjNumber,
@@ -2318,10 +2500,23 @@
        checkStatus: 1,
      };
      // 开始加载
      this.loading = true;
      console.log(this.yichangList, 6644);
      // 提交数据
      let dataList = this.yichangList
        .map((item) => {
          return item.sone.map((soneItem) => ({
            tjh,
            parentName: item.proName,
            jcxm: soneItem.proName,
            map: soneItem.advices,
            jyjc: item.jyjc,
            jcjg: soneItem.proResult,
            ckfw: soneItem.stanId,
            dw: soneItem.proAdvice,
          }));
        })
        .flat(); // 使用 flat() 方法将嵌套数组展平
      getTjdetailList(data)
        .then((response) => {
          if (response.code === 200) {
@@ -2335,51 +2530,62 @@
              id: this.MsgId,
            };
            // 生成报告并保持 loading 打开
            const reportPromise = gettoPdf(tjNumber)
            // 调用 addOrderPromise
            console.log(dataList, 5555);
            addOrder(dataList)
              .then((res) => {
                this.$modal.msgSuccess("已生成报告!请前往报告核收页面确认!");
                console.log(res, 999);
                if (res.code == 200) {
                  gettoPdf(tjNumber)
                    .then((res) => {
                      this.$modal.msgSuccess(
                        "已生成报告!请前往报告核收页面确认!"
                      );
                    })
                    .catch(() => {
                      this.$modal.msgError(
                        "打印报告失败,请前往报告打印页面补打报告!"
                      );
                    });
                  const statePromise = getfiedState(reportData).then(() => {
                    this.drawer = false;
                  });
                  const updatePromises = this.changedate.map((item) => {
                    this.proIds = item.parentId;
                    let remarks = item.remark;
                    let updateOrderRemarkVos = [
                      {
                        tjNumber,
                        proId: this.proIds.toString(),
                        remarks,
                      },
                    ];
                    return getModified(updateOrderRemarkVos); // 返回 Promise
                  });
                  // 等待所有请求完成
                  Promise.all([statePromise, ...updatePromises])
                    .then(() => {
                      // 所有请求完成,关闭 loading
                      this.loading = false;
                      // 更新分页信息
                      this.queryParams.page = 1;
                      this.queryParams.pageSize = 10;
                      this.submitForm();
                      this.$forceUpdate();
                    })
                    .catch((error) => {
                      // 处理错误情况
                      this.loading = false;
                      console.error("发生错误:", error);
                    });
                }
              })
              .catch((error) => {
                this.$modal.msgError(
                  "打印报告失败,请前往报告打印页面补打报告!"
                );
              });
            // 更新状态并提交修改请求
            const statePromise = getfiedState(reportData).then((res) => {
              this.drawer = false;
            });
            // 处理其他修改操作
            const updatePromises = this.changedate.map((item) => {
              this.proIds = item.parentId;
              let remarks = item.remark;
              let updateOrderRemarkVos = [
                {
                  tjNumber,
                  proId: this.proIds.toString(),
                  remarks,
                },
              ];
              return getModified(updateOrderRemarkVos); // 返回 Promise
            });
            // 等待所有请求完成
            Promise.all([reportPromise, statePromise, ...updatePromises])
              .then(() => {
                // 所有请求完成,关闭 loading
                // 如果 addOrderPromise 失败,处理错误
                this.loading = false;
                // 更新分页信息
                this.queryParams.page = 1;
                this.queryParams.pageSize = 10;
                this.submitForm();
                this.$forceUpdate();
              })
              .catch((error) => {
                // 处理错误情况
                this.loading = false;
                console.error("发生错误:", error);
                console.error("addOrderPromise 失败:", error);
              });
          } else {
            // 提交失败,关闭 loading
@@ -2494,16 +2700,16 @@
  width: 1700px;
  height: 900px;
}
::v-deep .el-dialog__header{
::v-deep .el-dialog__header {
  padding: 8px;
}
::v-deep .el-dialog__body{
padding: 0;
::v-deep .el-dialog__body {
  padding: 0;
}
::v-deep .el-button--medium {
  padding: 10px;
}
::v-deep .el-dialog__headerbtn{
::v-deep .el-dialog__headerbtn {
  // position: relative;
  top: 13px;
}
@@ -2558,23 +2764,27 @@
.box {
  display: flex;
  height: 100vh;
  // height: 100vh;
}
.rightbox {
  margin-left: 60px;
  position: fixed;
  top: 107px;
  right: 56px;
  // margin-left: 60px;
  // position: fixed;
  // top: 107px;
  // right: 56px;
  width: 684px;
  position: fixed; /* 固定定位 */
  right: 60px;
  .right {
    background-color: #fff;
    // box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    z-index: 10;
    max-height: calc(100vh - 100px); /* 假设你想为顶部和底部留出一些空间 */
    overflow-y: auto; /* 允许垂直滚动 */
    max-height: 900px;
    height: calc(100vh - 100px);
    /* 假设你想为顶部和底部留出一些空间 */
    overflow-y: auto !important; /* 允许垂直滚动 */
    padding: 0 0 50px; /* 可选:添加一些内边距以避免内容紧贴边缘 */
    padding-bottom: 200px;
  }
}