<template>
  <view class="container">
    <VNavigationBar background-color="#fff" :title="title" title-color="#333"></VNavigationBar>
    <view class="body">
      <view class="repairInfo">
        <view class="header">
          配件信息
        </view>
        <view class="repairItem" v-for="(item, index) in repairList" :key="index">
          <view class="repairName">{{ item.waresName }} <text class="repairNum">×{{item.waresCount}}</text></view>
          <view class="grid">
            <view style="grid-area: a" class="girdItem">
              <text class="label">配件分类</text>
              <text class="value">{{ item.typeName }}</text>
            </view>
            <view style="grid-area: b" class="girdItem">
              <text class="label">当前库存</text>
              <text class="value">{{ item.wares.stock }}</text>
            </view>
            <view style="grid-area: c" class="girdItem">
              <text class="label">单位</text>
              <text class="value">{{ item.wares.unit }}</text>
            </view>
            <view style="grid-area: d" class="girdItem">
              <text class="label">编码</text>
              <text class="value">{{ item.wares.code || ""}}</text>
            </view>
          </view>
        </view>
      </view>
    </view>
    <view v-if="canOperate" class="footer">
      <view class="no" @click="confirmOpe('no')">
        {{ backText }}
      </view>
      <view class="yes" @click="confirmOpe('yes')">
        {{ yesText }}
      </view>
    </view>
  </view>
</template>

<script>
import VNavigationBar from "@/components/VNavigationBar.vue";
import request from '@/utils/request';
import {getDictTextByCodeAndValue} from "@/utils/utils";
export default {
  components: {
    VNavigationBar
  },
  data() {
    return {
      viewType:"",
      id:"",
      title:"",
      canOperate:false,
      backText:"",
      yesText:"",
      repairList: [
        // {
        //   name: '7字小钩',
        //   num: 3,
        //   type: '机电',
        //   unit: '桶',
        //   total: 35,
        //   code: 'XCQHCJYS7 SPI SP 5W30 4L'
        // },
        // {
        //   name: '7字小钩',
        //   num: 3,
        //   type: '机电',
        //   unit: '桶',
        //   total: 35,
        //   code: 'XCQHCJYS7 SPI SP 5W30 4L'
        // }
      ]
    };
  },
  onLoad(data){
    this.viewType = data.viewType
    this.canOperate = data.canOperate
    this.id = data.id
    this.getDetail()
  },
  methods:{
    getDetail(){
      let url;
      let params={};
      if("apply"==this.viewType){
        this.title = "配件申请单详情"
        //配件申请单
        url = "/admin-api/repair/twi/list"
        params.twId = this.id
      }else{
        if("receive"==this.viewType){
          //领料
          this.title = "领料单详情"
          this.yesText="我已领料"
          this.backText="未领料（拒绝）"
        }else{
          this.title = "退料单详情"
          this.yesText="我已退料"
          this.backText="未退料（拒绝）"
        }
        //领料单、退料单
        url = "/admin-api/repair/so/get"
        params.id = this.id
      }
      request({
        url: url,
        method: 'get',
        params:params
      }).then((res) => {
        if (res.code == 200) {
          if("apply"==this.viewType){
            //配件申请单
            res.data.map((item)=>{
              getDictTextByCodeAndValue("repair_unit",item.wares.unit).then(value => {
                item.wares.unit = value
              }).catch(error => {
                item.wares.unit = "未知"
                console.error(error);
              });
            })
            this.repairList = res.data
          }else{
            //领料单、退料单
            let goodsList = res.data.goodsList
            let thisRepairList = []
            goodsList.map((item)=>{
              getDictTextByCodeAndValue("repair_unit",item.wares.unit).then(value => {
                item.wares.unit = value
              }).catch(error => {
                item.wares.unit = "未知"
                console.error(error);
              });
              thisRepairList.push({
                waresName:item.wares.name,
                waresCount:item.goodsCount,
                typeName:item.typeName,
                wares:item.wares
              })
            })
            this.repairList = thisRepairList
            console.log(this.repairList,"this.repairList")
          }
        }
      })
    },
    confirmOpe(type){
      if("yes"==type){
        let url;
        let params={id:this.id};
        if("receive"==this.viewType) {
          //领料
          url = "/admin-api/repair/so/confirmGet"
        }else{
          //退料
          url = "/admin-api/repair/so/confirmBack"
        }
        request({
          url: url,
          method: 'get',
          params:params
        }).then((res) => {
          if (res.code == 200) {
            uni.showToast({
              title: '操作成功！',
              icon: 'none'
            })
            setTimeout(() => {
              uni.navigateBack()
            }, 700)
          }
        })
      }else{
        //作废单据
        let url = "/admin-api/repair/so/void"
        let dataObj={
          id:this.id,
          soStatus:'06'
        }
        request({
          url: url,
          method: 'POST',
          data:dataObj
        }).then((res) => {
          if (res.code == 200) {
            uni.showToast({
              title: '操作成功！',
              icon: 'none'
            })
            setTimeout(() => {
              uni.navigateBack()
            }, 700)
          }
        })
      }
    },
  }
}
</script>

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

.body {
  flex: 1;
  height: 0;
  overflow: auto;

  .todoInfo {
    margin: 20rpx 32rpx;
    background-color: #fff;
    border-radius: 8rpx 8rpx 8rpx 8rpx;
    padding: 30rpx;

    .todoName {
      font-weight: bold;
      font-size: 32rpx;
      color: #333333;
      margin-bottom: 16rpx;
    }

    .todoDate {
      font-size: 24rpx;
      color: #858BA0;
      margin-bottom: 30rpx;
    }

    .line {
      height: 1rpx;
      background-color: #DDDDDD;
      margin: 30rpx 0;
    }

    .grid {
      display: grid;
      grid-template-areas:
      'a b'
      'c c';
      gap: 20rpx;

      .gridItem {
        display: flex;
        flex-direction: column;
        row-gap: 10rpx;
        font-size: 28rpx;

        .gridItemLabel {
          color: #858BA0;
        }

        .gridItemValue {
          color: #333333;
        }
      }
    }
  }

  .repairInfo {
    margin: 20rpx 32rpx;
    background-color: #fff;
    border-radius: 8rpx 8rpx 8rpx 8rpx;

    .header {
      padding: 30rpx;
      border-bottom: 1rpx solid #DDDDDD;
    }
    .repairItem {
      padding: 30rpx;
      border-bottom: 1rpx solid #DDDDDD;
      &:last-child {
        border-bottom: none;
      }
    }
    .repairName {
      display: flex;
      align-items: center;
      column-gap: 20rpx;
      font-size: 32rpx;
      color: #333333;
      margin-bottom: 30rpx;
      .repairNum {
        font-size: 28rpx;
        color: #0174F6;
      }
    }
    .grid {
      display: grid;
      grid-template-areas:
        'a b'
        'c d';
      grid-template-columns: 1fr 1fr;
      gap: 30rpx;
      .girdItem {
        display: flex;
        flex-direction: column;
        row-gap: 12rpx;
        font-size: 28rpx;
        .label {
          color: #858BA0;
        }
        .value {
          color: #333333;
        }
      }
    }
  }
}

.footer {
  background-color: #fff;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 30rpx 32rpx;

  .yes, .no {
    width: 310rpx;
    height: 76rpx;
    border-radius: 38rpx 38rpx 38rpx 38rpx;
    display: flex;
    align-items: center;
    justify-content: center;
    column-gap: 10rpx;
  }

  .yes {
    background: #0174F6;
    color: #FFFFFF;
  }

  .no {
    border: 2rpx solid #858BA0;
    color: #858BA0;
  }
}
</style>
