zoukankan      html  css  js  c++  java
  • vue2全选反选

    <template>
      <div id="jueseQiehuan">
        <b-header title="收货地址"></b-header>
        <scroll>
          <div class="title">
            <div>收货地址</div>
            <div class="title-edit" v-if="!isEdit" @click="editDelete">编辑</div>
            <div class="title-edit" v-else @click="editFinish" style="color: #797C80">完成</div>
          </div>
          <div class="container">
            <div class="cont" v-show="!isEdit" @click="editAddress">
              <div class="cont-left">
                <p class="cont-left-title"><span>王晓花</span>158****77991</p>
                <p class="cont-left-addr">四川省成都市吉泰五路88号香年广场T2楼46层4602号</p>
              </div>
              <div class="cont-right">
                <span class="edit"></span>
              </div>
            </div>
            <label style="display:block;" v-show="isEdit" v-for="(item, index) in list" :key="index" @click="checkAddress(item)">
              <div class="cont">
                <div class="cont-right">
                  <span class="check" style="margin-right: .2rem;vertical-align: middle;">
                    <i class="icon" :class="item.on ? 'icon-checked' : 'icon-check'"></i>
                  </span>
                </div>
                <div class="cont-left" style=" 90%;">
                  <p class="cont-left-title"><span>{{item.name}}</span>{{item.tel}}</p>
                  <p class="cont-left-addr">{{item.address}}</p>
                </div>
              </div>
            </label>
          </div>
    
          <div class="checkAll" v-show="isEdit">
            <div class="checkAll-left" @click="checkAll">
              <span class="check">
                  <!-- <input type="radio" name="check" :id="'radio'+item.id" /> -->
                  <i class="icon" :class="chosenAddressId ? 'icon-checked' : 'icon-check'"></i>
              </span>
              全选
            </div>
            <div class="checkAll-right" @click="deleteAddress">
              <span>删除</span>
            </div>
          </div>
    
          <!-- <div class="nodata">暂无数据</div> -->
          <div class="footer" v-show="!isEdit" @click="addAddress">新增收货地址</div>
        </scroll>
      </div>
    </template>
    
    <script>
    import BHeader from 'components/base/header/header'
    import Scroll from 'components/base/scroll/scroll'
    export default {
      components: {
        BHeader,
        Scroll
      },
      data () {
        return {
          isEdit: false,
          chosenAddressId: false,
          list: [
            {
              id: '1',
              name: '张三',
              tel: '13000000000',
              address: '浙江省杭州市西湖区文三路 138 号东方通信大厦 7 楼 501 室',
              on: false
            },
            {
              id: '2',
              name: '李四',
              tel: '1310000000',
              address: '浙江省杭州市拱墅区莫干山路 50 号',
              on: false
            }
          ],
          disabledList: [
            {
              id: '3',
              name: '王五',
              tel: '1320000000',
              address: '浙江省杭州市滨江区江南大道 15 号',
              on: false
            }
          ]
        }
      },
      methods: {
        addAddress () {
          this.$router.push('/cloud/addAddress')
        },
        editAddress () {
          this.$router.push('/cloud/editAddress')
        },
        checkAddress (item) {
          var i = 0
          this.list.forEach(res => {
            if (item.id === res.id && item.on) {
              res.on = false
            } else if (item.id === res.id && !item.on) {
              res.on = true
            }
            if (res.on) i++
          })
          if (i === this.list.length) {
            this.chosenAddressId = true
          } else {
            this.chosenAddressId = false
          }
        },
        checkAll () {
          if (!this.chosenAddressId) {
            this.chosenAddressId = true
            this.list.forEach(res => {
              res.on = true
            })
          } else {
            this.chosenAddressId = false
            this.list.forEach(res => {
              res.on = false
            })
          }
        },
        editDelete () {
          this.isEdit = true
        },
        editFinish () {
          this.isEdit = false
        },
        deleteAddress () {
          alert('删除调用接口')
        }
      }
    }
    </script>
    
    <style lang="scss" scoped>
    @import "~assets/styles/mixin";
    #jueseQiehuan {
      height: 100%;
      background-color: #fff;
      .title {
        border-bottom: 1px solid #F1F3F8;
        padding: 1.125rem .94rem;
        color:rgba(44,43,64,1);
        font-size: 1.5rem;
        font-weight: 600;
        display: flex;
        justify-content: space-between;
        .title-edit {
          height:1.31rem;
          font-size:0.94rem;
          font-family:PingFangSC-Medium;
          font-weight:500;
          color:rgba(76,136,255,1);
          line-height:1.31rem;
        }
      }
      .container {
        padding: 0 .94rem;
        margin-bottom: 4rem;
        .cont {
          display: flex;
          justify-content: space-between;
          padding: .94rem 0;
          border-bottom: 1px solid #F1F3F8;
          .cont-left {
             80%;
            color: #17181A;
            .cont-left-title {
              font-size:0.75rem;
              font-family:PingFangSC-Medium;
              font-weight:500;
              margin-bottom: 0.25rem;
              font-weight: 600;
              line-height:1.25rem;
              height:1.25rem;
              span {
                font-size: .94rem;
                margin-right: .5rem;
              }
            }
            .cont-left-addr {
              font-size:0.94rem;
              font-family:PingFangSC-Regular;
              font-weight:400;
              color:rgba(121,124,128,1);
              line-height:1.25rem;
            }
          }
          .cont-right {
            position: relative;
            .edit {
              @include background-image('cloud/address_edit');
              display: block;
              height: 1.375rem;
               1.375rem;
              position: absolute;
              top: 50%;
              right: 15px;
              font-size: 16px;
              transform: translate(0,-50%);
            }
            .check {
              top: 50%;
              left: 0;
              font-size: 16px;
              position: absolute;
              -webkit-transform: translate(0,-50%);
              transform: translate(0,-50%);
              height: 1.125rem;
               1.125rem;
              input {
                position: absolute;
                top: 0;
                left: 0;
                opacity: 0;
                margin: 0;
                 100%;
                height: 100%;
              }
    
            }
          }
        }
      }
      .icon {
        position: relative;
        display: inline-block;
        font: normal normal normal 14px/1 vant-icon;
      }
      .icon-checked {
        position: relative;
        display: inline-block;
        font: normal normal normal 14px/1 vant-icon;
        font-size: inherit;
        text-rendering: auto;
        color: #17181A;
      }
      .icon-check {
        color: #999;
        font: normal normal normal 14px/1 "vant-icon";
      }
      .icon-checked::before {
        content: "F011";
      }
      .icon-check::before {
        content: "F010";
      }
      .icon::before {
        display: inline-block;
      }
      .checkAll {
        position: absolute;
        bottom: 0;
         100%;
        height: 3.125rem;
        line-height: 3.125rem;
        text-align: center;
        color: #fff;
        font-size: .94rem;
        display: flex;
        justify-content: space-between;
        border-top: 1px solid #EEEEEE;
        .checkAll-left {
          font-size:0.81rem;
          font-family:PingFangSC-Regular;
          font-weight:400;
          color:rgba(44,43,64,1);
           20%;
        }
        .checkAll-right {
           30%;
          span{
             100%;
            display: block;
            height: 3.125rem;
            line-height: 3.125rem;
            text-align: center;
            font-size:0.88rem;
            font-family:PingFangSC-Medium;
            font-weight:500;
            color:rgba(255,255,255,1);
            background-color: #F55858;
          }
        }
      }
      .nodata {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        font-size:0.88rem;
        color:rgba(27,28,30,1);
      }
      .footer {
        position: absolute;
        bottom: 0;
         100%;
        height: 3.125rem;
        line-height: 3.125rem;
        text-align: center;
        color: #fff;
        font-size: .94rem;
        background-color: #4C88FF;
      }
    }
    </style>
    

      

  • 相关阅读:
    AtCoder Beginner Contest 167
    AtCoder Beginner Contest 166
    AtCoder Beginner Contest 165
    AtCoder Beginner Contest 164
    AtCoder Beginner Contest 163
    AtCoder Beginner Contest 162
    AtCoder Beginner Contest 161
    AtCoder Beginner Contest 160
    AtCoder Beginner Contest 159
    自定义Mybatis自动生成代码规则
  • 原文地址:https://www.cnblogs.com/bertha-zm/p/9796544.html
Copyright © 2011-2022 走看看