最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • vue+element-购物车的操作

    正文概述 掘金(请不要耽误我修仙)   2021-04-07   434
    第一种:效果预览

    vue+element-购物车的操作
    vue+element-购物车的操作
    vue+element-购物车的操作

    思路分析

    这个其实不麻烦,首先我们被选中的table是属于多选的,也就是说element是提供了一个被选中的行的数组函数的,那么这样我们可以拿到用户是选择了哪些行的,这是第一步,第二步是我们怎么保证每一页选择了以后别的页被选中的选项还在,这个我之前的博客是更新了,这里不说怎么实现的了,也是一个字段就可以了,第三步就是我们将用户选择的数据新加到购物车的那个table里面,第四步就是怎么在上面操作例如删除的时候,对应的原来用户选择的页消除了,这个是麻烦的一个地方。

    代码实现
    	   /**
           * @add_goods 加入结账栏   这个就是加入结账栏的按钮
           */
          add_goods(){
            let that = this;
            if(that.tableData_check_out_transit.length === 0){
              that.hintInfo('warning','您还未选择任何账单!');
            }else{
              that.hintInfo('success','添加成功!');
              //tableData_check_out_transit  这个就是主页上的表格,这个数据是用户选择的数  据,触发的函数是@selection-change ,
              //tableData_check_out是购物车里面的table 
              that.tableData_check_out = that.tableData_check_out_transit;
              //to_check_out 进行移除操作的时候可以直接进行计数
              that.to_check_out = that.tableData_check_out.length;
            }
          },
          /**
           * @open_goods 打开结账栏  用于计算需要支付的账单
           */
           open_goods(){
            let that = this;
            that.calculate();
          },
          /**
           * @calculate 计算总金额
           */
           calculate(){
            let that = this;
            let count = 0;
            that.separate_id = [];
            that.tableData_check_out.map((res)=>{
              count = count + res.charge_amount;
              that.separate_id.push(res.id); //将用户选择的当前行的id拿到,作为参数
              console.info(res.charge_amount);
            });
            that.count_settle = count;
            console.info(that.count_settle);
            console.info(that.separate_id);
          },
           /**
           * @removeRow 待结账栏移除操作   购物车h5 中table的移除的操作
           */
          removeRow(index, row, TableData){
            let that = this;
            TableData.splice(index, 1);
            if(that.to_check_out > 0){
               that.to_check_out -- ;
               that.hintInfo('success', '移除成功!');
               that.calculate();//将数据重新计算  这里是计算结账的价格
               that.toggleSelection(row); //移除需要的移除的元素  
            }else{
               that.hintInfo('warning', '没有数据!');
            }
          },
    
    <!--结账栏H5-->
        <el-dialog
        
        :visible.sync="dialog_settle"
        width="40%">
        <el-table
          :data="tableData_check_out"
          height="400px"
          size="mini"
          :cell-style="{textAlign:'center'}"
          :header-cell-style="{background:'#303A41',color:'#fff',fontSize:'x-small',textAlign:'center'}"
          style="width: 100%">
          <el-table-column
            prop="account_id"
            type="index"
            label="序号">
          </el-table-column>
          <el-table-column
            prop="account_id.id"
            label="主账id">
          </el-table-column>
          <el-table-column
            prop="code_income_type_id.name"
            label="入账代码">
          </el-table-column>
          <el-table-column
            prop="biz_date"
            label="营业日期">
          </el-table-column>
          <el-table-column
            prop="charge_amount"
            label="消费金额">
          </el-table-column>
          <el-table-column
            prop="pay_status"
            label="支付状态">
            <template slot-scope="scope">
              <span v-if="scope.row.pay_status === 0">未支付</span>
              <span v-else-if="scope.row.pay_status === 1">已支付</span>
              <span v-else-if="scope.row.pay_status === 2">异常</span>
              <span v-else>无数据</span>
            </template>
          </el-table-column>
          <el-table-column
            fixed="right"
            label="操作">
            <template slot-scope="scope">
              <el-button
                @click.native.prevent="removeRow(scope.$index, scope.row,tableData_check_out)"
                type="text"
                size="small">
                移除
              </el-button>
            </template>
          </el-table-column>
        </el-table>
    
    第二种:效果预览

    vue+element-购物车的操作vue+element-购物车的操作

    思路分析

    这种购物车和上面的不一样,相对来说会难一点,难点在怎么在点击相同的物品的时候直接新加一个,而不是新加一列,那么我们需要做的就是,用户点击了某一列的时候,我们拿到这个数据的id,和上面的表格进行比对,判断是不是已经存在了,如果存在,那么直接进行数量加一,不新加一列。反之加一列

    代码分析
    //merchandise_name 函数是点击切换option的时候触发的函数
    merchandise_name(value){
              let that =this;
              console.log(value);
              that.$axios({
                url:that.api.api_9530_9503+"/v1/stock/product_product/get/"+value,
                method: "get",
              }).then(res=>{
                  if(res.data.message==="success"){
                    console.log(res);
                    res.data.data.account_number=1;
                    res.data.data.money=res.data.data.list_price;//计算价格
                    let ayy = {};
                    for(let i of that.account_arr){
                        ayy[i.id] = i.name;
                    }
                    if(value in ayy){
                      //nothing...
                    }
                    else{
                      that.account_arr.push(res.data.data);
                      that.merchandise_list_data = that.account_arr;
                    }
                    console.log("step");
                  }
                })
                .catch(error => {
                    console.error(error)
                });
              //处理的是如果存在的话直接进行数字加一
              for(let i =0;i< that.account_arr.length;i++){
                 if(value === that.account_arr[i].id){
                   console.log("重复");
                   console.log(that.account_arr[i].account_number);
                   that.account_arr[i].account_number+=1;
                 }else {
                   //nothing....
                 }
              }
              that.merchandise_list_data= that.account_arr;
            },
    

    下载网 » vue+element-购物车的操作

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元