browse.vue 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <view class="bg-[var(--page-bg-color)] min-h-screen overflow-hidden" :style="themeColor()">
  3. <view class="px-[var(--sidebar-m)] py-[30rpx]" v-if="Object.values(browseData).length && !loading">
  4. <view class="mb-[30rpx] text-[var(--text-color-light6)] text-[26rpx] leading-[34rpx]">共{{browseTotal}}条,最多为您保存100条</view>
  5. <view class="mt-[20rpx]" v-for="(item,index) in browseData" :key="index">
  6. <view class="text-[36rpx] flex items-center font-700">{{ index }}</view>
  7. <view class="mt-[30rpx] flex flex-wrap box-border">
  8. <view class="w-[216rpx] rounded-[var(--goods-rounded-mid)] mr-[20rpx] mb-[40rpx]" v-for="(goodsItem, goodsIndex) in item" :key="goodsIndex" @click="toDetail(goodsItem)">
  9. <view class="relative w-[216rpx] h-[216rpx] rounded-[var(--goods-rounded-mid)] overflow-hidden">
  10. <u--image width="216rpx" height="216rpx" :radius="'var(--goods-rounded-mid)'" :src="img(goodsItem.goods_cover_thumb_mid ? goodsItem.goods_cover_thumb_mid : '')" mode="aspectFill">
  11. <template #error>
  12. <image class="w-[216rpx] h-[216rpx] rounded-[var(--goods-rounded-mid)] overflow-hidden" :src="img('static/resource/images/diy/shop_default.jpg')" mode="aspectFill"></image>
  13. </template>
  14. </u--image>
  15. <view class="absolute top-0 left-0 right-0 bottom-0 bg-[rgba(0,0,0,0.6)]" v-if="goodsItem.goods.delete_time > 0 ||goodsItem.goods.status != 1"></view>
  16. </view>
  17. <view class="mt-[20rpx] text-[24rpx]">
  18. <view v-if="goodsItem.goods.delete_time > 0">该商品已删除</view>
  19. <view v-else-if="goodsItem.goods.status != 1">该商品已下架</view>
  20. <view class="flex items-baseline price-font" v-else>
  21. ¥{{parseFloat(goodsItem.price).toFixed(2)}}
  22. </view>
  23. </view>
  24. </view>
  25. </view>
  26. </view>
  27. </view>
  28. <view class="empty-page" v-if="!Object.values(browseData).length && !loading">
  29. <image class="img" :src="img('static/resource/images/system/empty.png')" mode="aspectFit" />
  30. <view class="desc">暂无足迹</view>
  31. </view>
  32. <u-loading-page bg-color="rgb(248,248,248)" :loading="loading" loadingText=""></u-loading-page>
  33. </view>
  34. </template>
  35. <script setup lang="ts">
  36. import { ref } from 'vue';
  37. import { getBrowseList } from '@/addon/mall/api/goods';
  38. import { img, redirect } from '@/utils/common';
  39. let loading = ref<boolean>(true);
  40. const browseTotal = ref<number>(0);
  41. const browseData = ref<any>([]);
  42. const getBrowseListFn = () =>{
  43. loading.value = true;
  44. getBrowseList().then(res => {
  45. browseTotal.value = res.data.count;
  46. browseData.value = res.data.list;
  47. loading.value = false;
  48. }).catch(() => {
  49. loading.value = false;
  50. })
  51. }
  52. getBrowseListFn()
  53. const toDetail = (data) =>{
  54. redirect({url: '/addon/mall/pages/goods/detail', param: {goods_id:data.goods_id}})
  55. }
  56. </script>
  57. <style lang="scss" scoped>
  58. </style>