From 0a79a83ac3ba58b00ab1ce7f4d57a78575c9d67c Mon Sep 17 00:00:00 2001 From: zzh Date: Mon, 11 May 2026 14:28:08 +0800 Subject: [PATCH 1/2] login fix --- frontend/index.html | 4 ++-- frontend/js/components/dashboard.js | 28 ++++++++++++++++++++++++---- frontend/login.html | 2 +- server/data.db | Bin 12431360 -> 12447744 bytes 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/frontend/index.html b/frontend/index.html index 337c08c..9598888 100755 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,7 +4,7 @@ 韬智生产管理系统 - + @@ -36,7 +36,7 @@
韬智生产管理
diff --git a/frontend/js/components/dashboard.js b/frontend/js/components/dashboard.js index 81102ad..57cd499 100755 --- a/frontend/js/components/dashboard.js +++ b/frontend/js/components/dashboard.js @@ -1225,7 +1225,7 @@ const Dashboard = (() => { }; }; - const drawShipmentDonutChart = (stats) => { + const drawShipmentDonutChart = async (stats) => { const canvas = document.getElementById('shipment-donut-chart'); if(!canvas) return; const ctx = canvas.getContext('2d'); @@ -1243,6 +1243,20 @@ const Dashboard = (() => { const items = Object.entries(byPlatform).filter(([, v]) => (v || 0) > 0); items.sort((a, b) => (b[1] || 0) - (a[1] || 0)); + // 获取机种列表以映射自定义机种名称 + let platformList = []; + try { + const platformRes = await fetch('/api/shipments/platforms', { + headers: { 'Content-Type': 'application/json' }, + credentials: 'include' + }).then(r => r.ok ? r.json() : null); + if(platformRes && platformRes.list) { + platformList = platformRes.list; + } + } catch(e) { + // 忽略错误,使用默认映射 + } + const platformName = (k) => { const map = { pdd: '拼多多', @@ -1253,7 +1267,13 @@ const Dashboard = (() => { std: '标准版', unknown: '未知' }; - return map[k] || k; + // 先从固定映射查找 + if(map[k]) return map[k]; + // 再从机种列表查找自定义机种名称 + const customPlatform = platformList.find(p => p.value === k); + if(customPlatform) return customPlatform.label; + // 最后返回原始值 + return k; }; const platformColor = (k, fallbackIndex) => { @@ -1358,7 +1378,7 @@ const Dashboard = (() => { window.__shipmentStatsTs = window.__shipmentStatsTs || 0; const now = Date.now(); if(!force && (now - window.__shipmentStatsTs) < 60000 && window.__shipmentStatsCache) { - drawShipmentDonutChart(window.__shipmentStatsCache); + await drawShipmentDonutChart(window.__shipmentStatsCache); return; } try { @@ -1369,7 +1389,7 @@ const Dashboard = (() => { if(res && res.ok) { window.__shipmentStatsCache = res; window.__shipmentStatsTs = now; - drawShipmentDonutChart(res); + await drawShipmentDonutChart(res); } } catch(e) { } diff --git a/frontend/login.html b/frontend/login.html index fa625e7..68530e9 100755 --- a/frontend/login.html +++ b/frontend/login.html @@ -4,7 +4,7 @@ 登录 - 韬智生产管理系统 - + diff --git a/server/data.db b/server/data.db index 2ad9ee7506783fade48423d0005041c775257f78..e194d650f2acd942df7fa49a80ff957d64eb8ff5 100644 GIT binary patch delta 4419 zcmZ8kYj9mv6;5v6uQr5dOMo_3q>!GT{W|-cOIj8_K?{0HQPEnkRuL(n6?wJMB+!LQ zkW#V7M{fJ`%Jv{M#sc!|LNGXymNQl($e>rCs(X5?T!!MHgiquzov+(m8rzk#?;Q#!PLpr z#njEz!_>>v$JEa>z_f&EDbpa+IZQ)L=Q5qgbUxDsOcyd;#I%fQIn%{V!%UYjUCMMB z(+Z}QOe0KhVOquXR;J6D-o|tV(`u$GnXY0QWm>}&Fs)?@nFNz$QcRl3Fhxw3DP~HT z%1l=?jWMlbTF-P16Y9T~>FrGKV0tIhyO`e1^d6?`n677fFVp*&HZa}5bR*OInLfaj zGHqnKiD?tl%}gI;`ViBHnQmeF2-8QIHZy&UX$#Y>Ot&$8oM|i5Cz!S|eUj-@Ot&+A zn&}Rv&oJG|w4LcLrn{N$Vfrl7=a_adeV*xFrY|tv$8P^f8)g-_!k6`^ay^ zV25DO!+r|;8SDkvVb~Ga&tXSlFT#$&W?{d8{Sx*o*zwuHQ*&p2JG!i8f6LNamK<5q zH}J;++5cGIU;Ebe?(2EI=eq6#U1z&)>O9oh(Xpj{wtcYejx0Q}{_YY_W|h$g$Fqt1 z=Z7xRfAgjT*w<#cz=<-%GN zSE;mN-b}V|->xv5c%|#cM$fh^;ig1r3Js0!^piPQl#y}0+A1uSeh(H~cCZMWNb8qe z@?eP^EJ}qkk)BIs+Jhx3J6MzsBR@)I`m%?zf3BYE$msF;K?hJ&RtOb_k@69)Onco& zt}SV;kbd`nxS^^0$W2^HBTVcUwZA9tKB~5+lg6xSOEKgDWU8%66~}&*^xt#&-Wb=K zk|IfbnA43OK&IN2NR05KRK`4jOtmWkfV5X`y4MG2_SetPUtOXB(090He322`22}ra z-{1O<_D%J^+WTy8spsXMneP8~r(Mr=wRLXpc(G$i`|WKf+Lo1ewEnJjRm*sG?F*%K z?X_Na`0+6Sp~@l(lnHfVQ0b2P0Gx{~8xtgOC?Y#tM;03j7aawNp=>_JY~h&NS(rB5 zucfjX^c<`bte`-erqpzI11NVY(!-IkylRV8;U5k z)|B!KN=H0^L^;&xKGwECzTuq0A}kvb#3*)A2m+p5o3*Yve!;L1n*`=n^$?*#!L@3k zT0uj#lCrceMHm%&+0_I~2tOSNEyUuikY}`-=i*u(=K%p#2{3M;k}dqbnY)SOZisw~ z0*63X`UNA9kWMGm;+mr1)n37&b!lYm7o3)IOb`IDMJAG}Fv6`KYvJP5-Zm(S9GCk! zWRNJJQphpY3`$%R$2if25l-ccfP3T=Bs8i>sL`BIaDgsL@W~VEY~eS`6TKzXGv_29 z;%IGlcI_256DQ7nx_S(UR}__2*s=gdCbqgjtgU%na0%VD5?1EZ!d>mp>k^QDtOh1- z>O{w+vX}39Fyw zWQmOnt!=L_nVY>^Y*5Y0Fux`ap!`nbY?&koO$Q09|fRuwdu~HP|Ha&P}<3WHZ zfH^ic7JihmqZ)w={5Q-Z{-=l~i>w2J3SCvV~`wDTO8~%)Ds+X<6hyI7$$BmBecL{;t?|BfU#6P|>JQe9`3S)`oQ*1({2fna uULsuZ46{kxc-YiFa7ObI;euyaghyyWIx25=*7$Z_mDmErcDq}j&Hn-8dS>td delta 832 zcmcK1HE$Jg6hQIXD^gnE;a=RWxc1;K#ogWArId1TDEjc?P_$T!v(@OC6~z^`yQukaTG%jij+Ok*3m2 znoA35DXpZnw2`*bPTETc=_nb}Njggx=_=i%yY!Hr(o1?vAL%QZ68if|e;FVHWsnS( zAu?2k$#5AVBW09~mN7C`vSgf$mkBaaCdp)(B2#6WOqUrlQ)bC*nIm&$p3Ij8vQQSu zVp$?fWtl9O6|z!R$!b|6Yh|6RmkqK}Hpyn$B3osfY?mFfQ+CO2$(B8mBYP!R_KC7z z4#+_{B!}gQ9F=2oT=L|EoRm{?TF%H>iOD%RFBjyZT$0OjrHK5bys~+bN^!rxUR>cr zetKeTZM5J_EIV4@pE0&DVbK2Qr~Ke*a4onV+z4(4w}RWjo#1Xz5Znvy2M>aW!K2`D zP#8Q3o(9i?=fR7hC@2nI2CstG!JFdfr;=~)(;}%EaTTYgJxxnV{hXTdZ`|L^|Gb4O fDNl5#qS=Lc2D>PaF0<( From ab6c3a2f222e95d9777f4667b08e0cdfc1408c57 Mon Sep 17 00:00:00 2001 From: zzh Date: Mon, 11 May 2026 15:57:59 +0800 Subject: [PATCH 2/2] add finance --- frontend/index.html | 12 + frontend/js/components/dashboard.js | 76 +- frontend/js/components/finance.js | 1284 +++++++++++++++++++++++++++ frontend/js/router.js | 19 +- server/app.py | 10 + server/data.db | Bin 12447744 -> 12529664 bytes server/finance_routes.py | 950 ++++++++++++++++++++ 7 files changed, 2335 insertions(+), 16 deletions(-) create mode 100644 frontend/js/components/finance.js create mode 100644 server/finance_routes.py diff --git a/frontend/index.html b/frontend/index.html index 9598888..4489079 100755 --- a/frontend/index.html +++ b/frontend/index.html @@ -161,6 +161,17 @@ 委外在制库存
+
+ + + 财务管理 + +