main
wwl 2024-03-28 19:19:22 +08:00
parent b7d4ac0428
commit 54804b6546
14 changed files with 138 additions and 46 deletions

View File

@ -1,15 +1,15 @@
APP_BASE_URL=http://47.103.169.154:8080/api/h5app/wxapp
APP_WEBSOCKET=wss://http://47.103.169.154:8080/ws
APP_BASE_URL=https://test.birkenstock.net.cn/api/h5app/wxapp
APP_WEBSOCKET=wss://test.birkenstock.net.cn/ws
APP_COMPANY_ID=1
APP_PLATFORM=standard
APP_CUSTOM_SERVER=http://47.103.169.154:8081/
APP_CUSTOM_SERVER=https://test.birkenstock.net.cn/
APP_HOME_PAGE=/pages/index
APP_TRACK=youshu
APP_YOUSHU_TOKEN=bi281e87ab2424481a
# APP_ID=wx3e1c17c88abf3e45
APP_ID=wx55ff808ba0e28b1d
APP_ID=wx72e9e1a93420862c
APP_MAP_KEY=1ccc1ebc947719886f0cd766d70241fe
APP_MAP_NAME=oneX新零售门店定位
APP_MAP_NAME=BIRKENSTOCK门店定位
APP_IMAGE_CDN=https://b-img-cdn.yuanyuanke.cn/ecshopx-vshop
APP_IMAGE_CDN_NEW=https://espier-oss-cdn.oss-cn-shanghai.aliyuncs.com/default_project/wxAssets
APP_DIANWU_URL=

View File

