|
|
<!-- 商品详情的底部导航 --><template> <su-fixed bottom placeholder bg="bg-white"> <view class="ui-tabbar-box"> <view class="ui-tabbar ss-flex ss-col-center ss-row-between"> <view v-if="collectIcon" class="detail-tabbar-item ss-flex ss-flex-col ss-row-center ss-col-center" @tap="onFavorite" > <block v-if="modelValue.favorite"> <image class="item-icon" :src="sheep.$url.static('/static/img/shop/goods/collect_1.gif')" mode="aspectFit" /> <view class="item-title">已收藏</view> </block> <block v-else> <image class="item-icon" :src="sheep.$url.static('/static/img/shop/goods/collect_0.png')" mode="aspectFit" /> <view class="item-title">收藏</view> </block> </view> <view v-if="serviceIcon" class="detail-tabbar-item ss-flex ss-flex-col ss-row-center ss-col-center" @tap="onChat" > <image class="item-icon" :src="sheep.$url.static('/static/img/shop/goods/message.png')" mode="aspectFit" /> <view class="item-title">客服</view> </view> <view v-if="shareIcon" class="detail-tabbar-item ss-flex ss-flex-col ss-row-center ss-col-center" @tap="showShareModal" > <image class="item-icon" :src="sheep.$url.static('/static/img/shop/goods/share.png')" mode="aspectFit" /> <view class="item-title">分享</view> </view> <slot></slot> </view> </view> </su-fixed></template>
<script setup> /** * * 底部导航 * * @property {String} bg - 背景颜色Class * @property {String} ui - 自定义样式Class * @property {Boolean} noFixed - 是否定位 * @property {Boolean} topRadius - 上圆角 */ import { reactive } from 'vue'; import sheep from '@/sheep'; import { showShareModal } from '@/sheep/hooks/useModal'; import FavoriteApi from '@/sheep/api/product/favorite';
// 数据
const state = reactive({});
// 接收参数
const props = defineProps({ modelValue: { type: Object, default() {}, }, bg: { type: String, default: 'bg-white', }, bgStyles: { type: Object, default() {}, }, ui: { type: String, default: '', },
noFixed: { type: Boolean, default: false, }, topRadius: { type: Number, default: 0, }, collectIcon: { type: Boolean, default: true, }, serviceIcon: { type: Boolean, default: true, }, shareIcon: { type: Boolean, default: true, }, });
async function onFavorite() { // 情况一:取消收藏
if (props.modelValue.favorite) { const { code } = await FavoriteApi.deleteFavorite(props.modelValue.id); if (code !== 0) { return } sheep.$helper.toast('取消收藏'); props.modelValue.favorite = false; // 情况二:添加收藏
} else { const { code } = await FavoriteApi.createFavorite(props.modelValue.id); if (code !== 0) { return } sheep.$helper.toast('收藏成功'); props.modelValue.favorite = true; } }
const onChat = () => { sheep.$router.go('/pages/chat/index', { id: props.modelValue.id, }); };</script>
<style lang="scss" scoped> .ui-tabbar-box { box-shadow: 0px -6px 10px 0px rgba(51, 51, 51, 0.2); } .ui-tabbar { display: flex; height: 50px; background: #fff;
.detail-tabbar-item { width: 100rpx;
.item-icon { width: 40rpx; height: 40rpx; }
.item-title { font-size: 20rpx; font-weight: 500; line-height: 20rpx; margin-top: 12rpx; } } }</style>
|