1import{d as le,e as u,f as e,G as T,k as n,F as w,j as W,y as f,o as i,t as a,p as k,q as oe,T as ee,aj as Ae,x as te,n as _,a0 as Ee,a1 as ne,$ as ve,h as E,a3 as Te,u as Se,P as xe,Q as Ne,R as Ie,b as Me,g as R,w as B,m as Pe,_ as Re,a4 as qe,r as Fe}from"./DgKpLXVQ.js";import{i as se,b as Ve,a as ze,f as $,c as We,s as Oe,d as pe,_ as Be,e as je,g as Ge}from"./AQT7CZhV.js";import{u as Ue}from"./CLDz70AZ.js";import{r as He}from"./DCKqD10M.js";const Ye={class:"performance-calendar","aria-label":"æ¯æ¥æè³æçæ¥æ"},Ze={class:"calendar-toolbar"},Ke={class:"mode-toggle","aria-label":"æ¥æé¡¯ç¤ºæ¹å¼"},Xe={class:"weekday-row","aria-hidden":"true"},Qe={class:"calendar-grid"},Je=["aria-label","disabled","aria-haspopup","onClick"],et={class:"day-number"},tt={key:0},nt={key:1,class:"no-data"},st={key:1,class:"calendar-cell spacer"},lt=le({__name:"InvestmentPerformanceCalendar",props:{month:{},days:{},selectedDate:{}},emits:["select"],setup(c,{emit:C}){const m=c,N=C,b=f("profit"),d=k(()=>Ve(m.month,m.days));function S(g){if(!g)return"empty";if(g.status==="pending")return"flat";const y=b.value==="profit"?g.profitLoss:g.returnRate??0;return y>0?"up":y<0?"down":"flat"}function D(g){return se(g,b.value)}return(g,y)=>(i(),u("section",Ye,[e("header",Ze,[y[2]||(y[2]=e("div",null,[e("p",{class:"calendar-kicker"},"DAILY PERFORMANCE"),e("h2",null,"æ¯æ¥æç")],-1)),e("div",Ke,[e("button",{type:"button",class:T({active:n(b)==="profit"}),onClick:y[0]||(y[0]=s=>b.value="profit")},"æç",2),e("button",{type:"button",class:T({active:n(b)==="return"}),onClick:y[1]||(y[1]=s=>b.value="return")},"æ¥å ±é
¬ç",2)])]),e("div",Xe,[(i(),u(w,null,W(["ä¸","äº","ä¸","å","äº"],s=>e("span",{key:s},a(s),1)),64))]),e("div",Qe,[(i(!0),u(w,null,W(n(d),s=>(i(),u(w,{key:s.key},[s.date?(i(),u("button",{key:0,type:"button",class:T(["calendar-cell",S(s.performance),{selected:c.selectedDate===s.date,pending:s.performance?.status==="pending"}]),"aria-label":s.performance?`${s.date} ${D(s.performance)}`:`${s.date} ç¡æçè³æ`,disabled:!s.performance,"aria-haspopup":s.performance?"dialog":void 0,onClick:r=>N("select",s.date)},[e("span",et,a(s.day),1),s.performance?(i(),u("strong",tt,a(D(s.performance)),1)):(i(),u("span",nt,"â"))],10,Je)):(i(),u("div",st))],64))),128))]),y[3]||(y[3]=e("p",{class:"calendar-note"},"黿¥ææ¥çç¶å¤©æç´°ï¼ãå¾
æ´æ°ã表示éä¸è½è¨ç®ï¼ä¸ä»£è¡¨æççº 0ã",-1))]))}}),ot=oe(lt,[["__scopeId","data-v-83861189"]]),at={class:"day-detail-header"},it={class:"day-detail-body"},ut={key:0,class:"detail-notice"},rt={class:"day-result"},dt={key:1,class:"detail-list"},ct={key:2,class:"detail-list"},pt=le({__name:"InvestmentDayDetailDialog",props:{day:{},events:{}},emits:["close"],setup(c,{emit:C}){const m=c,N=C,b=f(null),d=f(null),S=k(()=>m.day!==null);Ue(S),ee(()=>m.day,async()=>{await Te(),m.day&&!b.value?.open?b.value?.showModal():!m.day&&b.value?.open&&b.value.close()},{flush:"post",immediate:!0}),Ae(()=>b.value?.close());function D(s){if(!b.value||s.target!==b.value)return;const r=b.value.getBoundingClientRect();(s.clientX<r.left||s.clientX>r.right||s.clientY<r.top||s.clientY>r.bottom)&&N("close")}function g(s){return s==null||s===0?"":s>0?"positive-value":"negative-value"}function y(s){if(s.type==="position_adjustment")return`${s.targetShares??"â"} è¡${s.totalCost==null?"":` · ç¸½ææ¬ ${$(Number(s.totalCost))} å
`}`;if(s.type==="cost_adjustment")return`ç¸½ææ¬ ${$(Number(s.totalCost))} å
`;if(s.type==="income_adjustment")return`${$(Number(s.cashAmount),!0)} å
`;if(s.type==="bonus_share_adjustment")return`${s.shares??"0"} è¡ï¼${$(Number(s.cashAmount??0),!0)} å
`;if(s.type==="bonus_share_settlement")return`${s.shares??"0"} è¡å
¥å¸³${s.cashAmount==null?"":`ï¼ç¸é¶æ¬¾ ${$(Number(s.cashAmount))} å
`}`;if(s.type==="corporate_action_override"){const r=[];return s.cashAmount!=null&&r.push(`實æ¶ç¾é ${$(Number(s.cashAmount))} å
`),s.shares!=null&&r.push(`å¯¦æ¶ ${s.shares} è¡`),s.fractionalCashAmount!=null&&r.push(`ç¸é¶æ¬¾ ${$(Number(s.fractionalCashAmount))} å
`),r.join("ï¼")||"沿ç¨å
¬éè³æ"}return(s.type==="buy"||s.type==="sell")&&s.price!=null?`${s.shares??"â"}
1 è¡ Ã ${Number(s.price).toLocaleString("zh-TW",{maximumFractionDigits:4})} å
`:`${s.shares??"â"} è¡`}return(s,r)=>(i(),te(ve,{to:"body"},[e("dialog",{ref_key:"dialog",ref:b,class:"day-detail-dialog","aria-labelledby":"investment-day-title",onCancel:r[1]||(r[1]=ne(h=>N("close"),["prevent"])),onKeydown:r[2]||(r[2]=Ee(ne(h=>n(d)?.focus(),["prevent"]),["tab"])),onClick:D},[c.day?(i(),u(w,{key:0},[e("header",at,[e("div",null,[e("span",null,a(c.day.date),1),r[3]||(r[3]=e("h2",{id:"investment-day-title"},"ç¶æ¥æç´°",-1))]),e("button",{ref_key:"closeButton",ref:d,type:"button",class:"close-button","aria-label":"ééç¶æ¥æç´°",autofocus:"",onClick:r[0]||(r[0]=h=>N("close"))},"Ã",512)]),e("div",it,[c.day.status==="pending"?(i(),u("p",ut,a(n(ze)(c.day))+"ãä½ ä¸éè¦ä¿®æ¹æè¡ï¼ç¤å¾è³æå°é½å¾å³å¯æ¥çæçã",1)):_("",!0),e("div",rt,[e("div",null,[r[4]||(r[4]=e("span",null,"æç",-1)),e("strong",{class:T(g(c.day.status==="pending"?null:c.day.profitLoss))},a(n(se)(c.day,"profit")),3)]),e("div",null,[r[5]||(r[5]=e("span",null,"æ¥å ±é
¬ç",-1)),e("strong",{class:T(g(c.day.status==="pending"?null:c.day.returnRate))},a(n(se)(c.day,"return")),3)]),e("div",null,[r[6]||(r[6]=e("span",null,"è¡å©æ¶å
¥",-1)),e("strong",null,a(c.day.estimatedCorporateActionCodes.length||c.day.incompleteCorporateActionHistoryCodes?.length?"å¾
æ´æ°":n($)(c.day.income,!0)),1)]),e("div",null,[r[7]||(r[7]=e("span",null,"æ·¨æå
¥",-1)),e("strong",null,a(n($)(c.day.externalFlow,!0)),1)])]),c.day.status==="completed"&&c.day.contributions.length?(i(),u("section",dt,[r[8]||(r[8]=e("h3",null,"æ¨çè²¢ç»",-1)),(i(!0),u(w,null,W(c.day.contributions,h=>(i(),u("div",{key:h.code,class:"detail-row"},[e("span",null,[e("strong",null,a(h.code),1),E(a(h.name||""),1)]),e("strong",{class:T(g(h.profitLoss))},a(n($)(h.profitLoss,!0)),3)]))),128))])):_("",!0),c.events.length?(i(),u("section",ct,[r[9]||(r[9]=e("h3",null,"ç¶æ¥ç°å",-1)),(i(!0),u(w,null,W(c.events,h=>(i(),u("div",{key:h.id,class:"detail-row"},[e("span",null,[e("strong",null,a(n(We)[h.type]),1),E(a(h.code),1)]),e("span",null,a(y(h)),1)]))),128))])):_("",!0)])],64)):_("",!0)],544)]))}}),vt=oe(pt,[["__scopeId","data-v-433b1f74"]]),yt={class:"shell holdings-page","aria-labelledby":"holdings-page-title"},mt={class:"holdings-header"},bt={key:0,class:"state-panel"},gt={key:1,class:"login-panel"},ft={class:"login-actions"},ht=["disabled"],kt=["disabled"],$t={key:2,class:"state-panel error-panel"},Ct={key:3,class:"state-panel"},_t={key:4,class:"state-panel error-panel"},Dt={key:0,class:"notice error-notice"},wt={key:1,class:"notice success-notice",role:"status"},Lt={key:2,class:"onboarding-actions saved-actions"},At=["disabled"],Et={key:3,class:"empty-onboarding"},Tt={class:"onboarding-actions"},St={class:"account-overview"},xt={class:"hero-value"},Nt={class:"overview-metrics"},It={class:"performance-section"},Mt={class:"month-header"},Pt=["disabled"],Rt={key:0,class:"update-inline",role:"status"},qt={key:1,class:"update-inline",role:"status"},Ft={key:2,class:"update-notice",role:"status"},Vt={class:"cumulative-date"},zt={class:"month-summary"},Wt={class:"primary-summary"},Ot={key:1,class:"update-inline",role:"status"},Bt={id:"current-holdings",class:"positions-section"},jt={class:"section-heading"},Gt={class:"holdings-actions"},Ut={class:"positions-table-wrap"},Ht={class:"positions-table"},Yt={key:0},Zt={class:"price-date"},Kt={class:"cost-cell"},Xt={key:0},Qt={class:"position-actions"},Jt=["onClick"],en={class:"position-more"},tn={class:"position-menu"},nn=["onClick"],sn={key:0,class:"historical-section"},ln={class:"historical-list"},on=["onClick"],an=["onClick"],un={class:"void-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"position-delete-title"},rn={id:"position-delete-title"},dn={key:0,class:"void-error",role:"alert"},cn={class:"void-actions"},pn=["disabled"],vn=["disabled"],yn=le({__name:"index",setup(c){const C=Se(),m=xe(),N=Ne(),b=f(!1),d=f(null),S=f(!1),D=f(null),g=f(null),y=f(!1),s=f(null),r=f(null),h=f([]),j=f(null),q=f(null),O=f(!1),x=f(null),F=f(!1),ae=f(null);let G=0;const ye=typeof m.query.month=="string"&&/^\d{4}-(0[1-9]|1[0-2])$/.test(m.query.month)?m.query.month:new Date().toLocaleDateString("en-CA",{timeZone:"Asia/Taipei"}).slice(0,7),L=f(ye),ie=new Date().toLocaleDateString("en-CA",{timeZone:"Asia/Taipei"}).slice(0,7),V=k(()=>He({mounted:b.value,authReady:C.ready.value,userId:C.user.value?.uid??null,sessionReady:C.sessionReady.value,authPending:C.pending.value})),A=k(()=>d.value?.positions??[]),I=k(()=>d.value?.events.filter(l=>l.status==="active")??[]),me=k(()=>x.value?I.value.filter(l=>l.code===x.value?.code).length:0),be=k(()=>d.value?.performance.days.find(l=>l.date===g.value)??null),ge=k(()=>I.value.filter(l=>l.date===g.value)),Z=k(()=>A.value.every(l=>l.referenceMarketValue!=null)?A.value.reduce((l,t)=>
1l+t.referenceMarketValue,0):null),ue=k(()=>A.value.every(l=>l.costComplete)?A.value.reduce((l,t)=>l+(t.totalCost??0),0):null),re=k(()=>ue.value==null||Z.value==null?null:Z.value-ue.value),K=k(()=>{const l=new Set(A.value.map(p=>p.code)),t=new Map;for(const p of d.value?.events??[]){if(p.status!=="active"||l.has(p.code))continue;const v=t.get(p.code)??[];v.push(p),t.set(p.code,v)}return[...t.entries()].map(([p,v])=>{const z=h.value.find(Q=>Q.code===p);return{code:p,name:z?.label.replace(new RegExp(`^${p}\\s*`),"")||null,activeEventCount:v.length}}).sort((p,v)=>p.code.localeCompare(v.code))}),fe=k(()=>`${L.value.slice(0,4)} å¹´ ${Number(L.value.slice(5,7))} æ`),he=k(()=>L.value<ie),M=k(()=>d.value?.performance.cumulative),P=k(()=>Ge(d.value?.performance.days??[],new Date().toLocaleDateString("en-CA",{timeZone:"Asia/Taipei"}))),ke=k(()=>{const l=I.value[0];return!!l&&!P.value&&!!d.value?.marketDate&&l.type==="opening_balance"&&l.date.slice(0,7)===L.value&&I.value.every(t=>t.type==="opening_balance"&&t.date===l.date)&&d.value.marketDate<=l.date&&d.value.performance.days.every(t=>t.date<=l.date)}),$e=k(()=>{const l=[...new Set(A.value.map(t=>t.priceDate).filter(Boolean))];return l.length===1?`æ¶ç¤å¹æ¥æ ${l[0]}`:"忍ç广 ¼æ¥æè¦æè¡è¡¨æ ¼"});Ie(()=>{b.value=!0,Ce()}),ee([()=>V.value,L],([l])=>{l==="ready"&&U(),l==="signed-out"&&(G+=1,d.value=null,g.value=null,y.value=!1,q.value=null,O.value=!1)},{immediate:!0}),ee([V,S,()=>m.query.start,()=>m.query.code],()=>{if(V.value!=="ready"||S.value||!d.value||D.value||m.query.start!=="holding")return;const l=typeof m.query.code=="string"&&/^\d{4,6}[A-Z]?$/.test(m.query.code)?m.query.code:void 0,{start:t,code:p,...v}=m.query;if(l&&(A.value.some(z=>z.code===l)||I.value.some(z=>z.code===l))){N.replace({path:`/my/holdings/${l}`,query:v});return}N.replace({query:v}),H("opening_balance",l)});async function Ce(){try{const[l,t]=await Promise.all([$fetch("/api/etf/list",{query:{compact:1}}),$fetch("/api/stock/list",{query:{compact:1}})]),p=[...l.items.map(v=>({code:v.code,label:`${v.code} ${v.name}`})),...t.items.map(v=>({code:v.code,label:`${v.code} ${v.name}`}))];h.value=[...new Map(p.map(v=>[v.code,v])).values()]}catch{h.value=[]}}async function U(){const l=++G;S.value=!0,D.value=null;try{const t=await $fetch("/api/user/investments",{query:{month:L.value}});if(l!==G)return;d.value=t,qe("holdings")}catch(t){l===G&&(D.value=pe(t))}finally{l===G&&(S.value=!1)}}async function de(l){const t=Oe(L.value,l);t>ie||(L.value=t,g.value=null,await N.replace({query:{...m.query,month:L.value}}))}function H(l="opening_balance",t){O.value=!1,q.value=null,s.value=null,r.value={type:l,code:t},y.value=!0}function X(l="buy",t){s.value=null,r.value={type:l,code:t},y.value=!0}function ce(l){x.value=l,ae.value=d.value?.account.ledgerVersion??null,j.value=null,q.value=null}async function _e(){if(!x.value||F.value)return;const l=x.value.code;F.value=!0,j.value=null;try{const t=await $fetch(`/api/user/investments/positions/${encodeURIComponent(l)}`,{method:"DELETE",body:{expectedLedgerVersion:ae.value}});x.value=null,q.value=`å·²åªé¤ ${t.code} æè¡è ${t.removedEventCount} çç¸éç´éã`,await U()}catch(t){j.value=pe(t)}finally{F.value=!1}}async function De(l){O.value=l.created&&I.value.length===0&&["opening_balance","buy"].includes(l.type),q.value=O.value?`å·²${l.type==="buy"?"è¨éè²·é²":"å å
¥"} ${l.code}ï¼${Number(l.shares).toLocaleString("zh-TW")} è¡ã`:"ç´éå·²å²åã",y.value=!1,s.value=null,r.value=null,await U()}function Y(l){return l==null||l===0?"neutral-value":l>0?"positive-value":"negative-value"}function we(l){return l.toLocaleString("zh-TW",{maximumFractionDigits:1})}return Me({title:"æçæè¡æçæ¥æï½ETFè³è¨ç¶²",description:"è¨éåè¡è ETF æè¡ï¼æ¥çæ¯æ¥ãæ¯ææçèæéå æ¬å ±é
¬çã",robots:"noindex,nofollow"}),(l,t)=>{const p=Re,v=ot,z=vt,Q=Be,Le=Fe("login-source");return i(),u("section",yt,[e("header",mt,[e("div",null,[R(p,{to:"/my",class:"back-link"},{default:B(()=>[...t[16]||(t[16]=[E("â åå°æç",-1)])]),_:1}),t[17]||(t[17]=e("p",{class:"eyebrow"},"PERSONAL PERFORMANCE",-1)),t[18]||(t[18]=e("h1",{id:"holdings-p
1age-title"},"æè¡æçæ¥æ",-1)),t[19]||(t[19]=e("p",{class:"lead"},"è¨éæè¡èè²·è³£ï¼çæ¸
æ¥æ¯å¤©èæ¯æçæè³è¡¨ç¾ã",-1))])]),n(V)==="auth-loading"||n(V)==="session-loading"?(i(),u("div",bt,[...t[20]||(t[20]=[e("span",{class:"loading-dot"},null,-1),e("p",null,"æ£å¨æ´çä½ çæè¡ç´é",-1)])])):n(V)==="signed-out"?Pe((i(),u("section",gt,[t[21]||(t[21]=e("div",null,[e("p",{class:"eyebrow"},"PRIVATE DATA"),e("h2",null,"ç»å
¥å¾å»ºç«ä½ çæè¡ç´é"),e("p",null,"æè¡è交æç´éåªå±¬æ¼ä½ ç帳èï¼ç»å
¥å¾æè½è·¨è£ç½®ä¿åã")],-1)),e("div",ft,[e("button",{type:"button",class:"btn btn-primary",disabled:n(C).pending.value,onClick:t[0]||(t[0]=(...o)=>n(C).signInWithGoogle&&n(C).signInWithGoogle(...o))},"ä½¿ç¨ Google ç»å
¥",8,ht),e("button",{type:"button",class:"btn btn-outline",disabled:n(C).pending.value,onClick:t[1]||(t[1]=(...o)=>n(C).signInWithApple&&n(C).signInWithApple(...o))},"ä½¿ç¨ Apple ç»å
¥",8,kt)])])),[[Le,"holdings"]]):n(V)==="session-error"?(i(),u("div",$t,[e("p",null,a(n(C).error.value||"ç»å
¥å·²å®æï¼ä½é²ç«¯è³ææ«æç¡æ³é£ç·ã"),1),e("button",{type:"button",class:"btn btn-outline btn-sm",onClick:t[2]||(t[2]=(...o)=>n(C).refreshSession&&n(C).refreshSession(...o))},"éæ°é£ç·")])):n(S)&&!n(d)?(i(),u("div",Ct,[...t[22]||(t[22]=[e("span",{class:"loading-dot"},null,-1),e("p",null,"æ£å¨æ´æ°ä½ çæç",-1)])])):n(D)&&!n(d)?(i(),u("div",_t,[e("p",null,a(n(D)),1),e("button",{type:"button",class:"btn btn-outline btn-sm",onClick:U},"éæ°è¼å
¥")])):n(d)?(i(),u(w,{key:5},[n(D)?(i(),u("div",Dt,[e("span",null,a(n(D)),1),e("button",{type:"button",onClick:U},"éæ°è¼å
¥")])):_("",!0),n(q)?(i(),u("p",wt,a(n(q)),1)):_("",!0),n(O)&&n(I).length>0&&!n(D)?(i(),u("div",Lt,[e("button",{type:"button",class:"btn btn-primary",disabled:n(S)||!!n(D),onClick:t[3]||(t[3]=o=>H("opening_balance"))},"åå å
¥ä¸æª",8,At),e("a",{href:"#current-holdings",class:"btn btn-outline",onClick:t[4]||(t[4]=o=>O.value=!1)},"æ¥çæçæè¡")])):_("",!0),n(A).length===0&&n(I).length===0?(i(),u("section",Et,[t[24]||(t[24]=e("p",{class:"eyebrow"},"START HERE",-1)),t[25]||(t[25]=e("h2",null,"å
å å
¥ä¸æªï¼éå§çèªå·±çæè³è¡¨ç¾",-1)),t[26]||(t[26]=e("p",null,"å¡«å
¥ç®åææçè¡ç¥¨æ ETF èè¡æ¸ï¼ä¸ç¨è£é½é廿¯ç交æãææ¬ä¸ç¢ºå®å¯ä»¥ç¨å¾è£ã",-1)),e("div",Tt,[e("button",{type:"button",class:"btn btn-primary",onClick:t[5]||(t[5]=o=>H("opening_balance"))},"å å
¥ç¬¬ä¸æªæè¡"),e("button",{type:"button",class:"btn btn-ghost",onClick:t[6]||(t[6]=o=>H("buy"))},"æ³å¾ä¸ç交æéå§ï¼è¨éè²·é² â"),n(d).events.length?(i(),te(p,{key:0,to:"/my/holdings/records",class:"btn btn-outline"},{default:B(()=>[...t[23]||(t[23]=[E("å
¨é¨ç°å",-1)])]),_:1})):_("",!0)])])):(i(),u(w,{key:4},[e("section",St,[e("div",xt,[t[27]||(t[27]=e("span",null,"ç®ååèå¸å¼",-1)),e("strong",null,a(n($)(n(Z))),1),e("small",null,a(n($e))+" · ä»¥ææ°å¯ç¨æ¶ç¤å¹ä¼°ç®",1)]),e("div",Nt,[e("div",null,[t[28]||(t[28]=e("span",null,"ç´¯è¨æªå¯¦ç¾æç",-1)),e("strong",{class:T(Y(n(re)))},a(n($)(n(re),!0)),3)]),e("div",null,[t[29]||(t[29]=e("span",null,"è¨éçæ¸",-1)),e("strong",null,a(n(I).length),1)]),e("div",null,[t[30]||(t[30]=e("span",null,"æææ¨ç",-1)),e("strong",null,a(n(A).length),1)])])]),e("section",It,[e("header",Mt,[e("button",{type:"button","aria-label":"ä¸ä¸åæ",onClick:t[7]||(t[7]=o=>de(-1))},"â¹"),e("div",null,[t[31]||(t[31]=e("p",{class:"eyebrow"},"MONTHLY RESULT",-1)),e("h2",null,a(n(fe)),1)]),e("button",{type:"button","aria-label":"ä¸ä¸åæ",disabled:!n(he),onClick:t[8]||(t[8]=o=>de(1))},"âº",8,Pt)]),n(d).performance.month===n(L)?(i(),u(w,{key:0},[n(ke)?(i(),u("p",Rt,"å·²éå§è¿½è¹¤ãå¾è¨éæ¥æçä¸ä¸åäº¤ææ¥èµ·ï¼ç¤å¾è³ææ´æ°å¾å°±è½çå°æ¯æ¥æçã")):_("",!0),n(P)?.todayPricesOnly?(i(),u("p",qt,a(n(P).message),1)):n(P)?(i(),u("aside",Ft,[e("strong",null,a(n(P).title),1),e("p",null,a(n(P).message),1),e("details",null,[t[32]||(t[32]=e("summary",null,"æ¥çæªæ´æ°æ¥æèåå ",-1)),e("ul",null,[(i(!0),u(w,null,W(n(P).days,o=>(i(),u("li",{key:o.date},a(o.date)+"ï¼"+a(o.reason),1))),128))])])])):_("",!0),e("p",Vt,a(n(M)?.asOfDate?`ç´¯ç©æªè³ ${n(M).asOfDate}`:n(P)?"å°ç¡å®æ´è³æå¯ç´¯ç©ï¼ç¤å¾è³æå°é½å¾æ´æ°":"éåæå°ç¡æçç´é"),1),e("div",zt,[e("div",Wt,[t[33]||(t[33]=e("span",null,"æ¬æç´¯ç©æç",-1)),e("strong",{class:T(Y(n(M)?.totalProfitLoss??null))},a(n($)(n(M)?.totalProfitLoss??null,!0)),3)]),e("div",null,[t[34]||(t[34]=e("span",null,"æ¬æç´¯ç©å ±é
¬ç",-1)),e("strong",{class:T(Y(n(M)?.twr??null))},a(n(je)(n(M)?.twr??null,!0)),3)]),e("div",null,[t[35]||(t[35]=e("span",null,"æ·¨æå
¥",-1)),e("strong",null,a(n($)(n(M)?.totalExternalFlow??null,!0)),1)]),e("div",null,[t[3
16]||(t[36]=e("span",null,"æè³æ¶å
¥",-1)),e("strong",null,a(n($)(n(M)?.totalIncome??null,!0)),1)])]),R(v,{month:n(L),days:n(d).performance.days,"selected-date":n(g),onSelect:t[9]||(t[9]=o=>g.value=o)},null,8,["month","days","selected-date"])],64)):(i(),u("p",Ot,a(n(D)?"éåæçè³æå°æªè¼å
¥ï¼è«éæ°è¼å
¥ã":"æ£å¨è¼å
¥éåæçæçâ¦"),1))]),e("section",Bt,[e("div",jt,[t[38]||(t[38]=e("div",null,[e("p",{class:"eyebrow"},"HOLDINGS"),e("h2",null,"ç®åæè¡")],-1)),e("div",Gt,[R(p,{to:"/my/holdings/records",class:"btn btn-outline"},{default:B(()=>[...t[37]||(t[37]=[E("å
¨é¨ç°å",-1)])]),_:1}),e("button",{type:"button",class:"btn btn-outline",onClick:t[10]||(t[10]=o=>H("opening_balance"))},"å å
¥æè¡"),e("button",{type:"button",class:"btn btn-primary",onClick:t[11]||(t[11]=o=>X("buy"))},"è¨éè²·è³£")])]),e("div",Ut,[e("table",Ht,[t[43]||(t[43]=e("thead",null,[e("tr",null,[e("th",null,"æ¨ç"),e("th",null,"è¡æ¸"),e("th",null,"æ¶ç¤å¹"),e("th",null,"åèå¸å¼"),e("th",null,"åè平忿¬"),e("th",null,"已實ç¾"),e("th",null,"æªå¯¦ç¾"),e("th",null,[e("span",{class:"sr-only"},"æä½")])])],-1)),e("tbody",null,[(i(!0),u(w,null,W(n(A),o=>(i(),u("tr",{key:o.code},[e("td",null,[R(p,{to:{path:`/my/holdings/${o.code}`,query:{month:n(L)}},class:"position-link"},{default:B(()=>[e("strong",null,a(o.code),1),e("span",null,a(o.name||(o.instrumentType==="stock"?"åè¡":"ETF")),1),t[39]||(t[39]=e("small",null,"æ¥çåå¥ç´é â",-1))]),_:2},1032,["to"])]),e("td",null,[E(a(o.economicShares.toLocaleString("zh-TW",{maximumFractionDigits:6}))+" ",1),o.receivableShares>0?(i(),u("small",Yt,"å·²å
¥å¸³ "+a(o.settledShares.toLocaleString("zh-TW",{maximumFractionDigits:6}))+"ï¼ææ¶ "+a(o.receivableShares.toLocaleString("zh-TW",{maximumFractionDigits:6})),1)):_("",!0)]),e("td",null,[E(a(o.price?.toLocaleString("zh-TW",{maximumFractionDigits:4})??"â"),1),e("small",Zt,a(o.priceDate||"å°ç¡å¹æ ¼"),1)]),e("td",null,a(n($)(o.referenceMarketValue??null)),1),e("td",Kt,[o.averageCost!=null?(i(),u(w,{key:0},[E(" ç´ "+a(we(o.averageCost))+" ",1),o.costComplete?_("",!0):(i(),u("small",Xt,"é¨åææ¬æªè¨å®"))],64)):(i(),u(w,{key:1},[t[41]||(t[41]=e("span",{class:"missing-cost"},"æªè¨å®",-1)),R(p,{class:"inline-correction",to:`/my/holdings/${o.code}`},{default:B(()=>[...t[40]||(t[40]=[E("æ¥çç´éè£ä¸ææ¬",-1)])]),_:1},8,["to"])],64))]),e("td",{class:T(Y(o.realizedProfitLoss))},a(n($)(o.realizedProfitLoss,!0)),3),e("td",{class:T(Y(o.referenceUnrealizedProfitLoss??null))},a(n($)(o.referenceUnrealizedProfitLoss??null,!0)),3),e("td",null,[e("div",Qt,[e("button",{type:"button",class:"text-button",onClick:J=>X("buy",o.code)},"è²·è³£",8,Jt),e("details",en,[t[42]||(t[42]=e("summary",null,"æ´å¤",-1)),e("div",tn,[e("button",{type:"button",class:"danger-action",onClick:J=>ce(o)},"åªé¤å
¨é¨ç´é",8,nn)])])])])]))),128))])])])]),n(K).length?(i(),u("section",sn,[e("details",null,[e("summary",null,"å·²çµæ¸
æ¨çï¼"+a(n(K).length)+"ï¼",1),e("div",ln,[(i(!0),u(w,null,W(n(K),o=>(i(),u("article",{key:o.code},[e("div",null,[e("strong",null,a(o.code),1),e("span",null,a(o.name||"")+" · æè¡å·²çµæ¸
",1)]),e("div",null,[R(p,{to:`/my/holdings/${o.code}`},{default:B(()=>[...t[44]||(t[44]=[E("æ¥çç´é",-1)])]),_:1},8,["to"]),e("button",{type:"button",onClick:J=>X("buy",o.code)},"忬¡è²·é²",8,on),e("button",{type:"button",class:"danger-action",onClick:J=>ce({code:o.code,name:o.name})},"åªé¤å
¨é¨ç´é",8,an)])]))),128))])])])):_("",!0)],64)),t[45]||(t[45]=e("details",{class:"calculation-note"},[e("summary",null,"æçæéº¼è¨ç®ï¼ä½ææ´æ°ï¼"),e("p",null,"åèå¸å¼ä»¥ç®åè¡æ¸ä¹ä¸åæ¨çææ°å¯ç¨æ¶ç¤å¹ï¼æ°å¢æè¡ä¸ç¨çä»å¤©æ¶ç¤ï¼è¥å¹æ ¼è·¨è¶å岿餿¬æ¯ï¼æçå¾
æ°æ¶ç¤å¹ï¼ä¸éä¿®æ¹æè¡ã"),e("p",null,[e("strong",null,"鿝åè試ç®ã"),E("æçæ¼äº¤ææ¥ç¤å¾æ´æ°ï¼éå³æå ±å¹ï¼åå¾å®æ¹æ¶ç¤å¹è餿¬æ¯è³æå¾ææéæ°è¨ç®ãå便ºå
¬å¸æéä¸åï¼ä¸ä¿èæ¶ç¤å¾ç«å³å®æï¼é 颿¨ç¤ºçãç´¯ç©æªè³ãæ¥æææ¯æ¬ææ¸åçè¨ç®ç¯åã")]),e("p",null,"æ¬æç´¯ç©æçå ç¸½å°æè¿é£çºè³æå®æ´çæ¥æï¼å ±é
¬çä¹ä½¿ç¨ç¸åæéãä»å¤©å°æªæ´æ°æä¿çå
åç´¯ç©ï¼è¥ä¸éæè³æç¼ºæ¼ï¼å
åå¨ç¼ºæ¼åï¼ä¸è·³éç¼ºæ¼æ¥ç¹¼çºå 總ãè³æå°é½å¾éæ°é忬é å³
1坿¥çï¼æ°å¢æä¿®æ£äº¤æå¾æéæ°è¨ç®ã"),e("p",null,"æ¥æè¨ééå§è¿½è¹¤å¾ç广 ¼è®åã交æè²»ç¨åè¡å©ãè²·é²æå
¥çéé¡ä¸æç´æ¥ç®æç²å©ï¼è³£åºæ¶åçéé¡ä¹ä¸æç´æ¥ç®æè§æãè³æå¡«é¯ææ¼è¨æï¼è«å°åå¥ç°åæ·å²ä¿®æ£åç´éï¼æè£ä¸è²·è³£ã"),e("p",null,"è²»ç¨ãç¨
é¡åå¸åææ¬è¨ç®æ¹å¼å¯è½ä¸åï¼å¹³åææ¬èæçå
ä¾åèï¼è«ä»¥å¸å交å²èå°å¸³è³æçºæºã"),e("p",null,"æå ±é
¬çä½¿ç¨æ¯æ¥ Modified Dietz å ±é
¬çé£ä¹ï¼ä½çºæé¤æå
¥èååè³éå½±é¿å¾ç TWR ä¼°è¨å¼ã")],-1))],64)):_("",!0),R(z,{day:n(be),events:n(ge),onClose:t[12]||(t[12]=o=>g.value=null)},null,8,["day","events"]),R(Q,{open:n(y),"ledger-version":n(d)?.account.ledgerVersion,options:n(h),positions:n(A),"corporate-actions":n(d)?.corporateActions??[],"latest-trading-date":n(d)?.marketDate,event:n(s),preset:n(r),onClose:t[13]||(t[13]=o=>y.value=!1),onSaved:De},null,8,["open","ledger-version","options","positions","corporate-actions","latest-trading-date","event","preset"]),(i(),te(ve,{to:"body"},[n(x)?(i(),u("div",{key:0,class:"void-backdrop",onMousedown:t[15]||(t[15]=ne(o=>!n(F)&&(x.value=null),["self"]))},[e("section",un,[t[46]||(t[46]=e("p",{class:"eyebrow"},"DELETE HOLDING",-1)),e("h2",rn,"æ°¸ä¹
åªé¤ "+a(n(x).code)+" çå
¨é¨ç´éï¼",1),e("p",null,"å°åªé¤ "+a(n(me))+" çç´éåææä¿®æ¹çæ¬ï¼ç¡æ³å¾©åãå
¶ä»æ¨ççç´é䏿åªé¤ï¼æè¡èæ¯æ¥ãæ¯ææçæéæ°è¨ç®ã",1),t[47]||(t[47]=e("p",null,"å¦æåªæ¯è³£å
æè¡ï¼è«æ¹ç¨ãè¨éè²·è³£ãçè³£åºï¼ä¿çæè³æ·å²ã",-1)),n(j)?(i(),u("p",dn,a(n(j)),1)):_("",!0),e("div",cn,[e("button",{type:"button",class:"btn btn-outline",disabled:n(F),onClick:t[14]||(t[14]=o=>x.value=null)},"åæ¶",8,pn),e("button",{type:"button",class:"btn btn-primary",disabled:n(F),onClick:_e},a(n(F)?"åªé¤ä¸":"æ°¸ä¹
åªé¤"),9,vn)])])],32)):_("",!0)]))])}}}),hn=oe(yn,[["__scopeId","data-v-f67ce6ce"]]);export{hn as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.