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>
    

      

  • 相关阅读:
    关于Ubuntu 9.10 的aptget update 一直无法更新源的点点滴滴
    CentOS的安装和搭建文件共享服务器(Samba)
    VirtualBox 下的 Ubuntu 虚拟机中使用 Android 真机做开发调试
    VmWare下安装CentOS6图文安装教程
    CentOS的远程桌面(xdm)
    ubuntu Apache安装设置
    关于母版页的按钮事件
    TSQL使用函数uppercase更新xml
    文章的上一篇和下一篇导航 V2
    数据库用户映射到 SQL Server 登录名
  • 原文地址:https://www.cnblogs.com/bertha-zm/p/9796544.html
Copyright © 2011-2022 走看看