feat: 新增商家主页与名下信息流接口,新增优惠券与商户详情页面

这个提交包含在:
2026-10-23 17:36:25 +08:00
父节点 b8b32f1f1b
当前提交 526f22b27a
共有 12 个文件被更改,包括 5567 次插入 和 2298 次删除

查看文件

@@ -144,13 +144,16 @@
</view>
<!-- 商家门店专区(仅商家发布或关联认证商户时展示) -->
<view v-if="isMerchantPost" class="fc-card detail__merchant">
<view v-if="isMerchantPost" class="fc-card detail__merchant" @click="goShopDetail">
<view class="detail__merchant-badge-bar">
<view class="detail__merchant-flag">
<image class="fc-icon fc-icon--xs" :src="iconUrl('shield')" mode="aspectFit" />
<text class="detail__merchant-flag-txt">认证商家官方门店</text>
</view>
<text class="detail__merchant-security">工商资质已核验</text>
<view class="detail__merchant-entry">
<text class="detail__merchant-entry-txt">进店逛逛</text>
<text class="detail__merchant-entry-arrow">›</text>
</view>
</view>
<view class="detail__merchant-main">
@@ -183,7 +186,7 @@
</view>
<!-- 实体门店地址与一键导航 -->
<view v-if="merchantAddress" class="detail__merchant-address-box" @click="openMerchantLocation">
<view v-if="merchantAddress" class="detail__merchant-address-box" @click.stop="openMerchantLocation">
<view class="detail__merchant-address-left">
<image class="fc-icon fc-icon--sm" :src="iconUrl('home-location')" mode="aspectFit" />
<text class="detail__merchant-address-txt">{{ merchantAddress }}</text>
@@ -1001,6 +1004,23 @@ export default {
/**
* 导航或复制地址
*/
/**
* 跳转至商家店铺详情主页
*/
goShopDetail() {
const m = this.merchantInfo
const shopId = (m && (m.id || m.merchantId)) || (this.post.publisher && this.post.publisher.id) || (this.post.userId || this.post.user_id)
if (!shopId) {
uni.showToast({ title: '暂未获取到店铺信息', icon: 'none' })
return
}
uni.navigateTo({
url: '/pages/merchant/detail?id=' + shopId,
fail: (err) => {
console.warn('跳转商家详情失败:', err)
}
})
},
/**
* 导航前往商家门店或复制实体地址
*/
@@ -1638,7 +1658,28 @@ export default {
background: #ffffff;
border-radius: $fc-radius-lg;
padding: 24rpx;
border: 1rpx solid #e2f4ea;
border: 1rpx solid #dcf3e5;
box-shadow: 0 4rpx 16rpx rgba(0, 224, 112, 0.05);
transition: all 0.2s ease;
&:active {
transform: scale(0.995);
background: #fbfdfc;
}
}
.detail__merchant-entry {
display: flex;
align-items: center;
gap: 4rpx;
}
.detail__merchant-entry-txt {
font-size: 22rpx;
color: #04874a;
font-weight: 600;
}
.detail__merchant-entry-arrow {
font-size: 24rpx;
color: #04874a;
font-weight: 700;
}
.detail__merchant-badge-bar {
display: flex;