<template>
  <div class="order">
    <headerNav title="确认订单"/>
    <van-cell
      center
      :border="false"
      class="contact-card"
      is-link
      to="/user/address?id=2"
    >
      <template v-if="type === 'add'">
        <strong>选择地址</strong>
      </template>
      <template v-else>
        <strong>{{addressData.name}} {{addressData.mobile}}</strong>
        <div>{{addressData.address}}</div>
      </template>
    </van-cell>
      <div style="height:15px;"></div>



<!--    <div class="card" v-for="(product,i) in products" :key="i">-->
<!--      <product-card :product='product'/>-->
<!--    </div>-->
    <div v-for="(itemGroup, i) in itemGroups" >
        <div class="card" v-for="(item, j) in itemGroup.items" :key="j">
            <product-card :product='convertProduct(item)'/>
        </div>
        <div style="height:15px;"></div>
    </div>



    <div style="height:15px;"></div>
    <van-cell-group>
      <van-field
        label="留言"
        type="textarea"
        placeholder="请输入留言"
        rows="1"
        autosize
      />
    </van-cell-group>
    <div style="height:15px;"></div>


      <!-- 优惠券单元格 -->
      <van-coupon-cell
              :coupons="coupons"
              :chosen-coupon="chosenCoupon"
              @click="showCouponPopup = true"
      />
      <!-- 优惠券列表 -->
      <van-popup v-model="showCouponPopup" position="bottom">
          <van-coupon-list
                  :coupons="coupons"
                  :chosen-coupon="chosenCoupon"
                  :disabled-coupons="disabledCoupons"
                  @change="onCouponChange"
                  @exchange="onCouponExchange"
          />
      </van-popup>

    <div style="height:15px;"></div>
    <van-cell-group class="total">
      <van-cell title="商品总额" :value="fee.buyTotal / 100.0"/>
      <van-cell title="运费" :value="+ fee.postageTotal / 100.0"/>
      <van-cell title="折扣" :value="- fee.discountTotal / 100.0"/>
      <van-cell title="实付金额" :value="fee.presentTotal / 100.0" style="font-weight: 700;"/>
    </van-cell-group>

    <div style="height:50px;"></div>
    <van-submit-bar
      :price="fee.presentTotal"
      button-text="提交订单"
      label='实付金额:'
      @submit="onSubmit"
    />

  </div>
</template>

