diff --git a/pages/cart/cart.vue b/pages/cart/cart.vue
index 2c52c60..393926a 100644
--- a/pages/cart/cart.vue
+++ b/pages/cart/cart.vue
@@ -3,7 +3,7 @@
购物车为空
- 去逛逛
+ 去逛逛
全部删除
@@ -125,6 +125,11 @@
this.getList()
},
methods: {
+ goIndex() {
+ uni.switchTab({
+ url: '/pages/index/index'
+ })
+ },
getList () {
this.Post({},"/api/cart/get_list").then(res=>{
let resData = (res.data ||[])
diff --git a/pages/coupon/coupon.vue b/pages/coupon/coupon.vue
index 6d85020..2bf6f89 100644
--- a/pages/coupon/coupon.vue
+++ b/pages/coupon/coupon.vue
@@ -36,7 +36,7 @@
this.Post({
limit: 100,
page: 1,
- class_id: 143,
+ class_id: 146,
type: 2,
}, '/api/multimedia/media_list').then(res => {
if (res) {
diff --git a/static/js/CommonFunction.js b/static/js/CommonFunction.js
index 6220d7a..45c117a 100644
--- a/static/js/CommonFunction.js
+++ b/static/js/CommonFunction.js
@@ -258,7 +258,7 @@ Vue.prototype.gotoDetailByType = item => {
}
switch (item.type){
case 'line':
- url = '/subPackages/line/lineDetail?id=' + item.id
+ url = '/subPackages/line/lineDetail?id=' + (item.id || item.product_id)
break;
case 'hotel':
url = '/subPackages/homestay/detail?id=' + (item.scene_id || item.id)
diff --git a/static/js/request.js b/static/js/request.js
index 4f75e4b..5c647d1 100644
--- a/static/js/request.js
+++ b/static/js/request.js
@@ -41,7 +41,8 @@ Vue.prototype.NEWAPIURL = '/api';
Vue.prototype.Post = (params = {}, apiurl) => {
// const token = getToken() || '0caa10fc-6d65-4d9c-8e57-b344be3fc526'; // 君到苏州
- const token = getToken() || 'a090644d-2bdb-4807-833b-bb5bc2182ac5' // 时味苏州
+ // const token = getToken() || 'a090644d-2bdb-4807-833b-bb5bc2182ac5' // 时味苏州测试token
+ const token = getToken()
if (token) {
params.token = token;
}
diff --git a/subPackages/food/detail.vue b/subPackages/food/detail.vue
index 0ffdb74..7150516 100644
--- a/subPackages/food/detail.vue
+++ b/subPackages/food/detail.vue
@@ -602,7 +602,7 @@
display: flex;
align-items: center;
flex-direction: column;
- width: 44rpx;
+ width: 60rpx;
image{
width: 44rpx;
height: 42rpx;
diff --git a/subPackages/order/orderCoupon.vue b/subPackages/order/orderCoupon.vue
index 8d67e63..6e7df49 100644
--- a/subPackages/order/orderCoupon.vue
+++ b/subPackages/order/orderCoupon.vue
@@ -24,7 +24,7 @@
{{item.get_date.slice(0,10)}}-{{item.end_time.slice(0,10)}}可用
-
+
diff --git a/subPackages/order/orderDetail.vue b/subPackages/order/orderDetail.vue
index 8534a4a..f4e566c 100644
--- a/subPackages/order/orderDetail.vue
+++ b/subPackages/order/orderDetail.vue
@@ -22,8 +22,8 @@
-
-
+
+
还剩{{item.remainNum}}张未核销
@@ -33,15 +33,15 @@
{{item.sku_name}}
-
-
@@ -215,6 +398,11 @@
orderId: '',
info: {},
orderChildList: [],
+ lineQrcodeList: [],
+ lineNum: 0,
+ current: 0,
+ maskShow: false,
+ postInfo: {}
}
},
onLoad(option) {
@@ -222,43 +410,71 @@
this.getDetail()
},
methods: {
- getDetail() {
- this.Post({
- order_id: this.orderId
- }, '/api/order/query').then(res => {
- console.log(res.data)
- this.info = res.data
- this.orderChildList = res.data.order_product_list
- // 景点ticket、线路line、自提需展示二维码
- this.info.order_product_list.forEach(item => {
- // 收货地址
- if(item.product_model == 'post' && item.consignee_info) item.consignee_info = JSON.parse(item.consignee_info)
- console.log(item.consignee_info)
- // 自提信息
- if(item.product_model == 'post' && item.pickup_shop_id > 0) item.pickup_shop_info = JSON.parse(item.pickup_shop_info)
-
- // 判断是否展示核销码
- if (['ticket', 'line', 'post'].includes(item.product_model)) {
- item.isQrcode = true
- if (item.product_model == 'post' && !item.pickup_shop_id) {
- item.isQrcode = false
- }
- // 未核销数量
- item.remainNum = 0
- // 轮播图滚动index
- item.current = 0
-
- // 生成二维码
- item.qrcode.forEach((qrItem, qrIndex) => {
- if (qrItem.state == 0) {
- item.remainNum += 1
+ // 获取订单详情
+ async getDetail() {
+ try {
+ const res = await this.Post({
+ order_id: this.orderId
+ }, '/api/order/query');
+ this.info = res.data;
+ this.orderChildList = res.data.order_product_list;
+ this.processOrderData(this.orderChildList);
+ } catch (error) {
+ console.error('获取订单详情失败:', error);
+ }
+ },
+ // 处理订单数据
+ processOrderData(orderList) {
+ orderList.forEach(item => {
+ // 处理收货地址
+ if (item.product_model === 'post' && item.consignee_info) {
+ item.consignee_info = JSON.parse(item.consignee_info);
+ }
+ // 处理自提信息
+ if (item.product_model === 'post' && item.pickup_shop_id > 0) {
+ item.pickup_shop_info = JSON.parse(item.pickup_shop_info);
+ }
+ // 处理线路出行人信息
+ if (item.product_model === 'line' && item.contacts_info) {
+ item.contacts_info = JSON.parse(item.contacts_info);
+ }
+ // 处理线路核销码
+ if (item.product_model === 'line') {
+ item.qrcode.forEach(qrItem => {
+ qrItem.sku_name = item.sku_name;
+ });
+
+ this.lineQrcodeList = [...this.lineQrcodeList, ...item.qrcode];
+ let lineNum = 0;
+ if (this.lineQrcodeList.length > 0) {
+ this.lineQrcodeList.forEach((qrItem, index) => {
+ if (qrItem.state === 0) {
+ lineNum += 1;
}
-
- this.getCodeImg(qrItem, qrIndex)
- })
+ this.getCodeImg(qrItem, index);
+ });
+ this.lineNum = lineNum;
}
- })
- })
+ }
+ // 判断是否展示核销码
+ if (['ticket', 'post'].includes(item.product_model)) {
+ item.isQrcode = true;
+ if (item.product_model === 'post' && !item.pickup_shop_id) {
+ item.isQrcode = false;
+ }
+ // 未核销数量
+ item.remainNum = 0;
+ // 轮播图滚动index
+ item.current = 0;
+ // 生成二维码
+ item.qrcode.forEach((qrItem, qrIndex) => {
+ if (qrItem.state === 0) {
+ item.remainNum += 1;
+ }
+ this.getCodeImg(qrItem, qrIndex);
+ });
+ }
+ });
},
// 生成二维码
getCodeImg(item, index) {
@@ -277,7 +493,7 @@
});
},
//轮播图左右滑动
- swiperChange(e,item) {
+ swiperChange(e, item) {
let {
current,
source
@@ -288,6 +504,18 @@
}
this.$forceUpdate()
},
+ //线路轮播图左右滑动
+ swiperChanges(e) {
+ let {
+ current,
+ source
+ } = e.detail;
+ //在自动或手动的时候才赋予current值
+ if (source === 'autoplay' || source === 'touch') {
+ this.current = current;
+ }
+ this.$forceUpdate()
+ },
// 复制订单号
clickCopy() {
uni.setClipboardData({
@@ -301,6 +529,115 @@
}
});
},
+ calDate(startDate, endDate) {
+ var start = new Date(startDate);
+ var end = new Date(endDate);
+ var diff = end - start;
+ var days = Math.floor(diff / (1000 * 60 * 60 * 24)); // 计算天数差
+ return days;
+ },
+ callPhone(tel) {
+ let _this = this
+ uni.showActionSheet({
+ itemList: [tel, '呼叫'],
+ success: function(res) {
+ _this.clickPhone(tel)
+ }
+ });
+ },
+ goMap(item) {
+ if (!item.scene_detail.lon && !item.scene_detail.lat) {
+ uni.showToast({
+ title: '暂未配置地理位置',
+ icon: 'none'
+ })
+ return
+ }
+ debugger
+ uni.openLocation({
+ latitude: Number(item.scene_detail.lat),
+ longitude: Number(item.scene_detail.lon),
+ name: item.scene_detail.title,
+ address: item.scene_detail.address,
+ success: function() {
+ console.log('success');
+ }
+ });
+ },
+ // 申请退款
+ refund() {
+ uni.showModal({
+ title: '提示',
+ content: '是否申请退款?',
+ success: successRes => {
+ if (successRes.confirm) {
+ this.Post({ order_id: this.info.order_id }, '/api/order/refund')
+ .then(res => {
+ if (res.code === 1) {
+ uni.showToast({ title: '申请成功', icon: 'success' });
+ this.getDetail();
+ }
+ });
+ }
+ }
+ });
+ },
+ // 关闭订单
+ closeOrder(id, index) {
+ uni.showModal({
+ title: '提示',
+ content: '是否关闭订单?',
+ success: successRes => {
+ if (successRes.confirm) {
+ this.Post({ order_id: this.info.order_id }, '/api/order/close')
+ .then(res => {
+ if (res.code === 1) {
+ uni.showToast({ title: '关闭成功', icon: 'success' });
+ this.getDetail();
+ }
+ });
+ }
+ }
+ });
+ },
+ // 支付
+ setOrderId(id) {
+ this.Post({
+ order_id: this.info.order_id,
+ pay_platform: "miniprogram",
+ pay_method: 'abc'
+ }, '/api/order/pay')
+ .then(res => {
+ if (res.code == 1) {
+ uni.requestPayment({
+ nonceStr: res.data.nonceStr,
+ package: res.data.package,
+ paySign: res.data.paySign,
+ signType: res.data.signType,
+ timeStamp: res.data.timeStamp,
+ success: () => {
+ this.getDetail();
+ }
+ });
+ }
+ });
+ },
+ // 快递查询
+ openMask(item) {
+ this.Post({
+ child_order_id: item.child_order_id
+ }, '/api/order/getExpress').then(res => {
+ if (res.data.length > 0) {
+ this.postInfo = res.data.reverse()
+ this.maskShow = true
+ } else {
+ uni.showToast({
+ title: '暂未查询到物流信息,请联系客服',
+ icon: 'none'
+ });
+ }
+ })
+ }
}
}
@@ -389,11 +726,22 @@
min-width: 125rpx;
}
}
+
+ .mask-btn {
+ width: fit-content;
+ line-height: 53rpx;
+ background: #F8F9FA;
+ border-radius: 11rpx;
+ border: 1px solid #999999;
+ padding: 0 15rpx;
+ margin: 10rpx 0 0 auto;
+ flex-shrink: 0;
+ }
.line {
width: 643rpx;
height: 1rpx;
- background: #d8d8d83b;
+ background: #D8D8D8;
margin: 33rpx 0;
}
@@ -433,35 +781,35 @@
height: 23.33rpx;
}
}
-
+
.pick-box {
margin-top: 50rpx;
-
+
.pick-title {
font-weight: bold;
font-size: 31rpx;
color: #222222;
width: 500rpx;
-
+
image {
width: 33.33rpx;
height: 33.33rpx;
margin-right: 18rpx;
}
}
-
+
.pick-subtitle {
font-weight: 500;
font-size: 24rpx;
color: #666666;
-
+
image {
width: 56rpx;
height: 56rpx;
margin-bottom: 10rpx;
display: block;
}
-
+
&>view {
display: flex;
flex-direction: column;
@@ -469,13 +817,89 @@
}
}
}
-
+
.hotel-title {
font-weight: bold;
font-size: 31rpx;
color: #222222;
margin-top: 30rpx;
}
+
+ .order-time {
+ height: 107rpx;
+
+ .time {
+ display: flex;
+ font-family: PingFang SC;
+ font-size: 24rpx;
+ color: #000000;
+ align-items: center;
+ }
+ }
+
+ .cal-day {
+ background: #F2F2F2;
+ border-radius: 17rpx;
+ padding: 5rpx 16rpx;
+ font-family: PingFang SC;
+ font-weight: 500;
+ font-size: 24rpx;
+ color: #000000;
+ }
+
+ .address-container {
+ width: 525rpx;
+ height: 107rpx;
+ border-radius: 20rpx;
+ padding: 25rpx 20rpx 25rpx 33rpx;
+ font-family: PingFang SC;
+ font-weight: 500;
+ font-size: 27rpx;
+ color: #000000;
+ background-color: #F2F2F2;
+ background-image: url('https://static.ticket.sz-trip.com/shiweisuzhou/images/homestay/mapBg.png');
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+
+ image {
+ width: 30rpx;
+ height: 30rpx;
+ }
+
+ .tip {
+ font-family: PingFang SC;
+ font-weight: 500;
+ font-size: 24rpx;
+ color: #333333;
+ }
+
+ .address-title {
+ width: 400rpx;
+ }
+ }
+
+ .phone-container {
+ width: 93rpx;
+ height: 107rpx;
+ background: #F2F2F2;
+ border-radius: 20rpx;
+ font-family: PingFang SC;
+ font-weight: 500;
+ font-size: 24rpx;
+ color: #333333;
+
+ image {
+ width: 30rpx;
+ height: 30rpx;
+ }
+
+ .tip {
+ font-family: PingFang SC;
+ font-weight: 500;
+ font-size: 24rpx;
+ color: #333333;
+ }
+ }
}
.kefu-box {
@@ -495,16 +919,16 @@
margin-right: 14rpx;
}
}
-
+
.good-box {
display: flex;
-
+
image {
width: 140rpx;
height: 140rpx;
border-radius: 13rpx;
}
-
+
&>view {
height: 140rpx;
justify-content: space-between;
@@ -512,44 +936,24 @@
margin-left: 18rpx;
width: 371rpx;
}
+
&>view:last-child {
margin-left: auto;
width: fit-content;
text-align: right;
}
-
+
.good-title {
font-weight: bold;
font-size: 27rpx;
color: #000000;
}
-
+
.good-subtitle {
font-weight: 500;
font-size: 24rpx;
color: #666666;
}
-
- .order-time{
- height: 107rpx;
- background: linear-gradient(180deg, #FFFFFF, #F7F7F7);
- .time{
- display: flex;
- font-family: PingFang SC;
- font-size: 24rpx;
- color: #000000;
- align-items: center;
- }
- }
- .cal-day{
- background: #F2F2F2;
- border-radius: 17rpx;
- padding: 5rpx 16rpx;
- font-family: PingFang SC;
- font-weight: 500;
- font-size: 24rpx;
- color: #000000;
- }
}
}
@@ -561,21 +965,21 @@
border: none;
background-color: rgba(0, 0, 0, 0);
}
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
// 二维码
.qrcode-remain {
font-weight: bold;
font-size: 29rpx;
color: #000000;
text-align: center;
-
+
span {
width: 60rpx;
text-align: center;
@@ -583,13 +987,13 @@
display: inline-block;
}
}
-
+
.qrcode-box {
height: 456rpx;
display: flex;
align-items: center;
margin-top: 32rpx;
-
+
.qrcode-item {
width: 467rpx !important;
height: 456rpx !important;
@@ -600,24 +1004,24 @@
justify-content: space-between;
align-items: center;
position: relative;
-
+
image {
width: 300rpx;
height: 300rpx;
}
-
+
.qrcode-title {
font-weight: bold;
font-size: 32rpx;
color: #000000;
}
-
+
.qrcode-subtitle {
font-weight: 500;
font-size: 27rpx;
color: #888888;
}
-
+
.complete-text {
position: absolute;
width: 300rpx;
@@ -628,7 +1032,7 @@
bottom: 0;
margin: auto;
background: rgba(0, 0, 0, .5);
-
+
view {
width: 200rpx;
height: 200rpx;
@@ -641,26 +1045,26 @@
}
}
}
-
+
.swiper-point {
height: 63rpx;
-
+
view {
width: 11rpx;
height: 11rpx;
background: #D3E8A7;
border-radius: 50%;
}
-
+
view:not(:first-child) {
margin-left: 13rpx;
}
-
+
.swiper-points {
background: #6A8A2D;
}
}
-
+
.swiper-prompt {
font-weight: 500;
font-size: 29rpx;
@@ -668,4 +1072,174 @@
text-align: center;
margin-bottom: 45rpx;
}
+
+ // 底部按钮
+ footer {
+ width: 750rpx;
+ height: 167rpx;
+ position: fixed;
+ bottom: 0;
+ display: flex;
+ align-items: center;
+ background-color: #fff;
+ border-top: 10rpx solid #F7F7F7;
+ padding: 0 26rpx;
+
+ .bottom-price {
+ font-weight: 500;
+ font-size: 24rpx;
+ color: #000000;
+
+ span {
+ font-weight: bold;
+ font-size: 40rpx;
+ color: #DC2525;
+ }
+
+ span::before {
+ content: '¥';
+ font-size: 24rpx;
+ }
+ }
+
+ .btn-box {
+ margin-left: auto;
+ display: flex;
+
+ .btn {
+ width: 213rpx;
+ line-height: 71rpx;
+ background: #F8F9FA;
+ border-radius: 11rpx;
+ border: 1rpx solid #999999;
+ text-align: center;
+ margin-right: 14rpx;
+ font-weight: 500;
+ font-size: 31rpx;
+ color: #111111;
+ }
+
+ .btn:last-of-type {
+ margin-right: 0;
+ }
+
+ .pay-btn {
+ height: 73rpx;
+ background: #6A8A2D;
+ border: none;
+ color: #FFFFFF;
+ }
+ }
+ }
+
+ // 快递查询
+ .mask {
+ position: fixed;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ background: rgba(0, 0, 0, 0.6);
+ z-index: 1000;
+ display: flex;
+ align-items: flex-end;
+ justify-content: center;
+ }
+
+ .mask-bg {
+ position: fixed;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ }
+
+ .mask-content {
+ width: 100%;
+ padding: 28rpx 0;
+ border-radius: 20rpx 20rpx 0 0;
+ background: white;
+ height: 70%;
+ position: relative;
+ overflow-y: auto;
+ }
+
+ .mask-content .icon-close {
+ position: absolute;
+ right: 20rpx;
+ top: 20rpx;
+ }
+
+ .mask-content .close-btn {
+ background-image: url("https://static.ticket.sz-trip.com/taizhou/images/close.png");
+ width: 80rpx;
+ height: 80rpx;
+ position: absolute;
+ bottom: -100rpx;
+ left: 0;
+ right: 0;
+ margin: auto;
+ }
+
+ .mask-title {
+ font-size: 36rpx;
+ font-weight: bold;
+ padding-left: 37rpx;
+ }
+
+ .mask-content .iconfont {
+ position: absolute;
+ right: 30rpx;
+ top: 20rpx;
+ }
+
+ .express-all {
+ margin: 40rpx;
+ position: relative;
+ }
+
+ .express-item {
+ display: flex;
+ justify-content: space-between;
+ padding-bottom: 60rpx;
+ position: relative;
+ z-index: 1;
+ }
+
+ .line {
+ width: 1rpx;
+ height: 100%;
+ background: #CCCCCC;
+ position: absolute;
+ left: 13rpx;
+ }
+
+ .express-info {
+ width: 600rpx;
+ font-size: 26rpx;
+ line-height: 40rpx;
+ color: #999;
+ }
+
+ .express-info.active {
+ color: #000;
+ }
+
+ .express-time {
+ font-size: 22rpx;
+ color: #666;
+ margin-top: 10rpx;
+ }
+
+ .express-item-icon {
+ width: 27rpx;
+ height: 27rpx;
+ background: #CCCCCC;
+ border-radius: 50%;
+ position: relative;
+ }
+
+ .express-item-icons {
+ background: #D3E8A7;
+ }
\ No newline at end of file
diff --git a/subPackages/order/trades.vue b/subPackages/order/trades.vue
index 7954d0d..a8cfdbe 100644
--- a/subPackages/order/trades.vue
+++ b/subPackages/order/trades.vue
@@ -30,7 +30,7 @@
- choseType(item)">
订单编号:{{ item.order_id }}
@@ -53,7 +53,7 @@
合计
- {{ item.total_money / 100 }}
+ {{ item.paid_money / 100 }}
refund(item.order_id, key)" v-if="['WAIT_POST','WAIT_USE','PAID'].includes(item.state)">
@@ -187,9 +187,9 @@ export default {
this.orderId = id;
this.Post({
order_id: id,
- type: "miniprogram",
- platform: 'miniprogram'
- }, '/api/pay/unify')
+ pay_platform: "miniprogram",
+ pay_method: 'abc'
+ }, '/api/order/pay')
.then(res => {
if (res.data) {
uni.requestPayment({
@@ -199,19 +199,8 @@ export default {
signType: res.data.signType,
timeStamp: res.data.timeStamp,
success: () => {
- const templateIds = [
- // 退款成功通知
- 'hRZoiEES2BWtKb6Xgsnn8khLQH9un5j_11qu0bwlhfE',
- // 出票结果通知
- 'YyTCUIYBnrj9CyKks8cOjNX_Rk8a4yVdswMP-zXVbhc'
- ];
- uni.requestSubscribeMessage({
- tmplIds: templateIds,
- complete: () => {
- this.resetList();
- this.getList();
- }
- });
+ this.resetList();
+ this.getList();
}
});
}
diff --git a/subPackages/ticket/detail.vue b/subPackages/ticket/detail.vue
index dd5da20..05ece75 100644
--- a/subPackages/ticket/detail.vue
+++ b/subPackages/ticket/detail.vue
@@ -882,7 +882,7 @@
display: flex;
align-items: center;
flex-direction: column;
- width: 44rpx;
+ width: 60rpx;
image{
width: 44rpx;
height: 42rpx;