<template>
  <view class="page-product-receipt">
    <view class="header" :style="{ backgroundColor: `rgba(250, 53, 52, ${scrollTop / 100})` }">
      <view class="left">
        <u-icon class="icon" name="arrow-left" @click="uni.navigateBack({})" />
      </view>
      <view class="title">采购收货(SRM)</view>
      <view class="right"></view>
    </view>
    <view>
      <u-form class="form" ref="form" label-width="180rpx">
        <!-- 送货单 -->
        <view class="single">
          <view class="single-left">
            <view>送货单号:</view>
            <u-search placeholder="请扫描" :focus="oncefouces" v-model="userDefined5" @search="query" :show-action="false"></u-search>
          </view>
          <!-- <view class="single-right">
            <u-button type="primary" @click="tidandelivery">提单</u-button>
          </view> -->
        </view>
        <u-form-item label="物料编码">
          <jPicker sureColor="#ff0000" @bindpicker="selectProductCodeType" showKey="value" valKey="value" :val="bimWl.value" :options="reducelist" />
        </u-form-item>
        <u-form-item label="物料描述">
          <u-input border height="50" placeholder="" disabled v-model="bimWl.label" />
        </u-form-item>
      </u-form>
      <view class="matshow">
        <view v-for="item in list" :key="item.id" @dblclick="onFormDoubleClick(item)">
          <u-form :style="{ marginTop: '10rpx', backgroundColor: item.planNumber <= item.realityNumber ? '#4eea9b59' : '#ffffff' }" class="form2">
            <view class="list">
              <view class="righttitle">
                <!-- ０是未收货，１是正在收货，２是收货完成 -->
                <view class="boder-icon-top zhuangtai" data-state="0">{{ item.orderStatus == 0 ? '未收货' : item.orderStatus == 1 ? '正在收货' : '收货完成' }}</view>
              </view>
              <!-- <view v-if="item.userDefined5" class="row-list">
                <view class="list-item"> 送货单号: </view>
                <view> {{ item.userDefined5 }} </view>
              </view> -->
              <view v-if="item.procureCode" class="row-list">
                <view class="list-item"> 采购单号: </view>
                <view> {{ item.procureCode }} </view>
              </view>
              <!-- <view class="row-list">
                <view class="list-item"> 行项目: </view>
                <view> {{ item.userDefined3 }} </view>
              </view> -->
              <view class="row-list">
                <view class="list-item"> 物料编码: </view>
                <view> {{ item.handlematerialCode }}</view>
              </view>
              <!-- <view class="row-list">
                <view class="list-item"> 物料描述: </view>
                <view>{{ item.materialDesc }}</view>
              </view> -->
              <!-- <view class="row-list">
                <view class="list-item"> 工厂号: </view>
                <view>{{ item.siteCode }}</view>
              </view> -->
              <view class="row-list">
                <view class="list-item"> 应收/实收: </view>
                <view>{{ item.planNumber }}/{{ item.realityNumber }}</view>
              </view>
              <!-- <view a:if="true" class="righttitle">
              <view @click.stop="onPass(item)" class="boder-icon-rigth"> 收货 </view>
            </view> -->
            </view>
          </u-form>
        </view>
      </view>
    </view>

    <view class="scroll">
      <view @click="editornumber(item)" v-for="item in filterReceivedList" :key="item.id">
        <u-form style="margin-top: 10rpx" class="form2">
          <view class="list">
            <view class="righttitle">
              <!-- ０是未收货，１是正在收货，２是收货完成 -->
              <view class="boder-icon-top zhuangtai" data-state="0">{{ item.userDefined10 == '0' ? '未收货' : item.userDefined10 == '1' ? '完全收货' : '部分收货' }}</view>
            </view>
            <view v-if="item.userDefined5" class="row-list">
              <view class="list-item"> 送货单号: </view>
              <view> {{ item.userDefined5 }} </view>
            </view>
            <view v-if="item.procureCode" class="row-list">
              <view class="list-item"> 采购单号: </view>
              <view> {{ item.procureCode }} </view>
            </view>
            <view class="row-list">
              <view class="list-item"> 物料编码: </view>
              <view> {{ item.materialCode }}</view>
            </view>
            <view class="row-list">
              <view class="list-item"> 物料描述: </view>
              <view>{{ item.materialDesc }}</view>
            </view>
            <view class="row-list">
              <view class="list-item"> 标志卡: </view>
              <view>{{ item.userDefined1 }}</view>
            </view>
            <view class="row-list">
              <view class="list-item"> 供应商: </view>
              <view> {{ item.supplierName }} </view>
            </view>
            <view class="row-list">
              <view class="list-item"> 打印顺序: </view>
              <view>{{ item.userDefined9 }}</view>
            </view>
            <view class="row-list">
              <view style="display: flex; flex-direction: row">
                <view class="list-item">应收数量: </view>
                <view>{{ item.planNumber }}</view>
              </view>
              <view style="display: flex; flex-direction: row">
                <view class="list-item">已收数量: </view>
                <view>{{ item.realityNumber }}</view>
              </view>
            </view>
            <view class="row-list">
              <view class="list-item">操作数量: </view>
              <view>{{ item.temNumber ? item.temNumber : 0 }}</view>
            </view>
            <view class="row-list">
              <view class="list-item">仓库: </view>
              <view>{{ item.whCode }}</view>
            </view>
            <view class="row-list">
              <view class="list-item">库区: </view>
              <view>{{ item.waCode }}</view>
            </view>
          </view>
        </u-form>
      </view>
    </view>
    <view class="bottom-bar">
      <u-row class="button-bar">
        <!-- 确定 -->
        <u-col :span="4">
          <u-button :disabled="isdisabled" @click="onSubmit" type="primary">103暂收</u-button>
        </u-col>
        <u-col :span="4">
          <u-button :disabled="isDisabled105" @click="handelSubmit105" type="success">105过账</u-button>
        </u-col>
        <!-- 返回 -->
        <u-col :span="4">
          <u-button type="error" @click="uni.navigateBack()">返回</u-button>
        </u-col>
      </u-row>
    </view>
    <u-popup height="350" width="600" v-model="openeditornumber" mode="center" :closeable="true" @close="!openeditornumber">
      <u-form style="padding: 40rpx">
        <u-form-item label-width="150" label="操作数量"><u-input :border="true" v-model="temNumber" /></u-form-item>
      </u-form>
      <u-button @click="submiteditor">操作</u-button>
    </u-popup>
    <u-toast ref="uToast" />

    <u-modal v-model="showStatus105" :content="contentStatus150" title="105过账失败"></u-modal>
  </view>
