This commit is contained in:
Lx 2025-06-06 17:54:41 +08:00
parent 76b1ff03d2
commit 62123764fb
14 changed files with 650 additions and 422 deletions

View File

@ -3,8 +3,8 @@ module.exports = {
// baseUrl: 'https://vue.ruoyi.vip/prod-api',
imagesUrl: 'http://122.51.230.86:9000',
// baseUrl: 'https://www.nuoyunr.com',
baseUrl: 'http://192.168.1.27:48080',
baseUrl: 'https://www.nuoyunr.com',
// baseUrl: 'http://192.168.1.27:48080',
appId: 'wx684fc832e96cee65',
appSecret: 'd1fecac806c5f3cd9aca9f3d5c3759c7',
// baseUrl: 'http://192.168.31.54:8016/jx',

View File

@ -1,6 +1,6 @@
{
"name" : "驾悦同行",
"appid": "__UNI__7A6878C",
"appid" : "__UNI__077A2D3",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",

View File

@ -91,10 +91,7 @@
url: '/static/lanhu_shouye2gai/pj.png',
text: '评价'
},
{
url: '/static/lanhu_shouye2gai/pj.png',
text: '业务办理指南'
},
],
swiperList: [],
msg: "1",
@ -177,6 +174,10 @@
setCoachId(res.data.userId)
setStaffType('01')
}
if (res.data.type == 'ywjl') {
setCoachId(res.data.userId)
setStaffType('04')
}
console.log('getCoachId', getCoachId())
console.log('getStaffType', getStaffType())
}

View File

