lof_project-main/front/vite-project/dist/assets/RealTimePremium-D_SOu6-U.js
2026-05-18 11:35:20 +08:00

1 line
7.5 KiB
JavaScript

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