首页 > 其他 > 详细

优惠券选择

时间:2020-01-16 16:18:02      阅读:88      评论:0      收藏:0      [点我收藏+]
<template>
  <div class="mask">
    <div class="option" @click="yu_mask"></div>
    <div class="coupons" @click="yu_mask">
      <p><img src="@/assets/img/accout/yh2.png" alt />Coupons</p>
     <p>X</p>
    </div>
    <div class="coupons_box">
      <div class="centera" v-for="(item,index) in parys" :key="index">
       <!-- <p class="header">{{item.store_name}}</p> -->
        <ul class="aaa">
          <li v-for="(cou,e) in item.Couponinfo" :key="e" class="cou_center">
            <div class="cou_mj">
              <div class="money">
                <p class="fh">{{GLOBA.money_tag}}</p>
                <p class="txt">{{cou.Coupon_amount}}</p>
              </div>
            </div>
            <div class="cou_time">
              <p class="cou1">{{item.store_name}}</p>
              <p class="cou2">{{cou.Coupon_order_amount}} available</p>
              <p class="cou3">Time:{{cou.Coupon_begin_time}}~{{cou.Coupon_end_time}}</p>
            </div>
            <div class="check_box" @click="coupons_selected(item,index,cou,e)">
              <p class="checkb self-centered" :class="{‘check‘: cou.checked}"></p>
            </div>
            <div class="if_checkb" v-show="cou.show"></div>
          </li>
        </ul>
      </div>
    </div>
    <div class="confirm_but" @click="confirm_but">Confirm</div>
  </div>
</template>

 

<script>
  export default {
    props: ["parys"],
    data() {
      return {
        coupons_list: [],
        ifcoupons:true,
      };
    },
    created() {
      this.coupons_default()
    },
    activated(){
      this.if_coupons()
    },
    methods: {
      coupons_default() {
        let store_num = 0
        this.parys.forEach(its => {
          let ship_price = its.sys_info ? its.sys_info[0].ship_price : 0
          let total_price = its.store_total_price ? its.store_total_price : its.order_goods_price
          if (its.store_id) {
            store_num += its.Couponinfo[0].Coupon_amount
          }
          its.goodall_price = total_price - ship_price
        })
        this.parys.forEach(element => {
          if (!element.store_id) {
            element.Couponinfo.forEach(iet => {
              if (iet.Coupon_order_amount > element.order_goods_price - store_num) {
                iet.show = true
              } else {
                iet.show = false
              }
            })
          }
        });
        for (let i = 0; i < this.parys.length; i++) {
          this.parys[i].Couponinfo.some((iem, e) => {
            if (!iem.show) {
              this.coupons_selected(this.parys[i], i, iem, e)
              return true;
            }
          })
        }
        sessionStorage.setItem(‘coupon_info‘, JSON.stringify(this.parys))
        setTimeout(()=>{
          this.ifcoupons = false
        },2000)
      },
      if_coupons(){
        if (!this.ifcoupons) {
          let coupons_info= JSON.parse(sessionStorage.getItem(‘coupon_info‘) || ‘[]‘)
          console.log(coupons_info,99)
          coupons_info.some((item,n) =>{
            item.Couponinfo.some((ie,i) =>{
              if (ie.checked) {
                this.parys[n].Couponinfo.forEach(it =>{
                  it.checked = false
                })
                this.parys[n].Couponinfo[i].checked = true
                return true
              }
            })
          })
        }
      },
      coupons_selected(item, i, coupon, e) {
        console.log(item,i,coupon,e)
        if (typeof coupon.checked == "undefined") {
          this.$set(coupon, "checked", true);
        } else {
          coupon.checked = !coupon.checked;
        }
        item.Couponinfo.forEach(k =>{
          console.log(k)
          if (k.id != coupon.id) {
           if (typeof k.checked == "undefined") {
              this.$set(k, "checked", false);
            } else {
              k.checked = false;
            }
          }
        })
        // 
        let store_price = 0
        let coupon_amount = 0
        let coupon_price = 0
        let all_price = 0
        this.parys.forEach(it => {
          if (it.store_id) {
            it.Couponinfo.forEach(im =>{
              if(im.checked){
                store_price += im.Coupon_amount
              }
            })
          }else{
            all_price = it.goodall_price
            it.Couponinfo.forEach(ie =>{
              if(ie.checked){
                coupon_price = ie.Coupon_amount
              }
            })
          }
        })
        this.parys.forEach(ent => {
          ent.preferential_price = (coupon_price/all_price)*ent.goodall_price
          if (ent.store_id) {
             ent.Couponinfo.forEach(ie => {
              if (ie.Coupon_order_amount > ent.goodall_price - ent.preferential_price) {
                ie.show = true
              } else {
                ie.show = false
              }
            })
          }else{
            ent.Couponinfo.forEach(iet => {
              if (iet.Coupon_order_amount > ent.goodall_price - store_price) {
                iet.show = true
              } else {
                iet.show = false
              }
            })
          }
        });
        // 
      },
      confirm_but() {
        this.coupons_list = []
        this.parys.forEach(a =>{
          a.Couponinfo.forEach(es =>{
            if(es.checked){
              es.store_id = a.store_id
              this.coupons_list.push(es)
            }
          })
        })
        sessionStorage.setItem(‘coupon_info‘, JSON.stringify(this.parys))
        this.$emit("confirm_but", this.coupons_list);
      },
      yu_mask() {
        this.$emit("yu_mask");
      },

 

    }
  };
</script>

 

<style lang="scss" scoped>
  .mask {
    width: 100%;
    height: 100vh;
    z-index: 333;
    background: rgba(0, 0, 0, 0.5);
    position: fixed;
    top: 0;
    left: 0;

 

    .option {
      width: 100%;
      height: 3.2rem;
    }

 

    .coupons {
      display: flex;
      justify-content: center;
      background-color: #fff;
      height: 0.8rem;
      width: 100vw;
      padding: 0 0.3rem;
      box-sizing: border-box;
      border-bottom: 0.5px solid #f7f7f7;
      border-bottom: 1px solid #ccc;
      position: relative;

 

      p:nth-child(1) {
        font-family: "Calibri-Bold";
        font-weight: Bold;
        font-size: 0.3rem;
        color: #017EC2;
        line-height: 0.8rem;

 

        img{
              width: 15%;
              margin-right: 0.2rem;
              margin-top: -2px;
              vertical-align: middle;
        }
      }

 

      p:nth-child(2) {
        font-family: "Calibri";
        font-weight: 400;
        font-size: 0.3rem;
        color: #ccc;
        width: 1rem;
        text-align: center;
        line-height: 0.7rem;
         position: absolute;
         right: 0;
      }
    }

 

    .confirm_but {
      width: 100vw;
      height: 1rem;
      line-height: 1rem;
      text-align: center;
      background-color: #008EDD;
      font-family: "Calibri-Bold";
      font-weight: Bold;
      font-size: 0.34rem;
      color: #fff;
    }

 

    .coupons_box {
      width: 100vw;
      height: calc(100vh - 5rem);
      overflow: hidden;
      overflow-x: hidden;
      overflow-y: scroll;
      background-color: #f7f7f7;
      padding: 15px;
      padding-top: 0px;
      box-sizing: border-box;
    }

 

    .centera {
      .header {
        height: 0.6rem;
        line-height: 0.6rem;
        text-align: center;
        font-size: 0.28rem;
        position: relative;
        background: #e9e9e9;
        color: #017EC2;
        font-weight: bold;
      }

 

      .aaa {
        width: 100%;

 

        .cou_center {
          box-shadow: 2px 2px 10px #e2e2e2;
          width: 100%;
          height: 1.6rem;
          display: flex;
          justify-content: space-between;
          margin-top: 0.1rem;
          position: relative;
          .if_checkb{
            position: absolute;
            top: 0;
            left: 0;
            z-index: 20;
            background: rgba(0, 0, 0, 0.3);
            width: 100%;
            height: 100%;
          }
          .cou_mj {
            background-color:#33B6FF;
            width: 30%;
            height: 100%;

 

            .money {
              width: 100%;
              height: 100%;
              line-height: 1.6rem;
              text-align: center;
              font-size: 0.9rem;
              font-weight: bold;
              color: #fff;
              display: flex;
              justify-content: center;

 

              .fh {
                font-size: 0.1rem;
                font-weight: bold;
                line-height: 0.82rem;
              }
            }

 

            .cou_ke {
              font-size: 0.2rem;
              text-align: center;
              height: 40%;
              line-height: 0.5rem;
              font-weight: 400;
            }
          }

 

          .cou_time {
              width: 50%;
              height: 100%;
              font-size: 0.26rem;
              padding: 0.2rem 0;
              box-sizing: border-box;
              color: #fff;
              background-color: #33B6FF;

 

              .cou1 {
                font-size: 0.4rem;
                font-weight: bold;
              }

 

              .cou2 {
                font-size: 0.3rem;
                margin-top: 0.06rem;
              }

 

              .cou3 {
                color: #fff;
                font-weight: bold;
                margin-top: 0.06rem;
                font-size: 0.23rem;
              }

 

          }
        }
      }
    }
  }

 

  .check_box {
    height: 100%;
    width: 20%;
    position: relative;
    border-left: 2px dotted  #33B6FF;
    background: #fff;

 

    .checkb{
      width: 0.4rem;
      height: 0.4rem;
      border-radius: 50%;
      border: 1px solid #999999;
      box-sizing: border-box;
    }
    .check {
      background-color: #33b6ff;
      border: none;
    }

 

    .check::after {
      display: block;
      /* content: "\2714"; */
      font-size: 0.28rem;
      color: #fff;
      font-weight: 600;
      text-align: center;
      line-height: 0.4rem;
    }
  }
</style>

优惠券选择

原文:https://www.cnblogs.com/xiao-wu-gui/p/12201608.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!