This commit is contained in:
2025-09-24 20:35:15 +08:00
parent 39679f7330
commit 8a458ff0a4
12033 changed files with 1537546 additions and 13292 deletions

View File

@@ -2,9 +2,11 @@
const common_vendor = require("../../common/vendor.js");
const common_http = require("../../common/http.js");
const common_constants = require("../../common/constants.js");
const common_config = require("../../common/config.js");
const _sfc_main = {
data() {
return {
KPI_ICONS: common_config.KPI_ICONS,
kpi: { todaySales: "0.00", monthSales: "0.00", monthProfit: "0.00", stockCount: "0" },
activeTab: "home",
notices: [],
@@ -25,6 +27,19 @@ const _sfc_main = {
};
},
onLoad() {
const hasToken = (() => {
try {
return !!common_vendor.index.getStorageSync("TOKEN");
} catch (e) {
return false;
}
})();
if (!hasToken) {
this.kpi = { todaySales: "0.00", monthSales: "0.00", monthProfit: "0.00", stockCount: "0" };
this.notices = [];
common_vendor.index.showToast({ title: "请登录使用该功能", icon: "none" });
return;
}
this.fetchMetrics();
this.fetchNotices();
},
@@ -113,7 +128,7 @@ const _sfc_main = {
},
goDetail() {
try {
common_vendor.index.__f__("log", "at pages/index/index.vue:177", "[index] goDetail → /pages/detail/index");
common_vendor.index.__f__("log", "at pages/index/index.vue:198", "[index] goDetail → /pages/detail/index");
} catch (e) {
}
common_vendor.index.switchTab({ url: "/pages/detail/index" });
@@ -153,11 +168,15 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
}, {
b: $data.noticeError,
d: !$data.notices.length,
f: common_vendor.t($data.kpi.todaySales),
g: common_vendor.t($data.kpi.monthSales),
h: common_vendor.t($data.kpi.monthProfit),
i: common_vendor.t($data.kpi.stockCount),
j: common_vendor.f($data.features, (item, k0, i0) => {
f: $data.KPI_ICONS.todaySales,
g: common_vendor.t($data.kpi.todaySales),
h: $data.KPI_ICONS.monthSales,
i: common_vendor.t($data.kpi.monthSales),
j: $data.KPI_ICONS.monthProfit,
k: common_vendor.t($data.kpi.monthProfit),
l: $data.KPI_ICONS.stockCount,
m: common_vendor.t($data.kpi.stockCount),
n: common_vendor.f($data.features, (item, k0, i0) => {
return common_vendor.e({
a: item.img
}, item.img ? {

View File

@@ -1 +1 @@
<view class="home"><view class="notice"><view class="notice-left">公告</view><view wx:if="{{a}}" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a">加载中...</view><view wx:elif="{{b}}" class="notice-swiper" style="display:flex;align-items:center;color:#dd524d">{{c}}</view><view wx:elif="{{d}}" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a">暂无公告</view><swiper wx:else class="notice-swiper" circular autoplay interval="4000" duration="400" vertical><swiper-item wx:for="{{e}}" wx:for-item="n" wx:key="e"><view class="notice-item" bindtap="{{n.d}}"><text class="notice-text">{{n.a}}</text><text wx:if="{{n.b}}" class="notice-tag">{{n.c}}</text></view></swiper-item></swiper></view><view class="hero"><view class="hero-top"><text class="brand">五金配件管家</text><view class="cta"><text class="cta-text">咨询</text></view></view><view class="kpi"><view class="kpi-item"><text class="kpi-label">今日销售额</text><text class="kpi-value">{{f}}</text></view><view class="kpi-item"><text class="kpi-label">本月销售额</text><text class="kpi-value">{{g}}</text></view><view class="kpi-item"><text class="kpi-label">本月利润</text><text class="kpi-value">{{h}}</text></view><view class="kpi-item"><text class="kpi-label">库存商品数量</text><text class="kpi-value">{{i}}</text></view></view></view><view class="section-title"><text class="section-text">常用功能</text></view><view class="grid-wrap"><view class="feature-grid"><view wx:for="{{j}}" wx:for-item="item" wx:key="g" class="feature-card" bindtap="{{item.h}}"><view class="fc-icon"><image wx:if="{{item.a}}" src="{{item.b}}" class="fc-img" mode="aspectFit" binderror="{{item.c}}"></image><text wx:elif="{{item.d}}" class="fc-emoji">{{item.e}}</text><view wx:else class="fc-placeholder"></view></view><view class="fc-title">{{item.f}}</view></view></view></view></view>
<view class="home"><view class="notice"><view class="notice-left">公告</view><view wx:if="{{a}}" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a">加载中...</view><view wx:elif="{{b}}" class="notice-swiper" style="display:flex;align-items:center;color:#dd524d">{{c}}</view><view wx:elif="{{d}}" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a">暂无公告</view><swiper wx:else class="notice-swiper" circular autoplay interval="4000" duration="400" vertical><swiper-item wx:for="{{e}}" wx:for-item="n" wx:key="e"><view class="notice-item" bindtap="{{n.d}}"><text class="notice-text">{{n.a}}</text><text wx:if="{{n.b}}" class="notice-tag">{{n.c}}</text></view></swiper-item></swiper></view><view class="hero"><view class="hero-top"><text class="brand">五金配件管家</text><view class="cta"><text class="cta-text">咨询</text></view></view><view class="kpi kpi-grid"><view class="kpi-item kpi-card"><image src="{{f}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">今日销售额</text><text class="kpi-value">{{g}}</text></view></view><view class="kpi-item kpi-card"><image src="{{h}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">本月销售额</text><text class="kpi-value">{{i}}</text></view></view><view class="kpi-item kpi-card"><image src="{{j}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">本月利润</text><text class="kpi-value">{{k}}</text></view></view><view class="kpi-item kpi-card"><image src="{{l}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">库存商品数量</text><text class="kpi-value">{{m}}</text></view></view></view></view><view class="section-title"><text class="section-text">常用功能</text></view><view class="grid-wrap"><view class="feature-grid"><view wx:for="{{n}}" wx:for-item="item" wx:key="g" class="feature-card" bindtap="{{item.h}}"><view class="fc-icon"><image wx:if="{{item.a}}" src="{{item.b}}" class="fc-img" mode="aspectFit" binderror="{{item.c}}"></image><text wx:elif="{{item.d}}" class="fc-emoji">{{item.e}}</text><view wx:else class="fc-placeholder"></view></view><view class="fc-title">{{item.f}}</view></view></view></view></view>

View File

@@ -27,11 +27,12 @@
.home {
padding-bottom: 140rpx;
position: relative;
/* 纯白背景 */
background: #ffffff;
/* 渐变背景:顶部淡蓝过渡到白色 */
background: linear-gradient(180deg, #f8fbff 0%, #ffffff 60%);
min-height: 100vh;
}
/* 首页横幅(移除) */
/* 公告栏 */
.notice {
margin: 0 24rpx 24rpx;
@@ -109,9 +110,9 @@
/* 顶部英雄区:浅色玻璃卡片,带金色描边与柔和阴影 */
.hero {
margin: 24rpx;
padding: 32rpx;
border-radius: 28rpx;
margin: 16rpx 20rpx;
padding: 18rpx;
border-radius: 20rpx;
background: #ffffff;
border: 2rpx solid #e5e7eb;
box-shadow: none;
@@ -123,14 +124,29 @@
align-items: center;
margin-bottom: 20rpx;
}
.brand {
font-size: 42rpx;
.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.1);
color: #4C8DFF;
font-size: 24rpx;
font-weight: 700;
letter-spacing: 2rpx;
border: 2rpx solid rgba(76, 141, 255, 0.25);
}
.brand {
font-size: 36rpx;
font-weight: 700;
letter-spacing: 1rpx;
color: #4C8DFF;
}
.cta {
padding: 10rpx 22rpx;
padding: 8rpx 18rpx;
border-radius: 999rpx;
background: #4C8DFF;
border: 2rpx solid #4C8DFF;
@@ -156,25 +172,44 @@
border-radius: 16rpx;
padding: 16rpx 8rpx;
}
.kpi-label {
/* 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: 0.9;
font-size: 26rpx;
color: #444;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
line-height: 32rpx;
/* 行高>=字体,避免上沿被裁切 */
min-height: 64rpx;
/* 两行高度,防止折行挤压 */
}
.kpi-content {
display: flex;
flex-direction: column;
}
.kpi-label {
color: #6b778c;
font-weight: 700;
font-size: 24rpx;
line-height: 30rpx;
}
.kpi-value {
display: block;
margin-top: 8rpx;
font-size: 56rpx;
font-weight: 800;
color: #4C8DFF;
font-size: 36rpx;
line-height: 40rpx;
margin-top: 0;
font-weight: 800;
}
/* 常用功能:胶囊+阴影卡片样式的图标栅格(旧风格保留以防回退) */
@@ -204,59 +239,62 @@
font-weight: 700;
}
/* 功能容器:整体玻璃面板,增强融入感 */
/* 功能容器:更轻的留白 */
.grid-wrap {
margin: 0 20rpx 32rpx;
padding: 28rpx 20rpx 12rpx;
border-radius: 24rpx;
background: #ffffff;
border: 2rpx solid #e5e7eb;
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;
grid-template-columns: repeat(3, 1fr);
gap: 14rpx;
padding: 8rpx 8rpx 18rpx;
}
.feature-card {
height: 164rpx;
background: #fff;
border: 2rpx solid #e5e7eb;
border: 2rpx solid #eef2f6;
border-radius: 16rpx;
box-shadow: 0 10rpx 20rpx rgba(0, 0, 0, 0.06);
padding: 18rpx;
box-shadow: 0 6rpx 16rpx rgba(0, 0, 0, 0.04);
padding: 12rpx;
display: flex;
flex-direction: column;
align-items: center;
gap: 12rpx;
justify-content: center;
}
.fc-icon {
width: 96rpx;
height: 96rpx;
border-radius: 16rpx;
background: #f1f1f1;
width: 86rpx;
height: 86rpx;
border-radius: 18rpx;
background: #f7faff;
border: 2rpx solid #e8eef8;
display: flex;
align-items: center;
justify-content: center;
}
.fc-img {
width: 72rpx;
height: 72rpx;
width: 56rpx;
height: 56rpx;
opacity: 0.95;
}
.fc-emoji {
font-size: 56rpx;
font-size: 48rpx;
}
.fc-placeholder {
width: 72rpx;
height: 72rpx;
width: 56rpx;
height: 56rpx;
border-radius: 12rpx;
background: #f1f1f1;
border: 2rpx solid #e5e7eb;
border: 2rpx solid #e8eef8;
}
.fc-title {
margin-left: 2rpx;
font-size: 30rpx;
margin-top: 10rpx;
font-size: 26rpx;
font-weight: 700;
color: #111;
}