Browse Source

Merge remote-tracking branch 'origin/New2' into Xfy

pull/1/head
徐飞洋 2 months ago
parent
commit
ad043ecf76
  1. 3
      app.json
  2. 321
      pages/buyer/index.wxss
  3. 110
      pages/cooperation/index.js
  4. 4
      pages/cooperation/index.json
  5. 93
      pages/cooperation/index.wxml
  6. 207
      pages/cooperation/index.wxss
  7. 135
      pages/index/index.js
  8. 78
      pages/index/index.wxml
  9. 382
      pages/index/index.wxss
  10. 2
      project.private.config.json

3
app.json

@ -14,7 +14,8 @@
"pages/chat/index", "pages/chat/index",
"pages/chat-detail/index", "pages/chat-detail/index",
"pages/message-list/index", "pages/message-list/index",
"pages/customer-service/index" "pages/customer-service/index",
"pages/cooperation/index"
], ],
"subpackages": [ "subpackages": [
{ {

321
pages/buyer/index.wxss

@ -1,93 +1,100 @@
/* pages/buyer/index.wxss */ /* pages/buyer/index.wxss */
page {
height: 100vh;
display: flex;
flex-direction: column;
background: linear-gradient(180deg, #f8f8f8 0%, #f0f0f0 50%, #e8e8e8 100%);
margin: 0;
padding: 0;
}
.container { .container {
min-height: 100vh; min-height: 100vh;
background-color: #f5f5f5; width: 100%;
display: flex;
flex-direction: column;
box-sizing: border-box;
background-color: #f8f8f8;
padding: 0;
margin: 0;
} }
/* 搜索框样式 */ /* 搜索框样式 */
.search-bar { .search-bar {
position: fixed; width: 100%;
top: 0; margin: 20rpx;
left: 0; flex: 0 1 auto;
right: 0;
padding: 20rpx;
background-color: transparent;
z-index: 100;
box-sizing: border-box; box-sizing: border-box;
} }
.search-container { .search-container {
display: flex; display: flex;
align-items: center; align-items: center;
border: 1rpx solid rgba(0, 0, 0, 0.08); width: 100%;
border-radius: 40rpx; border-radius: 50rpx;
background-color: white; background: linear-gradient(135deg, #ffffff 0%, #f5f7fa 100%);
padding: 0 30rpx; padding: 6rpx;
margin: 0 auto; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.12);
width: 90%;
height: 80rpx;
box-sizing: border-box; box-sizing: border-box;
transition: all 0.3s ease; border: 1rpx solid rgba(22, 119, 255, 0.2);
}
.search-container:focus-within {
border-color: #07c160;
background-color: white;
box-shadow: 0 0 0 4rpx rgba(7, 193, 96, 0.1);
} }
.search-icon { .search-icon {
font-size: 30rpx; margin: 0 15rpx;
font-size: 28rpx;
color: #999; color: #999;
margin-right: 20rpx;
} }
.search-input { .search-input {
flex: 1; flex: 1;
font-size: 30rpx; height: 70rpx;
font-size: 28rpx;
color: #333; color: #333;
background-color: transparent; background: transparent;
border: none; border: none;
outline: none; outline: none;
height: 60rpx;
line-height: 60rpx;
} }
.search-input::placeholder { .search-input::placeholder {
color: #999; color: #999;
font-size: 30rpx; font-size: 28rpx;
} }
.clear-icon { .clear-icon {
font-size: 45rpx; font-size: 32rpx;
color: #26ba20ff; color: #999;
padding: 8rpx; padding: 10rpx 20rpx;
border-radius: 0;
background-color: transparent;
cursor: pointer;
transition: all 0.2s ease;
}
.clear-icon:hover {
background-color: transparent;
color: #666;
} }
.title { /* 商品列表样式 */
font-size: 36rpx; .goods-list {
font-weight: bold; flex: 1;
color: #333; padding: 20rpx 32rpx;
margin-bottom: 20rpx; overflow-y: auto;
width: 100%; -webkit-overflow-scrolling: touch;
text-align: center;
} }
.card { .card {
background: white; background: rgba(255, 255, 255, 0.82);
border-radius: 12rpx; backdrop-filter: blur(10rpx);
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1); -webkit-backdrop-filter: blur(10rpx);
border-radius: 20rpx;
overflow: hidden; overflow: hidden;
margin-bottom: 20rpx; box-shadow:
0 6rpx 24rpx rgba(0, 0, 0, 0.15),
0 0 0 1rpx rgba(0, 0, 0, 0.08),
inset 0 0 0 1rpx rgba(255, 255, 255, 0.95);
border: 2rpx solid rgba(200, 200, 200, 0.5);
margin-bottom: 16rpx;
transition: all 0.3s ease;
}
.card:hover {
transform: translateY(-4rpx);
box-shadow:
0 12rpx 32rpx rgba(0, 0, 0, 0.2),
0 0 0 2rpx rgba(0, 0, 0, 0.1),
inset 0 0 0 1rpx rgba(255, 255, 255, 1);
} }
.image-swiper { .image-swiper {
@ -95,6 +102,175 @@
height: 100%; height: 100%;
} }
/* 商品卡片内部布局 */
.goods-card-content {
display: flex;
width: 100%;
height: 200rpx;
}
.goods-image-section {
width: 40%;
position: relative;
height: 200rpx;
}
.goods-image {
width: 100%;
height: 100%;
}
.goods-image-placeholder {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background-color: #f5f5f5;
color: #999;
font-size: 24rpx;
}
.image-page-indicator {
position: absolute;
bottom: 10rpx;
right: 10rpx;
background-color: rgba(0, 0, 0, 0.5);
color: white;
padding: 4rpx 12rpx;
border-radius: 15rpx;
font-size: 20rpx;
}
.goods-info-section {
width: 60%;
display: flex;
flex-direction: column;
background: rgba(255, 255, 255, 0.5);
backdrop-filter: blur(5rpx);
border-left: 1rpx solid rgba(240, 240, 240, 0.8);
}
.goods-info-top {
flex: 0.6;
padding: 16rpx 20rpx;
display: flex;
flex-direction: column;
}
.goods-name-row {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8rpx;
margin-bottom: 8rpx;
}
.supply-tag {
font-size: 20rpx;
padding: 4rpx 10rpx;
border-radius: 8rpx;
font-weight: 600;
white-space: nowrap;
}
.supply-tag.spot {
background: rgba(82, 196, 26, 0.15);
color: #389e0d;
border: 1rpx solid rgba(82, 196, 26, 0.5);
}
.supply-tag.presale {
background: rgba(255, 154, 28, 0.15);
color: #d46b08;
border: 1rpx solid rgba(255, 154, 28, 0.5);
}
.auth-badge {
font-size: 20rpx;
padding: 4rpx 10rpx;
background: linear-gradient(135deg, #4a90e2 0%, #2b66f0 50%, #1a4bbd 100%);
color: white;
clip-path: polygon(50% 0%, 70% 10%, 100% 30%, 100% 70%, 70% 90%, 50% 100%, 30% 90%, 0% 70%, 0% 30%, 30% 10%);
font-weight: bold;
}
.goods-name {
font-size: 30rpx;
font-weight: bold;
color: #333;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
}
.goods-spec {
font-size: 24rpx;
color: #888;
margin-top: 8rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.goods-info-bottom {
flex: 0.4;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20rpx;
border-top: 1rpx solid rgba(240, 240, 240, 0.5);
}
.favorite-count {
display: flex;
align-items: center;
font-size: 24rpx;
color: #999;
}
.favorite-count .count {
color: #d865d8;
font-weight: bold;
margin: 0 6rpx;
}
.favorite-button {
font-size: 22rpx;
font-weight: 600;
width: 120rpx;
height: 50rpx;
border-radius: 25rpx;
display: flex;
justify-content: center;
align-items: center;
padding: 0;
border: none;
transition: all 0.3s ease;
}
.favorite-button.add {
color: #1677ff;
background: rgba(22, 119, 255, 0.15);
border: 1rpx solid rgba(22, 119, 255, 0.3);
}
.favorite-button.add:hover {
background: rgba(22, 119, 255, 0.25);
}
.favorite-button.add:active {
transform: scale(0.95);
}
.favorite-button.canceled {
color: #ff6b6b;
background: rgba(255, 107, 107, 0.15);
border: 1rpx solid rgba(255, 107, 107, 0.3);
}
/* 弹窗样式 */ /* 弹窗样式 */
.modal-overlay { .modal-overlay {
position: fixed; position: fixed;
@ -144,15 +320,15 @@
padding: 0; padding: 0;
border-radius: 20rpx 20rpx 0 0; border-radius: 20rpx 20rpx 0 0;
width: 100%; width: 100%;
height: 100vh; /* 改为全屏高度 */ height: 100vh;
max-height: 100vh; /* 确保不超过屏幕高度 */ max-height: 100vh;
overflow: hidden; overflow: hidden;
box-shadow: 0 -8rpx 40rpx rgba(0, 0, 0, 0.15); box-shadow: 0 -8rpx 40rpx rgba(0, 0, 0, 0.15);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin-bottom: 0; /* 导航栏已隐藏,无需间距 */ margin-bottom: 0;
z-index: 9999; z-index: 9999;
position: absolute; /* 确保弹窗位于遮罩层内 */ position: absolute;
top: 0; top: 0;
left: 0; left: 0;
} }
@ -194,13 +370,13 @@
padding: 40rpx; padding: 40rpx;
overflow-y: auto; overflow-y: auto;
flex: 1; flex: 1;
height: calc(100vh - 120rpx); /* 减去头部高度,实现全屏滚动 */ height: calc(100vh - 120rpx);
-webkit-overflow-scrolling: touch; /* 优化iOS滚动体验 */ -webkit-overflow-scrolling: touch;
width: 100%; /* 确保宽度100% */ width: 100%;
box-sizing: border-box; /* 确保padding不影响宽度计算 */ box-sizing: border-box;
} }
.goods-image-section { .goods-image-section-detail {
margin-bottom: 40rpx; margin-bottom: 40rpx;
border-radius: 12rpx; border-radius: 12rpx;
overflow: hidden; overflow: hidden;
@ -217,17 +393,11 @@
height: 100%; height: 100%;
} }
.goods-image { .goods-info-section-detail {
width: 100%;
height: 100%;
display: block;
}
.goods-info-section {
text-align: left; text-align: left;
} }
.goods-name { .goods-name-detail {
font-size: 36rpx; font-size: 36rpx;
font-weight: 600; font-weight: 600;
color: #2c3e50; color: #2c3e50;
@ -612,3 +782,16 @@ button:after {
padding: 24rpx 0; padding: 24rpx 0;
border: 2rpx solid #e5e5e5; border: 2rpx solid #e5e5e5;
} }
/* 已加载全部提示 */
.load-complete {
display: flex;
justify-content: center;
align-items: flex-start;
padding-top: 20rpx;
}
.load-complete text {
color: #999;
font-size: 26rpx;
}

110
pages/cooperation/index.js

@ -0,0 +1,110 @@
// pages/cooperation/index.js
Page({
/**
* 页面的初始数据
*/
data: {
// 页面数据可以在这里定义
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
// 页面加载时的初始化操作
console.log('招商合作页面加载');
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
// 页面初次渲染完成时的操作
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
// 页面显示时的操作
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
// 页面隐藏时的操作
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
// 页面卸载时的操作
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
// 下拉刷新时的操作
wx.stopPullDownRefresh();
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
// 上拉触底时的操作
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
// 分享时的配置
return {
title: '招商合作 - 又鸟蛋平台',
path: '/pages/cooperation/index',
imageUrl: ''
};
},
/**
* 拨打电话
*/
makePhoneCall: function () {
wx.makePhoneCall({
phoneNumber: '138XXXXXXXX',
success: function () {
console.log('拨打电话成功');
},
fail: function (error) {
console.error('拨打电话失败:', error);
wx.showToast({
title: '拨打电话失败,请稍后重试',
icon: 'none'
});
}
});
},
/**
* 跳转到立即合作页面
*/
navigateToSettlement: function () {
wx.navigateTo({
url: '/pages/settlement/index',
success: function () {
console.log('成功跳转到立即合作页面');
},
fail: function (error) {
console.error('跳转到立即合作页面失败:', error);
wx.showToast({
title: '跳转失败,请稍后重试',
icon: 'none'
});
}
});
}
});

4
pages/cooperation/index.json

@ -0,0 +1,4 @@
{
"navigationBarTitleText": "招商合作",
"usingComponents": {}
}

93
pages/cooperation/index.wxml

@ -0,0 +1,93 @@
<view class="cooperation-container">
<!-- 页面标题 -->
<view class="page-title">
<text>招商合作</text>
</view>
<!-- 招商广告区域 -->
<view class="ad-section">
<view class="ad-title">
<text>诚邀合作伙伴</text>
</view>
<view class="ad-content">
<view class="ad-item">
<view class="ad-icon">🤝</view>
<view class="ad-text">
<view class="ad-item-title">成为我们的供应商</view>
<view class="ad-item-desc">加入我们的供应链体系,共享平台资源,实现互利共赢</view>
</view>
</view>
<view class="ad-item">
<view class="ad-icon">📈</view>
<view class="ad-text">
<view class="ad-item-title">海量订单支持</view>
<view class="ad-item-desc">平台拥有稳定的客户群体,为您提供持续的订单保障</view>
</view>
</view>
<view class="ad-item">
<view class="ad-icon">🚚</view>
<view class="ad-text">
<view class="ad-item-title">完善的物流体系</view>
<view class="ad-item-desc">专业的物流配送团队,确保货物安全及时送达</view>
</view>
</view>
<view class="ad-item">
<view class="ad-icon">📊</view>
<view class="ad-text">
<view class="ad-item-title">数据分析支持</view>
<view class="ad-item-desc">提供详细的销售数据和市场分析,助力您的业务决策</view>
</view>
</view>
</view>
</view>
<!-- 合作优势区域 -->
<view class="advantage-section">
<view class="section-title">合作优势</view>
<view class="advantage-grid">
<view class="advantage-item">
<view class="advantage-icon">💪</view>
<view class="advantage-text">品牌支持</view>
</view>
<view class="advantage-item">
<view class="advantage-icon">💰</view>
<view class="advantage-text">灵活结算</view>
</view>
<view class="advantage-item">
<view class="advantage-icon">📱</view>
<view class="advantage-text">智能管理</view>
</view>
<view class="advantage-item">
<view class="advantage-icon">👥</view>
<view class="advantage-text">专属客服</view>
</view>
</view>
</view>
<!-- 联系方式区域 -->
<view class="contact-section">
<view class="section-title">联系方式</view>
<view class="contact-info">
<view class="contact-item">
<view class="contact-label">联系电话:</view>
<view class="contact-value" bindtap="makePhoneCall">138-XXXX-XXXX</view>
</view>
<view class="contact-item">
<view class="contact-label">电子邮箱:</view>
<view class="contact-value">cooperation@example.com</view>
</view>
<view class="contact-item">
<view class="contact-label">联系地址:</view>
<view class="contact-value">上海市浦东新区XX路XX号</view>
</view>
</view>
<!-- 立即合作按钮 -->
<button class="cooperate-btn" bindtap="navigateToSettlement">立即合作</button>
</view>
<!-- 底部提示 -->
<view class="bottom-tip">
<text>如有任何疑问,欢迎随时联系我们</text>
</view>
</view>

207
pages/cooperation/index.wxss

@ -0,0 +1,207 @@
/* 页面容器 */
.cooperation-container {
padding: 20rpx;
background-color: #f5f5f5;
min-height: 100vh;
}
/* 页面标题 */
.page-title {
text-align: center;
font-size: 36rpx;
font-weight: bold;
color: #333;
margin: 30rpx 0;
}
/* 广告区域 */
.ad-section {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
}
.ad-title {
font-size: 32rpx;
font-weight: bold;
color: #ff6b81;
margin-bottom: 20rpx;
text-align: center;
}
.ad-content {
display: flex;
flex-direction: column;
gap: 20rpx;
}
.ad-item {
display: flex;
align-items: flex-start;
gap: 20rpx;
padding: 20rpx;
background-color: #f9f9f9;
border-radius: 12rpx;
}
.ad-icon {
font-size: 48rpx;
margin-top: 8rpx;
}
.ad-text {
flex: 1;
}
.ad-item-title {
font-size: 28rpx;
font-weight: bold;
color: #333;
margin-bottom: 8rpx;
}
.ad-item-desc {
font-size: 24rpx;
color: #666;
line-height: 1.5;
}
/* 合作优势区域 */
.advantage-section {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
}
.section-title {
font-size: 30rpx;
font-weight: bold;
color: #333;
margin-bottom: 20rpx;
text-align: center;
}
.advantage-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20rpx;
}
.advantage-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 10rpx;
padding: 20rpx;
background-color: #f9f9f9;
border-radius: 12rpx;
transition: transform 0.3s ease;
}
.advantage-item:active {
transform: scale(0.98);
}
.advantage-icon {
font-size: 48rpx;
}
.advantage-text {
font-size: 24rpx;
color: #333;
font-weight: 500;
}
/* 联系方式区域 */
.contact-section {
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
}
.contact-info {
display: flex;
flex-direction: column;
gap: 16rpx;
margin-bottom: 30rpx;
}
.contact-item {
display: flex;
align-items: center;
gap: 12rpx;
padding: 16rpx;
background-color: #f9f9f9;
border-radius: 12rpx;
}
.contact-label {
font-size: 26rpx;
color: #666;
width: 180rpx;
}
.contact-value {
font-size: 26rpx;
color: #333;
flex: 1;
}
.contact-value:active {
color: #ff6b81;
}
/* 立即合作按钮 */
.cooperate-btn {
background-color: #ff6b81;
color: #fff;
font-size: 28rpx;
font-weight: bold;
border-radius: 50rpx;
height: 80rpx;
line-height: 80rpx;
margin: 0;
box-shadow: 0 4rpx 12rpx rgba(255, 107, 129, 0.3);
}
.cooperate-btn:active {
background-color: #ff526c;
transform: scale(0.98);
}
/* 底部提示 */
.bottom-tip {
text-align: center;
font-size: 22rpx;
color: #999;
margin: 30rpx 0;
}
/* 响应式设计 */
@media (max-width: 768rpx) {
.advantage-grid {
grid-template-columns: 1fr;
}
.ad-item {
flex-direction: column;
align-items: center;
text-align: center;
}
.contact-item {
flex-direction: column;
align-items: flex-start;
gap: 8rpx;
}
.contact-label {
width: auto;
}
}

135
pages/index/index.js

@ -20,6 +20,7 @@ Page({
startY: 0, startY: 0,
currentY: 0, currentY: 0,
sidebarBtnTop: 500, // 初始位置,单位rpx sidebarBtnTop: 500, // 初始位置,单位rpx
sidebarBtnHidden: false, // 按钮是否隐藏到侧边栏
// 搜索相关 // 搜索相关
searchKeyword: '', searchKeyword: '',
@ -30,6 +31,9 @@ Page({
// 商品相关 // 商品相关
goods: [], goods: [],
filteredGoods: [], filteredGoods: [],
groupedGoods: [],
leftColumnGoods: [],
rightColumnGoods: [],
selectedCategory: '全部', selectedCategory: '全部',
loadingMore: false, loadingMore: false,
hasMoreData: true, hasMoreData: true,
@ -78,15 +82,15 @@ Page({
}); });
}, },
// 跳转到立即入驻页面 // 跳转到我要卖蛋页面
navigateToSettlement() { navigateToSettlement() {
wx.navigateTo({ wx.navigateTo({
url: '/pages/settlement/index', url: '/pages/settlement/index',
success: function() { success: function() {
console.log('成功跳转到立即入驻页面'); console.log('成功跳转到我要卖蛋页面');
}, },
fail: function(error) { fail: function(error) {
console.error('跳转到立即入驻页面失败:', error); console.error('跳转到我要卖蛋页面失败:', error);
wx.showToast({ wx.showToast({
title: '跳转失败,请稍后重试', title: '跳转失败,请稍后重试',
icon: 'none' icon: 'none'
@ -105,6 +109,13 @@ Page({
}); });
}, },
// 切换按钮显示/隐藏到侧边栏
toggleSidebarBtn() {
this.setData({
sidebarBtnHidden: !this.data.sidebarBtnHidden
});
},
// 触摸开始事件 // 触摸开始事件
handleTouchStart(e) { handleTouchStart(e) {
this.setData({ this.setData({
@ -269,13 +280,14 @@ Page({
(reservedCountValue !== undefined && reservedCountValue !== null ? reservedCountValue : (reservedCountValue !== undefined && reservedCountValue !== null ? reservedCountValue :
(reservationCountValue || 0)); (reservationCountValue || 0));
// 转换supplyStatus字段值 // 货源情况 - 直接显示数据库字段值
let supplyStatusValue = product.supplyStatus || ''; let supplyStatusValue = product.supplyStatus || '';
if (['平台货源', '三方认证'].includes(supplyStatusValue)) {
supplyStatusValue = '现货'; // 认证状态 - 直接显示数据库的sourceType字段值
} else if (supplyStatusValue === '三方未认证') { let sourceTypeValue = product.sourceType || '';
supplyStatusValue = '预售';
} // 处理议价状态 - 全部显示可议价
let negotiateValue = '可议价';
// 处理图片URL,确保imageUrls字段存在且为数组 // 处理图片URL,确保imageUrls字段存在且为数组
const imageUrls = product.imageUrls || product.images || []; const imageUrls = product.imageUrls || product.images || [];
@ -294,7 +306,8 @@ Page({
product_contact: product.product_contact || '', product_contact: product.product_contact || '',
contact_phone: product.contact_phone || '', contact_phone: product.contact_phone || '',
supplyStatus: supplyStatusValue, supplyStatus: supplyStatusValue,
sourceType: product.sourceType || '', sourceType: sourceTypeValue,
negotiateStatus: negotiateValue,
isReserved: false, isReserved: false,
isFavorite: false, isFavorite: false,
currentImageIndex: 0, currentImageIndex: 0,
@ -321,6 +334,8 @@ Page({
// 应用筛选条件 // 应用筛选条件
const filteredGoods = this.applyFilters(updatedGoods) const filteredGoods = this.applyFilters(updatedGoods)
const groupedGoods = this.groupGoodsForStaggeredLayout(filteredGoods)
const { leftColumnGoods, rightColumnGoods } = this.distributeToColumns(filteredGoods)
// 计算是否还有更多数据 // 计算是否还有更多数据
const totalGoods = res.total || 0; const totalGoods = res.total || 0;
@ -330,6 +345,9 @@ Page({
this.setData({ this.setData({
goods: updatedGoods, goods: updatedGoods,
filteredGoods: filteredGoods, filteredGoods: filteredGoods,
groupedGoods: groupedGoods,
leftColumnGoods: leftColumnGoods,
rightColumnGoods: rightColumnGoods,
loadingMore: false, loadingMore: false,
page: currentPage + 1, page: currentPage + 1,
hasMoreData: hasMoreData, hasMoreData: hasMoreData,
@ -431,6 +449,75 @@ Page({
return filtered return filtered
}, },
// 分组商品用于交错布局(左长右短,左短右长交替)
groupGoodsForStaggeredLayout: function(goods) {
if (!goods || goods.length === 0) {
return []
}
const grouped = []
const len = goods.length
for (let i = 0; i < len; i += 2) {
const row = []
// 第一个商品:如果是偶数行(index为偶数),则是长商品;如果是奇数行,则是短商品
if (i < len) {
row.push({
...goods[i],
isLong: i % 2 === 0 // 偶数索引为长商品
})
}
// 第二个商品:与第一个相反
if (i + 1 < len) {
row.push({
...goods[i + 1],
isLong: i % 2 !== 0 // 奇数索引为长商品
})
}
grouped.push(row)
}
return grouped
},
// 瀑布流布局:将商品分配到左右两列
// 规则:左长右短 -> 左短右长 交替排列
// 偶数行(0,2,4...):左长右短
// 奇数行(1,3,5...):左短右长
distributeToColumns: function(goods) {
if (!goods || goods.length === 0) {
return { leftColumnGoods: [], rightColumnGoods: [] }
}
const leftColumn = []
const rightColumn = []
const rowCount = Math.ceil(goods.length / 2)
for (let i = 0; i < goods.length; i += 2) {
const currentRow = Math.floor(i / 2)
const isEvenRow = currentRow % 2 === 0
if (i < goods.length) {
leftColumn.push({
...goods[i],
isLong: isEvenRow // 偶数行左边为长,奇数行左边为短
})
}
if (i + 1 < goods.length) {
rightColumn.push({
...goods[i + 1],
isLong: !isEvenRow // 偶数行右边为短,奇数行右边为长
})
}
}
return { leftColumnGoods: leftColumn, rightColumnGoods: rightColumn }
},
// 搜索输入 // 搜索输入
onSearchInput: function(e) { onSearchInput: function(e) {
this.setData({ this.setData({
@ -447,8 +534,13 @@ Page({
} }
const filteredGoods = this.applyFilters(this.data.goods) const filteredGoods = this.applyFilters(this.data.goods)
const groupedGoods = this.groupGoodsForStaggeredLayout(filteredGoods)
const { leftColumnGoods, rightColumnGoods } = this.distributeToColumns(filteredGoods)
this.setData({ this.setData({
filteredGoods: filteredGoods filteredGoods: filteredGoods,
groupedGoods: groupedGoods,
leftColumnGoods: leftColumnGoods,
rightColumnGoods: rightColumnGoods
}) })
}, },
@ -476,8 +568,13 @@ Page({
} }
const filteredGoods = this.applyFilters(this.data.goods) const filteredGoods = this.applyFilters(this.data.goods)
const groupedGoods = this.groupGoodsForStaggeredLayout(filteredGoods)
const { leftColumnGoods, rightColumnGoods } = this.distributeToColumns(filteredGoods)
this.setData({ this.setData({
filteredGoods: filteredGoods, filteredGoods: filteredGoods,
groupedGoods: groupedGoods,
leftColumnGoods: leftColumnGoods,
rightColumnGoods: rightColumnGoods,
showRegionPicker: false showRegionPicker: false
}) })
}, },
@ -501,8 +598,13 @@ Page({
}) })
const filteredGoods = this.applyFilters(this.data.goods) const filteredGoods = this.applyFilters(this.data.goods)
const groupedGoods = this.groupGoodsForStaggeredLayout(filteredGoods)
const { leftColumnGoods, rightColumnGoods } = this.distributeToColumns(filteredGoods)
this.setData({ this.setData({
filteredGoods: filteredGoods filteredGoods: filteredGoods,
groupedGoods: groupedGoods,
leftColumnGoods: leftColumnGoods,
rightColumnGoods: rightColumnGoods
}) })
}, },
@ -528,13 +630,20 @@ Page({
}) })
}, },
// 跳转到入驻页面 // 跳转到我要卖蛋页面
navigateToSettlement: function() { navigateToSettlement: function() {
wx.navigateTo({ wx.navigateTo({
url: '/pages/settlement/index' url: '/pages/settlement/index'
}) })
}, },
// 跳转到招商合作页面
navigateToCooperation: function() {
wx.navigateTo({
url: '/pages/cooperation/index'
})
},
// 预览图片 // 预览图片
previewImage: function(e) { previewImage: function(e) {
// 阻止事件冒泡,避免触发商品点击事件 // 阻止事件冒泡,避免触发商品点击事件

78
pages/index/index.wxml

@ -87,17 +87,24 @@
<!-- 侧边栏按钮 --> <!-- 侧边栏按钮 -->
<view <view
class="sidebar-btn" class="sidebar-btn {{sidebarBtnHidden ? 'hidden' : ''}}"
style="top: {{sidebarBtnTop}}rpx;" style="top: {{sidebarBtnTop}}rpx;"
bindtap="toggleSidebar"
bindtouchstart="handleTouchStart" bindtouchstart="handleTouchStart"
bindtouchmove="handleTouchMove" bindtouchmove="handleTouchMove"
bindtouchend="handleTouchEnd" bindtouchend="handleTouchEnd"
> >
<!-- 侧边栏内容区域 -->
<view class="sidebar-btn-content" bindtap="toggleSidebar">
<text class="sidebar-icon">☰</text> <text class="sidebar-icon">☰</text>
<text class="sidebar-text">招商入驻</text> <text class="sidebar-text">招商入驻</text>
</view> </view>
<!-- 箭头按钮 -->
<view class="sidebar-arrow" bindtap="toggleSidebarBtn">
<text class="arrow-icon {{sidebarBtnHidden ? 'arrow-right' : 'arrow-left'}}">▶</text>
</view>
</view>
<!-- 侧边栏弹出层 --> <!-- 侧边栏弹出层 -->
<view wx:if="{{showSidebar}}" class="sidebar-overlay" bindtap="toggleSidebar"></view> <view wx:if="{{showSidebar}}" class="sidebar-overlay" bindtap="toggleSidebar"></view>
<view wx:if="{{showSidebar}}" class="sidebar"> <view wx:if="{{showSidebar}}" class="sidebar">
@ -105,13 +112,9 @@
<view class="sidebar-menu"> <view class="sidebar-menu">
<view class="sidebar-item" bindtap="navigateToSettlement"> <view class="sidebar-item" bindtap="navigateToSettlement">
<text class="sidebar-item-icon">🏠</text> <text class="sidebar-item-icon">🏠</text>
<text class="sidebar-item-text">立即入驻</text> <text class="sidebar-item-text">我要卖蛋</text>
</view>
<view class="sidebar-item" bindtap="navigateToSettlement">
<text class="sidebar-item-icon">🤝</text>
<text class="sidebar-item-text">成为供应商</text>
</view> </view>
<view class="sidebar-item" bindtap="navigateToSettlement"> <view class="sidebar-item" bindtap="navigateToCooperation">
<text class="sidebar-item-icon">📢</text> <text class="sidebar-item-icon">📢</text>
<text class="sidebar-item-text">招商合作</text> <text class="sidebar-item-text">招商合作</text>
</view> </view>
@ -133,14 +136,54 @@
style="height: calc(100% - 60rpx);" style="height: calc(100% - 60rpx);"
> >
<view class="goods-list-container"> <view class="goods-list-container">
<view class="waterfall-container">
<view class="waterfall-column left-column">
<view
class="goods-item {{item.isLong ? 'long-card' : 'short-card'}}"
wx:for="{{leftColumnGoods}}"
wx:key="id"
data-item="{{item}}"
bindtap="viewGoodsDetail"
>
<view class="goods-card">
<view class="goods-image-container">
<image
class="goods-image"
src="{{item.imageUrls && item.imageUrls.length > 0 ? item.imageUrls[0] : '/images/default-avatar.png'}}"
mode="aspectFill"
bindtap="previewImage"
data-item="{{item}}"
data-index="0"
></image>
</view>
<view class="goods-info">
<view class="goods-name">{{item.name}}</view>
<view class="goods-spec">{{item.specification || '无'}} | {{item.yolk || '无'}}</view>
<view class="goods-status-row">
<view class="status-tag supply-{{item.supplyStatus === '预售' ? 'presale' : 'spot'}}">{{item.supplyStatus || ''}}</view>
<view class="status-tag source-{{item.sourceType ? 'yes' : 'no'}}">{{item.sourceType || ''}}</view>
<view class="status-tag negotiate-{{item.negotiateStatus === '可议价' ? 'yes' : 'no'}}">{{item.negotiateStatus}}</view>
</view>
<view class="goods-footer">
<view class="goods-region-bg">
<view class="goods-region">{{item.region}}</view>
</view>
<view class="goods-reserved">已有{{item.reservedCount || 0}}人收藏</view>
</view>
</view>
</view>
</view>
</view>
<view class="waterfall-column right-column">
<view <view
wx:for="{{filteredGoods}}" class="goods-item {{item.isLong ? 'long-card' : 'short-card'}}"
wx:for="{{rightColumnGoods}}"
wx:key="id" wx:key="id"
class="goods-item"
data-item="{{item}}" data-item="{{item}}"
bindtap="viewGoodsDetail" bindtap="viewGoodsDetail"
> >
<!-- 商品图片 --> <view class="goods-card">
<view class="goods-image-container"> <view class="goods-image-container">
<image <image
class="goods-image" class="goods-image"
@ -150,19 +193,26 @@
data-item="{{item}}" data-item="{{item}}"
data-index="0" data-index="0"
></image> ></image>
<view class="goods-tag">{{item.supplyStatus || '现货'}}</view>
</view> </view>
<!-- 商品信息 -->
<view class="goods-info"> <view class="goods-info">
<view class="goods-name">{{item.name}}</view> <view class="goods-name">{{item.name}}</view>
<view class="goods-spec">{{item.specification || '无'}} | {{item.yolk || '无'}}</view> <view class="goods-spec">{{item.specification || '无'}} | {{item.yolk || '无'}}</view>
<view class="goods-price">¥{{item.price}}</view> <view class="goods-status-row">
<view class="status-tag supply-{{item.supplyStatus === '预售' ? 'presale' : 'spot'}}">{{item.supplyStatus || ''}}</view>
<view class="status-tag source-{{item.sourceType ? 'yes' : 'no'}}">{{item.sourceType || ''}}</view>
<view class="status-tag negotiate-{{item.negotiateStatus === '可议价' ? 'yes' : 'no'}}">{{item.negotiateStatus}}</view>
</view>
<view class="goods-footer"> <view class="goods-footer">
<view class="goods-region-bg">
<view class="goods-region">{{item.region}}</view> <view class="goods-region">{{item.region}}</view>
</view>
<view class="goods-reserved">已有{{item.reservedCount || 0}}人收藏</view> <view class="goods-reserved">已有{{item.reservedCount || 0}}人收藏</view>
</view> </view>
</view> </view>
</view> </view>
</view>
</view>
</view>
<!-- 无商品时显示 --> <!-- 无商品时显示 -->
<view wx:if="{{filteredGoods.length === 0}}" class="empty-goods"> <view wx:if="{{filteredGoods.length === 0}}" class="empty-goods">

382
pages/index/index.wxss

@ -3,7 +3,7 @@ page {
height: 100vh; height: 100vh;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); background: linear-gradient(180deg, #f8f8f8 0%, #f0f0f0 50%, #e8e8e8 100%);
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
@ -13,10 +13,10 @@ page {
margin: 0; margin: 0;
width: 100%; width: 100%;
height: 100vh; height: 100vh;
display: flex;z display: flex;
flex-direction: column; flex-direction: column;
box-sizing: border-box; box-sizing: border-box;
background-color: #f5f7fa; background-color: #f8f8f8;
} }
/* 标题样式 */ /* 标题样式 */
@ -192,106 +192,144 @@ page {
.category-scroll { .category-scroll {
display: flex; display: flex;
gap: 15rpx; gap: 16rpx;
padding: 8rpx 15rpx; padding: 12rpx 16rpx;
white-space: nowrap; white-space: nowrap;
overflow-x: auto; overflow-x: auto;
background-color: transparent; background: rgba(255, 255, 255, 0.5);
border-radius: 10rpx; backdrop-filter: blur(10rpx);
box-shadow: none; -webkit-backdrop-filter: blur(10rpx);
border-radius: 40rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08);
border: 1rpx solid rgba(255, 255, 255, 0.5);
} }
/* 蛋形样式 - 玻璃质感 */
.egg-item { .egg-item {
position: relative; position: relative;
width: 80rpx; padding: 16rpx 28rpx;
height: 100rpx; background: rgba(255, 255, 255, 0.7);
background-color: rgba(255, 255, 255, 0.3); backdrop-filter: blur(8rpx);
backdrop-filter: blur(10rpx); -webkit-backdrop-filter: blur(8rpx);
border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; border-radius: 30rpx;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
transition: all 0.3s ease; transition: all 0.3s ease;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.08);
border: 1rpx solid rgba(255, 255, 255, 0.5); border: 1rpx solid rgba(200, 200, 200, 0.5);
flex-shrink: 0; flex-shrink: 0;
} }
/* 不同品种的颜色 */
.egg-item:nth-child(2) { /* 粉壳 */
background-color: rgba(255, 182, 193, 0.3);
border-color: rgba(255, 182, 193, 0.7);
}
.egg-item:nth-child(3) { /* 红壳 */
background-color: rgba(255, 105, 180, 0.3);
border-color: rgba(255, 105, 180, 0.7);
}
.egg-item:nth-child(4) { /* 绿壳 */
background-color: rgba(144, 238, 144, 0.3);
border-color: rgba(144, 238, 144, 0.7);
}
.egg-item:nth-child(5) { /* 白壳 */
background-color: rgba(245, 245, 245, 0.5);
border-color: rgba(245, 245, 245, 0.8);
}
.egg-item.active { .egg-item.active {
background-color: rgba(22, 119, 255, 0.4); background: linear-gradient(135deg, #1677ff 0%, #4096ff 100%);
border-color: rgba(22, 119, 255, 0.8); color: white;
box-shadow: 0 4rpx 16rpx rgba(22, 119, 255, 0.3); box-shadow: 0 4rpx 16rpx rgba(22, 119, 255, 0.35);
transform: scale(1.05); border: 1rpx solid transparent;
transform: translateY(-2rpx);
} }
.egg-inner { .egg-inner {
font-size: 22rpx; font-size: 26rpx;
color: #333; color: #555;
font-weight: bold; font-weight: 600;
text-align: center; text-align: center;
white-space: nowrap;
} }
.egg-item.active .egg-inner { .egg-item.active .egg-inner {
color: #1677ff; color: #ffffff;
font-size: 24rpx; font-size: 28rpx;
} }
/* 侧边栏按钮样式 */ /* 侧边栏按钮样式 - 白色半透明毛玻璃质感 */
.sidebar-btn { .sidebar-btn {
position: fixed; position: fixed;
left: 20rpx; left: 20rpx;
z-index: 999; z-index: 999;
width: 80rpx; width: 120rpx;
height: 80rpx; height: 80rpx;
background-color: #1677ff; background-color: rgba(255, 255, 255, 0.85); /* 白色半透明 */
backdrop-filter: blur(10rpx); /* 毛玻璃效果 */
-webkit-backdrop-filter: blur(10rpx); /* 兼容iOS */
border-radius: 40rpx; border-radius: 40rpx;
display: flex; display: flex;
flex-direction: column; justify-content: space-between;
justify-content: center;
align-items: center; align-items: center;
box-shadow: 0 4rpx 16rpx rgba(22, 119, 255, 0.3); box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.15); /* 柔和阴影 */
transition: all 0.3s ease; transition: all 0.3s ease;
border: 2rpx solid #fff; border: 1rpx solid rgba(255, 255, 255, 0.5); /* 半透明白色边框 */
touch-action: none; /* 禁用浏览器默认的触摸行为 */ touch-action: none; /* 禁用浏览器默认的触摸行为 */
} }
.sidebar-btn:hover { .sidebar-btn:hover {
transform: scale(1.1); transform: scale(1.05);
box-shadow: 0 6rpx 20rpx rgba(22, 119, 255, 0.4); box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.2); /* 增强阴影 */
background-color: rgba(255, 255, 255, 0.95); /* 提高透明度 */
}
/* 侧边栏按钮隐藏状态 */
.sidebar-btn.hidden {
left: -80rpx;
transform: scale(1);
opacity: 1;
background-color: rgba(255, 255, 255, 0.85);
}
/* 侧边栏按钮内容区域 */
.sidebar-btn-content {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
padding-left: 10rpx;
} }
.sidebar-icon { .sidebar-icon {
font-size: 32rpx; font-size: 32rpx;
color: white; color: #333; /* 深色文字 */
font-weight: bold; font-weight: bold;
} }
.sidebar-text { .sidebar-text {
font-size: 16rpx; font-size: 16rpx;
color: white; color: #666; /* 中深色文字 */
font-weight: 500;
}
/* 箭头按钮 */
.sidebar-arrow {
width: 40rpx;
height: 80rpx;
background-color: rgba(0, 0, 0, 0.05); /* 淡灰色背景 */
border-radius: 0 40rpx 40rpx 0;
display: flex;
justify-content: center;
align-items: center;
transition: all 0.3s ease;
cursor: pointer;
}
.sidebar-arrow:hover {
background-color: rgba(0, 0, 0, 0.1); /* 加深背景色 */
}
/* 箭头图标 */
.arrow-icon {
font-size: 20rpx;
color: #666; /* 深色箭头 */
font-weight: bold; font-weight: bold;
transition: transform 0.3s ease, color 0.3s ease;
display: inline-block;
}
.arrow-icon.arrow-left {
transform: rotate(0deg);
}
.arrow-icon.arrow-right {
transform: rotate(180deg);
} }
/* 侧边栏样式 */ /* 侧边栏样式 */
@ -395,25 +433,105 @@ page {
} }
.goods-list-container { .goods-list-container {
display: flex; padding: 20rpx 24rpx;
flex-wrap: wrap;
gap: 20rpx;
justify-content: flex-start;
padding-bottom: 20rpx; padding-bottom: 20rpx;
} }
.waterfall-container {
display: flex;
gap: 32rpx;
width: 100%;
}
.waterfall-column {
flex: 1;
display: flex;
flex-direction: column;
gap: 16rpx;
}
.left-column {
align-items: flex-start;
}
.right-column {
align-items: flex-end;
}
.goods-item { .goods-item {
width: calc((100% - 20rpx) / 2); width: 100%;
background-color: #f9f9f9; border-radius: 24rpx;
border-radius: 10rpx;
overflow: hidden; overflow: hidden;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05); transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
transition: all 0.3s ease; transform-style: preserve-3d;
perspective: 1000rpx;
}
.goods-card {
width: 100%;
border-radius: 20rpx;
overflow: hidden;
background: rgba(255, 255, 255, 0.82);
backdrop-filter: blur(10rpx);
-webkit-backdrop-filter: blur(10rpx);
box-shadow:
0 6rpx 24rpx rgba(0, 0, 0, 0.15),
0 0 0 1rpx rgba(0, 0, 0, 0.08),
inset 0 0 0 1rpx rgba(255, 255, 255, 0.95);
border: 2rpx solid rgba(200, 200, 200, 0.5);
display: flex;
flex-direction: column;
} }
.goods-item:hover { .goods-item:hover {
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1); transform: translateY(-8rpx);
transform: translateY(-2rpx); box-shadow:
0 16rpx 40rpx rgba(0, 0, 0, 0.22),
0 0 0 2rpx rgba(0, 0, 0, 0.12),
inset 0 0 0 1rpx rgba(255, 255, 255, 1);
}
.goods-item:active {
transform: translateY(-4rpx);
}
.goods-item.long-card {
margin-bottom: 24rpx;
}
.goods-item.long-card .goods-info {
min-height: 200rpx;
padding: 24rpx;
}
.goods-item.short-card {
margin-bottom: 16rpx;
}
.goods-item.short-card .goods-info {
min-height: 140rpx;
padding: 16rpx;
}
.goods-item.short-card .goods-name {
-webkit-line-clamp: 1;
min-height: 40rpx;
}
.goods-item.short-card .goods-spec {
margin-bottom: 8rpx;
}
.goods-item.short-card .goods-price {
font-size: 32rpx;
}
.left-column .goods-item {
transform: translateZ(10rpx);
}
.right-column .goods-item {
transform: translateZ(-10rpx);
} }
.goods-image-container { .goods-image-container {
@ -421,6 +539,7 @@ page {
width: 100%; width: 100%;
padding-bottom: 100%; padding-bottom: 100%;
overflow: hidden; overflow: hidden;
background: rgba(0, 0, 0, 0.05);
} }
.goods-image { .goods-image {
@ -430,64 +549,159 @@ page {
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: #eee; background-color: #eee;
transition: all 0.4s ease;
}
.goods-item:hover .goods-image {
transform: scale(1.05);
} }
.goods-tag { .goods-tag {
position: absolute; position: absolute;
top: 10rpx; top: 16rpx;
left: 10rpx; left: 16rpx;
background-color: rgba(255, 90, 90, 0.8); background: rgba(255, 90, 90, 0.85);
backdrop-filter: blur(8rpx);
color: white; color: white;
font-size: 20rpx; font-size: 22rpx;
padding: 5rpx 10rpx; padding: 8rpx 16rpx;
border-radius: 15rpx; border-radius: 20rpx;
font-weight: bold; font-weight: bold;
box-shadow: 0 2rpx 8rpx rgba(255, 90, 90, 0.3);
border: 1rpx solid rgba(255, 255, 255, 0.3);
} }
.goods-info { .goods-info {
padding: 15rpx; padding: 20rpx;
flex: 1;
display: flex;
flex-direction: column;
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(10rpx);
border-top: 1rpx solid rgba(255, 255, 255, 0.2);
} }
.goods-name { .goods-name {
font-size: 26rpx; font-size: 28rpx;
font-weight: bold; font-weight: bold;
color: #333; color: #333;
margin-bottom: 10rpx; margin-bottom: 12rpx;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
min-height: 60rpx; min-height: 60rpx;
line-height: 1.4;
text-shadow: 0 1rpx 2rpx rgba(255, 255, 255, 0.8);
} }
.goods-spec { .goods-spec {
font-size: 22rpx; font-size: 24rpx;
color: #999; color: #666;
margin-bottom: 10rpx; margin-bottom: 12rpx;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
text-shadow: 0 1rpx 2rpx rgba(255, 255, 255, 0.8);
} }
.goods-price { .goods-price {
font-size: 32rpx; font-size: 36rpx;
font-weight: bold; font-weight: bold;
color: #ff4d4f; color: #ff4d4f;
margin-bottom: 10rpx; margin-bottom: 12rpx;
text-shadow: 0 1rpx 2rpx rgba(255, 255, 255, 0.8);
}
.goods-status-row {
display: flex;
flex-wrap: nowrap;
gap: 8rpx;
margin-bottom: 12rpx;
}
.status-tag {
font-size: 20rpx;
padding: 4rpx 8rpx;
border-radius: 4rpx;
font-weight: 600;
display: inline-block;
white-space: nowrap;
flex-shrink: 0;
}
.status-tag.supply-spot {
background: rgba(82, 196, 26, 0.15);
color: #389e0d;
border: 1rpx solid rgba(82, 196, 26, 0.5);
}
.status-tag.supply-presale {
background: rgba(255, 154, 28, 0.15);
color: #d46b08;
border: 1rpx solid rgba(255, 154, 28, 0.5);
}
.status-tag.auth-verified {
background: rgba(24, 144, 255, 0.15);
color: #096dd9;
border: 1rpx solid rgba(24, 144, 255, 0.5);
}
.status-tag.auth-unverified {
background: rgba(140, 140, 140, 0.15);
color: #595959;
border: 1rpx solid rgba(140, 140, 140, 0.5);
}
.status-tag.negotiate-yes {
background: rgba(114, 46, 209, 0.15);
color: #722ed1;
border: 1rpx solid rgba(114, 46, 209, 0.5);
}
.status-tag.source-yes {
background: rgba(24, 144, 255, 0.15);
color: #096dd9;
border: 1rpx solid rgba(24, 144, 255, 0.5);
}
.status-tag.negotiate-no {
background: rgba(180, 180, 180, 0.15);
color: #595959;
border: 1rpx solid rgba(180, 180, 180, 0.5);
} }
.goods-footer { .goods-footer {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
font-size: 20rpx; font-size: 22rpx;
color: #999; color: #888;
margin-top: auto;
padding-top: 12rpx;
border-top: 1rpx solid rgba(255, 255, 255, 0.2);
text-shadow: 0 1rpx 2rpx rgba(255, 255, 255, 0.8);
}
.goods-region-bg {
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(4rpx);
-webkit-backdrop-filter: blur(4rpx);
border-radius: 4rpx;
padding: 4rpx 12rpx;
border: 1.5rpx solid #1e3a6e;
box-shadow: 0 1rpx 3rpx rgba(30, 58, 110, 0.08);
} }
.goods-region { .goods-region {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
color: #1e3a6e;
font-weight: 600;
font-size: 23rpx;
letter-spacing: 0.5rpx;
} }
.goods-reserved { .goods-reserved {

2
project.private.config.json

@ -1,6 +1,6 @@
{ {
"libVersion": "3.10.3", "libVersion": "3.10.3",
"projectname": "New2", "projectname": "Mini-New2",
"setting": { "setting": {
"urlCheck": false, "urlCheck": false,
"coverView": true, "coverView": true,

Loading…
Cancel
Save