feat(index): 添加单次消费选项和支付功能

新增单次消费档位选择弹窗及支付功能
移除未使用的组件和配置文件
This commit is contained in:
2025-12-14 12:18:24 +08:00
parent 2affab534c
commit 85ceb86058
16 changed files with 109 additions and 709 deletions

View File

@@ -1,7 +0,0 @@
Component({
properties: {},
data: {
showDialog: !1
},
methods: {}
});

View File

@@ -1,4 +0,0 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -1,37 +0,0 @@
<view>
<view class="keufubox">
<view class="kebox">
<view class="mykefu ">
<view class="le">
<image src="http://q990.img.aiyichuan.com/urm_huodong/20190416/1555414945804.jpg"></image>
<view class="box">
<view class="title">霸王餐福利</view>
<view class="desc">加客服进「声色福利群」</view>
</view>
</view>
<view class="btn">点我添加</view>
</view>
</view>
</view>
<view class="modal-dialog" wx:if="{{showDialog}}">
<view class="modal">
<view class="infopop-wrap">
<view class="infopop-content">
<view class="info-buy_notice">
<view class="top">
<view class="_top"></view>
<view class="title">购买须知</view>
</view>
<view style="max-height: 280px; overflow: auto;">
<view class="txt">
<view class="txt_p">此券属平台与商家补贴,一经售出无法退款,请确认后再下单。</view>
</view>
</view>
<button class="btn">我知道了</button>
</view>
</view>
<button class="infopop-close">×</button>
</view>
</view>
</view>
</view>

View File

