### [[2025]]年 - [[2025-07|07月]], [[2025-07-03|<]] [[第185天]] [[2025-07-05|>]] , 金曜日 --- ## 記事 31580+1900+2600+4850+1000+4200 1500+1500+500+(300+300+300+300)+2500+800+1000+1000+500+500+500+1000+100+500+500+700+700 #### 出账 ##### 货款 ###### amex Oamex:: 10840 3100+7740 ###### tongyi Otongyi:: 2540 2540 ###### nashiga Onashiga:: 11720 11720 ##### 消耗 ###### tongyi Utongyi:: 3800 CN107160945JP ###### nashiga Unashiga:: ##### 工资 ###### tongyi Stongyi:: 1760 88 * 20 ###### nashiga Snashiga:: #### 入账 ###### tongyi Inashiga:: 2474 159+236+168+100+90+173+337+177+175+243+120+202+147+147 Itongyi:: 1058 92+172+155+113+143+158+137++88 ```dataviewjs const d = dv.current() // === 原始字段 === const amex = d.Oamex || 0 const tongyi = d.Otongyi || 0 const nashiga = d.Onashiga || 0 const use_tongyi = d.Utongyi || 0 const use_nashiga = d.Unashiga || 0 const sal_tongyi = d.Stongyi || 0 const sal_nashiga = d.Snashiga || 0 // === 汇总值 === const oOUTall = amex + tongyi + nashiga const oUSEall = use_tongyi + use_nashiga const oSALall = sal_tongyi + sal_nashiga const oALL = oOUTall + oUSEall + oSALall // === Chart 配置 === const chartData = { type: 'doughnut', data: { labels: [ '总货款', '总消耗', '总工资' ], datasets: [ { label: '总支出分类', data: [oOUTall, oUSEall, oSALall], backgroundColor: [ 'rgba(75, 192, 192, 0.6)', // OUT 'rgba(153, 102, 255, 0.6)', // USE 'rgba(255, 159, 64, 0.6)' // SAL ], borderColor: [ 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 } ] }, options: { responsive: true, cutout: '50%', plugins: { legend: { position: 'bottom' }, tooltip: { enabled: true }, centerText: { display: true, text: `总支出:¥${oALL.toLocaleString()}` } } }, plugins: [ { id: 'centerText', beforeDraw: function (chart) { const width = chart.width; const height = chart.height; const ctx = chart.ctx; ctx.restore(); const fontSize = (height / 150).toFixed(2); ctx.font = `${fontSize}em sans-serif`; ctx.textBaseline = 'middle'; const text = chart.options.plugins.centerText.text; const textX = Math.round((width - ctx.measureText(text).width) / 2); const textY = height / 2; ctx.fillText(text, textX, textY); ctx.save(); } } ] } window.renderChart(chartData, this.container) ``` --- # memos