@ -189,6 +189,7 @@
},
onLoad(options) {
const order = JSON.parse(decodeURIComponent(options.data));
console.log('order', order)
this.orderData = order;
this.getCourseDetails()
},
@ -305,7 +306,7 @@
try {
// 1.
const prepayRes = await request({
url: `/small/jxInfo/prepayment?type=jsapi&orderNo=${orderNo}&orderId=${orderId}&payType=${payType}`,
url: `/small/jxInfo/prepayment?type=jsapi&orderNo=${orderNo}&orderId=${orderId}&payType=${payType}&tenantId=${this.orderData.tenantId}`,
method: 'get'
});
@ -395,7 +396,7 @@
tenantId: this.orderData.tenantId,
type: this.orderData.type,
carType: this.getLicenseTypeDescription(this.orderData.type),
money: this.orderData.reserveMoney,
money: (this.orderData.reserveMoney * 100 + this.orderData.restMoney * 100) / 100,
indent: this.orderData.userNo,
phone: this.orderData.userPhone,
time: this.getCurrentDateTime(),

View File

@ -8,6 +8,7 @@
background-color: rgba(255, 255, 255, 1);
width: 750rpx;
height: 92rpx;
padding-top: 88rpx;
.image_1 {
width: 64rpx;
height: 36rpx;

View File

@ -1,33 +1,25 @@
<template>
<view class="page flex-col">
<view class="block_1 flex-row">
</view>
<view class="block_2 flex-col">
<view class="group_1 flex-row">
<image
class="label_1"
referrerpolicy="no-referrer"
<image class="label_1" referrerpolicy="no-referrer"
src="/static/lanhu_quanbudingdan/FigmaDDSSlicePNGacf527a62cbe7351c6472edd8f5b2814.png"
@click="handleBack()"
/>
@click="handleBack()" />
<text class="text_1">订单</text>
</view>
<view class="list_1 flex-col">
<scroll-view
class="scroll-view"
scroll-y
:style="{ height: scrollHeight + 'px' }"
@scrolltolower="loadMoreData"
:refresher-enabled="true"
:refresher-triggered="isRefreshing"
@refresherrefresh="onRefresherrefresh"
>
<view class="list-items_1 flex-col" v-for="(item, index) in orderList" :key="index" @click="goOrderDetails(item)">
<scroll-view class="scroll-view" scroll-y :style="{ height: scrollHeight + 'px' }"
@scrolltolower="loadMoreData" :refresher-enabled="true" :refresher-triggered="isRefreshing"
@refresherrefresh="onRefresherrefresh">
<view class="list-items_1 flex-col" v-for="(item, index) in orderList" :key="index"
@click="goOrderDetails(item)">
<view class="box_6 flex-row justify-between">
<text class="text_2">订单号: {{item.orderNo}}</text>
<view class="text-wrapper_1 flex-col" :style="{ background: statusMap[item.paymentStatus].background }">
<view class="text-wrapper_1 flex-col"
:style="{ background: statusMap[item.paymentStatus].background }">
<text class="text_3" :style="{ color: statusMap[item.paymentStatus].color }">{{
statusMap[item.paymentStatus].name}}
</text>
@ -35,12 +27,8 @@
</view>
<view class="box_7 flex-row">
<view class="image-text_1 flex-row">
<image
class="image_3"
referrerpolicy="no-referrer"
:src="imageUrl + '/' + item.photo"
/>
<image class="image_3" referrerpolicy="no-referrer"
:src="imageUrl + '/' + item.photo" />
<view class="text-group_1 flex-col justify-between">
<text class="text_4">{{item.courseName}}</text>
<view class="text-wrapper_2 flex-row justify-between">
@ -67,32 +55,16 @@
</view>
<view class="group_2 flex-col justify-end">
<view class="text-wrapper_5 flex-row">
<text
class="text_9"
:class="{ 'active-blue': type === 1 }"
@click="changeOrderType('',1)"
>
<text class="text_9" :class="{ 'active-blue': type === 1 }" @click="changeOrderType('',1)">
全部订单
</text>
<text
class="text_10"
:class="{ 'active-blue': type === 2 }"
@click="changeOrderType(2,2)"
>
<text class="text_10" :class="{ 'active-blue': type === 2 }" @click="changeOrderType(2,2)">
已付款
</text>
<text
class="text_11"
:class="{ 'active-blue': type === 3 }"
@click="changeOrderType(4,3)"
>
<text class="text_11" :class="{ 'active-blue': type === 3 }" @click="changeOrderType(4,3)">
已面签
</text>
<text
class="text_12"
:class="{ 'active-blue': type === 4 }"
@click="changeOrderType(2,4)"
>
<text class="text_12" :class="{ 'active-blue': type === 4 }" @click="changeOrderType(2,4)">
已报名
</text>
</view>
@ -110,8 +82,7 @@ export default {
data() {
return {
imageUrl: this.$imagesUrl,
loopData0: [
{
loopData0: [{
lanhutext0: '订单号44782938752039585',
lanhuBg2: 'rgba(255,244,228,1.000000)',
lanhutext1: '已付款',
@ -164,17 +135,53 @@ export default {
loading: false,
isRefreshing: false,
statusMap: {
8: { name: '退款成功', background: '#fef0f0', color: '#f56c6c' }, //
7: { name: '退款中', background: '#fef0f0', color: '#f56c6c' }, //
6: { name: '申请退款', background: '#fef0f0', color: '#f56c6c' }, //
8: {
name: '退款成功',
background: '#fef0f0',
color: '#f56c6c'
}, //
7: {
name: '退款中',
background: '#fef0f0',
color: '#f56c6c'
}, //
6: {
name: '申请退款',
background: '#fef0f0',
color: '#f56c6c'
}, //
5: { name: '已完成', background: '#f0f9eb', color: '#67c23a' }, // 绿
4: { name: '已面签', background: '#ecf5ff', color: '#409EFF' }, //
3: { name: '待面签', background: '#fdf6ec', color: '#e6a23c' }, //
5: {
name: '已完成',
background: '#f0f9eb',
color: '#67c23a'
}, // 绿
4: {
name: '已面签',
background: '#ecf5ff',
color: '#409EFF'
}, //
3: {
name: '待面签',
background: '#fdf6ec',
color: '#e6a23c'
}, //
2: { name: '已支付', background: '#f0f9eb', color: '#67c23a' }, // 绿
1: { name: '已取消', background: '#f4f4f5', color: '#909399' }, //
0: { name: '待支付', background: '#fdf6ec', color: '#e6a23c' }, //
2: {
name: '已支付',
background: '#f0f9eb',
color: '#67c23a'
}, // 绿
1: {
name: '已取消',
background: '#f4f4f5',
color: '#909399'
}, //
0: {
name: '待支付',
background: '#fdf6ec',
color: '#e6a23c'
}, //
}
};
},
@ -189,6 +196,11 @@ export default {
this.changeOrderType(this.orderType, this.type)
},
onShow() {
//
this.pageNo = 1;
this.getUserOrderDetails(this.orderType);
},
onReady() {
//
this.calculateScrollHeight();
@ -282,7 +294,11 @@ export default {
},
//
getStatusStyle(status) {
return this.statusMap[status] || {name: '未知状态', background: '', color: ''};
return this.statusMap[status] || {
name: '未知状态',
background: '',
color: ''
};
},
//

View File

@ -233,7 +233,7 @@
.group_6 {
background-color: rgba(255, 255, 255, 1);
border-radius: 8px;
//height: 642rpx;
// height: 942rpx;
margin-left: 32rpx;
width: 686rpx;
justify-content: flex-center;

View File

@ -267,7 +267,7 @@
method: 'GET',
params: {
pageNo: 1,
pageSize: 3,
pageSize: 4,
tenantId: this.tenantId,
},
tenantIdFlag: false

View File

@ -188,14 +188,22 @@
"navigationBarTitleText": "通知公告详情",
"navigationStyle": "custom"
}
}
]
},
{
"path": "guideContent/index",
"style": {
"enablePullDownRefresh": true,
"navigationBarTitleText": "业务办理指南详情",
"navigationStyle": "custom"
}
}
]
}
/* {
"root": "uni_modules",
"name": "modules",
"pages": []
}
} */
],
"tabBar": {
"color": "#999999", //

View File

@ -26,7 +26,7 @@
<text class="text_8">{{ courseDetails.type }}</text>
</view>
</view>
<text class="text_9">周一至周日&nbsp;08:00-18:00</text>
<!-- <text class="text_9">周一至周日&nbsp;08:00-18:00</text> -->
</view>
<view class="group_5 flex-col">
<view class="section_4 flex-row justify-between">

View File

@ -105,18 +105,52 @@
</view> -->
</view>
<view class="bm-page-dj">
<view class="bm-page-dj-title" @click="show = true">
<view class="d-s">
<view>{{ dname }}</view>
<text class="bm-page-dj-title-price">
{{ currentPrice }} <!-- 动态显示当前价格 -->
</text>
<view class="payment-type-container">
<view class="payment-type-item" @click="changePayType(2)" :class="{active: selectedPayType === 2}">
<view class="payment-type-info">
<view class="payment-type-name">全款支付{{ rightInfoList.price }}</view>
<!-- <view class="payment-type-price">{{ rightInfoList.price }}</view> -->
</view>
<view class="payment-type-radio">
<view v-if="selectedPayType === 2" class="radio-selected"></view>
<view v-else class="radio-unselected"></view>
</view>
<u-icon name="arrow-right" color="#999" size="18"></u-icon>
</view>
<view @click="changeStartPay(2)" class="dj-list">
<view class="payment-type-item" @click="changePayType(1)" :class="{active: selectedPayType === 1}">
<view class="payment-type-info">
<view class="payment-type-name">定金支付{{ rightInfoList.reserveMoney }}</view>
<!-- <view class="payment-type-price">{{ rightInfoList.reserveMoney }}</view> -->
</view>
<view class="payment-type-radio">
<view v-if="selectedPayType === 1" class="radio-selected"></view>
<view v-else class="radio-unselected"></view>
</view>
</view>
</view>
<!-- 支付渠道选择微信/线下 -->
<view class="payment-channel-container">
<view class="payment-channel-title">支付方式</view>
<view class="payment-channel-item" @click="changeStartPay(1)" :class="{active: startPay === 1}">
<image class="channel-icon" src="../../static/imgs/qbdd3.png" mode=""></image>
<view class="channel-name">微信支付</view>
<view class="channel-radio">
<view v-if="startPay === 1" class="radio-selected"></view>
<view v-else class="radio-unselected"></view>
</view>
</view>
<view class="payment-channel-item" @click="changeStartPay(2)" :class="{active: startPay === 2}"
v-if="selectedPayType !== 1">
<image class="channel-icon" src="../../static/imgs/yfk2.png" mode=""></image>
<view class="channel-name">线下支付</view>
<view class="channel-radio">
<view v-if="startPay === 2" class="radio-selected"></view>
<view v-else class="radio-unselected"></view>
</view>
</view>
</view>
<!-- <view @click="changeStartPay(2)" class="dj-list">
<view class="dj-list-left">
<image class="dj-list-left-img" src="../../static/imgs/yfk2.png" mode=""></image>
<view class="dj-list-left-name">线下支付</view>
@ -139,7 +173,7 @@
<u-icon name="checkmark" color="#FFF" size="16"></u-icon>
</view>
</view>
</view>
</view> -->
</view>
@ -267,6 +301,7 @@
this.userId = this.userDetails.id,
this.userinfo = getLocalUserInfo()
this.localStaffType = getStaffType()
console.log('this.localStaffType', this.localStaffType)
if (this.localStaffType === '02') {
this.localCoachId = getCoachId()
}
@ -314,6 +349,32 @@
this.rightInfoList.reserveMoney :
this.rightInfoList.price;
},
// /
changePayType(type) {
this.selectedPayType = type;
this.dname = type === 1 ? '定金' : '全款';
this.currentPrice = type === 1 ? this.rightInfoList.reserveMoney : this.rightInfoList.price;
if (type == 1) {
this.startPay = 1
} else if (type == 2) {
this.startPay = 2
}
console.log('this.selectedPayType', this.selectedPayType)
console.log('this.startPay', this.startPay)
},
// /线
changeStartPay(channel) {
/* if (this.selectedPayType == 1) {
this.startPay = 1
} else if (this.selectedPayType == 2 && this.startPay == 1) {
console.log('123', this.selectedPayType == 2 && this.startPay == 1)
this.startPay = 2
} else {
this.startPay = channel;
} */
this.startPay = channel;
},
async getStudentDetail() {
const res = await request({
url: '/app-api/small/dl-drive-school-student/getByUserId',
@ -547,6 +608,7 @@
reserveMoney: reserveMoney,
payType: payType,
restMoney: restMoney,
payChannel: '1',
}
});
@ -554,7 +616,7 @@
this.orderNo = res.orderNo;
const prepayRes = await request({
url: `/app-api/small/jxInfo/prepayment?type=jsapi&orderNo=${this.orderNo}&orderId=${this.orderId}&payType=${payType}`,
url: `/app-api/small/jxInfo/prepayment?type=jsapi&orderNo=${this.orderNo}&orderId=${this.orderId}&payType=${payType}&tenantId=${this.tenantId}`,
method: 'get'
});
@ -588,6 +650,7 @@
reserveMoney: this.rightInfoList.price,
payType: '2',
userId: this.userId,
payChannel: '2',
}
});
@ -689,15 +752,17 @@
// 4.
if (this.startPay === 1) {
const res = await request({
url: `/app-api/small/jxInfo/prepayment?type=jsapi&orderNo=${this.orderNo}&orderId=${this.orderId}&payType=${payType}`,
url: `/app-api/small/jxInfo/prepayment?type=jsapi&orderNo=${this.orderNo}&orderId=${this.orderId}&payType=${payType}&tenantId=${this.tenantId}`,
method: 'get'
});
this.orderTime = this.getCurrentDateTime()
const result = await this.handleWxPayment(res);
if (result === 'success') {
console.log('ifSuccess', result)
await Promise.all([
this.updateOrderStatus(this.orderId, '2'),
this.insertSchoolStudent()
]);
this.signContract();
}
@ -933,6 +998,9 @@
this.autoAssignCoach()
}
} else if (getCoachId() && this.localStaffType == '04') {
studentData.source = '04';
studentData.sourceUserId = getCoachId(); // IDID
} else {
studentData.source = '03'; //
this.sendMessages(this.name, this.rightInfoList.name, this.jlId)
@ -951,8 +1019,9 @@
courseName: this.rightInfoList.name,
licenseType: this.rightInfoList.type,
price: this.rightInfoList.price,
orderTime: this.orderTime
orderTime: this.getCurrentDateTime()
}
console.log('现在是微信支付', dynamicData)
this.sendSubscriptionMessage(dynamicData)
},
@ -1021,7 +1090,7 @@
tenantId: this.tenantId,
type: this.rightInfoList.type,
carType: this.getLicenseTypeDescription(this.rightInfoList.type),
money: this.payPrice,
money: this.rightInfoList.price,
indent: this.identity,
phone: this.phone,
time: this.getCurrentDateTime(),
@ -1113,6 +1182,136 @@
background-color: #fff;
border-radius: 20rpx;
.payment-type-container {
margin-bottom: 30rpx;
.payment-type-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 25rpx 0;
border-bottom: 1rpx solid #f5f5f5;
&.active {
.payment-type-name {
color: #2C78F5;
font-weight: bold;
}
.payment-type-price {
color: #ff4d4f;
}
}
.payment-type-info {
flex: 1;
.payment-type-name {
font-size: 30rpx;
color: #333;
}
.payment-type-price {
font-size: 26rpx;
color: #999;
margin-top: 10rpx;
}
}
.payment-type-radio {
width: 40rpx;
height: 40rpx;
border-radius: 50%;
border: 1rpx solid #ddd;
display: flex;
align-items: center;
justify-content: center;
.radio-selected {
width: 24rpx;
height: 24rpx;
border-radius: 50%;
background-color: #2C78F5;
}
.radio-unselected {
width: 24rpx;
height: 24rpx;
border-radius: 50%;
background-color: transparent;
}
}
}
}
.payment-channel-container {
margin-top: 20rpx;
padding-top: 20rpx;
border-top: 1rpx solid #eee;
.payment-channel-title {
font-size: 28rpx;
color: #666;
margin-bottom: 20rpx;
}
.payment-channel-item {
display: flex;
align-items: center;
padding: 20rpx 0;
&.active {
.channel-name {
color: #2C78F5;
}
}
.channel-icon {
width: 40rpx;
height: 40rpx;
margin-right: 20rpx;
}
.channel-name {
flex: 1;
font-size: 28rpx;
color: #333;
}
.channel-radio {
width: 40rpx;
height: 40rpx;
border-radius: 50%;
border: 1rpx solid #ddd;
display: flex;
align-items: center;
justify-content: center;
.radio-selected {
width: 24rpx;
height: 24rpx;
border-radius: 50%;
background-color: #2C78F5;
}
.radio-unselected {
width: 24rpx;
height: 24rpx;
border-radius: 50%;
background-color: transparent;
}
}
}
}
}
/* .bm-page-dj {
margin-top: 30rpx;
padding: 30rpx;
background-color: #fff;
border-radius: 20rpx;
.dj-list {
padding: 20rpx 0;
display: flex;
@ -1146,7 +1345,7 @@
color: red;
}
}
}
} */
.bm-page-info {
margin-top: 30rpx;

View File

@ -42,6 +42,8 @@ export async function sendSubscriptionMessage(dynamicData) {
}
}
};
console.log('messageData', messageData)
console.log('微信支付是否进入此方法')
// 发送订阅消息
await request({

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

BIN
static/imgs/qbdd3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB