This commit is contained in:
etoai 2026-05-18 10:58:18 +08:00
parent e0774fbca0
commit ef82f0673b
11 changed files with 107 additions and 1 deletions

View File

@ -8,7 +8,6 @@ pnpm-debug.log*
lerna-debug.log*
node_modules
dist
.npm-cache
dist-ssr
*.local

View File

@ -0,0 +1 @@
import{C as e,_ as t,b as n,d as r,h as i,i as a,l as o,m as s,n as c,p as l,r as u,t as d,u as f,v as p,w as m,x as h,y as g}from"./index-CmLn5x9L.js";import{t as _}from"./axios-6M3K5Uho.js";var v={class:`history-app`},y={class:`history-header`},b={class:`header-left`},x=`http://127.0.0.1:8000/api/lof/history`,S=d({__name:`HistoryDetail`,setup(d){let S=c(),C=u(),w=h(S.query.fundCode||``),T=h(S.query.fundName||``),E=h([]),D=h(!1);function O(){C.push(`/`)}async function k(){if(!w.value){a.error(`缺少基金代码参数`);return}D.value=!0;try{let e=await _.get(x,{params:{fund_code:w.value,fund_name:T.value}});e.data.code===200?(E.value=e.data.data,T.value=e.data.fundName||T.value):a.error(e.data.msg||`获取历史数据失败`)}catch{a.error(`请求失败:请确认 Python 后端已启动`)}finally{D.value=!1}}function A(e){if(e==null)return`-`;let t=parseFloat(e);return isNaN(t)?`-`:(t>0?`+`:``)+t+`%`}function j(e){if(e==null)return`-`;let t=parseFloat(e);return isNaN(t)?`-`:(t>0?`+`:``)+t.toFixed(3)+`%`}function M(e){if(e==null)return`-`;let t=parseFloat(e);return isNaN(t)?`-`:(t>0?`+`:``)+t.toFixed(2)}function N(e){let t=parseFloat(e)||0;return t>0?`rate-up`:t<0?`rate-down`:`rate-zero`}return s(()=>{k()}),(a,s)=>{let c=t(`el-table-column`),u=t(`el-table`),d=p(`loading`);return i(),r(`div`,v,[o(`div`,y,[o(`div`,b,[o(`h2`,null,m(T.value)+` (`+m(w.value)+`) 历史数据`,1)]),o(`a`,{class:`back-link`,onClick:O},`← 返回看板`)]),n((i(),f(u,{data:E.value,border:``,height:`calc(100vh - 200px)`,style:{width:`100%`}},{default:g(()=>[l(c,{prop:`date`,label:`价格日期`,align:`center`,"min-width":`110`}),l(c,{prop:`price`,label:`收盘价`,align:`center`,"min-width":`90`}),l(c,{prop:`navDate`,label:`净值日期`,align:`center`,"min-width":`110`}),l(c,{prop:`nav`,label:`净值`,align:`center`,"min-width":`90`}),l(c,{label:`溢价率`,align:`center`,"min-width":`100`},{default:g(({row:t})=>[o(`span`,{class:e(N(t.premiumRate))},m(A(t.premiumRate)),3)]),_:1}),l(c,{prop:`turnover`,label:`成交额(万元)`,align:`center`,"min-width":`120`}),l(c,{prop:`shareVolume`,label:`场内份额(万份)`,align:`center`,"min-width":`130`}),l(c,{label:`场内新增(万份)`,align:`center`,"min-width":`120`},{default:g(({row:t})=>[o(`span`,{class:e(N(t.changeAmount))},m(t.changeAmount==null?`-`:M(t.changeAmount)),3)]),_:1}),l(c,{label:`份额涨幅`,align:`center`,"min-width":`100`},{default:g(({row:t})=>[o(`span`,{class:e(N(t.changePct))},m(t.changePct==null?`-`:j(t.changePct)),3)]),_:1})]),_:1},8,[`data`])),[[d,D.value]])])}}},[[`__scopeId`,`data-v-d143755c`]]);export{S as default};

View File