</template>
<script lang="ts">
import { Component } from 'vue-property-decorator';
import { BasePage } from '@/components/base/page';
import jPicker from '@/components/J-Picker/jPicker.vue';
import model from './model';
import { session } from '@/store/modules/session';
import { removeLeadingZeros } from '@/utils/tool';
import LjListRow from '@/components/lanju/lj-list-row/index.vue';
import ljPagination from '@/components/lanju/lj-pagination/index.vue';

interface OptionType {
  label: string;
  value: string;
}
@Component({
  components: {
    ljPagination,
    LjListRow,
    jPicker,
  },
})
export default class receiveSRM extends BasePage {
  model = model;
  list: any = [];
  realityaddNumber = 0;
  receivedlist: any = [];
  filterReceivedList: any = [];
  operationNumber = 0;
  nooperationNumber = 0;
  czNumber = '';
  Idcard = '';
  areaCode = '';
  whList: any = [];
  waCodeList: any = {};
  show = false;
  singshow = false;
  form3: any = {};
  aimWl = {} as OptionType;
  prodobj: any = {} as OptionType;
  materilist = [];
  prodlist: any = [];
  productCodeTypeList: any = {};
  waCodeTypeList: any = {};
  moren = '选择仓库';
  moren1 = '选择库区';
  reducelist: any = [];
  oldprodlist: any = [];
  zancunmatcode: any = {};
  waylist = [
    // {
    //   value: '0',
    //   lable: '根据物料',
    // },
    {
      value: '1',
      lable: '根据托盘',
    },
  ];
  bimWl: any = {};
  selectway = true;
  showshow = true;
  procureCode: any = '';
  userDefined5: any = '';
  materialCode: any = '';
  border = true;
  height = 100;
  autoHeight = true;
  imgList: any = [];
  imgUrlList: any = [];
  isqualified = [
    {
      label: '合格',
      value: '1',
    },
    {
      label: '不合格',
      value: '0',
    },
  ];
  clickitem: any = '';
  productCodeList: any = {};
  receiptNoCode = '';
  oncefouces = true;
  twofouces = false;
  locfouces = false;
  openeditornumber = false;
  temNumber = '';
  editoritem: any = {};
  isdisabled = false;
  isDisabled105 = false;
  showStatus105 = false;
  contentStatus150 = '';
  qualityStatusCo = {
    Y: '检验合格',
    N: '检验不合格',
  };
  //点击收货按钮，录入批次（或系统自动生成）、数量、托盘码进行收货。
  async onFormDoubleClick(item) {
    console.log('双击', item);
    //await this.model.OnSubmit(item.id);
    // uni.navigateTo({
    //     url: `/pages/equipment/Upkeep/repairing?listitem=` + encodeURIComponent(JSON.stringify(item)),
    //   });
    this.uni.navigateTo({
      url: this.page.wms.ReceivePODetail + '?listitem=' + encodeURIComponent(JSON.stringify(item)),
    });
  }
  uniqueArray(arr) {
    return arr.reduce((accumulator, current) => {
      if (!accumulator.some((item) => item.materialCode === current.materialCode)) {
        accumulator.push(current);
      }
      return accumulator;
    }, []);
  }
  //查询货单关联采购单信息
  async query() {
    if (this.userDefined5 == '' || this.userDefined5.length == 0) {
      (this.$refs.uToast as any).show({
        title: '请输入送货单',
        type: 'default',
      });
      return;
    }
    this.prodobj = {} as OptionType;
    this.aimWl = {} as OptionType;
    let query = {
      materialCode: this.aimWl.value ? this.aimWl.value : '',
      userDefined5: this.userDefined5,
      //this.materialCode,
      factoryCode: session.FactoryCode,
    };
    await this.model.PurchaseOrderPda(query);
    let prodlist = model.orderNoItemList;
    if (prodlist.length > 0) {
      this.isdisabled = false;
      this.reducelist = this.uniqueArray(prodlist);
      this.reducelist.forEach((item) => {
        item.value = item.materialCode.slice(item.materialCode.search(/[1-9]/));
        item.label = item.materialDesc;
      });
      console.log('this.reducelist', this.reducelist);
      this.bimWl = Object.keys(this.zancunmatcode).length ? this.zancunmatcode : this.reducelist[0];
      this.oldprodlist = prodlist.map((item) => {
        let newmaterialCode = item.materialCode.slice(item.materialCode.search(/[1-9]/));
        return {
          ...item,
          handlematerialCode: newmaterialCode,
          realityaddNumber: item.realityNumber,
        };
      });
      this.list = this.oldprodlist.filter((item) => {
        return item.handlematerialCode == this.bimWl.value;
      });

      //查询标志卡
      this.querycard();
    } else {
      (this.$refs.uToast as any).show({
        title: '请去到货登记!',
        type: 'default',
        duration: 3000,
      });
      this.isdisabled = true;
    }
  }
  //查询标志卡
  async querycard() {
    let params = {
      userDefined5: this.userDefined5,
      factoryCode: session.FactoryCode,
    };
    await this.model.selectCardList(params);
    if (this.model.rfidreturncode == '200') {
      this.receivedlist = this.model.rfiddata;
      this.filterReceivedList = this.handelFilterReceivedList(this.model.rfiddata);
    }
  }
  editornumber(item) {
    this.openeditornumber = true;
    this.editoritem = item;
  }
  async submiteditor() {
    if (parseFloat(this.editoritem.realityNumber) + parseFloat(this.temNumber) > parseFloat(this.editoritem.planNumber)) {
      (this.$refs.uToast as any).show({
        title: '操作数量有误',
        type: 'default',
      });
      return;
    } else {
      let params = {
        userDefined1: this.editoritem.userDefined1,
        temNumber: this.temNumber,
        factoryCode: session.FactoryCode,
      };
      await this.model.upbatCardXNew(params);
      if (this.model.editorcode == 200) {
        (this.$refs.uToast as any).show({
          title: '操作成功',
          type: 'default',
        });
        this.openeditornumber = false;
        this.temNumber = '';
        this.querycard();
      }
    }
  }