<script>

  import {
    createOrder,
    getOrderConfirmCreateOrder,
    getCartConfirmCreateOrder,
    createOrderFromCart
  } from '../../api/order';
  import {GetDefaultAddress} from '../../api/user';
  import orderStore from '../../store/order';
  import { Dialog } from 'vant';

  export default {
    data() {
      return {
        from: 'direct_order', // 目前有两个来源。direct_order:直接下单; card: 购物车下单。
        // 如下两个参数,在直接下单时使用
        skuId: this.$route.query.skuId,
        quantity: this.$route.query.quantity,

        type: "add",
        addressData: {

        },

        // 商品 + 促销相关
        itemGroups: [],
        fee: {
          originalTotal: undefined,
          discountTotal: undefined,
          postageTotal: undefined,
          presentTotal: undefined,
        },
        // products: [], // 应该没用了

        // 优惠劵相关
        showCouponPopup: false,
        coupons: [],
        disabledCoupons: [],
        chosenCoupon: -1,
      };
    },
    methods: {
      onCouponChange(index) {
        // debugger;
        let couponCardId = this.coupons[index].id;
        if (this.from === 'direct_order') {
          getOrderConfirmCreateOrder(this.skuId, this.quantity, couponCardId).then(data => {
            // this.itemGroups = data.itemGroups;
            this.fee = data.fee;
            this.coupons[index].value = data.couponCardDiscountTotal; // 修改优惠劵减免的金额
          })
        } else if (this.from === 'cart') {
          getCartConfirmCreateOrder(couponCardId).then(data => {
            // this.itemGroups = data.itemGroups;
            this.fee = data.fee;
            this.coupons[index].value = data.couponCardDiscountTotal; // 修改优惠劵减免的金额
          })
        }
        this.chosenCoupon = index;
        this.showCouponPopup = false;
      },
      onCouponExchange(a, b, c) {
        Dialog.alert({
          title: '系统提示',
          message: '暂未开发', // TODO 芋艿
        });
      },

      onSubmit() {
        const userAddressId = this.addressData.id;
        if (!userAddressId) {
          Dialog.alert({
            title: '系统提示',
            message: '请选择收获地址',
          });
          return;
        }

        const remark = '';
        const couponCardId = this.chosenCoupon >= 0 ? this.coupons[this.chosenCoupon].id : undefined;

        if (this.from === 'direct_order') {
            const { skuId, quantity } = this.$route.query;
            const orderItems = [{
              skuId,
              quantity,
              couponCardId,
            }];
            createOrder({
              orderItems,
              userAddressId,
              couponCardId,
              remark,
            }).then(result => {
              if (result) {
                // const { orderNo } = result;
                // this.$router.push({  //核心语句
                //   path:`/order/success`,   //跳转的路径
                //   query:{           //路由传参时push和query搭配使用 ,作用时传递参数
                //     ...result,
                //   }
                // });
                this.$router.push('/pay?appId=POd4RC6a&orderId=' + result.id + '&returnUrl=' + encodeURI('/user/order/info/' + result.id));
              }
            });
        } else if (this.from === 'cart') {
          createOrderFromCart(userAddressId, couponCardId, remark).then(result => {
            if (result) {
              // const { orderNo } = result;
              // this.$router.push({  //核心语句
              //   path:`/order/success`,   //跳转的路径
              //   query:{           //路由传参时push和query搭配使用 ,作用时传递参数
              //     ...result,
              //   }
              // });
              this.$router.push('/pay?appId=POd4RC6a&orderId=' + result.id + '&returnUrl=' + encodeURI('/user/order/info/' + result.id));
            }
          });
        }
      },
      convertProduct(item) {
        return {
          ...item.spu,
          quantity: item.buyQuantity,
          price: item.buyPrice || item.price,
          sku: {
            ...item,
            spu: undefined,
          }
        };
      },
      convertCouponList(cards) {
        let newCards = [];
        for (let i in cards) {
          let card = cards[i];
          newCards.push({
            id: card.id,
            name: card.title,
            condition: '满 ' + card.priceAvailable / 100.0 + ' 元可用',
            startAt: card.validStartTime / 1000,
            endAt: card.validEndTime / 1000,
            // description: '述信息,优惠券可用时展示',
            reason: card.unavailableReason,
            value:	0,
            valueDesc: card.preferentialType === 1 ? card.priceOff / 100 : card.percentOff / 10.0,
            unitDesc: card.preferentialType === 1 ? '元' : '折'
          })
        }
        return newCards;
      }
    },
    mounted: function() {
      if (this.$store.state.addressData.name) {
        this.type = 'add1';
      } else {
        this.type = 'add';
      }
      this.addressData = this.$store.state.addressData;

      // 加载商品信息
      // debugger;
      if (this.from === 'direct_order') {
        getOrderConfirmCreateOrder(this.skuId, this.quantity).then(data => {
          this.itemGroups = data.itemGroups;
          this.fee = data.fee;
          // 获得优惠劵列表
          this.coupons = this.convertCouponList(data.couponCards.filter(function (element) {
            return element.available;
          }));
          this.disabledCoupons = this.convertCouponList(data.couponCards.filter(function (element) {
            return !element.available;
          }));
        })
      } else if (this.from === 'cart') {
        getCartConfirmCreateOrder().then(data => {
          this.itemGroups = data.itemGroups;
          this.fee = data.fee;
          // 获得优惠劵列表
          this.coupons = this.convertCouponList(data.couponCards.filter(function (element) {
            return element.available;
          }));
          this.disabledCoupons = this.convertCouponList(data.couponCards.filter(function (element) {
            return !element.available;
          }));
        })
      }
    },
    created() {
      // 加载地址
      GetDefaultAddress().then((result) => {
        if (!this.addressData.name && result) {
          this.type = 'add1';
          this.addressData = result;
        }
      })
      // 处理来源
      if (this.$route.query.from === 'cart') {
        this.from = this.$route.query.from;
      }
    },
    store: orderStore,
  };
</script>

<style lang="less">
  .order {
    font-size: 14px;
    background: #f7f7f7;

    .contact-card::before {
      content: "";
      left: 0;
      right: 0;
      bottom: 0;
      height: 2px;
      position: absolute;
      background: -webkit-repeating-linear-gradient(
        135deg,
        #ff6c6c 0,
        #ff6c6c 20%,
        transparent 0,
        transparent 25%,
        #3283fa 0,
        #3283fa 45%,
        transparent 0,
        transparent 50%
      );
      background: repeating-linear-gradient(
        -45deg,
        #ff6c6c 0,
        #ff6c6c 20%,
        transparent 0,
        transparent 25%,
        #3283fa 0,
        #3283fa 45%,
        transparent 0,
        transparent 50%
      );
      background-size: 80px;
    }

    .total {
      .van-cell__value {
        color: red;
      }
    }

    .van-submit-bar__bar {
      border-top: 1px solid #f7f7f7;
    }

    .additional {
      .van-cell {
        padding: 0 15px;
        font-size: 12px;
      }

      .van-cell__title {
        flex: 11;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
      }

      .van-tag {
        line-height: 12px;
        margin-right: 5px;
      }

      .price {
        color: #e93b3d;
        font-size: 10px;

        span {
          font-size: 16px;
        }
      }
    }
  }
</style>