前端搭建

This commit is contained in:
2025-09-15 21:22:59 +08:00
parent e12034b1d2
commit 9569326c37
31 changed files with 1085 additions and 3 deletions

View File

@@ -1,3 +0,0 @@
# PartsInquiry
用于双端应用配件查询

17
frontend/App.vue Normal file
View 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
View 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
View 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
View 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
View 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": {}
}

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View 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
View 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;

View 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();

View File

@@ -0,0 +1,2 @@
Promise.resolve("./app.css.js").then(() => {
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View 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>

View 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}}}});
})();

View File

@@ -0,0 +1 @@
(function(){})();

View 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);

File diff suppressed because one or more lines are too long

View 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"
}

View 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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long