  selectProductCodeType(e) {
    console.log(e);
    this.bimWl = e.pickerName;
    this.filterReceivedList = this.handelFilterReceivedList(this.receivedlist);
    this.list = this.oldprodlist.filter((item) => {
      return item.handlematerialCode == this.bimWl.value;
    });
  }
  //送货单提单
  async tidandelivery() {
    if (this.userDefined5 == '' || this.userDefined5.length == 0) {
      (this.$refs.uToast as any).show({
        title: '请输入送货单',
        type: 'default',
      });
      return;
    }
    let item = {
      userDefined5: this.userDefined5,
      factoryCode: session.FactoryCode,
      createBy: session.loginName,
    };
    await this.model.getDeliveryNoteDetail(item);
    if (model.deliverycode == '200') {
      (this.$refs.uToast as any).show({
        title: '提单成功',
        type: 'success',
      });
      this.query();
    }
  }

  //完成送货单
  async onSubmit() {
    let paramsList = {
      userDefined5: this.userDefined5,
      factoryCode: session.FactoryCode,
    };
    this.isdisabled = true;
    //console.log('提交数据----',paramsList);
    await this.model.OnSubmit(paramsList);
    this.isdisabled = false;
    if (this.model.submitcode == '200') {
      (this.$refs.uToast as any).show({
        title: model.submitmsg,
        type: 'primary',
        duration: 6000,
      });
      this.zancunmatcode = this.bimWl;
      //this.receivedlist = [];
      this.list = [];

      this.query();
    }
  }
  handelFilterReceivedList(list: any) {
    return list.filter((item) => {
      return removeLeadingZeros(item.materialCode) == this.bimWl.value;
    });
  }
  /**
   * 105过账按钮
   * **/
  async handelSubmit105() {
    this.isDisabled105 = true;
    const list = this.list;
    let params: any = [];
    if (list.length > 0) {
      for (const item of list) {
        if (!item.orderStatus || item.orderStatus === '0') {
          (this.$refs.uToast as any).show({
            title: '请先完成收货！',
            type: 'default',
            duration: 3000,
          });
          this.isDisabled105 = false;
          return;
        }

        //待检、不合格不在手持机上过账
        if (!item.qualityStatus || item.qualityStatus === 'N') {
          this.contentStatus150 = '采购单号：' + item.procureCode + '，物料编码：' + removeLeadingZeros(item.materialCode) + '，' + (this.qualityStatusCo[item.qualityStatus] || '未检验');
          this.showStatus105 = true;
          this.isDisabled105 = false;
          return;
        }

        //rawOrderInId不为空
        if (item.rawOrderInId) {
          params.push({ id: item.rawOrderInId });
        }
      }

      if (params.length > 0) {
        //去重
        params = params.filter((item: any, index: any, self: any) => self.findIndex((t: { [x: string]: any }) => t['id'] === item['id']) === index);

        await this.model.sap105temporarilyCollected(params);
        this.isDisabled105 = false;
        if (this.model.sap105code + '' === '200') {
          (this.$refs.uToast as any).show({
            title: this.model.sap105msg,
            type: 'primary',
            duration: 6000,
          });
        }
        await this.query();
      } else {
        this.isDisabled105 = false;
        (this.$refs.uToast as any).show({
          title: '无可过账数据',
          type: 'default',
          duration: 3000,
        });
      }
    } else {
      this.isDisabled105 = false;
      (this.$refs.uToast as any).show({
        title: '未选择数据',
        type: 'default',
        duration: 3000,
      });
    }
  }
}
</script>
<style lang="scss" scoped>
.page-product-receipt {
  background: #f2f2f2 linear-gradient(0deg, #f2f2f2 0%, #f8262c 51%, #d9001b 100%) no-repeat;
  background-size: 100% 600rpx;
  padding: 118rpx 30rpx 162rpx;
  min-height: 100%;

  .header {
    position: fixed;
    top: 0rpx;
    left: 0;
    right: 0;
    z-index: 99;
    display: flex;
    height: 120rpx;
    line-height: 88rpx;
    color: #fff;
    font-size: 34rpx;
    font-weight: 500;
    text-align: center;
    padding: 45rpx 0rpx 0rpx;

    .title {
      flex: 3;
    }

    .left,
    .right {
      flex: 1;
    }

    .icon {
      display: flex;
      justify-content: center;
      align-items: center;
      width: 88rpx;
      height: 88rpx;
    }
  }

  .form {
    background-color: #fff;
    padding: 20rpx;
    border-radius: 10rpx;
    box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);

    .u-form-item {
      padding: 10rpx 0;
      line-height: 35rpx;

      .Transfer {
        width: 280rpx;
        height: 64rpx;
        background: rgb(242, 242, 242);
        border-radius: 110rpx;
      }
    }

    .single {
      width: 100%;
      height: 100rpx;
      display: flex;

      .single-left {
        width: 90%;
        height: 100%;
        display: flex;

        view {
          width: 142rpx;
          height: 100%;
          line-height: 100rpx;
        }
      }

      .single-right {
        button {
          margin-top: 15rpx;
          width: 140rpx;
          height: 70rpx;
          background-color: #fa3534;
        }
      }
    }

    .row {
      display: flex;
      flex-direction: row;
      justify-content: space-around;
      flex: 1;
    }
    .creatshow {
      display: flex;
      margin-top: 5px;
      .buttonshow {
        flex: 1;
        height: 60rpx;
      }
      .inputshow {
        flex: 4;
        //border: 1px solid #9f9a9a8f;
        border-radius: 5px;
        margin-left: 4px;
      }
    }
  }

  .matshow {
    // margin-top: 120rpx;
    // padding-left: 30rpx;
    // padding-right: 16rpx;
    // margin-bottom: 20rpx;
    // overflow: scroll;
    // padding-top: 20rpx;
    .form2 {
      background-color: #fff;
      padding: 0rpx 25rpx 25rpx;
      border-radius: 10rpx;
      box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);
      color: #292c32;

      .row-list {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
      }

      .righttitle {
        display: flex;
        justify-content: flex-end;

        .boder-icon-rigth {
          border: 1rpx solid #fa3534;
          width: 130rpx;
          text-align: center;
          background: #fa3534;
          color: #ffffff;
          margin-top: 10px;
        }

        .zhuangtai {
          background: #a7a0a04a;
          width: 224rpx;
          margin-right: -25rpx;
          border: 2rpx solid #a7a0a04a;
          border-radius: 12rpx;
          text-align: center;
          margin-bottom: 10rpx;
        }

        .zhuangtai[data-state='1'] {
          color: green;
        }

        .zhuangtai[data-state='0'] {
          color: blue;
        }
      }
    }
  }
  .scroll {
    height: 590rpx;
    overflow: scroll;
    // padding-top: 20rpx;
    .form2 {
      background-color: #fff;
      padding: 0rpx 25rpx 25rpx;
      border-radius: 10rpx;
      box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);
      color: #8d8989;

      .row-list {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
      }

      .righttitle {
        display: flex;
        justify-content: flex-end;

        .boder-icon-rigth {
          border: 1rpx solid #fa3534;
          width: 130rpx;
          text-align: center;
          background: #fa3534;
          color: #ffffff;
          margin-top: 10px;
        }

        .zhuangtai {
          background: #a7a0a04a;
          width: 224rpx;
          margin-right: -25rpx;
          border: 2rpx solid #a7a0a04a;
          border-radius: 12rpx;
          text-align: center;
          margin-bottom: 10rpx;
        }

        .zhuangtai[data-state='1'] {
          color: green;
        }

        .zhuangtai[data-state='0'] {
          color: blue;
        }
      }
    }
  }

  .bottom-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 99;
    background: #ffffff;
    box-shadow: 0 1rpx 20rpx 0 rgba(128, 128, 128, 0.2);
    padding: 20rpx;
  }

  .button-bar {
  }

  .photoList {
    display: flex;
    padding-top: 12rpx;

    .chooseBtn {
      width: 202rpx;
      height: 202rpx;
      background: #fafafa;
      border-radius: 12rpx;
      border: 2rpx dashed #e2e2e2;
      display: flex;
      justify-content: center;
      align-items: center;

      .inner {
        text-align: center;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
      }

      .desc {
        font-size: 28rpx;
        font-weight: 400;
        color: #24252a;
        line-height: 40rpx;
      }

      .img {
        width: 50rpx;
        height: 50rpx;
        margin-bottom: 6rpx;
      }
    }

    .photoBox {
      width: 202rpx;
      height: 202rpx;
      background: #fafafa;
      border-radius: 12rpx;
      position: relative;

      .closeBtn {
        position: absolute;
        top: -12rpx;
        right: -12rpx;
        z-index: 2;
        width: 36rpx;
        height: 36rpx;

        .img {
          width: 36rpx;
          height: 36rpx;
        }
      }

      .img {
        width: 202rpx;
        height: 202rpx;
        border-radius: 12rpx;
      }
    }

    .itemBox {
      flex: 0 0 202rpx;
      margin-right: 20rpx;

      &:last-child {
        margin-right: 0;
      }
    }

    // /deep/ .remarksBox textarea {
    //   font-size: 24rpx;
    // }
  }
  .form3 {
    padding: 20rpx;
    //border-radius: 10rpx;
    //box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);
    .poupitem {
      display: flex;
      flex-direction: row;
      justify-content: space-around;
      margin: 20rpx;
      .pouptitle {
        min-width: 30%;
        white-space: nowrap;
      }
      .poupcontent {
        border: 1px solid rgba(128, 128, 128, 0.2);
      }
    }
  }
  .form4 {
    padding: 20rpx;
    //border-radius: 10rpx;
    //box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);
    .poupitem {
      display: flex;
      flex-direction: row;
      justify-content: space-around;
      margin: 20rpx;
      .pouptitle {
        width: 40%;
        white-space: nowrap;
      }
      .poupcontent {
        border: 1px solid rgba(128, 128, 128, 0.2);
      }
    }
  }

  .poupbutton {
    display: flex;
    justify-content: space-around;
  }
  .mask {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5); /* 半透明的黑色背景 */
    z-index: 9999; /* 确保遮罩层在最上层 */
  }
}
</style>
