<template>
  <view class="page-receipt-detail">
    <view class="header">
      <view class="left">
        <u-icon class="icon" name="arrow-left" @click="gohome" />
      </view>
      <view class="title">{{ $t('message.po_Detailed') }}</view>
      <view class="right"></view>
    </view>
    <view class="table-wrapper">
      <wyb-table class="table" ref="table" width="100%" enable-check="single" show-left-and-right-border :headers="headers" :contents="model.orderInInfoList" :show-vert-border="false"></wyb-table>
    </view>
    <view class="bottom-bar">
      <!-- <div class="extra">
        <u-row class="bottom-info">
          <u-col :span="2">{{ $t("message.dn_Number") }}</u-col>
          <u-col :span="4"
            ><u-input
              v-model="number"
              :placeholder="this.$t('message.po_PleaseInput')"
            ></u-input
          ></u-col>
          <u-col :span="4"
            ><u-input v-model="number" :placeholder="this.$t('message.po_PleaseInput')"></u-input
          ></u-col>
          <u-col :span="2" v-if="factoryCode == '6662'">{{
            $t("message.product_Location")
          }}</u-col>
          <u-col :span="4" v-if="factoryCode == '6662'">
            <jPicker
              sureColor="#ff0000"
              @bindpicker="bookTypeChange"
              showKey="value"
              valKey="value"
              :val="locationCode"
              :options="model.cboPlaceList"
            />
          </u-col>
          <u-col :span="8"
            >{{ $t("message.po_Total") }} {{ model.orderInInfoList.length }}
            {{ $t("message.po_Records") }}</u-col
          >
          <u-col :span="3">
            <u-button size="mini" type="primary" @click="changeNumber">
              {{ $t("message.dn_Confirm") }}</u-button
            >
          </u-col>
        </u-row>
      </div> -->
      <div class="container">
        <u-row>
          <u-col :span="3">
            <u-button type="primary" @click="model.checkAllOrderInInfoList(!model.isCheckedAll)">
              {{ model.isCheckedAll ? this.$t('message.po_noSelectAll') : this.$t('message.po_SelectAll') }}
            </u-button>
          </u-col>
          <u-col :span="3">
            <u-button type="primary" class="appoint" @click="appoint">{{ $t('message.Pi_distribution') }}</u-button>
          </u-col>
          <u-col :span="3">
            <u-button type="success" :loading="$wait.is('*submitOrderInEnter')" @click="onSubmit">
              {{ $t('message.po_Submit') }}
            </u-button>
          </u-col>
          <!--          <u-col :span="3">-->
          <!--            <u-button type="error" @click="toPage(page.raw.ingoods.receipt.detailEx)">-->
          <!--              异常-->
          <!--            </u-button>-->
          <!--          </u-col>-->
          <u-col :span="3">
            <u-button type="error" @click="uni.navigateBack()">{{ $t('message.po_Return') }}</u-button>
          </u-col>
        </u-row>
      </div>
    </view>
  </view>
</template>

<script lang="ts">
import { Component } from 'vue-property-decorator';
import { BasePage } from '@/components/base/page';
import model from './model';
import { headers } from './config';
import jPicker from '@/components/J-Picker/jPicker.vue';
import { session } from '@/store/modules/session';
// import { page } from '@/utils/page';
// @Component
@Component({
  components: {
    jPicker,
  },
})
export default class RawReceiptDetail extends BasePage {
  /**
   * 页面Module
   */
  model = model;
  //获取工厂code
  factoryCode = session.factoryCode;
  /**
   * 库位
   */
  locationCode = '';

