1
This commit is contained in:
@@ -23,22 +23,34 @@
|
||||
<text class="cta-text">咨询</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="kpi">
|
||||
<view class="kpi-item">
|
||||
<text class="kpi-label">今日销售额</text>
|
||||
<text class="kpi-value">{{ kpi.todaySales }}</text>
|
||||
<view class="kpi kpi-grid">
|
||||
<view class="kpi-item kpi-card">
|
||||
<image :src="KPI_ICONS.todaySales" class="kpi-icon" mode="aspectFit"></image>
|
||||
<view class="kpi-content">
|
||||
<text class="kpi-label">今日销售额</text>
|
||||
<text class="kpi-value">{{ kpi.todaySales }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="kpi-item">
|
||||
<text class="kpi-label">本月销售额</text>
|
||||
<text class="kpi-value">{{ kpi.monthSales }}</text>
|
||||
<view class="kpi-item kpi-card">
|
||||
<image :src="KPI_ICONS.monthSales" class="kpi-icon" mode="aspectFit"></image>
|
||||
<view class="kpi-content">
|
||||
<text class="kpi-label">本月销售额</text>
|
||||
<text class="kpi-value">{{ kpi.monthSales }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="kpi-item">
|
||||
<text class="kpi-label">本月利润</text>
|
||||
<text class="kpi-value">{{ kpi.monthProfit }}</text>
|
||||
<view class="kpi-item kpi-card">
|
||||
<image :src="KPI_ICONS.monthProfit" class="kpi-icon" mode="aspectFit"></image>
|
||||
<view class="kpi-content">
|
||||
<text class="kpi-label">本月利润</text>
|
||||
<text class="kpi-value">{{ kpi.monthProfit }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="kpi-item">
|
||||
<text class="kpi-label">库存商品数量</text>
|
||||
<text class="kpi-value">{{ kpi.stockCount }}</text>
|
||||
<view class="kpi-item kpi-card">
|
||||
<image :src="KPI_ICONS.stockCount" class="kpi-icon" mode="aspectFit"></image>
|
||||
<view class="kpi-content">
|
||||
<text class="kpi-label">库存商品数量</text>
|
||||
<text class="kpi-value">{{ kpi.stockCount }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -51,7 +63,7 @@
|
||||
</view>
|
||||
|
||||
<!-- 功能九宫格(玻璃容器 + 圆角方形图标) -->
|
||||
<view class="grid-wrap">
|
||||
<view class="grid-wrap">
|
||||
<view class="feature-grid">
|
||||
<view class="feature-card" v-for="item in features" :key="item.key" @click="onFeatureTap(item)">
|
||||
<view class="fc-icon">
|
||||
@@ -71,9 +83,11 @@
|
||||
<script>
|
||||
import { get } from '../../common/http.js'
|
||||
import { ROUTES } from '../../common/constants.js'
|
||||
import { KPI_ICONS as KPI_ICON_MAP } from '../../common/config.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
return {
|
||||
KPI_ICONS: KPI_ICON_MAP,
|
||||
kpi: { todaySales: '0.00', monthSales: '0.00', monthProfit: '0.00', stockCount: '0' },
|
||||
activeTab: 'home',
|
||||
notices: [],
|
||||
@@ -93,10 +107,17 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.fetchMetrics()
|
||||
this.fetchNotices()
|
||||
},
|
||||
onLoad() {
|
||||
const hasToken = (() => { try { return !!uni.getStorageSync('TOKEN') } catch(e){ return false } })()
|
||||
if (!hasToken) {
|
||||
this.kpi = { todaySales: '0.00', monthSales: '0.00', monthProfit: '0.00', stockCount: '0' }
|
||||
this.notices = []
|
||||
uni.showToast({ title: '请登录使用该功能', icon: 'none' })
|
||||
return
|
||||
}
|
||||
this.fetchMetrics()
|
||||
this.fetchNotices()
|
||||
},
|
||||
methods: {
|
||||
async fetchMetrics() {
|
||||
try {
|
||||
@@ -197,12 +218,14 @@
|
||||
.home {
|
||||
padding-bottom: 140rpx;
|
||||
position: relative;
|
||||
/* 纯白背景 */
|
||||
background: #ffffff;
|
||||
/* 渐变背景:顶部淡蓝过渡到白色 */
|
||||
background: linear-gradient(180deg, #f8fbff 0%, #ffffff 60%);
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
|
||||
/* 首页横幅(移除) */
|
||||
|
||||
|
||||
/* 公告栏 */
|
||||
.notice {
|
||||
@@ -239,9 +262,9 @@
|
||||
|
||||
/* 顶部英雄区:浅色玻璃卡片,带金色描边与柔和阴影 */
|
||||
.hero {
|
||||
margin: 24rpx;
|
||||
padding: 32rpx;
|
||||
border-radius: 28rpx;
|
||||
margin: 16rpx 20rpx;
|
||||
padding: 18rpx;
|
||||
border-radius: 20rpx;
|
||||
background: #ffffff;
|
||||
border: 2rpx solid $uni-border-color;
|
||||
box-shadow: none;
|
||||
@@ -254,16 +277,18 @@
|
||||
align-items: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.hero-sub { display:flex; gap: 12rpx; margin-bottom: 22rpx; flex-wrap: wrap; }
|
||||
.chip { padding: 8rpx 16rpx; border-radius: 999rpx; background: rgba(76,141,255,0.10); color: $uni-color-primary; font-size: 24rpx; font-weight: 700; border: 2rpx solid rgba(76,141,255,0.25); }
|
||||
|
||||
.brand {
|
||||
font-size: 42rpx;
|
||||
font-size: 36rpx;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2rpx;
|
||||
letter-spacing: 1rpx;
|
||||
color: $uni-color-primary;
|
||||
}
|
||||
|
||||
.cta {
|
||||
padding: 10rpx 22rpx;
|
||||
padding: 8rpx 18rpx;
|
||||
border-radius: 999rpx;
|
||||
background: $uni-color-primary;
|
||||
border: 2rpx solid $uni-color-primary;
|
||||
@@ -275,18 +300,14 @@
|
||||
/* KPI 卡片化布局:2×2 */
|
||||
.kpi { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16rpx; }
|
||||
.kpi-item { text-align: center; background:#ffffff; border: 2rpx solid $uni-border-color; border-radius: 16rpx; padding: 16rpx 8rpx; }
|
||||
.kpi-label {
|
||||
opacity: 0.9;
|
||||
font-size: 26rpx;
|
||||
color: $uni-text-color-grey;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
overflow: hidden;
|
||||
line-height: 32rpx; /* 行高>=字体,避免上沿被裁切 */
|
||||
min-height: 64rpx; /* 两行高度,防止折行挤压 */
|
||||
}
|
||||
.kpi-value { display: block; margin-top: 8rpx; font-size: 56rpx; font-weight: 800; color: $uni-color-primary; }
|
||||
|
||||
/* KPI 卡片(更扁平,降低高度) */
|
||||
.kpi-grid { grid-template-columns: repeat(2, 1fr); gap: 16rpx; }
|
||||
.kpi-card { display:flex; align-items:center; gap: 12rpx; text-align:left; padding: 12rpx 14rpx; border-radius: 12rpx; background:#fff; border:2rpx solid #eef2f6; box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.04); }
|
||||
.kpi-icon { width: 44rpx; height: 44rpx; opacity: .9; }
|
||||
.kpi-content { display:flex; flex-direction:column; }
|
||||
.kpi-label { color:#6b778c; font-weight:700; font-size: 24rpx; line-height: 30rpx; }
|
||||
.kpi-value { color:#4C8DFF; font-size: 36rpx; line-height: 40rpx; margin-top: 0; font-weight: 800; }
|
||||
|
||||
|
||||
/* 常用功能:胶囊+阴影卡片样式的图标栅格(旧风格保留以防回退) */
|
||||
@@ -295,24 +316,23 @@
|
||||
.icon-squircle { width: 140rpx; height: 140rpx; border-radius: 28rpx; background: #fff; border: 2rpx solid $uni-border-color; box-shadow: 0 10rpx 20rpx rgba(0,0,0,0.06); }
|
||||
.grid-chip { margin-top: 12rpx; padding: 6rpx 14rpx; border-radius: 999rpx; background: rgba(76,141,255,0.12); color: $uni-color-primary; font-size: 26rpx; font-weight: 700; }
|
||||
|
||||
/* 功能容器:整体玻璃面板,增强融入感 */
|
||||
/* 功能容器:更轻的留白 */
|
||||
.grid-wrap {
|
||||
margin: 0 20rpx 32rpx;
|
||||
padding: 28rpx 20rpx 12rpx;
|
||||
border-radius: 24rpx;
|
||||
background: #ffffff;
|
||||
border: 2rpx solid $uni-border-color;
|
||||
box-shadow: none;
|
||||
margin: 8rpx 12rpx 24rpx;
|
||||
padding: 8rpx 8rpx 0;
|
||||
border-radius: 20rpx;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/* 新版功能卡片宫格(更现代卡片风) */
|
||||
.feature-grid { display:grid; grid-template-columns: repeat(2, 1fr); gap: 18rpx; padding: 18rpx 18rpx 24rpx; }
|
||||
.feature-card { background:#fff; border:2rpx solid $uni-border-color; border-radius: 16rpx; box-shadow: 0 10rpx 20rpx rgba(0,0,0,0.06); padding: 18rpx; display:flex; align-items:center; gap: 12rpx; }
|
||||
.fc-icon { width: 96rpx; height: 96rpx; border-radius: 16rpx; background: $uni-bg-color-hover; display:flex; align-items:center; justify-content:center; }
|
||||
.fc-img { width: 72rpx; height: 72rpx; }
|
||||
.fc-emoji { font-size: 56rpx; }
|
||||
.fc-placeholder { width: 72rpx; height: 72rpx; border-radius: 12rpx; background: $uni-bg-color-hover; border: 2rpx solid $uni-border-color; }
|
||||
.fc-title { margin-left: 2rpx; font-size: 30rpx; font-weight: 700; color: $uni-text-color; }
|
||||
/* 功能卡片宫格:方形竖排,图标在上文字在下(与截图一致) */
|
||||
.feature-grid { display:grid; grid-template-columns: repeat(3, 1fr); gap: 14rpx; padding: 8rpx 8rpx 18rpx; }
|
||||
.feature-card { height: 164rpx; background:#fff; border:2rpx solid #eef2f6; border-radius: 16rpx; box-shadow: 0 6rpx 16rpx rgba(0,0,0,0.04); padding: 12rpx; display:flex; flex-direction: column; align-items:center; justify-content:center; }
|
||||
.fc-icon { width: 86rpx; height: 86rpx; border-radius: 18rpx; background: #f7faff; border:2rpx solid #e8eef8; display:flex; align-items:center; justify-content:center; }
|
||||
.fc-img { width: 56rpx; height: 56rpx; opacity: .95; }
|
||||
.fc-emoji { font-size: 48rpx; }
|
||||
.fc-placeholder { width: 56rpx; height: 56rpx; border-radius: 12rpx; background: $uni-bg-color-hover; border: 2rpx solid #e8eef8; }
|
||||
.fc-title { margin-top: 10rpx; font-size: 26rpx; font-weight: 700; color: $uni-text-color; }
|
||||
|
||||
/* 底部操作条:浅色半透明 + 金色主按钮 */
|
||||
.bottom-bar {
|
||||
|
||||
Reference in New Issue
Block a user