免费国产欧美国日产_少妇AV一区二区三区无码_蜜桃精品av无码喷奶水小说_jk18禁网站视频_精产国品一二三级产品区别_被夫の上司に犯波多野结衣_78m成人手机免费看_最爽最刺激18禁视频_偷偷色噜狠狠狠狠的777米奇

小程序購(gòu)物車操作

小程序購(gòu)物車操作

用于小程序購(gòu)物車操作(數(shù)量遞增、數(shù)量遞減、選中單個(gè)、取消單個(gè)、選中全部、取消全部、刪除)


使用步驟

第一步:配置接口地址

config.js 文件中找到 config 設(shè)置

第二步:檢查接口定義

搜索 shop_cart_action 接口是否已經(jīng)存在定義(有的小程序模板已經(jīng)定義)

如果沒(méi)有定義,在 config 底部新增以下代碼:

shopCartActionUrl: getApiUrl('shop_cart_action'),

并復(fù)制紅色部分待用。如果已經(jīng)存在,則直接復(fù)制使用即可。

第三步:接口調(diào)用請(qǐng)求

如果定義名稱不同,使用第二步復(fù)制的內(nèi)容替換紅框部分

/**
* 遞增指定的商品數(shù)量
* 接收參數(shù)
* e 點(diǎn)擊對(duì)象參數(shù)
* 接口傳參
* action: 操作方法(數(shù)量遞增(add))
* product_id: 操作商品ID
* spec_value_id: 操作商品規(guī)格ID
*/
onAddCount(e) {
    let _this = this,
        index = e.currentTarget.dataset.index,
        cart_list = _this.data.cart_list,
        cartListData = _this.data.cart_list[index];
    cartListData['product_num']++;
    cart_list[index] = cartListData;
    // 后端同步更新
    wx.showLoading({title: '加載中', mask: true});
    let postData = {
        action: 'add',
        product_id: cartListData.product_id,
        spec_value_id: cartListData.spec_value_id
    };
    App._requestApi(_this, App.globalData.config.shopCartActionUrl, postData,
        function (result) {
            _this.updateTotalPrice(cart_list);
            wx.hideLoading();
        }
    );
},
/**
* 遞減指定的商品數(shù)量
* 接收參數(shù)
* e 點(diǎn)擊對(duì)象參數(shù)
* 接口傳參
* action: 操作方法(數(shù)量遞減(less))
* product_id: 操作商品ID
* spec_value_id: 操作商品規(guī)格ID
*/
onSubCount(e) {
    let _this = this,
        index = e.currentTarget.dataset.index,
        cart_list = _this.data.cart_list,
        cartListData = _this.data.cart_list[index];
    if (1 >= cartListData['product_num']) return false;
    cartListData['product_num']--;
    cart_list[index] = cartListData;
    // 后端同步更新
    wx.showLoading({title: '加載中', mask: true});
    let postData = {
        action: 'less',
        product_id: cartListData.product_id,
        spec_value_id: cartListData.spec_value_id
    };
    App._requestApi(_this, App.globalData.config.shopCartActionUrl, postData,
        function (result) {
            _this.updateTotalPrice(cart_list);
            wx.hideLoading();
        }
    );
},
/**
* 選中單個(gè)or取消單個(gè)
* 接口傳參
* action: 操作方法(selected)
* selected: 操作商品選中狀態(tài)
* product_id: 操作商品ID
* spec_value_id: 操作商品規(guī)格ID
*/
onChecked(e) {
    let _this = this,
        index = e.currentTarget.dataset.index,
        cart_list = _this.data.cart_list,
        cartListData = _this.data.cart_list[index];
    wx.showLoading({title: '加載中', mask: true});
    let postData = {
        action: 'selected',
        selected: cartListData.selected,
        product_id: cartListData.product_id,
        spec_value_id: cartListData.spec_value_id
    };
    App._requestApi(_this, App.globalData.config.shopCartActionUrl, postData,
        function (result) {
            cartListData['selected'] = cartListData['selected'] == 1 ? 0 : 1;
            cart_list[index] = cartListData;
            _this.updateTotalPrice(cart_list);
            wx.hideLoading();
        }
    );
},
/**
* 選中全部or取消全部
* 接口傳參
* action: 操作方法(all_selected)
* all_selected: 全部商品選中 or 全部商品取消
*/
onCheckedAll(e) {
    let _this = this,
        cart_list = _this.data.cart_list;
    wx.showLoading({title: '加載中', mask: true});
    let postData = {
        action: 'all_selected',
        all_selected: !_this.data.checkedAll ? 1 : 0
    };
    App._requestApi(_this, App.globalData.config.shopCartActionUrl, postData,
        function (result) {
            cart_list.forEach(item => {
                item.selected = !_this.data.checkedAll ? 1 : 0
            });
            _this.setData({ cart_list, checkedAll: !_this.data.checkedAll ? 1 : 0 });
            _this.updateTotalPrice(cart_list);
            wx.hideLoading();
        }
    );
},
/**
* 購(gòu)物車商品刪除
* 接口傳參
* action: 操作方法(del)
* cart_id: 購(gòu)物車商品ID
*/
onDelete(e) {
    let _this = this;
    let cart_ids = [e.currentTarget.dataset.aid];
    wx.showLoading({title: '加載中', mask: true});
    let postData = {
        action: 'del',
        cart_id: cart_ids
    };
    App._requestPost(_this, App.globalData.config.shopCartActionUrl, postData,
        function (result) {
            _this.getCartList();
            App.showSuccess('刪除成功');
            wx.hideLoading();
        },
        function (result) {
            App.showError(result.msg);
        }
    );
},
/**
* 更新購(gòu)物車已選商品總價(jià)格
*/
updateTotalPrice(cart_list) {
    let _this = this;
    let cart_list_length = 0;
    let cartTotalPrice = 0;
    if (cart_list.length > 0) {
        cart_list.forEach(item => {
            if (1 == item.selected) {
                cart_list_length++;
                cartTotalPrice += (Number(item.users_price) * Number(item.product_num));
            }
        });
    } else {
        let cart_list = [];
    }
    _this.setData({
        cart_list,
        cartTotalPrice: cartTotalPrice.toFixed(2),
        checkedAll: cart_list_length == cart_list.length
    });
},

接口傳值

action:操作方法,必傳

    add - 數(shù)量遞增

    less - 數(shù)量遞減

    selected - 選中單個(gè)/取消單個(gè)

    all_selected - 選中全部/取消全部

    del - 刪除

product_id:商品ID,遞增/遞減/選中時(shí)必傳

spec_value_id:商品規(guī)格ID,遞增/遞減/選中時(shí)必傳

selected:商品選中狀態(tài),選中單個(gè)時(shí)必傳

all_selected:全部選中狀態(tài)(1選中/0取消),選中全部時(shí)必傳

cart_id:購(gòu)物車商品ID,刪除時(shí)必傳


文檔最后更新時(shí)間:2026-01-13 15:28:43

文檔
目錄

深色
模式

切換
寬度