!131 【缺陷修复】购物车提交的校验、bgStyle 样式

Merge pull request !131 from puhui999/dev
develop
芋道源码 2024-12-19 12:39:47 +00:00 committed by Gitee
commit 75d0b004dc
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
14 changed files with 68 additions and 47 deletions

View File

@ -1,6 +1,6 @@
<!-- 拼团活动列表 -->
<template>
<s-layout :bgStyle="{ backgroundColor: '#FE832A' }" navbar="inner">
<s-layout :bgStyle="{ color: '#FE832A' }" navbar="inner">
<view class="page-bg" :style="[{ marginTop: '-' + Number(statusBarHeight + 88) + 'rpx' }]" />
<view class="list-content">
<!-- 参团会员统计 -->

View File

@ -1,6 +1,6 @@
<!-- 秒杀活动列表 -->
<template>
<s-layout :bgStyle="{ backgroundColor: 'rgb(245,28,19)' }" navbar="inner">
<s-layout :bgStyle="{ color: 'rgb(245,28,19)' }" navbar="inner">
<!--顶部背景图-->
<view
class="page-bg"

View File

@ -1,6 +1,6 @@
<!-- 优惠券中心 -->
<template>
<s-layout :bgStyle="{ backgroundColor: '#f2f2f2' }" title="优惠券">
<s-layout :bgStyle="{ color: '#f2f2f2' }" title="优惠券">
<su-sticky bgColor="#fff">
<su-tabs
:list="tabMaps"

View File

