lof_project-main/front/vite-project/dist/assets/RealTimePremium-DEfn4Vuf.js
2026-05-18 10:58:18 +08:00

1 line
7.3 KiB
JavaScript

import{C as e,S as t,_ as n,a as r,b as i,c as a,d as o,f as s,g as c,h as l,i as u,l as d,m as f,o as p,p as m,r as h,s as g,t as _,u as v,v as y,w as b,x,y as S}from"./index-CmLn5x9L.js";import{t as C}from"./axios-6M3K5Uho.js";var w={class:`lof-app`},T={class:`header`},ee={class:`title`},te={class:`update-time`},E={class:`tool-bar`},D={class:`filter-bar`},O=[`onClick`],k=`http://127.0.0.1:8000/api/lof`,A=`lof-monitor`,j=1,M=`favorites`,N=_({__name:`RealTimePremium`,setup(_){function N(){return new Promise((e,t)=>{let n=indexedDB.open(A,j);n.onerror=()=>t(n.error),n.onsuccess=()=>e(n.result),n.onupgradeneeded=e=>{let t=e.target.result;t.objectStoreNames.contains(M)||t.createObjectStore(M,{keyPath:`fundCode`})}})}async function P(e){let t=await N();return new Promise((n,r)=>{let i=t.transaction(M,`readwrite`).objectStore(M).put({fundCode:e,time:Date.now()});i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function F(e){let t=await N();return new Promise((n,r)=>{let i=t.transaction(M,`readwrite`).objectStore(M).delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function ne(){let e=await N();return new Promise((t,n)=>{let r=e.transaction(M,`readonly`).objectStore(M).getAll();r.onsuccess=()=>t(r.result.map(e=>e.fundCode)),r.onerror=()=>n(r.error)})}let I=x([]),L=x(!1),R=x(``),z=x(``),B=x(``),V=x(``),H=x(new Set),U=x(!1),W=x(!0),G=h();function K(e){return!e||e===`-`?0:e.endsWith(`亿`)?parseFloat(e)*1e8:e.endsWith(``)?parseFloat(e)*1e4:parseFloat(e)||0}function q(e){G.push({path:`/history`,query:{fundCode:e.fundCode,fundName:e.fundName}})}function J(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}let Y=a(()=>{let e=new Set(I.value.map(e=>e.purchaseStatus).filter(Boolean));return Array.from(e).sort()}),X=a(()=>{let e=[...I.value];return U.value&&(e=e.filter(e=>H.value.has(e.fundCode))),R.value&&(e=e.filter(e=>String(e.fundCode).includes(R.value.trim()))),z.value&&(e=e.filter(e=>String(e.fundName).includes(z.value.trim()))),B.value&&(e=e.filter(e=>e.purchaseStatus===B.value)),W.value&&(e=e.filter(e=>K(e.fundSize)>=3e7)),e});function re(){R.value=``,z.value=``,B.value=``,U.value=!1,W.value=!0}async function Z(){if(!L.value){L.value=!0;try{let e=await C.get(k);if(e.data.code===200){if(I.value=e.data.data,V.value=J(new Date),e.data.hasMore)try{let e=await C.get(`${k}/remaining`);e.data.code===200&&e.data.data.length>0&&(I.value=[...I.value,...e.data.data])}catch{}}else u.error(e.data.msg||`数据获取失败`)}catch{u.error(`请求失败:请确认 Python 后端已启动`)}finally{L.value=!1}}}function ie(){Z()}function Q(e,t,n){return(parseFloat(e[n])||0)-(parseFloat(t[n])||0)}function $(e){let t=parseFloat(e)||0;return t>0?`rate-up`:t<0?`rate-down`:`rate-zero`}async function ae(){try{let e=await ne();H.value=new Set(e)}catch(e){console.error(`加载收藏失败`,e)}}async function oe(e,t){try{t?(await P(e),H.value.add(e)):(await F(e),H.value.delete(e))}catch(e){console.error(`收藏操作失败`,e),u.error(`收藏操作失败`)}}return f(()=>{ae(),Z()}),(a,u)=>{let f=n(`el-button`),h=n(`el-input`),_=n(`el-option`),x=n(`el-select`),C=n(`el-checkbox`),k=n(`el-radio-button`),A=n(`el-radio-group`),j=n(`el-table-column`),M=n(`el-tag`),N=n(`el-switch`),P=n(`el-table`),F=y(`loading`);return l(),o(`div`,w,[d(`div`,T,[d(`div`,ee,[d(`span`,te,`数据更新时间:`+b(V.value),1)]),d(`div`,E,[m(f,{onClick:ie,loading:L.value,type:`primary`,icon:t(r)},{default:S(()=>[...u[5]||=[s(` 手动刷新 `,-1)]]),_:1},8,[`loading`,`icon`])])]),d(`div`,D,[m(h,{modelValue:R.value,"onUpdate:modelValue":u[0]||=e=>R.value=e,placeholder:`基金代码`,clearable:``,class:`filter-input filter-input-sm`},null,8,[`modelValue`]),m(h,{modelValue:z.value,"onUpdate:modelValue":u[1]||=e=>z.value=e,placeholder:`基金名称`,clearable:``,class:`filter-input`},null,8,[`modelValue`]),m(x,{modelValue:B.value,"onUpdate:modelValue":u[2]||=e=>B.value=e,placeholder:`申购状态`,clearable:``,class:`filter-select`},{default:S(()=>[(l(!0),o(g,null,c(Y.value,e=>(l(),v(_,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),m(C,{modelValue:W.value,"onUpdate:modelValue":u[3]||=e=>W.value=e,class:`filter-checkbox`},{default:S(()=>[...u[6]||=[s(`规模≥3000万`,-1)]]),_:1},8,[`modelValue`]),m(A,{modelValue:U.value,"onUpdate:modelValue":u[4]||=e=>U.value=e,size:`small`,class:`filter-radio`},{default:S(()=>[m(k,{label:!1},{default:S(()=>[...u[7]||=[s(`全部基金`,-1)]]),_:1}),m(k,{label:!0},{default:S(()=>[...u[8]||=[s(`我的关注`,-1)]]),_:1})]),_:1},8,[`modelValue`]),m(f,{onClick:re,icon:t(p),class:`filter-reset-btn`},{default:S(()=>[...u[9]||=[s(`重置`,-1)]]),_:1},8,[`icon`])]),i((l(),v(P,{data:X.value,height:`calc(100vh - 180px)`,border:``,"default-sort":{prop:`premiumRate`,order:`descending`},style:{width:`100%`}},{default:S(()=>[m(j,{prop:`fundCode`,label:`基金代码`,align:`center`,"min-width":`100`},{default:S(({row:e})=>[d(`a`,{class:`fund-code-link`,onClick:t=>q(e)},b(e.fundCode),9,O)]),_:1}),m(j,{prop:`fundName`,label:`基金名称`,align:`center`,"min-width":`130`}),m(j,{prop:`tradePrice`,label:`场内价格`,align:`center`,"min-width":`110`,sortable:``,"sort-method":(e,t)=>Q(e,t,`tradePrice`)},null,8,[`sort-method`]),m(j,{prop:`netValue`,label:`场外净值(昨日)`,align:`center`,"min-width":`140`,sortable:``,"sort-method":(e,t)=>Q(e,t,`netValue`)},null,8,[`sort-method`]),m(j,{prop:`estimateValue`,label:`估算净值(实时)`,align:`center`,"min-width":`140`,sortable:``,"sort-method":(e,t)=>Q(e,t,`estimateValue`)},null,8,[`sort-method`]),m(j,{prop:`increaseRate`,label:`涨跌幅`,align:`center`,"min-width":`110`,sortable:``,"sort-method":(e,t)=>Q(e,t,`increaseRate`)},{default:S(({row:t})=>[d(`span`,{class:e($(t.increaseRate))},b(t.increaseRate)+`% `,3)]),_:1},8,[`sort-method`]),m(j,{prop:`premiumRate`,label:`溢价率(昨日)`,align:`center`,"min-width":`130`,sortable:``,"sort-method":(e,t)=>Q(e,t,`premiumRate`)},{default:S(({row:t})=>[d(`span`,{class:e($(t.premiumRate))},b(t.premiumRate)+`% `,3)]),_:1},8,[`sort-method`]),m(j,{prop:`estimatePremiumRate`,label:`溢价率(实时)`,align:`center`,"min-width":`130`,sortable:``,"sort-method":(e,t)=>Q(e,t,`estimatePremiumRate`)},{default:S(({row:t})=>[d(`span`,{class:e($(t.estimatePremiumRate))},b(t.estimatePremiumRate)+`% `,3)]),_:1},8,[`sort-method`]),m(j,{prop:`purchaseLimit`,label:`日限额`,align:`center`,"min-width":`110`,sortable:``,"sort-method":(e,t)=>Q(e,t,`purchaseLimit`)},null,8,[`sort-method`]),m(j,{label:`申购状态`,align:`center`,width:`120`},{default:S(({row:e})=>[m(M,{type:e.purchaseStatus===`暂停申购`?`danger`:e.purchaseStatus===`开放申购`?`success`:`info`,size:`small`,style:{"white-space":`nowrap`}},{default:S(()=>[s(b(e.purchaseStatus),1)]),_:2},1032,[`type`])]),_:1}),m(j,{prop:`fundSize`,label:`基金规模`,align:`center`,"min-width":`110`,sortable:``,"sort-method":(e,t)=>Q(e,t,`fundSize`)},null,8,[`sort-method`]),m(j,{prop:`turnover`,label:`成交额`,align:`center`,"min-width":`110`,sortable:``,"sort-method":(e,t)=>Q(e,t,`turnover`)},null,8,[`sort-method`]),m(j,{label:`关注`,align:`center`,width:`70`,fixed:`right`},{default:S(({row:e})=>[m(N,{"model-value":H.value.has(e.fundCode),onChange:t=>oe(e.fundCode,t)},null,8,[`model-value`,`onChange`])]),_:1})]),_:1},8,[`data`])),[[F,L.value]])])}}},[[`__scopeId`,`data-v-f1e5d32a`]]);export{N as default};