@ -0,0 +1 @@
.history-app[data-v-d143755c]{box-sizing:border-box;width:100%;max-width:1600px;margin:0 auto;padding:24px;overflow-x:auto}.history-header[data-v-d143755c]{background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:16px 24px;display:flex}.history-header h2[data-v-d143755c]{color:var(--text-primary);margin:0;font-size:20px}.back-link[data-v-d143755c]{color:var(--accent);cursor:pointer;white-space:nowrap;flex-shrink:0;font-size:14px;text-decoration:none;transition:color .2s}.back-link[data-v-d143755c]:hover{color:#66b1ff}.rate-up[data-v-d143755c]{color:var(--rate-up);font-weight:700}.rate-down[data-v-d143755c]{color:var(--rate-down);font-weight:700}.rate-zero[data-v-d143755c]{color:var(--text-muted)}@media (width<=768px){.history-app[data-v-d143755c]{padding:12px}.history-header[data-v-d143755c]{flex-direction:column;align-items:flex-start}.history-header h2[data-v-d143755c]{word-break:break-all;font-size:16px}.back-link[data-v-d143755c]{align-self:flex-end}}

View File

@ -0,0 +1 @@
.lof-app[data-v-f1e5d32a]{box-sizing:border-box;width:100%;max-width:1600px;margin:0 auto;padding:24px;overflow-x:auto}.header[data-v-f1e5d32a]{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.title[data-v-f1e5d32a]{flex-direction:column;flex-shrink:0;gap:4px;display:flex}.update-time[data-v-f1e5d32a]{color:var(--text-muted);text-align:left;white-space:nowrap;font-size:13px}.tool-bar[data-v-f1e5d32a]{flex-shrink:0;gap:12px;display:flex}.filter-bar[data-v-f1e5d32a]{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.filter-input[data-v-f1e5d32a]{width:200px}.filter-input-sm[data-v-f1e5d32a]{width:160px}.filter-select[data-v-f1e5d32a]{width:140px}.rate-up[data-v-f1e5d32a]{color:var(--rate-up);font-weight:700}.rate-down[data-v-f1e5d32a]{color:var(--rate-down);font-weight:700}.rate-zero[data-v-f1e5d32a]{color:var(--text-muted)}.fund-code-link[data-v-f1e5d32a]{color:var(--accent);cursor:pointer;text-decoration:none}.fund-code-link[data-v-f1e5d32a]:hover{text-decoration:underline}@media (width<=768px){.lof-app[data-v-f1e5d32a]{padding:12px}.header[data-v-f1e5d32a]{flex-direction:column;align-items:flex-start}.tool-bar[data-v-f1e5d32a],.tool-bar .el-button[data-v-f1e5d32a]{width:100%}.filter-bar[data-v-f1e5d32a]{flex-direction:column;align-items:stretch}.filter-input[data-v-f1e5d32a],.filter-input-sm[data-v-f1e5d32a],.filter-select[data-v-f1e5d32a]{width:100%}.filter-checkbox[data-v-f1e5d32a]{justify-content:center;display:flex}.filter-radio[data-v-f1e5d32a]{width:100%;display:flex}.filter-radio .el-radio-button[data-v-f1e5d32a]{flex:1}.filter-radio .el-radio-button__inner[data-v-f1e5d32a]{justify-content:center;width:100%}.filter-reset-btn[data-v-f1e5d32a]{width:100%}.update-time[data-v-f1e5d32a]{white-space:normal}}

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

1
front/vite-project/dist/favicon.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.3 KiB

24
front/vite-project/dist/icons.svg vendored Normal file
View File

@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg">
<symbol id="bluesky-icon" viewBox="0 0 16 17">
<g clip-path="url(#bluesky-clip)"><path fill="#08060d" d="M7.75 7.735c-.693-1.348-2.58-3.86-4.334-5.097-1.68-1.187-2.32-.981-2.74-.79C.188 2.065.1 2.812.1 3.251s.241 3.602.398 4.13c.52 1.744 2.367 2.333 4.07 2.145-2.495.37-4.71 1.278-1.805 4.512 3.196 3.309 4.38-.71 4.987-2.746.608 2.036 1.307 5.91 4.93 2.746 2.72-2.746.747-4.143-1.747-4.512 1.702.189 3.55-.4 4.07-2.145.156-.528.397-3.691.397-4.13s-.088-1.186-.575-1.406c-.42-.19-1.06-.395-2.741.79-1.755 1.24-3.64 3.752-4.334 5.099"/></g>
<defs><clipPath id="bluesky-clip"><path fill="#fff" d="M.1.85h15.3v15.3H.1z"/></clipPath></defs>
</symbol>
<symbol id="discord-icon" viewBox="0 0 20 19">
<path fill="#08060d" d="M16.224 3.768a14.5 14.5 0 0 0-3.67-1.153c-.158.286-.343.67-.47.976a13.5 13.5 0 0 0-4.067 0c-.128-.306-.317-.69-.476-.976A14.4 14.4 0 0 0 3.868 3.77C1.546 7.28.916 10.703 1.231 14.077a14.7 14.7 0 0 0 4.5 2.306q.545-.748.965-1.587a9.5 9.5 0 0 1-1.518-.74q.191-.14.372-.293c2.927 1.369 6.107 1.369 8.999 0q.183.152.372.294-.723.437-1.52.74.418.838.963 1.588a14.6 14.6 0 0 0 4.504-2.308c.37-3.911-.63-7.302-2.644-10.309m-9.13 8.234c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.894 0 1.614.82 1.599 1.82.001 1-.705 1.82-1.6 1.82m5.91 0c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.893 0 1.614.82 1.599 1.82 0 1-.706 1.82-1.6 1.82"/>
</symbol>
<symbol id="documentation-icon" viewBox="0 0 21 20">
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="m15.5 13.333 1.533 1.322c.645.555.967.833.967 1.178s-.322.623-.967 1.179L15.5 18.333m-3.333-5-1.534 1.322c-.644.555-.966.833-.966 1.178s.322.623.966 1.179l1.534 1.321"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M17.167 10.836v-4.32c0-1.41 0-2.117-.224-2.68-.359-.906-1.118-1.621-2.08-1.96-.599-.21-1.349-.21-2.848-.21-2.623 0-3.935 0-4.983.369-1.684.591-3.013 1.842-3.641 3.428C3 6.449 3 7.684 3 10.154v2.122c0 2.558 0 3.838.706 4.726q.306.383.713.671c.76.536 1.79.64 3.581.66"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M3 10a2.78 2.78 0 0 1 2.778-2.778c.555 0 1.209.097 1.748-.047.48-.129.854-.503.982-.982.145-.54.048-1.194.048-1.749a2.78 2.78 0 0 1 2.777-2.777"/>
</symbol>
<symbol id="github-icon" viewBox="0 0 19 19">
<path fill="#08060d" fill-rule="evenodd" d="M9.356 1.85C5.05 1.85 1.57 5.356 1.57 9.694a7.84 7.84 0 0 0 5.324 7.44c.387.079.528-.168.528-.376 0-.182-.013-.805-.013-1.454-2.165.467-2.616-.935-2.616-.935-.349-.91-.864-1.143-.864-1.143-.71-.48.051-.48.051-.48.787.051 1.2.805 1.2.805.695 1.194 1.817.857 2.268.649.064-.507.27-.857.49-1.052-1.728-.182-3.545-.857-3.545-3.87 0-.857.31-1.558.8-2.104-.078-.195-.349-1 .077-2.078 0 0 .657-.208 2.14.805a7.5 7.5 0 0 1 1.946-.26c.657 0 1.328.092 1.946.26 1.483-1.013 2.14-.805 2.14-.805.426 1.078.155 1.883.078 2.078.502.546.799 1.247.799 2.104 0 3.013-1.818 3.675-3.558 3.87.284.247.528.714.528 1.454 0 1.052-.012 1.896-.012 2.156 0 .208.142.455.528.377a7.84 7.84 0 0 0 5.324-7.441c.013-4.338-3.48-7.844-7.773-7.844" clip-rule="evenodd"/>
</symbol>
<symbol id="social-icon" viewBox="0 0 20 20">
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M12.5 6.667a4.167 4.167 0 1 0-8.334 0 4.167 4.167 0 0 0 8.334 0"/>
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M2.5 16.667a5.833 5.833 0 0 1 8.75-5.053m3.837.474.513 1.035c.07.144.257.282.414.309l.93.155c.596.1.736.536.307.965l-.723.73a.64.64 0 0 0-.152.531l.207.903c.164.715-.213.991-.84.618l-.872-.52a.63.63 0 0 0-.577 0l-.872.52c-.624.373-1.003.094-.84-.618l.207-.903a.64.64 0 0 0-.152-.532l-.723-.729c-.426-.43-.289-.864.306-.964l.93-.156a.64.64 0 0 0 .412-.31l.513-1.034c.28-.562.735-.562 1.012 0"/>
</symbol>
<symbol id="x-icon" viewBox="0 0 19 19">
<path fill="#08060d" fill-rule="evenodd" d="M1.893 1.98c.052.072 1.245 1.769 2.653 3.77l2.892 4.114c.183.261.333.48.333.486s-.068.089-.152.183l-.522.593-.765.867-3.597 4.087c-.375.426-.734.834-.798.905a1 1 0 0 0-.118.148c0 .01.236.017.664.017h.663l.729-.83c.4-.457.796-.906.879-.999a692 692 0 0 0 1.794-2.038c.034-.037.301-.34.594-.675l.551-.624.345-.392a7 7 0 0 1 .34-.374c.006 0 .93 1.306 2.052 2.903l2.084 2.965.045.063h2.275c1.87 0 2.273-.003 2.266-.021-.008-.02-1.098-1.572-3.894-5.547-2.013-2.862-2.28-3.246-2.273-3.266.008-.019.282-.332 2.085-2.38l2-2.274 1.567-1.782c.022-.028-.016-.03-.65-.03h-.674l-.3.342a871 871 0 0 1-1.782 2.025c-.067.075-.405.458-.75.852a100 100 0 0 1-.803.91c-.148.172-.299.344-.99 1.127-.304.343-.32.358-.345.327-.015-.019-.904-1.282-1.976-2.808L6.365 1.85H1.8zm1.782.91 8.078 11.294c.772 1.08 1.413 1.973 1.425 1.984.016.017.241.02 1.05.017l1.03-.004-2.694-3.766L7.796 5.75 5.722 2.852l-1.039-.004-1.039-.004z" clip-rule="evenodd"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

17
front/vite-project/dist/index.html vendored Normal file
View File

@ -0,0 +1,17 @@
<!doctype html>
<html lang="zh-CN" class="dark">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>LOF 基金监控</title>
<script type="module" crossorigin src="/assets/index-CmLn5x9L.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-Ci_MFdXL.css">
</head>
<body>
<div id="app"></div>
</body>
</html>