qx
2024-06-20 772d8df8a3ee02a6fe2dbd6ba7216e3e3ee0ec63
src/views/system/biol/index.vue
@@ -27,18 +27,20 @@
          @blur="hb"
        />
      </el-form-item>
      <el-form-item label="报告时间" prop="reportTimeList">
      <el-form-item label="报告时间" prop="createTimeList">
        <el-date-picker
          clearable
          v-model="queryParams.reportTimeList"
          v-model="createTimeList"
          type="daterange"
          range-separator="-"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          :picker-options="pickerOptions"
          value-format="yyyy-MM-dd"
          :default-time="['00:00:00', '23:00:00']"
          format="yyyy-MM-dd HH:mm:ss"
          value-format="yyyy-MM-dd HH:mm:ss"
          placeholder="请选择出报告时间"
          style="width: 240px"
          @change="dateChangebirthday1"
        >
        </el-date-picker>
      </el-form-item>
@@ -87,11 +89,14 @@
          >健康检查表打印</el-button
        >
      </el-col>
      <!-- <el-col :span="1.5">
        <el-button type="primary" size="mini" :disabled="multiple" @click="jiankangReport">批量体检报告导出</el-button>
      </el-col> -->
      <el-col :span="1.5">
        <el-button
          type="primary"
          size="mini"
          :disabled="multiple"
          :disabled="single"
          @click="baogaoyulan"
          >报告预览</el-button
        >
@@ -465,19 +470,13 @@
        ></iframe>
      </div>
    </el-dialog>
    <el-dialog
      title="提示"
      :visible.sync="dialogVisiblese"
      width="30%"
      :before-close="handleClose"
    >
    <!--:before-close="handleClose"  -->
    <el-dialog title="提示" :visible.sync="dialogVisiblese" width="30%">
      <el-radio v-model="radios" label="1">食品从业人员健康检查表</el-radio>
      <el-radio v-model="radios" label="2">公共场所从业人员检查表</el-radio>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="timjiao"
          >确 定</el-button
        >
        <el-button type="primary" @click="timjiao">确 定</el-button>
      </span>
    </el-dialog>
  </div>
