<!-- 申请售后 -->
<template>
  <view>
    <global-loading />

    <view class="content">
      <view class="order-list-box">
        <view class="item">
          <view class="order-info-box">
            <view class="order-info">
              <u-checkbox-group @change="checkboxGroupChange">
                <u-checkbox
                    active-color="#C5AA7B"
                    shape="circle"
                    size="40"
                    v-for="(item, index) in item.skus"
                    :key="index"
                    v-model="item.checked"
                    :name='item.skuId'
                    @change="checkboxChange(item)">
                  <view class="order-info-item">
                    <image :src="$baseURL+item.image"
                           class="product-img"></image>
                    <view class="info-box">
                      <text class="product-name">{{ item.productName }}</text>
                      <view class="product-sku">{{ item.value }}</view>
                      <view class="price-sku-box">
                        <text class="product-price">
                          <text class="fuhao">￥</text>
                          {{ item.price }}
                        </text>
                        <text class="product-num">x {{ item.number }}</text>
                      </view>
                    </view>
                  </view>
                </u-checkbox>
              </u-checkbox-group>
            </view>
          </view>
        </view>
      </view>
      <view class="afterSale-select-box">
        <view class="selectBtn flex-items flex-sp-between">
          <view class="selectBox">
            <checkbox-group name="allCheck"
                            @change="changeAll">
              <label>
                <checkbox color="#C5AA7B"
                          :value="allCheck.value"
                          :checked="allCheck.checked"/>
                <text>{{ allCheck.name }}</text>
              </label>
            </checkbox-group>
          </view>
          <view class="selectRight flex-items">
            <view class="selectNum">{{ number || 0 }}件商品</view>
            <view class="totalPrice">合计：
              <text>￥{{ total.toFixed(2) }}</text>
            </view>
          </view>
        </view>
        <view class="afterBtnBox flex-items flex-sp-between">
          <view class="afterBtn1"
                @click="ReturnMoney(item)">仅退款
          </view>
          <view v-if="distribution !== 1"
                class="afterBtn2"
                @click="ReturnGoods(item)">退款退货
          </view>
        </view>
      </view>
    </view>
  </view>
</template>

<script>
const NET = require('../../utils/request')
const API = require('../../config/api')
export default {
  data() {
    return {
      item: {},
      checkboxChangelist: [],
      xuanzlist: [],
      allCheck: {
        name: '全选',
        value: 'all',
        checked: false
      },
      number: null,
      total: 0,
      distribution: null,
      isAllSelect: 0,
      evaluated: 0,//待评价订单申请
    }
  },
  onLoad(options) {
    this.item = JSON.parse(options.item)
    this.distribution = this.item.skus[0].distribution
    if([2].includes(this.item.state)){
      this.distribution = 1
    }
    this.evaluated = options.isAllSelect
    // this.item.skus.forEach((item) => {
    //   this.number = this.number + item.number
    //   this.total = this.total + item.total
    // })
  },
  methods: {
    // 算钱
    HandleGetRefundMoney() {
      return new Promise((resolve, reject) => {
        if (this.xuanzlist.length <= 0) {
          resolve(0)
          return
        }
        // uni.showLoading({
        //   title: "计算中..."
        // })
        let postData = {
          orderId: this.item.orderId,
          isAllSelect: this.evaluated == 1 ? this.xuanzlist.length === this.item.skus.length ? 1 : 0 : 0,
          skus: this.xuanzlist
        }
        NET.request(API.GetRefundMoney, postData, "POST").then(res => {
          uni.hideLoading()
          resolve(parseFloat(res.json))
        })
      })
    },
    // 申请退款
    ReturnMoney(item) {
      if (this.xuanzlist.length <= 0) {
        uni.showToast({
          title: '请选择退款的商品',
          duration: 2000,
          icon: 'none'
        })
      } else {
        uni.setStorageSync('afterSaleApplyRefund', this.xuanzlist)
        uni.navigateTo({
          url: 'afterSaleApplyRefund?orderId=' + this.item.orderId + '&isAllSelect=' + (this.evaluated==1?this.isAllSelect:0)
        })
      }
    },
    // 全选
    async changeAll(e) {
      if (e.detail.value.length == 0) {
        this.item.skus.map(item => this.$set(item, 'checked', false));
        this.$set(this.allCheck, 'checked', false);
        this.xuanzlist = []
        if (this.item.state === 4 && this.evaluated != undefined) {
          this.isAllSelect = this.evaluated
        } else {
          this.isAllSelect = 0
        }
      } else {
        this.item.skus.map(item => this.$set(item, 'checked', true));
        this.$set(this.allCheck, 'checked', true);
        if (this.item.state === 4 && this.evaluated != undefined) {
          this.isAllSelect = this.evaluated
        } else {
          this.isAllSelect = 1
        }
        this.xuanzlist = this.item.skus.filter(item => item.checked == true)
        this.number = 0
        // this.total = 0
        this.item.skus.forEach((item) => {
          this.number = this.number + item.number
          // this.total = this.total + item.total
        })
      }
      this.total = await this.HandleGetRefundMoney()
    },
    // 申请退货
    ReturnGoods(item) {
      if (this.xuanzlist.length <= 0) {
        uni.showToast({
          title: '请选择退货的商品',
          duration: 2000,
          icon: 'none'
        })
      } else {
        uni.navigateTo({
          url: 'afterSaleApplyRetund?list=' + encodeURIComponent(JSON.stringify(this.xuanzlist)) + '&orderId=' + this.item.orderId + '&isAllSelect='+ (this.evaluated==1?this.isAllSelect:0)
        })
      }
    },
    checkboxGroupChange(e) {
      // console.log(e, 'fdsfdsfsdf')
    },

    async checkboxChange(e) {
      // 动态设置商品件数和总计
      if (e.checked) {
        this.number = this.number + e.number
        // this.total = this.total + e.total
      } else {
        this.number = this.number - e.number
        // this.total = this.total - e.total
      }
      // 筛选勾选的
      this.xuanzlist = this.item.skus.filter(item => item.checked == true)

      // 是否为全选
      if (this.item.skus.length == this.xuanzlist.length) {
        if (this.item.state === 4 && this.evaluated != undefined) {
          this.isAllSelect = this.evaluated
        } else {
          this.isAllSelect = 1
        }
        this.$set(this.allCheck, 'checked', true);
      } else {
        if (this.item.state === 4 && this.evaluated != undefined) {
          this.isAllSelect = this.evaluated
        } else {
          this.isAllSelect = 0
        }
        this.$set(this.allCheck, 'checked', false);
      }
      this.total = await this.HandleGetRefundMoney()

      //     if(this.xuanzlist.findIndex(item=>item.checked===true)==-1){
      //   console.log(this.allCheck,'this.allCheck')
      //   console.log(this.xuanzlist,'this.xuanzlist')
      //       this.$set(this.allCheck, 'checked', false);
      //     } else {
      //   console.log(this.allCheck,'this.allCheck')
      //       this.$set(this.allCheck, 'checked', true);
      // console.log(this.xuanzlist,'this.xuanzlist')
      //     }
    }
  }
}
</script>

