首页
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<view class="home">
|
||||
<image class="home-bg" src="/static/metal-bg.jpg" mode="aspectFill"></image>
|
||||
<!-- 顶部统计卡片 -->
|
||||
<view class="hero">
|
||||
<view class="hero-top">
|
||||
@@ -24,13 +25,36 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 功能九宫格 -->
|
||||
<view class="grid">
|
||||
<view class="grid-item" v-for="item in features" :key="item.key" @click="onFeatureTap(item)">
|
||||
<view class="icon" :style="{ backgroundColor: item.color }">
|
||||
<text class="icon-text">{{ item.icon }}</text>
|
||||
<!-- 公告栏:自动轮播,可点击查看详情 -->
|
||||
<view class="notice">
|
||||
<view class="notice-left">公告</view>
|
||||
<swiper class="notice-swiper" circular autoplay interval="4000" duration="400" vertical>
|
||||
<swiper-item v-for="(n, idx) in notices" :key="idx">
|
||||
<view class="notice-item" @click="onNoticeTap(n)">
|
||||
<text class="notice-text">{{ n.text }}</text>
|
||||
<text v-if="n.tag" class="notice-tag">{{ n.tag }}</text>
|
||||
</view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
<view class="notice-right" @click="onNoticeList">更多</view>
|
||||
</view>
|
||||
|
||||
<!-- 分割标题:产品与功能 -->
|
||||
<view class="section-title">
|
||||
<text class="section-text">常用功能</text>
|
||||
</view>
|
||||
|
||||
<!-- 功能九宫格(玻璃容器 + 圆角方形图标) -->
|
||||
<view class="grid-wrap">
|
||||
<view class="grid">
|
||||
<view class="grid-item" v-for="item in features" :key="item.key" @click="onFeatureTap(item)">
|
||||
<view class="icon icon-squircle">
|
||||
<image v-if="item.img" :src="item.img" class="icon-img" mode="aspectFit" @error="onIconError(item)"></image>
|
||||
<text v-else-if="item.emoji" class="icon-emoji">{{ item.emoji }}</text>
|
||||
<view v-else class="icon-placeholder"></view>
|
||||
</view>
|
||||
<text class="grid-chip">{{ item.title }}</text>
|
||||
</view>
|
||||
<text class="grid-title">{{ item.title }}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -60,16 +84,22 @@
|
||||
monthProfit: '0.00',
|
||||
stockQty: '0.00',
|
||||
activeTab: 'home',
|
||||
notices: [
|
||||
{ text: '选材精工:不锈钢、合金钢,耐腐蚀更耐用', tag: '品质' },
|
||||
{ text: '表面工艺:电镀锌/镀镍/发黑处理,性能均衡', tag: '工艺' },
|
||||
{ text: '库存齐全:螺丝、螺母、垫圈、膨胀螺栓等现货', tag: '库存' },
|
||||
{ text: '企业采购支持:批量优惠,次日发货', tag: '服务' }
|
||||
],
|
||||
features: [
|
||||
{ key: 'customer', title: '客户', icon: '👥', color: '#3EC1D3' },
|
||||
{ key: 'sale', title: '销售', icon: '💰', color: '#00C2A8' },
|
||||
{ key: 'account', title: '账户', icon: '💳', color: '#21BA45' },
|
||||
{ key: 'supplier', title: '供应商', icon: '🚚', color: '#FF8C66' },
|
||||
{ key: 'purchase', title: '进货', icon: '🛒', color: '#F5A623' },
|
||||
{ key: 'otherPay', title: '其他支出', icon: '💸', color: '#F5C451' },
|
||||
{ key: 'vip', title: 'VIP会员', icon: '👑', color: '#FF9F43' },
|
||||
{ key: 'report', title: '报表', icon: '📊', color: '#6C7BFF' },
|
||||
{ key: 'more', title: '更多', icon: '⋯', color: '#BCAAA4' }
|
||||
{ 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: '⋯' }
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -79,6 +109,19 @@
|
||||
},
|
||||
onCreateOrder() {
|
||||
uni.showToast({ title: '开单(开发中)', icon: 'none' })
|
||||
},
|
||||
onNoticeTap(n) {
|
||||
uni.showModal({
|
||||
title: '公告',
|
||||
content: n.text,
|
||||
showCancel: false
|
||||
})
|
||||
},
|
||||
onNoticeList() {
|
||||
uni.showToast({ title: '公告列表(开发中)', icon: 'none' })
|
||||
},
|
||||
onIconError(item) {
|
||||
item.img = ''
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -87,76 +130,142 @@
|
||||
<style>
|
||||
.home {
|
||||
padding-bottom: 140rpx;
|
||||
/* 深色奢华背景:暗金晕光 + 碳素黑 */
|
||||
background: radial-gradient(120% 80% at 100% 0, rgba(214,175,85,0.10) 0, rgba(214,175,85,0.00) 40%), linear-gradient(180deg, #0b0c10 0%, #090b11 100%);
|
||||
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);
|
||||
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: 24rpx;
|
||||
background: repeating-linear-gradient(135deg, rgba(255,255,255,0.04) 0rpx, rgba(255,255,255,0.04) 2rpx, rgba(0,0,0,0.0) 2rpx, rgba(0,0,0,0.0) 16rpx), linear-gradient(145deg, #16181e 0%, #0e1016 100%);
|
||||
color: #ffffff;
|
||||
border: 2rpx solid rgba(236, 203, 116, 0.6);
|
||||
box-shadow: 0 18rpx 36rpx rgba(0, 0, 0, 0.35), 0 0 0 2rpx rgba(236,203,116,0.25) inset;
|
||||
border-radius: 28rpx;
|
||||
background: rgba(255, 255, 255, 0.65);
|
||||
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: 24rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.brand {
|
||||
font-size: 40rpx;
|
||||
font-weight: 600;
|
||||
font-size: 42rpx;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2rpx;
|
||||
color: #f2d58a;
|
||||
color: #B4880F; /* 金色标题 */
|
||||
}
|
||||
|
||||
.cta {
|
||||
padding: 8rpx 20rpx;
|
||||
padding: 10rpx 22rpx;
|
||||
border-radius: 999rpx;
|
||||
background: linear-gradient(135deg, rgba(0, 212, 255, 0.35), rgba(0, 153, 255, 0.25));
|
||||
border: 2rpx solid rgba(0, 187, 255, 0.4);
|
||||
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: #ffffff; font-size: 26rpx; }
|
||||
.cta-text { color: #5a4712; font-size: 26rpx; }
|
||||
|
||||
.kpi { display: flex; }
|
||||
.kpi-item { flex: 1; }
|
||||
.kpi-label { opacity: 0.9; font-size: 24rpx; }
|
||||
.kpi-value { display: block; margin-top: 12rpx; font-size: 46rpx; font-weight: 700; color: #f2d58a; }
|
||||
.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);
|
||||
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: 48rpx;
|
||||
grid-column-gap: 28rpx;
|
||||
padding: 40rpx 28rpx 20rpx;
|
||||
grid-row-gap: 64rpx;
|
||||
grid-column-gap: 36rpx;
|
||||
padding: 40rpx 28rpx 28rpx;
|
||||
}
|
||||
|
||||
.grid-item { display: flex; flex-direction: column; align-items: center; }
|
||||
.icon {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
.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;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #fff;
|
||||
background: linear-gradient(145deg, #1a1d24 0%, #0f1218 100%);
|
||||
border: 2rpx solid rgba(236,203,116,0.55);
|
||||
box-shadow: 0 10rpx 22rpx rgba(0,0,0,0.26), 0 0 0 2rpx rgba(236,203,116,0.18) inset;
|
||||
background: linear-gradient(145deg, rgba(255,255,255,0.92), rgba(255,255,255,0.70));
|
||||
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-text { font-size: 46rpx; font-weight: 600; }
|
||||
.grid-title { margin-top: 18rpx; color: #e6e6e6; font-size: 28rpx; }
|
||||
.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;
|
||||
@@ -164,23 +273,23 @@
|
||||
align-items: center;
|
||||
justify-content: space-around;
|
||||
padding: 14rpx 18rpx calc(env(safe-area-inset-bottom) + 14rpx);
|
||||
background: rgba(12,14,20,0.92);
|
||||
box-shadow: 0 -6rpx 18rpx rgba(0,0,0,0.35);
|
||||
backdrop-filter: blur(8rpx);
|
||||
background: rgba(255,255,255,0.85);
|
||||
box-shadow: 0 -6rpx 18rpx rgba(0,0,0,0.08);
|
||||
backdrop-filter: blur(10rpx);
|
||||
}
|
||||
|
||||
.tab { flex: 1; text-align: center; color: #aaa; font-size: 26rpx; }
|
||||
.tab.active { color: #f2d58a; }
|
||||
.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, #F6E27A 0%, #E6C65B 40%, #CBA63D 100%);
|
||||
color: #212121;
|
||||
background: linear-gradient(135deg, #FFE69A 0%, #F4CF62 45%, #D7A72E 100%);
|
||||
color: #493c1b;
|
||||
border-radius: 999rpx;
|
||||
font-size: 30rpx;
|
||||
font-weight: 700;
|
||||
box-shadow: 0 10rpx 22rpx rgba(203,166,61,0.35), 0 0 0 2rpx rgba(255,255,255,0.45) inset;
|
||||
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;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
/* 颜色变量 */
|
||||
|
||||
/* 行为相关颜色 */
|
||||
$uni-color-primary: #007aff;
|
||||
$uni-color-primary: #D7A72E; /* 奢华金色主色 */
|
||||
$uni-color-success: #4cd964;
|
||||
$uni-color-warning: #f0ad4e;
|
||||
$uni-color-error: #dd524d;
|
||||
|
||||
1
frontend/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map
vendored
Normal file
1
frontend/unpackage/dist/dev/.sourcemap/mp-weixin/app.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["<script>\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\t\t},\r\n\t\tonShow: function() {\r\n\t\t\tconsole.log('App Show')\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t/*每个页面公共css */\r\n</style>\n","import App from './App'\n\n// #ifndef VUE3\nimport Vue from 'vue'\nimport './uni.promisify.adaptor'\nVue.config.productionTip = false\nApp.mpType = 'app'\nconst app = new Vue({\n ...App\n})\napp.$mount()\n// #endif\n\n// #ifdef VUE3\nimport { createSSRApp } from 'vue'\nexport function createApp() {\n const app = createSSRApp(App)\n return {\n app\n }\n}\n// #endif"],"names":["uni","createSSRApp","App"],"mappings":";;;;;;AACC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,gBAAY,YAAY;AAAA,EACxB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,UAAU;AAAA,EACtB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACvB;AACD;ACIM,SAAS,YAAY;AAC1B,QAAM,MAAMC,cAAY,aAACC,SAAG;AAC5B,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"}
|
||||
1
frontend/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map
vendored
Normal file
1
frontend/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"assets.js","sources":["../../../static/metal-bg.jpg"],"sourcesContent":["export default \"/static/metal-bg.jpg\""],"names":[],"mappings":";AAAA,MAAe,aAAA;;"}
|
||||
1
frontend/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
vendored
Normal file
1
frontend/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
1
frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
vendored
Normal file
1
frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
187
frontend/unpackage/dist/dev/app-plus/app-service.js
vendored
187
frontend/unpackage/dist/dev/app-plus/app-service.js
vendored
@@ -31,6 +31,7 @@ if (uni.restoreGlobal) {
|
||||
}
|
||||
(function(vue) {
|
||||
"use strict";
|
||||
const _imports_0 = "/static/metal-bg.jpg";
|
||||
const _export_sfc = (sfc, props) => {
|
||||
const target = sfc.__vccOpts || sfc;
|
||||
for (const [key, val] of props) {
|
||||
@@ -45,16 +46,22 @@ if (uni.restoreGlobal) {
|
||||
monthProfit: "0.00",
|
||||
stockQty: "0.00",
|
||||
activeTab: "home",
|
||||
notices: [
|
||||
{ text: "选材精工:不锈钢、合金钢,耐腐蚀更耐用", tag: "品质" },
|
||||
{ text: "表面工艺:电镀锌/镀镍/发黑处理,性能均衡", tag: "工艺" },
|
||||
{ text: "库存齐全:螺丝、螺母、垫圈、膨胀螺栓等现货", tag: "库存" },
|
||||
{ text: "企业采购支持:批量优惠,次日发货", tag: "服务" }
|
||||
],
|
||||
features: [
|
||||
{ key: "customer", title: "客户", icon: "👥", color: "#3EC1D3" },
|
||||
{ key: "sale", title: "销售", icon: "💰", color: "#00C2A8" },
|
||||
{ key: "account", title: "账户", icon: "💳", color: "#21BA45" },
|
||||
{ key: "supplier", title: "供应商", icon: "🚚", color: "#FF8C66" },
|
||||
{ key: "purchase", title: "进货", icon: "🛒", color: "#F5A623" },
|
||||
{ key: "otherPay", title: "其他支出", icon: "💸", color: "#F5C451" },
|
||||
{ key: "vip", title: "VIP会员", icon: "👑", color: "#FF9F43" },
|
||||
{ key: "report", title: "报表", icon: "📊", color: "#6C7BFF" },
|
||||
{ key: "more", title: "更多", icon: "⋯", color: "#BCAAA4" }
|
||||
{ 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: "⋯" }
|
||||
]
|
||||
};
|
||||
},
|
||||
@@ -64,11 +71,29 @@ if (uni.restoreGlobal) {
|
||||
},
|
||||
onCreateOrder() {
|
||||
uni.showToast({ title: "开单(开发中)", icon: "none" });
|
||||
},
|
||||
onNoticeTap(n) {
|
||||
uni.showModal({
|
||||
title: "公告",
|
||||
content: n.text,
|
||||
showCancel: false
|
||||
});
|
||||
},
|
||||
onNoticeList() {
|
||||
uni.showToast({ title: "公告列表(开发中)", icon: "none" });
|
||||
},
|
||||
onIconError(item) {
|
||||
item.img = "";
|
||||
}
|
||||
}
|
||||
};
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return vue.openBlock(), vue.createElementBlock("view", { class: "home" }, [
|
||||
vue.createElementVNode("image", {
|
||||
class: "home-bg",
|
||||
src: _imports_0,
|
||||
mode: "aspectFill"
|
||||
}),
|
||||
vue.createCommentVNode(" 顶部统计卡片 "),
|
||||
vue.createElementVNode("view", { class: "hero" }, [
|
||||
vue.createElementVNode("view", { class: "hero-top" }, [
|
||||
@@ -110,47 +135,105 @@ if (uni.restoreGlobal) {
|
||||
])
|
||||
])
|
||||
]),
|
||||
vue.createCommentVNode(" 功能九宫格 "),
|
||||
vue.createElementVNode("view", { class: "grid" }, [
|
||||
(vue.openBlock(true), vue.createElementBlock(
|
||||
vue.Fragment,
|
||||
null,
|
||||
vue.renderList($data.features, (item) => {
|
||||
return vue.openBlock(), vue.createElementBlock("view", {
|
||||
class: "grid-item",
|
||||
key: item.key,
|
||||
onClick: ($event) => $options.onFeatureTap(item)
|
||||
}, [
|
||||
vue.createElementVNode(
|
||||
"view",
|
||||
{
|
||||
class: "icon",
|
||||
style: vue.normalizeStyle({ backgroundColor: item.color })
|
||||
},
|
||||
[
|
||||
vue.createCommentVNode(" 公告栏:自动轮播,可点击查看详情 "),
|
||||
vue.createElementVNode("view", { class: "notice" }, [
|
||||
vue.createElementVNode("view", { class: "notice-left" }, "公告"),
|
||||
vue.createElementVNode("swiper", {
|
||||
class: "notice-swiper",
|
||||
circular: "",
|
||||
autoplay: "",
|
||||
interval: "4000",
|
||||
duration: "400",
|
||||
vertical: ""
|
||||
}, [
|
||||
(vue.openBlock(true), vue.createElementBlock(
|
||||
vue.Fragment,
|
||||
null,
|
||||
vue.renderList($data.notices, (n, idx) => {
|
||||
return vue.openBlock(), vue.createElementBlock("swiper-item", { key: idx }, [
|
||||
vue.createElementVNode("view", {
|
||||
class: "notice-item",
|
||||
onClick: ($event) => $options.onNoticeTap(n)
|
||||
}, [
|
||||
vue.createElementVNode(
|
||||
"text",
|
||||
{ class: "icon-text" },
|
||||
vue.toDisplayString(item.icon),
|
||||
{ class: "notice-text" },
|
||||
vue.toDisplayString(n.text),
|
||||
1
|
||||
/* TEXT */
|
||||
)
|
||||
],
|
||||
4
|
||||
/* STYLE */
|
||||
),
|
||||
vue.createElementVNode(
|
||||
"text",
|
||||
{ class: "grid-title" },
|
||||
vue.toDisplayString(item.title),
|
||||
1
|
||||
/* TEXT */
|
||||
)
|
||||
], 8, ["onClick"]);
|
||||
}),
|
||||
128
|
||||
/* KEYED_FRAGMENT */
|
||||
))
|
||||
),
|
||||
n.tag ? (vue.openBlock(), vue.createElementBlock(
|
||||
"text",
|
||||
{
|
||||
key: 0,
|
||||
class: "notice-tag"
|
||||
},
|
||||
vue.toDisplayString(n.tag),
|
||||
1
|
||||
/* TEXT */
|
||||
)) : vue.createCommentVNode("v-if", true)
|
||||
], 8, ["onClick"])
|
||||
]);
|
||||
}),
|
||||
128
|
||||
/* KEYED_FRAGMENT */
|
||||
))
|
||||
]),
|
||||
vue.createElementVNode("view", {
|
||||
class: "notice-right",
|
||||
onClick: _cache[0] || (_cache[0] = (...args) => $options.onNoticeList && $options.onNoticeList(...args))
|
||||
}, "更多")
|
||||
]),
|
||||
vue.createCommentVNode(" 分割标题:产品与功能 "),
|
||||
vue.createElementVNode("view", { class: "section-title" }, [
|
||||
vue.createElementVNode("text", { class: "section-text" }, "常用功能")
|
||||
]),
|
||||
vue.createCommentVNode(" 功能九宫格(玻璃容器 + 圆角方形图标) "),
|
||||
vue.createElementVNode("view", { class: "grid-wrap" }, [
|
||||
vue.createElementVNode("view", { class: "grid" }, [
|
||||
(vue.openBlock(true), vue.createElementBlock(
|
||||
vue.Fragment,
|
||||
null,
|
||||
vue.renderList($data.features, (item) => {
|
||||
return vue.openBlock(), vue.createElementBlock("view", {
|
||||
class: "grid-item",
|
||||
key: item.key,
|
||||
onClick: ($event) => $options.onFeatureTap(item)
|
||||
}, [
|
||||
vue.createElementVNode("view", { class: "icon icon-squircle" }, [
|
||||
item.img ? (vue.openBlock(), vue.createElementBlock("image", {
|
||||
key: 0,
|
||||
src: item.img,
|
||||
class: "icon-img",
|
||||
mode: "aspectFit",
|
||||
onError: ($event) => $options.onIconError(item)
|
||||
}, null, 40, ["src", "onError"])) : item.emoji ? (vue.openBlock(), vue.createElementBlock(
|
||||
"text",
|
||||
{
|
||||
key: 1,
|
||||
class: "icon-emoji"
|
||||
},
|
||||
vue.toDisplayString(item.emoji),
|
||||
1
|
||||
/* TEXT */
|
||||
)) : (vue.openBlock(), vue.createElementBlock("view", {
|
||||
key: 2,
|
||||
class: "icon-placeholder"
|
||||
}))
|
||||
]),
|
||||
vue.createElementVNode(
|
||||
"text",
|
||||
{ class: "grid-chip" },
|
||||
vue.toDisplayString(item.title),
|
||||
1
|
||||
/* TEXT */
|
||||
)
|
||||
], 8, ["onClick"]);
|
||||
}),
|
||||
128
|
||||
/* KEYED_FRAGMENT */
|
||||
))
|
||||
])
|
||||
]),
|
||||
vue.createCommentVNode(" 底部操作条 "),
|
||||
vue.createElementVNode("view", { class: "bottom-bar" }, [
|
||||
@@ -158,7 +241,7 @@ if (uni.restoreGlobal) {
|
||||
"view",
|
||||
{
|
||||
class: vue.normalizeClass(["tab", { active: $data.activeTab === "home" }]),
|
||||
onClick: _cache[0] || (_cache[0] = ($event) => $data.activeTab = "home")
|
||||
onClick: _cache[1] || (_cache[1] = ($event) => $data.activeTab = "home")
|
||||
},
|
||||
[
|
||||
vue.createElementVNode("text", null, "首页")
|
||||
@@ -168,7 +251,7 @@ if (uni.restoreGlobal) {
|
||||
),
|
||||
vue.createElementVNode("view", {
|
||||
class: "tab primary",
|
||||
onClick: _cache[1] || (_cache[1] = (...args) => $options.onCreateOrder && $options.onCreateOrder(...args))
|
||||
onClick: _cache[2] || (_cache[2] = (...args) => $options.onCreateOrder && $options.onCreateOrder(...args))
|
||||
}, [
|
||||
vue.createElementVNode("text", null, "开单")
|
||||
]),
|
||||
@@ -176,7 +259,7 @@ if (uni.restoreGlobal) {
|
||||
"view",
|
||||
{
|
||||
class: vue.normalizeClass(["tab", { active: $data.activeTab === "detail" }]),
|
||||
onClick: _cache[2] || (_cache[2] = ($event) => $data.activeTab = "detail")
|
||||
onClick: _cache[3] || (_cache[3] = ($event) => $data.activeTab = "detail")
|
||||
},
|
||||
[
|
||||
vue.createElementVNode("text", null, "明细")
|
||||
@@ -188,7 +271,7 @@ if (uni.restoreGlobal) {
|
||||
"view",
|
||||
{
|
||||
class: vue.normalizeClass(["tab", { active: $data.activeTab === "me" }]),
|
||||
onClick: _cache[3] || (_cache[3] = ($event) => $data.activeTab = "me")
|
||||
onClick: _cache[4] || (_cache[4] = ($event) => $data.activeTab = "me")
|
||||
},
|
||||
[
|
||||
vue.createElementVNode("text", null, "我的")
|
||||
@@ -199,7 +282,7 @@ if (uni.restoreGlobal) {
|
||||
])
|
||||
]);
|
||||
}
|
||||
const PagesIndexIndex = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__file", "D:/软件/配件查询/林林林/pages/index/index.vue"]]);
|
||||
const PagesIndexIndex = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__file", "D:/wx/PartsInquiry/frontend/pages/index/index.vue"]]);
|
||||
__definePage("pages/index/index", PagesIndexIndex);
|
||||
function formatAppLog(type, filename, ...args) {
|
||||
if (uni.__log__) {
|
||||
@@ -219,7 +302,7 @@ if (uni.restoreGlobal) {
|
||||
formatAppLog("log", "at App.vue:10", "App Hide");
|
||||
}
|
||||
};
|
||||
const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "D:/软件/配件查询/林林林/App.vue"]]);
|
||||
const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "D:/wx/PartsInquiry/frontend/App.vue"]]);
|
||||
function createApp() {
|
||||
const app = vue.createVueApp(App);
|
||||
return {
|
||||
|
||||
@@ -1,78 +1,160 @@
|
||||
|
||||
.home {
|
||||
padding-bottom: 4.375rem;
|
||||
/* 深色奢华背景:暗金晕光 + 碳素黑 */
|
||||
background: radial-gradient(120% 80% at 100% 0, rgba(214,175,85,0.10) 0, rgba(214,175,85,0.00) 40%), linear-gradient(180deg, #0b0c10 0%, #090b11 100%);
|
||||
position: relative;
|
||||
/* 明亮奢华背景:金属拉丝纹理覆盖层 + 柔和浅色渐变 */
|
||||
background:
|
||||
repeating-linear-gradient(0deg, rgba(180,180,180,0.12) 0, rgba(180,180,180,0.12) 0.0625rem, rgba(255,255,255,0.0) 0.0625rem, rgba(255,255,255,0.0) 0.3125rem),
|
||||
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 0.75rem 0.75rem;
|
||||
padding: 0.625rem 0.6875rem;
|
||||
border-radius: 0.625rem;
|
||||
background: rgba(255,255,255,0.78);
|
||||
-webkit-backdrop-filter: blur(0.375rem);
|
||||
backdrop-filter: blur(0.375rem);
|
||||
border: 0.0625rem solid rgba(203, 166, 61, 0.28);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
.notice-left {
|
||||
flex: 0 0 auto;
|
||||
display: inline-flex; align-items: center; justify-content: center;
|
||||
min-width: 3rem; height: 1.375rem;
|
||||
padding: 0 0.5rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: linear-gradient(135deg, #FFE69A, #F4CF62);
|
||||
color: #3f320f;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
.notice-swiper { height: 2.25rem; flex: 1;
|
||||
}
|
||||
.notice-item { display: flex; align-items: center; gap: 0.375rem; min-height: 2.25rem;
|
||||
}
|
||||
.notice-text { color: #4b3e19; font-size: 0.875rem; line-height: 1.125rem; font-weight: 600; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
|
||||
}
|
||||
.notice-tag { color: #B4880F; font-size: 0.6875rem; padding: 0.125rem 0.3125rem; border-radius: 31.21875rem; background: rgba(215,167,46,0.18);
|
||||
}
|
||||
.notice-right { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; min-width: 2.25rem; height: 1.375rem; color: #B4880F; font-size: 0.8125rem; padding-left: 0.25rem;
|
||||
}
|
||||
|
||||
/* 分割标题 */
|
||||
.section-title { display: flex; align-items: center; gap: 0.5rem; padding: 0.3125rem 0.875rem 0;
|
||||
}
|
||||
.section-title::before { content: ''; display: block; width: 0.25rem; height: 0.875rem; border-radius: 0.25rem; background: linear-gradient(180deg, #FFE69A, #D7A72E);
|
||||
}
|
||||
.section-text { color: #6b5a2a; font-size: 0.875rem; font-weight: 700; letter-spacing: 0.03125rem;
|
||||
}
|
||||
|
||||
/* 顶部英雄区:浅色玻璃卡片,带金色描边与柔和阴影 */
|
||||
.hero {
|
||||
margin: 0.75rem;
|
||||
padding: 1rem;
|
||||
border-radius: 0.75rem;
|
||||
background: repeating-linear-gradient(135deg, rgba(255,255,255,0.04) 0, rgba(255,255,255,0.04) 0.0625rem, rgba(0,0,0,0.0) 0.0625rem, rgba(0,0,0,0.0) 0.5rem), linear-gradient(145deg, #16181e 0%, #0e1016 100%);
|
||||
color: #ffffff;
|
||||
border: 0.0625rem solid rgba(236, 203, 116, 0.6);
|
||||
box-shadow: 0 0.5625rem 1.125rem rgba(0, 0, 0, 0.35), 0 0 0 0.0625rem rgba(236,203,116,0.25) inset;
|
||||
border-radius: 0.875rem;
|
||||
background: rgba(255, 255, 255, 0.65);
|
||||
-webkit-backdrop-filter: blur(0.4375rem);
|
||||
backdrop-filter: blur(0.4375rem);
|
||||
border: 0.0625rem solid rgba(203, 166, 61, 0.35);
|
||||
box-shadow: 0 0.375rem 0.875rem rgba(0, 0, 0, 0.10), 0 0 0 0.0625rem rgba(255,255,255,0.60) inset;
|
||||
color: #473c22;
|
||||
}
|
||||
.hero-top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 0.75rem;
|
||||
margin-bottom: 0.625rem;
|
||||
}
|
||||
.brand {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
font-size: 1.3125rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.0625rem;
|
||||
color: #f2d58a;
|
||||
color: #B4880F; /* 金色标题 */
|
||||
}
|
||||
.cta {
|
||||
padding: 0.25rem 0.625rem;
|
||||
padding: 0.3125rem 0.6875rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: linear-gradient(135deg, rgba(0, 212, 255, 0.35), rgba(0, 153, 255, 0.25));
|
||||
border: 0.0625rem solid rgba(0, 187, 255, 0.4);
|
||||
background: linear-gradient(135deg, rgba(255, 220, 128, 0.65), rgba(255, 240, 190, 0.65));
|
||||
border: 0.0625rem solid rgba(203, 166, 61, 0.45);
|
||||
box-shadow: 0 0.1875rem 0.4375rem rgba(203, 166, 61, 0.25);
|
||||
}
|
||||
.cta-text { color: #ffffff; font-size: 0.8125rem;
|
||||
.cta-text { color: #5a4712; font-size: 0.8125rem;
|
||||
}
|
||||
.kpi { display: flex;
|
||||
}
|
||||
.kpi-item { flex: 1;
|
||||
}
|
||||
.kpi-label { opacity: 0.9; font-size: 0.75rem;
|
||||
.kpi-label { opacity: 0.9; font-size: 0.75rem; color: #6b5a2a;
|
||||
}
|
||||
.kpi-value { display: block; margin-top: 0.375rem; font-size: 1.4375rem; font-weight: 700; color: #f2d58a;
|
||||
.kpi-value { display: block; margin-top: 0.375rem; font-size: 1.4375rem; font-weight: 800; color: #B4880F;
|
||||
}
|
||||
|
||||
/* 功能容器:整体玻璃面板,增强融入感 */
|
||||
.grid-wrap {
|
||||
margin: 0 0.625rem 1rem;
|
||||
padding: 0.875rem 0.625rem 0.375rem;
|
||||
border-radius: 0.75rem;
|
||||
background: rgba(255,255,255,0.55);
|
||||
-webkit-backdrop-filter: blur(0.3125rem);
|
||||
backdrop-filter: blur(0.3125rem);
|
||||
border: 0.0625rem solid rgba(203,166,61,0.22);
|
||||
box-shadow: 0 0.25rem 0.5625rem rgba(0,0,0,0.06);
|
||||
}
|
||||
|
||||
/* 功能九宫格 */
|
||||
.grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
grid-row-gap: 1.5rem;
|
||||
grid-column-gap: 0.875rem;
|
||||
padding: 1.25rem 0.875rem 0.625rem;
|
||||
grid-row-gap: 2rem;
|
||||
grid-column-gap: 1.125rem;
|
||||
padding: 1.25rem 0.875rem 0.875rem;
|
||||
}
|
||||
.grid-item { display: flex; flex-direction: column; align-items: center;
|
||||
.grid-item { display: flex; flex-direction: column; align-items: center; text-align: center;
|
||||
}
|
||||
.icon {
|
||||
width: 3.75rem;
|
||||
height: 3.75rem;
|
||||
.icon { display: flex; align-items: center; justify-content: center; color: #6b5a2a; position: relative;
|
||||
}
|
||||
.icon-squircle {
|
||||
width: 4.125rem; height: 4.125rem;
|
||||
border-radius: 0.875rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #fff;
|
||||
background: linear-gradient(145deg, #1a1d24 0%, #0f1218 100%);
|
||||
border: 0.0625rem solid rgba(236,203,116,0.55);
|
||||
box-shadow: 0 0.3125rem 0.6875rem rgba(0,0,0,0.26), 0 0 0 0.0625rem rgba(236,203,116,0.18) inset;
|
||||
background: linear-gradient(145deg, rgba(255,255,255,0.92), rgba(255,255,255,0.70));
|
||||
-webkit-backdrop-filter: blur(0.375rem);
|
||||
backdrop-filter: blur(0.375rem);
|
||||
border: 0.0625rem solid rgba(203,166,61,0.22);
|
||||
box-shadow: 0 0.3125rem 0.75rem rgba(0,0,0,0.10), 0 0 0 0.0625rem rgba(255,255,255,0.65) inset;
|
||||
overflow: hidden;
|
||||
}
|
||||
.icon-text { font-size: 1.4375rem; font-weight: 600;
|
||||
.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);
|
||||
}
|
||||
.grid-title { margin-top: 0.5625rem; color: #e6e6e6; font-size: 0.875rem;
|
||||
.icon-img { width: 3rem; height: 3rem;
|
||||
}
|
||||
.icon-emoji { font-size: 1.875rem; line-height: 1;
|
||||
}
|
||||
.icon-placeholder { width: 2.625rem; height: 2.625rem; border-radius: 0.5625rem; 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) 0.25rem, transparent 0.25rem, transparent 0.5rem),
|
||||
repeating-linear-gradient(0deg, rgba(180,150,60,0.20) 0, rgba(180,150,60,0.20) 0.25rem, transparent 0.25rem, transparent 0.5rem);
|
||||
box-shadow: inset 0 0 0 0.0625rem rgba(203,166,61,0.28);
|
||||
}
|
||||
.icon-text { font-size: 1.4375rem; font-weight: 700;
|
||||
}
|
||||
.grid-title { display: none;
|
||||
}
|
||||
.grid-chip { margin-top: 0.4375rem; padding: 0.1875rem 0.4375rem; border-radius: 31.21875rem; background: rgba(215,167,46,0.16); color: #5a4a1f; font-size: 0.6875rem;
|
||||
}
|
||||
|
||||
/* 底部操作条 */
|
||||
/* 底部操作条:浅色半透明 + 金色主按钮 */
|
||||
.bottom-bar {
|
||||
position: fixed;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
@@ -80,24 +162,24 @@
|
||||
align-items: center;
|
||||
justify-content: space-around;
|
||||
padding: 0.4375rem 0.5625rem calc(env(safe-area-inset-bottom) + 0.4375rem);
|
||||
background: rgba(12,14,20,0.92);
|
||||
box-shadow: 0 -0.1875rem 0.5625rem rgba(0,0,0,0.35);
|
||||
-webkit-backdrop-filter: blur(0.25rem);
|
||||
backdrop-filter: blur(0.25rem);
|
||||
background: rgba(255,255,255,0.85);
|
||||
box-shadow: 0 -0.1875rem 0.5625rem rgba(0,0,0,0.08);
|
||||
-webkit-backdrop-filter: blur(0.3125rem);
|
||||
backdrop-filter: blur(0.3125rem);
|
||||
}
|
||||
.tab { flex: 1; text-align: center; color: #aaa; font-size: 0.8125rem;
|
||||
.tab { flex: 1; text-align: center; color: #8a7535; font-size: 0.8125rem;
|
||||
}
|
||||
.tab.active { color: #f2d58a;
|
||||
.tab.active { color: #B4880F;
|
||||
}
|
||||
.tab.primary {
|
||||
flex: 0 0 auto;
|
||||
min-width: 5.625rem;
|
||||
margin: 0 0.5625rem;
|
||||
padding: 0.5625rem 1rem;
|
||||
background: linear-gradient(135deg, #F6E27A 0%, #E6C65B 40%, #CBA63D 100%);
|
||||
color: #212121;
|
||||
background: linear-gradient(135deg, #FFE69A 0%, #F4CF62 45%, #D7A72E 100%);
|
||||
color: #493c1b;
|
||||
border-radius: 31.21875rem;
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 700;
|
||||
box-shadow: 0 0.3125rem 0.6875rem rgba(203,166,61,0.35), 0 0 0 0.0625rem rgba(255,255,255,0.45) inset;
|
||||
font-weight: 800;
|
||||
box-shadow: 0 0.3125rem 0.6875rem rgba(215,167,46,0.25), 0 0 0 0.0625rem rgba(255,255,255,0.70) inset;
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
26
frontend/unpackage/dist/dev/mp-weixin/app.js
vendored
Normal file
26
frontend/unpackage/dist/dev/mp-weixin/app.js
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
||||
const common_vendor = require("./common/vendor.js");
|
||||
if (!Math) {
|
||||
"./pages/index/index.js";
|
||||
}
|
||||
const _sfc_main = {
|
||||
onLaunch: function() {
|
||||
common_vendor.index.__f__("log", "at App.vue:4", "App Launch");
|
||||
},
|
||||
onShow: function() {
|
||||
common_vendor.index.__f__("log", "at App.vue:7", "App Show");
|
||||
},
|
||||
onHide: function() {
|
||||
common_vendor.index.__f__("log", "at App.vue:10", "App Hide");
|
||||
}
|
||||
};
|
||||
function createApp() {
|
||||
const app = common_vendor.createSSRApp(_sfc_main);
|
||||
return {
|
||||
app
|
||||
};
|
||||
}
|
||||
createApp().app.mount("#app");
|
||||
exports.createApp = createApp;
|
||||
//# sourceMappingURL=../.sourcemap/mp-weixin/app.js.map
|
||||
12
frontend/unpackage/dist/dev/mp-weixin/app.json
vendored
Normal file
12
frontend/unpackage/dist/dev/mp-weixin/app.json
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"pages": [
|
||||
"pages/index/index"
|
||||
],
|
||||
"window": {
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "五金配件管家",
|
||||
"navigationBarBackgroundColor": "#F8F8F8",
|
||||
"backgroundColor": "#F8F8F8"
|
||||
},
|
||||
"usingComponents": {}
|
||||
}
|
||||
3
frontend/unpackage/dist/dev/mp-weixin/app.wxss
vendored
Normal file
3
frontend/unpackage/dist/dev/mp-weixin/app.wxss
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
/*每个页面公共css */
|
||||
page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;}
|
||||
4
frontend/unpackage/dist/dev/mp-weixin/common/assets.js
vendored
Normal file
4
frontend/unpackage/dist/dev/mp-weixin/common/assets.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
"use strict";
|
||||
const _imports_0 = "/static/metal-bg.jpg";
|
||||
exports._imports_0 = _imports_0;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/common/assets.js.map
|
||||
7875
frontend/unpackage/dist/dev/mp-weixin/common/vendor.js
vendored
Normal file
7875
frontend/unpackage/dist/dev/mp-weixin/common/vendor.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
96
frontend/unpackage/dist/dev/mp-weixin/pages/index/index.js
vendored
Normal file
96
frontend/unpackage/dist/dev/mp-weixin/pages/index/index.js
vendored
Normal 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
|
||||
4
frontend/unpackage/dist/dev/mp-weixin/pages/index/index.json
vendored
Normal file
4
frontend/unpackage/dist/dev/mp-weixin/pages/index/index.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"navigationBarTitleText": "五金配件管家",
|
||||
"usingComponents": {}
|
||||
}
|
||||
1
frontend/unpackage/dist/dev/mp-weixin/pages/index/index.wxml
vendored
Normal file
1
frontend/unpackage/dist/dev/mp-weixin/pages/index/index.wxml
vendored
Normal 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>
|
||||
185
frontend/unpackage/dist/dev/mp-weixin/pages/index/index.wxss
vendored
Normal file
185
frontend/unpackage/dist/dev/mp-weixin/pages/index/index.wxss
vendored
Normal 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;
|
||||
}
|
||||
36
frontend/unpackage/dist/dev/mp-weixin/project.config.json
vendored
Normal file
36
frontend/unpackage/dist/dev/mp-weixin/project.config.json
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"description": "项目配置文件。",
|
||||
"packOptions": {
|
||||
"ignore": []
|
||||
},
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"es6": true,
|
||||
"postcss": false,
|
||||
"minified": false,
|
||||
"newFeature": true,
|
||||
"bigPackageSizeSupport": true
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "",
|
||||
"appid": "touristappid",
|
||||
"projectname": "林林林",
|
||||
"condition": {
|
||||
"search": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"conversation": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"game": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"miniprogram": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
frontend/unpackage/dist/dev/mp-weixin/static/logo.png
vendored
Normal file
BIN
frontend/unpackage/dist/dev/mp-weixin/static/logo.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.9 KiB |
Reference in New Issue
Block a user