<template>
  <view class="container">
    <VNavigationBar background-color="#fff" title="单据处理" title-color="#333"></VNavigationBar>
<!--    <view class="tabs">-->
<!--      <view v-for="(item, index) in tabs" :key="index" :class="{'active': item.value === active}" class="tab-item">-->
<!--        {{ item.name }}-->
<!--      </view>-->
<!--    </view>-->
    <view class="listBox">
      <view class="list">
        <view v-for="(item, index) in wares" :key="index" class="listItem">
          <view class="repairName">{{ item.waresName }}</view>
          <view class="repairBottom">
            <text class="repairDesc">单位：
              <text class="repairUnit">{{ item.unitStr }}</text>
            </text>
            <text class="repairDesc">库存：
              <text class="repairUnit">{{ item.wares.stock }}</text>
            </text>
            <view class="repairBtns">
              <u-icon name="minus-circle-fill" size="24" @click="delNum(item)"></u-icon>
              <text class="repairNum">{{ item.waresCount }}</text>
              <u-icon color="#0174F6" name="plus-circle-fill" size="24" @click="addNum(item)"></u-icon>
            </view>
          </view>
        </view>
      </view>
    </view>
    <view class="footer">
      <text class="label"></text>
      <text class="repairNum"></text>
      <view class="submit" v-if="type" @click="toPart">采购</view>
      <view class="submit" @click="submit">{{type?'通知领料':'通知退料'}}</view>
    </view>
  </view>
</template>

<script>
import VNavigationBar from "@/components/VNavigationBar.vue";
import request from '@/utils/request';
import {getDictTextByCodeAndValue,createUniqueCodeByHead} from "@/utils/utils";

export default {
  components: {VNavigationBar},
  data() {
    return {
      //配件申请单id
      twId:'',
      //配件列表
      wares:[],
      //01零配件、02退配件
      type:true,
      //父组件传入的数据
      formData:{},
      repairList: [],
      selectedRepairList: [
        {name: '炫驰全合成机油S7 4L/ALL', num: 3, unit: '桶', id: 3}
      ],
      active: ''
    };
  },
  onLoad(data) {
    if (data.formData){
      this.formData = JSON.parse(decodeURIComponent(data.formData))
      this.type = this.formData.isBack
      this.twId = this.formData.id
    }
    this.init()
  },

  computed: {},
  methods: {
    /**
     * 初始化配件数据
     */
    init() {
      const params = {
        twId:this.formData.id
      }
      request({
        url: '/admin-api/repair/twi/list',
        method: 'get',
        params: params
      }).then((res)=>{
        const items = res.data;
        items.map((item)=>{
          const count = item.waresAlreadyCount ? parseInt(item.waresCount) - parseInt(item.waresAlreadyCount) : item.waresCount
          item.waresCount = this.type ? count : item.waresAlreadyCount
          item.isStock = this.type ? count <= item.wares.stock : true
          getDictTextByCodeAndValue("repair_unit",item.wares.unit).then(value => {
            item.unitStr = value
          }).catch(error => {
            item.unitStr = "未知"
          });
        })
        this.wares = items;
      })
    },
    /**
     *
     */
    addNum(repair) {
      this.$set(repair, 'waresCount', repair.waresCount + 1)
      const find = this.wares.find(f => f.id === repair.id)
      if (find) {
        find.waresCount = repair.waresCount
      } else {
        this.wares.push(JSON.parse(JSON.stringify(repair)))
      }
      console.log('repair', repair)
    },
    /**
     * 减
     */
    delNum(repair) {
      if (repair.waresCount <= 0) {
        return
      }
      this.$set(repair, 'waresCount', repair.waresCount - 1)
      const findIndex = this.wares.findIndex(f => f.id === repair.id)
      if (findIndex > -1 && repair.num <= 0) {
        this.wares.splice(findIndex, 1)
      } else if (repair.num > 0) {
        this.$set(this.wares[findIndex], 'waresCount', repair.waresCount)
      }
    },
    /**
     * 出库
     */
    submit() {
      this.formData.repairSo = {
        soType:this.type?'02':'04',
        soNo:createUniqueCodeByHead(this.type?'LL':'TL'),
        userId:this.formData.repairId,
        userName:this.formData.repairName,
        soStatus:this.type?'04':'07'
      }
      this.formData.repairSois = [...this.wares.map(item =>{
        return {
          soiType: this.type ? '02' : "04",
          goodsId: item.waresId,
          goodsCount: item.waresCount,
        }
      })]
      if (this.type){
        this.formData.items = [...this.wares.map(item => {
          return {
            id: item.id,
          }
        })]
      }
      request({
        url: '/admin-api/repair/tw/pass',
        method: 'post',
        data:this.formData
      }).then((res)=>{
        if (res.code === 200){
          uni.showToast({
            title: '通知成功！',
            icon: 'none'
          })
          setTimeout(()=>{
            uni.navigateBack()
          },700)
        }
      })
    },

    /**
     * 跳转采购页面
     */
    toPart(){
      const formData = this.formData;
      formData.items = this.wares;
      uni.navigateTo({
        url: '/pages-warehouse/inOutWarehouse/part?formData='+encodeURIComponent(JSON.stringify(formData))
      })
    }

  }
}
</script>

