81 Commits
Author SHA1 Message Date
lifizer b348412c74 Refactor(千县):图片增加懒加载,优化渲染速度
(cherry picked from commit 23f3d8b994)
2026-07-29 17:44:40 +08:00
linxi 82455f87ce Fix:抽奖送礼还能选择优惠券
(cherry picked from commit 80078cae78)
2026-07-28 11:15:21 +08:00
lifizer a4751dc9f6 Conf:增加Fix环境的配置
(cherry picked from commit 663d8f06fb)
2026-07-24 16:55:24 +08:00
linxi 6ab3d5cc75 Fix:5536 【商城小程序】订单详情点击商品图片区域之前是可以进入商品详情的,现在点击无法进入商品详情页
(cherry picked from commit 3cd6f29e32)
2026-07-24 11:37:47 +08:00
linxi 01c400bb7e Fix:5535 【商城小程序】全国特产、文玩艺术板块的省级导航页面搜索栏,在搜索有效名称时提示“未找到该城市,请重新输入城市名称”
(cherry picked from commit 51e9d8b966)
2026-07-24 11:37:40 +08:00
linxi cb8a4bb33c Fix: 订单列表所有按钮点击都没反应了
(cherry picked from commit 76a877f2c2)
2026-07-24 11:35:35 +08:00
linxi fb03ad9f4a Fix:5174 【商城小程序】游客身份直接点击页面底部【客服】按钮并发送文字后,页面显示空白,且未弹出登录引导提示
(cherry picked from commit 55ed80acbc)
2026-07-24 11:35:20 +08:00
linxi e7557e72a5 Fix:5176 【商城小程序】省级导航在搜索无效名称时无反馈
(cherry picked from commit 956d7bf70b)
2026-07-24 11:35:08 +08:00
linxi 6e1e6233fa Fix:5349 【商城小程序】顶部标题“特色礼品”修改为“全国礼品”
(cherry picked from commit 62e7776b64)
2026-07-24 11:35:02 +08:00
linxi ce94e5d739 Fix:5371 【商城小程序】甄选好礼对应分类下无商品不会提示
(cherry picked from commit 8f7ff49641)
2026-07-24 11:34:54 +08:00
linxi ca79a820fb Fix:5397 【商城小程序】商品链接,连续快速点击“送给朋友”,重复弹出多个送礼页面
(cherry picked from commit 6d963a5bc0)
2026-07-24 11:34:48 +08:00
linxi cb6abf4a5a Fix:5420 【商城小程序】抽奖活动已开奖后取消退款,在个人主页查看我的抽奖码,“失效原因:订单取消”改为“活动已结束,抽奖码无法恢复”
(cherry picked from commit b4c1ea20ac)
2026-07-24 11:34:41 +08:00
linxi f2aeab5c41 Fix:5451 【商城小程序】店铺查看资讯详情返回列表页时,列表自动滑动至顶部
(cherry picked from commit 47ac886d5d)
2026-07-24 11:34:31 +08:00
linxi 1fad8cae64 Fix:5452 【商城小程序】收礼方申请退款被商家拒绝后,礼包订单详情显示“立即评价”按钮
(cherry picked from commit f72a68ccc3)
2026-07-24 11:34:25 +08:00
linxi 2411ae369d Fix:5453 【商城小程序】苹果手机视频列表布局方向从右到左,应该从左到右排列,与安卓同步
(cherry picked from commit 73fa5e35d4)
2026-07-24 11:34:19 +08:00
linxi e6cf9c082c Fix:5454 【商城小程序】购买商品,微信支付下单后未支付,待付款列表显示两条相同订单记录
(cherry picked from commit ea44413ac1)
2026-07-24 11:34:13 +08:00
lifizer fcccf351bf Merge branch 'v23' into prod 2026-07-24 11:32:46 +08:00
lifizer 27ac2a086d Merge branch 'dev-AI-v5' into dev 2026-07-02 10:46:23 +08:00
linxi df87d0f9c8 Feat:抽奖优化 2026-07-02 10:06:50 +08:00
linxi 7aeff7ece1 Feat:取消退款 2026-07-02 09:34:56 +08:00
lifizer 7dcba7c04b Fix(抽奖):[#5396]界面文字修改 2026-07-01 15:55:24 +08:00
lifizer 5d4ad3f427 Chore(入驻):解决合并冲突未完全解决问题 2026-04-27 10:44:38 +08:00
lifizer fd583b7a2e Style(云灵AI):标题调整
(cherry picked from commit 8c1aa62024)
2026-04-27 10:35:06 +08:00
linxi 7dedcf773f Fix:体验店显示判断调整 2026-04-24 18:18:25 +08:00
linxi a8907717b2 Fix:体验店显示判断调整 2026-04-24 14:21:19 +08:00
linxi ed23d2e220 Style:资讯店铺链接优化
(cherry picked from commit a863ee7c85)
2026-04-24 09:18:14 +08:00
linxi 7d55bdf879 Style:体验店封面优化
(cherry picked from commit 49580bc511)
2026-04-24 09:18:09 +08:00
linxi 4b56c2cce7 Fix:订单列表商品图片调大
(cherry picked from commit 341d4d5c70)
2026-04-24 09:18:04 +08:00
linxi 77e900e02c Fix:团购订单核销后没有同步弹出体验券领取弹窗,用户首次进入该团购订单详情页才会显示弹窗
(cherry picked from commit a86b416ed8)
2026-04-24 09:17:58 +08:00
LinCyJang 75e9c404fc Fix:旅居订单增加轮询 2026-04-24 09:17:49 +08:00
linxi 0a70e4af6c Fix:5126 【商城小程序】地址被驳回状态的提示词修改 2026-04-22 15:50:05 +08:00
linxi 11e294bcdc Fix:5173 【商城小程序】首页甄选好礼的轮播,长时间熄屏再打开,首页甄选好礼的轮播会异常卡顿,目前发现有这个现象的机型:iPhone XR、iPhone 16Pro
(cherry picked from commit b4b6fed1ab)
2026-04-22 15:36:24 +08:00
linxi 3e0e1542b6 Fix:5168 【商城小程序】文化图片改为非必填,去除必填标识
(cherry picked from commit 9dc63c2207)
2026-04-22 15:36:18 +08:00
linxi ae3fbf914b Fix:5172 【商城小程序】将左右间距加宽一点
(cherry picked from commit 9fa58286e8)
2026-04-22 15:36:13 +08:00
linxi 8ee399823d Fix:5126 【商城小程序】地址被驳回状态的提示词修改
(cherry picked from commit 3e0940f42c)
2026-04-22 15:36:06 +08:00
LinCyJang dac7c96189 Fix:5168 【商城小程序】文化图片改为非必填,去除必填标识 2026-04-21 20:45:50 +08:00
LinCyJang 458d2b8b65 Fix:5115 【商城小程序】店铺链接数据显示混乱
(cherry picked from commit 505d383bff)
2026-04-21 20:28:35 +08:00
LinCyJang 33a1125294 Fix:5126 【商城小程序】地址被驳回状态的提示词修改
(cherry picked from commit 23af0da8fa)
2026-04-21 20:28:30 +08:00
linxi a2d0ef8dfa Fix:5162 【商城小程序】待收货订单申请退款,退款中状态地址信息部分显示null 2026-04-21 20:27:44 +08:00
LinCyJang b0c4a5621e Fix:5160 【商城小程序】在订单列表购物“正在加载中”状态下快速切换旅居标签,出现数据错位
(cherry picked from commit e3316844e3)
2026-04-21 20:27:10 +08:00
linxi 8c83e0a1bc Fix:5147 【商城小程序】修改地址审核中状态下申请退款,订单详情页只需显示原地址 2026-04-16 10:25:02 +08:00
linxi 97c4d7fe4f Fix:5149 【商城小程序】商品详情页,点击「联系商家」弹出的商家电话弹窗,号码显示空白但可正常跳转拨号 2026-04-16 10:18:53 +08:00
linxi 29827b250a Fix:5148 【商城小程序】列表体验店卡片页面样式调整 2026-04-16 10:16:01 +08:00
linxi edaba70c6e Fix:5150 【商城小程序】体验券按钮栏左右滑动时,按钮内容被异常遮挡,显示不完整 2026-04-16 10:13:29 +08:00
linxi e5c7900b89 Fix:5128 【商城小程序】修改申请被驳回后订单详情只需显示原地址 2026-04-13 19:48:03 +08:00
linxi d69cf4c9e2 Fix:5075 【商城小程序】点击体验店,链接跳转的体验店详情数据错误,获取的是旅居店铺的数据,应获取体验店数据
(cherry picked from commit 1d8b75e2d2)
2026-04-13 19:37:44 +08:00
linxi 4a29b1cd27 Fix:5085 【商城小程序】用户多笔订单支付成功后,自动跳转到"我的订单"-"待发货"页面
(cherry picked from commit 8f6b2a23d1)
2026-04-13 19:37:39 +08:00
linxi df1c6dfb73 Fix:5081 【商城小程序】用户订单创建后未支付,自动跳转到"我的订单"-“待付款”页面
(cherry picked from commit 8c4d588ffa)
2026-04-13 19:37:34 +08:00
linxi 13201d251b Fix:5145 【商城小程序】首页海报状态未实时更新,需重启小程序才生效
(cherry picked from commit 9cbf35d693)
2026-04-13 19:37:29 +08:00
lifizer be90572388 Merge branch 'dev' into test 2026-04-13 15:32:21 +08:00
lifizer 335793676b Merge branch 'dev' into test 2026-02-25 10:23:01 +08:00
lifizer 377852a65f Merge branch 'dev' into test 2026-01-20 10:04:02 +08:00
LinCyJang f202fca716 Merge branch 'dev' into test 2026-01-19 21:44:44 +08:00
lifizer d288547259 Merge branch 'dev' into test 2026-01-07 09:48:46 +08:00
lifizer 5568cf039e Merge branch 'dev' into test 2025-12-22 16:29:14 +08:00
linxi ef66206182 Fix:收礼页调整
(cherry picked from commit e05eb3e389)
2025-12-15 10:09:18 +08:00
linxi d00fe87625 Fix:康养搜索增加 shopType=wellness
(cherry picked from commit a6735d284e)
2025-12-15 10:09:11 +08:00
linxi 749e3901f8 Fix:旅居分享问题
(cherry picked from commit 1f4ea5c0c8)
2025-12-15 10:09:06 +08:00
lifizer 1710f4809c Fix(专题页):尖货&节日分享朋友圈进入小程序渲染错误
(cherry picked from commit eaa36dcf44)
2025-12-15 10:08:55 +08:00
lifizer 38545cd76e Merge branch 'dev' into test 2025-12-09 16:39:27 +08:00
linxi b9dcbe6560 Fix:4004 【商城小程序】在互动消息列表回复资讯评论,内容被顶至屏幕之外
(cherry picked from commit 7a44ed3265)
2025-11-22 16:25:47 +08:00
linxi 50e143f13c Fix:4628 【旅居商城小程序】团购订单提交页面——输入框内容,未固定位置。
(cherry picked from commit b2121e71ef)
2025-11-22 16:25:39 +08:00
linxi 7c65d839d9 Fix:4646 【旅居商城小程序】团购礼包退款后,收礼方领取时的提示信息改为“礼品卡已失效”(iOS需修改提示,安卓需增加提示)
(cherry picked from commit d43fc253c9)
2025-11-22 16:25:35 +08:00
linxi f29ca88ab3 Fix:4643 【旅居商城小程序】没开转赠的团购礼包领取页面需要单独关闭右上角转发功能
(cherry picked from commit c9f3767cbd)
2025-11-21 12:34:20 +08:00
linxi 56402e37f3 Fix:4601 【旅居管理后台,商城小程序】旅居商户管理—修改所属分类为“康养分类”,在前端小程序中不显示
(cherry picked from commit 889b0de9b7)
2025-11-21 12:34:15 +08:00
linxi c39f2a4da8 Fix:4629 【旅居供应链小程序】供应链小程序/PC端修改资讯,将图片资讯改为视频后,视频无法正常播放
(cherry picked from commit 6e316a9f2c)
2025-11-21 12:34:11 +08:00
linxi c894689365 Fix:4634 【旅居商城小程序】播放资讯视频时,旅居店铺封面视频未暂停
(cherry picked from commit 4686c6d87a)
2025-11-21 12:34:06 +08:00
linxi 5c23dc9773 Fix:4632 【旅居商城小程序】团购详情轮播图循环逻辑错误
(cherry picked from commit 896f8dee7f)
2025-11-21 12:34:02 +08:00
linxi bad10982b7 Fix:4639 【旅居商城小程序】预约日期包含以下几个时间段时无法预约:1.31-2.1,3.31-4.1,5.31-6.1,8.31-9.1,10.31-11.1(应改为:只要选择的时间段可预约、并且等于团购天数,就可以预约成功)
(cherry picked from commit d9ee41d8f3)
2025-11-21 12:33:56 +08:00
linxi fe0397a483 Fix:4623 【旅居商城小程序】新增的视频资讯无法正常播放 2025-11-19 10:26:32 +08:00
linxi a535c8192e Fix:4613 【旅居商城小程序】待支付订单进行支付时,取消订单状态导航栏可点击状态 2025-11-18 14:28:34 +08:00
linxi 2e1fa524fa Fix:4598 【旅居商城小程序】供应链小程序新增视频资讯,前端视频未显示 2025-11-18 14:22:41 +08:00
linxi 48284adb6b Fix:4610 【旅居商城小程序】资讯正文的文本格式(换行、字体加粗等)在前端未生效 2025-11-18 14:19:19 +08:00
linxi 2af9fe99ee Fix:4260 【旅居商城小程序】管理后台新增旅居商户后,相应的用户进入商城小程序点击入驻入口,弹出提示窗,即将打开供应链小程序。确认后打开供应链小程序,如下图所示
(cherry picked from commit f884d1c764)
2025-11-17 15:36:09 +08:00
linxi 5caa9b176a Fix:4432 【旅居商城小程序】订单状态列表,待确认订单未显示确认倒计时
(cherry picked from commit 31ce97db6a)
2025-11-17 15:36:04 +08:00
linxi 438b7a98e4 Fix:4373 【旅居商城小程序】审核中状态下无法撤销入驻申请(参考供应商和特色店铺的入驻流程,【审核中】状态标识提到顶部显示,底部改成【撤销申请】)/接口
(cherry picked from commit 7786f88896)
2025-11-17 15:36:00 +08:00
linxi a2f1d9f59e Fix:4373 【旅居商城小程序】审核中状态下无法撤销入驻申请(参考供应商和特色店铺的入驻流程,【审核中】状态标识提到顶部显示,底部改成【撤销申请】)
(cherry picked from commit b260bb9e34)
2025-11-17 15:35:55 +08:00
linxi c4787b56e8 Fix:4519 【旅居商城小程序】送礼—礼包订单类型改为“礼包订单”
(cherry picked from commit 51ff86e4f8)
2025-11-17 15:35:51 +08:00
linxi 0937a32bce Fix:4388 【旅居商城小程序】管理后台配置商家号码在前端小程序未生效
(cherry picked from commit 3d8df506e0)
2025-11-17 15:35:47 +08:00
linxi cfef9c5b39 Fix:4600 【旅居管理后台,商城小程序】旅居商户管理—修改所属分类为“康养顶部”,在前端小程序所有康养城市顶部都会显示
(cherry picked from commit 2d8f2b16a9)
2025-11-17 15:35:43 +08:00
linxi 85906cbe44 Fix:4602 【旅居商城小程序】提交团购订单页面,联系商家-点击立即拨打按钮无效
(cherry picked from commit 1d34f4dd08)
2025-11-17 15:35:39 +08:00
19 changed files with 630 additions and 141 deletions
+15
View File
@@ -51,6 +51,7 @@ export const chatMixinsV2 = {
audioPlayId: '', audioPlayId: '',
showGiftBtn: false, showGiftBtn: false,
buyLoading: false, buyLoading: false,
buyActionLock: false,
exceptionConfig: { exceptionConfig: {
model_exception: '您提的问题未能理解,云灵思想跑偏啦,重新整理一下问题或者重新提问,让云灵再试试!', model_exception: '您提的问题未能理解,云灵思想跑偏啦,重新整理一下问题或者重新提问,让云灵再试试!',
voice_exception: '' voice_exception: ''
@@ -533,6 +534,10 @@ export const chatMixinsV2 = {
this.productItemBuyNowOrGiftBuy(item, 2) this.productItemBuyNowOrGiftBuy(item, 2)
}, },
productItemBuyNowOrGiftBuy(item, BuyNowOrGiftBuyType) { productItemBuyNowOrGiftBuy(item, BuyNowOrGiftBuyType) {
if (this.buyActionLock) {
return
}
this.buyActionLock = true
this.audioStopHandle() this.audioStopHandle()
this.cart_num = 1 this.cart_num = 1
this.m_id = item.id this.m_id = item.id
@@ -540,6 +545,7 @@ export const chatMixinsV2 = {
const { data } = res const { data } = res
this.storeInfo = {...data.storeInfo} this.storeInfo = {...data.storeInfo}
if(data.storeInfo.stock === 0) { if(data.storeInfo.stock === 0) {
this.buyActionLock = false
uni.showToast({ uni.showToast({
title: "产品库存不足,请选择其他商品", title: "产品库存不足,请选择其他商品",
icon: "none", icon: "none",
@@ -577,6 +583,14 @@ export const chatMixinsV2 = {
return return
} }
this.attr.cartAttr = !this.isOpen ? true : false this.attr.cartAttr = !this.isOpen ? true : false
this.buyActionLock = false
}).catch(error => {
this.buyActionLock = false
uni.showToast({
title: error.msg || '操作失败,请稍后重试',
icon: "none",
duration: 3000
})
}) })
}, },
buyNowOrGiftBuyReq(type) { buyNowOrGiftBuyReq(type) {
@@ -617,6 +631,7 @@ export const chatMixinsV2 = {
}) })
}).finally(() => { }).finally(() => {
_this.buyLoading = false _this.buyLoading = false
_this.buyActionLock = false
}) })
}, },
closeAttrWindow() { closeAttrWindow() {
+11
View File
@@ -102,6 +102,17 @@ export function postOrderRefund(data) {
return request.post("/order/refund/verify", data); return request.post("/order/refund/verify", data);
} }
/**
* 取消退款申请
* @param uni
* @returns {*}
*/
export function cancelOrderRefund(uni) {
return request.post("/order/refund/cancel", {
uni
});
}
/** /**
* 确认收货 * 确认收货
* @returns {*} * @returns {*}
+8
View File
@@ -10,6 +10,14 @@ if (NODE_ENV === 'development' || NODE_ENV === 'test') {
enableDebug: false enableDebug: false
}) })
} }
if (NODE_ENV === 'fix') {
BASE_URL = 'https://shop-pre.xdd618.com/api'
SERVICE_URL = 'https://service-pre.xdd618.com/api'
SERVICE_WS_URL = 'wss://service-pre.xdd618.com/ws'
wx.setEnableDebug({
enableDebug: false
})
}
if (NODE_ENV === 'prod') { if (NODE_ENV === 'prod') {
BASE_URL = 'https://wxapp.xdd618.com/api' BASE_URL = 'https://wxapp.xdd618.com/api'
SERVICE_URL = 'https://service.xdd618.com/api' SERVICE_URL = 'https://service.xdd618.com/api'
+11
View File
@@ -133,6 +133,17 @@
"CUSTOM-CONST": true "CUSTOM-CONST": true
} }
}, },
"mp-weixin-fix": {
"title": "微信小程序(Fix环境)",
"env": {
"UNI_PLATFORM": "mp-weixin",
"VUE_APP_ENV": "fix",
"UNI_OUTPUT_DIR": "dist"
},
"define": {
"CUSTOM-CONST": true
}
},
"mp-weixin": { "mp-weixin": {
"title": "微信小程序(生产环境)", "title": "微信小程序(生产环境)",
"env": { "env": {
+1 -1
View File
@@ -490,7 +490,7 @@
{ {
"path": "views/giftList", "path": "views/giftList",
"style": { "style": {
"navigationBarTitleText": "特色礼品" "navigationBarTitleText": "全国礼品"
} }
}, },
{ {
+29 -13
View File
@@ -7,21 +7,23 @@
</view> </view>
<view class="list" v-if="list.length"> <view class="list" v-if="list.length">
<custom-waterfalls-flow :value="list" imageKey="cover"> <view class="video-waterfalls-wrap">
<view class="item" v-for="(item,index) in list" :key="index" slot="slot{{index}}" @click="goDetail(item)"> <custom-waterfalls-flow :value="list" imageKey="cover">
<image class="cover" :src="item.cover" mode="widthFix"></image> <view class="item" v-for="(item,index) in list" :key="index" slot="slot{{index}}" @click="goDetail(item)">
<view class="content"> <image class="cover" :src="item.cover" mode="widthFix"></image>
<view class="title more-t">{{ item.title }}</view> <view class="content">
<view class="footer flex jc-between ai-center"> <view class="title more-t">{{ item.title }}</view>
<view class="visit flex ai-center"> <view class="footer flex jc-between ai-center">
<image class="icon" style="margin-right: 8rpx" :src="item.storeLogo" mode="scaleToFill"></image> <view class="visit flex ai-center">
{{ item.storeName }} <image class="icon" style="margin-right: 8rpx" :src="item.storeLogo" mode="scaleToFill"></image>
{{ item.storeName }}
</view>
<image class="icon flex-0" :src="webUrl+'/20210806121203835373.png'" mode="scaleToFill"></image>
</view> </view>
<image class="icon flex-0" :src="webUrl+'/20210806121203835373.png'" mode="scaleToFill"></image>
</view> </view>
</view> </view>
</view> </custom-waterfalls-flow>
</custom-waterfalls-flow> </view>
</view> </view>
<view class="v4-nodata" v-else> <view class="v4-nodata" v-else>
@@ -114,6 +116,7 @@ export default {
border-radius: 20rpx; border-radius: 20rpx;
background: #fff; background: #fff;
font-size: 26rpx; font-size: 26rpx;
white-space: nowrap;
} }
.active { .active {
@@ -125,6 +128,19 @@ export default {
.list { .list {
margin: 28rpx 32rpx; margin: 28rpx 32rpx;
.video-waterfalls-wrap {
direction: ltr;
/deep/ .waterfalls-flow {
direction: ltr;
text-align: left;
}
/deep/ .waterfalls-flow-column {
float: left !important;
}
}
.item { .item {
border-radius: 4rpx; border-radius: 4rpx;
background: #fff; background: #fff;
@@ -174,4 +190,4 @@ export default {
} }
} }
} }
</style> </style>
+16 -13
View File
@@ -384,20 +384,23 @@ export default {
this.mescroll && this.mescroll.triggerDownScroll() this.mescroll && this.mescroll.triggerDownScroll()
}, },
search() { search() {
if(this.keyword === '') return const keyword = (this.keyword || '').trim()
this.listGroup.findIndex((group, index) => { if (!keyword) return
let result const matchIndex = this.listGroup.findIndex(group => {
group.city.forEach(item => { const cityList = Array.isArray(group.city) ? group.city : []
result = item.cityName.indexOf(this.keyword, 0) return cityList.some(item => item && item.cityName && item.cityName.indexOf(keyword) !== -1)
if (result !== -1) {
this.asideTap(index);
return null;
}
})
if (result !== -1) {
return result
}
}) })
if (matchIndex !== -1) {
this.keyword = keyword
this.asideTap(matchIndex)
return
}
if (matchIndex === -1) {
uni.showToast({
title: '未找到该城市,请重新输入城市名称',
icon: 'none'
})
}
}, },
select(item) { select(item) {
if (this.type === 0 && item.hasData === 0) return if (this.type === 0 && item.hasData === 0) return
+22 -4
View File
@@ -36,7 +36,7 @@
</view> </view>
</view> </view>
<view class="product-wrap v12-mt-3"> <view v-if="products.length > 0" class="product-wrap v12-mt-3">
<view class="product-card" v-for="(item, index) in products" :key="index" @click="toGoods(item)"> <view class="product-card" v-for="(item, index) in products" :key="index" @click="toGoods(item)">
<image :src="item.productImage" class="product-card-img" mode="heightFix|widthFix"></image> <image :src="item.productImage" class="product-card-img" mode="heightFix|widthFix"></image>
<view class="new-info"> <view class="new-info">
@@ -53,6 +53,9 @@
</view> </view>
</view> </view>
</view> </view>
<view v-else class="empty-wrap">
<view class="empty-text">暂无数据</view>
</view>
<ProductWindow <ProductWindow
ref="attrWindow" ref="attrWindow"
:attr="attr" :attr="attr"
@@ -99,8 +102,12 @@ export default{
onLoad() { onLoad() {
queryNewZone().then(res => { queryNewZone().then(res => {
this.details = res.data this.details = res.data
this.tabs = res.data.categories this.tabs = Array.isArray(res.data.categories) ? res.data.categories : []
this.handleClick(0, this.tabs[0]) if (this.tabs.length > 0) {
this.handleClick(0, this.tabs[0])
} else {
this.products = []
}
}) })
}, },
computed: { computed: {
@@ -112,7 +119,7 @@ export default{
methods: { methods: {
handleClick(index, tab) { handleClick(index, tab) {
this.activeIndex = index this.activeIndex = index
this.products = tab.products this.products = Array.isArray(tab && tab.products) ? tab.products : []
}, },
handleChange(e) { handleChange(e) {
this.current = e.detail.current this.current = e.detail.current
@@ -144,6 +151,17 @@ export default{
justify-content: space-between; justify-content: space-between;
flex-wrap: wrap; flex-wrap: wrap;
} }
.empty-wrap{
min-height: 260rpx;
display: flex;
align-items: center;
justify-content: center;
}
.empty-text{
font-size: 28rpx;
color: #999999;
text-align: center;
}
.tab-line{ .tab-line{
position: absolute; position: absolute;
bottom: 0; bottom: 0;
+239 -70
View File
@@ -54,14 +54,14 @@
<view class="list v12-ma-0" style="padding: 0rpx 0 30rpx;"> <view class="list v12-ma-0" style="padding: 0rpx 0 30rpx;">
<view <view
v-for="(order, orderListIndex) in orderList" v-for="(order, orderListIndex) in orderList"
:key="orderListIndex" :key="order.orderId || orderListIndex"
class="item" class="item"
> >
<view <view
v-if="order.experienceOrderInfo" v-if="order.experienceOrderInfo"
class="shop-info flex jc-between ai-center" class="shop-info flex jc-between ai-center"
style="padding-bottom: 0" style="padding-bottom: 0"
@click.stop="goStore(order)" @click.stop="goStore(orderListIndex)"
> >
<view class="flex ai-center"> <view class="flex ai-center">
<image <image
@@ -79,7 +79,7 @@
v-if="order.merName && !order.experienceOrderInfo" v-if="order.merName && !order.experienceOrderInfo"
class="shop-info flex jc-between ai-center" class="shop-info flex jc-between ai-center"
style="padding-bottom: 0" style="padding-bottom: 0"
@click="goStore(order)" @click="goStore(orderListIndex)"
> >
<view class="flex ai-center"> <view class="flex ai-center">
<image <image
@@ -133,7 +133,7 @@
class="font-color-white statusTag v12-primary" class="font-color-white statusTag v12-primary"
>{{ (order.isGiftCardSend || order.isGiftCardReceive) ? '礼包' : (getStatus(order) || (order._status && order._status._title) || '已完成') }}</view> >{{ (order.isGiftCardSend || order.isGiftCardReceive) ? '礼包' : (getStatus(order) || (order._status && order._status._title) || '已完成') }}</view>
</view> </view>
<view @click="goOrderDetails(order)"> <view @click="goOrderDetails(orderListIndex)">
<view <view
v-if="order.isGiftCardReceiveBlind === 1" v-if="order.isGiftCardReceiveBlind === 1"
class="item-info acea-row row-between row-top" class="item-info acea-row row-between row-top"
@@ -254,22 +254,22 @@
<image <image
v-if="cart.combinationId === 0 && cart.bargainId === 0 &&cart.seckillId === 0" v-if="cart.combinationId === 0 && cart.bargainId === 0 &&cart.seckillId === 0"
:src="cart.productInfo.image" :src="cart.productInfo.image"
@click.stop="gotoGoodDetail(cart, 1, { id: cart.productInfo.id })" @click.stop="gotoGoodDetail(orderListIndex, cartInfoIndex)"
/> />
<image <image
v-else-if="cart.combinationId > 0" v-else-if="cart.combinationId > 0"
:src="cart.productInfo.image" :src="cart.productInfo.image"
@click.stop="gotoGoodDetail(cart, 2, { id: cart.combinationId })" @click.stop="gotoGoodDetail(orderListIndex, cartInfoIndex)"
/> />
<image <image
v-else-if="cart.bargainId > 0" v-else-if="cart.bargainId > 0"
:src="cart.productInfo.image" :src="cart.productInfo.image"
@click.stop="gotoGoodDetail(cart, 3, { id: cart.bargainId })" @click.stop="gotoGoodDetail(orderListIndex, cartInfoIndex)"
/> />
<image <image
v-else-if="cart.seckillId > 0" v-else-if="cart.seckillId > 0"
:src="cart.productInfo.image" :src="cart.productInfo.image"
@click.stop="gotoGoodDetail(cart, 4, { id: cart.seckillId })" @click.stop="gotoGoodDetail(orderListIndex, cartInfoIndex)"
/> />
</view> </view>
<view class="text" style="margin-top: 0 !important;"> <view class="text" style="margin-top: 0 !important;">
@@ -334,17 +334,17 @@
<view <view
v-if="order.experienceOrderStatus === 0 || order.experienceOrderStatus === 1" v-if="order.experienceOrderStatus === 0 || order.experienceOrderStatus === 1"
class="bnt service" class="bnt service"
@click.stop="goRoom(order)" @click.stop="goRoom(orderListIndex)"
>联系商家</view> >联系商家</view>
<view <view
v-if="order.experienceOrderStatus === 0" v-if="order.experienceOrderStatus === 0"
class="bnt v12-primary v12-white-text v12-primary-border v12-radius-40" class="bnt v12-primary v12-white-text v12-primary-border v12-radius-40"
@click.stop="goOrderDetails(order)" @click.stop="goOrderDetails(orderListIndex)"
>去使用</view> >去使用</view>
<view <view
v-if="order.experienceOrderStatus === 1 || order.experienceOrderStatus === 2" v-if="order.experienceOrderStatus === 1 || order.experienceOrderStatus === 2"
class="bnt service" class="bnt service"
@click.stop="delOrder(order)" @click.stop="delOrder(orderListIndex)"
>删除订单</view> >删除订单</view>
</view> </view>
<view <view
@@ -358,18 +358,18 @@
> >
<text <text
class="btn-more v12-font-28 v12-font-bold" class="btn-more v12-font-28 v12-font-bold"
@click.stop="tapShowMore(order, orderListIndex)" @click.stop="tapShowMore(orderListIndex)"
>更多</text> >更多</text>
<view class="group-float" v-show="order.showMore"> <view class="group-float" v-show="order.showMore">
<view <view
v-if="order.merName && order.isGiftCardReceiveBlind === 0" v-if="order.merName && order.isGiftCardReceiveBlind === 0"
class="btn btn-service flex jc-center ai-center v12-font-24" class="btn btn-service flex jc-center ai-center v12-font-24"
@click="goRoom(order)" @click="goRoom(orderListIndex)"
>联系商家</view> >联系商家</view>
<view <view
v-if="order.isTravelGroup === 0 && order.refundSystemStatus !== 2" v-if="order.isTravelGroup === 0 && order.refundSystemStatus !== 2"
class="btn flex jc-center ai-center v12-font-24" class="btn flex jc-center ai-center v12-font-24"
@click="goRefund(order)" @click="goRefund(orderListIndex)"
>申请退款</view> >申请退款</view>
</view> </view>
</view> </view>
@@ -378,7 +378,7 @@
<view <view
v-if="order.isDrawOrder > 0" v-if="order.isDrawOrder > 0"
class="bnt service" class="bnt service"
@click.stop="callMerPhone(order)" @click.stop="callMerPhone(orderListIndex)"
>联系客服 >联系客服
</view> </view>
<view> <view>
@@ -389,18 +389,18 @@
parseInt(order._status._type) !== 9 parseInt(order._status._type) !== 9
" "
class="bnt service" class="bnt service"
@click="goRoom(order)" @click="goRoom(orderListIndex)"
>联系商家</view> >联系商家</view>
</view> </view>
<view class="v12-justify-between"> <view class="v12-justify-between">
<view <view
class="bnt service" class="bnt service"
@click="goOrderDetails(order)" @click="goOrderDetails(orderListIndex)"
v-if="[-1, -2, -3].includes(parseInt(order._status._type))" v-if="[-1, -2, -3].includes(parseInt(order._status._type))"
>查看详情</view> >查看详情</view>
<view <view
class="bnt service" class="bnt service"
@click="delOrder(order)" @click="delOrder(orderListIndex)"
v-if="[9].includes(parseInt(order._status._type))" v-if="[9].includes(parseInt(order._status._type))"
>删除订单</view> >删除订单</view>
</view> </view>
@@ -411,61 +411,61 @@
<template v-if="parseInt(order._status._type) === 0"> <template v-if="parseInt(order._status._type) === 0">
<view <view
class="bnt cancelBnt v12-dark-text v12-dark-border" class="bnt cancelBnt v12-dark-text v12-dark-border"
@click="cancelOrder(order)" @click="cancelOrder(orderListIndex)"
>取消订单</view> >取消订单</view>
<view <view
v-if="order.isTravelGroup === 0 && order.isDrawOrder === 0" v-if="order.isTravelGroup === 0 && order.isDrawOrder === 0"
class="bnt cancelBnt v12-dark-text v12-dark-border" class="bnt cancelBnt v12-dark-text v12-dark-border"
@click="addressTap(order)" @click="addressTap(orderListIndex)"
>修改地址</view> >修改地址</view>
<view <view
class="bnt bg-color-lightred v12-white v12-primary-text v12-primary-border v12-radius-40" class="bnt bg-color-lightred v12-white v12-primary-text v12-primary-border v12-radius-40"
@click="subscribePay(order)" @click="subscribePay(orderListIndex)"
>立即付款</view> >立即付款</view>
</template> </template>
<template v-if="parseInt(order._status._type) === 1 && order.isTickets === 0"> <template v-if="parseInt(order._status._type) === 1 && order.isTickets === 0">
<view <view
v-if="order.isTravelGroup === 1" v-if="order.isTravelGroup === 1"
class="bnt service" class="bnt service"
@click="editTime(order)" @click="editTime(orderListIndex)"
>{{ '修改时间' }}</view> >{{ '修改时间' }}</view>
<view <view
v-if="order.isTravelGroup === 1" v-if="order.isTravelGroup === 1"
class="bnt service" class="bnt service"
@click="applyRefund(order)" @click="applyRefund(orderListIndex)"
>{{ '申请退款' }}</view> >{{ '申请退款' }}</view>
<view <view
v-if="canShowModifyAddress(order) && order.isDrawOrder === 0" v-if="canShowModifyAddress(order) && order.isDrawOrder === 0"
class="bnt service" class="bnt service"
@click="addressTap(order)" @click="addressTap(orderListIndex)"
>修改地址</view> >修改地址</view>
<view <view
class="bnt service" class="bnt service"
:class="{'v12-primary-text v12-primary-border': order.isTravelGroup === 1}" :class="{'v12-primary-text v12-primary-border': order.isTravelGroup === 1}"
@click="goOrderDetails(order)" @click="goOrderDetails(orderListIndex)"
>{{ order.isTravelGroup === 0 ? '查看详情' : '查看券码' }}</view> >{{ order.isTravelGroup === 0 ? '查看详情' : '查看券码' }}</view>
</template> </template>
<template v-if="parseInt(order._status._type) === 1 && order.isTickets === 1"> <template v-if="parseInt(order._status._type) === 1 && order.isTickets === 1">
<view <view
class="bnt bg-color-lightred v12-white v12-primary-text v12-primary-border v12-radius-40" class="bnt bg-color-lightred v12-white v12-primary-text v12-primary-border v12-radius-40"
@click="goOrderDetails(order)" @click="goOrderDetails(orderListIndex)"
>立即核销</view> >立即核销</view>
</template> </template>
<template v-if="parseInt(order._status._type) === 2 && order.isTickets === 0 && order.isTravelGroup === 1"> <template v-if="parseInt(order._status._type) === 2 && order.isTickets === 0 && order.isTravelGroup === 1">
<view <view
v-if="order.isTravelGroup === 1" v-if="order.isTravelGroup === 1"
class="bnt service" class="bnt service"
@click="editTime(order)" @click="editTime(orderListIndex)"
>{{ '修改时间' }}</view> >{{ '修改时间' }}</view>
<view <view
v-if="order.isTravelGroup === 1" v-if="order.isTravelGroup === 1"
class="bnt service" class="bnt service"
@click="applyRefund(order)" @click="applyRefund(orderListIndex)"
>{{ '申请退款' }}</view> >{{ '申请退款' }}</view>
<view <view
class="bnt service" class="bnt service"
:class="{'v12-primary-text v12-primary-border': order.isTravelGroup === 1}" :class="{'v12-primary-text v12-primary-border': order.isTravelGroup === 1}"
@click="goOrderDetails(order)" @click="goOrderDetails(orderListIndex)"
>{{ order.isTravelGroup === 0 ? '查看详情' : '查看券码' }}</view> >{{ order.isTravelGroup === 0 ? '查看详情' : '查看券码' }}</view>
</template> </template>
<template v-if="parseInt(order._status._type) === 2 && order.isTickets === 0 && order.isTravelGroup === 0"> <template v-if="parseInt(order._status._type) === 2 && order.isTickets === 0 && order.isTravelGroup === 0">
@@ -477,23 +477,23 @@
</view> </view>
<view <view
class="bnt bg-color-lightred v12-white v12-primary-text v12-primary-border v12-radius-40" class="bnt bg-color-lightred v12-white v12-primary-text v12-primary-border v12-radius-40"
@click="takeOrder(order)" @click="takeOrder(orderListIndex)"
>确认收货</view> >确认收货</view>
</template> </template>
<template v-if="parseInt(order._status._type) === 3 && order.isTravelGroup === 0"> <template v-if="parseInt(order._status._type) === 3 && order.isTravelGroup === 0">
<view <view
class="bnt bg-color-lightred v12-white v12-primary-text v12-primary-border v12-radius-40" class="bnt bg-color-lightred v12-white v12-primary-text v12-primary-border v12-radius-40"
@click="goOrderDetails(order)" @click="goOrderDetails(orderListIndex)"
>去评价</view> >去评价</view>
</template> </template>
<template v-if="parseInt(order._status._type) === 3 && order.isTravelGroup === 1"> <template v-if="parseInt(order._status._type) === 3 && order.isTravelGroup === 1">
<view <view
class="bnt bg-color-lightred v12-white v12-primary-text v12-primary-border v12-radius-40" class="bnt bg-color-lightred v12-white v12-primary-text v12-primary-border v12-radius-40"
@click="goOrderDetails(order)" @click="goOrderDetails(orderListIndex)"
>去评价</view> >去评价</view>
</template> </template>
<template v-if="parseInt(order._status._type) === 4"> <template v-if="parseInt(order._status._type) === 4">
<view class="bnt service" @click="goOrderDetails(order)">查看订单</view> <view class="bnt service" @click="goOrderDetails(orderListIndex)">查看订单</view>
</template> </template>
</view> </view>
</view> </view>
@@ -505,7 +505,7 @@
<view <view
v-if="order.merName && order.isGiftCardReceiveBlind === 0" v-if="order.merName && order.isGiftCardReceiveBlind === 0"
class="bnt btn-service flex jc-center ai-center v12-font-24" class="bnt btn-service flex jc-center ai-center v12-font-24"
@click="goRoom(order)" @click="goRoom(orderListIndex)"
>联系商家 >联系商家
</view> </view>
<view class="v12-align-center"> <view class="v12-align-center">
@@ -519,14 +519,14 @@
" "
open-type="share" open-type="share"
class="gift-btn service v12-primary-text v12-primary-border" class="gift-btn service v12-primary-text v12-primary-border"
@click="shareGift(order)" @click="shareGift(orderListIndex)"
>送给朋友</button> >送给朋友</button>
<button <button
v-if="Number(order.status) === 0" v-if="Number(order.status) === 0"
class="gift-btn service v12-primary-text v12-primary-border" class="gift-btn service v12-primary-text v12-primary-border"
@click="subscribePay(order)" @click="subscribePay(orderListIndex)"
>立即支付</button> >立即支付</button>
<view class="bnt service" @click="goOrderDetails(order)">查看详情</view> <view class="bnt service" @click="goOrderDetails(orderListIndex)">查看详情</view>
</view> </view>
</view> </view>
</view> </view>
@@ -725,7 +725,8 @@ export default {
showDatePicker: false, showDatePicker: false,
dateRange: [], dateRange: [],
userLatitude: null, userLatitude: null,
userLongitude: null userLongitude: null,
orderListRequestId: 0
} }
}, },
components: { components: {
@@ -929,12 +930,28 @@ export default {
uni.hideLoading(); uni.hideLoading();
}) })
}, },
editTime(order) { editTime(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
this.showDatePicker = true this.showDatePicker = true
this.travelGroupOrderInfo = order.travelGroupOrderInfo this.travelGroupOrderInfo = order.travelGroupOrderInfo
this.orderInfo = order this.orderInfo = order
}, },
applyRefund(order) { applyRefund(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
// 这里可以添加申请退款的逻辑,比如跳转到退款页面 // 这里可以添加申请退款的逻辑,比如跳转到退款页面
uni.navigateTo({ uni.navigateTo({
url: '/pkg_product/views/sojoumOrderRefund?id=' + order.orderId url: '/pkg_product/views/sojoumOrderRefund?id=' + order.orderId
@@ -950,8 +967,16 @@ export default {
} }
return timeMap[type] return timeMap[type]
}, },
shareGift(item) { shareGift(orderOrIndex) {
this.giftItem = item const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
this.giftItem = order
}, },
getGiftTips(giftCardInfo) { getGiftTips(giftCardInfo) {
// giftCardStatus int 礼品卡状态 0-未领取 1-已领取 2-已失效 // giftCardStatus int 礼品卡状态 0-未领取 1-已领取 2-已失效
@@ -982,14 +1007,30 @@ export default {
}) })
this.$forceUpdate() this.$forceUpdate()
}, },
delOrder(order) { getOrderByIndex(orderOrIndex) {
if (typeof orderOrIndex === 'number') {
return this.orderList[orderOrIndex]
}
if (typeof orderOrIndex === 'string' && /^\d+$/.test(orderOrIndex)) {
return this.orderList[Number(orderOrIndex)]
}
return orderOrIndex
},
delOrder(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
delOrderHandle(order.orderId).then(() => { delOrderHandle(order.orderId).then(() => {
this.page = 1 this.changeType()
this.orderList = [];
this.getOrderListReq()
}) })
}, },
goStore(order) { goStore(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
if (!order) { if (!order) {
return return
} }
@@ -1071,14 +1112,30 @@ export default {
this.toYuePay(payPwd) this.toYuePay(payPwd)
this.isShowPayPwdPop = false this.isShowPayPwdPop = false
}, },
subscribePay(order) { subscribePay(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
this.orderInfo = order this.orderInfo = order
uni.requestSubscribeMessage({ uni.requestSubscribeMessage({
tmplIds: settings.SubscribeMessageTmplIds, tmplIds: settings.SubscribeMessageTmplIds,
complete: () => this.pay = true complete: () => this.pay = true
}) })
}, },
addressTap(order) { addressTap(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
this._orderId = order.orderId this._orderId = order.orderId
uni.setStorageSync('updateOrderSourceAddress', { uni.setStorageSync('updateOrderSourceAddress', {
id: order.addressId || order.userAddressId || '', id: order.addressId || order.userAddressId || '',
@@ -1096,7 +1153,8 @@ export default {
force2Decimal(v) { force2Decimal(v) {
return this.$force2Decimal(v) return this.$force2Decimal(v)
}, },
callMerPhone(order) { callMerPhone(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
const phone = String((order && order.merPhone) || '').trim() const phone = String((order && order.merPhone) || '').trim()
if (!phone) { if (!phone) {
uni.showToast({ uni.showToast({
@@ -1109,10 +1167,17 @@ export default {
phoneNumber: phone phoneNumber: phone
}) })
}, },
goRoom(order) { goRoom(orderOrIndex) {
console.log(order); const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
if (order.experienceOrderInfo) { if (order.experienceOrderInfo) {
const phone = order.merchantPhone || order.merPhone || order.experienceOrderInfo.phone || order.companyTel; const phone = order.merchantPhone || order.merPhone || order.experienceOrderInfo.phone || order.companyTel
if (phone) { if (phone) {
uni.makePhoneCall({ uni.makePhoneCall({
phoneNumber: phone phoneNumber: phone
@@ -1143,7 +1208,15 @@ export default {
url: `/pkg_common/views/room?id=${order.merId}&name=${order.merName}&params=${JSON.stringify(params)}` url: `/pkg_common/views/room?id=${order.merId}&name=${order.merName}&params=${JSON.stringify(params)}`
}) })
}, },
goRefund(order) { goRefund(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
// fix bug#1631 // fix bug#1631
if (this.type === 4 || parseInt(order._status._type) === 3) { if (this.type === 4 || parseInt(order._status._type) === 3) {
// 打开售后的目的就是开启已完成/待评价订单的退款功能,确认打开售后之后,小程序用户再点击申请退款,就可以进入退款申请填写页面,正常走退款流程,提交退款申请以后,订单状态变为退款中 // 打开售后的目的就是开启已完成/待评价订单的退款功能,确认打开售后之后,小程序用户再点击申请退款,就可以进入退款申请填写页面,正常走退款流程,提交退款申请以后,订单状态变为退款中
@@ -1165,7 +1238,15 @@ export default {
}) })
} }
}, },
goLogistics(order) { goLogistics(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
this.$yrouter.push({ this.$yrouter.push({
path: "/pagesOrder/order/Logistics/index", path: "/pagesOrder/order/Logistics/index",
query: { query: {
@@ -1173,7 +1254,15 @@ export default {
} }
}); });
}, },
goOrderDetails(order) { goOrderDetails(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
if (order.experienceOrderInfo) { if (order.experienceOrderInfo) {
this.$yrouter.push({ this.$yrouter.push({
path: "/pkg_product/views/experienceCouponOrderDetail", path: "/pkg_product/views/experienceCouponOrderDetail",
@@ -1210,9 +1299,39 @@ export default {
} }
} }
}, },
gotoGoodDetail(cart, type, query){ gotoGoodDetail(orderOrIndex, cartOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
const cartList = Array.isArray(order && order.cartInfo) ? order.cartInfo : []
const cart = typeof cartOrIndex === 'number' ? cartList[cartOrIndex] : cartOrIndex
if (!cart) {
uni.showToast({
title: '未获取到商品信息',
icon: 'none'
})
return
}
const productInfo = cart.productInfo || {}
let type = 1
let id = productInfo.id || cart.productId || ''
if (Number(cart.combinationId) > 0) {
type = 2
id = cart.combinationId
} else if (Number(cart.bargainId) > 0) {
type = 3
id = cart.bargainId
} else if (Number(cart.seckillId) > 0) {
type = 4
id = cart.seckillId
}
if (!id) {
uni.showToast({
title: '未获取到商品详情参数',
icon: 'none'
})
return
}
// isProductStillExist:0-不存在,1-存在 // isProductStillExist:0-不存在,1-存在
const isProductStillExist = cart.isProductStillExist || 0 const isProductStillExist = Number(cart.isProductStillExist || 0)
if (isProductStillExist === 0) { if (isProductStillExist === 0) {
this.$dialog.toast({ mes: '商品已下架' }) this.$dialog.toast({ mes: '商品已下架' })
return return
@@ -1232,14 +1351,32 @@ export default {
path = '/pages/activity/SeckillDetails/index' path = '/pages/activity/SeckillDetails/index'
break break
} }
this.$yrouter.push({ path, query }) if (!path) {
uni.showToast({
title: '未找到商品详情页',
icon: 'none'
})
return
}
this.$yrouter.push({
path,
query: { id }
})
}, },
getOrderData() { getOrderData() {
getOrderData().then(res => { getOrderData().then(res => {
this.orderData = res.data this.orderData = res.data
}) })
}, },
takeOrder(order) { takeOrder(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
const that = this const that = this
uni.showModal({ uni.showModal({
title: '是否确认收货?', title: '是否确认收货?',
@@ -1260,6 +1397,23 @@ export default {
reload() { reload() {
this.changeType(this.type) this.changeType(this.type)
}, },
normalizeOrderList(list = []) {
const orderKeySet = new Set()
return list.reduce((result, item) => {
const orderKey = item && (item.orderId || item.id)
if (orderKey && orderKeySet.has(orderKey)) {
return result
}
if (orderKey) {
orderKeySet.add(orderKey)
}
result.push({
...item,
showMore: false
})
return result
}, [])
},
tabChange(item) { tabChange(item) {
this.type = item.index this.type = item.index
this.$yroute.query.type = this.type this.$yroute.query.type = this.type
@@ -1300,6 +1454,7 @@ export default {
}) })
}, },
changeType() { changeType() {
this.orderListRequestId += 1
this.orderList = [] this.orderList = []
this.page = 1 this.page = 1
this.loaded = false this.loaded = false
@@ -1308,7 +1463,8 @@ export default {
}, },
getOrderListReq() { getOrderListReq() {
if (this.loading || this.loaded) return if (this.loading || this.loaded) return
// this.loading = true this.loading = true
const currentRequestId = this.orderListRequestId
uni.showLoading({ uni.showLoading({
mask: true, mask: true,
}) })
@@ -1335,22 +1491,27 @@ export default {
keyword, keyword,
orderType orderType
}).then(res => { }).then(res => {
this.orderList = this.orderList.concat(res.data) if (currentRequestId !== this.orderListRequestId) {
if (this.orderList.length > 0) { return
this.orderList.forEach(item => {
item.showMore = false;
})
} }
const nextOrderList = page === 1 ? res.data : this.orderList.concat(res.data)
this.orderList = this.normalizeOrderList(nextOrderList)
this.updateOrderDistances() this.updateOrderDistances()
this.page++; this.page = page + 1
this.loaded = res.data.length < this.limit this.loaded = res.data.length < this.limit
this.loading = false
}).finally(() => { }).finally(() => {
if (currentRequestId !== this.orderListRequestId) {
return
}
this.loading = false this.loading = false
uni.hideLoading() uni.hideLoading()
}); });
}, },
tapShowMore(order, index) { tapShowMore(index) {
const order = this.getOrderByIndex(index)
if (!order) {
return
}
order.showMore = !order.showMore; order.showMore = !order.showMore;
this.$set(this.orderList, index, order); this.$set(this.orderList, index, order);
}, },
@@ -1390,7 +1551,15 @@ export default {
} }
return status return status
}, },
cancelOrder(order) { cancelOrder(orderOrIndex) {
const order = this.getOrderByIndex(orderOrIndex)
if (!order) {
uni.showToast({
title: '订单信息异常',
icon: 'none'
})
return
}
cancelOrderHandle(order.orderId).then(() => { cancelOrderHandle(order.orderId).then(() => {
this.getOrderData(); this.getOrderData();
this.orderList.splice(this.orderList.indexOf(order), 1) this.orderList.splice(this.orderList.indexOf(order), 1)
+56 -16
View File
@@ -117,7 +117,7 @@
<text class="v12-font-28">{{ force2Decimal(orderPrice.payPostage) }}</text> <text class="v12-font-28">{{ force2Decimal(orderPrice.payPostage) }}</text>
</view> </view>
</view> --> </view> -->
<view class="v12-justify-between v12-align-center v12-py-1"> <view v-if="!isLotteryOrder()" class="v12-justify-between v12-align-center v12-py-1">
<view class="v12-font-24 v12-dark-text v12-align-center"> <view class="v12-font-24 v12-dark-text v12-align-center">
<text>优惠券</text> <text>优惠券</text>
<view class="v12-align-center v12-ml-1" v-if="couponTitle"> <view class="v12-align-center v12-ml-1" v-if="couponTitle">
@@ -255,7 +255,7 @@
</view> </view>
<!-- v9 优惠券开始 --> <!-- v9 优惠券开始 -->
<u-popup <u-popup
v-if="show" v-if="!isLotteryOrder() && show"
:show="show" :show="show"
:round="10" :round="10"
mode="bottom" mode="bottom"
@@ -263,7 +263,7 @@
@close="close" @close="close"
> >
<CouponsPopup <CouponsPopup
v-if="couponList.usable.length > 0 && show" v-if="!isLotteryOrder() && couponList.usable.length > 0 && show"
:two-list="couponList" :two-list="couponList"
@change="changeCoupons" @change="changeCoupons"
@close="close" @close="close"
@@ -398,7 +398,8 @@ export default {
pageKeyId: Object.freeze('orderConfirm'), pageKeyId: Object.freeze('orderConfirm'),
total: 0, total: 0,
couponTitle: '', couponTitle: '',
hasCoupon: false hasCoupon: false,
pageQuery: {}
} }
}, },
computed: mapGetters(["userInfo", "storeItems"]), computed: mapGetters(["userInfo", "storeItems"]),
@@ -417,17 +418,18 @@ export default {
}, },
onLoad(opts) { onLoad(opts) {
const that = this const that = this
if (that.$yroute.query.pinkid !== undefined) { that.pageQuery = Object.assign({}, that.resolvePageQuery(), opts || {})
that.pinkId = that.$yroute.query.pinkid if (that.pageQuery.pinkid !== undefined) {
that.pinkId = that.pageQuery.pinkid
} }
if (that.$yroute.query.id !== undefined) { if (that.pageQuery.id !== undefined) {
that.cartid = that.$yroute.query.id that.cartid = that.pageQuery.id
console.log(that.cartid) console.log(that.cartid)
} }
if (that.$yroute.query.lotteryRecordId !== undefined) { if (that.pageQuery.lotteryRecordId !== undefined) {
that.lotteryRecordId = that.$yroute.query.lotteryRecordId that.lotteryRecordId = that.pageQuery.lotteryRecordId
} }
that.hasCoupon = opts.couponId !== '' that.hasCoupon = !!(opts && opts.couponId !== '')
that.getCartInfo() that.getCartInfo()
}, },
onShow() { onShow() {
@@ -452,6 +454,37 @@ export default {
}, },
methods: { methods: {
isNullOrEmpty, isNullOrEmpty,
resolvePageQuery() {
if (this.$yroute && this.$yroute.query) {
return this.$yroute.query
}
if (this.$route && this.$route.query) {
return this.$route.query
}
if (this._route && this._route.query) {
return this._route.query
}
return {}
},
isLotteryOrder() {
const cartInfo = Array.isArray(this.orderGroupInfo && this.orderGroupInfo.cartInfo)
? this.orderGroupInfo.cartInfo
: []
return Boolean(
this.lotteryRecordId ||
this.pageQuery.from === 'countyLottery' ||
Number(this.pageQuery.drawActivityId || 0) > 0 ||
cartInfo.some(item => Number(
item.drawActivityId ||
(item.productInfo && item.productInfo.drawActivityId) ||
0
) > 0)
)
},
getOrderCouponId() {
if (this.isLotteryOrder()) return 0
return this.couponList.usable.length === 0 ? 0 : (this.couponId || 0)
},
couponMax(e) { couponMax(e) {
// this.couponTitle = e.couponTitle // this.couponTitle = e.couponTitle
// this.couponId = this.$yroute.query.couponId || uni.getStorageSync('couponId') || 0 // this.couponId = this.$yroute.query.couponId || uni.getStorageSync('couponId') || 0
@@ -477,12 +510,17 @@ export default {
postOrderComputed(this.orderGroupInfo.orderKey, { postOrderComputed(this.orderGroupInfo.orderKey, {
addressId: this.addressInfo.id, addressId: this.addressInfo.id,
useIntegral: this.useIntegral ? 1 : 0, useIntegral: this.useIntegral ? 1 : 0,
couponId: this.couponList.usable.length === 0 ? 0 : this.couponId, couponId: this.getOrderCouponId(),
usePoints: this.usePointsCheck ? 1 : 0, usePoints: this.usePointsCheck ? 1 : 0,
shipping_type: parseInt(this.shipping_type) + 1 shipping_type: parseInt(this.shipping_type) + 1
}).then(res => { }).then(res => {
this.couponList = res.data.result.couponList this.couponList = res.data.result.couponList
if(!f) { if (this.isLotteryOrder()) {
this.couponTitle = ''
if (this.couponId !== 0) {
this.couponId = 0
}
} else if(!f) {
this.couponId = res.data.result.defaultCouponId this.couponId = res.data.result.defaultCouponId
} }
const data = res.data; const data = res.data;
@@ -543,8 +581,8 @@ export default {
} }
_this.systemStore = data.systemStore || {} _this.systemStore = data.systemStore || {}
_this.storeSelfMention = data.storeSelfMention _this.storeSelfMention = data.storeSelfMention
if(_this.$yroute.query.address !== undefined ) { if(_this.pageQuery.address !== undefined ) {
_this.addressInfo = JSON.parse(_this.$yroute.query.address) || {} _this.addressInfo = JSON.parse(_this.pageQuery.address) || {}
_this.computedPrice() _this.computedPrice()
} else { } else {
// _this.addressInfo = uni.getStorageSync('sourceAddress') || data.addressInfo || {} // _this.addressInfo = uni.getStorageSync('sourceAddress') || data.addressInfo || {}
@@ -683,7 +721,7 @@ export default {
phone: this.contactsTel, phone: this.contactsTel,
addressId: this.addressInfo.id, addressId: this.addressInfo.id,
useIntegral: this.useIntegral ? 1 : 0, useIntegral: this.useIntegral ? 1 : 0,
couponId: this.couponList.usable.length === 0 ? 0 : this.couponId || 0, couponId: this.getOrderCouponId(),
usePoints: this.usePointsNumber || 0, usePoints: this.usePointsNumber || 0,
payType: this.active, payType: this.active,
pinkId: this.pinkId, pinkId: this.pinkId,
@@ -811,11 +849,13 @@ export default {
this.show = !this.show this.show = !this.show
}, },
showCouponsPopup() { showCouponsPopup() {
if (this.isLotteryOrder()) return
if (this.couponList.usable.length === 0) return if (this.couponList.usable.length === 0) return
this.show = !this.show this.show = !this.show
}, },
// v9-2 // v9-2
changeCoupons(item) { changeCoupons(item) {
if (this.isLotteryOrder()) return
if(!item) return if(!item) return
if (this.couponList.usable.length === 0) return if (this.couponList.usable.length === 0) return
this.show = !this.show this.show = !this.show
+43 -10
View File
@@ -32,9 +32,9 @@
<image :src="webUrl+'/20210806121714655368.png'" mode="" style="width: 36rpx;height: 36rpx;"></image> <image :src="webUrl+'/20210806121714655368.png'" mode="" style="width: 36rpx;height: 36rpx;"></image>
</view> </view>
</view> </view>
<view v-if="couponListLimit2ToShow.length > 0 || attr.productSelect.earnPoints" class="v12-mt-1 v12-mb-1"> <view v-if="(!isCountyLotteryGoodsDetail() && couponListLimit2ToShow.length > 0) || attr.productSelect.earnPoints" class="v12-mt-1 v12-mb-1">
<view class="cell flex jc-between ai-center"> <view class="cell flex jc-between ai-center">
<view v-if="couponListLimit2ToShow.length > 0" class="v12-justify-start"> <view v-if="!isCountyLotteryGoodsDetail() && couponListLimit2ToShow.length > 0" class="v12-justify-start">
<view <view
v-for="(item, index) in couponListLimit2ToShow" v-for="(item, index) in couponListLimit2ToShow"
:key="index" :key="index"
@@ -48,7 +48,7 @@
</view> </view>
<view <view
v-if="couponListLimit2ToShow.length > 0" v-if="!isCountyLotteryGoodsDetail() && couponListLimit2ToShow.length > 0"
class="value value2 v12-font-24 v12-primary-text" class="value value2 v12-font-24 v12-primary-text"
@click="changeCoupons()" @click="changeCoupons()"
> >
@@ -201,7 +201,7 @@
</view> </view>
<!-- v9 优惠券开始 --> <!-- v9 优惠券开始 -->
<u-popup :show="show" :round="10" mode="bottom" closeOnClickOverlay @close="changeCoupons()"> <u-popup v-if="!isCountyLotteryGoodsDetail()" :show="show" :round="10" mode="bottom" closeOnClickOverlay @close="changeCoupons()">
<CouponsPopup <CouponsPopup
:two-list="couponList" :two-list="couponList"
@ok="setCoupon" @ok="setCoupon"
@@ -540,7 +540,7 @@ import {
getProductSkuBySelected getProductSkuBySelected
} from '@/api/store' } from '@/api/store'
import { userBindParent } from '@/api/user' import { userBindParent } from '@/api/user'
import { handleQrCode, isWeixin } from '@/utils' import { handleLoginFailure, handleQrCode, isWeixin } from '@/utils'
import { getHomeData } from '@/api/public' import { getHomeData } from '@/api/public'
import { import {
getDailyGoods, getDailyGoods,
@@ -655,7 +655,8 @@ export default {
pageKeyId: '', pageKeyId: '',
couponListLimit2ToShow: [], couponListLimit2ToShow: [],
qualifications: [], qualifications: [],
couponId: null couponId: null,
submitActionLock: false
} }
}, },
computed: mapGetters(['isLogin', 'location', 'userInfo']), computed: mapGetters(['isLogin', 'location', 'userInfo']),
@@ -821,6 +822,7 @@ export default {
} }
}, },
onShow() { onShow() {
this.submitActionLock = false
this.getMapData() this.getMapData()
getGiftCardSendBackground().then(res => { getGiftCardSendBackground().then(res => {
if (res.status === 200) { if (res.status === 200) {
@@ -876,6 +878,15 @@ export default {
}) })
}, },
goRoom() { goRoom() {
if (!this.isLogin) {
uni.showToast({
title: '请先登录后联系客服',
icon: 'none',
duration: 2000
})
handleLoginFailure()
return
}
console.log(this.storeInfo); console.log(this.storeInfo);
const params = { const params = {
goodsId: this.id, goodsId: this.id,
@@ -1500,17 +1511,29 @@ export default {
q.drawActivityId = Number(this.activityId || 0) q.drawActivityId = Number(this.activityId || 0)
break break
} }
if (that.submitActionLock) {
return
}
that.submitActionLock = true
postCartAdd(q).then(function (res) { postCartAdd(q).then(function (res) {
that.isOpen = false that.isOpen = false
that.attr.cartAttr = false that.attr.cartAttr = false
if (news === 1) { if (news === 1) {
const orderQuery = {
id: res.data.cartId,
discount: that.storeInfo.discount,
}
if (that.source === 'countyLottery') {
orderQuery.from = 'countyLottery'
orderQuery.drawActivityId = Number(that.activityId || 0)
}
that.$yrouter.push({ that.$yrouter.push({
path: "/pages/order/OrderSubmission/index", path: "/pages/order/OrderSubmission/index",
query: { query: orderQuery
id: res.data.cartId,
discount: that.storeInfo.discount,
}
}) })
setTimeout(() => {
that.submitActionLock = false
}, 1500)
return return
} }
if(news === 2) { if(news === 2) {
@@ -1527,8 +1550,12 @@ export default {
// + '&couponId=' + coupId // + '&couponId=' + coupId
url: giftUrl url: giftUrl
}) })
setTimeout(() => {
that.submitActionLock = false
}, 1500)
} }
if(news === 0) { if(news === 0) {
that.submitActionLock = false
uni.showToast({ uni.showToast({
title: "添加购物车成功", title: "添加购物车成功",
icon: "success", icon: "success",
@@ -1541,6 +1568,7 @@ export default {
} }
}).catch(error => { }).catch(error => {
that.isOpen = false; that.isOpen = false;
that.submitActionLock = false
uni.showToast({ uni.showToast({
title: error.msg, title: error.msg,
icon: "none", icon: "none",
@@ -1576,11 +1604,16 @@ export default {
listenerActionClose() { listenerActionClose() {
this.posters = false this.posters = false
}, },
isCountyLotteryGoodsDetail() {
return this.source === 'countyLottery' && Number(this.activityId || 0) > 0
},
// v9-2 // v9-2
changeCoupons(e) { changeCoupons(e) {
if (this.isCountyLotteryGoodsDetail()) return
this.show = !this.show this.show = !this.show
}, },
setCoupon(couponId) { setCoupon(couponId) {
if (this.isCountyLotteryGoodsDetail()) return
this.couponId = couponId this.couponId = couponId
}, },
async checkFavorite() { async checkFavorite() {
+7 -1
View File
@@ -588,7 +588,8 @@ export default {
pageKeyId: '', pageKeyId: '',
shareImg: '', shareImg: '',
videoPlayers: [], videoPlayers: [],
isView: false isView: false,
skipRefreshOnShow: false
} }
}, },
// 必须在页面加 onPageScroll(e){} ,才能滑动显示背景 // 必须在页面加 onPageScroll(e){} ,才能滑动显示背景
@@ -679,6 +680,10 @@ export default {
if (!this.isLoad) { if (!this.isLoad) {
return return
} }
if (this.skipRefreshOnShow) {
this.skipRefreshOnShow = false
return
}
this.fetchInnDetail() this.fetchInnDetail()
if(this.isView) return if(this.isView) return
if(this.activeIndex === 1) { if(this.activeIndex === 1) {
@@ -834,6 +839,7 @@ export default {
}) })
}, },
infoClick: function (info) { infoClick: function (info) {
this.skipRefreshOnShow = true
this.$yrouter.push('/pagesInn/inn/innInfoDetail?id=' + info.id) this.$yrouter.push('/pagesInn/inn/innInfoDetail?id=' + info.id)
}, },
coverPlay(){ coverPlay(){
+44 -3
View File
@@ -554,8 +554,9 @@
</view> </view>
</template> </template>
<template v-if="status.type == -1"> <template v-if="status.type == -1">
<view style="width: 100%"> <view class="v12-justify-between" style="width: 100%">
<view class="bnt v12-dark-text v12-dark-border cancel" @click="goRoom(orderInfo)">联系商家</view> <view class="bnt v12-dark-text v12-dark-border cancel" @click="goRoom(orderInfo)">联系商家</view>
<view class="bnt v12-primary-text v12-primary-border cancel" @click="cancelRefund">取消退款</view>
</view> </view>
</template> </template>
<template v-if="status.type == -2"> <template v-if="status.type == -2">
@@ -570,7 +571,11 @@
<view class="v12-justify-between "> <view class="v12-justify-between ">
<view class="bnt v12-dark-text v12-dark-border cancel" @click="buyAgin">再买一单</view> <view class="bnt v12-dark-text v12-dark-border cancel" @click="buyAgin">再买一单</view>
<view class="bnt v12-primary-text v12-primary-border" @click="routerGo(orderInfo.cartInfo[0])">立即评价</view> <view
v-if="!isGiftOrder(orderInfo)"
class="bnt v12-primary-text v12-primary-border"
@click="routerGo(orderInfo.cartInfo[0])"
>立即评价</view>
</view> </view>
</view> </view>
</template> </template>
@@ -654,7 +659,7 @@
<script> <script>
import passkeyborad from '@/components/yzc-paykeyboard/yzc-paykeyboard' import passkeyborad from '@/components/yzc-paykeyboard/yzc-paykeyboard'
import OrderGoods from "@/components/OrderGoods"; import OrderGoods from "@/components/OrderGoods";
import {orderDetail, orderDelay, aginConfirm, express, applyEditAddress, orderExpectedArrivalTime, groupOrderDetail} from "@/api/order"; import {orderDetail, orderDelay, aginConfirm, express, applyEditAddress, orderExpectedArrivalTime, groupOrderDetail, cancelOrderRefund} from "@/api/order";
import Payment from "@/components/Payment"; import Payment from "@/components/Payment";
import DataFormat from "@/components/DataFormat"; import DataFormat from "@/components/DataFormat";
import {copyClipboard} from "@/utils"; import {copyClipboard} from "@/utils";
@@ -1056,6 +1061,9 @@ export default {
} }
return imgUrl; return imgUrl;
}, },
isGiftOrder(order = {}) {
return Number(order.isGiftCardSend || 0) === 1 || Number(order.isGiftCardReceive || 0) === 1
},
subscribePay() { subscribePay() {
uni.requestSubscribeMessage({ uni.requestSubscribeMessage({
tmplIds: settings.SubscribeMessageTmplIds, tmplIds: settings.SubscribeMessageTmplIds,
@@ -1166,6 +1174,39 @@ export default {
this.getDetail(); this.getDetail();
}); });
}, },
cancelRefund() {
uni.showModal({
title: '取消退款申请',
content: '确认取消退款申请吗?',
showCancel: true,
cancelText: '再想想',
confirmText: '确认取消',
confirmColor: '#C52733 ',
success: (res) => {
if (!res.confirm) return;
uni.showLoading({
title: '取消中'
});
cancelOrderRefund(this.orderInfo.orderId).then((res) => {
uni.showToast({
title: res.msg || '已取消退款申请',
icon: 'none',
duration: 2000
});
this.getDetail();
}).catch((err) => {
const message = err.msg || (err.response && err.response.data && (err.response.data.msg || err.response.data.message)) || '取消退款失败';
uni.showToast({
title: message,
icon: 'none',
duration: 3000
});
}).finally(() => {
uni.hideLoading();
});
}
});
},
takeOrder() { takeOrder() {
takeOrderHandle(this.orderInfo.orderId).finally(() => { takeOrderHandle(this.orderInfo.orderId).finally(() => {
this.getDetail(); this.getDetail();
+68
View File
@@ -29,6 +29,13 @@
</view> </view>
<view class="card form-card"> <view class="card form-card">
<view class="form-card-header">
<view class="form-card-title">填写收货地址</view>
<view class="select-address-entry" @click="chooseExistingAddress">
<text class="select-address-text" style="margin-bottom: 4rpx;">选择现有地址 </text>
<u-icon name="arrow-right" size="14" color="#BD3124"></u-icon>
</view>
</view>
<view class="form-row"> <view class="form-row">
<text class="label">收货人</text> <text class="label">收货人</text>
<input v-model="form.realName" class="input" placeholder="请填写收货人" placeholder-style="color:#b2b2b2;" /> <input v-model="form.realName" class="input" placeholder="请填写收货人" placeholder-style="color:#b2b2b2;" />
@@ -190,6 +197,7 @@ export default {
this.fetchRealnameStatus() this.fetchRealnameStatus()
}, },
onShow() { onShow() {
this.handleChooseAddress()
const done = uni.getStorageSync('countyClaimAuthDone') const done = uni.getStorageSync('countyClaimAuthDone')
const needAutoSubmit = uni.getStorageSync('countyClaimNeedAutoSubmit') const needAutoSubmit = uni.getStorageSync('countyClaimNeedAutoSubmit')
if (done && (this.waitSubmitAfterRealname || needAutoSubmit)) { if (done && (this.waitSubmitAfterRealname || needAutoSubmit)) {
@@ -219,6 +227,41 @@ export default {
goBack() { goBack() {
uni.navigateBack() uni.navigateBack()
}, },
chooseExistingAddress() {
uni.setStorageSync('sourceAddress', {
realName: this.form.realName || '',
phone: this.form.phone || '',
userAddress: `${this.address.province || ''}${this.address.city || ''}${this.address.district || ''}${this.form.detail || ''}`,
province: this.address.province || '',
city: this.address.city || '',
district: this.address.district || '',
detail: this.form.detail || ''
})
this.$yrouter.push({
path: '/pages/user/address/AddressManagement/index',
query: {
choosMode: 1
}
})
},
handleChooseAddress() {
const chooseAddress = uni.getStorageSync('chooseAddress') || {}
if (!chooseAddress.id) return
uni.setStorageSync('chooseAddress', {})
this.fillAddressForm(chooseAddress)
},
fillAddressForm(address = {}) {
this.form.realName = address.realName || address.real_name || ''
this.form.phone = address.phone || ''
this.form.detail = address.detail || ''
this.address = {
province: address.province || '',
city: address.city || '',
district: address.district || '',
city_id: address.city_id || address.cityId || address.city_id
}
this.addressText = `${this.address.province} ${this.address.city} ${this.address.district}`.trim()
},
getCityList() { getCityList() {
getCity().then(res => { getCity().then(res => {
this.district = res.data || [] this.district = res.data || []
@@ -585,6 +628,31 @@ export default {
padding: 0 24rpx 24rpx; padding: 0 24rpx 24rpx;
} }
.form-card-header {
min-height: 88rpx;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 2rpx dashed #e5e5e5;
}
.form-card-title {
color: #262626;
font-size: 30rpx;
font-weight: 700;
}
.select-address-entry {
display: flex;
align-items: center;
color: #BD3124;
}
.select-address-text {
font-size: 26rpx;
margin-right: 8rpx;
}
.form-row { .form-row {
min-height: 92rpx; min-height: 92rpx;
display: flex; display: flex;
+1 -2
View File
@@ -284,8 +284,7 @@ export default {
return [1, 2, -1].includes(Number(item.status)) && !!item.prizeName return [1, 2, -1].includes(Number(item.status)) && !!item.prizeName
}, },
getInvalidReason(item) { getInvalidReason(item) {
if (Number(item.claimStatus) === -1) return '奖品过期未领取' return item.invalidReason || ''
return '订单取消'
}, },
formatPrizeText(item = {}) { formatPrizeText(item = {}) {
const prizeName = item.prizeName || '神秘奖品' const prizeName = item.prizeName || '神秘奖品'
+11
View File
@@ -24,6 +24,7 @@
:src="countyFamousTopImage" :src="countyFamousTopImage"
class="img" class="img"
mode="widthFix" mode="widthFix"
:lazy-load="true"
/> />
<view v-if="list.length > 0" class="province-wrap" id="province-wrap"> <view v-if="list.length > 0" class="province-wrap" id="province-wrap">
<view <view
@@ -39,6 +40,7 @@
<image <image
:src="item.icon" :src="item.icon"
class="img" class="img"
:lazy-load="true"
/> />
<view class="name one-t"> <view class="name one-t">
{{ item.provinceName }} {{ item.provinceName }}
@@ -61,6 +63,7 @@
<image <image
:src="webUrl + '/page/qianxian/icon-06.png'" :src="webUrl + '/page/qianxian/icon-06.png'"
class="icon" class="icon"
:lazy-load="true"
/> />
</view> </view>
</view> </view>
@@ -95,11 +98,13 @@
<image <image
:src="county.logo" :src="county.logo"
class="county-img" class="county-img"
:lazy-load="true"
/> />
<view class="county-name"> <view class="county-name">
<image <image
:src="webUrl + '/home/icon-location.png'" :src="webUrl + '/home/icon-location.png'"
class="icon" class="icon"
:lazy-load="true"
/> />
<view class="county-txt one-t"> <view class="county-txt one-t">
{{ county.countyName }} {{ county.countyName }}
@@ -118,11 +123,13 @@
<image <image
:src="county.logo" :src="county.logo"
class="county-img" class="county-img"
:lazy-load="true"
/> />
<view class="county-name"> <view class="county-name">
<image <image
:src="webUrl + '/home/icon-location.png'" :src="webUrl + '/home/icon-location.png'"
class="icon" class="icon"
:lazy-load="true"
/> />
<view class="county-txt one-t"> <view class="county-txt one-t">
{{ county.countyName }} {{ county.countyName }}
@@ -140,11 +147,13 @@
<image <image
:src="county.logo" :src="county.logo"
class="county-img" class="county-img"
:lazy-load="true"
/> />
<view class="county-name"> <view class="county-name">
<image <image
:src="webUrl + '/home/icon-location.png'" :src="webUrl + '/home/icon-location.png'"
class="icon" class="icon"
:lazy-load="true"
/> />
<view class="county-txt one-t"> <view class="county-txt one-t">
{{ county.countyName }} {{ county.countyName }}
@@ -160,6 +169,7 @@
:src="webUrl + '/home/no-data-bg.png'" :src="webUrl + '/home/no-data-bg.png'"
mode="widthFix" mode="widthFix"
class="loadend" class="loadend"
:lazy-load="true"
/> />
</view> </view>
<image <image
@@ -167,6 +177,7 @@
:src="webUrl + '/orderIcon/nodata.png'" :src="webUrl + '/orderIcon/nodata.png'"
class="img-nodata v12-mt-16" class="img-nodata v12-mt-16"
mode="scaleToFill" mode="scaleToFill"
:lazy-load="true"
/> />
</view> </view>
<goo-skeleton <goo-skeleton
+13 -1
View File
@@ -224,7 +224,7 @@
@click.stop="handleInfoHotelClick(item)" @click.stop="handleInfoHotelClick(item)"
> >
<view class="info-shop-logo"> <view class="info-shop-logo">
<image :src="item.linkHotelLogo" mode="aspectFill" /> <image :src="item.linkHotelLogo" mode="aspectFill" :lazy-load="true" />
</view> </view>
<view class="info-shop-main"> <view class="info-shop-main">
<view class="info-shop-name"> <view class="info-shop-name">
@@ -245,6 +245,7 @@
<image <image
:src="webUrl + '/20230803152147141807.png'" :src="webUrl + '/20230803152147141807.png'"
class="icon" class="icon"
:lazy-load="true"
/> />
<text class="seeNum-txt">{{ $formatCount(item.pv) }}</text> <text class="seeNum-txt">{{ $formatCount(item.pv) }}</text>
</view> </view>
@@ -253,12 +254,14 @@
v-if="!item.hasZan" v-if="!item.hasZan"
:src="webUrl + '/page/hotel/zan-off-2.png'" :src="webUrl + '/page/hotel/zan-off-2.png'"
class="zan-off-icon" class="zan-off-icon"
:lazy-load="true"
@click="likeInfoItemHandle(item, index, item.zan + 1, true)" @click="likeInfoItemHandle(item, index, item.zan + 1, true)"
/> />
<image <image
v-else v-else
:src="webUrl + '/page/hotel/zan-on-2.png'" :src="webUrl + '/page/hotel/zan-on-2.png'"
class="zan-on-icon" class="zan-on-icon"
:lazy-load="true"
@click="likeInfoItemHandle(item, index, item.zan - 1, false)" @click="likeInfoItemHandle(item, index, item.zan - 1, false)"
/> />
<text <text
@@ -390,6 +393,7 @@
<image <image
:src="item" :src="item"
class="img" class="img"
:lazy-load="true"
@click="showPic(index)" @click="showPic(index)"
/> />
</view> </view>
@@ -413,6 +417,7 @@
:src="item.image" :src="item.image"
mode="widthFix" mode="widthFix"
class="img" class="img"
:lazy-load="true"
/> />
<view class="info-wrap"> <view class="info-wrap">
<view class="time"> <view class="time">
@@ -470,6 +475,7 @@
<image <image
:src="webUrl + '/page/qianxian/icon-02.png'" :src="webUrl + '/page/qianxian/icon-02.png'"
class="icon" class="icon"
:lazy-load="true"
/> />
重点项目 重点项目
</view> </view>
@@ -486,6 +492,7 @@
<image <image
:src="webUrl + '/page/qianxian/icon-05.png'" :src="webUrl + '/page/qianxian/icon-05.png'"
class="icon" class="icon"
:lazy-load="true"
/> />
</view> </view>
</view> </view>
@@ -503,6 +510,7 @@
<image <image
:src="webUrl + '/page/qianxian/icon-02.png'" :src="webUrl + '/page/qianxian/icon-02.png'"
class="icon" class="icon"
:lazy-load="true"
/> />
招商政策 招商政策
</view> </view>
@@ -525,6 +533,7 @@
<image <image
:src="webUrl + '/page/qianxian/icon-05.png'" :src="webUrl + '/page/qianxian/icon-05.png'"
class="icon" class="icon"
:lazy-load="true"
/> />
</view> </view>
</view> </view>
@@ -605,11 +614,13 @@
<image <image
:src="shop.cover + (shop.coverType === 2 ? '?vframe/jpg/offset/1' : '')" :src="shop.cover + (shop.coverType === 2 ? '?vframe/jpg/offset/1' : '')"
class="img" class="img"
:lazy-load="true"
/> />
<view class="location"> <view class="location">
<image <image
:src="webUrl + '/page/qianxian/icon-08.png'" :src="webUrl + '/page/qianxian/icon-08.png'"
class="icon" class="icon"
:lazy-load="true"
/> />
<view class="addr one-t"> <view class="addr one-t">
{{ shop.address }} {{ shop.address }}
@@ -624,6 +635,7 @@
<image <image
:src="shop.logo" :src="shop.logo"
class="logo" class="logo"
:lazy-load="true"
/> />
<view class="name one-t"> <view class="name one-t">
{{ shop.name }} {{ shop.name }}
+4
View File
@@ -309,6 +309,10 @@ export default {
// console.log(searchMap); // console.log(searchMap);
const filterMap = searchMap.filter(el => el.cityName.includes(this.keyword)) const filterMap = searchMap.filter(el => el.cityName.includes(this.keyword))
if(filterMap.length === 0) { if(filterMap.length === 0) {
uni.showToast({
title: '未找到该城市,请重新输入城市名称',
icon: 'none'
})
return return
} else { } else {
this.asideIndex = filterMap[0].index this.asideIndex = filterMap[0].index
+31 -7
View File
@@ -95,7 +95,7 @@
<text class="v12-dark-text v12-font-30">{{ computedResult.discountPrice }}</text> <text class="v12-dark-text v12-font-30">{{ computedResult.discountPrice }}</text>
</view> </view>
</view> </view>
<view class="v12-justify-between v12-align-center v12-font-28 v12-mt-1"> <view v-if="!isCountyLotteryGift" class="v12-justify-between v12-align-center v12-font-28 v12-mt-1">
<view class="v12-font-24 v12-dark-text v12-align-center"> <view class="v12-font-24 v12-dark-text v12-align-center">
<view class=""> <view class="">
优惠券 优惠券
@@ -163,6 +163,7 @@
@confirm="onPayConfirm" @confirm="onPayConfirm"
/> />
<u-popup <u-popup
v-if="!isCountyLotteryGift"
:show="showPopup" :show="showPopup"
:round="10" :round="10"
mode="bottom" mode="bottom"
@@ -281,6 +282,13 @@ export default {
}, },
watch: { watch: {
async couponId(value) { async couponId(value) {
if (this.isCountyLotteryGift) {
this.couponTitle = ''
if (Number(value || 0) !== 0) {
this.couponId = 0
return
}
}
this.couponIndex = this.couponList['usable']?.findIndex(item => item.id === +value) this.couponIndex = this.couponList['usable']?.findIndex(item => item.id === +value)
this.couponTitle = this.couponList['usable']?.[this.couponIndex]?.couponTitle this.couponTitle = this.couponList['usable']?.[this.couponIndex]?.couponTitle
if(this.isGroupBuy) { if(this.isGroupBuy) {
@@ -324,6 +332,10 @@ export default {
} }
}, },
methods: { methods: {
getCouponId() {
if (this.isCountyLotteryGift) return 0
return this.couponId || 0
},
adjustCoverListForProductStory(coverList, productInfo, defaultTemplate) { adjustCoverListForProductStory(coverList, productInfo, defaultTemplate) {
if (!productInfo || !productInfo.productStory) { if (!productInfo || !productInfo.productStory) {
return { return {
@@ -356,14 +368,19 @@ export default {
computedTravelGroupPrice(useDefaultCouponId) { computedTravelGroupPrice(useDefaultCouponId) {
const params = { const params = {
key: this.orderKey, key: this.orderKey,
couponId: this.couponId couponId: this.getCouponId()
} }
computedSojoumGroupBuyGiftOrderPrice(params).then(res => { computedSojoumGroupBuyGiftOrderPrice(params).then(res => {
this.computedResult = res.data.result this.computedResult = res.data.result
this.couponList = res.data.result.couponList this.couponList = res.data.result.couponList
this.payPrice = res.data.result.payPrice this.payPrice = res.data.result.payPrice
this.$forceUpdate() this.$forceUpdate()
if(useDefaultCouponId) { if (this.isCountyLotteryGift) {
this.couponTitle = ''
if (this.couponId !== 0) {
this.couponId = 0
}
} else if(useDefaultCouponId) {
this.couponId = res.data.result.defaultCouponId || 0 this.couponId = res.data.result.defaultCouponId || 0
} }
}) })
@@ -372,6 +389,7 @@ export default {
this.showCoverPicker = true this.showCoverPicker = true
}, },
showCouponsPopup() { showCouponsPopup() {
if (this.isCountyLotteryGift) return
if (this.couponList.usable && this.couponList.usable.length === 0) return if (this.couponList.usable && this.couponList.usable.length === 0) return
if(this.isPayOk) return if(this.isPayOk) return
this.showPopup = !this.showPopup this.showPopup = !this.showPopup
@@ -380,6 +398,7 @@ export default {
this.showPopup = !this.showPopup this.showPopup = !this.showPopup
}, },
changeCoupons(item) { changeCoupons(item) {
if (this.isCountyLotteryGift) return
if(!item) return if(!item) return
if (this.couponList.usable && this.couponList.usable.length === 0) return if (this.couponList.usable && this.couponList.usable.length === 0) return
this.showPopup = !this.showPopup this.showPopup = !this.showPopup
@@ -448,7 +467,7 @@ export default {
computedPrice(num, f) { computedPrice(num, f) {
const params = { const params = {
cartId: this.cartId, cartId: this.cartId,
couponId: this.couponId, couponId: this.getCouponId(),
cartNum : num cartNum : num
} }
if(this.discount) { if(this.discount) {
@@ -456,7 +475,12 @@ export default {
} }
getGiftCardSendOrderAmount(this.orderKey, params).then(res => { getGiftCardSendOrderAmount(this.orderKey, params).then(res => {
this.couponList = res.data.result.couponList this.couponList = res.data.result.couponList
if(!f) { if (this.isCountyLotteryGift) {
this.couponTitle = ''
if (this.couponId !== 0) {
this.couponId = 0
}
} else if(!f) {
this.couponId = res.data.result.defaultCouponId || 0 this.couponId = res.data.result.defaultCouponId || 0
this.$forceUpdate() this.$forceUpdate()
} }
@@ -564,13 +588,13 @@ export default {
message : this.message || '礼笺轻启,礼藏心意', message : this.message || '礼笺轻启,礼藏心意',
canTransfer: this.canTransfer ? 1 : 0, canTransfer: this.canTransfer ? 1 : 0,
passwordPay: this.payPassword || '', passwordPay: this.payPassword || '',
couponId: this.couponId, couponId: this.getCouponId(),
payType: this.payType, payType: this.payType,
} : { } : {
orderKey: this.orderKey, orderKey: this.orderKey,
from: 'routine', from: 'routine',
cartId: this.cartId, cartId: this.cartId,
couponId: this.couponId, couponId: this.getCouponId(),
recipientsNum: this.goodsInfo.cartNum, recipientsNum: this.goodsInfo.cartNum,
templateId: this.templateId, templateId: this.templateId,
message : this.message || '礼笺轻启,礼藏心意', message : this.message || '礼笺轻启,礼藏心意',