pull/8/head
ldh 2023-03-29 20:33:19 +08:00
commit 0c9c0c4dc3
7 changed files with 428 additions and 482 deletions

7
env
View File

@ -1,3 +1,6 @@
# 版本号
SHOPRO_VERSION = v1.8.1
# 正式环境接口域名 # 正式环境接口域名
SHOPRO_BASE_URL = https://api.shopro.sheepjs.com SHOPRO_BASE_URL = https://api.shopro.sheepjs.com
@ -13,7 +16,5 @@ SHOPRO_API_PATH = /shop/api/
# 客户端静态资源地址 空=默认使用服务端指定的CDN资源地址前缀 | local=本地 | http(s)://xxx.xxx=自定义静态资源地址前缀 # 客户端静态资源地址 空=默认使用服务端指定的CDN资源地址前缀 | local=本地 | http(s)://xxx.xxx=自定义静态资源地址前缀
SHOPRO_STATIC_URL = https://file.sheepjs.com SHOPRO_STATIC_URL = https://file.sheepjs.com
SHOPRO_VERSION = v1.8.1 # 是否开启直播 1 开启直播 | 0 关闭直播 (小程序官方后台未审核开通直播权限时请勿开启)
# 是否开启直播 1 开启直播 | 0 关闭直播
SHOPRO_MPLIVE_ON = 0 SHOPRO_MPLIVE_ON = 0

View File

