前端搭建
This commit is contained in:
17
frontend/App.vue
Normal file
17
frontend/App.vue
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
onLaunch: function() {
|
||||||
|
console.log('App Launch')
|
||||||
|
},
|
||||||
|
onShow: function() {
|
||||||
|
console.log('App Show')
|
||||||
|
},
|
||||||
|
onHide: function() {
|
||||||
|
console.log('App Hide')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/*每个页面公共css */
|
||||||
|
</style>
|
||||||
20
frontend/index.html
Normal file
20
frontend/index.html
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<script>
|
||||||
|
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
|
||||||
|
CSS.supports('top: constant(a)'))
|
||||||
|
document.write(
|
||||||
|
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||||
|
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||||
|
</script>
|
||||||
|
<title></title>
|
||||||
|
<!--preload-links-->
|
||||||
|
<!--app-context-->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"><!--app-html--></div>
|
||||||
|
<script type="module" src="/main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
22
frontend/main.js
Normal file
22
frontend/main.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import App from './App'
|
||||||
|
|
||||||
|
// #ifndef VUE3
|
||||||
|
import Vue from 'vue'
|
||||||
|
import './uni.promisify.adaptor'
|
||||||
|
Vue.config.productionTip = false
|
||||||
|
App.mpType = 'app'
|
||||||
|
const app = new Vue({
|
||||||
|
...App
|
||||||
|
})
|
||||||
|
app.$mount()
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// #ifdef VUE3
|
||||||
|
import { createSSRApp } from 'vue'
|
||||||
|
export function createApp() {
|
||||||
|
const app = createSSRApp(App)
|
||||||
|
return {
|
||||||
|
app
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
72
frontend/manifest.json
Normal file
72
frontend/manifest.json
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"name" : "林林林",
|
||||||
|
"appid" : "",
|
||||||
|
"description" : "",
|
||||||
|
"versionName" : "1.0.0",
|
||||||
|
"versionCode" : "100",
|
||||||
|
"transformPx" : false,
|
||||||
|
/* 5+App特有相关 */
|
||||||
|
"app-plus" : {
|
||||||
|
"usingComponents" : true,
|
||||||
|
"nvueStyleCompiler" : "uni-app",
|
||||||
|
"compilerVersion" : 3,
|
||||||
|
"splashscreen" : {
|
||||||
|
"alwaysShowBeforeRender" : true,
|
||||||
|
"waiting" : true,
|
||||||
|
"autoclose" : true,
|
||||||
|
"delay" : 0
|
||||||
|
},
|
||||||
|
/* 模块配置 */
|
||||||
|
"modules" : {},
|
||||||
|
/* 应用发布信息 */
|
||||||
|
"distribute" : {
|
||||||
|
/* android打包配置 */
|
||||||
|
"android" : {
|
||||||
|
"permissions" : [
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
/* ios打包配置 */
|
||||||
|
"ios" : {},
|
||||||
|
/* SDK配置 */
|
||||||
|
"sdkConfigs" : {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/* 快应用特有相关 */
|
||||||
|
"quickapp" : {},
|
||||||
|
/* 小程序特有相关 */
|
||||||
|
"mp-weixin" : {
|
||||||
|
"appid" : "",
|
||||||
|
"setting" : {
|
||||||
|
"urlCheck" : false
|
||||||
|
},
|
||||||
|
"usingComponents" : true
|
||||||
|
},
|
||||||
|
"mp-alipay" : {
|
||||||
|
"usingComponents" : true
|
||||||
|
},
|
||||||
|
"mp-baidu" : {
|
||||||
|
"usingComponents" : true
|
||||||
|
},
|
||||||
|
"mp-toutiao" : {
|
||||||
|
"usingComponents" : true
|
||||||
|
},
|
||||||
|
"uniStatistics" : {
|
||||||
|
"enable" : false
|
||||||
|
},
|
||||||
|
"vueVersion" : "3"
|
||||||
|
}
|
||||||
17
frontend/pages.json
Normal file
17
frontend/pages.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
|
||||||
|
{
|
||||||
|
"path": "pages/index/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "五金配件管家"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"globalStyle": {
|
||||||
|
"navigationBarTextStyle": "black",
|
||||||
|
"navigationBarTitleText": "五金配件管家",
|
||||||
|
"navigationBarBackgroundColor": "#F8F8F8",
|
||||||
|
"backgroundColor": "#F8F8F8"
|
||||||
|
},
|
||||||
|
"uniIdRouter": {}
|
||||||
|
}
|
||||||
186
frontend/pages/index/index.vue
Normal file
186
frontend/pages/index/index.vue
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
<template>
|
||||||
|
<view class="home">
|
||||||
|
<!-- 顶部统计卡片 -->
|
||||||
|
<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">{{ todayAmount }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="kpi-item">
|
||||||
|
<text class="kpi-label">本月利润</text>
|
||||||
|
<text class="kpi-value">{{ monthProfit }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="kpi-item">
|
||||||
|
<text class="kpi-label">库存数量</text>
|
||||||
|
<text class="kpi-value">{{ stockQty }}</text>
|
||||||
|
</view>
|
||||||
|
</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>
|
||||||
|
<text class="grid-title">{{ item.title }}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 底部操作条 -->
|
||||||
|
<view class="bottom-bar">
|
||||||
|
<view class="tab" :class="{ active: activeTab==='home' }" @click="activeTab='home'">
|
||||||
|
<text>首页</text>
|
||||||
|
</view>
|
||||||
|
<view class="tab primary" @click="onCreateOrder">
|
||||||
|
<text>开单</text>
|
||||||
|
</view>
|
||||||
|
<view class="tab" :class="{ active: activeTab==='detail' }" @click="activeTab='detail'">
|
||||||
|
<text>明细</text>
|
||||||
|
</view>
|
||||||
|
<view class="tab" :class="{ active: activeTab==='me' }" @click="activeTab='me'">
|
||||||
|
<text>我的</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
todayAmount: '0.00',
|
||||||
|
monthProfit: '0.00',
|
||||||
|
stockQty: '0.00',
|
||||||
|
activeTab: 'home',
|
||||||
|
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' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onFeatureTap(item) {
|
||||||
|
uni.showToast({ title: item.title + '(开发中)', icon: 'none' })
|
||||||
|
},
|
||||||
|
onCreateOrder() {
|
||||||
|
uni.showToast({ title: '开单(开发中)', icon: 'none' })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<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%);
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 顶部渐变英雄区:深色石墨 + 金色高光,并叠加金属拉丝纹理 */
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-top {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 24rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.brand {
|
||||||
|
font-size: 40rpx;
|
||||||
|
font-weight: 600;
|
||||||
|
letter-spacing: 2rpx;
|
||||||
|
color: #f2d58a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta {
|
||||||
|
padding: 8rpx 20rpx;
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-text { color: #ffffff; 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; }
|
||||||
|
|
||||||
|
/* 功能九宫格 */
|
||||||
|
.grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
grid-row-gap: 48rpx;
|
||||||
|
grid-column-gap: 28rpx;
|
||||||
|
padding: 40rpx 28rpx 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid-item { display: flex; flex-direction: column; align-items: center; }
|
||||||
|
.icon {
|
||||||
|
width: 120rpx;
|
||||||
|
height: 120rpx;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
.icon-text { font-size: 46rpx; font-weight: 600; }
|
||||||
|
.grid-title { margin-top: 18rpx; color: #e6e6e6; font-size: 28rpx; }
|
||||||
|
|
||||||
|
/* 底部操作条 */
|
||||||
|
.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(12,14,20,0.92);
|
||||||
|
box-shadow: 0 -6rpx 18rpx rgba(0,0,0,0.35);
|
||||||
|
backdrop-filter: blur(8rpx);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab { flex: 1; text-align: center; color: #aaa; font-size: 26rpx; }
|
||||||
|
.tab.active { color: #f2d58a; }
|
||||||
|
.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;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
BIN
frontend/static/logo.png
Normal file
BIN
frontend/static/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.9 KiB |
13
frontend/uni.promisify.adaptor.js
Normal file
13
frontend/uni.promisify.adaptor.js
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
uni.addInterceptor({
|
||||||
|
returnValue (res) {
|
||||||
|
if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
res.then((res) => {
|
||||||
|
if (!res) return resolve(res)
|
||||||
|
return res[0] ? reject(res[0]) : resolve(res[1])
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
76
frontend/uni.scss
Normal file
76
frontend/uni.scss
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
/**
|
||||||
|
* 这里是uni-app内置的常用样式变量
|
||||||
|
*
|
||||||
|
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||||
|
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||||
|
*
|
||||||
|
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* 颜色变量 */
|
||||||
|
|
||||||
|
/* 行为相关颜色 */
|
||||||
|
$uni-color-primary: #007aff;
|
||||||
|
$uni-color-success: #4cd964;
|
||||||
|
$uni-color-warning: #f0ad4e;
|
||||||
|
$uni-color-error: #dd524d;
|
||||||
|
|
||||||
|
/* 文字基本颜色 */
|
||||||
|
$uni-text-color:#333;//基本色
|
||||||
|
$uni-text-color-inverse:#fff;//反色
|
||||||
|
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
|
||||||
|
$uni-text-color-placeholder: #808080;
|
||||||
|
$uni-text-color-disable:#c0c0c0;
|
||||||
|
|
||||||
|
/* 背景颜色 */
|
||||||
|
$uni-bg-color:#ffffff;
|
||||||
|
$uni-bg-color-grey:#f8f8f8;
|
||||||
|
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
|
||||||
|
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
|
||||||
|
|
||||||
|
/* 边框颜色 */
|
||||||
|
$uni-border-color:#c8c7cc;
|
||||||
|
|
||||||
|
/* 尺寸变量 */
|
||||||
|
|
||||||
|
/* 文字尺寸 */
|
||||||
|
$uni-font-size-sm:12px;
|
||||||
|
$uni-font-size-base:14px;
|
||||||
|
$uni-font-size-lg:16px;
|
||||||
|
|
||||||
|
/* 图片尺寸 */
|
||||||
|
$uni-img-size-sm:20px;
|
||||||
|
$uni-img-size-base:26px;
|
||||||
|
$uni-img-size-lg:40px;
|
||||||
|
|
||||||
|
/* Border Radius */
|
||||||
|
$uni-border-radius-sm: 2px;
|
||||||
|
$uni-border-radius-base: 3px;
|
||||||
|
$uni-border-radius-lg: 6px;
|
||||||
|
$uni-border-radius-circle: 50%;
|
||||||
|
|
||||||
|
/* 水平间距 */
|
||||||
|
$uni-spacing-row-sm: 5px;
|
||||||
|
$uni-spacing-row-base: 10px;
|
||||||
|
$uni-spacing-row-lg: 15px;
|
||||||
|
|
||||||
|
/* 垂直间距 */
|
||||||
|
$uni-spacing-col-sm: 4px;
|
||||||
|
$uni-spacing-col-base: 8px;
|
||||||
|
$uni-spacing-col-lg: 12px;
|
||||||
|
|
||||||
|
/* 透明度 */
|
||||||
|
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
|
||||||
|
|
||||||
|
/* 文章场景相关 */
|
||||||
|
$uni-color-title: #2C405A; // 文章标题颜色
|
||||||
|
$uni-font-size-title:20px;
|
||||||
|
$uni-color-subtitle: #555555; // 二级标题颜色
|
||||||
|
$uni-font-size-subtitle:26px;
|
||||||
|
$uni-color-paragraph: #3F536E; // 文章段落颜色
|
||||||
|
$uni-font-size-paragraph:15px;
|
||||||
11
frontend/unpackage/dist/dev/.nvue/app.css.js
vendored
Normal file
11
frontend/unpackage/dist/dev/.nvue/app.css.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __commonJS = (cb, mod) => function __require() {
|
||||||
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||||
|
};
|
||||||
|
var require_app_css = __commonJS({
|
||||||
|
"app.css.js"(exports) {
|
||||||
|
const _style_0 = {};
|
||||||
|
exports.styles = [_style_0];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
export default require_app_css();
|
||||||
2
frontend/unpackage/dist/dev/.nvue/app.js
vendored
Normal file
2
frontend/unpackage/dist/dev/.nvue/app.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Promise.resolve("./app.css.js").then(() => {
|
||||||
|
});
|
||||||
16
frontend/unpackage/dist/dev/app-plus/__uniappautomator.js
vendored
Normal file
16
frontend/unpackage/dist/dev/app-plus/__uniappautomator.js
vendored
Normal file
File diff suppressed because one or more lines are too long
32
frontend/unpackage/dist/dev/app-plus/__uniappchooselocation.js
vendored
Normal file
32
frontend/unpackage/dist/dev/app-plus/__uniappchooselocation.js
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
frontend/unpackage/dist/dev/app-plus/__uniapperror.png
vendored
Normal file
BIN
frontend/unpackage/dist/dev/app-plus/__uniapperror.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.7 KiB |
32
frontend/unpackage/dist/dev/app-plus/__uniappopenlocation.js
vendored
Normal file
32
frontend/unpackage/dist/dev/app-plus/__uniappopenlocation.js
vendored
Normal file
File diff suppressed because one or more lines are too long
33
frontend/unpackage/dist/dev/app-plus/__uniapppicker.js
vendored
Normal file
33
frontend/unpackage/dist/dev/app-plus/__uniapppicker.js
vendored
Normal file
File diff suppressed because one or more lines are too long
8
frontend/unpackage/dist/dev/app-plus/__uniappquill.js
vendored
Normal file
8
frontend/unpackage/dist/dev/app-plus/__uniappquill.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
frontend/unpackage/dist/dev/app-plus/__uniappquillimageresize.js
vendored
Normal file
1
frontend/unpackage/dist/dev/app-plus/__uniappquillimageresize.js
vendored
Normal file
File diff suppressed because one or more lines are too long
32
frontend/unpackage/dist/dev/app-plus/__uniappscan.js
vendored
Normal file
32
frontend/unpackage/dist/dev/app-plus/__uniappscan.js
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
frontend/unpackage/dist/dev/app-plus/__uniappsuccess.png
vendored
Normal file
BIN
frontend/unpackage/dist/dev/app-plus/__uniappsuccess.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
24
frontend/unpackage/dist/dev/app-plus/__uniappview.html
vendored
Normal file
24
frontend/unpackage/dist/dev/app-plus/__uniappview.html
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<title>View</title>
|
||||||
|
<link rel="icon" href="data:,">
|
||||||
|
<link rel="stylesheet" href="app.css" />
|
||||||
|
<script>var __uniConfig = {"globalStyle":{},"darkmode":false}</script>
|
||||||
|
<script>
|
||||||
|
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
|
||||||
|
CSS.supports('top: constant(a)'))
|
||||||
|
document.write(
|
||||||
|
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||||
|
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<script src="uni-app-view.umd.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
11
frontend/unpackage/dist/dev/app-plus/app-config-service.js
vendored
Normal file
11
frontend/unpackage/dist/dev/app-plus/app-config-service.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
;(function(){
|
||||||
|
let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[];
|
||||||
|
const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"五金配件管家","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"林林林","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"4.76","entryPagePath":"pages/index/index","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}};
|
||||||
|
const __uniRoutes = [{"path":"pages/index/index","meta":{"isQuit":true,"isEntry":true,"navigationBar":{"titleText":"五金配件管家","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute));
|
||||||
|
__uniConfig.styles=[];//styles
|
||||||
|
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||||
|
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||||
|
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:16})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:u,window:u,document:u,frames:u,self:u,location:u,navigator:u,localStorage:u,history:u,Caches:u,screen:u,alert:u,confirm:u,prompt:u,fetch:u,XMLHttpRequest:u,WebSocket:u,webkit:u,print:u}}}});
|
||||||
|
})();
|
||||||
|
|
||||||
1
frontend/unpackage/dist/dev/app-plus/app-config.js
vendored
Normal file
1
frontend/unpackage/dist/dev/app-plus/app-config.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
(function(){})();
|
||||||
237
frontend/unpackage/dist/dev/app-plus/app-service.js
vendored
Normal file
237
frontend/unpackage/dist/dev/app-plus/app-service.js
vendored
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
if (typeof Promise !== "undefined" && !Promise.prototype.finally) {
|
||||||
|
Promise.prototype.finally = function(callback) {
|
||||||
|
const promise = this.constructor;
|
||||||
|
return this.then(
|
||||||
|
(value) => promise.resolve(callback()).then(() => value),
|
||||||
|
(reason) => promise.resolve(callback()).then(() => {
|
||||||
|
throw reason;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
;
|
||||||
|
if (typeof uni !== "undefined" && uni && uni.requireGlobal) {
|
||||||
|
const global = uni.requireGlobal();
|
||||||
|
ArrayBuffer = global.ArrayBuffer;
|
||||||
|
Int8Array = global.Int8Array;
|
||||||
|
Uint8Array = global.Uint8Array;
|
||||||
|
Uint8ClampedArray = global.Uint8ClampedArray;
|
||||||
|
Int16Array = global.Int16Array;
|
||||||
|
Uint16Array = global.Uint16Array;
|
||||||
|
Int32Array = global.Int32Array;
|
||||||
|
Uint32Array = global.Uint32Array;
|
||||||
|
Float32Array = global.Float32Array;
|
||||||
|
Float64Array = global.Float64Array;
|
||||||
|
BigInt64Array = global.BigInt64Array;
|
||||||
|
BigUint64Array = global.BigUint64Array;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
if (uni.restoreGlobal) {
|
||||||
|
uni.restoreGlobal(Vue, weex, plus, setTimeout, clearTimeout, setInterval, clearInterval);
|
||||||
|
}
|
||||||
|
(function(vue) {
|
||||||
|
"use strict";
|
||||||
|
const _export_sfc = (sfc, props) => {
|
||||||
|
const target = sfc.__vccOpts || sfc;
|
||||||
|
for (const [key, val] of props) {
|
||||||
|
target[key] = val;
|
||||||
|
}
|
||||||
|
return target;
|
||||||
|
};
|
||||||
|
const _sfc_main$1 = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
todayAmount: "0.00",
|
||||||
|
monthProfit: "0.00",
|
||||||
|
stockQty: "0.00",
|
||||||
|
activeTab: "home",
|
||||||
|
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" }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onFeatureTap(item) {
|
||||||
|
uni.showToast({ title: item.title + "(开发中)", icon: "none" });
|
||||||
|
},
|
||||||
|
onCreateOrder() {
|
||||||
|
uni.showToast({ title: "开单(开发中)", icon: "none" });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||||
|
return vue.openBlock(), vue.createElementBlock("view", { class: "home" }, [
|
||||||
|
vue.createCommentVNode(" 顶部统计卡片 "),
|
||||||
|
vue.createElementVNode("view", { class: "hero" }, [
|
||||||
|
vue.createElementVNode("view", { class: "hero-top" }, [
|
||||||
|
vue.createElementVNode("text", { class: "brand" }, "五金配件管家"),
|
||||||
|
vue.createElementVNode("view", { class: "cta" }, [
|
||||||
|
vue.createElementVNode("text", { class: "cta-text" }, "咨询")
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
vue.createElementVNode("view", { class: "kpi" }, [
|
||||||
|
vue.createElementVNode("view", { class: "kpi-item" }, [
|
||||||
|
vue.createElementVNode("text", { class: "kpi-label" }, "今日销售额"),
|
||||||
|
vue.createElementVNode(
|
||||||
|
"text",
|
||||||
|
{ class: "kpi-value" },
|
||||||
|
vue.toDisplayString($data.todayAmount),
|
||||||
|
1
|
||||||
|
/* TEXT */
|
||||||
|
)
|
||||||
|
]),
|
||||||
|
vue.createElementVNode("view", { class: "kpi-item" }, [
|
||||||
|
vue.createElementVNode("text", { class: "kpi-label" }, "本月利润"),
|
||||||
|
vue.createElementVNode(
|
||||||
|
"text",
|
||||||
|
{ class: "kpi-value" },
|
||||||
|
vue.toDisplayString($data.monthProfit),
|
||||||
|
1
|
||||||
|
/* TEXT */
|
||||||
|
)
|
||||||
|
]),
|
||||||
|
vue.createElementVNode("view", { class: "kpi-item" }, [
|
||||||
|
vue.createElementVNode("text", { class: "kpi-label" }, "库存数量"),
|
||||||
|
vue.createElementVNode(
|
||||||
|
"text",
|
||||||
|
{ class: "kpi-value" },
|
||||||
|
vue.toDisplayString($data.stockQty),
|
||||||
|
1
|
||||||
|
/* TEXT */
|
||||||
|
)
|
||||||
|
])
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
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.createElementVNode(
|
||||||
|
"text",
|
||||||
|
{ class: "icon-text" },
|
||||||
|
vue.toDisplayString(item.icon),
|
||||||
|
1
|
||||||
|
/* TEXT */
|
||||||
|
)
|
||||||
|
],
|
||||||
|
4
|
||||||
|
/* STYLE */
|
||||||
|
),
|
||||||
|
vue.createElementVNode(
|
||||||
|
"text",
|
||||||
|
{ class: "grid-title" },
|
||||||
|
vue.toDisplayString(item.title),
|
||||||
|
1
|
||||||
|
/* TEXT */
|
||||||
|
)
|
||||||
|
], 8, ["onClick"]);
|
||||||
|
}),
|
||||||
|
128
|
||||||
|
/* KEYED_FRAGMENT */
|
||||||
|
))
|
||||||
|
]),
|
||||||
|
vue.createCommentVNode(" 底部操作条 "),
|
||||||
|
vue.createElementVNode("view", { class: "bottom-bar" }, [
|
||||||
|
vue.createElementVNode(
|
||||||
|
"view",
|
||||||
|
{
|
||||||
|
class: vue.normalizeClass(["tab", { active: $data.activeTab === "home" }]),
|
||||||
|
onClick: _cache[0] || (_cache[0] = ($event) => $data.activeTab = "home")
|
||||||
|
},
|
||||||
|
[
|
||||||
|
vue.createElementVNode("text", null, "首页")
|
||||||
|
],
|
||||||
|
2
|
||||||
|
/* CLASS */
|
||||||
|
),
|
||||||
|
vue.createElementVNode("view", {
|
||||||
|
class: "tab primary",
|
||||||
|
onClick: _cache[1] || (_cache[1] = (...args) => $options.onCreateOrder && $options.onCreateOrder(...args))
|
||||||
|
}, [
|
||||||
|
vue.createElementVNode("text", null, "开单")
|
||||||
|
]),
|
||||||
|
vue.createElementVNode(
|
||||||
|
"view",
|
||||||
|
{
|
||||||
|
class: vue.normalizeClass(["tab", { active: $data.activeTab === "detail" }]),
|
||||||
|
onClick: _cache[2] || (_cache[2] = ($event) => $data.activeTab = "detail")
|
||||||
|
},
|
||||||
|
[
|
||||||
|
vue.createElementVNode("text", null, "明细")
|
||||||
|
],
|
||||||
|
2
|
||||||
|
/* CLASS */
|
||||||
|
),
|
||||||
|
vue.createElementVNode(
|
||||||
|
"view",
|
||||||
|
{
|
||||||
|
class: vue.normalizeClass(["tab", { active: $data.activeTab === "me" }]),
|
||||||
|
onClick: _cache[3] || (_cache[3] = ($event) => $data.activeTab = "me")
|
||||||
|
},
|
||||||
|
[
|
||||||
|
vue.createElementVNode("text", null, "我的")
|
||||||
|
],
|
||||||
|
2
|
||||||
|
/* CLASS */
|
||||||
|
)
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
const PagesIndexIndex = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__file", "D:/软件/配件查询/林林林/pages/index/index.vue"]]);
|
||||||
|
__definePage("pages/index/index", PagesIndexIndex);
|
||||||
|
function formatAppLog(type, filename, ...args) {
|
||||||
|
if (uni.__log__) {
|
||||||
|
uni.__log__(type, filename, ...args);
|
||||||
|
} else {
|
||||||
|
console[type].apply(console, [...args, filename]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const _sfc_main = {
|
||||||
|
onLaunch: function() {
|
||||||
|
formatAppLog("log", "at App.vue:4", "App Launch");
|
||||||
|
},
|
||||||
|
onShow: function() {
|
||||||
|
formatAppLog("log", "at App.vue:7", "App Show");
|
||||||
|
},
|
||||||
|
onHide: function() {
|
||||||
|
formatAppLog("log", "at App.vue:10", "App Hide");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "D:/软件/配件查询/林林林/App.vue"]]);
|
||||||
|
function createApp() {
|
||||||
|
const app = vue.createVueApp(App);
|
||||||
|
return {
|
||||||
|
app
|
||||||
|
};
|
||||||
|
}
|
||||||
|
const { app: __app__, Vuex: __Vuex__, Pinia: __Pinia__ } = createApp();
|
||||||
|
uni.Vuex = __Vuex__;
|
||||||
|
uni.Pinia = __Pinia__;
|
||||||
|
__app__.provide("__globalStyles", __uniConfig.styles);
|
||||||
|
__app__._component.mpType = "app";
|
||||||
|
__app__._component.render = () => {
|
||||||
|
};
|
||||||
|
__app__.mount("#app");
|
||||||
|
})(Vue);
|
||||||
4
frontend/unpackage/dist/dev/app-plus/app.css
vendored
Normal file
4
frontend/unpackage/dist/dev/app-plus/app.css
vendored
Normal file
File diff suppressed because one or more lines are too long
107
frontend/unpackage/dist/dev/app-plus/manifest.json
vendored
Normal file
107
frontend/unpackage/dist/dev/app-plus/manifest.json
vendored
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
{
|
||||||
|
"@platforms": [
|
||||||
|
"android",
|
||||||
|
"iPhone",
|
||||||
|
"iPad"
|
||||||
|
],
|
||||||
|
"id": "",
|
||||||
|
"name": "林林林",
|
||||||
|
"version": {
|
||||||
|
"name": "1.0.0",
|
||||||
|
"code": "100"
|
||||||
|
},
|
||||||
|
"description": "",
|
||||||
|
"developer": {
|
||||||
|
"name": "",
|
||||||
|
"email": "",
|
||||||
|
"url": ""
|
||||||
|
},
|
||||||
|
"permissions": {
|
||||||
|
"UniNView": {
|
||||||
|
"description": "UniNView原生渲染"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plus": {
|
||||||
|
"useragent": {
|
||||||
|
"value": "uni-app",
|
||||||
|
"concatenate": true
|
||||||
|
},
|
||||||
|
"splashscreen": {
|
||||||
|
"target": "id:1",
|
||||||
|
"autoclose": true,
|
||||||
|
"waiting": true,
|
||||||
|
"delay": 0
|
||||||
|
},
|
||||||
|
"popGesture": "close",
|
||||||
|
"launchwebview": {
|
||||||
|
"render": "always",
|
||||||
|
"id": "1",
|
||||||
|
"kernel": "WKWebview"
|
||||||
|
},
|
||||||
|
"usingComponents": true,
|
||||||
|
"nvueStyleCompiler": "uni-app",
|
||||||
|
"compilerVersion": 3,
|
||||||
|
"distribute": {
|
||||||
|
"google": {
|
||||||
|
"permissions": [
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"apple": {},
|
||||||
|
"plugins": {
|
||||||
|
"audio": {
|
||||||
|
"mp3": {
|
||||||
|
"description": "Android平台录音支持MP3格式文件"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"statusbar": {
|
||||||
|
"immersed": "supportedDevice",
|
||||||
|
"style": "dark",
|
||||||
|
"background": "#F8F8F8"
|
||||||
|
},
|
||||||
|
"uniStatistics": {
|
||||||
|
"enable": false
|
||||||
|
},
|
||||||
|
"allowsInlineMediaPlayback": true,
|
||||||
|
"uni-app": {
|
||||||
|
"control": "uni-v3",
|
||||||
|
"vueVersion": "3",
|
||||||
|
"compilerVersion": "4.76",
|
||||||
|
"nvueCompiler": "uni-app",
|
||||||
|
"renderer": "auto",
|
||||||
|
"nvue": {
|
||||||
|
"flex-direction": "column"
|
||||||
|
},
|
||||||
|
"nvueLaunchMode": "normal",
|
||||||
|
"webView": {
|
||||||
|
"minUserAgentVersion": "49.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"app-harmony": {
|
||||||
|
"useragent": {
|
||||||
|
"value": "uni-app",
|
||||||
|
"concatenate": true
|
||||||
|
},
|
||||||
|
"uniStatistics": {
|
||||||
|
"enable": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"launch_path": "__uniappview.html"
|
||||||
|
}
|
||||||
103
frontend/unpackage/dist/dev/app-plus/pages/index/index.css
vendored
Normal file
103
frontend/unpackage/dist/dev/app-plus/pages/index/index.css
vendored
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
|
||||||
|
.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%);
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 顶部渐变英雄区:深色石墨 + 金色高光,并叠加金属拉丝纹理 */
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
.hero-top {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 0.75rem;
|
||||||
|
}
|
||||||
|
.brand {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
font-weight: 600;
|
||||||
|
letter-spacing: 0.0625rem;
|
||||||
|
color: #f2d58a;
|
||||||
|
}
|
||||||
|
.cta {
|
||||||
|
padding: 0.25rem 0.625rem;
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
.cta-text { color: #ffffff; font-size: 0.8125rem;
|
||||||
|
}
|
||||||
|
.kpi { display: flex;
|
||||||
|
}
|
||||||
|
.kpi-item { flex: 1;
|
||||||
|
}
|
||||||
|
.kpi-label { opacity: 0.9; font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
.kpi-value { display: block; margin-top: 0.375rem; font-size: 1.4375rem; font-weight: 700; color: #f2d58a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 功能九宫格 */
|
||||||
|
.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-item { display: flex; flex-direction: column; align-items: center;
|
||||||
|
}
|
||||||
|
.icon {
|
||||||
|
width: 3.75rem;
|
||||||
|
height: 3.75rem;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
.icon-text { font-size: 1.4375rem; font-weight: 600;
|
||||||
|
}
|
||||||
|
.grid-title { margin-top: 0.5625rem; color: #e6e6e6; font-size: 0.875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 底部操作条 */
|
||||||
|
.bottom-bar {
|
||||||
|
position: fixed;
|
||||||
|
left: 0; right: 0; bottom: 0;
|
||||||
|
display: flex;
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
.tab { flex: 1; text-align: center; color: #aaa; font-size: 0.8125rem;
|
||||||
|
}
|
||||||
|
.tab.active { color: #f2d58a;
|
||||||
|
}
|
||||||
|
.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;
|
||||||
|
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;
|
||||||
|
}
|
||||||
BIN
frontend/unpackage/dist/dev/app-plus/static/logo.png
vendored
Normal file
BIN
frontend/unpackage/dist/dev/app-plus/static/logo.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.9 KiB |
7
frontend/unpackage/dist/dev/app-plus/uni-app-view.umd.js
vendored
Normal file
7
frontend/unpackage/dist/dev/app-plus/uni-app-view.umd.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
frontend/unpackage/dist/dev/cache/.app-plus/tsc/app-android/.tsbuildInfo
vendored
Normal file
1
frontend/unpackage/dist/dev/cache/.app-plus/tsc/app-android/.tsbuildInfo
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user