<template>
  <view class="page-picking-order">
    <view class="header">
      <view class="left">
        <u-icon class="icon" name="arrow-left" @click="uni.navigateBack({delta:1})" />
      </view>
      <view class="title">{{ $t('message.rawMenu_ReturnGoods') }}</view>
      <view class="right"></view>
    </view>
    <view class="content">
      <!-- 单号 -->
      <view class="single">
        <view class="single-left">
          <view>{{ $t('message.InventoryOrderNo') }}:</view>
          <u-search :placeholder="$t('message.InventoryPleaseScan')" v-model="form.documentNo" @search="query" :show-action="false"></u-search>
        </view>
        <view class="single-right">
          <u-button type="primary" @click="query">{{ $t('message.Query') }}</u-button>
        </view>
      </view>
      <!-- 物料 -->
      <view class="material">
        <view class="material-left">
          <view>{{ $t('message.CommissionedMaterielNo') }}:</view>
          <jPicker sureColor="#ff0000" style="width: 260rpx" @bindpicker="materialChoice" showKey="value" valKey="value" :val="wl.value" class="search" :options="materialList" />
        </view>
      </view>
      <!-- 物料描述 -->
      <view class="material">
        <view class="material-right">
          <view class="material-right-title">{{ $t('message.CommissionedMaterielDesc') }}:</view>
          <view class="material-right-code" style="overflow: hidden">{{ some.materialDesc }}</view>
        </view>
      </view>
      <!-- 应退数量 -->
      <view class="material">
        <view class="material-right">
          <view class="material-right-title" style="width: 260rpx">{{ $t('message.returneds') }}:</view>
          <view class="material-right-code" style="overflow: hidden">{{ some.poAmount }}</view>
        </view>
      </view>
      <!-- 订单类型 -->
      <view class="material">
        <view class="material-right">
          <view class="material-right-title">{{ $t('message.po_OrderType') }}:</view>
          <view class="material-right-code" style="overflow: hidden">{{ some.poType }}</view>
        </view>
      </view>
      <!-- 供应商 -->
      <view class="material">
        <view class="material-right">
          <view class="material-right-title">{{ $t('message.po_Supplier') }}:</view>
          <view class="material-right-code" style="overflow: hidden">{{ some.supplyCode }}</view>
        </view>
      </view>
      <!-- 列表展示数据 -->
      <view class="number">
        <!-- 库存地点 -->
        <view class="number-left">
          <view class="number-left-title">{{ $t('message.po_Location') }}:</view>
          <u-input v-model="some.wlCode" placeholder=" " :type="type" :border="border" class="input" disabled  style="padding:'0';"/>
        </view>
        <!-- 累计 -->
        <view class="number-right">
          <view class="number-right-title">{{ $t('message.total') }}:</view>
          <u-input placeholder=" " v-model="some.receiptAmount" :type="type" :border="border" class="input" style="padding:'0';" disabled />
        </view>
      </view>
      <!-- 库位 -->
      <view class="library">
        <!-- 库位 -->
        <view class="library-left">
          <view style="text-align:left">{{ $t('message.CommissionedLocation') }}:</view>
          <jPicker sureColor="#ff0000" style="width: 230rpx" @bindpicker="LocationChoice" showKey="value" valKey="value" :val="wlCode.value" class="search" :options="Location" />
        </view>
        <!-- 本次 -->
        <view class="library-right">
          <view class="library-right-title">{{ $t('message.CommissionedThisNumber') }}:</view>
          <u-input :placeholder="$t('message.po_PleaseInput')" v-model="qty" type="number" :border="border" class="input" />
        </view>
      </view>
      <!-- 添加 -->
      <view class="add">
        <u-button type="primary" @click="Add">{{ $t('message.product_add') }}</u-button>
      </view>
      <!-- 表格 -->
      <wyb-table class="table" ref="table" width="100%" show-left-and-right-border :headers="headers" :contents="LocationList" :show-vert-border="false" @onCellClick="deleteItem($event)"></wyb-table>
    </view>
    <view class="bottom-bar">
      <div class="extra">
        <u-form ref="form" :model="form" :error-type="['toast']">
          <u-row class="bottom-info"> </u-row>
        </u-form>
      </div>
      <div class="container">
        <u-row>
          <!-- 明细 -->
          <u-col :span="4">
            <u-button type="primary" class="appoint" @click="appoint">{{ $t('message.detailed') }}</u-button>
          </u-col>
          <!-- 提交 -->
          <u-col :span="4">
            <u-button type="success" @click="onSubmit">
              {{ $t('message.po_Submit') }}
            </u-button>
          </u-col>
          <!-- 返回 -->
          <u-col :span="4">
            <u-button type="error" @click="onUpload">
              {{ $t('message.po_Return') }}
            </u-button>
          </u-col>
        </u-row>
      </div>
    </view>
  </view>
