|
|
import{A as e,E as t,F as n,M as r,N as i,P as a,S as o,T as s,_ as c,b as l,h as u,i as d,k as f,m as p,w as m,x as h,y as g,z as _}from"./index-yNQwsZKK.js";import{t as v}from"./request-CbM-LIzp.js";import{t as y}from"./echarts-W_05fbm-.js";var b={class:`program-production`},x={class:`stat-card`},S={class:`stat-label`},C={class:`stat-value`},w={class:`stat-card`},T={class:`stat-label`},E={class:`stat-value`},D={class:`stat-card`},O={class:`stat-label`},k={class:`stat-value`},A={class:`stat-card`},j={class:`stat-label`},M={class:`stat-value top-program`},N={class:`card-title`},P={class:`card-title`},F={class:`card-title`},I=d(h({__name:`ProgramProduction`,setup(d){let h=a({dateRange:[],programName:``}),I=n(!1),L=n({}),R=n([]),z=n(),B=n(),V=null,H=null;function U(){if(!z.value||!R.value.length)return;V?.dispose(),V=y.init(z.value);let e=R.value.map(e=>e.programName),t=R.value.map(e=>e.totalQuantity);V.setOption({tooltip:{trigger:`axis`,formatter:e=>{let t=e[0];return`${t.name}<br/>产量: ${t.value} 件`}},grid:{left:50,right:20,top:20,bottom:40},xAxis:{type:`category`,data:e,axisLabel:{fontSize:11,rotate:e.length>8?30:0}},yAxis:{type:`value`,name:`产量(件)`,axisLabel:{fontSize:12}},series:[{type:`bar`,data:t,barWidth:`50%`,itemStyle:{color:`#E6A23C`,borderRadius:[4,4,0,0]}}]})}function W(){if(!B.value||!R.value.length)return;H?.dispose(),H=y.init(B.value);let e=R.value.map(e=>({value:e.totalQuantity,name:e.programName}));H.setOption({tooltip:{trigger:`item`,formatter:`{b}: {c}件 ({d}%)`},series:[{type:`pie`,radius:[`40%`,`65%`],center:[`50%`,`50%`],label:{show:!0,formatter:`{b}: {c}件 ({d}%)`,fontSize:11},data:e,emphasis:{label:{fontSize:14,fontWeight:`bold`}}}]})}function G(){V?.dispose(),H?.dispose(),V=null,H=null}async function K(){I.value=!0;try{let e={startDate:h.dateRange?.[0]??``,endDate:h.dateRange?.[1]??``,programName:h.programName??``},[t,n]=await Promise.all([v.get(`/admin/production/program/summary`,{params:e}),v.get(`/admin/production/program/list`,{params:e})]);L.value=t.data??{},R.value=n.data?.items??[],G(),await o(),U(),W()}finally{I.value=!1}}function q(){let e=new Date,t=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`;h.dateRange=[t(e),t(e)],h.programName=``,K()}function J(){let e=new Date,t=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`;h.dateRange=[t(e),t(e)],K()}return m(J),s(G),(n,a)=>{let o=f(`el-date-picker`),s=f(`el-form-item`),d=f(`el-input`),m=f(`el-button`),v=f(`el-form`),y=f(`el-tooltip`),V=f(`el-card`),H=f(`el-col`),U=f(`el-row`),W=f(`el-table-column`),G=f(`el-table`),J=e(`loading`);return t(),c(`div`,b,[l(v,{inline:!0,class:`filter-bar`,model:h},{default:r(()=>[l(s,{label:`日期范围`},{default:r(()=>[l(o,{modelValue:h.dateRange,"onUpdate:modelValue":a[0]||=e=>h.dateRange=e,type:`daterange`,"value-format":`YYYY-MM-DD`,"range-separator":`-`,"start-placeholder":`开始日期`,"end-placeholder":`结束日期`},null,8,[`modelValue`])]),_:1}),l(s,{label:`程序名`},{default:r(()=>[l(d,{modelValue:h.programName,"onUpdate:modelValue":a[1]||=e=>h.programName=e,placeholder:`输入程序名`,style:{width:`240px`},clearable:``},null,8,[`modelValue`])]),_:1}),l(s,null,{default:r(()=>[l(m,{type:`primary`,onClick:K},{default:r(()=>[...a[2]||=[g(`查询`,-1)]]),_:1}),l(m,{onClick:q},{default:r(()=>[...a[3]||=[g(`重置`,-1)]]),_:1})]),_:1})]),_:1},8,[`model`]),l(U,{gutter:16,class:`stat-row`},{default:r(()=>[l(H,{span:6},{default:r(()=>[l(V,{shadow:`hover`},{default:r(()=>[p(`div`,x,[p(`div`,S,[a[5]||=g(` 总产量 `,-1),l(y,{content:`选定时间范围内所有NC程序的总产量。`,placement:`top`},{default:r(()=>[...a[4]||=[p(`span`,{class:`info-icon`},`ⓘ`,-1)]]),_:1})]),p(`div`,C,_(L.value.totalQuantity?.toLocaleString()??`-`),1)])]),_:1})]),_:1}),l(H,{span:6},{default:r(()=>[l(V,{shadow:`hover`},{default:r(()=>[p(`div`,w,[p(`div`,T,[a[7]||=g(` 运行程序数 `,-1),l(y,{content:`选定时间范围内有产量记录的NC程序数量。`,placement:`top`},{default:r(()=>[...a[6]||=[p(`span`,{class:`info-icon`},`ⓘ`,-1)]]),_:1})]),p(`div`,E,_(L.value.runningProgramCount??`-`),1)])]),_:1})]),_:1}),l(H,{span:6},{default:r(()=>[l(V,{shadow:`hover`},{default:r(()=>[p(`div`,D,[p(`div`,O,[a[9]||=g(` 平均单程序产量 `,-1),l(y,{content:`平均每个NC程序的产量。`,placement:`top`},{default:r(()=>[...a[8]||=[p(`span`,{class:`info-icon`},`ⓘ`,-1)]]),_:1})]),p(`div`,k,_(L.value.avgPerProgram?.toFixed(1)??`-`),1)])]),_:1})]),_:1}),l(H,{span:6},{default:r(()=>[l(V,{shadow:`hover`},{default:r(()=>[p(`div`,A,[p(`div`,j,[a[11]||=g(` 最高产量程序 `,-1),l(y,{content:`产量最高的NC程序名称。`,placement:`top`},{default:r(()=>[...a[10]||=[p(`span`,{class:`info-icon`},`ⓘ`,-1)]]),_:1})]),p(`div`,M,_(L.value.topProgramName??`-`),1)])]),_:1})]),_:1})]),_:1}),l(U,{gutter:16,class:`chart-row`},{default:r(()=>[l(H,{span:12},{default:r(()=>[l(V,{shadow:`hover`},{header:r(()=>[p(`span`,N,[a[13]||=g(` 程序产量柱状图 `,-1),l(y,{content:`各NC程序的产量对比。`,placement:`top`},{default:r(()=>[...a[12]||=[p(`span`,{class:`info-icon`},`ⓘ`,-1)]]),_:1})])]),default:r(()=>[p(`div`,{ref_key:`barChartRef`,ref:z,style:{height:`320px`}},null,512)]),_:1})]),_:1}),l(H,{span:12},{default:r(()=>[l(V,{shadow:`hover`},{header:r(()=>[p(`span`,P,[a[15]||=g(` 程序产量饼图 `,-1),l(y,{content:`各NC程序产量占比分布。`,placement:`top`},{default:r(()=>[...a[14]||=[p(`span`,{class:`info-icon`},`ⓘ`,-1)]]),_:1})])]),default:r(()=>[p(`div`,{ref_key:`pieChartRef`,ref:B,style:{height:`320px`}},null,512)]),_:1})]),_:1})]),_:1}),l(V,{shadow:`hover`,class:`table-card`},{header:r(()=>[p(`span`,F,[a[17]||=g(` 程序产量明细 `,-1),l(y,{content:`按产量降序排列,展示每个NC程序的详细统计数据。`,placement:`top`},{default:r(()=>[...a[16]||=[p(`span`,{class:`info-icon`},`ⓘ`,-1)]]),_:1})])]),default:r(()=>[i((t(),u(G,{data:R.value,stripe:``,size:`small`},{default:r(()=>[l(W,{prop:`rank`,label:`排名`,width:`60`,align:`center`}),l(W,{prop:`programName`,label:`程序名`,"show-overflow-tooltip":``}),l(W,{prop:`machineCount`,label:`涉及机床数`,width:`100`,align:`center`}),l(W,{prop:`totalQuantity`,label:`总产量`,width:`100`,align:`center`}),l(W,{label:`平均单机`,width:`100`,align:`center`},{default:r(({row:e})=>[g(_(e.avgPerMachine?.toFixed(1)??`-`),1)]),_:1}),l(W,{label:`占比`,width:`100`,align:`center`},{default:r(({row:e})=>[g(_(e.percentage?.toFixed(1)??`-`)+`%`,1)]),_:1})]),_:1},8,[`data`])),[[J,I.value]])]),_:1})])}}}),[[`__scopeId`,`data-v-37993a12`]]);export{I as default}; |