<template>
  <text @click.stop="selectAccountHandler(data, index)">
    <text class="text">{{data.patientName}}</text><text>{{data.hosNum}}</text>
    <!-- 取消发血弹窗 -->
    <selectAccount2 @click.stop.native v-if="hosModels2.disjunctor" :content="hosModels2.content" :disjunctor="hosModels2.disjunctor" @ok="hosOk2"
      @cancel="hosCancel2" :tips="hosModels2.tips" :cancelBloodHandover="cancelBloodHandover">
    </selectAccount2>
  </text>
</template>

<script>
  import {
    post
  } from "@/http/http.js";
  export default {
    data() {
      return {
        // 弹窗model
        hosModels2: {
          disjunctor: false,
        },
        
        coopData: {},
        isShowTips: false,
      };
    },
    props: {
      data: {
        type: Object,
      },
      index: {
        type: Number,
      },
      signType4: {
        type: Boolean,
        default: false,
      },
      cancelBlood: {
        type: Number,
        default: 0,
      },
      cancelBloodHandover: {
        type: Number,
        default: 0,
      },
      dataList: {
        type: Object,
      },
      type: {
        type: String,
      },
    },
    methods: {
      cancelBloodHandler(data){
        console.log(data);
        console.log(this.coopData);
        uni.showLoading({
          title: "加载中",
          mask: true,
        });
        let postData = {
          "type": "bloodTake",
          service: 'cancelBlood',
          bloodIds: this.coopData.children.map(v => v.children).flat().map(v => v.id).toString(),
          closeOrder: this.isShowTips ? 1 : 0,
          handoverUser: data.accountId,
          cancelReason: data.cancelReason.id,
        };
      
        post('/transflow/extra', postData).then(res => {
          uni.hideLoading();
          if(res.state == 200){
             uni.showModal({
               title: "提示",
               content: "操作成功!",
               showCancel: false,
               success: (res) => {
                 if (res.confirm) {
                   console.log("用户点击确定");
                   if(this.type == 'start'){
                     if(this.isShowTips){
                       uni.navigateTo({
                         url: `/pages/receiptpage/receiptpage`,
                       });
                     }else{
                       // 触发自定义事件并传递参数给上一页
                       uni.$emit('refresh', { refresh: true });
                       
                       // 跳转回上一页
                       uni.navigateBack({
                           delta: 1
                       });
                     }
                   }else if(this.type == 'end'){
                     if(this.isShowTips){
                       uni.navigateTo({
                         url: `/pages/receiptpage/receiptpage`,
                       });
                     }else{
                       this.$emit('refresh');
                     }
                   }
                 } else if (res.cancel) {
                   console.log("用户点击取消");
                 }
               },
             });
          }else{
            uni.showToast({
              icon: "none",
              title: res.msg || "接口获取数据失败!",
            });
          }
        })
      },
      // 确认
      hosOk2(data) {
        console.log(data);
        const {
          accountName,
          account,
          accountId,
          cancelReason,
        } = data;
        
        if (!cancelReason) {
          //没有填写交接人
          uni.showModal({
            title: "提示",
            content: "请填写取消原因!",
            showCancel: false,
            success: function(res) {
              if (res.confirm) {
                console.log("用户点击确定");
              } else if (res.cancel) {
                console.log("用户点击取消");
              }
            },
          });
          return;
        }
        
        // 必填交接人
        if(this.cancelBloodHandover == 1){
          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.hosModels2.disjunctor = false;
        this.cancelBloodHandler(data);
      },
      // 取消
      hosCancel2() {
        this.hosModels2.disjunctor = false;
      },
      // 取消发血弹窗
      showSelectAccount2(isShowTips = false) {
        this.isShowTips = isShowTips;
        this.hosModels2 = {
          content: `请填写取消原因和交接人信息`,
          disjunctor: true,
          tips: isShowTips ? '本患者取消发血后,工单将关闭!' : '',
        };
      },
      // 取消发血
      selectAccountHandler(data, index){
        console.log(this.cancelBlood)
        if(this.cancelBlood != 1 || !this.signType4){
          return;
        }
        this.coopData = data;
        let arr = this.dataList.children.filter((v, i) => i !== index);
        if(arr.length){
          let flag = false;
          if(this.type == 'end'){
            // 其他患者的血都是"病房接收"状态
            flag = arr.map(v => v.children).flat().map(v => v.children).flat().every(v => v.state.value == 5);
          }
          this.showSelectAccount2(flag);
        }else{
          // 没有其他患者
          this.showSelectAccount2(true);
        }
      },
    },
  };
</script>

<style lang="less" scoped>
  .text{
    margin-right: 16rpx
  }
</style>