</template>

<script lang="ts">
import { Component, Ref } from 'vue-property-decorator';
import { BasePage } from '@/components/base/page';
import model from './model';
import { session } from '@/store/modules/session';
import { VForm, VFormRules } from 'vue/types/form';
import jPicker from '@/components/J-Picker/jPicker.vue';
import { headers } from './config';
@Component({
  components: {
    jPicker,
  },
})
export default class RawReceiptDetail extends BasePage {
  /**
   * 表单引用
   */
  @Ref('form') readonly $form!: VForm;
  @Ref('submitForm') readonly $submitForm!: VForm;
  submitForm = {
    receiver: '',
    receiverName: '',
    password: '',
  };
  /**
   * 页面Module
   */
  model = model;
  materialList:any = []
  type = 'text';
  wlCode: any = '';
  wl:any = {}
  border = true;
  //添加库位和数量的列表
  LocationList: any = [];
  //库位
  Location: any = [];
  some: any = {};
  someIndex:any = 0
  qty: any = '';
  /**
   * 表单数据
   */
  form: any = {
    // locationCode: null,
    amount: null,
  };
  rules: VFormRules<any> = {
    amount: [
      { required: true, message: this.$t('message.Pi_tip1') as string },
    ],
  };
  locationCodeSelect = false;
  headers = headers;
  //页面初始化
  async onReady() {
  await this.GetLocation()
  }
  async GetLocation(){
    let content = {
      loginName: session.loginName,
      factoryCode: session.factoryCode,
      workArea: session.workareaCode,
    };
    let res: any = await this.model.queryByFactory(content);
    res.forEach((item: any) => {
      let pickerName: any = {};
      pickerName.label = item.locationCode;
      pickerName.value = item.locationCode + '(' + item.sendSpot + ')';
      pickerName.sendSpot = item.sendSpot;
      this.Location.push(pickerName);
    });
  }
  onUpload(){
    uni.navigateBack({delta:1})
  }
  async query(){
    if(!this.form.documentNo){
      this.customToast(this.$t('message.Commission_tips1') as any);
      return
    }
    await this.model.queryOrder(this.form.documentNo).then(() =>{
      if(this.model.code == '1'){
        this.model.dnReturnList.forEach((item:any) =>{
          let arr = {
            label:item.materialCode,
            value:item.materialCode + '(' + item.poLine + ')',
            Line:item.poLine,
            poNo:item.poNo,
          }
          this.materialList.push(arr)
        })
        this.wl = this.materialList[0]
        this.some = this.model.dnReturnList[0]
        console.log('this.some',this.some)
      }
    })
  }
  materialChoice(e:any){
    console.log('e',e)
    this.model.dnReturnList.forEach((item:any,index:any) =>{
      if(item.poLine == e.pickerName.Line && item.materialCode == e.pickerName.label && item.poNo == e.pickerName.poNo){
        this.some = item
        this.someIndex = index
      }
    })
    console.log('this.some',this.some)
    console.log('this.someIndex',this.someIndex)
  }
  //选择库位触发事件
  LocationChoice(e: any) {
    this.wlCode = e.pickerName;
  }
  //添加触发事件
  Add() {
    if (this.qty == '' || this.wlCode == '') {
    this.customToast(this.$t('message.Commission_tips2') as any);
      return;
    }
    if (parseFloat(this.qty) <= 0) {
      this.customToast(this.$t('message.Commission_tips3') as any);
      return;
    }
    if (parseFloat(this.qty) > parseFloat(this.some.poAmount)) {
      this.customToast(this.$t('message.quantitys') as any);
      return;
    }
    if (this.some == {}) {
      this.customToast(this.$t('message.Commission_tips6') as any);
      return;
    }
    let num: number = parseFloat(this.qty) + parseFloat(this.some.receiptAmount)
    if (num > parseFloat(this.some.poAmount)) {
      this.customToast(this.$t('message.dn_Tip2') as any);
      return;
    }
    let arr = {
      poNo:this.some.poNo,
      poLine:this.some.poLine,
      materialCode:this.some.materialCode,
      loginName:this.session.loginName,
      factoryCode:this.session.factoryCode,
      wlCode:this.wlCode.label,
      nowAmount:this.qty,
    };
    this.model.dnReturnList[this.someIndex].receiptAmount += parseFloat(this.qty)
    console.log('this.model.dnReturnList',this.model.dnReturnList)
    this.LocationList.push(arr);
    this.qty = '';
  }
  //删除某一项 触发事件
  deleteItem(e: any) {
    console.log('e',e.contentIndex)
    console.log('eeeee',e)
    uni.showModal({
      content:this.$t('message.product_Delete') as any,
      cancelText:this.$t('message.Cancel') as any,
      confirmText:this.$t('message.workArea_Confirm') as any,
      success:(res) =>{
        if(res.confirm){
          this.LocationList.splice(e.contentIndex,1)
          this.model.dnReturnList.forEach((item:any) =>{
            if(item.materialCode == e.lineData.materialCode && item.poLine == e.lineData.poLine && item.poNo == e.lineData.poNo){
              item.receiptAmount -= parseFloat(e.lineData.nowAmount)
            }
          })
        } else if(res.cancel){
          return
        }
      }
    })
  }
  appoint() {
    this.redirectTo(this.page.raw.ingoods.dnReturnGoods.Local);
  }
  async onSubmit() {
    let isTrue = true
    this.model.dnReturnList.forEach((item:any) =>{
      if(item.receiptAmount != null || item.receiptAmount != 0){
        if(item.receiptAmount != item.poAmount){
          this.customToast(this.$t('message.materials') as any);
          return isTrue = false
        }
      }
    })
    if(isTrue){
      await this.model.submit(this.LocationList).then(() =>{
        if(this.model.code == '1'){
          this.materialList = []
          this.some = {}
          this.someIndex = 0
          this.LocationList = []
          this.qty = ''
          this.Location = []
          this.wl = {}
          this.wlCode = ''
          this.query()
          this.GetLocation()
        }
      })
    }
  }
}
</script>

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

  .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;
    }
  }
  .content {
    width: 100%;
    background: white;
    border-radius: 15rpx;
    padding: 10rpx;
    .single {
      width: 100%;
      height: 100rpx;
      display: flex;
      .single-left {
        width: 80%;
        height: 100%;
        display: flex;
        view {
          width: 110rpx;
          height: 100%;
          line-height: 100rpx;
        }
      }
      .single-right {
        button {
          margin-top: 15rpx;
          width: 150rpx;
          height: 70rpx;
        }
      }
    }
    .material {
      width: 100%;
      height: 100rpx;
      display: flex;
      .material-left {
        width: 100%;
        height: 100%;
        display: flex;
        view {
          width: 145rpx;
          line-height: 100rpx;
        }
        .search{
          padding-left: 19px;
        }
      }
    }
    .material {
      width: 100%;
      height: 100rpx;
      display: flex;
      .material-right {
        width: 100%;
        height: 100%;
        display: flex;
        .material-right-title {
          width: 160rpx;
          height: 100%;
          line-height: 100rpx;
        }
        .material-right-code {
          width: 80%;
          height: 100%;
          line-height: 100rpx;
          text-align: left;
          padding-left: 10px;
          // line-height: 100rpx;
        }
      }
    }
    .number {
      height: 100rpx;
      display: flex;
      .number-left {
        width: 50%;
        height: 100%;
        display: flex;
        .number-left-title {
          width: 120rpx;
          height: 100%;
          line-height: 100rpx;
        }
        .input {
          width: 200rpx;
          height: 70rpx;
          margin-top: 15rpx;
          margin-left: 15rpx;
        }
      }
      .number-right {
        width: 50%;
        height: 100%;
        display: flex;
        .number-right-title {
          width: 120rpx;
          height: 100%;
          line-height: 100rpx;
          text-align: center;
        }
        .input {
          width: 200rpx;
          height: 70rpx;
          margin-top: 15rpx;
          margin-left: 15rpx;
        }
      }
    }
    .library {
      width: 100%;
      height: 100rpx;
      display: flex;
      .library-left {
        width: 50%;
        height: 100%;
        display: flex;
        view {
          width: 70rpx;
          line-height: 100rpx;
          text-align: center;
        }
        .search {
          padding-left: 0px;
          text-align: left;
        }
      }
      .library-right {
        width: 50%;
        height: 100%;
        display: flex;
        .library-right-title {
          width: 120rpx;
          height: 100%;
          line-height: 100rpx;
          text-align: center;
        }
        .input {
          width: 200rpx;
          height: 70rpx;
          margin-top: 15rpx;
          margin-left: 15rpx;
        }
      }
    }
    .add {
      width: 100%;
      height: 100rpx;
      position: relative;
      button {
        position: absolute;
        top: 10rpx;
        right: 20rpx;
      }
    }
  }
  .table-wrapper {
    background-color: #fff;
    height: 500rpx;
    overflow-x: auto;
  }

  .form {
    background-color: #fff;
    padding: 40rpx;
    border-radius: 10rpx;
  }
  .Exhibition {
    width: 100%;
    height: 100rpx;
    margin-top: 20rpx;
    display: flex;
    .Exhibition-left {
      width: 50%;
      height: 100%;
      display: flex;
      .Exhibition-left-title {
        width: 50%;
        height: 100%;
        text-align: center;
        line-height: 100rpx;
      }
      .Exhibition-left-data {
        width: 50%;
        height: 100%;
        text-align: center;
        line-height: 100rpx;
      }
    }
    .Exhibition-right {
      width: 50%;
      height: 100%;
      display: flex;
      .Exhibition-right-title {
        width: 50%;
        height: 100%;
        text-align: center;
        line-height: 100rpx;
      }
      .Exhibition-right-data {
        width: 50%;
        height: 100%;
        text-align: center;
        line-height: 100rpx;
      }
    }
  }
  .library {
    width: 100%;
    height: 100rpx;
    display: flex;
    .library-left {
      width: 50%;
      height: 100%;
      display: flex;
      view {
        width: 230rpx;
        line-height: 100rpx;
        text-align: center;
      }
    }
    .library-right {
      width: 50%;
      height: 100%;
      display: flex;
      .library-right-title {
        width: 120rpx;
        height: 100%;
        line-height: 100rpx;
      }
      .input {
        width: 200rpx;
        height: 70rpx;
        margin-top: 15rpx;
        margin-left: 15rpx;
      }
    }
  }
  .add {
    width: 100%;
    height: 100rpx;
    position: relative;
    button {
      position: absolute;
      top: 10rpx;
      right: 20rpx;
    }
  }
  .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;
    }

    .bottom-info {
      .u-form-item {
        padding: 0;
      }
    }
  }
}
</style>
