qx
qx
2025-02-17 9b1de9e9cd55bdd63df49762bce2c747db8343ff
qx
3个文件已修改
259 ■■■■■ 已修改文件
src/api/hosp/order.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/order/index.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/reservation/reservations/index.vue 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/hosp/order.js
@@ -224,6 +224,16 @@
  })
}
// 体检记录页面恢复预约记录接口
export function huifuyuyuejilu(data) {
  return request({
    url: '/hosp/order/huifuyuyuejilu',
    method: 'post',
    data: data
  })
}
export function getTjrWnJuanMoBan(tjCategory) {
  return request({
    url: '/hosp/surveyTemplate/getTjrWnJuanMoBan',
src/views/hosp/order/index.vue
@@ -243,6 +243,15 @@
          >强制撤销</el-button
        >
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="primary"
          size="mini"
          @click="ResumeAppointment"
          :disabled="multiple"
          >恢复预约</el-button
        >
      </el-col>
      <right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getList"
@@ -1662,6 +1671,7 @@
  getOrderList,
  getNewDateList,
  revokeTjOrderByTjNum,
  huifuyuyuejilu,
  getTransitionInfo,
  getBlproByTjh,
  revokeBlProByBldhAndTjh,
@@ -1782,6 +1792,7 @@
      activeNames: "first",
      // 非多个禁用
      multiple: true,
      tjNUms:[],
      // 显示搜索条件
      showSearch: true,
      userId: "",
@@ -2132,6 +2143,34 @@
      });
    },
    ResumeAppointment(){
      this.isLoading = true;
      this.$confirm("您确认要恢复预约?", "确认信息", {
        distinguishCancelAndClose: true,
        confirmButtonText: "确认",
        cancelButtonText: "取消",
      })
        .then(() => {
          huifuyuyuejilu(this.tjNUms).then((res) => {
            this.$modal.msgSuccess("恢复成功");
            // this.isLoading = false;
            this.getList();
          });
        })
        .catch((action) => {
          if (action === "cancel") {
            this.$message({
              type: "warning",
              message: "已取消",
            });
          }
        })
        .finally(() => {
          // 不论操作成功还是失败,都会执行
          this.isLoading = false;
        });
    },
    handleRevoke() {
      this.isLoading = true;
      this.$confirm("您确认要撤销?", "确认信息", {
@@ -2325,6 +2364,7 @@
    // 多选框选中数据
    handleSelectionChange(selection) {
      let tjNUms = selection.map((item) => item.tjNumber);
      this.tjNUms = selection.map((item) => item.tjNumber);
      selection.forEach((item) => {
        this.orderIds = item.orderId;
        this.tjnumbers = item.tjNumber;
src/views/reservation/reservations/index.vue
@@ -197,6 +197,16 @@
        >
        <!-- v-hasPermi="['reservation:reservation:remove']" -->
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="primary"
          size="mini"
          :disabled="multiple"
          @click="Groupsignin"
          >团体签到</el-button
        >
        <!-- v-hasPermi="['reservation:reservation:remove']" -->
      </el-col>
      <right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getList"
@@ -1069,7 +1079,7 @@
              </div>
            </el-col>
          </el-row>
          <el-dialog
            title="导检单预览"
            :visible.sync="dialogVisibles"
@@ -1087,6 +1097,50 @@
        </div>
      </template>
    </el-drawer>
    <el-dialog
      title="PDF 预览"
      :visible.sync="dialogVisible"
      :close-on-click-modal="false"
    >
      <div class="main">
        <iframe
          id="printIframe"
          :src="url"
          frameborder="0"
          style="width: 100%; height: 100%"
        ></iframe>
      </div>
    </el-dialog>
    <el-dialog
      :title="title"
      :visible.sync="open2"
      width="800px"
      append-to-body
    >
      <el-form ref="form" :model="forms" label-width="100px" :inline="true">
        <el-form-item label="体检类别">
          <el-select
            style="width: 150px"
            v-model="forms.tjCategory"
            placeholder="请选择体检类别"
          >
            <el-option
              v-for="dict in dict.type.dict_tjtype"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
            ></el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer2">
        <el-button type="primary" @click="submitType"  >确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
    <div
      style="
@@ -1799,8 +1853,10 @@
</template>
<script>
import { addComp } from "@/api/system/comp";
import { addComp,
  addPlOrderAndDetail } from "@/api/system/comp";
import Big from "big.js";
import { Loading } from 'element-ui';
import {
  listReservation,
  gettjCancel,
@@ -1842,7 +1898,6 @@
  ],
  data() {
    let checkPhoneNum = (rule, value, callback) => {
      console.log(value);
      let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/);
      if (value == "" && value == undefined && !value) {
        return callback("");
@@ -1866,6 +1921,7 @@
      },
      discount: 10,
      taocan: false,
      webSocket: null,
      defaultKeys: [],
      value1: "",
      pacName: "",
@@ -1876,6 +1932,10 @@
      dialogVisibles: false,
      src: "",
      url: "",
      open2: false,
      forms: {
        tjCategory:"12"
      },
      dialogVisible: false,
      /** 照相机弹窗模块-start */
      videoWidth: 200,
@@ -1933,6 +1993,7 @@
      // 是否显示弹出层
      pacId: "",
      cusIds:[],
      // 结果
      result: "",
      proIds: [],
@@ -2067,6 +2128,7 @@
      reservationList: [],
      // 弹出层标题
      title: "",
      valueUrls: "ws://127.0.0.1:6789/websocket",
      drawer: false,
      drawer1: false,
      // 查询参数
@@ -2253,6 +2315,7 @@
    // 取消按钮
    cancel() {
      this.open = false;
      this.open2 = false;
      this.reset();
    },
@@ -2316,10 +2379,10 @@
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      this.cusIds = selection.map((item) => item.idCard);
      selection.forEach((item) => {
        this.fmobj = item;
      });
      console.log(this.fmobj);
      this.ids = selection.map((item) => item.id);
      this.single = selection.length !== 1;
      this.multiple = !selection.length;
@@ -2334,7 +2397,6 @@
    /** 修改按钮操作 */
    handleUpdate(row) {
      console.log(row);
      this.title = "修改体检预约";
      this.formIn = row;
      this.form.tjType = this.formIn.tjType;
@@ -2405,7 +2467,6 @@
                    this.TotalPrice1 = 0;
                    this.tableData1.forEach((item) => {
                      this.TotalPrice1 += item.nowPrice;
                      console.log(this.discount);
                      this.TotalPrice = (
                        this.TotalPrice1 *
                        (this.discount / 10)
@@ -2615,6 +2676,140 @@
        this.treedataList = JSON.parse(JSON.stringify(this.dXData));
        return;
      }
    },
    Groupsignin() {
      this.open2 = true;
    },
    submitType() {
      // let cusIds = [];
      // this.selectList.forEach((item) => {
      //   cusIds.push(item.idCard);
      // });
      let loadingInstance1 = Loading.service({ fullscreen: true,text:"签到中" });
      let data = {
        cusIds: this.cusIds,
        tjCategory: this.forms.tjCategory,
      };
      this.open2 = false;
      addPlOrderAndDetail(data).then((res) => {
        if(res.code == 200){
          this.open2 = false;
        this.$modal.msgSuccess("签到成功");
        if (res.file) {
          let base64 = res.file;
          this.base64ToBlob({
            b64data: base64,
            contentType: "application/pdf",
          }).then((res) => {
            this.dialogVisible = true;
            // 转后后的blob对象
            try {
              this.url = res.preview;
            } catch (error) {
              this.url = window.webkitURL.createObjectURL(res.preview);
            }
          });
        }else{
          let _this = this;
          this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
            loadingInstance1.close();
});
        var websocket = null;
        var url = _this.valueUrls;
        if ("WebSocket" in window) {
          websocket = new WebSocket(url);
        } else if ("MozWebSocket" in window) {
          websocket = new MozWebSocket(url);
        } else {
        }
        if (websocket == null) {
          alert("11111");
        }
        websocket.onopen = function () {
          try {
            // 连接设备
            var jsonObjs = {
              type: 4,
              data: res,
            };
            var jStrs = JSON.stringify(jsonObjs);
            websocket.send(jStrs);
          } catch (err) {
            var tryTime = 0;
            // 重试10次,每次之间间隔3秒
            if (tryTime < 1) {
              var t1 = setTimeout(function () {
                tryTime++;
                var jsonObjs = {
                  type: 4,
                  data: res,
                };
                var jStrs = JSON.stringify(jsonObjs);
                websocket.send(jStrs);
              }, 1 * 1000);
            } else {
              console.error("重连失败.");
            }
          }
        };
        websocket.onclose = function () {
          alert("连接关闭");
        };
        websocket.onmessage = function (event) {
          var resultObj = JSON.parse(event.data);
          _this.cardreader = false;
        };
        //连接发生错误的回调方法
        websocket.onerror = function () {
          alert("请检查连接是否正常");
        };
          this.getList()
        }
        }else{
          this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
            loadingInstance1.close();
});
        }
      });
    },
    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));
          }
          // 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);
      });
    },
    // 点击获取每个树节点
@@ -3012,6 +3207,8 @@
  overflow: hidden;
}
#printIframe::-webkit-scrollbar {
  width: 6px;
}