@ -151,6 +151,7 @@
cart.delete(cartItem.id); cart.delete(cartItem.id);
return; return;
} }
if(cartItem.goods_num === e) return;
cartItem.goods_num = e; cartItem.goods_num = e;
cart.update({ cart.update({
goods_id: cartItem.goods_id, goods_id: cartItem.goods_id,

View File

@ -3,13 +3,9 @@
<s-layout title="申请售后"> <s-layout title="申请售后">
<!-- 售后商品 --> <!-- 售后商品 -->
<view class="goods-box"> <view class="goods-box">
<s-goods-item <s-goods-item :img="state.goodsItem.goods_image" :title="state.goodsItem.goods_title"
:img="state.goodsItem.goods_image" :skuText="state.goodsItem.goods_sku_text" :price="state.goodsItem.goods_price"
:title="state.goodsItem.goods_title" :num="state.goodsItem.goods_num"></s-goods-item>
:skuText="state.goodsItem.goods_sku_text"
:price="state.goodsItem.goods_price"
:num="state.goodsItem.goods_num"
></s-goods-item>
</view> </view>
<uni-forms ref="form" v-model="formData" :rules="rules" label-position="top"> <uni-forms ref="form" v-model="formData" :rules="rules" label-position="top">
@ -18,17 +14,9 @@
<view class="item-title ss-m-b-20">售后类型</view> <view class="item-title ss-m-b-20">售后类型</view>
<view class="ss-flex-col"> <view class="ss-flex-col">
<radio-group @change="onRefundChange"> <radio-group @change="onRefundChange">
<label <label class="ss-flex ss-col-center ss-p-y-10" v-for="(item, index) in state.refundTypeList" :key="index">
class="ss-flex ss-col-center ss-p-y-10" <radio :checked="formData.type === item.value" color="var(--ui-BG-Main)" style="transform: scale(0.8)"
v-for="(item, index) in state.refundTypeList" :value="item.value" />
:key="index"
>
<radio
:checked="formData.type === item.value"
color="var(--ui-BG-Main)"
style="transform: scale(0.8)"
:value="item.value"
/>
<view class="item-value ss-m-l-8">{{ item.text }}</view> <view class="item-value ss-m-l-8">{{ item.text }}</view>
</label> </label>
</radio-group> </radio-group>
@ -47,13 +35,8 @@
<view class="refund-item u-m-b-20"> <view class="refund-item u-m-b-20">
<view class="item-title ss-m-b-20">联系方式</view> <view class="item-title ss-m-b-20">联系方式</view>
<view class="input-box u-flex"> <view class="input-box u-flex">
<uni-easyinput <uni-easyinput :inputBorder="false" type="number" v-model="formData.mobile" placeholder="请输入您的联系电话"
:inputBorder="false" paddingLeft="10" />
type="number"
v-model="formData.mobile"
placeholder="请输入您的联系电话"
paddingLeft="10"
/>
</view> </view>
</view> </view>
@ -61,23 +44,11 @@
<view class="refund-item"> <view class="refund-item">
<view class="item-title ss-m-b-20">相关描述</view> <view class="item-title ss-m-b-20">相关描述</view>
<view class="describe-box"> <view class="describe-box">
<uni-easyinput <uni-easyinput :inputBorder="false" class="describe-content" type="textarea" maxlength="120" autoHeight
:inputBorder="false" v-model="formData.content" placeholder="客官~请描述您遇到的问题,建议上传照片"></uni-easyinput>
class="describe-content"
type="textarea"
maxlength="120"
autoHeight
v-model="formData.content"
placeholder="客官~请描述您遇到的问题,建议上传照片"
></uni-easyinput>
<view class="upload-img"> <view class="upload-img">
<s-uploader <s-uploader v-model:url="formData.images" fileMediatype="image" limit="9" mode="grid"
v-model:url="formData.images" :imageStyles="{ width: '168rpx', height: '168rpx' }" />
fileMediatype="image"
limit="9"
mode="grid"
:imageStyles="{ width: '168rpx', height: '168rpx' }"
/>
</view> </view>
</view> </view>
</view> </view>
@ -86,9 +57,7 @@
<su-fixed bottom placeholder> <su-fixed bottom placeholder>
<view class="foot-wrap"> <view class="foot-wrap">
<view class="foot_box ss-flex ss-col-center ss-row-between ss-p-x-30"> <view class="foot_box ss-flex ss-col-center ss-row-between ss-p-x-30">
<button class="ss-reset-button contcat-btn" @tap="sheep.$router.go('/pages/chat/index')" <button class="ss-reset-button contcat-btn" @tap="sheep.$router.go('/pages/chat/index')"></button>
>联系客服</button
>
<button class="ss-reset-button ui-BG-Main-Gradient sub-btn" @tap="submit"></button> <button class="ss-reset-button ui-BG-Main-Gradient sub-btn" @tap="submit"></button>
</view> </view>
</view> </view>
@ -97,29 +66,17 @@
<su-popup :show="state.showModal" round="10" :showClose="true" @close="state.showModal = false"> <su-popup :show="state.showModal" round="10" :showClose="true" @close="state.showModal = false">
<view class="modal-box page_box"> <view class="modal-box page_box">
<view class="modal-head item-title head_box ss-flex ss-row-center ss-col-center" <view class="modal-head item-title head_box ss-flex ss-row-center ss-col-center">申请原因</view>
>申请原因</view
>
<view class="modal-content content_box"> <view class="modal-content content_box">
<radio-group @change="onChange"> <radio-group @change="onChange">
<label <label class="radio ss-flex ss-col-center" v-for="item in state.refundReasonList" :key="item.value">
class="radio ss-flex ss-col-center"
v-for="item in state.refundReasonList"
:key="item.value"
>
<view class="ss-flex-1 ss-p-20">{{ item.title }}</view> <view class="ss-flex-1 ss-p-20">{{ item.title }}</view>
<radio <radio :value="item.value" color="var(--ui-BG-Main)" :checked="item.value === state.currentValue" />
:value="item.value"
color="var(--ui-BG-Main)"
:checked="item.value === state.currentValue"
/>
</label> </label>
</radio-group> </radio-group>
</view> </view>
<view class="modal-foot foot_box ss-flex ss-row-center ss-col-center"> <view class="modal-foot foot_box ss-flex ss-row-center ss-col-center">
<button class="ss-reset-button close-btn ui-BG-Main-Gradient" @tap="onReason" <button class="ss-reset-button close-btn ui-BG-Main-Gradient" @tap="onReason"></button>
>确定</button
>
</view> </view>
</view> </view>
</su-popup> </su-popup>
@ -127,232 +84,235 @@
</template> </template>
<script setup> <script setup>
import sheep from '@/sheep'; import sheep from '@/sheep';
import { onLoad } from '@dcloudio/uni-app'; import { onLoad } from '@dcloudio/uni-app';
import { reactive, ref, unref } from 'vue'; import { reactive, ref, unref } from 'vue';
const form = ref(null); const form = ref(null);
const state = reactive({ const state = reactive({
showModal: false, showModal: false,
currentValue: 0, currentValue: 0,
goodsItem: {}, goodsItem: {},
// showSuccess: false, reasonText: '',
reasonText: '', //
// refundTypeList: [
refundTypeList: [ {
{ text: '仅退款',
text: '仅退款', value: 'refund',
value: 'refund', },
}, {
{ text: '退/换货',
text: '退/换货', value: 'return',
value: 'return', },
}, {
{ text: '其他',
text: '其他', value: 'other',
value: 'other', },
}, ],
], refundReasonList: [
refundReasonList: [ {
{ value: '1',
value: '1', title: '卖家发错货了',
title: '卖家发错货了', },
}, {
{ value: '2',
value: '2', title: '退运费',
title: '退运费', },
}, {
{ value: '3',
value: '3', title: '大小/重量与商品描述不符',
title: '大小/重量与商品描述不符', },
}, {
{ value: '4',
value: '4', title: '生产日期/保质期与商品描述不符',
title: '生产日期/保质期与商品描述不符', },
}, {
{ value: '5',
value: '5', title: '质量问题',
title: '质量问题', },
}, {
{ value: '6',
value: '6', title: '我不想要了',
title: '我不想要了', },
}, ],
], });
}); const formData = reactive({
const formData = reactive({ type: '',
type: '', reason: '',
reason: '', mobile: '',
mobile: '', content: '',
content: '', images: [],
images: [], });
}); const rules = reactive({});
const rules = reactive({});
// //
async function submit() { async function submit() {
let data = { // #ifdef MP
...formData, sheep.$platform.useProvider('wechat').subscribeMessage('order_aftersale_change');
order_id: state.goodsItem.order_id, // #endif
order_item_id: state.goodsItem.id, let data = {
}; ...formData,
const res = await sheep.$api.order.aftersale.apply(data); order_id: state.goodsItem.order_id,
if (res.error === 0) { order_item_id: state.goodsItem.id,
uni.showToast({ };
title: res.msg, const res = await sheep.$api.order.aftersale.apply(data);
}); if (res.error === 0) {
// state.showSuccess = true; uni.showToast({
sheep.$router.go('/pages/order/aftersale/list'); title: res.msg,
}
}
//
function onRefundChange(e) {
formData.type = e.detail.value;
}
//
function onChange(e) {
state.currentValue = e.detail.value;
state.refundReasonList.forEach((item) => {
if (item.value === e.detail.value) {
state.reasonText = item.title;
}
}); });
sheep.$router.go('/pages/order/aftersale/list');
} }
// }
function onReason() {
formData.reason = state.reasonText;
state.showModal = false;
}
function onTitle(e, title) { //
state.currentValue = e; function onRefundChange(e) {
state.reasonText = title; formData.type = e.detail.value;
} }
onLoad((options) => {
state.goodsItem = JSON.parse(options.item); //
function onChange(e) {
state.currentValue = e.detail.value;
state.refundReasonList.forEach((item) => {
if (item.value === e.detail.value) {
state.reasonText = item.title;
}
}); });
}
//
function onReason() {
formData.reason = state.reasonText;
state.showModal = false;
}
function onTitle(e, title) {
state.currentValue = e;
state.reasonText = title;
}
onLoad((options) => {
state.goodsItem = JSON.parse(options.item);
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.item-title { .item-title {
font-size: 30rpx; font-size: 30rpx;
font-weight: bold; font-weight: bold;
color: rgba(51, 51, 51, 1); color: rgba(51, 51, 51, 1);
// margin-bottom: 20rpx; // margin-bottom: 20rpx;
}
//
.refund-item {
background-color: #fff;
border-bottom: 1rpx solid #f5f5f5;
padding: 30rpx;
&:last-child {
border: none;
} }
// //
.refund-item { .describe-box {
background-color: #fff; width: 690rpx;
border-bottom: 1rpx solid #f5f5f5; background: rgba(249, 250, 251, 1);
padding: 30rpx; padding: 30rpx;
&:last-child { box-sizing: border-box;
border: none; border-radius: 20rpx;
}
//
.describe-box {
width: 690rpx;
background: rgba(249, 250, 251, 1);
padding: 30rpx;
box-sizing: border-box;
border-radius: 20rpx;
.describe-content { .describe-content {
height: 200rpx; height: 200rpx;
font-size: 24rpx; font-size: 24rpx;
font-weight: 400;
color: #333;
}
}
//
.input-box {
height: 84rpx;
background: rgba(249, 250, 251, 1);
border-radius: 20rpx;
}
}
.goods-box {
background: #fff;
padding: 20rpx;
margin-bottom: 20rpx;
}
.foot-wrap {
height: 100rpx;
width: 100%;
}
.foot_box {
height: 100rpx;
background-color: #fff;
.sub-btn {
width: 336rpx;
line-height: 74rpx;
border-radius: 38rpx;
color: rgba(#fff, 0.9);
font-size: 28rpx;
}
.contcat-btn {
width: 336rpx;
line-height: 74rpx;
background: rgba(238, 238, 238, 1);
border-radius: 38rpx;
font-size: 28rpx;
font-weight: 400; font-weight: 400;
color: rgba(51, 51, 51, 1); color: #333;
} }
} }
.modal-box { //
width: 750rpx; .input-box {
// height: 680rpx; height: 84rpx;
border-radius: 30rpx 30rpx 0 0; background: rgba(249, 250, 251, 1);
background: #fff; border-radius: 20rpx;
}
}
.modal-head { .goods-box {
height: 100rpx; background: #fff;
font-size: 30rpx; padding: 20rpx;
} margin-bottom: 20rpx;
}
.modal-content { .foot-wrap {
font-size: 28rpx; height: 100rpx;
} width: 100%;
}
.modal-foot { .foot_box {
.close-btn { height: 100rpx;
width: 710rpx; background-color: #fff;
line-height: 80rpx;
border-radius: 40rpx; .sub-btn {
color: rgba(#fff, 0.9); width: 336rpx;
} line-height: 74rpx;
} border-radius: 38rpx;
color: rgba(#fff, 0.9);
font-size: 28rpx;
} }
.success-box { .contcat-btn {
width: 600rpx; width: 336rpx;
padding: 90rpx 0 64rpx 0; line-height: 74rpx;
background: rgba(238, 238, 238, 1);
border-radius: 38rpx;
font-size: 28rpx;
font-weight: 400;
color: rgba(51, 51, 51, 1);
}
}
.cicon-check-round { .modal-box {
font-size: 96rpx; width: 750rpx;
color: #04b750; // height: 680rpx;
} border-radius: 30rpx 30rpx 0 0;
background: #fff;
.success-title { .modal-head {
font-weight: 500; height: 100rpx;
color: #333333; font-size: 30rpx;
font-size: 32rpx; }
}
.success-btn { .modal-content {
width: 492rpx; font-size: 28rpx;
height: 70rpx; }
background: linear-gradient(90deg, var(--ui-BG-Main-gradient), var(--ui-BG-Main));
border-radius: 35rpx; .modal-foot {
.close-btn {
width: 710rpx;
line-height: 80rpx;
border-radius: 40rpx;
color: rgba(#fff, 0.9);
} }
} }
}
.success-box {
width: 600rpx;
padding: 90rpx 0 64rpx 0;
.cicon-check-round {
font-size: 96rpx;
color: #04b750;
}
.success-title {
font-weight: 500;
color: #333333;
font-size: 32rpx;
}
.success-btn {
width: 492rpx;
height: 70rpx;
background: linear-gradient(90deg, var(--ui-BG-Main-gradient), var(--ui-BG-Main));
border-radius: 35rpx;
}
}
</style> </style>

View File

@ -394,7 +394,7 @@
success: async function (res) { success: async function (res) {
if (res.confirm) { if (res.confirm) {
// #ifdef MP // #ifdef MP
sheep.$platform.useProvider('wechat').subscribeMessage('order_apply_refund'); sheep.$platform.useProvider('wechat').subscribeMessage('order_refund');
// #endif // #endif
const { error, data } = await sheep.$api.order.applyRefund(orderId); const { error, data } = await sheep.$api.order.applyRefund(orderId);
if (error === 0) { if (error === 0) {

View File

@ -1,53 +1,34 @@
<template> <template>
<s-layout title="充值" class="withdraw-wrap" navbar="inner"> <s-layout title="充值" class="withdraw-wrap" navbar="inner">
<view <view class="wallet-num-box ss-flex ss-col-center ss-row-between" :style="[
class="wallet-num-box ss-flex ss-col-center ss-row-between" {
:style="[ marginTop: '-' + Number(statusBarHeight + 88) + 'rpx',
{ paddingTop: Number(statusBarHeight + 108) + 'rpx',
marginTop: '-' + Number(statusBarHeight + 88) + 'rpx', },
paddingTop: Number(statusBarHeight + 108) + 'rpx', ]">
},
]"
>
<view class=""> <view class="">
<view class="num-title">当前余额</view> <view class="num-title">当前余额</view>
<view class="wallet-num">{{ userInfo.money }}</view> <view class="wallet-num">{{ userInfo.money }}</view>
</view> </view>
<button class="ss-reset-button log-btn" @tap="sheep.$router.go('/pages/pay/recharge-log')" <button class="ss-reset-button log-btn" @tap="sheep.$router.go('/pages/pay/recharge-log')"></button>
>充值记录</button
>
</view> </view>
<view class="recharge-box"> <view class="recharge-box">
<view class="recharge-card-box" v-if="state.data.status"> <view class="recharge-card-box" v-if="state.data.status">
<view class="input-label ss-m-b-50">充值金额</view> <view class="input-label ss-m-b-50">充值金额</view>
<view class="input-box ss-flex border-bottom ss-p-b-20" v-if="state.data.custom_status"> <view class="input-box ss-flex border-bottom ss-p-b-20" v-if="state.data.custom_status">
<view class="unit"></view> <view class="unit"></view>
<uni-easyinput <uni-easyinput v-model="state.recharge_money" type="digit" placeholder="请输入充值金额" :inputBorder="false">
v-model="state.recharge_money"
type="digit"
placeholder="请输入充值金额"
:inputBorder="false"
>
</uni-easyinput> </uni-easyinput>
</view> </view>
<view class="face-value-box ss-flex ss-flex-wrap ss-m-y-40"> <view class="face-value-box ss-flex ss-flex-wrap ss-m-y-40">
<button <button class="ss-reset-button face-value-btn" v-for="item in state.faceValueList" :key="item.money"
class="ss-reset-button face-value-btn" :class="[{ 'btn-active': state.recharge_money == parseFloat(item.money) }]" @tap="onCard(item.money)">
v-for="item in state.faceValueList"
:key="item.money"
:class="[{ 'btn-active': state.recharge_money == parseFloat(item.money) }]"
@tap="onCard(item.money)"
>
<text class="face-value-title">{{ item.money }}</text> <text class="face-value-title">{{ item.money }}</text>
<view v-if="item.gift" class="face-value-tag"> <view v-if="item.gift" class="face-value-tag">
{{ item.gift }}{{ state.data.gift_type == 'money' ? '元' : '积分' }}</view {{ item.gift }}{{ state.data.gift_type == 'money' ? '元' : '积分' }}</view>
>
</button> </button>
</view> </view>
<button <button class="ss-reset-button save-btn ui-BG-Main-Gradient ss-m-t-60 ui-Shadow-Main" @tap="onConfirm">
class="ss-reset-button save-btn ui-BG-Main-Gradient ss-m-t-60 ui-Shadow-Main"
@tap="onConfirm"
>
确认充值 确认充值
</button> </button>
</view> </view>
@ -57,210 +38,213 @@
</template> </template>
<script setup> <script setup>
import { computed, reactive } from 'vue'; import { computed, reactive } from 'vue';
import sheep from '@/sheep'; import sheep from '@/sheep';
import { onLoad } from '@dcloudio/uni-app'; import { onLoad } from '@dcloudio/uni-app';
const userInfo = computed(() => sheep.$store('user').userInfo); const userInfo = computed(() => sheep.$store('user').userInfo);
const statusBarHeight = sheep.$platform.device.statusBarHeight * 2; const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
const headerBg = sheep.$url.css('/static/img/shop/user/withdraw_bg.png'); const headerBg = sheep.$url.css('/static/img/shop/user/withdraw_bg.png');
const state = reactive({ const state = reactive({
recharge_money: '', recharge_money: '',
data: {}, data: {},
faceValueList: [], faceValueList: [],
});
//
function onCard(e) {
state.recharge_money = e;
}
async function getRechargeTabs() {
const res = await sheep.$api.trade.rechargeRules();
if (res.error === 0) {
state.data = res.data;
state.data.status = res.data.status;
state.faceValueList = res.data.quick_amounts;
}
}
function onChange(e) {
state.data.gift_type = e.detail.value;
}
async function onConfirm() {
const { error, data } = await sheep.$api.trade.recharge({
recharge_money: state.recharge_money,
}); });
// if (error === 0) {
// #ifdef MP
function onCard(e) { sheep.$platform.useProvider('wechat').subscribeMessage('money_change');
state.recharge_money = e; // #endif
sheep.$router.go('/pages/pay/index', { orderSN: data.order_sn, type: 'recharge' });
} }
async function getRechargeTabs() { }
const res = await sheep.$api.trade.rechargeRules(); onLoad(() => {
if (res.error === 0) { getRechargeTabs();
state.data = res.data; });
state.data.status = res.data.status;
state.faceValueList = res.data.quick_amounts;
}
}
function onChange(e) {
state.data.gift_type = e.detail.value;
}
async function onConfirm() {
const { error, data } = await sheep.$api.trade.recharge({
recharge_money: state.recharge_money,
});
if (error === 0) {
sheep.$router.go('/pages/pay/index', { orderSN: data.order_sn, type: 'recharge' });
}
}
onLoad(() => {
getRechargeTabs();
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep() { :deep() {
.uni-input-input { .uni-input-input {
font-family: OPPOSANS !important; font-family: OPPOSANS !important;
} }
}
.wallet-num-box {
padding: 0 40rpx 80rpx;
background: var(--ui-BG-Main) v-bind(headerBg) center/750rpx 100% no-repeat;
border-radius: 0 0 5% 5%;
.num-title {
font-size: 26rpx;
font-weight: 500;
color: $white;
margin-bottom: 20rpx;
} }
.wallet-num-box { .wallet-num {
padding: 0 40rpx 80rpx; font-size: 60rpx;
background: var(--ui-BG-Main) v-bind(headerBg) center/750rpx 100% no-repeat; font-weight: 500;
border-radius: 0 0 5% 5%; color: $white;
font-family: OPPOSANS;
}
.num-title { .log-btn {
font-size: 26rpx; width: 170rpx;
font-weight: 500; height: 60rpx;
color: $white; line-height: 60rpx;
margin-bottom: 20rpx; border: 1rpx solid $white;
border-radius: 30rpx;
padding: 0;
font-size: 26rpx;
font-weight: 500;
color: $white;
}
}
.recharge-box {
position: relative;
padding: 0 30rpx;
margin-top: -60rpx;
}
.save-btn {
width: 620rpx;
height: 86rpx;
border-radius: 44rpx;
font-size: 30rpx;
}
.recharge-card-box {
width: 690rpx;
background: var(--ui-BG);
border-radius: 20rpx;
padding: 30rpx;
box-sizing: border-box;
.input-label {
font-size: 30rpx;
font-weight: 500;
color: #333;
}
.unit {
display: flex;
align-items: center;
font-size: 48rpx;
font-weight: 500;
}
.uni-easyinput__placeholder-class {
font-size: 30rpx;
height: 60rpx;
display: flex;
align-items: center;
}
:deep(.uni-easyinput__content-input) {
font-size: 48rpx;
}
.face-value-btn {
width: 200rpx;
height: 144rpx;
border: 1px solid var(--ui-BG-Main);
border-radius: 10rpx;
position: relative;
z-index: 1;
margin-bottom: 15rpx;
margin-right: 15rpx;
&:nth-of-type(3n) {
margin-right: 0;
} }
.wallet-num { .face-value-title {
font-size: 60rpx; font-size: 36rpx;
font-weight: 500; font-weight: 500;
color: var(--ui-BG-Main);
font-family: OPPOSANS;
&::after {
content: '元';
font-size: 24rpx;
margin-left: 6rpx;
}
}
.face-value-tag {
position: absolute;
z-index: 2;
height: 40rpx;
line-height: 40rpx;
background: var(--ui-BG-Main);
opacity: 0.8;
border-radius: 10rpx 0 20rpx 0;
top: 0;
left: -2rpx;
padding: 0 16rpx;
font-size: 22rpx;
color: $white; color: $white;
font-family: OPPOSANS; font-family: OPPOSANS;
} }
.log-btn { &::before {
width: 170rpx; position: absolute;
height: 60rpx; content: ' ';
line-height: 60rpx; width: 100%;
border: 1rpx solid $white; height: 100%;
border-radius: 30rpx; background: var(--ui-BG-Main);
padding: 0; opacity: 0.1;
font-size: 26rpx; z-index: 0;
font-weight: 500; left: 0;
top: 0;
}
}
.btn-active {
z-index: 1;
&::before {
content: '';
background: var(--ui-BG-Main);
opacity: 1;
}
.face-value-title {
color: $white; color: $white;
}
}
.recharge-box {
position: relative;
padding: 0 30rpx;
margin-top: -60rpx;
}
.save-btn {
width: 620rpx;
height: 86rpx;
border-radius: 44rpx;
font-size: 30rpx;
}
.recharge-card-box {
width: 690rpx;
background: var(--ui-BG);
border-radius: 20rpx;
padding: 30rpx;
box-sizing: border-box;
.input-label {
font-size: 30rpx;
font-weight: 500;
color: #333;
}
.unit {
display: flex;
align-items: center;
font-size: 48rpx;
font-weight: 500;
}
.uni-easyinput__placeholder-class {
font-size: 30rpx;
height: 60rpx;
display: flex;
align-items: center;
}
:deep(.uni-easyinput__content-input) {
font-size: 48rpx;
}
.face-value-btn {
width: 200rpx;
height: 144rpx;
border: 1px solid var(--ui-BG-Main);
border-radius: 10rpx;
position: relative; position: relative;
z-index: 1; z-index: 1;
margin-bottom: 15rpx; font-family: OPPOSANS;
margin-right: 15rpx;
&:nth-of-type(3n) {
margin-right: 0;
}
.face-value-title {
font-size: 36rpx;
font-weight: 500;
color: var(--ui-BG-Main);
font-family: OPPOSANS;
&::after {
content: '元';
font-size: 24rpx;
margin-left: 6rpx;
}
}
.face-value-tag {
position: absolute;
z-index: 2;
height: 40rpx;
line-height: 40rpx;
background: var(--ui-BG-Main);
opacity: 0.8;
border-radius: 10rpx 0 20rpx 0;
top: 0;
left: -2rpx;
padding: 0 16rpx;
font-size: 22rpx;
color: $white;
font-family: OPPOSANS;
}
&::before {
position: absolute;
content: ' ';
width: 100%;
height: 100%;
background: var(--ui-BG-Main);
opacity: 0.1;
z-index: 0;
left: 0;
top: 0;
}
} }
.btn-active { .face-value-tag {
z-index: 1; background: $white;
color: var(--ui-BG-Main);
&::before { font-family: OPPOSANS;
content: '';
background: var(--ui-BG-Main);
opacity: 1;
}
.face-value-title {
color: $white;
position: relative;
z-index: 1;
font-family: OPPOSANS;
}
.face-value-tag {
background: $white;
color: var(--ui-BG-Main);
font-family: OPPOSANS;
}
} }
} }
}
</style> </style>

View File

@ -135,7 +135,7 @@ export default class SheepPay {
const { error, data } = await this.prepay(); const { error, data } = await this.prepay();
if (error === 0) { if (error === 0) {
const redirect_url = `${getRootUrl()}pages/pay/result?orderSN=${this.orderSN}&payment=${this.payment const redirect_url = `${getRootUrl()}pages/pay/result?orderSN=${this.orderSN}&payment=${this.payment
}`; }&orderType=${this.orderType}`;
location.href = `${data.pay_data.h5_url}&redirect_url=${encodeURIComponent(redirect_url)}`; location.href = `${data.pay_data.h5_url}&redirect_url=${encodeURIComponent(redirect_url)}`;
} }
} }
@ -145,7 +145,7 @@ export default class SheepPay {
let { error, data } = await this.prepay(); let { error, data } = await this.prepay();
if (error === 0) { if (error === 0) {
const redirect_url = `${getRootUrl()}pages/pay/result?orderSN=${this.orderSN}&payment=${this.payment const redirect_url = `${getRootUrl()}pages/pay/result?orderSN=${this.orderSN}&payment=${this.payment
}`; }&orderType=${this.orderType}`;
location.href = data.pay_data + encodeURIComponent(redirect_url); location.href = data.pay_data + encodeURIComponent(redirect_url);
} }
} }

View File

@ -3,7 +3,7 @@ import uni from '@dcloudio/vite-plugin-uni';
import path from 'path'; import path from 'path';
// import viteCompression from 'vite-plugin-compression'; // import viteCompression from 'vite-plugin-compression';
import uniReadPagesV3Plugin from './sheep/router/utils/uni-read-pages-v3'; import uniReadPagesV3Plugin from './sheep/router/utils/uni-read-pages-v3';
import mpliveMainfestPlugin from './sheep/libs/mpLive-manifest-plugin'; import mpliveMainfestPlugin from './sheep/libs/mplive-manifest-plugin';
// https://vitejs.dev/config/ // https://vitejs.dev/config/