Files
frontend-app/pages/supply_chain/supply_chain1.vue
T
2025-09-03 21:06:28 +08:00

360 lines
9.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="supply_chain_warp">
<view class="_header_warp">全球聚合供应链</view>
<!-- <view class="_content_warp"> -->
<up-swiper :list="swiperList" height="160" @change="e => currentNum = e.current" bgColor="#ffffff00">
<template #indicator>
<view class="indicator-num">
<text class="indicator-num__text">{{ currentNum + 1 }}/{{ swiperList.length }}</text>
</view>
</template>
</up-swiper>
<!-- 通知 -->
<view class="supply_chain_note_warp">
<up-image src="/static/common/note.png" width="16" height="16" bgColor="#f1f6ff00"></up-image>
<up-notice-bar :icon="false" bgColor="#F5F6F8FF" color="#000000E6"
text="壹点科技全球聚合供应链:整合京东、阿里、唯品会等一手供应链资源,支持API一键导入,为私域电商全品类货源提供一件代发服务。"></up-notice-bar>
</view>
<!-- 保障 -->
<view class="guarantee_warp">
<view class="guarantee_item_warp" v-for="(item, index) in guaranteeList" :key="index">
<view style="margin-top: 10rpx;">
<up-image :src="item.path" width="20" height="20" bgColor="#f1f6ff00"></up-image>
</view>
<view class="guarantee_item_content_warp">
<view class="title_">{{ item.title }}</view>
<view class="content_">{{ item.content }}</view>
</view>
</view>
</view>
<!-- 分类 -->
<view class="sort_warp">
<view class="sort_item_warp" v-for="(item, index) in sortList" :key="index" @click="sortFun(item)">
<up-image :src="item.path" width="30" height="30" bgColor="#f1f6ff00"></up-image>
<view class="sort_item_title_warp">{{ item.title }}</view>
</view>
</view>
<!-- 商品 -->
<view class="supply_chain_product_warp">
<view class="product_title">
<view class="product_title_msg">精选好物</view>
<view class="product_title_bg"></view>
</view>
<scroll-view scroll-y="true" @scrolltolower="loadMore" style="height:calc(100vh - 158px);margin-top: 10rpx;">
<view class="supply_chain_product_content" v-if="productList && productList.length !== 0">
<view class="product_content_item" v-for="item in productList" :key="item.id" @click="jumpInfo(item)">
<up-image :src="item.thumb" width="100%" height="140" bgColor="#f1f6ff00"></up-image>
<view class="product_content_item_content">
<view class="product_item_name">{{ item.title }}</view>
<view class="product_item_price">
<view class="price_">
<text>¥</text>
<text style="color:36rpx;">{{ item.price }}</text>
</view>
<view class="price_sell">已售{{ item.sales }}件</view>
</view>
</view>
</view>
</view>
<view v-else class="not_order_warp">
<up-image src="https://cex-pub.s3.ap-southeast-1.amazonaws.com/static/not_order.png" width="80" height="80"
bgColor="#f1f6ff00"></up-image>
<view class="not_order_msg_warp">还未添加商品哦~</view>
</view>
</scroll-view>
</view>
<!-- </view> -->
<!-- #ifndef H5 -->
<CustomTabBar :tabIndex="2" />
<!-- #endif -->
</view>
</template>
<script>
import { getCarouselImage } from '@/api/common.js';
import { APP_PAGE_TYPE } from '@/utils/enumUtils.js';
import CustomTabBar from '@/components/custom-tab-bar.vue';
export default {
components: { CustomTabBar },
data() {
return {
swiperList: ['https://cex-pub.s3.ap-southeast-1.amazonaws.com/static/banner01.png'],
currentNum: 0,
guaranteeList: [
{
path: '/static/supply_chain/pz.png',
title: '品质保障',
content: '100%正品',
}, {
path: '/static/supply_chain/ks.png',
title: '快速发货',
content: '48小时内送出',
}, {
path: '/static/supply_chain/sh.png',
title: '售后服务',
content: '快速响应',
}, {
path: '/static/supply_chain/th.png',
title: '退货无忧',
content: '七天无条件退货',
},
],
sortList: [
{
path: '/static/supply_chain/sort_fs.png',
title: '服饰鞋包',
category: "258,259,377"
}, {
path: '/static/supply_chain/sort_sm.png',
title: '数码家电',
category: "255,257"
}, {
path: '/static/supply_chain/sort_mz.png',
title: '美妆个护',
category: "278,279,280"
}, {
path: '/static/supply_chain/sort_sp.png',
title: '食品酒水',
category: "274,275"
}, {
path: '/static/supply_chain/sort_jj.png',
title: '家居生活',
category: "271"
}, {
path: '/static/supply_chain/sort_my.png',
title: '母婴用品',
category: "379"
}, {
path: '/static/supply_chain/sort_yd.png',
title: '运动户外',
category: "380"
}, {
path: '/static/supply_chain/sort_qc.png',
title: '汽车用品',
category: "389"
}, {
path: '/static/supply_chain/sort_ts.png',
title: '图书音像',
category: "385"
}, {
path: '/static/supply_chain/sort_bg.png',
title: '办公用品',
category: "386"
},
],
loading: false,
form: {
page: 1,
limit: 20,
app_id: "2024111300164927",
sign_type: "MD5",
sign: "d04be0cedd49608e758458325faecf90",
category: null,
},
productList: [],// 商品图
};
},
onLoad(option) {
this.searchGYLMall();
},
methods: {
/**
* 查询供应链的商品
*/
searchGYLMall() {
if (this.loading) return; // 如果正在加载,则不重复加载
this.loading = true; // 设置加载状态为true
try {
const params = this.form;
uni.request({
url: "https://cyysc.gscm.top/outside/1/atm/goods/list",
method: "get",
data: params,
header: {},
success: (res) => {
const data = res.data;
if (data && data.result === 1) {
const newData = data.data.data;
const newArr = newData.map(obj => {
const sales = Math.floor(Math.random() * 5000) + 700;
return { ...obj, sales: sales }; // 使用展开运算符添加新属性
});
this.productList = [...this.productList, ...newArr]; // 将新数据添加到列表中
this.form.page++;
}
},
fail: (error) => {
console.log("error", error);
},
});
} catch (error) {
console.error('加载数据失败:', error);
} finally {
this.loading = false; // 设置加载状态为false
}
},
/**
* 分类搜索
* @param {Object} item
*/
sortFun(item) {
this.productList = [];
this.form.page = 1;
this.form.category = item.category;
this.searchGYLMall(); // 加载更多数据
},
// 当滚动到底部时触发的方法
loadMore() {
this.searchGYLMall(); // 加载更多数据
},
/**
* 详情页面
*/
jumpInfo(item) {
uni.navigateTo({
url: '/pages/other_package/productInfo/productInfo?id=' + item.id + "&source=supply_chain",
})
}
}
}
</script>
<style lang="scss" scoped>
.supply_chain_warp {
height: calc(100vh - 140rpx);
overflow: auto;
background-color: $app-bj;
._header_warp {
margin-top: 60rpx;
height: 80rpx;
line-height: 80rpx;
background-color: $app-bj;
text-align: center;
}
.supply_chain_note_warp {
display: flex;
align-items: center;
padding: 0 0 0 30rpx;
}
.guarantee_warp {
display: flex;
justify-content: space-between;
align-items: center;
background: #FFFFFF;
padding: 10rpx 30rpx;
.guarantee_item_warp {
width: 25%;
display: flex;
align-items: center;
}
.guarantee_item_content_warp {
margin-left: 10rpx;
}
.title_ {
font-size: 18rpx;
color: rgba(0, 0, 0, 0.6);
}
.content_ {
font-size: 14rpx;
color: rgba(0, 0, 0, 0.26);
margin-top: 6rpx;
}
}
.sort_warp {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
padding: 30rpx 0;
.sort_item_warp {
width: 20%;
text-align: center;
margin-bottom: 10rpx;
}
.sort_item_title_warp {
font-size: 24rpx;
color: rgba(0, 0, 0, 0.9);
}
}
.supply_chain_product_warp {
padding: 0rpx 30rpx 0;
.product_title {
position: relative;
.product_title_msg {
position: relative;
font-family: AlimamaFangYuanTiVF-Medium, AlimamaFangYuanTiVF-Medium;
font-weight: normal;
font-size: 38rpx;
color: rgba(0, 0, 0, 0.9);
z-index: 2;
}
.product_title_bg {
position: absolute;
bottom: 0;
width: 113rpx;
height: 15rpx;
background: #FFA749FF;
border-radius: 8rpx;
z-index: 1;
}
}
.supply_chain_product_content {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
overflow: auto;
.product_content_item {
width: 48%;
background: #FFFFFF;
margin-bottom: 20rpx;
.product_content_item_content {
border-radius: 18rpx;
padding: 0 20rpx 20rpx;
}
.product_item_name {
font-weight: 500;
font-size: 30rpx;
color: rgba(0, 0, 0, 0.9);
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
.product_item_price {
font-size: 20rpx;
color: $app-zt-color;
display: flex;
justify-content: space-between;
margin-top: 10rpx;
.price_sell {
color: rgba(0, 0, 0, 0.26);
}
}
}
}
}
}
</style>