最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue2.x element-ui實(shí)現(xiàn)pc端購物車頁面demo

 更新時(shí)間:2023年06月20日 14:30:40   作者:風(fēng)中凌亂的男子  
這篇文章主要為大家介紹了vue2.x element-ui實(shí)現(xiàn)pc端購物車頁面demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

效果圖

完整demo 

<template>
  <div class="content shopCart">
    <div class="breadcrumb">
      <el-breadcrumb>
        <el-breadcrumb-item :to="{ path: '/dashboard' }">產(chǎn)品</el-breadcrumb-item>
        <el-breadcrumb-item>購物車</el-breadcrumb-item>
      </el-breadcrumb>
    </div>
    <!-- Steps -->
    <div class="steps">
      <el-steps :active="1" align-center>
        <el-step title="購物車"></el-step>
        <el-step title="訂單信息"></el-step>
        <el-step title="訂單支付"></el-step>
        <el-step title="成功提交訂單"></el-step>
      </el-steps>
    </div>
    <!-- table -->
    <div class="table">
      <el-table element-loading-text="正在為您拼命加載中..." :data="tableData" ref="multipleTable" style="width: 100%"
        @selection-change="handleSelectionChange" :close-on-click-modal="false" :close-on-press-escape="false"
        :header-cell-style="{background:'#f8f8f8',color:'#999'}">
        <el-table-column type="selection" width="75" align="center" />
        <el-table-column prop="shopImg" align="center" width="150" label="商品">
          <template slot-scope="scope">
            <img :src="scope.row.shopImg" class="shopImg" alt="">
          </template>
        </el-table-column>
        <el-table-column prop="shop" align="center">
          <template slot-scope="scope">
            <span class="shop">{{scope.row.shop}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="price" label="單價(jià)" align="center">
          <template slot-scope="scope">
            <span class="price">¥{{scope.row.price}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="number" label="數(shù)量" align="center">
          <template slot-scope="scope">
            <el-input v-model.number="scope.row.number" oninput="value=value.replace(/[^\d]/g,'')" autocomplete="off" style="width:140px" size="mini"
              @change="handleInput(scope.row)">
              <el-button size="mini" slot="prepend" @click="del(scope.row)"><i class="el-icon-minus"></i></el-button>
              <el-button slot="append" size="mini" @click="add(scope.row)"><i class="el-icon-plus"></i></el-button>
            </el-input>
          </template>
        </el-table-column>
        <el-table-column prop="count" label="小計(jì)" align="center">
          <template slot-scope="scope">
            <span class="count">¥{{scope.row.goodTotal}}</span>
          </template>
        </el-table-column>
        <el-table-column label="操作" align="center">
          <template slot-scope="scope">
            <i class="el-icon-delete" style="font-size:18px;cursor: pointer;" @click="handleDelete(scope.$index, scope.row)"></i>
          </template>
        </el-table-column>
      </el-table>
      <div class="submit">
        <van-submit-bar :price="totalPrice*100" :disabled='multipleSelection.length<=0' button-color='#bfa548' button-text="去結(jié)算" label='產(chǎn)品總額:'>
          <p class="submitBar">
            <span>繼續(xù)購物</span>
            <span>
              共 <b>{{tableData.length}}</b> 件商品,
              已選擇 <b>{{multipleSelection.length}}</b> 件
            </span>
          </p>
        </van-submit-bar>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      tableData: [
        { shopImg: "https://cdn.cnbj0.fds.api.mi-img.com/b2c-shopapi-pms/pms_1606288963.72951431.jpg", shop: '小米不能寫 紅色 10支裝', price: 20, number: 1, goodTotal: 20, },
        { shopImg: "https://cdn.cnbj0.fds.api.mi-img.com/b2c-shopapi-pms/pms_1606288963.72951431.jpg", shop: '小米巨能寫 黑色 10支裝', price: 30, number: 1, goodTotal: 30, }
      ],
      totalPrice: 0,
      multipleSelection: [],
    }
  },
  methods: {
    // 刪除單個(gè)商品
    handleDelete(index, row) {
      this.$confirm('確定刪除該商品?', '提示', {
        confirmButtonText: '確定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        //刪除數(shù)組中指定的元素
        this.tableData.splice(index, 1);
        this.$message({
          type: 'success',
          message: '刪除成功!'
        });
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消刪除'
        });
      });
    },
    // 數(shù)量變化觸發(fā)
    handleInput(value) {
      console.log(value);
      if (null == value.number || value.number == "" || value.number == 0) {
        value.number = 1;
      }
      value.goodTotal = (value.number * value.price).toFixed(2);//保留兩位小數(shù)
      //增加商品數(shù)量也需要重新計(jì)算商品總價(jià)
      this.handleSelectionChange(this.multipleSelection);
    },
    add(addGood) {
      //輸入框輸入值變化時(shí)會(huì)變?yōu)樽址袷椒祷氐絡(luò)s
      //此處要用v-model,實(shí)現(xiàn)雙向數(shù)據(jù)綁定
      if (typeof addGood.number == 'string') {
        addGood.number = parseInt(addGood.number);
      };
      addGood.number += 1;
      addGood.goodTotal = (addGood.number * addGood.price).toFixed(2);//保留兩位小數(shù)
      this.handleSelectionChange(this.multipleSelection)
    },
    del(delGood) {
      if (typeof delGood.number == 'string') {
        delGood.number = parseInt(delGood.number);
      };
      if (delGood.number > 1) {
        delGood.number -= 1;
        delGood.goodTotal = (delGood.number * delGood.price).toFixed(2);//保留兩位小數(shù)
        this.handleSelectionChange(this.multipleSelection)
      }
    },
    handleSelectionChange(selection) {
      this.multipleSelection = selection;
      this.totalPrice = 0;
      //此處不支持forEach循環(huán),只能用原始方法了
      for (var i = 0; i < selection.length; i++) {
        //判斷返回的值是否是字符串
        if (typeof selection[i].goodTotal == 'string') {
          selection[i].goodTotal = parseInt(selection[i].goodTotal);
        };
        this.totalPrice += selection[i].goodTotal;
      }
    }
  },
}
</script>
<style lang="scss" scoped>
.shopCart {
  margin-bottom: 50px;
  .breadcrumb {
    margin: 20px 0;
    ::v-deep .el-breadcrumb__inner.is-link {
      color: #bfa548;
    }
  }
  .steps {
    margin-top: 50px;
    ::v-deep .el-step__head {
      border-color: #d8d8d8;
      color: #fff;
    }
    ::v-deep .el-step__head.is-finish {
      color: #fff;
      border-color: #bfa548;
    }
    ::v-deep .el-step__title {
      font-size: 15px;
    }
    ::v-deep .el-step__title.is-finish {
      color: #bfa548;
    }
    ::v-deep .el-step__title.is-process {
      color: #d8d8d8;
    }
    ::v-deep .is-finish {
      .is-text {
        background: #bfa548;
      }
    }
    ::v-deep .is-process {
      .is-text {
        background: #d8d8d8;
      }
    }
    ::v-deep .is-wait {
      .is-text {
        background: #d8d8d8;
      }
    }
    ::v-deep .el-step__line {
      height: 5px;
      top: 10px;
      background-color: #f1f1f1;
    }
  }
  .table {
    margin-top: 50px;
    position: relative;
    padding-bottom: 100px;
    ::v-deep .el-input__inner {
      text-align: center;
    }
    ::v-deep .el-input-group__append {
      padding: 0 15px;
    }
    ::v-deep .el-input-group__prepend {
      padding: 0 15px;
    }
    .shopImg {
      width: 100%;
    }
    .price,
    .shop {
      color: #000733;
    }
    .count {
      color: #bfa548;
    }
    ::v-deep .el-checkbox__inner {
      width: 20px;
      height: 20px;
      border-radius: 50%;
    }
    ::v-deep .el-checkbox__input.is-checked .el-checkbox__inner {
      background-color: #bfa548;
      border-color: #bfa548;
    }
    ::v-deep .el-checkbox__input.is-indeterminate .el-checkbox__inner {
      background-color: #bfa548;
      border-color: #bfa548;
    }
    ::v-deep .el-checkbox__inner::after {
      left: 7px;
      top: 3px;
    }
    ::v-deep .el-checkbox__input.is-indeterminate .el-checkbox__inner::before {
      top: 7px;
    }
    .submit {
      position: absolute;
      right: 0;
      left: 0;
      ::v-deep .van-submit-bar {
        position: absolute;
        top: 20px;
        .van-submit-bar__bar {
          background-color: #f8f8f8;
          padding: 30px 20px 30px 28px;
        }
      }
      .submitBar {
        color: #757575;
        display: flex;
        align-items: center;
        b {
          color: #bfa548;
          margin: 0 5px;
        }
        span {
          display: flex;
          align-items: center;
          &:first-child {
            cursor: pointer;
            &:hover {
              color: #bfa548;
            }
            &::after {
              display: inline-block;
              content: "";
              width: 1px;
              height: 12px;
              background: #ccc;
              margin: 0 10px;
            }
          }
        }
      }
      ::v-deep .van-submit-bar__price {
        color: #bfa548;
      }
      ::v-deep .van-submit-bar__text {
        padding-right: 30px;
        color: #000733;
      }
    }
  }
}
</style>

