支付金额为0时的处理修改

This commit is contained in:
2025-10-21 13:26:09 +08:00
parent 5f3a307fec
commit f5a2679913
4 changed files with 630 additions and 551 deletions

View File

@@ -1,153 +1,177 @@
<template> <template>
<view> <view>
<view class="box" v-if="isShow"> <view class="box" v-if="isShow">
<view class="u-flex u-col-center" style="align-items: center;"> <view class="u-flex u-col-center" style="align-items: center">
<image src="/static/icon/charge.png" class="charge" mode=""></image> <image src="/static/icon/charge.png" class="charge" mode=""></image>
<view class="u-m-l-28 color-333 font-700"> 充值享优惠</view> <view class="u-m-l-28 color-333 font-700"> 充值享优惠</view>
</view> </view>
<scroll-view scroll-x="true" class="u-m-t-20"> <scroll-view scroll-x="true" class="u-m-t-20">
<view class="list"> <view class="list">
<view class="item color1" @click="itemClick(index)" v-for="(item,index) in list" :key="index" <view
:class="{active:sel==index}"> class="item color1"
@click="itemClick(index)"
v-for="(item, index) in list"
:key="index"
:class="{ active: sel == index }"
>
<view class=""> <view class="">
<text></text> <text></text>
<text class="font-700" style="font-size: 48rpx;" <text
:class="{color2:sel==index}">{{item.amount}}</text> class="font-700"
style="font-size: 48rpx"
:class="{ color2: sel == index }"
>{{ item.amount }}</text
>
</view> </view>
<view class="font-12" v-if="item.rewardAmount" :class="{color2:sel==index}"> <view
class="font-12"
v-if="item.rewardAmount"
:class="{ color2: sel == index }"
>
<text></text> <text></text>
<text></text> <text></text>
<text class="font-14">{{item.rewardAmount}}</text> <text class="font-14">{{ item.rewardAmount }}</text>
</view> </view>
<view class="font-12" v-if="item.rewardPoints"> <view class="font-12" v-if="item.rewardPoints">
<text></text> <text></text>
<text class="font-14">{{item.rewardPoints}}</text> <text class="font-14">{{ item.rewardPoints }}</text>
<text>积分</text> <text>积分</text>
</view> </view>
<view class="font-12 color-666" v-if="item.couponInfoList.length"> <view class="font-12 color-666" v-if="item.couponInfoList.length">
<text></text> <text></text>
<text>{{couponNum(item.couponInfoList)}}</text> <text>{{ couponNum(item.couponInfoList) }}</text>
<text>张券</text> <text>张券</text>
<text class="color2 u-m-l-8" v-if="sel==index" @click="lookCoupon(item)">查看</text> <text
class="color2 u-m-l-8"
v-if="sel == index"
@click="lookCoupon(item)"
>查看</text
>
</view> </view>
<view class="sel u-flex" v-if="sel==index"> <view class="sel u-flex" v-if="sel == index">
<image class="image" src="/static/vip/sel.png" mode=""></image> <image class="image" src="/static/vip/sel.png" mode=""></image>
</view> </view>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
</view> </view>
<view class="" v-else></view> <view class="" v-else></view>
<CouponList v-model="couponModel.show" :list="couponModel.couponInfoList"></CouponList> <CouponList
v-model="couponModel.show"
:list="couponModel.couponInfoList"
></CouponList>
</view> </view>
</template> </template>
<script setup> <script setup>
import CouponList from '@/components/coupon/list.vue' import CouponList from "@/components/coupon/list.vue";
import * as rechargeApi from '@/common/api/market/recharge.js' import * as rechargeApi from "@/common/api/market/recharge.js";
import { import { useCartsStore } from "@/stores/carts.js";
useCartsStore import { onMounted, reactive, ref, watch } from "vue";
} from '@/stores/carts.js'; const couponModel = reactive({
import {
onMounted,reactive,
ref,
watch
} from 'vue';
const couponModel = reactive({
show: false, show: false,
couponInfoList: [] couponInfoList: [],
}) });
function lookCoupon(item) { function lookCoupon(item) {
couponModel.couponInfoList = item.couponInfoList couponModel.couponInfoList = item.couponInfoList;
couponModel.show = true couponModel.show = true;
} }
function couponNum(list) { function couponNum(list) {
return list.reduce((prve, cur) => { return list.reduce((prve, cur) => {
return prve + cur.num return prve + cur.num;
}, 0) }, 0);
} }
const cartStore = useCartsStore() const cartStore = useCartsStore();
const list = ref([]) const list = ref([]);
const sel = ref(-1) const sel = ref(-1);
const isShow = ref(false) const isShow = ref(false);
let data={} let data = {};
let $riginList=[] let $riginList = [];
async function init() { const emits = defineEmits(["updateChargeSel", "updateRechargeId","updateIsShow"]);
console.log('recharge', )
const shopId = uni.cache.get('shopId') async function init() {
console.log("recharge");
const shopId = uni.cache.get("shopId");
const res = await rechargeApi.config({ const res = await rechargeApi.config({
shopId shopId,
}) });
if (res) { if (res) {
data=res; data = res;
$riginList=res.rechargeDetailList $riginList = res.rechargeDetailList;
isShow.value = res.isOrder isShow.value = res.isOrder&&res.isEnable?true:false;
list.value = res.rechargeDetailList.filter(v=>v.amount>cartStore.orderCostSummary.finalPayAmount) list.value = res.rechargeDetailList.filter(
if(list.value.length){ (v) => v.amount > cartStore.orderCostSummary.finalPayAmount
updateSel() );
if (list.value.length) {
updateSel();
} }
} }
}
watch(
() => cartStore.orderCostSummary.finalPayAmount,
(newval) => {
list.value = $riginList.filter((v) => v.amount > newval);
if (list.value.length) {
updateSel();
} }
watch(()=>cartStore.orderCostSummary.finalPayAmount,(newval)=>{
list.value=$riginList.filter(v=>v.amount>newval)
if(list.value.length){
updateSel()
} }
}) );
const emits=defineEmits(['updateChargeSel','updateRechargeId']) function updateSel() {
function updateSel(){ const selItem = list.value[sel.value];
const selItem=list.value[sel.value] emits("updateChargeSel", selItem ? selItem : {});
emits('updateChargeSel',selItem?selItem:{}) emits("updateRechargeId", data.id);
emits('updateRechargeId',data.id) }
function itemClick(index) {
console.log("itemClick", sel.value, index);
if (sel.value == -1) {
sel.value = index;
return;
} }
function itemClick(index){ if (sel.value == index) {
sel.value = -1;
console.log('itemClick',sel.value,index); return;
if(sel.value==-1){
sel.value=index
return
} }
if(sel.value==index){ sel.value = index;
sel.value=-1 }
return watch(
() => sel.value,
(newval) => {
updateSel();
} }
sel.value=index );
} watch(()=>isShow.value,(newval)=>{
watch(()=>sel.value,(newval)=>{ emits("updateIsShow", newval);
updateSel() })
}) onMounted(() => {
onMounted(() => { init();
init() });
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.color1{ .color1 {
color: #5F2E0F; color: #5f2e0f;
} }
.color2{ .color2 {
color: #FF6300; color: #ff6300;
} }
.box { .box {
background-color: #fdf9f6; background-color: #fdf9f6;
padding: 30rpx; padding: 30rpx;
margin-top: 32rpx; margin-top: 32rpx;
border-radius: 22rpx; border-radius: 22rpx;
overflow: hidden; overflow: hidden;
} }
.charge { .charge {
width: 70rpx; width: 70rpx;
height: 70rpx; height: 70rpx;
} }
.list { .list {
display: flex; display: flex;
gap: 20rpx; gap: 20rpx;
padding: 20rpx 0; padding: 20rpx 0;
@@ -155,7 +179,7 @@
.item { .item {
padding: 36rpx 22rpx; padding: 36rpx 22rpx;
border-radius: 42rpx; border-radius: 42rpx;
background: linear-gradient(180deg, #F5F5F5 58.54%, #FFF 104.47%); background: linear-gradient(180deg, #f5f5f5 58.54%, #fff 104.47%);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
@@ -163,12 +187,12 @@
position: relative; position: relative;
box-sizing: border-box; box-sizing: border-box;
border: 6rpx solid transparent; border: 6rpx solid transparent;
transition: all .3s ease-in-out; transition: all 0.3s ease-in-out;
min-width: 202rpx; min-width: 202rpx;
&.active { &.active {
background: linear-gradient(180deg, #FFC29A -26.17%, #FFF 64.06%); background: linear-gradient(180deg, #ffc29a -26.17%, #fff 64.06%);
border: 6rpx solid #FE6C0E; border: 6rpx solid #fe6c0e;
box-shadow: 0 0 31rpx 2rpx #fe8b435e; box-shadow: 0 0 31rpx 2rpx #fe8b435e;
} }
@@ -185,5 +209,5 @@
} }
} }
} }
} }
</style> </style>

