| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 | <!-- 商品详情的底部导航 --><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>
 |