<style lang="scss"
       scoped>
page {
  background: #F8F8F8;
}

.order-list-box {
  padding: 20upx 30upx;
  box-sizing: border-box;
}

.order-list-box .item {
  background: #fff;
  border-radius: 10upx;
}

.order-list-top {
  height: 96upx;
  padding: 0 30upx;
  box-sizing: border-box;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid #eee;
}

.top-l {
  display: flex;
  flex-direction: row;
  align-items: center;
}

.shop-img {
  width: 36upx;
  height: 36upx;
  margin-right: 10upx;
}

.shop-name {
  font-size: 30upx;
  color: #333;
  font-weight: bold;
}

.arrow-img {
  margin-left: 15upx;
  width: 24upx;
  height: 24upx;
}

.order-status {
  font-size: 28upx;
  color: #ff7911;
  font-weight: 500;
}

.order-info-box {
  padding: 0 30upx;
  box-sizing: border-box;
}

.order-info {
  /* border-bottom: 1px solid #eee; */
}

.order-info-item {
  display: flex;
  flex-direction: row;
  padding: 10upx 20upx;
  border-bottom: solid 1px #eee;
  width: 600rpx;
}

.order-info-item:last-child {
  border-bottom: none;
}

.product-img {
  width: 180upx;
  height: 180upx;
  border-radius: 10upx;
  margin-right: 30upx;
}

.info-box {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.product-name {
  font-size: 26upx;
  color: #333;
  height: 68upx;
  line-height: 34upx;
  display: -webkit-box;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.price-sku-box {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  margin-top: 10upx;
}

.product-sku {
  font-size: 24upx;
  color: #999;
  margin-top: 30upx;
}

.product-price {
  font-size: 28upx;
  color: #333;
  font-weight: 400;
}

.product-price .fuhao {
  font-size: 28upx;
}

.product-num {
  font-size: 28upx;
  color: #999;
}

.afterSale-select-box {
  position: fixed;
  bottom: 0;
  width: 100%;
  background: #fff;
  padding: 30rpx;
  box-sizing: border-box;
  height: 240rpx;
}

.afterBtnBox {
  margin-top: 30rpx;

  .afterBtn1 {
    width: 342rpx;
    line-height: 100rpx;
    border: 2rpx solid #333333;
    text-align: center;
    color: #333333;
    margin-right: 30rpx;
  }

  .afterBtn2 {
    width: 342rpx;
    height: 100rpx;
    line-height: 100rpx;
    background: #333333;
    border: 2rpx solid #333333;
    text-align: center;
    color: #FFEBC4;
  }
}

.selectBox /deep/ .uni-checkbox:not([disabled]) .uni-checkbox-input:hover {
  border-color: #C5AA7B;
}
</style>