@@ -486,6 +485,7 @@
<script>
import print from "print-js";
import { getInfo } from "@/api/login";
import { isPdfOrJimu } from "@/api/doctor/checkAll";
import {
  listOrder,
  getNumber,
@@ -494,9 +494,16 @@
  hasReport,
  hasPrintCode,
  getOrderListOO,
  getNewDateList,
} from "@/api/hosp/order";
import moment from "moment";
import ViewPdf from "@/components/ViewPdf";
import { SubmitCompany, getCompany, queryCompany } from "@/api/team/tuanti";
import {
  SubmitCompany,
  getCompany,
  queryCompany,
  addbatch,
} from "@/api/team/tuanti";
import { chownSync } from "fs";
export default {
  components: {
@@ -505,7 +512,7 @@
  name: "Order",
  data() {
    return {
      radios: '1',
      radios: "1",
      dialogVisiblese: false,
      createTimeList: "",
      // printObj: {
@@ -667,9 +674,10 @@
    };
  },
  created() {
    this.getNowTime();
    this.getList();
    // this.getNowTime();
    this.Company();
    this.getdate();
  },
  mounted() {
    this.$nextTick(() => {
@@ -677,6 +685,15 @@
    });
  },
  methods: {
    getdate() {
      getNewDateList().then((res) => {
        this.createTimeList = [
          moment(res.data).format("YYYY-MM-DD 00:00:00"),
          moment(res.data).format("YYYY-MM-DD 23:59:00"),
        ];
        this.getList();
      });
    },
    // / 处理默认选中当前日期
    getNowTime() {
      var curDate = new Date().getTime();
@@ -708,28 +725,14 @@
        this.add0(mm)
      );
    },
    /** 点击显示体检报告报表*/
    // viewReport() {
    //   const tjNumber = this.report;
    //   const viewNum = "792997692059705344";
    //   const params = { viewNum, tjNumber };
    //   hasReportEnd(tjNumber).then((res) => {
    //     if (res == 1) {
    //       this.$tab.openPage('体检报告', '/report/viewReport', params);
    //     } else {
    //       this.$message.error("该用户体检暂未完成,无法打印体检报告!");
    //     }
    //   });
    // },
    jiankangReport() {
      this.dialogVisiblese = true;
    },
    timjiao(){
      if(this.radios == "1"){
    timjiao() {
      if (this.radios == "1") {
        this.mobanId = "912502827716915200";
      }else{
      } else {
        this.mobanId = "912519857543262208";
      }
      const tjNum = this.report;
@@ -738,28 +741,41 @@
      this.$tab.openPage("健康证检查表", "/report/jiankangzheng", params);
    },
    baogaoyulan() {
      const tjNumber = this.report;
      const flag = true;
      getPdf(tjNumber, flag).then((response) => {
        if (response.size === 0) {
          const loading = this.$loading({
            lock: true,
            text: "Loading",
            spinner: "el-icon-loading",
            background: "rgba(0, 0, 0, 0.7)",
          });
          setTimeout(() => {
            loading.close();
          }, 3000);
          // this.$message.msgSuccess("报告正在生成,请两分钟后预览!");
          this.$message({
            message: "报告正在生成,请两分钟后预览!",
            type: "warning",
      const tjNumber = this.report[0];
      isPdfOrJimu(tjNumber).then((response) => {
        if (response.data.flag == "0") {
          const flag = true;
          getPdf(tjNumber, flag).then((response) => {
            if (response.size === 0) {
              const loading = this.$loading({
                lock: true,
                text: "Loading",
                spinner: "el-icon-loading",
                background: "rgba(0, 0, 0, 0.7)",
              });
              setTimeout(() => {
                loading.close();
              }, 3000);
              // this.$message.msgSuccess("报告正在生成,请两分钟后预览!");
              this.$message({
                message: "报告正在生成,请两分钟后预览!",
                type: "warning",
              });
            } else {
              console.log(response);
              this.dialogVisible = true;
              this.url = window.webkitURL.createObjectURL(response); //将后端返回的blob文件读取出url
            }
          });
        } else {
          this.dialogVisible = true;
          this.url = window.webkitURL.createObjectURL(response); //将后端返回的blob文件读取出url
          let url = response.data.url;
          const params = { url };
          this.$tab.openPage(
            "健康证检查表",
            "/report/zongjianjiankangzheng",
            params
          );
        }
      });
    },
@@ -778,114 +794,179 @@
      }, 100);
    },
    // 体检报告
    viewReport() {
      const flag = true;
      this.failList = [];
      this.form.name = "报告打印失败:";
      if (this.report.length == 1) {
        this.report.forEach((item) => {
          this.tjNumber = item;
        });
        getPdf(this.tjNumber, flag).then((response) => {
          if (response.size == 0) {
            // this.$message.error("该用户体检报告暂未完成!");
            this.dialogVisible = false;
            this.DataList1.forEach((item) => {
              if (item.tjNumber === this.tjNumber) {
                this.userId = item.tjCustomerName;
                this.form.name += item.tjCustomerName;
              }
            });
            this.failList.push({
              tjNumber: this.tjNumber,
              printStatus: 0,
              printBy: this.userId,
              createBy: this.userIds,
            });
          } else {
            this.dialogVisible = true;
            this.url = window.webkitURL.createObjectURL(response); //将后端返回的blob文件读取出url
            this.DataList1.forEach((item) => {
              if (item.tjNumber === this.tjNumber) {
                this.userId = item.tjCustomerName;
                // this.form.name += item.tjCustomerName
              }
            });
            this.failList.push({
              tjNumber: this.tjNumber,
              printStatus: 1,
              printBy: this.userId,
              createBy: this.userIds,
            });
    base64ToBlob({ b64data = "", contentType = "", sliceSize = 512 } = {}) {
      return new Promise((resolve, reject) => {
        // 使用 atob() 方法将数据解码
        let byteCharacters = atob(b64data);
        let byteArrays = [];
        for (
          let offset = 0;
          offset < byteCharacters.length;
          offset += sliceSize
        ) {
          let slice = byteCharacters.slice(offset, offset + sliceSize);
          let byteNumbers = [];
          for (let i = 0; i < slice.length; i++) {
            byteNumbers.push(slice.charCodeAt(i));
          }
          this.joggle(this.failList);
          this.getList();
        });
      } else {
        for (let i = 0; i < this.report.length; i++) {
          if (i <= this.report.length) {
            this.tjNumber = this.report[i];
            getPdf(this.tjNumber, flag).then((response) => {
              if (response.size == 0) {
                this.failList = [];
                this.DataList1.forEach((item) => {
                  if (item.tjNumber === this.report[i]) {
                    this.userId = item.tjCustomerName;
                    if (this.form.name) {
                      this.form.name =
                        this.form.name + "," + item.tjCustomerName;
                    }
                  }
                });
                this.failList.push({
                  tjNumber: this.report[i],
                  printStatus: 0,
                  printBy: this.userId,
                  createBy: this.userIds,
                });
                this.joggle(this.failList);
                this.getList();
                // this.$message.error("该用户体检报告暂未完成!");
                this.dialogVisible = false;
              } else {
                this.failList = [];
                this.DataList1.forEach((item) => {
                  if (item.tjNumber === this.report[i]) {
                    this.userId = item.tjCustomerName;
                  }
                });
                this.failList.push({
                  tjNumber: this.report[i],
                  printStatus: 1,
                  printBy: this.userId,
                  createBy: this.userIds,
                });
                this.joggle(this.failList);
                this.getList();
                // this.dialogVisible = true;
                // this.url = window.webkitURL.createObjectURL(response); //将后端返回的blob文件读取出url
                const newBlob = [];
                newBlob.push(response);
                const blob = new Blob(newBlob, { type: "application/pdf" });
                var date = new Date().getTime();
                var ifr = document.createElement("iframe");
                ifr.style.frameborder = "no";
                ifr.style.display = "none";
                ifr.style.pageBreakBefore = "always";
                ifr.setAttribute("id", "printPdf" + date);
                ifr.setAttribute("name", "printPdf" + date);
                ifr.src = window.URL.createObjectURL(blob);
                document.body.appendChild(ifr);
                this.doPrint("printPdf" + date);
                window.URL.revokeObjectURL(ifr.src); // 释放URL 对象
              }
            });
          }
          // 8 位无符号整数值的类型化数组。内容将初始化为 0。
          // 如果无法分配请求数目的字节,则将引发异常。
          byteArrays.push(new Uint8Array(byteNumbers));
        }
      }
        let result = new Blob(byteArrays, {
          type: contentType,
        });
        result = Object.assign(result, {
          // jartto: 这里一定要处理一下 URL.createObjectURL
          preview: URL.createObjectURL(result),
          // name: `图片示例.png`,
        });
        resolve(result);
      });
    },
    /** 点击显示体检报告报表*/
    viewReport() {
      let data = this.report.join(",");
      addbatch(data).then((res) => {
        let base64 = res.file;
        this.base64ToBlob({
          b64data: base64,
          contentType: "application/pdf",
        }).then((res) => {
          this.dialogVisible = true;
          // 转后后的blob对象
          console.log("blob", res.preview);
          // var ifr = document.createElement("iframe");
          // ifr.style.frameborder = "no";
          // ifr.style.display = "none";
          // ifr.style.pageBreakBefore = "always";
          // ifr.setAttribute("id", "printPdf");
          // ifr.setAttribute("name", "printPdf");
          // ifr.src =res.preview
          // document.body.appendChild(ifr);
          // this.doPrint("printPdf");
          // window.URL.revokeObjectURL( ifr.src);
          try {
            this.url = res.preview;
          } catch (error) {
            this.url = window.webkitURL.createObjectURL(res.preview);
          }
        });
      });
    },
    // 体检报告
    // viewReport() {
    //   const flag = true;
    //   this.failList = [];
    //   this.form.name = "报告打印失败:";
    //   if (this.report.length == 1) {
    //     this.report.forEach((item) => {
    //       this.tjNumber = item;
    //     });
    //     getPdf(this.tjNumber, flag).then((response) => {
    //       if (response.size == 0) {
    //         // this.$message.error("该用户体检报告暂未完成!");
    //         this.dialogVisible = false;
    //         this.DataList1.forEach((item) => {
    //           if (item.tjNumber === this.tjNumber) {
    //             this.userId = item.tjCustomerName;
    //             this.form.name += item.tjCustomerName;
    //           }
    //         });
    //         this.failList.push({
    //           tjNumber: this.tjNumber,
    //           printStatus: 0,
    //           printBy: this.userId,
    //           createBy: this.userIds,
    //         });
    //       } else {
    //         this.dialogVisible = true;
    //         this.url = window.webkitURL.createObjectURL(response); //将后端返回的blob文件读取出url
    //         console.log(this.url)
    //         this.DataList1.forEach((item) => {
    //           if (item.tjNumber === this.tjNumber) {
    //             this.userId = item.tjCustomerName;
    //             // this.form.name += item.tjCustomerName
    //           }
    //         });
    //         this.failList.push({
    //           tjNumber: this.tjNumber,
    //           printStatus: 1,
    //           printBy: this.userId,
    //           createBy: this.userIds,
    //         });
    //       }
    //       this.joggle(this.failList);
    //       this.getList();
    //     });
    //   } else {
    //     for (let i = 0; i < this.report.length; i++) {
    //       if (i <= this.report.length) {
    //         this.tjNumber = this.report[i];
    //         getPdf(this.tjNumber, flag).then((response) => {
    //           if (response.size == 0) {
    //             this.failList = [];
    //             this.DataList1.forEach((item) => {
    //               if (item.tjNumber === this.report[i]) {
    //                 this.userId = item.tjCustomerName;
    //                 if (this.form.name) {
    //                   this.form.name =
    //                     this.form.name + "," + item.tjCustomerName;
    //                 }
    //               }
    //             });
    //             this.failList.push({
    //               tjNumber: this.report[i],
    //               printStatus: 0,
    //               printBy: this.userId,
    //               createBy: this.userIds,
    //             });
    //             this.joggle(this.failList);
    //             this.getList();
    //             // this.$message.error("该用户体检报告暂未完成!");
    //             this.dialogVisible = false;
    //           } else {
    //             this.failList = [];
    //             this.DataList1.forEach((item) => {
    //               if (item.tjNumber === this.report[i]) {
    //                 this.userId = item.tjCustomerName;
    //               }
    //             });
    //             this.failList.push({
    //               tjNumber: this.report[i],
    //               printStatus: 1,
    //               printBy: this.userId,
    //               createBy: this.userIds,
    //             });
    //             this.joggle(this.failList);
    //             this.getList();
    //             // this.dialogVisible = true;
    //             // this.url = window.webkitURL.createObjectURL(response); //将后端返回的blob文件读取出url
    //             const newBlob = [];
    //             newBlob.push(response);
    //             const blob = new Blob(newBlob, { type: "application/pdf" });
    //             var date = new Date().getTime();
    //             var ifr = document.createElement("iframe");
    //             ifr.style.frameborder = "no";
    //             ifr.style.display = "none";
    //             ifr.style.pageBreakBefore = "always";
    //             ifr.setAttribute("id", "printPdf" + date);
    //             ifr.setAttribute("name", "printPdf" + date);
    //             ifr.src = window.URL.createObjectURL(blob);
    //             document.body.appendChild(ifr);
    //             this.doPrint("printPdf" + date);
    //             window.URL.revokeObjectURL(ifr.src); // 释放URL 对象
    //           }
    //         });
    //       }
    //     }
    //   }
    // },
    doPrint(val) {
      var ordonnance = document.getElementById(val).contentWindow;
@@ -946,8 +1027,14 @@
    },
    /** 查询体检记录列表 */
    getList() {
      this.queryParams.djbeginTime = this.startTime[0];
      this.queryParams.djendTime = this.startTime[1];
      if (this.createTimeList) {
        this.queryParams.djbeginTime = this.createTimeList[0];
        this.queryParams.djendTime = this.createTimeList[1];
      } else if (this.createTimeList == null) {
        this.queryParams.djbeginTime = null;
        this.queryParams.djendTime = null;
      }
      this.loading = true;
      getInfo().then((response) => {
        this.userIds = response.user.userId;
@@ -1025,6 +1112,7 @@
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.createTimeList = [];
      this.resetForm("queryForm");
      this.handleQuery();
    },