  /**
   * 表头
   */
  headers = headers;
  /**
   * 实际数量
   */
  number = '';
  //上个页面获取PO单号
  poNo = '';
  /**
   * 逐条修改
   */
  // 必须要在onReady生命周期，因为onLoad生命周期组件可能尚未创建完毕
  //页面初始化
  onShow() {
    this.model.queryLocation();
    let ant: any = JSON.parse(sessionStorage.getItem('material') as string);
    let index: any = JSON.parse(sessionStorage.getItem('index') as string);
    this.model.orderInInfoList[index] = ant;
    console.log(this.model.orderInInfoList);
    this.poNo = JSON.parse(sessionStorage.getItem('poNo') as string);
    sessionStorage.removeItem('material');
    sessionStorage.removeItem('index');
  }
  //返回单号查询页面
  gohome() {
    this.toPage(this.page.raw.ingoods.poReceipt.index);
    sessionStorage.removeItem('material');
    sessionStorage.removeItem('index');
    sessionStorage.removeItem('poNo');
  }
  bookTypeChange(e: any) {
    this.locationCode = e.pickerName.value;
  }
  changeNumber() {
    if (!this.model.hasChecked) {
      this.customToast(this.$t('message.dn_Select') as string);
      return;
    }
    //改变列表的值
    this.model.orderInInfoList.forEach((item: any) => {
      console.log('item.checked', item.checked);
      if (item.checked) {
        if (this.locationCode) {
          item.location = this.locationCode;
        }
        if (this.number > item.requestAmount) {
          this.customToast(this.$t('message.dn_Tip') as string);
          return;
        } else if (this.number == '') {
          item.receiptAmount = item.requestAmount;
        } else {
          item.receiptAmount = this.number;
        }
      }
    });
  }
  //选择单号 修改库位和数量
  appoint() {
    let selectStatus = model.orderInInfoList.map((item) => {
      if (item.checked == true) {
        return true;
      } else {
        return false;
      }
    });
    let i: number = 0;
    selectStatus.forEach((item) => {
      if (item == true) {
        i++;
      }
    });
    if (i > 1) {
      uni.showToast({
        icon: 'none',
        title: '只能选择一个PO单' as string,
      });
    } else if (i == 0) {
      uni.showToast({
        icon: 'none',
        title: '请选择一个PO单' as string,
      });
    } else {
      let mater: number = selectStatus.indexOf(true);
      sessionStorage.setItem('mater', JSON.stringify(model.orderInInfoList[mater]) as string);
      sessionStorage.setItem('index', JSON.stringify(mater) as string);
      this.toPage(this.page.raw.ingoods.poReceipt.idetailed);
    }
  }
  /**
   * 提交
   */
  async onSubmit() {
    //判断是否有数据
    if (this.model.orderInInfoList.length === 0) {
      uni.showToast({
        icon: 'none',
        title: this.$t('message.Pi_tip4') as string,
      });
      return;
    }
    //获取选中的列表
    let checkData: any = [];
    this.model.orderInInfoList.forEach((item: any) => {
      if (item.checked === true) {
        checkData.push(item);
      }
    });
    //判断选中的列表是否为空
    if (checkData.length == 0) {
      uni.showToast({
        icon: 'none',
        title: '请先选中要提交的数据' as string,
      });
      return;
    }
    //判断选中的数据中 是否存在没分配库位的数据
    let isTrue: boolean = true;
    checkData.forEach((item: any) => {
      if (item.wllist == null || item.wllist.length == 0) {
        uni.showToast({
          icon: 'none',
          title: '请确保所选数据都已分配库位' as string,
        });
        isTrue = false;
        return;
      }
    });
    if (isTrue == true) {
      await this.model.submitOrderInEnter(checkData);
      this.locationCode = '';
      this.model.orderInInfo.supplyCode = '';
      this.model.orderInInfo.poType = '';
      this.model.orderInInfo.location = '';
      this.model.queryOrderInInfo(this.poNo);
      await this.redirectTo(this.page.raw.ingoods.poReceipt.detail);
    }
    // setTimeout(() => {
    //   uni.navigateBack({ delta: 1 });
    // }, 2000);
  }
}
</script>

<style lang="scss" scoped>
.page-receipt-detail {
  background: #f2f2f2 linear-gradient(0deg, #f2f2f2 0%, #4a78ea 51%, #1753ea 100%) no-repeat;
  background-size: 100% 600rpx;
  padding: 30rpx;
  min-height: 100%;
  padding-top: 118rpx;

  .header {
    position: fixed;
    top: 36rpx;
    left: 0;
    right: 0;
    display: flex;
    height: 88rpx;
    line-height: 88rpx;
    color: #fff;
    font-size: 34rpx;
    font-weight: 500;
    text-align: center;
    .title {
      flex: 3;
    }
    .left,
    .right {
      flex: 1;
    }
    .icon {
      display: flex;
      justify-content: center;
      align-items: center;
      width: 88rpx;
      height: 88rpx;
    }
  }

  .table-wrapper {
    background-color: #fff;
  }

  .form {
    background-color: #fff;
    padding: 40rpx;
    border-radius: 10rpx;
  }

  .bottom-bar {
    z-index: 21;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;

    .container {
      background: #ffffff;
      box-shadow: 0 1rpx 20rpx 0 rgba(128, 128, 128, 0.2);
      padding: 20rpx;
    }

    .extra {
      background-color: #fff;
      margin: 5px;
      border-radius: 5px;
      padding: 0 10px;
    }
  }
}
</style>