View File

@@ -115,6 +115,7 @@
<ChargeVue <ChargeVue
@updateChargeSel="(e) => updateChargeSel(e)" @updateChargeSel="(e) => updateChargeSel(e)"
@updateRechargeId="updateRechargeId" @updateRechargeId="updateRechargeId"
@updateIsShow="updateIsShow"
v-if="listinfo.status == 'unpaid' || !listinfo.id" v-if="listinfo.status == 'unpaid' || !listinfo.id"
></ChargeVue> ></ChargeVue>
</view> </view>
@@ -275,7 +276,12 @@ const customStyle = {
const cartStore = useCartsStore(); const cartStore = useCartsStore();
//充值相关 //充值相关start
//充值和余额支付是否可用
const isCanUseCharge = ref(false);
function updateIsShow(e){
isCanUseCharge.value = e;
}
const rechargeItem = ref({ const rechargeItem = ref({
id: "", id: "",
}); });
@@ -289,6 +295,7 @@ function updateChargeSel(newval) {
rechargeItem.value = newval; rechargeItem.value = newval;
console.log("updateChargeSel", newval); console.log("updateChargeSel", newval);
} }
//充值相关end
async function onMessage(Message) { async function onMessage(Message) {
cartStore.onMessage(Message, cartsSocket); cartStore.onMessage(Message, cartsSocket);
@@ -435,14 +442,15 @@ const orderorderInfo = async () => {
orderId: listinfo.id, orderId: listinfo.id,
}) })
: await APIhistoryOrder({ : await APIhistoryOrder({
tableCode: options.tableCode, tableCode: options.tableCode||"",
}); });
orderRemarker.value = res.remark; orderRemarker.value = res.remark;
Object.assign(listinfo, res); Object.assign(listinfo, res);
if (res && res.tableCode) { if (res && res.tableCode) {
socketInitPar.table_code = res.tableCode; socketInitPar.table_code = res.tableCode;
let tableRes = await getTableInfo({ let tableRes = await getTableInfo({
tableCode: options.tableCode, tableCode: options.tableCode||"",
}); });
console.log(tableRes); console.log(tableRes);
listinfo.tableName = tableRes.name; listinfo.tableName = tableRes.name;
@@ -450,7 +458,7 @@ const orderorderInfo = async () => {
if (options.tableCode) { if (options.tableCode) {
socketInitPar.table_code = options.tableCode; socketInitPar.table_code = options.tableCode;
let tableRes = await getTableInfo({ let tableRes = await getTableInfo({
tableCode: options.tableCode, tableCode: options.tableCode||"",
}); });
console.log(tableRes); console.log(tableRes);
listinfo.tableName = tableRes.name; listinfo.tableName = tableRes.name;
@@ -626,7 +634,7 @@ const createOrder = async () => {
placeNum: listinfo.id ? listinfo.placeNum * 1 + 1 : 1, //当前订单下单次数 placeNum: listinfo.id ? listinfo.placeNum * 1 + 1 : 1, //当前订单下单次数
waitCall: "", //是否等叫 0 否 1 等叫 waitCall: "", //是否等叫 0 否 1 等叫
orderId: listinfo.id || "", orderId: listinfo.id || "",
tableCode: options.tableCode, tableCode: options.tableCode||'',
userId: uni.cache.get("userInfo").id || "", // userId: uni.cache.get("userInfo").id || "", //
}); });
// 清空购物车 // 清空购物车
@@ -1055,7 +1063,7 @@ async function init(opt) {
if (res) { if (res) {
uni.cache.set("tableCode", res.tableCode); uni.cache.set("tableCode", res.tableCode);
uni.cache.set("tableCode", res.seatNum); uni.cache.set("tableCode", res.seatNum);
options.tableCode = res.tableCode; options.tableCode = res.tableCode||'';
cartStore.setSeatFeeConfig("personCount", res.seatNum); cartStore.setSeatFeeConfig("personCount", res.seatNum);
cartStore.setDinnerType(res.dineMode || "dine-in"); cartStore.setDinnerType(res.dineMode || "dine-in");
orderRemarker.value = res.remark; orderRemarker.value = res.remark;
@@ -1151,8 +1159,11 @@ const disablePayType = computed(() => {
) { ) {
arr.add("余额支付"); arr.add("余额支付");
} }
if (cartStore.orderCostSummary.orderOriginFinalPayAmount <= 0) { // if (cartStore.orderCostSummary.orderOriginFinalPayAmount <= 0) {
arr.add("微信支付"); // arr.add("微信支付");
// }
if(!isCanUseCharge.value){
arr.add("余额支付");
} }
return Array.from(arr); return Array.from(arr);

View File

@@ -1,20 +1,28 @@
<!-- 充值中心 --> <!-- 充值中心 -->
<template> <template>
<view class="container"> <view class="container">
<up-navbar bgColor="transparent" title="充值中心" @leftClick="back"></up-navbar> <up-navbar
bgColor="transparent"
title="充值中心"
@leftClick="back"
></up-navbar>
<view class="header-wrap"> <view class="header-wrap">
<image class="bg" src="/static/czzx_header_bg.png" mode="aspectFill"></image> <image
class="bg"
src="/static/czzx_header_bg.png"
mode="aspectFill"
></image>
<view class="select-shop"> <view class="select-shop">
<view class="select-btn"> <view class="select-btn">
<up-icon name="map" color="#333"></up-icon> <up-icon name="map" color="#333"></up-icon>
<text class="t">{{shopInfo.shopName}}</text> <text class="t">{{ shopInfo.shopName }}</text>
<up-icon name="arrow-right" color="#333"></up-icon> <up-icon name="arrow-right" color="#333"></up-icon>
</view> </view>
</view> </view>
<view class="balance-wrap"> <view class="balance-wrap">
<view class="left"> <view class="left">
<text class="i t">余额</text> <text class="i t">余额</text>
<text class="n t">{{shopUserInfo.amount||0}}</text> <text class="n t">{{ shopUserInfo.amount || 0 }}</text>
</view> </view>
<view class="right"> <view class="right">
<text class="t" @click="toDetail">明细</text> <text class="t" @click="toDetail">明细</text>
@@ -22,48 +30,68 @@
</view> </view>
</view> </view>
<view class="btm-wrap"> <view class="btm-wrap">
<view class=""> <view class=""> </view>
</view>
</view> </view>
</view> </view>
<view class="bottom"> <view class="bottom">
<view class="u-flex u-flex-between"> <view class="u-flex u-flex-between">
<view class="u-flex "> <view class="u-flex">
<image src="/static/vip/money.png" style="width: 44rpx;height: 44rpx;" mode=""></image> <image
src="/static/vip/money.png"
style="width: 44rpx; height: 44rpx"
mode=""
></image>
<text class="u-m-l-24 color-333 font-16 font-700">立即充值</text> <text class="u-m-l-24 color-333 font-16 font-700">立即充值</text>
</view> </view>
<view class="font-12 color-999"> <view class="font-12 color-999">
<text>充值代表接受</text> <text>充值代表接受</text>
<text style="color: #ECB592;">用户隐私协议</text> <text style="color: #ecb592">用户隐私协议</text>
</view> </view>
</view> </view>
<view class="list u-m-t-40"> <view class="list u-m-t-40">
<view class="item color1" @click="sel=index" v-for="(item,index) in list" :key="index" <view
:class="{active:sel==index}"> class="item color1"
@click="sel = index"
v-for="(item, index) in list"
:key="index"
:class="{ active: sel == index }"
>
<view class=""> <view class="">
<text></text> <text></text>
<text class="font-700" style="font-size: 48 u-flex-1rpx;" <text
:class="{color2:sel==index}">{{item.amount}}</text> class="font-700"
style="font-size: 48 u-flex-1rpx"
:class="{ color2: sel == index }"
>{{ item.amount }}</text
>
</view> </view>
<view class="font-12" v-if="item.rewardAmount" :class="{color2:sel==index}"> <view
class="font-12"
v-if="item.rewardAmount"
:class="{ color2: sel == index }"
>
<text></text> <text></text>
<text></text> <text></text>
<text class="font-14">{{item.rewardAmount}}</text> <text class="font-14">{{ item.rewardAmount }}</text>
</view> </view>
<view class="font-12" v-if="item.rewardPoints" style="color: #5F2E0F;"> <view class="font-12" v-if="item.rewardPoints" style="color: #5f2e0f">
<text></text> <text></text>
<text class="font-14">{{item.rewardPoints}}</text> <text class="font-14">{{ item.rewardPoints }}</text>
<text class="">积分</text> <text class="">积分</text>
</view> </view>
<view class="font-12 color-666" v-if="item.couponInfoList.length"> <view class="font-12 color-666" v-if="item.couponInfoList.length">
<text></text> <text></text>
<text>{{couponNum(item.couponInfoList) }}</text> <text>{{ couponNum(item.couponInfoList) }}</text>
<text>张券</text> <text>张券</text>
<text class="color2 u-m-l-8" v-if="sel==index" @click="lookCoupon(item)">查看</text> <text
class="color2 u-m-l-8"
v-if="sel == index"
@click="lookCoupon(item)"
>查看</text
>
</view> </view>
<view class="sel u-flex" v-if="sel==index"> <view class="sel u-flex" v-if="sel == index">
<image class="image" src="/static/vip/sel.png" mode=""></image> <image class="image" src="/static/vip/sel.png" mode=""></image>
</view> </view>
</view> </view>
@@ -71,25 +99,38 @@
<template v-if="state.isCustom"> <template v-if="state.isCustom">
<view class="u-flex other flex-center"> <view class="u-flex other flex-center">
<text class="font-14 color-333 font-700 u-m-r-28">其他金额</text> <text class="font-14 color-333 font-700 u-m-r-28">其他金额</text>
<up-input v-model="money" type="number" placeholder="请输入充值金额" border="none" <up-input
placeholder-style="font-size:14px;"></up-input> v-model="money"
type="number"
placeholder="请输入充值金额"
border="none"
placeholder-style="font-size:14px;"
></up-input>
</view> </view>
<view class="color-999 font-12 u-m-t-4">自定义金额充值时不享受任何优惠赠送</view> <view class="color-999 font-12 u-m-t-4"
>自定义金额充值时不享受任何优惠赠送</view
>
</template> </template>
<button class="buy-btn" @click="buy"> <button
<text class="font-16 ">{{charge_money}}</text> class="buy-btn"
@click="buy"
:class="{ disabled: !state.isEnable }"
>
<text class="font-16">{{ charge_money }}</text>
<text class="font-14 u-m-l-24">立即充值</text> <text class="font-14 u-m-l-24">立即充值</text>
</button> </button>
<view class="u-m-t-36 color-999 font-12"> <view class="u-m-t-36 color-999 font-12">
<view>充值说明</view> <view>充值说明</view>
<view class="u-m-t-16"> <view class="u-m-t-16">
<text>适用门店</text> <text>适用门店</text>
<text class="color2 u-m-l-28" @click="toShopList">全国门店通用 {{'>'}} </text> <text class="color2 u-m-l-28" @click="toShopList"
>全国门店通用 {{ ">" }}
</text>
</view> </view>
<view class="u-m-t-16"> <view class="u-m-t-16">
<text>有效期限</text> <text>有效期限</text>
<text class=" u-m-l-28">永久有效 </text> <text class="u-m-l-28">永久有效 </text>
</view> </view>
<view class="u-m-t-16 u-flex u-flex-y-center"> <view class="u-m-t-16 u-flex u-flex-y-center">
<text class="no-wrap">注意事项</text> <text class="no-wrap">注意事项</text>
@@ -97,184 +138,176 @@
<view>1.储值完成后不支持自助退款可联系商家处理</view> <view>1.储值完成后不支持自助退款可联系商家处理</view>
<view> 2.余额不支持转赠不可提现长期有效</view> <view> 2.余额不支持转赠不可提现长期有效</view>
</view> </view>
</view> </view>
<view class="u-m-t-16 u-flex u-flex-y-center"> <view class="u-m-t-16 u-flex u-flex-y-center">
<text class="no-wrap">充值说明</text> <text class="no-wrap">充值说明</text>
<text class="u-m-l-28" style="word-break: break-all;"> <text class="u-m-l-28" style="word-break: break-all">
{{state.remark||''}} {{ state.remark || "" }}
</text> </text>
</view> </view>
</view> </view>
</view> </view>
<CouponList v-model="couponModel.show" :list="couponModel.couponInfoList"></CouponList> <CouponList
v-model="couponModel.show"
:list="couponModel.couponInfoList"
></CouponList>
</view> </view>
</template> </template>
<script setup> <script setup>
import { import { APIusershopInfodetail, APIshopUserInfo } from "@/common/api/member.js";
APIusershopInfodetail, import CouponList from "@/components/coupon/list.vue";
APIshopUserInfo import * as rechargeApi from "@/common/api/market/recharge.js";
} from '@/common/api/member.js' import { recharge } from "@/common/api/order/index.js";
import CouponList from '@/components/coupon/list.vue' import { joinMember } from "@/common/api/order/index.js";
import * as rechargeApi from '@/common/api/market/recharge.js' import { ref, onMounted, computed, reactive, watch } from "vue";
import { import { onLoad } from "@dcloudio/uni-app";
recharge import { pay } from "@/utils/pay.js";
} from '@/common/api/order/index.js'
import {
joinMember
} from '@/common/api/order/index.js'
import {
ref,
onMounted,
computed,
reactive,
watch
} from 'vue'
import {
onLoad
} from '@dcloudio/uni-app'
import {
pay
} from '@/utils/pay.js'
function toShopList(){ function toShopList() {
uni.navigateTo({ uni.navigateTo({
url:'/pages/user/member/czzx-shop-list?shopId='+option.shopId url: "/pages/user/member/czzx-shop-list?shopId=" + option.shopId,
}) });
} }
function couponNum(list) { function couponNum(list) {
return list.reduce((prve, cur) => { return list.reduce((prve, cur) => {
return prve + cur.num return prve + cur.num;
}, 0) }, 0);
} }
const couponModel = reactive({ const couponModel = reactive({
show: false, show: false,
couponInfoList: [] couponInfoList: [],
}) });
function lookCoupon(item) { function lookCoupon(item) {
couponModel.show = true couponModel.show = true;
couponModel.couponInfoList = item.couponInfoList couponModel.couponInfoList = item.couponInfoList;
}
async function buy() {
if (!state.isEnable) {
return uni.showToast({
title: "充值未开启,暂不能充值",
icon: "none",
});
} }
async function buy() {
if (!charge_money.value) { if (!charge_money.value) {
return uni.showToast({ return uni.showToast({
title: '请选择或者输入充值金额', title: "请选择或者输入充值金额",
icon: 'none' icon: "none",
}) });
} }
const json = { const json = {
shopId: option.shopId, shopId: option.shopId,
shopUserId: shopUserInfo.id, shopUserId: shopUserInfo.id,
} };
if (sel.value < 0) { if (sel.value < 0) {
json.amount = `${money.value}`.trim() * 1 json.amount = `${money.value}`.trim() * 1;
} else { } else {
json.rechargeDetailId = list.value[sel.value].id json.rechargeDetailId = list.value[sel.value].id;
json.amount = list.value[sel.value].amount json.amount = list.value[sel.value].amount;
} }
const res = await recharge(json) const res = await recharge(json);
if (!res) { if (!res) {
return uni.showToast({ return uni.showToast({
title: '充值失败', title: "充值失败",
icon: 'error' icon: "error",
}) });
} }
const payRes = await pay(res) const payRes = await pay(res);
console.log(payRes); console.log(payRes);
if (payRes) { if (payRes) {
uni.showToast({ uni.showToast({
title: '充值成功', title: "充值成功",
icon: 'none' icon: "none",
}) });
init() init();
} }
}
} function toDetail() {
function toDetail() {
uni.navigateTo({ uni.navigateTo({
url: '/pages/user/member/billDetails?type=1&shopId=' + option.shopId url: "/pages/user/member/billDetails?type=1&shopId=" + option.shopId,
}) });
} }
function toPwd() { function toPwd() {
uni.navigateTo({ uni.navigateTo({
url: '/pages/user/member/setPassword?type=1&shopId=' + option.shopId url: "/pages/user/member/setPassword?type=1&shopId=" + option.shopId,
}) });
} }
function back() { function back() {
uni.navigateBack(); uni.navigateBack();
} }
const list = ref([]) const list = ref([]);
const sel = ref(0) const sel = ref(0);
const money = ref(null); const money = ref(null);
const option = reactive({ const option = reactive({
shopId: '' shopId: "",
}) });
const shopInfo = reactive({}) const shopInfo = reactive({});
const shopUserInfo = reactive({}) const shopUserInfo = reactive({});
const state = reactive({}) const state = reactive({});
async function init() { async function init() {
const shopInfoRes = await APIusershopInfodetail({ const shopInfoRes = await APIusershopInfodetail({
shopId: option.shopId shopId: option.shopId,
}) });
if (shopInfoRes) { if (shopInfoRes) {
Object.assign(shopInfo, shopInfoRes.shopInfo) Object.assign(shopInfo, shopInfoRes.shopInfo);
} }
const shopUserInfoRes = await APIshopUserInfo({ const shopUserInfoRes = await APIshopUserInfo({
shopId: option.shopId shopId: option.shopId,
}) });
if (shopUserInfoRes) { if (shopUserInfoRes) {
Object.assign(shopUserInfo, shopUserInfoRes) Object.assign(shopUserInfo, shopUserInfoRes);
} }
const res = await rechargeApi.config({ const res = await rechargeApi.config({
shopId: option.shopId shopId: option.shopId,
}) });
if (res) { if (res) {
Object.assign(state, res) Object.assign(state, res);
list.value = res.rechargeDetailList list.value = res.rechargeDetailList;
} }
} }
const charge_money = computed(() => { const charge_money = computed(() => {
if (sel.value < 0) { if (sel.value < 0) {
if (money.value > 0) { if (money.value > 0) {
return money.value return money.value;
} }
return '' return "";
} }
const item = list.value[sel.value] const item = list.value[sel.value];
if (item) { if (item) {
return item.amount return item.amount;
} }
return '' return "";
}) });
onLoad((opt) => { onLoad((opt) => {
Object.assign(option, opt) Object.assign(option, opt);
init() init();
}) });
watch(() => money.value, (newval) => { watch(
() => money.value,
(newval) => {
if (newval && newval > 0) { if (newval && newval > 0) {
sel.value = -1 sel.value = -1;
} }
}) }
);
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.color1 { .color1 {
color: #5F2E0F; color: #5f2e0f;
} }
.color2 { .color2 {
color: #FF6300; color: #ff6300;
} }
.buy-btn { .buy-btn {
margin-top: 28rpx; margin-top: 28rpx;
padding: 32rpx 32rpx; padding: 32rpx 32rpx;
color: #fff; color: #fff;
@@ -282,17 +315,24 @@
font-weight: 700; font-weight: 700;
border-radius: 80rpx; border-radius: 80rpx;
line-height: 1; line-height: 1;
background: linear-gradient(98deg, #fe6d1100 40.64%, #FFD1B4 105.2%), linear-gradient(259deg, #FE6D11 50.14%, #FFD1B4 114.93%); background: linear-gradient(98deg, #fe6d1100 40.64%, #ffd1b4 105.2%),
linear-gradient(259deg, #fe6d11 50.14%, #ffd1b4 114.93%);
box-shadow: 0 14rpx 30.4rpx 0 #fe8b435e; box-shadow: 0 14rpx 30.4rpx 0 #fe8b435e;
&.disabled {
background: #eee;
box-shadow: none;
border: none;
color: #999;
} }
}
.other { .other {
background: #F6F6F6; background: #f6f6f6;
padding: 24rpx 16rpx; padding: 24rpx 16rpx;
margin-top: 40rpx; margin-top: 40rpx;
} }
.header-wrap { .header-wrap {
width: 100%; width: 100%;
height: 530rpx; height: 530rpx;
box-sizing: border-box; box-sizing: border-box;
@@ -360,16 +400,16 @@
} }
} }
} }
} }
.bottom { .bottom {
background-color: rgba(255, 255, 255, .3); background-color: rgba(255, 255, 255, 0.3);
padding: 40rpx 28rpx 0 28rpx; padding: 40rpx 28rpx 0 28rpx;
transform: translateY(-140rpx); transform: translateY(-140rpx);
border-radius: 74rpx 74rpx 0 0; border-radius: 74rpx 74rpx 0 0;
} }
.list { .list {
display: grid; display: grid;
grid-template-columns: repeat(3, 1fr); grid-template-columns: repeat(3, 1fr);
column-gap: 20rpx; column-gap: 20rpx;
@@ -378,7 +418,7 @@
.item { .item {
padding: 36rpx 22rpx; padding: 36rpx 22rpx;
border-radius: 42rpx; border-radius: 42rpx;
background: linear-gradient(180deg, #F5F5F5 58.54%, #FFF 140.47%); background: linear-gradient(180deg, #f5f5f5 58.54%, #fff 140.47%);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
@@ -386,11 +426,11 @@
position: relative; position: relative;
box-sizing: border-box; box-sizing: border-box;
border: 6rpx solid transparent; border: 6rpx solid transparent;
transition: all .3s ease-in-out; transition: all 0.3s ease-in-out;
&.active { &.active {
background: linear-gradient(180deg, #FFC29A -26.17%, #FFF 64.06%); background: linear-gradient(180deg, #ffc29a -26.17%, #fff 64.06%);
border: 6rpx solid #FE6C0E; border: 6rpx solid #fe6c0e;
box-shadow: 0 0 31rpx 2rpx #fe8b435e; box-shadow: 0 0 31rpx 2rpx #fe8b435e;
} }
@@ -407,5 +447,5 @@
} }
} }
} }
} }
</style> </style>

View File

@@ -125,6 +125,10 @@ export const Memberpay = defineStore('memberpay', {
userId: uni.cache.get('userInfo').id || '' userId: uni.cache.get('userInfo').id || ''
}) })
console.log('actionsltPayOrder:res',res); console.log('actionsltPayOrder:res',res);
if(typeof res ==='string'){
resolve(res)
return
}
if(!res){ if(!res){
console.log('支付失败'); console.log('支付失败');
reject(false) reject(false)