From 2a8c98fbea197c9a28844bdbd86a0d80f70278f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A3=B7=E5=8F=B6?=
<14103883+leaf-phos@user.noreply.gitee.com>
Date: Fri, 27 Feb 2026 10:56:06 +0800
Subject: [PATCH] =?UTF-8?q?v2.28.1=20=E6=8A=96=E9=9F=B3=E5=9B=A2=E8=B4=AD?=
=?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
common/http.interceptor.js | 2 +-
page_fenbao/huiyuan/index.vue | 173 +++++++---
page_fenbao/storedlist/trueorder.vue | 312 +++++++++---------
.../verify/components/VerifySuccessPopup.vue | 114 +++++++
page_user/verify/index.vue | 81 +++--
5 files changed, 459 insertions(+), 223 deletions(-)
create mode 100644 page_user/verify/components/VerifySuccessPopup.vue
diff --git a/common/http.interceptor.js b/common/http.interceptor.js
index 67fe7df..464401c 100644
--- a/common/http.interceptor.js
+++ b/common/http.interceptor.js
@@ -1,7 +1,7 @@
const install = (Vue, vm) => {
uni.setStorageSync('deptId', 100);
Vue.prototype.$u.http.setConfig({
- baseUrl: 'http://192.168.1.7:4101', //键辉本地
+ baseUrl: 'http://192.168.1.3:4101', //键辉本地
// baseUrl: 'http://192.168.2.221:4101', //景森本地
// baseUrl: 'https://ele.ccttiot.com/prod-api', //线上 小鹿appid: wx8a05cf95418a6859 小兔骑骑appid:wx38f96c87621a87ab 遇福兴https://fu.chuantewulian.cn wxcb1d6a5d9dca8bbe
// baseUrl: 'https://cc.ccttiot.com/prod-api', //叉车线上
diff --git a/page_fenbao/huiyuan/index.vue b/page_fenbao/huiyuan/index.vue
index 6760128..56e502a 100644
--- a/page_fenbao/huiyuan/index.vue
+++ b/page_fenbao/huiyuan/index.vue
@@ -1,39 +1,54 @@
-
-
-
-
- {{item.discountValue}}折
-
-
-
-
-
-
-
-
-
- {{item.name.length > 6 ? item.name.slice(0,6) + '...' : item.name}}
- 热门
-
-
- ⏱
- 有效期{{item.validDays}}天
-
-
- 📍
- 仅限{{item.areaName}}使用
-
-
-
- ¥{{item.price}}
+
+
+
+
+
+
+
+
+
+
+ 团购核销
+ 核销抖音、美团等团购券
+
+
+
+
+
+
+ {{item.discountValue}}折
+
+
+
+
-
-
+
+
+
+ {{item.name.length > 6 ? item.name.slice(0,6) + '...' : item.name}}
+ 热门
+
+
+ ⏱
+ 有效期{{item.validDays}}天
+
+
+ 📍
+ 仅限{{item.areaName}}使用
+
+
+
+ ¥{{item.price}}
+
+
+
+
@@ -78,23 +93,36 @@
export default {
data() {
return {
- bgc: {
- backgroundColor: "#F7F8FA",
- },
+ bgc: {
+ backgroundColor: "#F7F8FA",
+ },
show: false,
huiyuanobj:{},
huiyuanlist:[],
areaId:'',
channelId:'',
- zfflag:true
+ zfflag:true,
+ area: {}
}
},
onLoad(option) {
this.areaId = option.areaId
- this.gethuiyuan()
+ this.getAreaDetail()
+ this.gethuiyuan()
this.getchannelid()
},
methods: {
+ getAreaDetail() {
+ if (!this.areaId) {
+ this.area = {};
+ return;
+ }
+ this.$u.get(`/app/area/detail?id=${this.areaId}`).then((res) => {
+ if (res.code == 200) {
+ this.area = res.data
+ }
+ })
+ },
// 请求channelId
getchannelid(){
this.$u.get(`/app/channel/list?appId=${this.$store.state.appid}&areaId=${this.areaId}&bstType=3&appType=1`).then((res) => {
@@ -189,8 +217,10 @@
}
})
},
- handlePay() {
- // 处理支付逻辑
+ goVerify() {
+ uni.navigateTo({
+ url: '/page_user/verify/index?areaId=' + this.areaId,
+ })
}
}
}
@@ -202,6 +232,75 @@
padding-bottom: 50rpx;
box-sizing: border-box;
}
+
+ .verify-entry {
+ display: flex;
+ align-items: center;
+ margin: 24rpx 40rpx;
+ padding: 28rpx 24rpx;
+ background: linear-gradient(135deg, #f8fbff 0%, #f0f7ff 100%);
+ border-radius: 20rpx;
+ border: 1rpx solid rgba(57, 150, 253, 0.12);
+ transition: transform 0.2s ease;
+
+ &:active {
+ transform: scale(0.98);
+ }
+
+ .verify-entry-cards {
+ position: relative;
+ width: 110rpx;
+ height: 80rpx;
+ margin-right: 24rpx;
+
+ .card {
+ position: absolute;
+ width: 64rpx;
+ height: 64rpx;
+ border-radius: 14rpx;
+ background: #fff;
+ box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.12);
+ padding: 8rpx;
+ box-sizing: border-box;
+
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .card-back {
+ left: 0;
+ top: 2rpx;
+ z-index: 1;
+ transform: rotate(-10deg);
+ }
+
+ .card-front {
+ left: 44rpx;
+ top: 10rpx;
+ z-index: 2;
+ transform: rotate(8deg);
+ }
+ }
+
+ .verify-entry-content {
+ flex: 1;
+
+ .verify-entry-title {
+ display: block;
+ font-size: 32rpx;
+ font-weight: 600;
+ color: #1a1a1a;
+ margin-bottom: 4rpx;
+ }
+
+ .verify-entry-desc {
+ font-size: 24rpx;
+ color: #646566;
+ }
+ }
+ }
.buy_box {
padding: 0 46rpx;
diff --git a/page_fenbao/storedlist/trueorder.vue b/page_fenbao/storedlist/trueorder.vue
index 5ebab4c..de3c61b 100644
--- a/page_fenbao/storedlist/trueorder.vue
+++ b/page_fenbao/storedlist/trueorder.vue
@@ -1,6 +1,6 @@
-
@@ -165,7 +165,19 @@
当前车辆车型未配置套餐,请管理员前往车型中配置!
- 套餐说明
+
@@ -213,17 +225,6 @@
-
-
-
-
- 查看还车点
-
-
-
- 联系客服
-
-
@@ -240,24 +241,21 @@
-
-
-
-
-
- {{item.name.length > 6 ? item.name.slice(0,6) + '...' : item.name}}
-
-
- {{item.price}}元
-
-
- 折扣{{item.discountValue}}折
-
-
- 购买
-
+
+
+
+
+
+
+
+
+
+
+
+ 特惠购卡 / 团购核销
+
@@ -701,13 +699,11 @@
ggobj:null,
channelId: '',
sn: '',
- tit: '',
logoflag: false,
ver_dataflag: 1,
deviceId: '',
name: '',
zhezhaoflag:true,
- tit:' ',
actiobj:{},
countdown:1,
paymentList:[],
@@ -725,6 +721,7 @@
huiyuanlist:[],
huiyuanobj:{},
+ areaDouyinEnable: false,
zfflag:true,
jieliuflag:true,
videoUrl:'',
@@ -753,6 +750,11 @@
guideVideoId: '' // 当前引导视频唯一标识(用于存本地,下次同视频不再弹)
}
},
+ computed: {
+ showCardVerifyEntry() {
+ return this.huiyuanlist.length > 0 || this.areaDouyinEnable
+ }
+ },
onLoad(option) {
console.log(option,'sasdadas');
if(option.duoirder){
@@ -820,7 +822,6 @@
this.zhezhaoflag = false
uni.hideLoading()
}else{
- this.tit= '确认订单页'
this.zhezhaoflag = false
uni.hideLoading()
this.modelId = option.modelId
@@ -857,7 +858,6 @@
this.zhezhaoflag = false
uni.hideLoading()
} else {
- this.tit= '确认订单页'
this.zhezhaoflag = false
uni.hideLoading()
// 判断是用户直接从微信扫描二维码进来
@@ -883,7 +883,7 @@
this.gettaocan()
this.getcheliang()
this.getQiniuToken()
- this.getAreaDetailForGuide()
+ this.getAreaDetail()
}
}else{
uni.showModal({
@@ -900,7 +900,6 @@
// this.logoflag = true
this.getlogo()
}else{
- this.tit= '确认订单页'
this.zhezhaoflag = false
uni.hideLoading()
// 判断是用户直接从微信扫描二维码进来
@@ -926,7 +925,7 @@
this.getcheliang()
this.getQiniuToken()
this.gettaocan()
- this.getAreaDetailForGuide()
+ this.getAreaDetail()
}
}else{
uni.showModal({
@@ -949,7 +948,7 @@
onShow() {
// 每次进入页面都查运营区详情,根据 guideEnable 决定是否展示引导视频
if (this.bikeobj && this.bikeobj.areaId) {
- this.getAreaDetailForGuide()
+ this.getAreaDetail()
}
},
onHide() {
@@ -1008,18 +1007,28 @@
})
},
// 获取运营区详情,根据 guideEnable 决定是否展示引导视频(本地已存该视频id则不再弹)
- getAreaDetailForGuide() {
+ getAreaDetail() {
if (!this.bikeobj || !this.bikeobj.areaId) return
this.$u.get(`/app/area/detail?id=${this.bikeobj.areaId}`).then((res) => {
- if (res.code != 200 || !res.data || res.data.guideEnable !== true || !res.data.guideVideo) return
- const areaId = this.bikeobj.areaId
- // 视频唯一标识:优先用接口返回的 guideVideoId,否则用 guideVideo 地址
- const videoId = res.data.guideVideoId != null && res.data.guideVideoId !== '' ? String(res.data.guideVideoId) : res.data.guideVideo
- const storageKey = 'trueorder_guide_seen_' + areaId
- if (uni.getStorageSync(storageKey) === videoId) return // 本地已存该视频id,不再弹出
- this.guideVideoUrl = res.data.guideVideo
- this.guideVideoId = videoId
- this.showGuideVideo = true
+ if (res.code != 200 || !res.data) {
+ return;
+ }
+ const data = res.data;
+ const areaId = data.id;
+
+ // 是否开启引导视频
+ if (!data.guideEnable && !data.guideVideo) {
+ const videoId = data.guideVideo;
+ const storageKey = 'trueorder_guide_seen_' + areaId
+ if (!uni.getStorageSync(storageKey) === videoId) {
+ this.guideVideoUrl = data.guideVideo
+ this.guideVideoId = videoId
+ this.showGuideVideo = true
+ }
+ }
+
+ // 是否开启抖音核销功能
+ this.areaDouyinEnable = data.douyinEnable;
})
},
// 隐藏引导视频(首次观看后把当前视频id存到本地,下次同运营区同视频不再弹)
@@ -1402,13 +1411,15 @@
this.show = true
this.huiyuanobj = item
},
- // 请求会员卡列表
+ // 请求会员卡列表,并获取运营区核销开关
gethuiyuan(){
- this.$u.get(`/app/vip/listByArea?areaId=${this.bikeobj.areaId}`).then(res=>{
+ if (!this.bikeobj || !this.bikeobj.areaId) return
+ const areaId = this.bikeobj.areaId
+ this.$u.get(`/app/vip/listByArea?areaId=${areaId}`).then(res=>{
if(res.code == 200){
- this.huiyuanlist = res.data
+ this.huiyuanlist = res.data || []
}
- })
+ })
},
// 点击跳转到购买会员列表
btnhuiyuan(){
@@ -1876,7 +1887,7 @@
console.log(res.data,'020202');
this.$u.put(`/app/user/bindArea?areaId=${res.data.areaId}`).then(resp =>{})
this.gettaocan()
- this.getAreaDetailForGuide()
+ this.getAreaDetail()
}
})
} else {
@@ -1887,7 +1898,7 @@
this.mac = res.data.mac
this.bikeobj = res.data
this.gettaocan()
- this.getAreaDetailForGuide()
+ this.getAreaDetail()
}
})
}
@@ -2280,7 +2291,6 @@
})
}
})
- this.tit = '确认订单页'
this.logoflag = false
} else {
uni.showToast({
@@ -2758,75 +2768,72 @@
}
}
}
- .fee_box {
- margin-top: 38rpx;
- position: relative;
- margin-left: 24rpx;
- width: 700rpx;
- height: 288rpx;
- background-image: url('https://lxnapi.ccttiot.com/bike/img/static/ugciMYClSGgJxP8HYoRU');
- background-size: cover;
- background-position: center;
- background-repeat: no-repeat;
- .auto_box::-webkit-scrollbar {
- display: none;
+ .card-verify-entry {
+ display: flex;
+ align-items: center;
+ margin-top: 24rpx;
+ margin-left: 24rpx;
+ margin-right: 24rpx;
+ padding: 24rpx 28rpx;
+ background: linear-gradient(135deg, #f8fbff 0%, #f0f7ff 100%);
+ border-radius: 16rpx;
+ border: 1rpx solid rgba(57, 150, 253, 0.12);
+ transition: transform 0.2s ease;
+
+ &:active {
+ transform: scale(0.98);
}
- .auto_box {
- padding-left: 24rpx;
- display: flex;
- overflow-x: auto; /* 允许横向滚动 */
- flex-wrap: nowrap; /* 禁止换行,保持所有元素在一行 */
- position: absolute;
- top: 90rpx;
- width: 100%; /* 根据需要调整宽度 */
- height: auto; /* 根据内容自动调整高度 */
-
- .auto_li {
+
+ .entry-cards {
position: relative;
- padding: 24rpx 28rpx;
- margin-right: 22rpx;
- width: 408rpx;
- height: 176rpx;
- flex-shrink: 0; /* 防止子元素被压缩 */
- background-image: url('https://lxnapi.ccttiot.com/bike/img/static/ui88NWy9R1j2zFGojdHU');
- background-size: cover;
- background-position: center;
- .txt1{
- width: 100%;
- font-weight: 700;
- font-size: 34rpx;
- color: #495E74;
- letter-spacing: 0.5rpx;
- }
- .txt2{
- font-weight: 600;
- font-size: 26rpx;
- color: #495E74;
- margin-top: 8rpx;
- }
- .buy_btn{
- position: absolute;
- right: 28rpx;
- bottom: 40rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- width: 140rpx;
- height: 56rpx;
- background: linear-gradient(135deg, #495E74 0%, #5A6F88 100%);
- border-radius: 28rpx;
- font-weight: 700;
- font-size: 28rpx;
- color: #FFF3DB;
- box-shadow: 0 4rpx 12rpx rgba(73, 94, 116, 0.3);
- transition: all 0.3s ease;
- &:active {
- transform: scale(0.95);
- box-shadow: 0 2rpx 6rpx rgba(73, 94, 116, 0.25);
- }
- }
- }
- }
+ width: 140rpx;
+ height: 80rpx;
+ margin-right: 24rpx;
+
+ .card {
+ position: absolute;
+ width: 56rpx;
+ height: 56rpx;
+ border-radius: 12rpx;
+ background: #fff;
+ box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.12);
+ padding: 6rpx;
+ box-sizing: border-box;
+
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .card-coupon {
+ left: 0;
+ top: 6rpx;
+ z-index: 0;
+ transform: rotate(-12deg);
+ }
+
+ .card-back {
+ left: 38rpx;
+ top: 2rpx;
+ z-index: 1;
+ transform: rotate(-6deg);
+ }
+
+ .card-front {
+ left: 76rpx;
+ top: 10rpx;
+ z-index: 2;
+ transform: rotate(8deg);
+ }
+ }
+
+ .entry-text {
+ flex: 1;
+ font-size: 30rpx;
+ font-weight: 600;
+ color: #1a1a1a;
+ }
}
.noticetc{
width: 680rpx;
@@ -3542,19 +3549,21 @@
.check-icon {
position: absolute;
- bottom: 16rpx;
- right: 16rpx;
- width: 48rpx;
- height: 48rpx;
+ bottom: 0;
+ right: 0;
+ width: 56rpx;
+ height: 56rpx;
background: linear-gradient(135deg, #4297F3 0%, #60A5FA 100%);
- border-radius: 50%;
+ clip-path: polygon(100% 0, 100% 100%, 0 100%);
display: flex;
- align-items: center;
- justify-content: center;
+ align-items: flex-end;
+ justify-content: flex-end;
+ padding: 0 6rpx 6rpx 0;
+ box-sizing: border-box;
z-index: 10;
- box-shadow: 0 4rpx 12rpx rgba(66, 151, 243, 0.4);
+ box-shadow: -2rpx -2rpx 8rpx rgba(66, 151, 243, 0.3);
.check-mark {
- font-size: 32rpx;
+ font-size: 28rpx;
font-weight: 700;
color: #FFFFFF;
line-height: 1;
@@ -3639,8 +3648,6 @@
border-width: 3rpx;
background: linear-gradient(135deg, #F0F7FF 0%, #FFFFFF 100%);
box-shadow: 0 6rpx 20rpx rgba(66, 151, 243, 0.25);
- transform: translateY(-2rpx);
- height: 100% !important;
}
&.interval-billing {
@@ -4113,11 +4120,17 @@
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08);
border: 1rpx solid #F3F4F6;
+ .package-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 24rpx;
+ }
+
.package-title {
font-size: 32rpx;
color: #1F2937;
font-weight: 700;
- margin-bottom: 24rpx;
letter-spacing: 0.5rpx;
}
@@ -4189,38 +4202,29 @@
}
.package-buttons {
- margin-top: 10rpx;
display: flex;
- justify-content: space-between;
- gap: 16rpx;
+ align-items: center;
+ gap: 12rpx;
.parking-btn {
- flex: 1;
display: flex;
align-items: center;
justify-content: center;
- padding: 16rpx 28rpx;
- background: #FFFFFF;
- border: 2rpx solid #D1D5DB;
- border-radius: 50rpx;
- gap: 10rpx;
- cursor: pointer;
- transition: all 0.3s ease;
+ padding: 8rpx 18rpx;
+ background: rgba(66, 151, 243, 0.1);
+ border: 1rpx solid rgba(66, 151, 243, 0.3);
+ border-radius: 32rpx;
+ gap: 6rpx;
+ transition: all 0.2s ease;
&:active {
- transform: scale(0.98);
- background: #F9FAFB;
- }
-
- .btn-icon {
- font-size: 28rpx;
- color: #666;
- line-height: 1;
+ transform: scale(0.96);
+ background: rgba(66, 151, 243, 0.15);
}
.btn-text {
- font-size: 28rpx;
- color: #333;
+ font-size: 24rpx;
+ color: #4297F3;
font-weight: 500;
}
}
diff --git a/page_user/verify/components/VerifySuccessPopup.vue b/page_user/verify/components/VerifySuccessPopup.vue
new file mode 100644
index 0000000..0f79be7
--- /dev/null
+++ b/page_user/verify/components/VerifySuccessPopup.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
diff --git a/page_user/verify/index.vue b/page_user/verify/index.vue
index 0b18a4d..a5baa8f 100644
--- a/page_user/verify/index.vue
+++ b/page_user/verify/index.vue
@@ -3,7 +3,7 @@
-
+
当前运营区
{{ currentArea ? currentArea.name : '请选择运营区' }}
@@ -91,12 +91,21 @@
:item-list="prepareItemList"
@confirm="onCouponConfirm"
/>
+
+
+