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 后端
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.195.15:2822',
baseUrl: 'http://192.168.195.15:2822',
imageUrl: 'https://youdas-1308826010.cos.ap-shanghai.myqcloud.com',
loginPage: '',
wxAppId: ''

File diff suppressed because it is too large Load Diff

View File

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