This commit is contained in:
2025-09-15 22:09:29 +08:00
parent 9569326c37
commit 3cb3a58dfd
20 changed files with 8678 additions and 158 deletions

View File

@@ -0,0 +1,96 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const common_assets = require("../../common/assets.js");
const _sfc_main = {
data() {
return {
todayAmount: "0.00",
monthProfit: "0.00",
stockQty: "0.00",
activeTab: "home",
notices: [
{ text: "选材精工:不锈钢、合金钢,耐腐蚀更耐用", tag: "品质" },
{ text: "表面工艺:电镀锌/镀镍/发黑处理,性能均衡", tag: "工艺" },
{ text: "库存齐全:螺丝、螺母、垫圈、膨胀螺栓等现货", tag: "库存" },
{ text: "企业采购支持:批量优惠,次日发货", tag: "服务" }
],
features: [
{ key: "customer", title: "客户", img: "/static/icons/customer.png", emoji: "👥" },
{ key: "sale", title: "销售", img: "/static/icons/sale.png", emoji: "💰" },
{ key: "account", title: "账户", img: "/static/icons/account.png", emoji: "💳" },
{ key: "supplier", title: "供应商", img: "/static/icons/supplier.png", emoji: "🚚" },
{ key: "purchase", title: "进货", img: "/static/icons/purchase.png", emoji: "🛒" },
{ key: "otherPay", title: "其他支出", img: "/static/icons/other-pay.png", emoji: "💸" },
{ key: "vip", title: "VIP会员", img: "/static/icons/vip.png", emoji: "👑" },
{ key: "report", title: "报表", img: "/static/icons/report.png", emoji: "📊" },
{ key: "more", title: "更多", img: "/static/icons/more.png", emoji: "⋯" }
]
};
},
methods: {
onFeatureTap(item) {
common_vendor.index.showToast({ title: item.title + "(开发中)", icon: "none" });
},
onCreateOrder() {
common_vendor.index.showToast({ title: "开单(开发中)", icon: "none" });
},
onNoticeTap(n) {
common_vendor.index.showModal({
title: "公告",
content: n.text,
showCancel: false
});
},
onNoticeList() {
common_vendor.index.showToast({ title: "公告列表(开发中)", icon: "none" });
},
onIconError(item) {
item.img = "";
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_assets._imports_0,
b: common_vendor.t($data.todayAmount),
c: common_vendor.t($data.monthProfit),
d: common_vendor.t($data.stockQty),
e: common_vendor.f($data.notices, (n, idx, i0) => {
return common_vendor.e({
a: common_vendor.t(n.text),
b: n.tag
}, n.tag ? {
c: common_vendor.t(n.tag)
} : {}, {
d: common_vendor.o(($event) => $options.onNoticeTap(n), idx),
e: idx
});
}),
f: common_vendor.o((...args) => $options.onNoticeList && $options.onNoticeList(...args)),
g: common_vendor.f($data.features, (item, k0, i0) => {
return common_vendor.e({
a: item.img
}, item.img ? {
b: item.img,
c: common_vendor.o(($event) => $options.onIconError(item), item.key)
} : item.emoji ? {
e: common_vendor.t(item.emoji)
} : {}, {
d: item.emoji,
f: common_vendor.t(item.title),
g: item.key,
h: common_vendor.o(($event) => $options.onFeatureTap(item), item.key)
});
}),
h: $data.activeTab === "home" ? 1 : "",
i: common_vendor.o(($event) => $data.activeTab = "home"),
j: common_vendor.o((...args) => $options.onCreateOrder && $options.onCreateOrder(...args)),
k: $data.activeTab === "detail" ? 1 : "",
l: common_vendor.o(($event) => $data.activeTab = "detail"),
m: $data.activeTab === "me" ? 1 : "",
n: common_vendor.o(($event) => $data.activeTab = "me")
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/index/index.js.map

View File

@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "五金配件管家",
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="home"><image class="home-bg" src="{{a}}" mode="aspectFill"></image><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">{{b}}</text></view><view class="kpi-item"><text class="kpi-label">本月利润</text><text class="kpi-value">{{c}}</text></view><view class="kpi-item"><text class="kpi-label">库存数量</text><text class="kpi-value">{{d}}</text></view></view></view><view class="notice"><view class="notice-left">公告</view><swiper 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 class="notice-right" bindtap="{{f}}">更多</view></view><view class="section-title"><text class="section-text">常用功能</text></view><view class="grid-wrap"><view class="grid"><view wx:for="{{g}}" wx:for-item="item" wx:key="g" class="grid-item" bindtap="{{item.h}}"><view class="icon icon-squircle"><image wx:if="{{item.a}}" src="{{item.b}}" class="icon-img" mode="aspectFit" binderror="{{item.c}}"></image><text wx:elif="{{item.d}}" class="icon-emoji">{{item.e}}</text><view wx:else class="icon-placeholder"></view></view><text class="grid-chip">{{item.f}}</text></view></view></view><view class="bottom-bar"><view class="{{['tab', h && 'active']}}" bindtap="{{i}}"><text>首页</text></view><view class="tab primary" bindtap="{{j}}"><text>开单</text></view><view class="{{['tab', k && 'active']}}" bindtap="{{l}}"><text>明细</text></view><view class="{{['tab', m && 'active']}}" bindtap="{{n}}"><text>我的</text></view></view></view>

View File

@@ -0,0 +1,185 @@
.home {
padding-bottom: 140rpx;
position: relative;
/* 明亮奢华背景:金属拉丝纹理覆盖层 + 柔和浅色渐变 */
background:
repeating-linear-gradient(0deg, rgba(180,180,180,0.12) 0rpx, rgba(180,180,180,0.12) 2rpx, rgba(255,255,255,0.0) 2rpx, rgba(255,255,255,0.0) 10rpx),
linear-gradient(180deg, rgba(255, 255, 255, 0.75) 0%, rgba(255, 255, 255, 0.55) 40%, rgba(255, 255, 255, 0.35) 100%);
min-height: 100vh;
}
.home-bg {
position: fixed;
left: 0; top: 0; right: 0; bottom: 0;
width: 100%; height: 100%;
pointer-events: none;
z-index: -1;
}
/* 公告栏 */
.notice {
margin: 0 24rpx 24rpx;
padding: 20rpx 22rpx;
border-radius: 20rpx;
background: rgba(255,255,255,0.78);
-webkit-backdrop-filter: blur(12rpx);
backdrop-filter: blur(12rpx);
border: 2rpx solid rgba(203, 166, 61, 0.28);
display: flex;
align-items: center;
gap: 16rpx;
}
.notice-left {
flex: 0 0 auto;
display: inline-flex; align-items: center; justify-content: center;
min-width: 96rpx; height: 44rpx;
padding: 0 16rpx;
border-radius: 999rpx;
background: linear-gradient(135deg, #FFE69A, #F4CF62);
color: #3f320f;
font-size: 24rpx;
font-weight: 800;
}
.notice-swiper { height: 72rpx; flex: 1;
}
.notice-item { display: flex; align-items: center; gap: 12rpx; min-height: 72rpx;
}
.notice-text { color: #4b3e19; font-size: 28rpx; line-height: 36rpx; font-weight: 600; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.notice-tag { color: #B4880F; font-size: 22rpx; padding: 4rpx 10rpx; border-radius: 999rpx; background: rgba(215,167,46,0.18);
}
.notice-right { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; min-width: 72rpx; height: 44rpx; color: #B4880F; font-size: 26rpx; padding-left: 8rpx;
}
/* 分割标题 */
.section-title { display: flex; align-items: center; gap: 16rpx; padding: 10rpx 28rpx 0;
}
.section-title::before { content: ''; display: block; width: 8rpx; height: 28rpx; border-radius: 8rpx; background: linear-gradient(180deg, #FFE69A, #D7A72E);
}
.section-text { color: #6b5a2a; font-size: 28rpx; font-weight: 700; letter-spacing: 1rpx;
}
/* 顶部英雄区:浅色玻璃卡片,带金色描边与柔和阴影 */
.hero {
margin: 24rpx;
padding: 32rpx;
border-radius: 28rpx;
background: rgba(255, 255, 255, 0.65);
-webkit-backdrop-filter: blur(14rpx);
backdrop-filter: blur(14rpx);
border: 2rpx solid rgba(203, 166, 61, 0.35);
box-shadow: 0 12rpx 28rpx rgba(0, 0, 0, 0.10), 0 0 0 2rpx rgba(255,255,255,0.60) inset;
color: #473c22;
}
.hero-top {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
}
.brand {
font-size: 42rpx;
font-weight: 700;
letter-spacing: 2rpx;
color: #B4880F; /* 金色标题 */
}
.cta {
padding: 10rpx 22rpx;
border-radius: 999rpx;
background: linear-gradient(135deg, rgba(255, 220, 128, 0.65), rgba(255, 240, 190, 0.65));
border: 2rpx solid rgba(203, 166, 61, 0.45);
box-shadow: 0 6rpx 14rpx rgba(203, 166, 61, 0.25);
}
.cta-text { color: #5a4712; font-size: 26rpx;
}
.kpi { display: flex;
}
.kpi-item { flex: 1;
}
.kpi-label { opacity: 0.9; font-size: 24rpx; color: #6b5a2a;
}
.kpi-value { display: block; margin-top: 12rpx; font-size: 46rpx; font-weight: 800; color: #B4880F;
}
/* 功能容器:整体玻璃面板,增强融入感 */
.grid-wrap {
margin: 0 20rpx 32rpx;
padding: 28rpx 20rpx 12rpx;
border-radius: 24rpx;
background: rgba(255,255,255,0.55);
-webkit-backdrop-filter: blur(10rpx);
backdrop-filter: blur(10rpx);
border: 2rpx solid rgba(203,166,61,0.22);
box-shadow: 0 8rpx 18rpx rgba(0,0,0,0.06);
}
/* 功能九宫格 */
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-row-gap: 64rpx;
grid-column-gap: 36rpx;
padding: 40rpx 28rpx 28rpx;
}
.grid-item { display: flex; flex-direction: column; align-items: center; text-align: center;
}
.icon { display: flex; align-items: center; justify-content: center; color: #6b5a2a; position: relative;
}
.icon-squircle {
width: 132rpx; height: 132rpx;
border-radius: 28rpx;
background: linear-gradient(145deg, rgba(255,255,255,0.92), rgba(255,255,255,0.70));
-webkit-backdrop-filter: blur(12rpx);
backdrop-filter: blur(12rpx);
border: 2rpx solid rgba(203,166,61,0.22);
box-shadow: 0 10rpx 24rpx rgba(0,0,0,0.10), 0 0 0 2rpx rgba(255,255,255,0.65) inset;
overflow: hidden;
}
.icon-squircle::before { content: ''; position: absolute; left: -30%; top: -40%; width: 160%; height: 70%; background: linear-gradient( to bottom, rgba(255,255,255,0.9), rgba(255,255,255,0.0) ); transform: rotate(12deg);
}
.icon-img { width: 96rpx; height: 96rpx;
}
.icon-emoji { font-size: 60rpx; line-height: 1;
}
.icon-placeholder { width: 84rpx; height: 84rpx; border-radius: 18rpx; background:
linear-gradient(135deg, rgba(212,175,55,0.18), rgba(255,255,255,0.0)),
repeating-linear-gradient(90deg, rgba(180,150,60,0.35) 0, rgba(180,150,60,0.35) 8rpx, transparent 8rpx, transparent 16rpx),
repeating-linear-gradient(0deg, rgba(180,150,60,0.20) 0, rgba(180,150,60,0.20) 8rpx, transparent 8rpx, transparent 16rpx);
box-shadow: inset 0 0 0 2rpx rgba(203,166,61,0.28);
}
.icon-text { font-size: 46rpx; font-weight: 700;
}
.grid-title { display: none;
}
.grid-chip { margin-top: 14rpx; padding: 6rpx 14rpx; border-radius: 999rpx; background: rgba(215,167,46,0.16); color: #5a4a1f; font-size: 22rpx;
}
/* 底部操作条:浅色半透明 + 金色主按钮 */
.bottom-bar {
position: fixed;
left: 0; right: 0; bottom: 0;
display: flex;
align-items: center;
justify-content: space-around;
padding: 14rpx 18rpx calc(env(safe-area-inset-bottom) + 14rpx);
background: rgba(255,255,255,0.85);
box-shadow: 0 -6rpx 18rpx rgba(0,0,0,0.08);
-webkit-backdrop-filter: blur(10rpx);
backdrop-filter: blur(10rpx);
}
.tab { flex: 1; text-align: center; color: #8a7535; font-size: 26rpx;
}
.tab.active { color: #B4880F;
}
.tab.primary {
flex: 0 0 auto;
min-width: 180rpx;
margin: 0 18rpx;
padding: 18rpx 32rpx;
background: linear-gradient(135deg, #FFE69A 0%, #F4CF62 45%, #D7A72E 100%);
color: #493c1b;
border-radius: 999rpx;
font-size: 30rpx;
font-weight: 800;
box-shadow: 0 10rpx 22rpx rgba(215,167,46,0.25), 0 0 0 2rpx rgba(255,255,255,0.70) inset;
}