diff --git a/aiChat/mixins/chatMixins.js b/aiChat/mixins/chatMixins.js index d8406fe..a8e5ee9 100644 --- a/aiChat/mixins/chatMixins.js +++ b/aiChat/mixins/chatMixins.js @@ -2,7 +2,7 @@ import { getSseConfigV1, getCompletionsV2, deleteChatItemByConversationId, - getAnalyzeKeywordsV1, + // getAnalyzeKeywordsV1, getAnalyzeKeywordsChangeV1 } from '@/api/chat/index' import { VUE_APP_API_URL } from '@/config' @@ -230,6 +230,7 @@ export const chatMixins = { _this.chatErrorSetContent() }) }) + /* getAnalyzeKeywordsV1({ 'chatNumber': _this.chatNumber, conversationId, @@ -256,6 +257,7 @@ export const chatMixins = { console.log(_this.chatMessageList[_this.chatMessageListLength - 1]) } }) + */ } else { _this.chatErrorSetContent() } diff --git a/api/join.js b/api/join.js index 3854c48..e898cc5 100644 --- a/api/join.js +++ b/api/join.js @@ -55,6 +55,22 @@ export function saveWholesaler(wholesalerInfo) { return request.post("/merchantApply/wholesaler/submit", param, {login: true}) } +export function saveExperienceStore(params) { + return request.post("/merchantApply/experienceStore/submit", params, {login: true}) +} + +export function saveExperienceStoreDraft(params) { + return request.post("/merchantApply/experienceStore/saveDraft", params, {login: true}) +} + +export function getExperienceStoreCategoryList() { + return request.get("/experienceStore/categoryList", {}, {login: true}) +} + +export function getExperienceStoreInfo(params) { + return request.get("merchantApply/info/experienceStore", params, {login: true}) +} + // 撤销入驻申请 export function removeApply() { return request.post("/merchantApply/revoke") diff --git a/api/order.js b/api/order.js index 6f9d919..83dc391 100644 --- a/api/order.js +++ b/api/order.js @@ -188,6 +188,15 @@ export function editAddress(params) { return request.post('/order/editAddress', params) } +/** + * 申请修改订单收货地址 + * @param {*} params + * @returns + */ +export function applyEditAddress(params) { + return request.post('/order/applyEditAddress', params) +} + /** * 订单预计到达时间 * @param {*} params diff --git a/api/product.js b/api/product.js index 1268d51..2a925d3 100644 --- a/api/product.js +++ b/api/product.js @@ -159,4 +159,32 @@ export function hadView(data) { export function getShareImg(id) { return request.get('/landmarkGoods/poster/' + id, {}, {login: false}) -} \ No newline at end of file +} + +export function getLatestExperienceCoupon() { + return request.get('/experienceCoupon/latest', {}, {login: true}) +} + +export function getExperienceCouponList() { + return request.get('/experienceCoupon/list', {}, {login: true}) +} + +export function getExperienceCouponItems(params) { + return request.get('/experienceCoupon/items', params, {login: true}) +} + +export function getExperienceCouponCategoryList(params) { + return request.get('/experienceCoupon/categoryList', params, {login: true}) +} + +export function createExperienceCouponOrder(data) { + return request.post('/experienceCoupon/order/create', data, {login: true}) +} + +export function getExperienceCouponOrderDetail(orderId) { + return request.get(`/experienceCoupon/order/detail/${orderId}`, {}, {login: true}) +} + +export function checkExperienceCoupon(params) { + return request.get('/experienceCoupon/check', params, {login: true}) +} 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/assets/css/base.less b/assets/css/base.less index d917846..d9940a9 100644 --- a/assets/css/base.less +++ b/assets/css/base.less @@ -295,4 +295,8 @@ checkbox .wx-checkbox-input.wx-checkbox-input-checked { font-style: normal; font-size: 28rpx; color: #C2C5CC; +} + +.bg-color-hui { + background-color: #999 !important; } \ No newline at end of file diff --git a/pages.json b/pages.json index 0187dbb..6c4155b 100644 --- a/pages.json +++ b/pages.json @@ -235,7 +235,8 @@ "path": "pages/order/MyOrder/index", "style": { "navigationBarTitleText": "我的订单", - "navigationBarBackgroundColor": "#fff" + "navigationBarBackgroundColor": "#fff", + "navigationStyle": "custom" } }, { @@ -477,6 +478,13 @@ "navigationBarTitleText": "旅居商家入驻", "navigationBarBackgroundColor": "#FFFFFF" } + }, + { + "path": "views/experienceStore", + "style": { + "navigationBarTitleText": "体验店入驻", + "navigationBarBackgroundColor": "#FFFFFF" + } } ] }, @@ -730,6 +738,37 @@ "navigationBarTitleText": "时令尝鲜" } }, + { + "path": "views/experienceCoupon", + "style": { + "navigationBarTitleText": "体验券详情", + "navigationBarBackgroundColor": "#FFFFFF" + } + }, + { + "path": "views/experienceCouponOrderDetail", + "style": { + "navigationBarTitleText": "订单核销", + "navigationBarBackgroundColor": "#FFFFFF" + } + }, + { + "path": "views/experienceProjectDetail", + + "style": { + "navigationBarTitleText": "体验项目详情", + "navigationBarBackgroundColor": "#FFFFFF", + "navigationStyle": "custom" + } + }, + { + "path": "views/storeLicense", + "style": { + "navigationBarTitleText": "营业执照", + "navigationBarBackgroundColor": "#FFFFFF", + "navigationStyle": "custom" + } + }, { "path": "views/submitOrder", "style": { diff --git a/pages/home/index.vue b/pages/home/index.vue index be1d07f..9286a2b 100644 --- a/pages/home/index.vue +++ b/pages/home/index.vue @@ -85,6 +85,17 @@ + + + { const { data } = res @@ -1429,6 +1453,9 @@ export default { _this.$set(_this, 'contentHomestay', data.contentHomestayV2 || []) _this.$set(_this, 'contentFestival', data.contentFestivalV2 || []) _this.$set(_this, 'newZone', data.newGoods || []) + _this.$set(_this, 'hasExperienceCoupon', data.hasExperienceCoupon || 0) + _this.$set(_this, 'hasUnusedExperienceCoupon', data.hasUnusedExperienceCoupon || 0) + _this.$set(_this, 'experienceCouponImage', data.experienceCouponImage || '') _this.$set(_this, 'isOldUserPopupShow', data.isOldUserPopupShow || 0) _this.indexVideo = data.indexVideo ? data.indexVideo.videoUrl : '' _this.bastLeftList = [] @@ -1802,6 +1829,16 @@ export default { } } } +.experience-coupon-banner { + position: relative; + z-index: 5; + padding-top: 16rpx; + .experience-coupon-img { + display: block; + width: 100%; + border-radius: 20rpx; + } +} .hotel-list-wrap { position: relative; width: 344rpx; diff --git a/pages/order/MyOrder/index.vue b/pages/order/MyOrder/index.vue index 564f79f..0d39f72 100644 --- a/pages/order/MyOrder/index.vue +++ b/pages/order/MyOrder/index.vue @@ -1,5 +1,12 @@ @@ -56,6 +63,7 @@ export default { hasHotel: null, hasSupplier: null, hasWholesaler: null, + hasExperienceStore: null, hasTravel: null, images: null, pageKeyId: Object.freeze('merchantApplyIndex'), @@ -73,6 +81,7 @@ export default { this.hasWholesaler = data.hasWholesaler this.canApplyHotel = data.canApplyHotel this.hasTravel = data.hasTravel + this.hasExperienceStore = data.hasExperienceStore }) }, methods: { @@ -116,6 +125,13 @@ export default { } this.$yrouter.push('/pkg_join/views/shop?partnerId=' + this.partnerId) break + case 'experience_store': + if(this.hasExperienceStore === 1) { + this.$global.goSupplierMini() + return + } + this.$yrouter.push('/pkg_join/views/experienceStore?partnerId=' + this.partnerId) + break case 'wholesaler': if (this.hasWholesaler === 1) { this.$global.goSupplierMini() diff --git a/pkg_join/views/shop.vue b/pkg_join/views/shop.vue index 6f6a8ad..9e75c1c 100644 --- a/pkg_join/views/shop.vue +++ b/pkg_join/views/shop.vue @@ -210,6 +210,7 @@ mode="selector" range-key="name" class="picker" + style="width: 100%" @change="typeChange" > @@ -289,7 +290,7 @@ - + diff --git a/pkg_join/views/supplier.vue b/pkg_join/views/supplier.vue index c534d7d..80da33c 100644 --- a/pkg_join/views/supplier.vue +++ b/pkg_join/views/supplier.vue @@ -161,7 +161,7 @@ - + @@ -349,7 +349,7 @@ - + @@ -358,13 +358,16 @@ :value="indexType" :range="columnsType" :disabled="reviewing" - mode=selector + mode="selector" range-key="name" class="picker" @change="typeChange" > - - + + + + + @@ -401,7 +404,7 @@ - + diff --git a/pkg_join/views/travelResidence.vue b/pkg_join/views/travelResidence.vue index 6a0654a..d41838b 100644 --- a/pkg_join/views/travelResidence.vue +++ b/pkg_join/views/travelResidence.vue @@ -648,11 +648,11 @@ export default { } // 请选择物理位置 if (!this.form.longitude) { - uni.$u.toast('请选择物理位置') + uni.$u.toast('请选择地理定位') return } if (!this.form.latitude) { - uni.$u.toast('请选择物理位置') + uni.$u.toast('请选择地理定位') return } if (!this.form.culture) { diff --git a/pkg_product/views/experienceCoupon.vue b/pkg_product/views/experienceCoupon.vue new file mode 100644 index 0000000..25c2f82 --- /dev/null +++ b/pkg_product/views/experienceCoupon.vue @@ -0,0 +1,858 @@ + + + + + diff --git a/pkg_product/views/experienceCouponOrderDetail.vue b/pkg_product/views/experienceCouponOrderDetail.vue new file mode 100644 index 0000000..c88ddea --- /dev/null +++ b/pkg_product/views/experienceCouponOrderDetail.vue @@ -0,0 +1,649 @@ + + + + + diff --git a/pkg_product/views/experienceProjectDetail.vue b/pkg_product/views/experienceProjectDetail.vue new file mode 100644 index 0000000..1e4deed --- /dev/null +++ b/pkg_product/views/experienceProjectDetail.vue @@ -0,0 +1,739 @@ + + + + + diff --git a/pkg_product/views/famousQianxianShop.vue b/pkg_product/views/famousQianxianShop.vue index a03980e..512c691 100644 --- a/pkg_product/views/famousQianxianShop.vue +++ b/pkg_product/views/famousQianxianShop.vue @@ -207,6 +207,24 @@ :id="'video-item' + index" :poster="item.video + '?vframe/jpg/offset/1'"> + + + + + {{ item.linkHotelName || '' }} + + + 点击进入 + + + + {{ item.createTime ? item.createTime.replace(/-/g, '.').substr(0, 10) : '' }} @@ -1639,6 +1657,10 @@ export default { } }) }, + handleInfoHotelClick(item) { + if (!item || !item.linkHotelId) return + this.villageItemClick({ id: item.linkHotelId }) + }, guideItemClickHandle(item) { // 如果没有开启专题页,则不进入 if (!item.isContentPage) return @@ -2172,6 +2194,52 @@ export default { } } } + .info-shop-entry { + margin: 0 20rpx 16rpx 20rpx; + padding: 16rpx 20rpx; + border-radius: 12rpx; + background-color: #fafafa; + display: flex; + align-items: center; + column-gap: 16rpx; + } + .info-shop-logo { + width: 88rpx; + height: 88rpx; + border-radius: 12rpx; + overflow: hidden; + flex-shrink: 0; + } + .info-shop-logo image { + width: 100%; + height: 100%; + } + .info-shop-main { + flex: 1; + display: flex; + align-items: center; + justify-content: space-between; + column-gap: 16rpx; + } + .info-shop-name { + flex: 1; + font-size: 28rpx; + color: #333; + font-weight: 500; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .info-shop-btn { + padding: 8rpx 16rpx 8rpx 24rpx; + border-radius: 999rpx; + background-color: #C52733; + color: #fff; + font-size: 24rpx; + flex-shrink: 0; + display: flex; + align-items: center; + } .info-item-bottom { display: flex; align-items: center; diff --git a/pkg_product/views/groupBuyDetails.vue b/pkg_product/views/groupBuyDetails.vue index c60ed2a..e98e03c 100644 --- a/pkg_product/views/groupBuyDetails.vue +++ b/pkg_product/views/groupBuyDetails.vue @@ -75,6 +75,7 @@ + @@ -115,7 +116,30 @@ - + + + + {{ detail.experienceCouponRule.ruleTitle1 }} + + + + + {{ detail.experienceCouponRule.ruleSubTitle1 }} + + + + + + + + + {{ detail.experienceCouponRule.ruleTitle2 }} + + + + + + @@ -566,6 +590,34 @@ export default { height: 34rpx; margin-right: 10rpx; } +.experience-card .benefit-chip{ + display: inline-flex; + align-items: center; + background: #FADE9F; + border: 1rpx solid #FADE9F; + color: #333; + border-radius: 100rpx; + padding: 8rpx 16rpx; + font-size: 24rpx; +} +.experience-card .image-grid{ + display: flex; + gap: 16rpx; + overflow-x: auto; + padding-bottom: 8rpx; +} +.experience-card .image-item{ + flex: 0 0 auto; + width: 200rpx; + height: 200rpx; + border-radius: 20rpx; + overflow: hidden; + background: #f5f5f5; +} +.experience-card .image-item image{ + width: 100%; + height: 100%; +} .page-scroll { height: calc(100vh - 120rpx); } .hero-swiper { width: 100%; diff --git a/pkg_product/views/healthFoods.vue b/pkg_product/views/healthFoods.vue index 374197d..171a0bc 100644 --- a/pkg_product/views/healthFoods.vue +++ b/pkg_product/views/healthFoods.vue @@ -93,35 +93,69 @@ {{ tab.name }} - - - - - - - - {{ item.areaName }} + + + + + + + + + {{ item.areaName }} + + + {{ item.intro }} + + + + + {{ item.name }} - {{ item.intro }} - - - + + + + + + + + + {{ item.areaName }} + + + {{ item.intro }} + + + + + {{ item.name }} - {{ item.name }} @@ -158,6 +192,12 @@ export default { wellnessButtonSrc() { const config = this.topImageConfig || {} return config.wellnessButtonImageFocus || config.wellnessButtonImage || '' + }, + leftItems() { + return this.items.filter((item, index) => index % 2 === 0) + }, + rightItems() { + return this.items.filter((item, index) => index % 2 !== 0) } }, onLoad(opts) { @@ -331,8 +371,8 @@ export default { position: relative; } .desc-txt { - height: 78rpx; line-height: 40rpx; + max-height: 78rpx; } .address{ position: absolute; @@ -346,17 +386,32 @@ export default { display: grid; grid-template-columns: 50% 50%; } +.waterfall-box { + display: flex; + justify-content: space-between; + align-items: flex-start; +} +.waterfall-column { + width: 49.9%; + display: flex; + flex-direction: column; + .img{ + height: 670rpx; + } +} .atr{ width: 52rpx; height: 52rpx; border-radius: 50%; } .img{ - width: 320rpx; - height: 320rpx; - // background: #707070; + width: 100%; border-radius: 16rpx; position: relative; + overflow: hidden; + max-height: 460rpx; + display: block; + min-height: 200rpx; } .sanctum-wrap{ min-height: 100vh; diff --git a/pkg_product/views/healthSanctum.vue b/pkg_product/views/healthSanctum.vue index eb508dc..75fddd6 100644 --- a/pkg_product/views/healthSanctum.vue +++ b/pkg_product/views/healthSanctum.vue @@ -63,35 +63,69 @@ --> 大家都在看 - - - - - - - - {{ item.areaName }} + + + + + + + + + {{ item.areaName }} + + + {{ item.intro }} + + + + + {{ item.name }} - {{ item.intro }} - - - + + + + + + + + + {{ item.areaName }} + + + {{ item.intro }} + + + + + {{ item.name }} - {{ item.name }} @@ -128,7 +162,12 @@ export default { wellnessButtonSrc() { const config = this.topImageConfig || {} return config.wellnessButtonImage || config.wellnessButtonImageFocus || '' - keyword: '' + }, + leftItems() { + return this.items.filter((item, index) => index % 2 === 0) + }, + rightItems() { + return this.items.filter((item, index) => index % 2 !== 0) } }, onLoad(opts) { @@ -293,8 +332,8 @@ export default { position: relative; } .desc-txt { - height: 78rpx; line-height: 40rpx; + max-height: 78rpx; } .address{ position: absolute; @@ -308,22 +347,37 @@ export default { display: grid; grid-template-columns: 50% 50%; } +.waterfall-box { + display: flex; + justify-content: space-between; + align-items: flex-start; +} +.waterfall-column { + width: 49.9%; + display: flex; + flex-direction: column; + .img{ + height: 670rpx; + } +} .atr{ width: 52rpx; height: 52rpx; border-radius: 50%; } .img{ - width: 320rpx; - height: 320rpx; - // background: #707070; + width: 100%; border-radius: 16rpx; position: relative; + overflow: hidden; + max-height: 460rpx; + display: block; + min-height: 200rpx; } .sanctum-wrap{ min-height: 100vh; background-color: #fff; - padding: 20rpx ; + padding: 10rpx ; } .tab{ position: relative; diff --git a/pkg_product/views/sojoumOrderDetails.vue b/pkg_product/views/sojoumOrderDetails.vue index 1f3a391..9519628 100644 --- a/pkg_product/views/sojoumOrderDetails.vue +++ b/pkg_product/views/sojoumOrderDetails.vue @@ -75,7 +75,6 @@ - {{ title }} @@ -98,6 +97,21 @@ + + + + + + + 暂不领取 + 去领取体验券 + + + 联系人信息 @@ -204,6 +218,7 @@ \ No newline at end of file diff --git a/pkg_user/views/gift/gift.vue b/pkg_user/views/gift/gift.vue index 0e60e87..ceec7dc 100644 --- a/pkg_user/views/gift/gift.vue +++ b/pkg_user/views/gift/gift.vue @@ -71,6 +71,12 @@ + + 一人领取所有礼品 + + + + 价格明细 @@ -208,6 +214,7 @@ export default { webUrl: this.$VUE_APP_RESOURCES_URL, loading: true, isBlind: false, + isOneRecipient: false, canTransfer: false, message: '', cartId: '', @@ -525,6 +532,7 @@ export default { cover: this.selectedCover, canTransfer: this.canTransfer ? 1 : 0, isBlind: this.isBlind ? 1 : 0, + isOneRecipient: this.isOneRecipient ? 1 : 0, payType: this.payType, seckillId: this.orderGroupInfo.seckill_id, combinationId: this.orderGroupInfo.combination_id, @@ -706,7 +714,7 @@ export default { } .tip-wrap{ position: absolute; - bottom: 100rpx; + bottom: 50rpx; left: 0; margin: auto; right: 0;