<style lang="scss">
.container {
  height: 100%;
  background-color: #F3F5F7;
  display: flex;
  flex-direction: column;
}

.search {
  padding: 0 40rpx;
  background-color: #fff;

  & > .searchBox {
    height: 84rpx;
    background: #F3F5F7;
    border-radius: 12rpx 12rpx 12rpx 12rpx;
    margin: 0 auto;
    padding: 0 30rpx;
    font-size: 28rpx;
    color: #0174F6;

    display: flex;
    align-items: center;
  }

  .searchInput {
    flex: 1;
    width: 0;
    color: #333;
  }
}

.tabs {
  background-color: #fff;
  padding: 30rpx 40rpx;
  margin: 0 auto;
  display: flex;
  align-items: center;
  column-gap: 30rpx;
  overflow: auto;

  .tab-item {
    flex-shrink: 0;
    padding: 16rpx 30rpx;
    font-size: 28rpx;
    color: #113A68;
    background: #F2F2F7;
    border-radius: 30rpx 30rpx 30rpx 30rpx;

    &.active {
      background: #0174F6;
      color: #fff;
    }

  }
}

.listBox {
  padding: 30rpx 32rpx;
  flex: 1;
  height: 0;

  .list {
    background-color: #fff;
    padding: 0 30rpx;
    height: 100%;
    overflow: auto;
  }

  .listItem {
    padding: 30rpx 0;
    border-bottom: 2rpx solid #DDDDDD;
    &:last-child {
      border-bottom: none;
    }
    .repairName {
      font-size: 32rpx;
      color: #333333;
      margin-bottom: 20rpx;
    }

    .repairBottom {
      display: flex;
      align-items: center;
      justify-content: space-between;
    }

    .repairDesc {
      font-size: 28rpx;
      color: #858BA0;
    }

    .repairUnit {
      color: #333333;
    }

    .repairBtns {
      display: flex;
      align-items: center;
      column-gap: 10rpx;
    }
  }
}

.footer {
  padding: 14rpx 32rpx;
  background-color: #fff;
  display: flex;
  align-items: center;

  .repairNum {
    flex: 1;
    width: 0;
    margin-right: 10rpx;
  }

  .submit {
    width: 208rpx;
    height: 72rpx;
    background: #0174F6;
    border-radius: 38rpx 38rpx 38rpx 38rpx;
    text-align: center;
    line-height: 72rpx;
    font-size: 32rpx;
    color: #FFFFFF;
  }
}
</style>
