<template>
  <view class="page-product-receipt">
    <view class="header" :style="{ backgroundColor: `rgba(23, 83, 234, ${scrollTop / 100})` }">
      <view class="left">
        <u-icon class="icon" name="arrow-left" @click="uni.navigateBack()" />
      </view>
      <view class="title">{{ $t('message.Relocation') }}</view>
      <view class="right"></view>
    </view>
    <u-form class="form" ref="form" :model="form" label-width="180rpx">
      <!-- 移库码 -->
      <u-form-item :label="$t('message.Transfer')">
        <u-input v-model="userDefined4" placeholder="" class="Transfer" />
        <u-button type="primary" style="height: 60rpx; margin-left: 20rpx" @click="generate">{{ $t('message.generate') }}</u-button>
      </u-form-item>
      <!-- 条码 -->
      <u-form-item :required="true" :label="$t('message.product_barCode')" prop="productCode">
        <u-search :placeholder="$t('message.po_PleaseInput')" v-model="form.productCode" @search="query" :show-action="false"></u-search>
      </u-form-item>
      <!-- 已扫 -->
      <!-- <u-form-item :label="$t('message.product_Swept')">
        <u-input :disabled="true" v-model="model.orderInInfo.actualQty" placeholder="" />
      </u-form-item> -->
      <!-- 成品编码 -->
      <u-form-item :label="$t('message.product_FGCode')">
        <u-input :disabled="true" v-model="model.orderInInfo.productCode" placeholder="" />
      </u-form-item>
      <!-- 成品描述 -->
      <u-form-item :label="$t('message.product_FGDes')">
        <u-input :disabled="true" v-model="model.orderInInfo.productDescZh" placeholder="" style="overflow: hidden" />
      </u-form-item>
      <!-- 数量 -->
      <u-form-item :label="$t('message.product_Number')">
        <u-input :disabled="true" v-model="model.orderInInfo.qty" placeholder="" />
      </u-form-item>
      <!-- 库位 -->
      <u-form-item :label="$t('message.product_Location')">
        <u-input :disabled="true" v-model="model.orderInInfo.locCode" placeholder="" />
      </u-form-item>
      <!-- 目标库位 -->
      <u-form-item :required="true" :label="$t('message.Warehouse_TargetLocation')" prop="aimWl">
        <jPicker sureColor="#ff0000" @bindpicker="bookTypeChange" showKey="value" valKey="value" :val="form.aimWl.value" :options="model.WlList" />
      </u-form-item>
    </u-form>
    <view class="bottom-bar">
      <u-row class="button-bar">
        <!-- 移库明细 -->
        <u-col :span="4">
          <u-button type="primary" @click="bill">{{ $t('message.Warehouse_TransferDetails') }}</u-button>
        </u-col>
        <!-- 确定 -->
        <u-col :span="4">
          <u-button type="primary" @click="onSubmit">{{ $t('message.workArea_Confirm') }}</u-button>
        </u-col>
        <!-- 返回 -->
        <u-col :span="4">
          <u-button type="error" @click="uni.navigateBack()">{{ $t('message.po_Return') }}</u-button>
        </u-col>
      </u-row>
    </view>
  </view>
</template>
<script lang="ts">
import { Component, Ref } from 'vue-property-decorator';
import { BasePage } from '@/components/base/page';
import jPicker from '@/components/J-Picker/jPicker.vue';
import { VForm, VFormRules } from 'vue/types/form';
import model from './model';
import { session } from '@/store/modules/session';
interface OptionType {
  label: string;
  value: string;
}
@Component({
  components: {
    jPicker,
  },
})
export default class productCheckReceipt extends BasePage {
  //表单引用
  @Ref('form') readonly $form!: VForm;
  model = model;
  form = {
    aimWl: {} as OptionType,
    productCode: '',
  };
  userDefined4: any = '';
  aimWlSelect = false;
  cboPlaceSelect = false;
  rules: VFormRules<any> = {
    documentNo: [{ required: true, message: this.$t('message.Warehouse_Tip1') as string }],
    aimWl: [{ required: true, message: this.$t('message.Warehouse_Tip3') as string }],
    cboPlace: [{ required: true, message: this.$t('message.Warehouse_Tip4') as string }],
  };
  value = '';
  show = false;
  //选择目标库位回调函数
  bookTypeChange(e: any) {
    this.form.aimWl = e.pickerName;
  }
  //扫描条码回车
  async query() {
    if (this.form.productCode == ' ' || this.form.productCode.length == 0) {
      uni.showToast({
        icon: 'none',
        title: this.$t('message.product_unit7') as string,
      });
      return;
    }
    await model.getProductCode(this.form.productCode);
    if (model.code == '1') {
      uni.showToast({
        icon: 'none',
        title: this.$t('message.successful') as string,
      });
    }
  }
  //页面初始化
  onReady() {
    this.$form.setRules(this.rules);
    this.model.queryLocation();
    this.model.empty();
    this.userDefined4 = JSON.parse(sessionStorage.getItem('userDefined4'));
    sessionStorage.removeItem('userDefined4');
  }
  //点击生成随机移库码
  async generate() {
    await this.model.getCpMoveBatchNo({
      loginName: session.loginName,
    });
    this.userDefined4 = model.userDefined;
  }
  //移库明细
  async bill() {
    this.model.detailedList = [];
    sessionStorage.setItem('userDefined4', JSON.stringify(this.userDefined4));
    this.redirectTo(this.page.product.warehouse.wholeTransfer.Local);
  }
  //移库确认
  onSubmit() {
    this.$form.validate(async (valid: boolean) => {
      if (!valid) return;
      if (this.userDefined4 == ' ' || this.userDefined4.length == 0) {
        uni.showToast({
          icon: 'none',
          title: this.$t('message.LibraryCode') as string,
        });
        return;
      }
      if (!this.form.productCode) {
        uni.showToast({
          icon: 'none',
          title: this.$t('message.Warehouse_Tip5') as string,
        });
        return;
      }
      if (!this.form.aimWl.value) {
        uni.showToast({
          icon: 'none',
          title: this.$t('message.Warehouse_Tip3') as string,
        });
        return;
      }
      if (this.form.aimWl.value == model.orderInInfo.locCode) {
        uni.showToast({
          icon: 'none',
          title: this.$t('message.TargetLocation') as string,
        });
        return;
      }
      const orderlist = [
        {
          ...this.model.orderInInfo,
          originWl: this.model.orderInInfo.locCode,
          barCode: this.model.orderInInfo.barcode,
          aimWl: this.form.aimWl.value,
          type: '0',
          orderType: '0',
          keepBy: session.loginName as string,
          factoryCode: session.factoryCode as string,
          userDefined4: this.userDefined4,
        },
      ];
      await this.model.onTakeoutConfirm(orderlist);
      if (model.code == '1') {
        uni.showToast({
          icon: 'none',
          title: this.$t('message.Warehouse_Tip9') as string,
        });
        this.form.productCode = '';
        model.empty();
        setTimeout(() => {
          this.$forceUpdate();
        }, 2000);
      }
    });
  }
}
</script>
<style lang="scss" scoped>
.page-product-receipt {
  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;
    z-index: 99;
    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;
    }
  }

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

    .u-form-item {
      padding: 30rpx 0;
      line-height: 35rpx;
      .Transfer {
        width: 180rpx;
        height: 64rpx;
        background: rgb(242, 242, 242);
        border-radius: 110rpx;
      }
    }
  }

  .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 {
  }
}
</style>