@ -1,5 +1,5 @@
{
"name": "BIRKENSTOCK",
"name": "bk",
"app_name": "BIRKENSTOCK",
"version": "3.13.20",
"private": true,
@ -7,6 +7,7 @@
"scripts": {
"clean": "rm -rf node_modules/.cache",
"build:weapp": "taro build --type weapp --trace-warnings",
"build:weapp:test": "taro build --type weapp --trace-warnings",
"build:weapp:live": "APP_LIVE=true taro build --type weapp --trace-warnings",
"build:swan": "taro build --type swan",
"build:alipay": "taro build --type alipay",

View File

@ -43,10 +43,13 @@ function SpCoupon (props) {
} = info
const { tag, invalidBg, bg } = COUPON_TYPE[cardType]
const couponTagBg = info.tagClass === 'used' || info.tagClass === 'overdue' || !info.valid ? invalidBg : bg
const couponTagFlag = info.tagClass === 'used' || info.tagClass === 'overdue' || !info.valid
const couponTagBg = couponTagFlag ? invalidBg : bg
// (couponStatus && couponStatus != 1) ||
const isInvalid = ((couponStatus && couponStatus != 1) || (info.tagClass === 'used' || info.tagClass === 'overdue') || isNotUse)
return (<View className="coupons-list-item" key={`coupon-item__${id}`} style={styleNames({
background: `url(${process.env.APP_IMAGE_CDN_NEW}/member/${((couponStatus && couponStatus != 1) || (info.tagClass === 'used' || info.tagClass === 'overdue') || isNotUse) ? "quan-hui" : "quan-lan"}.png) no-repeat`,
background: `url(${process.env.APP_IMAGE_CDN_NEW}/member/${isInvalid ? "quan-hui" : "quan-lan"}.png) no-repeat`,
'background-size': '100% 100%'
})}>
<View className="coupons-list-item-left">
@ -71,7 +74,7 @@ function SpCoupon (props) {
{/* !valid || */}
{!isNotUse && <>
{info.tagClass === 'used' || info.tagClass === 'overdue' ? <View className="coupons-list-item-btn">{info.tagClass === 'used' ? '使用' : '过期'}</View>
: <View className="coupons-list-item-btn" onClick={onClick}>立即{isNew ? '兑换' : '使用'}</View>}
: isInvalid ? <View className="coupons-list-item-btn">{couponStatus == 0 ? '已领完' : '已领取'}</View> : <View className="coupons-list-item-btn" onClick={onClick}>{isNew ? '' : '使'}</View>}
</>}
</View>
</View>)

View File

@ -70,7 +70,7 @@ export const COUPON = {
getNum: 'get_num',
couponStatus: ({ quantity, get_limit, user_get_num, get_num }) => {
if (quantity - get_num <= 0) {
return 0 // 已领完
return '0' // 已领完
} else if (get_limit - user_get_num > 0) {
return 1 // 立即领取
} else if (get_limit - user_get_num <= 0) {

View File

@ -128,7 +128,7 @@ export const TRADE_AFTER_SALES_ITEM = {
afterSalesMobile: ({ aftersales_address }) => aftersales_address.aftersales_mobile,
afterSalesAddress: ({ aftersales_address }) => aftersales_address.aftersales_address,
afterSalesContact: ({ aftersales_address }) => aftersales_address.aftersales_contact,
afterSalesZip: ({ aftersales_address }) => aftersales_address.post_code,
afterSalesZip: ({ aftersales_address }) => aftersales_address.aftersales_post_code,
aftersalesHours: ({ aftersales_address }) => aftersales_address.aftersales_hours,
refundFee: ({ refund_fee }) => refund_fee / 100,
sendbackData: 'sendback_data',

View File

@ -369,7 +369,7 @@ function CartCheckout (props) {
url: `/subpage/pages/trade/invoice-info?id=${totalInfo.tid || ''}`,
events: {
// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
acceptDataFromOpenedPage: function ({ data = {} }) {
acceptDataFromOpenedPage: ({ data = {} }) => {
const { invoiceTitle } = data
setState((draft) => {
draft.invoiceTitle = invoiceTitle
@ -377,9 +377,9 @@ function CartCheckout (props) {
})
},
},
success: function (res) {
success: (res) => {
// 通过eventChannel向被打开页面传送数据
res.eventChannel.emit('acceptDataFromOpenerPage', { data: totalInfo })
res.eventChannel.emit('acceptDataFromOpenerPage', { data: { ...totalInfo, invoiceTitle: state.invoiceTitle, paramsInfo: state.paramsInfo } })
}
})
return

View File

@ -81,16 +81,16 @@ function CartIndex () {
const getCartList = async () => {
// Taro.showLoading({ title: '', })
setState((draft) => {
draft.loading = true
})
// setState((draft) => {
// draft.loading = true
// })
const { type = 'distributor' } = router?.params || {}
const params = {
shop_type: type
}
await dispatch(fetchCartList(params))
await dispatch(updateCount(params))
Taro.hideLoading()
setState((draft) => {
draft.loading = false
})
@ -188,10 +188,10 @@ function CartIndex () {
// }
const onChangeGoodsIsCheck = async (item, type, checked) => {
// Taro.showLoading({ title: '' })
setState((draft) => {
draft.loading = true
})
Taro.showLoading({ title: '', mask: true })
// setState((draft) => {
// draft.loading = true
// })
let parmas = { is_checked: checked }
if (type === 'all') {
const cartIds = item.list.map((item) => item.cart_id)
@ -224,9 +224,10 @@ function CartIndex () {
const onChangeCartGoodsItem = useDebounce(async (item, num) => {
console.log(`onChangeCartGoodsItem:`, num)
setState((draft) => {
draft.loading = true
})
// setState((draft) => {
// draft.loading = true
// })
Taro.showLoading({ title: '', mask: true })
let { shop_id, cart_id } = item
const { type = 'distributor' } = router.params
await dispatch(updateCartItemNum({ shop_id, cart_id, num, type }))

View File

@ -8,7 +8,7 @@ import { addCart } from '@/store/slices/cart'
import { BUY_TOOL_BTNS, ACTIVITY_LIST } from '@/consts'
import { fetchUserFavs, addUserFav, deleteUserFav } from '@/store/slices/user'
import api from '@/api'
import { AtModal } from 'taro-ui'
import { AtModal, AtBadge } from 'taro-ui'
import './comp-buytoolbar.scss'
function CompGoodsBuyToolbar (props) {
@ -161,6 +161,9 @@ function CompGoodsBuyToolbar (props) {
<Text className='toolbar-item-txt'>收藏</Text>
</View> */}
</SpLogin>
<View className='shoucang-wrap' style="marginLeft:30rpx" onClick={() => Taro.redirectTo({ url: '/pages/cart/espier-index' })}>
{cartCount > 0 ? <AtBadge value={cartCount} maxValue={99}><SpImage src={`member/cart.png`} height={50} mode='heightFix' isNew /></AtBadge> : <SpImage src={`member/cart.png`} height={54} mode='heightFix' isNew />}
</View>
{false && <View
className='toolbar-item'
onClick={navigateTo.bind(this, '/pages/cart/espier-index?tabbar=0')}

View File

@ -8,6 +8,20 @@
display: flex;
align-items: center;
flex: 1;
.at-badge {
&__num {
font-size: 14px;
width: 24px;
height: 24px;
line-height: 24px;
top: -6px;
right: 4px;
padding: 0;
border-radius: 50%;
overflow: hidden;
text-align: center;
}
}
}
.sp-login {
margin-left: 30px;

View File

@ -96,12 +96,12 @@ function InvoiceInfo (props) {
})
}
// 监听acceptDataFromOpenerPage事件获取上一页面通过eventChannel传送到当前页面的数据
eventChannel?.on('acceptDataFromOpenerPage', function ({ data }) {
eventChannel?.on('acceptDataFromOpenerPage', ({ data }) => {
setState((draft) => {
draft.orderInfo = data.order || data || {}
draft.invoiceInfo = data.invoice || {}
draft.form = data.order?.invoice || {}
draft.title = data.order?.title ? data.order.title === 'unit' ? '个人' : '企业' : ''
draft.form = data.order?.invoice || data.paramsInfo?.invoice_content || {}
draft.title = data.order ? data.order.title === 'unit' ? '个人' : '企业' : ''
draft.totalFee = data.order?.total_fee ?? ''
})
})
@ -183,7 +183,20 @@ function InvoiceInfo (props) {
})
return
}
eventChannel?.emit('acceptDataFromOpenedPage', { data: invoice })
let invoice_parmas = {
invoice_type: 'normal',
invoice_content: {
...form
}
}
const _invoice = {
invoiceTitle: content,
paramsInfo: invoice_parmas
}
setState((draft) => {
draft.invoice = _invoice
})
eventChannel?.emit('acceptDataFromOpenedPage', { data: _invoice })
Taro.navigateBack()
}
const handleInvoiceClick = () => {
@ -210,7 +223,8 @@ function InvoiceInfo (props) {
registration_number,
bankname,
bankaccount,
company_phone
company_phone,
email: form.email
}
}
// console.log("🚀 ~ invoice_parmas:", invoice_parmas)

View File

@ -404,7 +404,7 @@ export default class TradeList extends Component {
className={classNames('page-trade-list', {
'has-navbar': true || isNavbar()
})}
showNavSearchIcon
// showNavSearchIcon
>
<SpNavBar title='订单列表' leftIconType='chevron-left' fixed='true' />
<AtTabs

View File

@ -60,6 +60,14 @@ function CouponCenter (props) {
showToast('积分不足')
return
}
if (item.couponStatus == 0) {
showToast('优惠券已领完')
return
}
if (item.couponStatus == 2) {
showToast('已领取该优惠券')
return
}
const res = await Taro.showModal({
title: '提示',
content: `确定要领取该优惠券吗?`,
@ -73,9 +81,7 @@ function CouponCenter (props) {
if (!res.confirm) {
return
}
if (item.couponStatus == 0) {
showToast('优惠券已领完')
} else if (item.couponStatus == 1) {
if (item.couponStatus == 1) {
if (isWeixin) {
const templeparams = {
temp_name: 'yykweishop',
@ -98,12 +104,11 @@ function CouponCenter (props) {
} else {
getCoupon(item, index)
}
} else {
showToast('优惠券已领取完啦')
}
}
const getCoupon = async ({ cardId }, index) => {
Taro.showLoading({ title: '', mask: true })
const { status } = await api.member.getCardDetail({
card_id: cardId
})
@ -122,6 +127,7 @@ function CouponCenter (props) {
} else {
showToast('优惠券领取失败')
}
Taro.hideLoading()
}
const { point } = state

View File

@ -49,11 +49,60 @@ const data = [{
},
{
title: '退换货政策', isOpen: false, content: [
{ subTit: `BIRKENSTOCK官方网站退换货政策中国大陆`, subCon: '' },
{ subTit: `一、政策适用范围`, subCon: `诚挚欢迎您光临BIRKENSTOCK微信小程序官方店以下是我们的退换货政策。` },
{ subTit: `二、退换货条件`, subCon: `为了确保您的购物体验顺利愉快,我们需要您注意以下退换货条件:`, subContents: ['1.商品应保持完好,包括商品本身及其鞋盒、配件、吊牌等完整无损。', '2.请提供原始收银凭证或购物凭证以办理退换货。', '3.申请退换货应在签收之日起7天内进行。'] },
// { subTit: ``, subCon: `1.商品应保持完好,包括商品本身及其鞋盒、配件、吊牌等完整无损。` },
// { subTit: ``, subCon: `1.商品应保持完好,包括商品本身及其鞋盒、配件、吊牌等完整无损。` },
// { subTit: ``, subCon: `1.商品应保持完好,包括商品本身及其鞋盒、配件、吊牌等完整无损。` },
{ subTit: `二、退换货条件`, subCon: `为了确保您的购物体验顺利愉快,我们需要您注意以下退换货条件:`, subContents: ['&nbsp;&nbsp;1.商品应保持完好,包括商品本身及其鞋盒、配件、吊牌等完整无损。', '&nbsp;&nbsp;2.请提供原始收银凭证或购物凭证以办理退换货。', '&nbsp;&nbsp;3.申请退换货应在签收之日起7天内进行。'] },
{ subTit: `三、退换货特别约定`, subCon: `针对特定情形的退换货特别处理:`, subContents: ['&nbsp;&nbsp;1.鞋类商品的合格证及三包服务卡以鞋盒上粘贴的规定为准。', '&nbsp;&nbsp;2.退货仅限在原购买商品的微信小程序平台进行。', '&nbsp;&nbsp;3.不同渠道购买的商品暂不支持跨渠道退换货。', '&nbsp;&nbsp;4.在下单过程中使用优惠券、积分兑换券等折扣券,该笔订单如需退货,折扣券将不予返还。'] },
{
subTit: '四、鞋类商品质保规定',
subCon: '为了保障您的权益,敬请留意以下信息:',
subContents: ['&nbsp;&nbsp;1.质保期限',
'&nbsp;&nbsp;质保期限为自鞋类商品购买之日起90天。',
'&nbsp;&nbsp;2.质保范围',
'&nbsp;&nbsp;&nbsp;&nbsp;1)质保期内如鞋类商品发生质量问题可凭原始购物凭证办理退货或换货。BIRKENSTOCK暂不提供维修服务。如您购买的鞋类商品因质量问题需要维修请按照下述退换货流程操作。',
'&nbsp;&nbsp;&nbsp;&nbsp;2)如您购买的鞋类商品在正常穿着情况下存在以下任一质量问题,您可以选择退货或换货处理:',
'&nbsp;&nbsp;&nbsp;&nbsp;a.凡在第一个月内出现断底、断跟、断面、断帮质量问题之一者。',
'&nbsp;&nbsp;&nbsp;&nbsp;b.凡属包换的质量问题而因故无法调换者,可予以退货。',
`&nbsp;&nbsp;&nbsp;&nbsp;c.在第一个月内出现“包修”质量问题且无法予以调换者可酌情按购买产品实际支付价格的每日0.5%收取折旧费,并予以退货。`,
`&nbsp;&nbsp;&nbsp;&nbsp;d.凡未经穿过的新鞋不成双,鞋子大小或鞋内出现开胶之一者。`,
`&nbsp;&nbsp;&nbsp;&nbsp;e.凡在第一周内胶黏皮鞋发生开胶(帮底结合处脱落或弹开长度2cm深度0.5cm以上者)`,
`&nbsp;&nbsp;&nbsp;&nbsp;f.凡属“包修”的质量问题,在第一个月予以更换。`,
`&nbsp;&nbsp;&nbsp;&nbsp;g.包修帮底结合处开胶脱落或弹出长度2cm深度0.5cm以下者;`,
`&nbsp;&nbsp;&nbsp;&nbsp;--第一周外胶黏皮皮鞋发生开胶;`,
`&nbsp;&nbsp;&nbsp;&nbsp;--胶粘鞋发生开胶;`,
`&nbsp;&nbsp;&nbsp;&nbsp;--出现断底、断跟、断面、断帮;`,
`&nbsp;&nbsp;&nbsp;&nbsp;h.两只鞋颜色明显不一、尺码不等或一边脚;`,
`&nbsp;&nbsp;&nbsp;&nbsp;i.其他法律规定的质量问题。`,
`&nbsp;&nbsp;3)您在不同渠道 (微信小程序官方店、天猫官方旗舰店、京东官方旗舰店、抖音官方旗舰店、实体店) 购买的鞋类商品,暂不支持跨渠道办理退换货,敬请谅解。鞋类商品的退换货操作流程详见下述退换货流程。`,
'&nbsp;&nbsp;3.质保例外',
`&nbsp;&nbsp;以下情形不属于质保服务范围,敬请谅解:`,
`&nbsp;&nbsp;&nbsp;&nbsp;a.因穿着、保养、使用或保管不当等造成的损坏;`,
`&nbsp;&nbsp;&nbsp;&nbsp;b.因自行拆改或修理造成的损坏;`,
`&nbsp;&nbsp;&nbsp;&nbsp;c.超出质保期限的商品;`,
`&nbsp;&nbsp;&nbsp;&nbsp;d.无原始购物凭证的商品。`]
},
{
subTit: '五、退换货流程',
subCon: `购买于BIRKENSTOCK微信小程序官方店的商品退换货流程如下`,
subContents: [`&nbsp;&nbsp;1.购买于微信小程序官方店的商品,若符合本政策约定的退换货条件,可按以下流程操作退货:`,
`&nbsp;&nbsp;&nbsp;&nbsp;a.请您在收到商品之日以快递签收日期为准7天内联系微信小程序官方店的客服申请退货`,
`&nbsp;&nbsp;&nbsp;&nbsp;b.在与客服确认符合退货条件后,可予退货。请在“我的订单”页面提交退货申请,并填写退货快递单号。`,
`&nbsp;&nbsp;退货申请提交后,请将您的原始购物明细单随退货商品一并快递至以下地址及收件人:`,
`&nbsp;&nbsp;退货地址:`,
`&nbsp;&nbsp;上海市奉贤区 奉城镇东新市村朝阳1160号`,
`&nbsp;&nbsp;奉城普洛斯物流园B1库1FU3单元圆具嘉 大叶公路靠申江南路`,
`&nbsp;&nbsp;收件人勃肯退货组XCX) 19901781571`,
`&nbsp;&nbsp;2.微信小程序官方店目前暂时仅提供相同商品不同尺寸的更换服务,不提供不同款式的换货服务。若您对购买的商品不满意,需要退换,请按照上述流程操作,或联系我们的在线客服询问详情。`,
`&nbsp;&nbsp;3.退回商品的运费将由您承担BIRKENSTOCK暂不接受到付、平邮、邮政小包退件。为了您的方便与顺利建议您使用顺丰快递以确保快速安全地退回商品。`,
`&nbsp;&nbsp;4.如果您退货的商品享受了价格优惠,最终退款金额将以您实际支付的金额为准。退货退款的到账时间会根据您原始支付方式的不同而有所差异。如有任何疑问,请联系我们的在线客服。`]
},
{
subTit: '六、售后客服时间',
subCon: '我们的售后客服团队随时为您提供支持,您可以通过在线客服咨询,或者电话联系我们。',
subContents: ['售后服务热线021-62716091',
`在线客服服务时间周一至周日9:00 - 24:00法定节假日或大促期间的服务时间将另行通知`,]
}
]
}
]

View File

@ -48,10 +48,11 @@ export default function qaPage () {
{v.subTit}
{/* <Text className="title"></Text> */}
</View>
<View className="title-desc">
<View>{v.subCon}</View>
{v.subContents ? v.subContents.map(s => <View> {s}</View >) : null}
</View>
{!!v.subCon && <View className="title-desc">
<View style={{ marginBottom: v.subContents ? '4px' : '0' }} >{v.subCon}</View>
{/* {v.subContents ? v.subContents.map(s => <View style={{ marginBottom: '4px' }} > {s}</View >) : null} */}
{v.subContents ? v.subContents.map(s => <SpHtml content={s} style={{ marginBottom: '4px' }} />) : null}
</View>}
</View>
))}
</View>