前端搭建

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

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