@@ -1,189 +0,0 @@
.keufubox:last-child {
margin-bottom: -5.333vw;
}
.kebox {
border-radius: 1.6vw;
width: 92vw;
}
.kebox,.mykefu {
background: #fff;
}
.mykefu {
-webkit-box-pack: justify;
-ms-flex-pack: justify;
height: 17.067vw;
justify-content: space-between;
}
.mykefu .le {
-webkit-box-flex: 1;
flex: 1;
}
.mykefu,.mykefu .le {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
.mykefu .le image {
border-radius: 50%;
height: 9.6vw;
margin-right: 3.467vw;
max-width: 100%;
width: 9.6vw;
}
.mykefu .le .box {
width: 57.333vw;
}
.mykefu .le .title {
color: #2a2a2a;
font-size: 3.733vw;
}
.mykefu .le .desc,.mykefu .le .title {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.mykefu .le .desc {
color: #969696;
font-size: 3.2vw;
line-height: 4.133vw;
width: 57.333vw;
}
.kebox .btn {
border-radius: 6.667vw;
color: #fff;
font-size: 3.2vw;
height: 8.667vw;
line-height: 8.667vw;
position: relative;
text-align: center;
}
.mykefu .btn {
background: #28c418;
font-size: 3.2vw;
width: 18.267vw;
}
.modal-dialog {
position: fixed;
z-index: 20;
}
.modal-dialog,.modal-dialog .modal {
height: 100%;
left: 0;
top: 0;
width: 100%;
}
.modal-dialog .modal {
background: rgba(0,0,0,.5);
position: absolute;
transition: all .3s;
}
.infopop-wrap {
left: 50%;
position: absolute;
top: 45%;
transform: translate(-50%,-50%);
}
.infopop-content {
background-color: #fff;
border-radius: 2.133vw;
color: #666;
font-size: 4vw;
line-height: 5.333vw;
overflow: hidden;
padding-bottom: 6.667vw;
text-align: center;
width: 69.867vw;
}
.info-buy_notice .top {
color: #fff;
height: 21.867vw;
margin-bottom: 3.467vw;
overflow: hidden;
position: relative;
}
.info-buy_notice ._top {
background: #06a2b3;
border-radius: 0 0 50% 50%;
height: 100%;
left: 50%;
margin-bottom: 4vw;
position: absolute;
top: 0;
transform: translateX(-50%);
width: 120%;
}
.info-buy_notice .top .title {
color: #fff;
font-size: 4.8vw;
left: 0;
position: absolute;
text-align: center;
top: 50%;
transform: translateY(-50%);
width: 100%;
}
.info-buy_notice .txt {
font-size: 3.733vw;
line-height: 5.333vw;
padding: 0 4vw;
text-align: left;
}
.info-buy_notice .btn {
background-color: #06a2b3;
border-radius: 10.667vw;
color: #fff;
font-size: 4vw;
height: 10.667vw;
line-height: 10.667vw;
margin-bottom: -2.133vw;
margin-top: 5.333vw;
text-align: center;
width: 34.667vw;
}
.infopop-close {
background-color: #fff;
border-radius: 50%;
color: rgba(0,0,0,.6);
font-size: 8.267vw;
height: 8.533vw;
left: 50%;
line-height: 8.033vw;
margin: 4.267vw 0 0 -4.267vw;
padding: 0;
position: absolute;
text-align: center;
top: 100%;
width: 8.533vw;
}
.info-buy_notice .btn::after,.info-buy_notice .btn::before {
background: transparent;
border: none;
}

View File

@@ -1,5 +0,0 @@
Component({
properties: {},
data: {},
methods: {}
});

View File

@@ -1,4 +0,0 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -1,34 +0,0 @@
<view>
<view class="match-wrap">
<navigator class="goods-match" href="/pages/goodsDetails/goodsDetails">
<view class="til">
<image class="hot" src="/img/hot.png"></image> 为您搭配更优惠 </view>
<view class="item">
<view class="hd">
<view class="image-box __100">
<image lazyLoad="true" src="http://q990.img.aiyichuan.com/urm_huodong/20200331/1585643794622.jpg?imageView2/1/w/400/h/400"></image>
</view>
</view>
<view class="bd">
<view class="bd_name">【新会】椰子鸡再次返场9.9元起抢「骨汁恋·星汇店」100元代金券</view>
<view class="_btm">
<view class="_btm_lt">
<view class="bd_price">
<view class="now-price __normal">
<view class="symbol">¥</view>
<view class="buck">9.</view>
<view class="cent">90</view>
<view></view>
</view>
<view class="old">¥100.00</view>
</view>
</view>
<view class="_btm_rt">
<view class="bd_btn">立即抢购</view>
</view>
</view>
</view>
</view>
</navigator>
</view>
</view>

View File

@@ -1,171 +0,0 @@
.match-wrap {
border-top: 2.667vw solid #f8f8f8;
}
.goods-match {
background-color: #fff;
border-radius: 2.133vw;
display: block;
padding: 12vw 3.6vw 3.6vw;
position: relative;
}
.goods-match .til {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
background-color: #06a2b3;
border-radius: .533vw 2.933vw 2.933vw .533vw;
color: #fff;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
font-size: 3.2vw;
height: 5.867vw;
left: -.267vw;
padding-left: 1.467vw;
position: absolute;
top: 2.667vw;
width: 33.333vw;
}
.goods-match .til view {
margin-right: 1.333vw;
}
.goods-match .item {
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
.goods-match .hd {
-webkit-box-flex: 25.333vw;
border-radius: 1.6vw;
flex: 25.333vw 0 0;
height: 25.333vw;
overflow: hidden;
width: 25.333vw;
}
.image-box.__100 {
padding-top: 100%;
}
.image-box {
background-color: #ebebeb;
height: 0;
overflow: hidden;
position: relative;
}
.image-box image {
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.goods-match .bd {
-webkit-box-flex: 1;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex: 1;
flex-direction: column;
justify-content: space-between;
padding: 0 0 0 2.667vw;
}
.goods-match .bd_name {
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
color: #2a2a2a;
display: -webkit-box;
font-size: 3.733vw;
height: 16vw;
line-height: 5.333vw;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
}
.goods-match .bd ._btm {
-webkit-box-align: end;
-ms-flex-align: end;
align-items: flex-end;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
.goods-match .bd ._btm_lt {
-webkit-box-flex: 1;
flex: 1;
}
.goods-match .bd_price {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
.now-price {
color: #eb5252;
font-family: DIN;
font-size: 3.2vw;
line-height: 1.75em;
}
.goods-match .bd_price .old {
color: #9b9b9b;
font-family: DIN;
font-size: 3.2vw;
margin-left: 1.333vw;
text-decoration: line-through;
}
.goods-match .bd_btn {
background-color: #06a2b3;
border-radius: 3.333vw;
color: #fff;
font-size: 3.2vw;
height: 6.667vw;
line-height: 6.667vw;
padding: 0 3.6vw;
text-align: center;
}
.now-price .symbol {
display: inline;
margin: 0 .267vw 0 0;
}
.now-price.__normal .buck {
display: inline;
font-size: 4.8vw;
}
.cent {
display: inline;
}
.hot {
display: inline-block;
height: 13px;
margin-right: 4px;
width: 13px;
}

View File

@@ -16,7 +16,10 @@ Page({
tabStatus: {
coupon: !1,
shop: !1
}
},
showOneTimeOptions: !1,
oneTimeOptions: [],
oneTimeLoading: !1
},
bindViewTap: function () {
wx.navigateTo({
@@ -184,24 +187,100 @@ Page({
e.globalData.needJumpUrl = !1, this.isneedUpload = !0;
var t = this;
if (console.log("this.isSubmit", this.isSubmit), this.isSubmit) return !1;
if (t.data.user.money <= 0) return t.startup(), !1;
if (t.data.user.money < 10) {
if (this.isshowModal) return t.startup(), !1;
this.isshowModal = !0, wx.showModal({
wx.showActionSheet({
itemList: ["单次消费", "立即启动"],
success: function (res) {
if (res.tapIndex === 0) {
t.openOneTimeOptions();
} else {
if (t.data.user.money == 0) {
wx.showModal({
title: "提示",
content: "您的洗车金额为0元是否需要购买洗车金额",
confirmText: "去购买",
cancelText: "取消",
success: function (m) {
if (m.confirm) {
wx.navigateTo({
url: "/pages/voucher/voucher"
}), t.isneedUpload = !0;
}
}
});
return;
}
else if (t.data.user.money < 10) {
wx.showModal({
title: "提示",
content: "洗车金额不足10元是否需要购买洗车金额还是直接开机",
confirmText: "去购买",
cancelText: "直接开机",
success: function (m) {
if (m.confirm) {
wx.navigateTo({
url: "/pages/voucher/voucher"
}), t.isneedUpload = !0;
} else {
t.startup();
}
}
});
return;
}
t.startup();
}
}
});
},
openOneTimeOptions: function () {
var a = this;
if (a.data.oneTimeLoading) return !1;
a.setData({ oneTimeLoading: !0 });
t.request('/v2/miniprogram/recharge/once', e.globalData.deviceData || {}, !0).then(function (res) {
a.setData({
oneTimeOptions: res.data && res.data.list ? res.data.list : (res.data || []),
showOneTimeOptions: !0,
oneTimeLoading: !1
});
}).catch(function () {
a.setData({ oneTimeLoading: !1 });
});
},
closeOneTimeOptions: function () {
this.setData({ showOneTimeOptions: !1 });
},
payOneTime: function (evt) {
var a = this, i = evt.currentTarget.dataset.id;
if (!i) return !1;
wx.showLoading({ title: "" });
t.request('/v2/miniprogram/recharge/once/create', {
id: i,
devicecode: e.globalData.devicecode
}, !0).then(function (res) {
if (wx.hideLoading(), 200 != res.code) return wx.showModal({
title: "提示",
content: "账户余额小于10元是否立即购买洗车金额",
confirmText: "去购买",
cancelText: "立即启动",
success: function (e) {
e.confirm ? (wx.navigateTo({
url: "/pages/voucher/voucher"
}), t.isneedUpload = !0) : t.startup();
},
fail: function (e) {
console.log("fail:", e);
content: res.message || ""
}), !1;
var r = res.data.result;
wx.requestPayment({
timeStamp: r.timeStamp,
nonceStr: r.nonceStr,
package: r.package,
signType: r.signType,
paySign: r.paySign,
success: function () {
a.setData({ showOneTimeOptions: !1 });
wx.showModal({
title: "提示",
content: "限单次洗车"
});
a.getData();
a.startup();
}
});
} else t.startup();
}).catch(function () {
wx.hideLoading();
});
},
startup: function () {
var a = this;

View File

@@ -24,4 +24,16 @@
<view bindtap="toStart" class="scan-btn" wx:if="{{isScan}}">
<view class="sha">立即启动</view>
</view>
<view class="one-time-modal" wx:if="{{showOneTimeOptions}}">
<view class="one-time-inner">
<view class="one-time-title">选择单次消费档位</view>
<view class="one-time-tip">限单次洗车</view>
<view class="one-time-list">
<view class="one-time-item" wx:for="{{oneTimeOptions}}" wx:key="index" bindtap="payOneTime" data-id="{{item.id}}">
<view>支付{{item.paymentamount}}元 后到账{{item.arrivalamount}}元洗车金</view>
</view>
</view>
<view bindtap="closeOneTimeOptions" class="one-time-cancel">取消</view>
</view>
</view>
</view>

View File

@@ -1,5 +0,0 @@
Component({
properties: {},
data: {},
methods: {}
});

View File

@@ -1,4 +0,0 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -1,23 +0,0 @@
<view class="info-wrap">
<view class="module-title">
<view class="tit">搭配更优惠 <view class="line"></view>
</view>
</view>
<navigator class="tuijian-goods" href="#/info/index?id=764&amp;cid=99999991" wx:for="{{2}}">
<view class="lt">
<image mode="widthFix" src="http://q990.img.aiyichuan.com/urm_huodong/20200331/1585643794622.jpg?imageView2/1/w/400/h/400"></image>
</view>
<view class="tuijian-rt">
<view class="goods-name">【新会】椰子鸡再次返场9.9元起抢「骨汁恋·星汇店」100元代金券</view>
<view class="goods-info">
<view class="price">
<view class="lt">
<view class="now-price">¥9.90</view>
<view class="old-price">¥100.00</view>
</view>
<view class="btn">立即抢购</view>
</view>
</view>
</view>
</navigator>
</view>

View File

@@ -1,137 +0,0 @@
.info-wrap {
background-color: #fff;
border-top: 3.2vw solid #f8f8f8;
padding: 0 4vw 5.333vw;
}
.module-title {
color: #2a2a2a;
font-size: 4.267vw;
font-weight: 700;
line-height: 1;
margin: 5.333vw 0 8.533vw;
text-align: center;
}
.module-title .tit {
display: inline-block;
position: relative;
vertical-align: top;
}
.module-title .line {
background-color: #06a2b3;
border-radius: .8vw;
height: .8vw;
left: 35%;
margin-top: 2.133vw;
position: absolute;
top: 100%;
width: 30%;
}
.tuijian-goods {
border-radius: 1.6vw;
box-shadow: 0 1.067vw 2.667vw 0 rgba(0,0,0,.08);
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
padding: 3.6vw;
}
.tuijian-goods .lt {
-ms-flex-negative: 0;
flex-shrink: 0;
}
.tuijian-goods .lt image {
display: block;
height: 26vw;
width: 26vw;
}
.tuijian-goods .tuijian-rt {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
-webkit-box-flex: 1;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex: 1;
flex-direction: column;
justify-content: space-between;
margin-left: 3.2vw;
}
.tuijian-goods .vip-price {
width: max-content;
}
.tuijian-goods .goods-name {
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
color: #2a2a2a;
display: -webkit-box;
font-size: 3.733vw;
font-weight: 500;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
}
.tuijian-goods .goods-info .price {
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
align-items: center;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
justify-content: space-between;
}
.tuijian-goods .goods-info .now-price {
color: #eb5252;
font-size: 3.467vw;
font-weight: 500;
margin-right: 3.2vw;
}
.tuijian-goods .goods-info .old-price {
color: #9b9b9b;
font-size: 3.2vw;
text-decoration: line-through;
}
.tuijian-goods .goods-info .btn {
-ms-flex-negative: 0;
background-color: #06a2b3;
border-radius: .933vw;
color: #fff;
flex-shrink: 0;
font-size: 3.2vw;
height: 6.667vw;
line-height: 6.667vw;
text-align: center;
width: 18.667vw;
}
.vip-price {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
background-color: #2a2a2a;
border-radius: .8vw;
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
font-size: 2.933vw;
margin-right: 2.667vw;
}

View File

@@ -1,71 +0,0 @@
{
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
"projectname": "JMApp",
"setting": {
"compileHotReLoad": true,
"urlCheck": false
},
"condition": {
"miniprogram": {
"list": [
{
"name": "pages/substituteWash/substituteWash",
"pathName": "pages/substituteWash/substituteWash",
"query": "scene=T1000098",
"launchMode": "default",
"scene": null
},
{
"name": "pages/substituteWash/substituteWash",
"pathName": "pages/substituteWash/substituteWash",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "pages/washing/washing",
"pathName": "pages/washing/washing",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "pages/washCodeDetail/washCodeDetail",
"pathName": "pages/washCodeDetail/washCodeDetail",
"query": "id=6",
"launchMode": "default",
"scene": null
},
{
"name": "/pages/washCodeDetail/washCodeDetail",
"pathName": "/pages/washCodeDetail/washCodeDetail",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "pages/refund/refund",
"pathName": "pages/refund/refund",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "pages/OnlineCarHailing/OnlineCarHailing",
"pathName": "pages/OnlineCarHailing/OnlineCarHailing",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "pages/wangdian/wangdian",
"pathName": "pages/wangdian/wangdian",
"query": "number=T1000126",
"launchMode": "default",
"scene": null
}
]
}
},
"libVersion": "3.8.9"
}