以上就是vue2.x element-ui實(shí)現(xiàn)pc端購物車頁面demo的詳細(xì)內(nèi)容,更多關(guān)于vue element-ui pc端頁面的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在Vue+SpringBoot應(yīng)用中實(shí)現(xiàn)導(dǎo)入導(dǎo)出excel表功能全過程

    在Vue+SpringBoot應(yīng)用中實(shí)現(xiàn)導(dǎo)入導(dǎo)出excel表功能全過程

    這篇文章主要介紹了如何在Vue+SpringBoot應(yīng)用中實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能,前端分三步下載模板、上傳文件、調(diào)用接口,后端通過FastExcel讀取數(shù)據(jù)并調(diào)用UserDao插入,使用/user/importUsers接口完成數(shù)據(jù)交互,需要的朋友可以參考下
    2025-10-10
  • 使用element-ui的Pagination分頁的注意事項(xiàng)及說明

    使用element-ui的Pagination分頁的注意事項(xiàng)及說明

    這篇文章主要介紹了使用element-ui的Pagination分頁的注意事項(xiàng)及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • vue?iview封裝模態(tài)框的方法

    vue?iview封裝模態(tài)框的方法

    這篇文章主要為大家詳細(xì)介紹了vue?iview封裝模態(tài)框的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue導(dǎo)出word純前端的實(shí)現(xiàn)方式

    vue導(dǎo)出word純前端的實(shí)現(xiàn)方式

    這篇文章主要介紹了vue導(dǎo)出word純前端的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue3版本網(wǎng)頁小游戲設(shè)計(jì)思路

    vue3版本網(wǎng)頁小游戲設(shè)計(jì)思路

    最近火爆全網(wǎng)的羊了個(gè)羊小程序,背景是根據(jù)官方介紹,“羊了個(gè)羊”是一款闖關(guān)消除小游戲,通關(guān)率不到0.1%。主要玩法為重疊的各類方塊,需要在下方7個(gè)欄內(nèi)完成消除,其特點(diǎn)就是“極難”,也因此成為熱門挑戰(zhàn),對(duì)vue3版本網(wǎng)頁小游戲設(shè)計(jì)思路感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • Vue.js項(xiàng)目模板搭建圖文教程

    Vue.js項(xiàng)目模板搭建圖文教程

    下面小編就為大家?guī)硪黄猇ue.js項(xiàng)目模板搭建圖文教程。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • vue的路由映射問題及解決方案

    vue的路由映射問題及解決方案

    這篇文章主要介紹了vue的路由映射問題及解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Vue2打包部署后可動(dòng)態(tài)修改后端接口地址的解決方法

    Vue2打包部署后可動(dòng)態(tài)修改后端接口地址的解決方法

    本篇文章將介紹使用Vue2開發(fā)前后端分離項(xiàng)目時(shí),前端打包部署后可動(dòng)態(tài)修改后端接口地址的解決方法,文中通過圖文結(jié)合的方式介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • ruoyi-vue3 集成aj-captcha實(shí)現(xiàn)滑塊、文字點(diǎn)選驗(yàn)證碼功能

    ruoyi-vue3 集成aj-captcha實(shí)現(xiàn)滑塊、文字點(diǎn)選驗(yàn)證碼功能

    這篇文章主要介紹了 ruoyi-vue3 集成aj-captcha實(shí)現(xiàn)滑塊、文字點(diǎn)選驗(yàn)證碼,本文基于后端RuoYi-Vue 3.8.7 和 前端 RuoYi-Vue3 3.8.7,集成以AJ-Captcha文字點(diǎn)選驗(yàn)證碼為例,不需要鍵盤手動(dòng)輸入,極大優(yōu)化了傳統(tǒng)驗(yàn)證碼用戶體驗(yàn)不佳的問題,感興趣的朋友一起看看吧
    2023-12-12
  • vue實(shí)現(xiàn)文件上傳功能

    vue實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評(píng)論

合作市| 华坪县| 东至县| 汉寿县| 青海省| 北辰区| 固阳县| 鄂托克前旗| 报价| 田东县| 丰宁| 呼伦贝尔市| 石楼县| 库尔勒市| 稷山县| 刚察县| 东至县| 南江县| 亳州市| 栾川县| 丰台区| 汉沽区| 永定县| 北京市| 南宁市| 新营市| 德格县| 扎兰屯市| 陆河县| 大理市| 江都市| 丽水市| 金川县| 合作市| 贡山| 昔阳县| 甘泉县| 年辖:市辖区| 徐汇区| 广德县| 朝阳市|