This commit is contained in:
zpc 2026-02-03 02:15:49 +08:00
parent 198ac6db1d
commit dd22c24f9a
3 changed files with 1159 additions and 2025 deletions

View File

@ -11,9 +11,9 @@
// 测试环境配置 - .NET 10 后端 // 测试环境配置 - .NET 10 后端
const testing = { const testing = {
baseUrl: 'https://app.zpc-xy.com/honey/api', // baseUrl: 'https://app.zpc-xy.com/honey/api',
// baseUrl: 'http://192.168.1.24:5238', // baseUrl: 'http://192.168.1.24:5238',
// baseUrl: 'http://192.168.195.15:2822', baseUrl: 'http://192.168.195.15:2822',
imageUrl: 'https://youdas-1308826010.cos.ap-shanghai.myqcloud.com', imageUrl: 'https://youdas-1308826010.cos.ap-shanghai.myqcloud.com',
loginPage: '', loginPage: '',
wxAppId: '' wxAppId: ''

File diff suppressed because it is too large Load Diff

View File

@ -36,101 +36,65 @@
</view> </view>
<uni-popup ref="pop" type="bottom"> <uni-popup ref="pop" type="bottom">
<view v-if="orderData" class="buy-pop relative"> <view v-if="orderData" class="order-popup">
<view class="buy-pop-hd"> <!-- 头部 -->
<view style="width: 24rpx;"> <view class="popup-header">
</view> <text class="popup-title">确认订单</text>
<text class="">确认订单</text> <view class="close-btn" @click="close('pop')">×</view>
<view class="close icon" @click="close('pop')">
<image :src="$img('/static/img/close2.png')" lazy-load></image>
</view>
</view>
<view class="buy-card">
<view class="buy-info">
<view class="pic">
<image :src="orderData.goods.imgurl_detail" style="width: 190rpx; height: 190rpx;"
lazy-load>
</image>
</view>
<view class="info-r">
<view class="hang1" style="width: 100%; color: #333333; font-size: 24rpx;">
{{ orderData.goods.title }}
</view>
<view class="type">类型:明信片</view>
<view class="price-num">
<view class="price" style="font-size: 16rpx;">
¥<text style="font-size: 28rpx;">{{ orderData.goods.price }}</text>
</view>
<view class="num">×{{ orderData.goods.prize_num }}</view>
</view>
</view>
</view>
</view>
<view class="br20 mt20" style="background: #FFFFFF;">
<view class="pay-type" @click="changePay(0)"
v-if="orderData != null && orderData.goods_extend && orderData.goods_extend.pay_wechat == 1">
<view class="" style="width: 100%; color: #333333;">
微信支付
</view>
<view class="icon">
<image v-if="zhifu == 0" :src="$img1('common/check_act.png')" lazy-load></image>
<image v-else :src="$img1('common/check.png')" lazy-load></image>
</view>
</view>
<view class="pay-type" @click="changePay(1)"
v-if="orderData != null && orderData.goods_extend && orderData.goods_extend.pay_currency2 == 1">
<view class="" style="width: 100%; color: #333333;">
{{ $config.getAppSetting('currency2_name') }}
{{ orderData.goods.price * 100 }} (剩余:{{ orderData.use_integral }})
</view>
<view class="icon">
<image v-if="zhifu == 1" :src="$img1('common/check_act.png')" lazy-load></image>
<image v-else :src="$img1('common/check.png')" lazy-load></image>
</view>
</view>
</view> </view>
<view class="rule"> <!-- 商品信息 -->
<scroll-view class="rule-inner" scroll-y> <view class="goods-card">
<view v-html="sendRuleData"></view> <view class="goods-img">
</scroll-view> <image :src="orderData.goods.imgurl_detail" mode="aspectFill"></image>
</view> </view>
<view class="agree" @click="isAgree = !isAgree"> <view class="goods-info">
<view class="icon"> <view class="goods-title">{{ orderData.goods.title }}</view>
<image v-if="isAgree" :src="$img1('common/check_act.png')" lazy-load></image> <view class="goods-meta">
<text>类型明信片</text>
<image v-else :src="$img1('common/check.png')" lazy-load></image> <text class="qty">×{{ orderData.goods.prize_num }}</text>
</view>
<view class="goods-price">¥{{ orderData.goods.price }}</view>
</view> </view>
我已满18岁,阅读并同意
<text @click.stop="$c.to({ url: '/pages/guize/guize?type=4' })">
用户协议
</text>
<text @click.stop="$c.to({ url: '/pages/guize/guize?type=5' })">
隐私政策
</text>
</view> </view>
<!-- 货币选项 -->
<view class="option-row" @click="changePay(0)"
v-if="orderData != null && orderData.goods_extend && orderData.goods_extend.pay_wechat == 1">
<view class="label-with-tip">
<text class="label">微信支付</text>
</view>
<view class="radio" :class="{ active: zhifu == 0 }"></view>
</view>
<view class="option-row" @click="changePay(1)"
v-if="orderData != null && orderData.goods_extend && orderData.goods_extend.pay_currency2 == 1">
<view class="label-with-tip">
<text class="label">{{ $config.getAppSetting('currency2_name') }} {{ orderData.goods.price * 100 }}</text>
<text class="tip">剩余{{ orderData.score }}</text>
</view>
<view class="radio" :class="{ active: zhifu == 1 }"></view>
</view>
<!-- 售前售后须知 -->
<view class="notice-row" @click="$c.to({ url: '/pages/guize/guize?type=10' })">
<text class="notice-text">售前·售后须知</text>
<text class="arrow"></text>
</view>
<!-- 支付按钮 -->
<view class="pay-btn" v-if="zhifu == 0" @click="$c.noDouble(() => confirmSubmit(1))"> <view class="pay-btn" v-if="zhifu == 0" @click="$c.noDouble(() => confirmSubmit(1))">
<text> <text>确认支付 ¥{{ orderData.price }}</text>
{{
` ¥${orderData.price}`
}}
</text>
</view> </view>
<view class="pay-btn" v-if="zhifu == 1" @click="$c.noDouble(() => pay(1))"> <view class="pay-btn" v-if="zhifu == 1" @click="$c.noDouble(() => pay(1))">
<text>{{ orderData.price * 100 }}{{ $config.getAppSetting('currency2_name') }}</text> <text>{{ orderData.price * 100 }}{{ $config.getAppSetting('currency2_name') }}</text>
</view> </view>
<!-- 协议 -->
<view class="agree-row" @click="isAgree = !isAgree">
<view class="check-icon" :class="{ active: isAgree }"></view>
<text class="agree-text">我已满18岁阅读即同意用户协议隐私政策</text>
</view>
</view> </view>
</uni-popup> </uni-popup>
<PayDialog ref="payDialog" /> <PayDialog ref="payDialog" />
@ -396,8 +360,8 @@ export default {
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.title { .page-title {
width: 100%; width: 100%;
top: 108rpx; top: 108rpx;
position: absolute; position: absolute;
@ -466,238 +430,209 @@ export default {
height: 18rpx; height: 18rpx;
margin-left: 6rpx; margin-left: 6rpx;
} }
.icon {}
} }
.buy-pop { .order-popup {
padding: 0 30rpx; background: #FFFFFF;
box-sizing: border-box; border-radius: 24rpx 24rpx 0 0;
background: #F7F7F7; padding: 0 32rpx 60rpx;
padding-bottom: 200rpx;
z-index: 999;
border-radius: 16rpx 16rpx 0rpx 0rpx;
&::after { .popup-header {
content: '';
position: absolute;
top: -62rpx;
left: 0;
width: 750rpx;
height: 62rpx;
}
.buy-pop-hd {
padding: 40rpx 0;
padding-left: 10rpx;
display: flex; display: flex;
justify-content: space-between;
align-items: center; align-items: center;
justify-content: center;
padding: 32rpx 0;
position: relative;
>text { .popup-title {
position: static;
width: auto;
top: auto;
font-size: 32rpx; font-size: 32rpx;
font-weight: 500; font-weight: 500;
color: #333333; color: #333;
z-index: auto;
} }
.close { .close-btn {
width: 24rpx; position: absolute;
height: 24rpx; right: 0;
font-size: 48rpx;
color: #999;
line-height: 1;
} }
} }
.buy-card { .goods-card {
border-radius: 20rpx; display: flex;
padding: 30rpx 30rpx 30rpx 30rpx; padding: 24rpx;
background: #FFFFFF; background: #F7F7F7;
border-radius: 16rpx;
margin-bottom: 24rpx;
.buy-info { .goods-img {
display: flex; width: 160rpx;
height: 160rpx;
border-radius: 12rpx;
overflow: hidden;
background: #EEE;
flex-shrink: 0;
.pic { image {
width: 190rpx; width: 100%;
height: 190rpx; height: 100%;
border-radius: 10rpx;
}
.info-r {
width: calc(100% - 190rpx);
box-sizing: border-box;
display: flex;
flex-flow: column nowrap;
justify-content: space-between;
padding: 10rpx 10rpx 10rpx 30rpx;
.title {
font-size: 32rpx;
font-weight: 400;
color: #333333;
}
.type {
font-size: 20rpx;
font-weight: 400;
color: #999999;
}
.price-num {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 16rpx;
.price {
ffont-weight: 500;
font-size: 35rpx;
color: #333333;
font-size: 28rpx;
}
.num {
font-size: 20rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #999999;
}
}
} }
} }
.line { .goods-info {
height: 1px; flex: 1;
background: #222222; margin-left: 24rpx;
margin: 30rpx 0 10rpx;
}
.yhfs {
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
}
.card-row {
padding: 16rpx 0;
display: flex; display: flex;
flex-direction: column;
justify-content: space-between; justify-content: space-between;
align-items: center;
.title { .goods-title {
>image { font-size: 28rpx;
width: 32rpx; color: #333;
height: 32rpx; font-weight: 500;
}
>text {
font-weight: 400;
font-size: 24rpx;
color: #FFFFFF;
}
} }
.row-r { .goods-meta {
display: flex;
align-items: center;
font-size: 24rpx; font-size: 24rpx;
font-family: Source Han Sans CN; color: #999;
font-weight: 400; display: flex;
color: #FFFFFF; justify-content: space-between;
.icon { .qty {
width: 32rpx; color: #666;
height: 32rpx;
} }
} }
}
.card-row { .goods-price {
.title {} font-size: 32rpx;
color: #333;
.row-r { font-weight: 600;
.icon {}
} }
} }
} }
.pay-title { .option-row {
margin-top: 30rpx;
font-size: 38rpx;
font-weight: 400;
color: #ffffff;
}
.pay-type {
padding: 30rpx;
border-radius: 20rpx;
display: flex; display: flex;
align-items: center; align-items: center;
flex-direction: row; justify-content: space-between;
padding: 28rpx 0;
border-bottom: 1rpx solid #F0F0F0;
.icon { .label-with-tip {
width: 32rpx; display: flex;
height: 32rpx; align-items: center;
.label {
font-size: 28rpx;
color: #333;
}
.tip {
font-size: 24rpx;
color: #999;
margin-left: 8rpx;
}
} }
.title { .radio {
flex: 1; width: 40rpx;
padding: 0 20rpx; height: 40rpx;
font-size: 28rpx; border: 2rpx solid #DDD;
font-family: Source Han Sans CN; border-radius: 50%;
font-weight: 400; flex-shrink: 0;
color: #ffffff;
&.active {
border-color: #03D8F4;
background: #03D8F4;
position: relative;
&::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 16rpx;
height: 16rpx;
background: #FFF;
border-radius: 50%;
}
}
} }
} }
.agree { .notice-row {
display: flex; display: flex;
margin-top: 30rpx; align-items: center;
justify-content: space-between;
padding: 24rpx;
background: #E8F9E9;
border-radius: 12rpx;
margin: 24rpx 0;
font-size: 20rpx; .notice-text {
font-family: Source Han Sans CN; font-size: 28rpx;
font-weight: 400; color: #2DB84D;
color: #999999;
line-height: 32rpx;
.icon {
width: 32rpx;
height: 32rpx;
margin-right: 10rpx;
} }
}
.rule { .arrow {
padding: 20rpx; font-size: 32rpx;
background: #F9F8E1; color: #2DB84D;
border-radius: 20rpx;
box-sizing: border-box;
margin: 20rpx 0 0;
.rule-inner {
max-height: 160rpx;
font-size: 20rpx;
font-weight: 400;
color: #999999;
} }
} }
.pay-btn { .pay-btn {
margin: 30rpx auto 0; width: 100%;
width: 686rpx; height: 96rpx;
height: 84rpx; background: #03D8F4;
background: url($imgurl+'common/payBtn.png') no-repeat 0 0 / 100% 100%; border-radius: 14rpx;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 32rpx;
font-weight: 500; font-weight: 500;
color: #CDEF27; color: #404040;
margin-bottom: 24rpx;
}
>text:nth-child(1) { .agree-row {
font-size: 28rpx; display: flex;
align-items: center;
justify-content: center;
.check-icon {
width: 32rpx;
height: 32rpx;
border: 2rpx solid #DDD;
border-radius: 50%;
margin-right: 12rpx;
flex-shrink: 0;
&.active {
border-color: #03D8F4;
background: #03D8F4;
position: relative;
&::after {
content: '✓';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 20rpx;
color: #FFF;
}
}
} }
>text:nth-child(2) { .agree-text {
font-size: 36rpx; font-size: 24rpx;
color: #999;
} }
} }
} }