From b7d4ac04280f207efcac139d342d578a1ee8cb03 Mon Sep 17 00:00:00 2001 From: wwl Date: Wed, 27 Mar 2024 19:37:36 +0800 Subject: [PATCH] fix bug --- src/components/sp-goods-item/index.scss | 3 +- src/components/sp-input-number/index.js | 2 +- src/components/sp-sku-select/index.scss | 3 +- src/marketing/pages/member/member-code.js | 4 +- src/pages/cart/espier-index.js | 12 +- src/pages/cart/espier-index.scss | 2 +- src/pages/home/index.scss | 1 + src/pages/index.js | 88 +++++++++++-- src/pages/item/list.js | 16 ++- src/pages/recommend/detail.js | 14 +- src/pages/recommend/status.js | 56 +++++++- src/pages/recommend/status.scss | 152 ++++++++++++++++++++++ src/subpages/member/qa-data/index.js | 11 +- src/subpages/member/qa-page.js | 5 +- 14 files changed, 336 insertions(+), 33 deletions(-) diff --git a/src/components/sp-goods-item/index.scss b/src/components/sp-goods-item/index.scss index f44e332..bec701a 100755 --- a/src/components/sp-goods-item/index.scss +++ b/src/components/sp-goods-item/index.scss @@ -38,7 +38,8 @@ border-radius: 5px; justify-content: center; align-items: center; - border: 1px solid#d0d0d0; + /* prettier-ignore */ + border: 1PX solid#d0d0d0; } } &__bd { diff --git a/src/components/sp-input-number/index.js b/src/components/sp-input-number/index.js index 74d3d25..252205e 100755 --- a/src/components/sp-input-number/index.js +++ b/src/components/sp-input-number/index.js @@ -138,7 +138,7 @@ class AtInputNumber extends AtComponent { style={inputStyle} type={type} value={inputValue} - disabled={disabled} + disabled={true} onInput={this.handleInput} onBlur={this.handleBlur} /> diff --git a/src/components/sp-sku-select/index.scss b/src/components/sp-sku-select/index.scss index 1c42b34..d3a7e1b 100755 --- a/src/components/sp-sku-select/index.scss +++ b/src/components/sp-sku-select/index.scss @@ -133,7 +133,8 @@ // } .at-input-number { - border: 1px solid #999; + /* prettier-ignore */ + border: 1PX solid #999; border-radius: 0; height: 40px; &__input { diff --git a/src/marketing/pages/member/member-code.js b/src/marketing/pages/member/member-code.js index 697c898..4bbebe1 100755 --- a/src/marketing/pages/member/member-code.js +++ b/src/marketing/pages/member/member-code.js @@ -53,7 +53,7 @@ export default class MemberCode extends Component { return ( {gradeInfo.grade_name} {/* */} - + {/* {info.userCardCode} */} 向门店出示二维码 diff --git a/src/pages/cart/espier-index.js b/src/pages/cart/espier-index.js index 8550f37..bd2694b 100755 --- a/src/pages/cart/espier-index.js +++ b/src/pages/cart/espier-index.js @@ -293,7 +293,7 @@ function CartIndex () { )} */} - {isLogin && ( + {!loading && isLogin && groupsList?.length > 0 && ( {/* */} @@ -471,14 +471,16 @@ function CartIndex () { )} {/* && invalidCart.length == 0 */} - {validCart.length == 0 && ( + {!loading && validCart.length == 0 && ( {/* 去选购 */} - + + + 购物车还是空的 快去挑选自己喜欢的宝贝吧~ { }}> @@ -532,9 +534,9 @@ function CartIndex () { } {/* 猜你喜欢 */} - + {/* */} - + {/* */} ) } diff --git a/src/pages/cart/espier-index.scss b/src/pages/cart/espier-index.scss index 9fd03e7..2c05a20 100755 --- a/src/pages/cart/espier-index.scss +++ b/src/pages/cart/espier-index.scss @@ -299,7 +299,7 @@ flex-direction: column; justify-content: center; align-items: center; - .sp-image { + .default-img { margin-bottom: 50px; } .at-button { diff --git a/src/pages/home/index.scss b/src/pages/home/index.scss index 61e5dd9..572b615 100755 --- a/src/pages/home/index.scss +++ b/src/pages/home/index.scss @@ -324,6 +324,7 @@ page { flex-direction: column; position: absolute; bottom: 10%; + opacity: 0; &-title { font-size: 40px; color: #fff; diff --git a/src/pages/index.js b/src/pages/index.js index cb5e349..b1420fb 100755 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -213,6 +213,43 @@ function Home () { const { list: BOSTON_List = [] } = await api.item.search({ ...req, tag_id: 5 }) const { list: ARIZONA_List = [] } = await api.item.search({ ...req, tag_id: 6 }) const { list: LONDON_List = [] } = await api.item.search({ ...req, tag_id: 7 }) + const newSort = { + "BK023": 1, + "BK066": 2, + "BK053": 3, + "BK038": 4, + "BK064": 5, + "BK014": 6 + } + const hotSort = { + "BK014": 1, + "BK031": 2, + "BK018": 3, + "BK020": 4, + "BK052": 5, + "BK064": 6, + } + const BOSTON_sort = { + "BK020": 1, + "BK023": 2, + "BK025": 3, + "BK029": 4, + "BK030": 5, + "BK031": 6, + } + const ARIZONA_sort = { + "BK001": 1, + "BK017": 2, + "BK007": 3, + "BK010": 4, + "BK011": 5, + "BK014": 6, + } + const LONDON_sort = { + "BK052": 1, + "BK053": 2, + "BK051": 3, + } setState((draft) => { draft.recommend = [{ type: 'new', @@ -220,32 +257,55 @@ function Home () { btnTxt: '查看更多', postions: 'left', url: '', + tag_id: 4, img: 'index/rec/new.png?v=1', - list: newList.map(item => ({ ...item, price: (item.price / 100) })) + list: newList.map(item => ({ ...item, price: (item.price / 100) })).sort((a, b) => { + return newSort[a.item_name_3] - newSort[b.item_name_3] + }) }, { type: 'hot', text: "热销单品", btnTxt: '查看更多', postions: 'left', url: '', + tag_id: 3, img: 'index/rec/hot.png?v=1', - list: hotList.map(item => ({ ...item, price: (item.price / 100) })) + list: hotList.map(item => ({ ...item, price: (item.price / 100) })).sort((a, b) => { + return hotSort[a.item_name_3] - hotSort[b.item_name_3] + }) }, { type: 'BOSTON', text: "BOSTON", btnTxt: 'BOSTON', - postions: 'right', + postions: 'left', url: '', + tag_id: 5, img: 'index/rec/Boston.png', - list: BOSTON_List.map(item => ({ ...item, price: (item.price / 100) })) + list: BOSTON_List.map(item => ({ ...item, price: (item.price / 100) })).sort((a, b) => { + return BOSTON_sort[a.item_name_3] - BOSTON_sort[b.item_name_3] + }) }, { type: 'ARIZONA', + text: "ARIZONA", + btnTxt: 'ARIZONA', + url: '', + postions: 'left', + tag_id: 6, img: 'index/rec/Arizona.png', - list: ARIZONA_List.map(item => ({ ...item, price: (item.price / 100) })) + list: ARIZONA_List.map(item => ({ ...item, price: (item.price / 100) })).sort((a, b) => { + return ARIZONA_sort[a.item_name_3] - ARIZONA_sort[b.item_name_3] + }) }, { type: 'LONDON', + text: "LONDON", + btnTxt: 'LONDON', + url: '', + postions: 'left', + tag_id: 7, img: 'index/rec/London.png', - list: LONDON_List.map(item => ({ ...item, price: (item.price / 100) })) + list: LONDON_List.map(item => ({ ...item, price: (item.price / 100) })).sort((a, b) => { + return LONDON_sort[a.item_name_3] - LONDON_sort[b.item_name_3] + }) } ] // bak @@ -286,10 +346,11 @@ function Home () { goods: [] })) const res = await api.shop.homeSwiperList({ page: 1, pageSize: 999 }) - const list = res?.list?.map((item) => { + const list = (res?.list?.map((item) => { return { type: item.type || 'image', src: item.pic, + sort: item.sort, goods: (item.goods_info_detail || []).map((ite) => { return { itemName: ite.item_name, @@ -303,7 +364,7 @@ function Home () { } }) } - }) || [] + }) || []).sort((a, b) => a.sort - b.sort) setState((draft) => { draft.swiperList = [...activeSwiper, ...list] draft.goodList = list[0].goods || [] @@ -493,6 +554,13 @@ function Home () { url: url + activeInfo.activity_id }) } + + const handleGoRecommendGoods = (item) => { + const url = `/pages/item/list?tag_id=${item.tag_id || ''}` + Taro.navigateTo({ + url: url + }) + } return ( {recommend.length > 0 && recommend.map((_item, id) => = 400 ? 920 : 800} mode='scaleToFill' src={_item.img} isShowMenuByLongpress={false} lazyLoad isNew > - {/* + handleGoRecommendGoods(_item)} className="recommend_btn" style={{ [_item.postions]: '70rpx', opacity: 0 }}> {_item.text} {_item.btnTxt} - */} + {_item.list?.map((item, idx) => ( diff --git a/src/pages/item/list.js b/src/pages/item/list.js index d8e96d1..be0cdb2 100755 --- a/src/pages/item/list.js +++ b/src/pages/item/list.js @@ -50,7 +50,15 @@ const initialState = { routerParams: null, card_id: null, // 兑换券 total: undefined, - historyList: [] + historyList: [], + loading: true, + tagItem: { + 4: 'SS24新品推荐', + 3: '热销单品', + 5: 'Boston系列', + 6: 'Arizona系列', + 7: 'London系列', + } } function ItemList () { @@ -70,7 +78,9 @@ function ItemList () { fixTop, routerParams, total, - historyList + historyList, + loading, + tagItem } = state const [isShowSearch, setIsShowSearch] = useState(false) const { cat_id, main_cat_id, tag_id, card_id, user_card_id } = routerParams || {} @@ -229,6 +239,7 @@ function ItemList () { v.rightList[pageIndex - 1] = resRightList v.brandList = pickBy(brand_list?.list, doc.goods.WGT_GOODS_BRAND) v.historyList = _historyList?.list || [] + v.loading = false if (v.tagList.length < 1) { if (select_tags_list.length > 0) { v.tagList = [ @@ -344,6 +355,7 @@ function ItemList () { 0 })} diff --git a/src/pages/recommend/detail.js b/src/pages/recommend/detail.js index e3b7d87..8794831 100644 --- a/src/pages/recommend/detail.js +++ b/src/pages/recommend/detail.js @@ -19,7 +19,8 @@ const initState = { formInfo: {}, status: '', isShare: false, - alwaysBackUrl: "/pages/index" + alwaysBackUrl: "/pages/index", + isSub: false, } export default function detail () { const $instance = getCurrentInstance() @@ -79,7 +80,7 @@ export default function detail () { }, [userInfo, isLogin]) - const { isLoading, activeInfo = {}, visible, formInfo, checked, status, isShare, alwaysBackUrl } = state + const { isLoading, activeInfo = {}, visible, formInfo, checked, status, isShare, alwaysBackUrl, isSub } = state const handleConfirm = async () => { if (!isLogin || !userInfo) return @@ -141,6 +142,12 @@ export default function detail () { } const handleSubmit = async () => { + if (isSub) { + return + } + setState((draft) => { + draft.isSub = true + }) if (isShare) { handeleShare() return @@ -194,6 +201,9 @@ export default function detail () { } }) } + setState((draft) => { + draft.isSub = false + }) } const onClickShare = () => { setState((draft) => { diff --git a/src/pages/recommend/status.js b/src/pages/recommend/status.js index 6d8f4df..27cea54 100644 --- a/src/pages/recommend/status.js +++ b/src/pages/recommend/status.js @@ -1,6 +1,6 @@ import React, { useEffect } from 'react' -import { View, Text, Input, Image } from '@tarojs/components' -import Taro, { getCurrentInstance, useDidShow } from '@tarojs/taro' +import { View, Text, Input, Image, Button } from '@tarojs/components' +import Taro, { getCurrentInstance, useDidShow, useShareAppMessage } from '@tarojs/taro' import { SpPage, SpHtml, SpCheckbox, SpImage } from '@/components' import { useSelector } from 'react-redux' import { getActiveDetail } from '@/api/community' @@ -17,12 +17,13 @@ const initState = { cur_activity_info: [], loading: true, activeInfo: {}, - qrUrl: '' + qrUrl: '', + visible: false } export default function status () { const $instance = getCurrentInstance() const [state, setState] = useImmer(initState) - const { cur_activity_info, loading, activeInfo, qrUrl } = state + const { cur_activity_info, loading, activeInfo, qrUrl, visible } = state useEffect(() => { getActiveDetail() @@ -127,12 +128,35 @@ export default function status () { }) navigateTo('/pages/index') } + + const onClickShare = () => { + setState((draft) => { + draft.visible = true + }) + } + const handleClose = () => { + setState((draft) => { + draft.visible = false + }) + } + useShareAppMessage(() => { + return { + title: activeInfo.activity_name, + path: `/pages/recommend/detail?id=${activeInfo.activity_id}`, + // imageUrl: activeInfo.pics[0] + imageUrl: `${process.env.APP_IMAGE_CDN_NEW}/share-logo.jpg` + } + }) + return ( - {activeInfo?.activity_name || ''} + + {activeInfo.activity_name} + + 姓名 @@ -162,6 +186,28 @@ export default function status () { 入场请出示预约凭证 : } {activeInfo.status !== 'done' && 取消预约} + + + + + {'分享'} + + + + + + + ) } diff --git a/src/pages/recommend/status.scss b/src/pages/recommend/status.scss index 396da88..4163f16 100644 --- a/src/pages/recommend/status.scss +++ b/src/pages/recommend/status.scss @@ -96,4 +96,156 @@ margin-top: 30px; text-decoration: underline; } + .name-box { + display: flex; + align-items: flex-start; + justify-content: space-between; + .share_icon { + height: 40px; + width: 60px; + padding: 10px 0 10px 20px; + } + } + .sp-picker { + .mask { + position: fixed; + z-index: 302; + top: 0; + right: 0; + left: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.6); + visibility: hidden; + opacity: 0; + transition: all 0.3s ease; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + // color: #fff; + &.visible { + visibility: visible; + opacity: 1; + } + } + &-cnt { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + transition: all 0.3s ease-in-out; + transform: translateY(100%); + z-index: 503; + background-color: #fff; + border-radius: 30rpx 30rpx 0 0; + &.visible { + transform: translateY(0); + } + } + &-hd { + padding: 30px 50px; + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: none; + position: relative; + font-size: 26px; + .center { + margin: auto; + } + .at-icon-close { + padding: 20px 30px; + position: absolute; + right: 20px; + } + } + &-bd { + padding: 0 50px 50px; + &-item { + display: flex; + align-items: center; + border-bottom: none; + padding: 0 90px; + view { + color: #000; + font-size: 26px; + line-height: 1; + } + .tit { + padding: 28px 50px 28px 30px; + box-sizing: border-box; + } + .content { + display: flex; + flex: 1; + color: #000; + .icon-qianwang-01 { + font-size: 20px; + } + } + } + .btn { + margin-top: 130px; + display: flex; + height: 80px; + align-items: center; + justify-content: center; + font-size: 32px; + line-height: 1; + background: #000; + color: #fff; + border-radius: 6px; + &.notop { + margin-top: 10px; + } + &-disabled { + background: #666; + } + &.share { + margin: 80px 0; + } + } + .user-form { + margin-top: 30px; + &-item { + margin-bottom: 50px; + &-title { + font-size: 24px; + color: #000; + margin-bottom: 10px; + } + &-input { + background: #e5e5e5; + border-radius: 6px; + padding: 20px 40px; + color: #000; + position: relative; + .icon-arrowRight { + font-size: 34px; + position: absolute; + right: 30px; + top: 30%; + // transform: translateY(-50%); + color: #000; + rotate: 90deg; + } + } + &-phone { + width: 100%; + } + .picker { + height: 40px; + width: 100%; + color: #a5a5a5; + &-value { + color: #000; + &.placeholder { + color: #a5a5a5 !important; + } + } + } + } + } + } + } } diff --git a/src/subpages/member/qa-data/index.js b/src/subpages/member/qa-data/index.js index 1363b59..daf67d1 100644 --- a/src/subpages/member/qa-data/index.js +++ b/src/subpages/member/qa-data/index.js @@ -44,10 +44,17 @@ const data = [{ { subTit: `可以补开发票吗?`, subCon: `可以,您可以通过联系我们的在线客服申请开具已完成订单的发票。` }, { subTit: `发票抬头如何修改?`, subCon: `如您购买的商品还未付款,建议您在有库存的情况下,重新下单填并写正确的开票信息。如您购买的商品全部发货未满7天,客服查询到您的订单处于未完成状态,目前还不能为您更改发票相关信息。待您的订单发货时长达到7天后可联系客服办理。如您购买的商品发货时间达到7天,请您提供正确的相关信息给到客服,客服会在1-5个工作日为您修改正确的发票抬头,并更新在您的订单信息内。` }] }, - - { title: '意见反馈', isOpen: false, content: [{ subTit: `如何反馈其他问题?`, subCon: '如果您对本平台显示的材料或者购物过程中又任何疑虑或异议,或希望提供建议和意见,您可以联系我们的客服:021-62716091,或者写信给我们:bscn_mp_store@birkenstock.com。' }] +}, +{ + title: '退换货政策', isOpen: false, content: [ + { subTit: `一、政策适用范围`, subCon: `诚挚欢迎您光临BIRKENSTOCK微信小程序官方店,以下是我们的退换货政策。` }, + { subTit: `二、退换货条件`, subCon: `为了确保您的购物体验顺利愉快,我们需要您注意以下退换货条件:`, subContents: ['1.商品应保持完好,包括商品本身及其鞋盒、配件、吊牌等完整无损。', '2.请提供原始收银凭证或购物凭证以办理退换货。', '3.申请退换货应在签收之日起7天内进行。'] }, + // { subTit: ``, subCon: `1.商品应保持完好,包括商品本身及其鞋盒、配件、吊牌等完整无损。` }, + // { subTit: ``, subCon: `1.商品应保持完好,包括商品本身及其鞋盒、配件、吊牌等完整无损。` }, + // { subTit: ``, subCon: `1.商品应保持完好,包括商品本身及其鞋盒、配件、吊牌等完整无损。` }, + ] } ] diff --git a/src/subpages/member/qa-page.js b/src/subpages/member/qa-page.js index eba726d..db14fa9 100644 --- a/src/subpages/member/qa-page.js +++ b/src/subpages/member/qa-page.js @@ -48,7 +48,10 @@ export default function qaPage () { {v.subTit} {/* */} - {v.subCon} + + {v.subCon} + {v.subContents ? v.subContents.map(s => {s}) : null} + ))}