@ -1,5 +1,5 @@
<template>
<s-layout :bgStyle="{ backgroundColor: '#fff' }" tabbar="/pages/index/cart" title="购物车">
<s-layout :bgStyle="{ color: '#fff' }" tabbar="/pages/index/cart" title="购物车">
<s-empty
v-if="state.list.length === 0"
icon="/static/cart-empty.png"
@ -109,7 +109,6 @@
import { computed, reactive } from 'vue';
import { fen2yuan } from '@/sheep/hooks/useGoods';
import { isEmpty } from '@/sheep/helper/utils';
import { DeliveryTypeEnum } from '@/sheep/util/const';
const sys_navBar = sheep.$platform.navbar;
const cart = sheep.$store('cart');
@ -158,37 +157,60 @@
});
}
/** 校验配送方式 */
function validateDeliveryType(spuIds) {
return new Promise(async (resolve, reject) => {
const { data } = await SpuApi.getSpuListByIds(spuIds.join(','));
if (isEmpty(data)) {
reject('获取商品信息失败!!!');
return;
}
let onlyExpress = false; //
let onlyPickup = false; //
// TODO @puhui999A B A B
const deliveryTypes = data.map((item) => item.deliveryTypes);
for (const deliveryType of deliveryTypes) {
//
if (deliveryType.length > 1) {
continue;
}
//
if (deliveryType[0] === DeliveryTypeEnum.EXPRESS.type) {
onlyExpress = true;
} else if (deliveryType[0] === DeliveryTypeEnum.PICK_UP.type) {
onlyPickup = true;
/**
* 校验配送方式冲突
*
* @param {string[]} spuIds - 商品ID数组
* @returns {Promise<void>}
* @throws {Error} 当配送方式冲突或获取商品信息失败时抛出错误
*/
async function validateDeliveryType(spuIds) {
//
const { data: spuList } = await SpuApi.getSpuListByIds(spuIds.join(','));
if (isEmpty(spuList)) {
sheep.$helper.toast('未找到商品信息');
throw new Error('未找到商品信息');
}
//
const deliveryTypesList = spuList.map(item => item.deliveryTypes);
//
const hasConflict = checkDeliveryConflicts(deliveryTypesList);
if (hasConflict) {
sheep.$helper.toast('选中商品支持的配送方式冲突,不允许提交');
throw new Error('选中商品支持的配送方式冲突,不允许提交');
}
}
/**
* 检查配送方式列表中是否存在冲突
* @description
* 示例场景:
* A 商品支持[快递, 自提]
* B 商品支持[快递]
* C 商品支持[自提]
*
* 对比结果:
* A B不冲突 (有交集快递)
* A C不冲突 (有交集自提)
* B C冲突 (无交集)
* @param {Array<Array<number>>} deliveryTypesList - 配送方式列表的数组
* @returns {boolean} 是否存在冲突
*/
function checkDeliveryConflicts(deliveryTypesList) {
for (let i = 0; i < deliveryTypesList.length - 1; i++) {
const currentTypes = deliveryTypesList[i];
for (let j = i + 1; j < deliveryTypesList.length; j++) {
const nextTypes = deliveryTypesList[j];
//
const hasNoIntersection = !currentTypes.some(type =>
nextTypes.includes(type),
);
if (hasNoIntersection) {
return true;
}
}
if (onlyExpress || onlyPickup) {
reject('选中商品存在只支持特定配送方式的情况不允许提交!!!');
sheep.$helper.toast('选中商品存在只支持特定配送方式的情况不允许提交!!!');
return;
}
resolve();
});
}
return false;
}
function onNumberChange(e, cartItem) {

View File

@ -1,6 +1,6 @@
<!-- 商品分类列表 -->
<template>
<s-layout :bgStyle="{ backgroundColor: '#fff' }" tabbar="/pages/index/category" title="分类">
<s-layout :bgStyle="{ color: '#fff' }" tabbar="/pages/index/category" title="分类">
<view class="s-category">
<view class="three-level-wrap ss-flex ss-col-top" :style="[{ height: pageHeight + 'px' }]">
<!-- 商品分类 -->

View File

@ -1,6 +1,6 @@
<!-- 搜索界面 -->
<template>
<s-layout :bgStyle="{ backgroundColor: '#FFF' }" class="set-wrap" title="搜索">
<s-layout :bgStyle="{ color: '#FFF' }" class="set-wrap" title="搜索">
<view class="ss-p-x-24">
<view class="ss-flex ss-col-center">
<uni-search-bar

View File

@ -1,6 +1,6 @@
<!-- 支付结果页面 -->
<template>
<s-layout :bgStyle="{ backgroundColor: '#FFF' }" title="支付结果">
<s-layout :bgStyle="{ color: '#FFF' }" title="支付结果">
<view class="pay-result-box ss-flex-col ss-row-center ss-col-center">
<!-- 信息展示 -->
<view class="pay-waiting ss-m-b-30" v-if="payResult === 'waiting'" />

View File

@ -1,6 +1,6 @@
<!-- FAQ 常见问题 -->
<template>
<s-layout :bgStyle="{ backgroundColor: '#FFF' }" class="set-wrap" title="常见问题">
<s-layout :bgStyle="{ color: '#FFF' }" class="set-wrap" title="常见问题">
<uni-collapse>
<uni-collapse-item v-for="(item, index) in state.list" :key="item">
<template v-slot:title>

View File

@ -1,6 +1,6 @@
<!-- 文章展示 -->
<template>
<s-layout :bgStyle="{ backgroundColor: '#FFF' }" :title="state.title" class="set-wrap">
<s-layout :bgStyle="{ color: '#FFF' }" :title="state.title" class="set-wrap">
<view class="ss-p-30">
<mp-html class="richtext" :content="state.content" />
</view>

View File

@ -1,5 +1,5 @@
<template>
<s-layout :bgStyle="{ backgroundColor: '#fff' }" class="set-wrap" title="系统设置">
<s-layout :bgStyle="{ color: '#fff' }" class="set-wrap" title="系统设置">
<view class="header-box ss-flex-col ss-row-center ss-col-center">
<image
class="logo-img ss-m-b-46"

View File

@ -1,6 +1,6 @@
<!-- 收件地址列表 -->
<template>
<s-layout :bgStyle="{ backgroundColor: '#FFF' }" title="收货地址">
<s-layout :bgStyle="{ color: '#FFF' }" title="收货地址">
<view v-if="state.list.length">
<s-address-item
hasBorderBottom

View File

@ -1,6 +1,6 @@
<!-- 商品浏览记录 -->
<template>
<s-layout :bgStyle="{ backgroundColor: '#f2f2f2' }" title="我的足迹">
<s-layout :bgStyle="{ color: '#f2f2f2' }" title="我的足迹">
<view class="cart-box ss-flex ss-flex-col ss-row-between">
<!-- 头部 -->
<view class="cart-header ss-flex ss-col-center ss-row-between ss-p-x-30">

View File

@ -1,5 +1,5 @@
<template>
<s-layout :bgStyle="{ backgroundColor: '#FFF' }" title="选择自提门店">
<s-layout :bgStyle="{ color: '#FFF' }" title="选择自提门店">
<view class="storeBox" ref="container">
<view
class="storeBox-box"

View File

@ -107,7 +107,7 @@
type: Object,
default: () => ({
src: '',
backgroundColor: 'var(--ui-BG-1)',
color: 'var(--ui-BG-1)',
}),
},
tabbar: {
@ -153,11 +153,10 @@
});
// 1
// TODO puhui999 color~
const bgMain = computed(() => {
if (navbarMode.value === 'inner') {
return {
background: `${props.bgStyle.backgroundColor} url(${sheep.$url.cdn(
background: `${props.bgStyle.backgroundColor || props.bgStyle.color} url(${sheep.$url.cdn(
props.bgStyle.backgroundImage,
)}) no-repeat top center / 100% auto`,
};
@ -169,7 +168,7 @@
const bgBody = computed(() => {
if (navbarMode.value === 'normal') {
return {
background: `${props.bgStyle.backgroundColor} url(${sheep.$url.cdn(
background: `${props.bgStyle.backgroundColor || props.bgStyle.color} url(${sheep.$url.cdn(
props.bgStyle.backgroundImage,
)}) no-repeat top center / 100% auto`,
};