1、隐藏商品的评论和保障

2、更换导航栏的发布为买酱料,首页为找档口
3、分享打印判断
4、增加法律声明页面的配置
This commit is contained in:
wangzimeng 2025-08-13 14:55:45 +08:00
parent 002a9c79af
commit 53d6123af9
5 changed files with 389 additions and 381 deletions

View File

@ -21,13 +21,13 @@
}
},
{
"path": "pages/index/fabu",
"path": "pages/index/category",
"style": {
"navigationBarTitleText": "发布信息"
"navigationBarTitleText": "商品分类"
},
"meta": {
"sync": true,
"title": "发布信息",
"title": "商品分类",
"group": "商城"
}
},
@ -43,13 +43,13 @@
}
},
{
"path": "pages/index/category",
"path": "pages/index/fabu",
"style": {
"navigationBarTitleText": "商品分类"
"navigationBarTitleText": "发布信息"
},
"meta": {
"sync": true,
"title": "商品分类",
"title": "发布信息",
"group": "商城"
}
},
@ -169,6 +169,17 @@
"group": "商品"
}
},
{
"path": "lawNotice",
"style": {
"navigationBarTitleText": "法律声明"
},
"meta": {
"sync": true,
"title": "法律声明",
"group": "商品"
}
},
{
"path": "groupon",
"style": {
@ -854,7 +865,7 @@
"pagePath": "pages/index/index"
},
{
"pagePath": "pages/index/fabu"
"pagePath": "pages/index/category"
},
{
"pagePath": "pages/index/user"

View File

@ -7,26 +7,13 @@
<!-- 骨架屏 -->
<detailSkeleton v-if="state.skeletonLoading" />
<!-- 下架/售罄提醒 -->
<s-empty
v-else-if="state.goodsInfo === null"
text="商品不存在或已下架"
icon="/static/soldout-empty.png"
showAction
actionText="再逛逛"
actionUrl="/pages/goods/list"
/>
<s-empty v-else-if="state.goodsInfo === null" text="商品不存在或已下架" icon="/static/soldout-empty.png" showAction
actionText="再逛逛" actionUrl="/pages/goods/list" />
<block v-else>
<view class="detail-swiper-selector">
<!-- 商品轮播图 -->
<su-swiper
class="ss-m-b-14"
isPreview
:list="state.goodsSwiper"
dotStyle="tag"
imageMode="widthFix"
dotCur="bg-mask-40"
:seizeHeight="750"
/>
<su-swiper class="ss-m-b-14" isPreview :list="state.goodsSwiper" dotStyle="tag" imageMode="widthFix"
dotCur="bg-mask-40" :seizeHeight="750" />
<!-- 价格+标题 -->
<view class="title-card detail-card ss-p-y-40 ss-p-x-20">
@ -46,22 +33,15 @@
<view class="discounts-box ss-flex ss-row-between ss-m-b-28">
<div class="tag-content">
<view class="tag-box ss-flex">
<view
class="tag ss-m-r-10"
v-for="promos in state.goodsInfo.promos"
:key="promos.id"
@tap="onActivity"
>
<view class="tag ss-m-r-10" v-for="promos in state.goodsInfo.promos"
:key="promos.id" @tap="onActivity">
{{ promos.title }}
</view>
</view>
</div>
<view
class="get-coupon-box ss-flex ss-col-center ss-m-l-20"
@tap="state.showModel = true"
v-if="state.couponInfo.length"
>
<view class="get-coupon-box ss-flex ss-col-center ss-m-l-20" @tap="state.showModel = true"
v-if="state.couponInfo.length">
<view class="discounts-title ss-m-r-8">领券</view>
<text class="cicon-forward"></text>
</view>
@ -72,51 +52,33 @@
<!-- 功能卡片 -->
<view class="detail-cell-card detail-card ss-flex-col">
<detail-cell-sku
v-model="state.selectedSkuPrice.goods_sku_text"
:skus="state.goodsInfo.skus"
@tap="state.showSelectSku = true"
/>
<detail-cell-service v-if="state.goodsInfo.service" v-model="state.goodsInfo.service" />
<detail-cell-sku v-model="state.selectedSkuPrice.goods_sku_text" :skus="state.goodsInfo.skus"
@tap="state.showSelectSku = true" />
<!-- <detail-cell-service v-if="state.goodsInfo.service" v-model="state.goodsInfo.service" /> -->
<detail-cell-params v-if="state.goodsInfo.params" v-model="state.goodsInfo.params" />
</view>
<!-- 规格与数量弹框 -->
<s-select-sku
:goodsInfo="state.goodsInfo"
:show="state.showSelectSku"
@addCart="onAddCart"
@buy="onBuy"
@change="onSkuChange"
@close="state.showSelectSku = false"
/>
<s-select-sku :goodsInfo="state.goodsInfo" :show="state.showSelectSku" @addCart="onAddCart"
@buy="onBuy" @change="onSkuChange" @close="state.showSelectSku = false" />
</view>
<!-- 评价 -->
<detail-comment-card class="detail-comment-selector" :goodsId="state.goodsId" />
<!-- <detail-comment-card class="detail-comment-selector" :goodsId="state.goodsId" /> -->
<!-- 详情 -->
<detail-content-card class="detail-content-selector" :content="state.goodsInfo.content" />
<!-- 活动跳转 -->
<detail-activity-tip
v-if="state.goodsInfo.activities"
:data="state.goodsInfo"
></detail-activity-tip>
<detail-activity-tip v-if="state.goodsInfo.activities" :data="state.goodsInfo"></detail-activity-tip>
<!-- 详情tabbar -->
<detail-tabbar v-model="state.goodsInfo">
<!-- TODO: 缺货中 已售罄 判断 设计-->
<view class="buy-box ss-flex ss-col-center ss-p-r-20" v-if="state.goodsInfo.stock > 0">
<button
class="ss-reset-button add-btn ui-Shadow-Main"
@tap="state.showSelectSku = true"
>
<button class="ss-reset-button add-btn ui-Shadow-Main" @tap="state.showSelectSku = true">
加入购物车
</button>
<button
class="ss-reset-button buy-btn ui-Shadow-Main"
@tap="state.showSelectSku = true"
>
<button class="ss-reset-button buy-btn ui-Shadow-Main" @tap="state.showSelectSku = true">
立即购买
</button>
</view>
@ -124,27 +86,30 @@
<button class="ss-reset-button disabled-btn" disabled> 已售罄 </button>
</view>
</detail-tabbar>
<s-coupon-get
v-model="state.couponInfo"
:show="state.showModel"
@close="state.showModel = false"
@get="onGet"
/>
<s-activity-pop
v-model="state.activityInfo"
:show="state.showActivityModel"
@close="state.showActivityModel = false"
/>
<s-coupon-get v-model="state.couponInfo" :show="state.showModel" @close="state.showModel = false"
@get="onGet" />
<s-activity-pop v-model="state.activityInfo" :show="state.showActivityModel"
@close="state.showActivityModel = false" />
</block>
</s-layout>
</view>
</template>
<script setup>
import { reactive, computed } from 'vue';
import { onLoad, onPageScroll } from '@dcloudio/uni-app';
import {
reactive,
computed
} from 'vue';
import {
onLoad,
onPageScroll
} from '@dcloudio/uni-app';
import sheep from '@/sheep';
import { formatSales, formatGoodsSwiper, formatPrice } from '@/sheep/hooks/useGoods';
import {
formatSales,
formatGoodsSwiper,
formatPrice
} from '@/sheep/hooks/useGoods';
import detailNavbar from './components/detail/detail-navbar.vue';
import detailCellSku from './components/detail/detail-cell-sku.vue';
import detailCellService from './components/detail/detail-cell-service.vue';
@ -154,7 +119,9 @@
import detailCommentCard from './components/detail/detail-comment-card.vue';
import detailContentCard from './components/detail/detail-content-card.vue';
import detailActivityTip from './components/detail/detail-activity-tip.vue';
import { isEmpty } from 'lodash';
import {
isEmpty
} from 'lodash';
// import detailActivityTip from './components/detail/detail-activity-tip.vue';
// import detailTab from './components/detail/detail-tab.vue';
@ -190,13 +157,11 @@
sheep.$router.go('/pages/order/confirm', {
data: JSON.stringify({
order_type: 'goods',
goods_list: [
{
goods_list: [{
goods_id: e.goods_id,
goods_num: e.goods_num,
goods_sku_price_id: e.id,
},
],
}, ],
}),
});
}
@ -208,7 +173,10 @@
//
async function onGet(id) {
const { code, msg } = await sheep.$api.coupon.get(id);
const {
code,
msg
} = await sheep.$api.coupon.get(id);
if (code === 1) {
uni.showToast({
title: msg,
@ -221,8 +189,7 @@
const shareInfo = computed(() => {
if (isEmpty(state.goodsInfo)) return {};
return sheep.$platform.share.getShareInfo(
{
return sheep.$platform.share.getShareInfo({
title: state.goodsInfo.title,
image: sheep.$url.cdn(state.goodsInfo.image),
desc: state.goodsInfo.subtitle,
@ -230,15 +197,13 @@
page: '2',
query: state.goodsInfo.id,
},
},
{
}, {
type: 'goods', //
title: state.goodsInfo.title, //
image: sheep.$url.cdn(state.goodsInfo.image), //
price: state.goodsInfo.price[0], //
original_price: state.goodsInfo.original_price, //
},
);
}, );
});
onLoad(async (options) => {
@ -259,7 +224,10 @@
state.goodsInfo = null;
}
});
const { code, data } = await sheep.$api.coupon.listByGoods(state.goodsId);
const {
code,
data
} = await sheep.$api.coupon.listByGoods(state.goodsId);
if (code === 1) {
state.couponInfo = data;
}
@ -267,6 +235,7 @@
</script>
<style lang="scss" scoped>
.detail-card {
background-color: #ffff;
margin: 14rpx 20rpx;

25
pages/goods/lawNotice.vue Normal file
View File

@ -0,0 +1,25 @@
<template>
<s-layout title="法律声明">
<view style="padding: 30rpx;">
<rich-text style="text-align: justify;" :nodes="Negotiate"></rich-text>
</view>
</s-layout>
</template>
<script setup>
import { ref,reactive } from 'vue'
import {
onLoad,
onShow,
onPageScroll,
onPullDownRefresh,
onReachBottom
} from '@dcloudio/uni-app';
import sheep from '@/sheep';
</script>
<style lang="scss" scoped>
</style>

View File

@ -1,6 +1,6 @@
<template>
<!-- tabbar="/pages/index/category" -->
<s-layout title="分类" :bgStyle="{ color: '#fff' }">
<s-layout title="分类" tabbar="/pages/index/category" :bgStyle="{ color: '#fff' }">
<view class="s-category">
<view class="three-level-wrap ss-flex ss-col-top">
<view class="side-menu-wrap" :style="[{ top: Number(statusBarHeight + 88) + 'rpx' }]">

View File

@ -47,6 +47,7 @@ const getShareInfo = (
// 配置转发参数
if (shareConfig.methods.includes('forward')) {
console.log('shareConfig');
if (shareConfig.forwardInfo.title === '' || shareConfig.forwardInfo.image === '') {
console.log('请在平台设置中配置转发信息');
}
@ -148,11 +149,13 @@ const decryptSpm = (spm) => {
};
break;
}
shareParams.platform = platformMap[shareParamsArray[3] - 1];
shareParams.from = fromMap[shareParamsArray[4] - 1];
if (shareParams.shareId != 0) {
// 已登录 立即添加分享记录
if (user.isLogin) {
console.log('已登录 立即添加分享记录前');
user.addShareLog(shareParams);
} else {
// 未登录 待用户登录后添加分享记录