项目需求、任务以及模块精简

This commit is contained in:
2026-04-04 19:00:25 +08:00
parent 787c82d30c
commit 953bdf6bbb
895 changed files with 141589 additions and 67010 deletions

View File

@@ -0,0 +1,17 @@
import{b as V,j as h,W as F,B as I,ai as W,c as R,o as $,a as d,aj as k,an as n,X as B,_ as M}from"./index-BRLZOSuF-1775297478351.js";import{e as P}from"./index-CkelhEk4.js";import"./myChartInfo-CETPSFOA.js";const j={class:"chart-card"},D=V({__name:"ChartV06",props:{formParams:{type:Object,default:()=>({})}},setup(g){const c=g,a=h([]),p=h(null);let r=null;const f=()=>r?.resize(),l=o=>{const e=Number(o??0);return Number.isFinite(e)?e:0},v=o=>{const e=Number(o??0);return Number.isFinite(e)?Number(e.toFixed(2)):0};async function S(){try{const o={...c.formParams},e=await P(o);a.value=e||[]}catch{a.value=[]}}function b(){const o=p.value;if(!o)return;r||(r=k(o));const e={tooltip:{trigger:"axis",axisPointer:{type:"cross"},backgroundColor:"rgba(145, 200, 255, 0.9)",borderColor:"#409EFF",borderWidth:1,textStyle:{color:"#0a3b70"},padding:[8,12],borderRadius:6},legend:{top:"10",left:"center",textStyle:{fontSize:12,color:"#e0e6ff"},data:["收入","支出","利润率","净利润"]},grid:{left:"5%",right:"5%",bottom:"10%",top:"15%",containLabel:!0},xAxis:[{type:"category",data:[],axisLabel:{fontSize:11,interval:0,color:"#b4c7e7"},axisLine:{lineStyle:{color:"#1a508b"}},boundaryGap:!0}],yAxis:[{type:"value",name:"金额 (万元)",nameTextStyle:{fontSize:12,color:"#b4c7e7"},axisLabel:{formatter:"{value}",color:"#b4c7e7"},axisLine:{lineStyle:{color:"#1a508b"}},splitLine:{lineStyle:{color:"rgba(26, 80, 139, 0.3)"}}},{type:"value",name:"利润率 (%)",nameTextStyle:{fontSize:12,color:"#b4c7e7"},axisLabel:{formatter:"{value} %",color:"#b4c7e7"},axisLine:{lineStyle:{color:"#1a508b"}},splitLine:{lineStyle:{color:"rgba(26, 80, 139, 0.2)"}},min:"dataMin",max:"dataMax",scale:!0}],series:[{name:"收入",type:"bar",yAxisIndex:0,data:[],barWidth:"12%",itemStyle:{color:new n(0,0,0,1,[{offset:0,color:"#85E868"},{offset:1,color:"#67C23A"}]),borderRadius:[8,8,0,0]},label:{show:!0,position:"top",fontSize:10,color:"#fff",formatter:"{c}"}},{name:"支出",type:"bar",yAxisIndex:0,data:[],barWidth:"12%",itemStyle:{color:new n(0,0,0,1,[{offset:0,color:"#FF8A8A"},{offset:1,color:"#F56C6C"}]),borderRadius:[8,8,0,0]},label:{show:!0,position:"top",fontSize:10,color:"#fff",formatter:"{c}"}},{name:"利润率",type:"line",yAxisIndex:1,data:[],smooth:!0,lineStyle:{width:1.5,color:"#409EFF"},symbol:"circle",symbolSize:5,label:{show:!0,position:"top",fontSize:10,color:"#409EFF",formatter:"{c}",offset:[0,-5]},areaStyle:{color:new n(0,0,0,1,[{offset:0,color:"rgba(64, 158, 255, 0.3)"},{offset:1,color:"rgba(64, 158, 255, 0.0)"}])},emphasis:{focus:"series"}},{name:"净利润",type:"line",yAxisIndex:0,data:[],smooth:!0,lineStyle:{width:1.5,color:"#FF9D28"},symbol:"circle",symbolSize:5,label:{show:!0,fontSize:10,color:"#FF9D28",formatter:"{c}"},areaStyle:{color:new n(0,0,0,1,[{offset:0,color:"rgba(255, 157, 40, 0.3)"},{offset:1,color:"rgba(255, 157, 40, 0)"}])},emphasis:{focus:"series"}}]};if(a.value?.length>0){const w=a.value.map(t=>{const s=t.axisName||"";return s.includes("月")?s:`${s}`}),u=a.value.map(t=>l(t.value01)),m=a.value.map(t=>l(t.value02)),x=a.value.map(t=>v(t.value03)),y=a.value.map(t=>l(t.value04)),E=u.map(t=>Number((t/1e4).toFixed(2))),z=m.map(t=>Number((t/1e4).toFixed(2))),L=y.map(t=>Number((t/1e4).toFixed(2)));e.tooltip.formatter=function(t){const s=t[0].axisValue,i=t[0].dataIndex,_=u[i],A=m[i],N=x[i],C=y[i];return`
<div style="text-align:center; font-weight:bold; margin-bottom:6px">${s}</div>
<table style="width:100%; border-collapse:collapse; text-align:center">
<tr>
<td style="border:1px solid #409EFF; padding:4px; font-weight:bold">收入(元)</td>
<td style="border:1px solid #409EFF; padding:4px; font-weight:bold">支出(元)</td>
<td style="border:1px solid #409EFF; padding:4px; font-weight:bold">利润率(%)</td>
<td style="border:1px solid #409EFF; padding:4px; font-weight:bold">净利润(元)</td>
</tr>
<tr>
<td style="border:1px solid #409EFF; padding:4px">${_}</td>
<td style="border:1px solid #409EFF; padding:4px">${A}</td>
<td style="border:1px solid #409EFF; padding:4px">${N}</td>
<td style="border:1px solid #409EFF; padding:4px">${C}</td>
</tr>
</table>
`},e.xAxis[0].data=w,e.series[0].data=E,e.series[1].data=z,e.series[2].data=x,e.series[3].data=L}r.setOption(e,!0)}return F(()=>c.formParams,()=>{S()},{deep:!0,immediate:!0}),F(a,()=>{B(()=>b())},{deep:!0}),I(()=>{b(),window.addEventListener("resize",f)}),W(()=>{window.removeEventListener("resize",f),r&&(r.dispose(),r=null)}),(o,e)=>($(),R("div",j,[e[0]||(e[0]=d("div",{class:"chart-card-header"},[d("span",{class:"chart-card-title"},"月度收支分析")],-1)),d("div",{class:"bar-line-chart-container",ref_key:"chartRef",ref:p},null,512)]))}}),G=M(D,[["__scopeId","data-v-079af4ba"]]);export{G as default};