|
@@ -77,23 +77,23 @@
|
|
|
<view v-if="item.attrStatus">
|
|
<view v-if="item.attrStatus">
|
|
|
<view
|
|
<view
|
|
|
class="carnum acea-row row-center-wrapper"
|
|
class="carnum acea-row row-center-wrapper"
|
|
|
- v-if="item.editNum"
|
|
|
|
|
|
|
+ v-show="item.editNum"
|
|
|
>
|
|
>
|
|
|
<view
|
|
<view
|
|
|
class="reduce"
|
|
class="reduce"
|
|
|
:class="item.numSub ? 'on' : ''"
|
|
:class="item.numSub ? 'on' : ''"
|
|
|
- @click.stop="subCart(index)"
|
|
|
|
|
|
|
+ @click.stop="subCart(item.id, merchantIndex, index)"
|
|
|
>-</view
|
|
>-</view
|
|
|
>
|
|
>
|
|
|
<view class="num">{{ item.cartNum }}</view>
|
|
<view class="num">{{ item.cartNum }}</view>
|
|
|
<view
|
|
<view
|
|
|
class="plus"
|
|
class="plus"
|
|
|
:class="item.numAdd ? 'on' : ''"
|
|
:class="item.numAdd ? 'on' : ''"
|
|
|
- @click.stop="addCart(index)"
|
|
|
|
|
|
|
+ @click.stop="addCart(item.id, merchantIndex, index)"
|
|
|
>+</view
|
|
>+</view
|
|
|
>
|
|
>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="carnumTag" v-if="!item.editNum" @click.stop="item.editNum = true">
|
|
|
|
|
|
|
+ <view class="carnumTag" v-show="!item.editNum" @click.stop="item.editNum = true">
|
|
|
X{{ item.cartNum }}
|
|
X{{ item.cartNum }}
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -337,7 +337,7 @@
|
|
|
@submit="handleSubmit"
|
|
@submit="handleSubmit"
|
|
|
@myevent="onMyEvent"
|
|
@myevent="onMyEvent"
|
|
|
@ChangeAttr="ChangeAttr"
|
|
@ChangeAttr="ChangeAttr"
|
|
|
- @ChangeCartNum="ChangeCartNum"
|
|
|
|
|
|
|
+ @ChangeCartNum="ChangeCartNumFn"
|
|
|
@attrVal="attrVal"
|
|
@attrVal="attrVal"
|
|
|
@iptCartNum="iptCartNum"
|
|
@iptCartNum="iptCartNum"
|
|
|
id="product-window"
|
|
id="product-window"
|
|
@@ -453,9 +453,10 @@ onShow(() => {
|
|
|
hotLimit.value = 10;
|
|
hotLimit.value = 10;
|
|
|
cartList.valid = [];
|
|
cartList.valid = [];
|
|
|
cartList.invalid = [];
|
|
cartList.invalid = [];
|
|
|
- isAllSelect.value = false;
|
|
|
|
|
- selectValue.value = [];
|
|
|
|
|
- selectCountPrice.value = 0.0;
|
|
|
|
|
|
|
+ // 不要重置选中状态
|
|
|
|
|
+ // isAllSelect.value = false;
|
|
|
|
|
+ // selectValue.value = [];
|
|
|
|
|
+ // selectCountPrice.value = 0.0;
|
|
|
cartCount.value = 0;
|
|
cartCount.value = 0;
|
|
|
isShowAuth.value = false;
|
|
isShowAuth.value = false;
|
|
|
}
|
|
}
|
|
@@ -703,7 +704,7 @@ function attrVal(val) {
|
|
|
attr.productAttr[val.indexw].attrValues[val.indexn];
|
|
attr.productAttr[val.indexw].attrValues[val.indexn];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function ChangeCartNum(changeValue) {
|
|
|
|
|
|
|
+function ChangeCartNumFn(changeValue) {
|
|
|
let productSelect = productValue.value[attrValue.value];
|
|
let productSelect = productValue.value[attrValue.value];
|
|
|
if (productSelect === undefined && !attr.productAttr.length)
|
|
if (productSelect === undefined && !attr.productAttr.length)
|
|
|
productSelect = attr.productSelect;
|
|
productSelect = attr.productSelect;
|
|
@@ -912,36 +913,15 @@ function setAllSelectValue(status) {
|
|
|
|
|
|
|
|
function checkboxChange(value) {
|
|
function checkboxChange(value) {
|
|
|
const valid = cartList.valid;
|
|
const valid = cartList.valid;
|
|
|
- let checkedItems = [];
|
|
|
|
|
- let uncheckedItems = [];
|
|
|
|
|
- let invalidItems = [];
|
|
|
|
|
|
|
|
|
|
|
|
+ // 更新所有商品的选中状态
|
|
|
valid.forEach(item => {
|
|
valid.forEach(item => {
|
|
|
- if (value.includes(item.id)) {
|
|
|
|
|
- if (footerswitch.value) {
|
|
|
|
|
- if (item.attrStatus) {
|
|
|
|
|
- item.checked = true;
|
|
|
|
|
- checkedItems.push(item);
|
|
|
|
|
- } else {
|
|
|
|
|
- item.checked = false;
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- item.checked = true;
|
|
|
|
|
- checkedItems.push(item);
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- item.checked = false;
|
|
|
|
|
- uncheckedItems.push(item);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ item.checked = value.includes(item.id);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- if (footerswitch.value) {
|
|
|
|
|
- invalidItems = uncheckedItems.filter(item => !item.attrStatus);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
cartList.valid = [...valid];
|
|
cartList.valid = [...valid];
|
|
|
- // isAllSelect.value = valid.length === checkedItems.length + invalidItems.length;
|
|
|
|
|
selectValue.value = value;
|
|
selectValue.value = value;
|
|
|
|
|
+
|
|
|
// 计算全选状态
|
|
// 计算全选状态
|
|
|
if (footerswitch.value) {
|
|
if (footerswitch.value) {
|
|
|
// 结算模式下,只计算有效商品
|
|
// 结算模式下,只计算有效商品
|
|
@@ -967,19 +947,33 @@ function switchSelect() {
|
|
|
const validList = cartList.valid;
|
|
const validList = cartList.valid;
|
|
|
const selectValueArr = selectValue.value;
|
|
const selectValueArr = selectValue.value;
|
|
|
let selectCount = 0.0;
|
|
let selectCount = 0.0;
|
|
|
|
|
+
|
|
|
|
|
+ console.log('switchSelect called', {
|
|
|
|
|
+ validListLength: validList.length,
|
|
|
|
|
+ selectValueArrLength: selectValueArr.length,
|
|
|
|
|
+ selectValueArr: selectValueArr
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
if (selectValueArr.length < 1) {
|
|
if (selectValueArr.length < 1) {
|
|
|
- selectCountPrice.value = selectCount;
|
|
|
|
|
|
|
+ selectCountPrice.value = '0.00';
|
|
|
} else {
|
|
} else {
|
|
|
for (let index in validList) {
|
|
for (let index in validList) {
|
|
|
if (inArray(validList[index].id, selectValueArr)) {
|
|
if (inArray(validList[index].id, selectValueArr)) {
|
|
|
- selectCount = util.$h.Add(
|
|
|
|
|
- selectCount,
|
|
|
|
|
- util.$h.Mul(validList[index].cartNum, validList[index].storePrice)
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ console.log('Calculating item:', {
|
|
|
|
|
+ id: validList[index].id,
|
|
|
|
|
+ cartNum: validList[index].cartNum,
|
|
|
|
|
+ storePrice: validList[index].storePrice,
|
|
|
|
|
+ checked: validList[index].checked
|
|
|
|
|
+ });
|
|
|
|
|
+ const itemTotal = util.$h.Mul(validList[index].cartNum, validList[index].storePrice);
|
|
|
|
|
+ selectCount = util.$h.Add(selectCount, itemTotal);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- selectCountPrice.value = selectCount;
|
|
|
|
|
|
|
+ // 保留两位小数
|
|
|
|
|
+ selectCountPrice.value = selectCount.toFixed(2);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ console.log('Final selectCountPrice:', selectCountPrice.value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function iptCartNumInput(index) {
|
|
function iptCartNumInput(index) {
|
|
@@ -997,10 +991,11 @@ function blurInput(index) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function subCart(index) {
|
|
|
|
|
|
|
+function subCart(cartIdVal, merchantIndex, productIndex) {
|
|
|
|
|
+ const item = groupedCartList.value[merchantIndex].products[productIndex];
|
|
|
let status = false;
|
|
let status = false;
|
|
|
- const item = cartList.valid[index];
|
|
|
|
|
item.cartNum = Number(item.cartNum) - 1;
|
|
item.cartNum = Number(item.cartNum) - 1;
|
|
|
|
|
+
|
|
|
if (item.cartNum < 1) status = true;
|
|
if (item.cartNum < 1) status = true;
|
|
|
if (item.cartNum <= 1) {
|
|
if (item.cartNum <= 1) {
|
|
|
item.cartNum = 1;
|
|
item.cartNum = 1;
|
|
@@ -1009,18 +1004,20 @@ function subCart(index) {
|
|
|
item.numSub = false;
|
|
item.numSub = false;
|
|
|
item.numAdd = false;
|
|
item.numAdd = false;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
if (false == status) {
|
|
if (false == status) {
|
|
|
setCartNum(item.id, item.cartNum, function (data) {
|
|
setCartNum(item.id, item.cartNum, function (data) {
|
|
|
- cartList.valid[index] = item;
|
|
|
|
|
switchSelect();
|
|
switchSelect();
|
|
|
getCartNum();
|
|
getCartNum();
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function addCart(index) {
|
|
|
|
|
- const item = cartList.valid[index];
|
|
|
|
|
|
|
+function addCart(cartIdVal, merchantIndex, productIndex) {
|
|
|
|
|
+ console.log(cartIdVal)
|
|
|
|
|
+ const item = groupedCartList.value[merchantIndex].products[productIndex];
|
|
|
item.cartNum = Number(item.cartNum) + 1;
|
|
item.cartNum = Number(item.cartNum) + 1;
|
|
|
|
|
+
|
|
|
if (item.cartNum >= item.stock) {
|
|
if (item.cartNum >= item.stock) {
|
|
|
item.cartNum = item.stock;
|
|
item.cartNum = item.stock;
|
|
|
item.numAdd = true;
|
|
item.numAdd = true;
|
|
@@ -1029,8 +1026,9 @@ function addCart(index) {
|
|
|
item.numAdd = false;
|
|
item.numAdd = false;
|
|
|
item.numSub = false;
|
|
item.numSub = false;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
setCartNum(item.id, item.cartNum, function (data) {
|
|
setCartNum(item.id, item.cartNum, function (data) {
|
|
|
- cartList.valid[index] = item;
|
|
|
|
|
|
|
+ // 更新UI
|
|
|
switchSelect();
|
|
switchSelect();
|
|
|
getCartNum();
|
|
getCartNum();
|
|
|
});
|
|
});
|
|
@@ -1051,16 +1049,24 @@ function getCartNum() {
|
|
|
function getCartData(data) {
|
|
function getCartData(data) {
|
|
|
return new Promise((resolve, reject) => {
|
|
return new Promise((resolve, reject) => {
|
|
|
getCartList(data)
|
|
getCartList(data)
|
|
|
- .then((res) => {
|
|
|
|
|
- resolve(res.data);
|
|
|
|
|
- })
|
|
|
|
|
- .catch(function (err) {
|
|
|
|
|
- loading.value = false;
|
|
|
|
|
- canShow.value = true;
|
|
|
|
|
- Toast({
|
|
|
|
|
- title: err,
|
|
|
|
|
|
|
+ .then((res) => {
|
|
|
|
|
+ // 加载数据后,同步选中状态
|
|
|
|
|
+ const data = res.data;
|
|
|
|
|
+ if (data.list && data.list.length > 0) {
|
|
|
|
|
+ data.list.forEach(item => {
|
|
|
|
|
+ // 如果这个商品ID在选中列表中,设置checked为true
|
|
|
|
|
+ item.checked = selectValue.value.includes(item.id);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ resolve(data);
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch(function (err) {
|
|
|
|
|
+ loading.value = false;
|
|
|
|
|
+ canShow.value = true;
|
|
|
|
|
+ Toast({
|
|
|
|
|
+ title: err,
|
|
|
|
|
+ });
|
|
|
});
|
|
});
|
|
|
- });
|
|
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1084,6 +1090,7 @@ async function getCartListFn() {
|
|
|
let valid = cartListData.list;
|
|
let valid = cartListData.list;
|
|
|
let validList = [...cartList.valid, ...valid];
|
|
let validList = [...cartList.valid, ...valid];
|
|
|
let selectValueArr = [];
|
|
let selectValueArr = [];
|
|
|
|
|
+
|
|
|
if (validList.length > 0) {
|
|
if (validList.length > 0) {
|
|
|
for (let index in validList) {
|
|
for (let index in validList) {
|
|
|
// 购物车加减状态
|
|
// 购物车加减状态
|
|
@@ -1106,9 +1113,13 @@ async function getCartListFn() {
|
|
|
|
|
|
|
|
// attrStatus 判断商品是否有效
|
|
// attrStatus 判断商品是否有效
|
|
|
if (validList[index].attrStatus) {
|
|
if (validList[index].attrStatus) {
|
|
|
- // validList[index].checked = true;
|
|
|
|
|
- // selectValueArr.push(validList[index].id);
|
|
|
|
|
- validList[index].checked = false;
|
|
|
|
|
|
|
+ // 关键修改:根据 selectValue 中的ID来设置选中状态
|
|
|
|
|
+ if (selectValue.value.includes(validList[index].id)) {
|
|
|
|
|
+ validList[index].checked = true;
|
|
|
|
|
+ selectValueArr.push(validList[index].id);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ validList[index].checked = false;
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
validList[index].checked = false;
|
|
validList[index].checked = false;
|
|
|
}
|
|
}
|
|
@@ -1116,12 +1127,12 @@ async function getCartListFn() {
|
|
|
}
|
|
}
|
|
|
cartList.valid = validList;
|
|
cartList.valid = validList;
|
|
|
data.page += 1;
|
|
data.page += 1;
|
|
|
- selectValue.value = selectValueArr;
|
|
|
|
|
|
|
+ // 不要重置 selectValue,保持原来的选中状态
|
|
|
|
|
+ // selectValue.value = selectValueArr;
|
|
|
|
|
+
|
|
|
let newArr = validList.filter((item) => item.attrStatus);
|
|
let newArr = validList.filter((item) => item.attrStatus);
|
|
|
// 全选状态
|
|
// 全选状态
|
|
|
- // isAllSelect.value =
|
|
|
|
|
- // newArr.length == selectValueArr.length && newArr.length;
|
|
|
|
|
- isAllSelect.value = false;
|
|
|
|
|
|
|
+ isAllSelect.value = newArr.length > 0 && selectValue.value.length === newArr.length;
|
|
|
switchSelect();
|
|
switchSelect();
|
|
|
}
|
|
}
|
|
|
loading.value = false;
|
|
loading.value = false;
|