<template>
  <view class="toolbar" @click="Scanning()" hover-class="seimin-btn-hover">
    <text class="toolbar-icon icon_transport transport-saoma"></text>
    <text class="toolbar-sao">扫一扫</text>
    <!-- 填写交接人账号弹窗 -->
    <selectAccount @click.stop.native v-if="hosModels.disjunctor" :title="hosModels.title" :disjunctor="hosModels.disjunctor" @ok="hosOk"
      @cancel="hosCancel">
    </selectAccount>
  </view>
</template>

<script>
  import {
    post,
    SM
  } from "../../http/http.js";
  export default {
    data() {
      return {
        // 填写交接人账号弹窗model
        hosModels: {
          disjunctor: false,
        },
        userId: {
          ids: [],
        },
        workData: [],
        infoDATA: {},
        tabType: "", //当前选中项
        selectArr: [], //选中项
        code: "",
        currentCode: '', //当前小扫描的科室二维码
        SMFlag: true,
      }
    },
    methods: {
      // 填写交接人账号-确认
      hosOk(data) {
        console.log(data);
        const {
          accountName,
          account,
          accountId
        } = data;
        if (!accountName && !account) {
          //没有填写交接人
          uni.showModal({
            title: "提示",
            content: "请填写交接人账号!",
            showCancel: false,
            success: function(res) {
              if (res.confirm) {
                console.log("用户点击确定");
              } else if (res.cancel) {
                console.log("用户点击取消");
              }
            },
          });
          return;
        } else if ((!accountName && account) || (accountName && !account)) {
          //没有填写交接人
          uni.showModal({
            title: "提示",
            content: "请填写正确的交接人账号!",
            showCancel: false,
            success: function(res) {
              if (res.confirm) {
                console.log("用户点击确定");
              } else if (res.cancel) {
                console.log("用户点击取消");
              }
            },
          });
          return;
        }
        this.hosModels.disjunctor = false;
        this.orderDeptHandler(false, data);
      },
      // 填写交接人账号-取消
      hosCancel() {
        this.hosModels.disjunctor = false;
        this.flag = true;
      },
      // 填写交接人账号弹窗
      showSelectAccount() {
        this.hosModels = {
          title: "填写交接人账号",
          disjunctor: true,
        };
      },
      //科室签到
      //trueBigScanner----判断是否大扫描
      //bigScanner----判断是否需要交接人
      //accountObj----弹窗填写的交接人信息
      orderDeptHandler(bigScanner, accountObj) {
        let type = "orderSign/" + this.code;
        let list = {
          ids: this.userId.ids,
          trueBigScanner: ['666']
        };
        bigScanner && (list.bigScanner = ['666']);
        if (accountObj) {
          list.handover = [accountObj.accountId];
        }
        uni.showLoading({
          title: "加载中",
          mask: true,
        });
        post("/workerOrder/" + type, list).then((res) => {
          console.log(this.tabType)
          uni.hideLoading();
          if (res.status == 200) {
            if (this.tabType == 'specimenPlan') {
              // -----------------------------
              console.log(this.selectArr, '选中工单')
              let gd = this.infoDATA.specimenPlan.find(v => v.id == this.selectArr[0]);
              let startDeptId = gd.startDept.id; //起点科室id
              let isDigitalHandover = gd.taskType.isDigitalHandover; //是否数字交接开关
              let signDeptId = res.deptId; //签到的科室id
              let gdId = gd.id;
              let gdState = gd.gdState.value;
              let endDepts = gd.endDepts.map(v => v.id).toString();
              uni.navigateTo({
                url: `../scanning_djEnd/scanning_djEnd?type=${
                  this.tabType
                }&type1=${res.type}&code=${this.code}&dept=${
                  res.dept
                }&ids=${encodeURIComponent(
                  JSON.stringify(this.userId.ids)
                )}&model=${encodeURIComponent(JSON.stringify(res))}&accountObj=${encodeURIComponent(JSON.stringify(accountObj))}&deptId=${res.deptId}&startDeptId=${startDeptId}&isDigitalHandover=${isDigitalHandover}&signDeptId=${signDeptId}&gdId=${gdId}&gdState=${gdState}&endDepts=${endDepts}`,
              });
            } else if (this.tabType == 'specimen') {
              // 同济是false
              if (res.deptType && res.deptType.value === 'middleRoom') {
              // if (false) {
                // 如果是中转科室
                uni.navigateTo({
                  url: `../checkAfterBigScreen/checkAfterBigScreen?type=${
                  this.tabType
                }&type1=${res.type}&code=${this.code}&dept=${
                  res.dept
                }&ids=${encodeURIComponent(
                  JSON.stringify(this.userId.ids)
                )}&model=${encodeURIComponent(JSON.stringify(res))}&accountObj=${encodeURIComponent(JSON.stringify(accountObj))}&deptId=${res.deptId}`,
                });
              } else {
                uni.navigateTo({
                  url: `../scanning_djEnd/scanning_djEnd?type=${
                  this.tabType
                }&type1=${res.type}&code=${this.code}&dept=${
                  res.dept
                }&ids=${encodeURIComponent(
                  JSON.stringify(this.userId.ids)
                )}&model=${encodeURIComponent(JSON.stringify(res))}&accountObj=${encodeURIComponent(JSON.stringify(accountObj))}&deptId=${res.deptId}`,
                });
              }
            }
          } else if (res.status == "0000") {
            this.showSelectAccount();
          } else {
            this.flag = true;
            uni.navigateTo({
              url: `../scanning_djEnd/scanning_djEnd?type=${this.tabType}&type1=${
              res.type
            }&code=${this.code}&dept=${res.dept}&ids=${encodeURIComponent(
              JSON.stringify(this.userId.ids)
            )}&model=${encodeURIComponent(JSON.stringify(res))}&deptId=${res.deptId}`,
            });
          }
        });
      },
      // 底部扫描
      Scanning(qrcodePrefix = '') {
        if (!this.SMFlag) {
          return;
        }
        this.SMFlag = false;
        SM().then((content) => {
          uni.showLoading({
            title: "加载中",
            mask: true,
          });
          //检验二维码的有效性(扫码前必须验证)
          post("/dept/scanning", {
              content,
            })
            .then((result) => {
              this.currentCode = result.code;
              this.SMFlag = true;
              // 200检测通过,201没有有效期也通过。
              if (result.state == 200 || result.state == 201) {
                let data = {
                  code: result.code, //二维码
                };
                //微信—大扫描(科室码,患者码,标本码,快捷建单码,药包码)
                let code = result.code.includes(qrcodePrefix) ? result.code : qrcodePrefix + result.code;
                post("/workerOrder/scanCode", { code })
                  .then((res) => {
                    uni.hideLoading();
                    if (res.status == 200) {
                      // 扫描标本码
                      if (res.type == "specimen") {
                        let infoDATA = {
                          stype: res.data.stype,
                          scode: res.data.scode,
                          patientName: res.data.patientName,
                          sickRoom: res.data.sickRoom ?
                            res.data.sickRoom.dept : "-",
                          checkDept: res.data.checkDept ?
                            res.data.checkDept.dept : "-",
                          bedNum: res.data.bedNum,
                        };
                        uni.navigateTo({
                          url: `../scanning_B/scanning_B?res=${encodeURIComponent(
                          JSON.stringify(res)
                        )}&infoDATA=${encodeURIComponent(
                          JSON.stringify(infoDATA)
                        )}`,
                        });
                      } else if (res.type == "patient") {
                        //如果是患者腕带码
                        // code: data.code //二维码
                        res.workOrder = res.workOrder ? res.workOrder : []; //liao
                        uni.navigateTo({
                          url: `../scanning_ins/scanning_ins?code=${
                          data.code
                        }&infoDATA=${encodeURIComponent(
                          JSON.stringify(res.data)
                        )}&workData=${encodeURIComponent(
                          JSON.stringify(res.workOrder)
                        )}&patientOrders=${encodeURIComponent(
                          JSON.stringify(res.patientOrders)
                        )}`,
                        });
                      } else if (res.type == "quickOrder") {
                        //快捷建单
                        if(res.data.isDigitalHandover == 1){
                          uni.navigateTo({
                            url: `../specimenChecking/specimenChecking?infoDATA=${encodeURIComponent(
                            JSON.stringify(res.data)
                          )}`,
                          });
                        }else{
                          uni.navigateTo({
                            url: `../shortcutbuildOrders/shortcutbuildOrders?infoDATA=${encodeURIComponent(
                            JSON.stringify(res.data)
                          )}`,
                          });
                        }
                      } else if (res.type == "dept") {
                        // 扫描科室码
                        // code: data.code //二维码
                        let infoDATA = res.data;
                        console.log(infoDATA)
                        // 判断是否是标本配送,并且仅仅只有这一种业务类型,默认全选,并跳转到下一步;
                        // 判断是否是标本轮巡 ,并且仅仅只有这一种业务类型,并且只有一个工单,默认选中,并跳转到下一步;
                        if(Object.keys(infoDATA).length === 1 && (infoDATA.specimen || (infoDATA.specimenPlan && infoDATA.specimenPlan.length === 1))){
                          this.infoDATA = infoDATA;
                          this.workData = infoDATA.specimen || infoDATA.specimenPlan;
                          this.tabType = infoDATA.specimen ? 'specimen' : 'specimenPlan';
                          this.code = data.code;
                          this.selectArr = [];
                          for (var i = 0; i < this.workData.length; i++) {
                            this.selectArr.push(this.workData[i].id);
                          }
                          this.userId.ids = this.selectArr;
                          this.orderDeptHandler(true);
                        }else{
                          uni.navigateTo({
                            url: `../scanning_all/scanning_all?infoDATA=${encodeURIComponent(
                            JSON.stringify(infoDATA)
                          )}&code=${data.code}&deptName=${res.deptName}`,
                          });
                        }
                      } else if (res.type == 'drugsBag') {
                        //扫药包码
                        uni.navigateTo({
                          url: `/pages/scanning_drug/scanning_drug?drugsBagId=${res.drugsBagId}&drugsBagBatchNo=${res.drugsBagBatchNo}`,
                        });
                      } else if (res.type == 'nucleicAcid') {
                        //扫核酸码
                        uni.navigateTo({
                          url: `/pages/scanning_nucleicAcid/scanning_nucleicAcid?qrcode=${data.code}`,
                        });
                      } else if (res.type == 'blood') {
                        //扫血制品
                        // 判断size,多个则进入新页面选择
                        if(res.size > 1){
                          uni.navigateTo({
                            url: `/pages/bloodSelect/bloodSelect?qrcode=${data.code}&navigateTo=scanning_blood`,
                          });
                        } else {
                          uni.navigateTo({
                            url: `/pages/scanning_blood/scanning_blood?qrcode=${data.code}`,
                          });
                        }
                      } else if (res.type == 'receiveOrder') {
                        //扫快捷接单
                        uni.showModal({
                          title: "提示",
                          content: `您本次接单包括${res.names.join('、')},一共含有${res.data.length}个工单,是否确认接单?`,
                          success: function(result) {
                            if (result.confirm) {
                              uni.showLoading({
                                title: "加载中",
                                mask: true,
                              });
                              post("/workerOrder/receiveOrders", {ids: res.data.toString()}).then((res) => {
                                uni.hideLoading();
                                if (res.status == 200) {
                                  uni.showModal({
                                    title: "提示",
                                    content: `本次接单包括${res.names.join('、')},${res.data.length}个工单已接单完成`,
                                    showCancel: false,
                                    success: function(res) {
                                      if (res.confirm) {
                                        console.log("用户点击确定");
                                        uni.redirectTo({
                                          url: "../receiptpage/receiptpage",
                                        });
                                      } else if (res.cancel) {
                                        console.log("用户点击取消");
                                      }
                                    },
                                  });
                                } else {
                                  uni.showToast({
                                    icon: "none",
                                    title: "请求失败!",
                                  });
                                }
                              });
                            } else if (result.cancel) {
                              console.log("用户点击取消");
                            }
                          },
                        });
                      }
                    } else {
                      uni.navigateTo({
                        url: `../scanning_Result/scanning_Result?status=${res.status}&msg=${res.msg}&qrcode=${this.currentCode}`,
                      });
                    }
                  });
              } else {
                uni.hideLoading();
                uni.showToast({
                  icon: "none",
                  title: '请求失败',
                });
              }
            })
        }).catch(err => {
          this.SMFlag = true;
        });
      },
    },
    onShow() {
      this.SMFlag = true;
    }
  };
</script>

<style lang="less">
  // 底部扫一扫
  .toolbar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 30rpx;
    z-index: 999;
    height: 88rpx;
    display: flex;
    justify-content: center;
    align-items: center;
    box-sizing: border-box;
    border-radius: 4rpx;
    box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.24);
    background-color: #e5e9ed;

    .toolbar-icon {
      font-size: 52rpx;
      margin-right: 16rpx;
      color: #07863c;
    }

    .toolbar-sao {
      font-size: 36rpx;
      color: #333;
    }
  }
</style>