From ad70e3afeddd178ef8552dacd66963ea0e0cad7f Mon Sep 17 00:00:00 2001 From: linxi <957440651@qq.com> Date: Sun, 15 Mar 2026 16:21:45 +0800 Subject: [PATCH] =?UTF-8?q?Feat=EF=BC=9A=E4=BD=93=E9=AA=8C=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/qianxian.js | 17 + pages.json | 7 + pkg_product/views/experienceProjectDetail.vue | 544 ++++++++++++++++++ pkg_product/views/sojoumStore.vue | 202 ++++++- 4 files changed, 753 insertions(+), 17 deletions(-) create mode 100644 pkg_product/views/experienceProjectDetail.vue diff --git a/api/qianxian.js b/api/qianxian.js index 110268d..9ec0387 100644 --- a/api/qianxian.js +++ b/api/qianxian.js @@ -316,3 +316,20 @@ export function getCityShopList(params) { export function getCountyFamousHotelType() { return request.get('/countyFamous/hotelType', {}, {login: true}) } + +/** + * ������б� + * travelMerchantId int �þ��̻�ID + * experienceStoreCategoryId int ��������ID + */ +export function getExperienceStoreList(params) { + return request.get('/experienceStore/list', params, { login: true }) +} + +export function getExperienceStoreProject(experienceMerchantId) { + return request.get('/experienceStoreProject/' + experienceMerchantId, {}, { login: true }) +} + +export function getExperienceStoreDetail(id) { + return request.get('/experienceStore/detail/' + id, {}, { login: true }) +} diff --git a/pages.json b/pages.json index c827f7a..ad91f60 100644 --- a/pages.json +++ b/pages.json @@ -744,6 +744,13 @@ "navigationBarBackgroundColor": "#FFFFFF" } }, + { + "path": "views/experienceProjectDetail", + "style": { + "navigationBarTitleText": "体验项目详情", + "navigationBarBackgroundColor": "#FFFFFF" + } + }, { "path": "views/submitOrder", "style": { diff --git a/pkg_product/views/experienceProjectDetail.vue b/pkg_product/views/experienceProjectDetail.vue new file mode 100644 index 0000000..2910bdd --- /dev/null +++ b/pkg_product/views/experienceProjectDetail.vue @@ -0,0 +1,544 @@ + + + + + diff --git a/pkg_product/views/sojoumStore.vue b/pkg_product/views/sojoumStore.vue index 5433559..6e2e1b0 100644 --- a/pkg_product/views/sojoumStore.vue +++ b/pkg_product/views/sojoumStore.vue @@ -82,19 +82,22 @@ - - - - {{ item.text }} + + + + + + {{ item.text }} + + - - + + + + + + + + + + {{ item.cityName }} + + + + {{ item.name }} + {{ item.intro }} + + + 营业时间:{{ item.serviceTime }}~{{ item.serviceEndTime }} + + + 查看 + + + + + + + 店主还没有上传内容哦~ + + { + if (res.status === 200) { + this.experienceStoreList = res.data.records || [] + } + }).finally(() => { + uni.hideLoading() + }) + }, getJiaLouProductList() { uni.showLoading({ title: '加载中', @@ -855,7 +918,8 @@ export default { align-items: center; padding: 20rpx; border-top: 1px solid #f1f1f1; - font-size: 16px; + font-size: 22rpxl; + font-weight: bold; .time { flex: 1; color: #333; @@ -1018,24 +1082,128 @@ export default { color:#A6AAB3; font-size:28rpx; } +.experience-list { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + + .experience-item { + width: 335rpx; + background: #fff; + border-radius: 16rpx; + overflow: hidden; + margin-bottom: 20rpx; + box-shadow: 0 2rpx 10rpx rgba(0,0,0,0.05); + + .img-box { + position: relative; + width: 100%; + height: 335rpx; + + .cover-img { + width: 100%; + height: 100%; + } + + .location-tag { + position: absolute; + bottom: 10rpx; + left: 10rpx; + display: flex; + align-items: center; + // background: rgba(0,0,0,0.5); + // padding: 4rpx 10rpx; + // border-radius: 20rpx; + + .city-name { + color: #fff; + font-size: 20rpx; + margin-left: 4rpx; + } + } + } + + .info-box { + padding: 16rpx; + + .name { + font-size: 28rpx; + font-weight: bold; + color: #333; + margin-bottom: 8rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .intro { + font-size: 22rpx; + color: #999; + margin-bottom: 16rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .bottom-row { + display: flex; + justify-content: space-between; + align-items: center; + + .time { + font-size: 20rpx; + color: #666; + } + + .btn-check { + background: #C52733; + color: #fff; + font-size: 24rpx; + padding: 4rpx 16rpx; + border-radius: 20rpx; + } + } + } + } +} .top-tab { padding-bottom: 30rpx; padding-top: 30rpx; background: #fff; + + .tab-scroll { + width: 100%; + white-space: nowrap; + + .tab-list { + display: inline-flex; + padding: 0 30rpx; + } + } + .tab { + display: inline-block; width: fit-content; + margin-right: 20rpx; + + &:last-child { + margin-right: 0; + } + .tab-item { height: 52rpx; padding: 0 30rpx; - border-radius: 26rpx 0 0 26rpx; + border-radius: 26rpx; font-size: 32rpx; line-height: 52rpx; font-weight: bold; + &.active { color: #fff; background: linear-gradient(90deg, #C52733 0%, rgba(211,92,101,0.91) 54%, rgba(255,255,255,0.62) 100%); } } + &.hide { display: none; }