La fonction de passer une commande pour un produit
Découvrez tous les produits, cliquez pour passer une commande, puis ajoutez les produits commandés au panier Le panier n'a pas besoin d'être enregistré
La quantité du produit peut. être modifié et le prix total peut être calculé. Maintenant, le calcul dans ma méthode est exécuté. Mais lorsque vous cliquez sur le signe plus ou moins sur la page, la quantité et le prix total ne changeront pas dans la liste des données de requête, il n'y a pas de quantité. et les champs de prix total Voici les champs que j'ai définis moi-même
<el-table-column label="數(shù)量" width="220" >
<template scope="scope">
<el-input v-model="scope.row.count" :value="scope.row.count" @change="changeCount(scope.row)" :min="1" :max="scope.row.num">
<el-button slot="prepend" @click="changeQuantity(scope.row,-1)"><i class="el-icon-minus"></i></el-button>
<el-button slot="append" @click="changeQuantity(scope.row,1)"><i class="el-icon-plus"></i></el-button>
</el-input>
<br />
<span style="color:#999;display: block; text-align: center;">庫存{{scope.row.num}}件</span>
</template>
</el-table-column>
<el-table-column prop="price" label="單價(jià)" width="100"></el-table-column>
<el-table-column prop="totalPrice" label="總價(jià)" width="150" v-model="cartListData.totalPrice"></el-table-column>
count: undefined,
totalPrice: 0,
//下單商品列表
getCartData() {
this.$axios({
url: this.path + 'product/getByList',
method: 'get',
params: this.cartListQuery,
transformRequest: [function(params) {
let ret = ''
for(let it in params) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(params[it]) + '&'
}
return ret
}],
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
.then((res) => {
this.cartNum //下單商品的長度
this.cartListData = res.data;
this.cartListData.forEach(function(data,index){
data.count = 1; //默認(rèn)一個(gè)商品
data.totalPrice= (data.price * parseInt(data.count)).toFixed(2);
//商品總價(jià)
});
})
.catch((err) => {
console.log(err);
})
},
//加減號
changeQuantity(row, type){
if( type > 0 ){
row.count++;
}else{
row.count > 1 ? row.count--: row.count = 1;
}
this.changeCount(row);
},
//數(shù)量文本框值改變
changeCount (row) {
if(null == row.count || row.count == ""){
row.count=1;
}
row.totalPrice = (row.count * row.price).toFixed(2);//保留兩位小數(shù)
console.log(row.totalPrice+" = "+ row.count +" * "+ row.price)
//增加商品數(shù)量也需要重新計(jì)算商品總價(jià)
},
changeCount (row) {
const index = this.cartListData.indexOf(row);
this.cartListData.splice(index,1,row); //需要更新一下table數(shù)據(jù)
if(null == row.count || row.count == ""){
row.count=1;
}
row.totalPrice = (row.count * row.price).toFixed(2);//保留兩位小數(shù)
console.log(row.totalPrice+" = "+ row.count +" * "+ row.price)
//增加商品數(shù)量也需要重新計(jì)算商品總價(jià)
}
Première question, la capture d'écran de votre code de question est incomplète
Deuxième question, votre v-modèle du prix total cartListData
的totalPrice,而你的method里面設(shè)置的是row
的totalPrice,你確定你的cartListData
與row
est-il le même objet ?