Files
aiot-platform-ui/apps/web-antd/dist/js/index-BPFZqOkw.js
lzh 004897414a
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 9s
chore: build and deploy web-antd
2026-03-01 13:54:19 +08:00

3 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var te=Object.defineProperty,ae=Object.defineProperties;var oe=Object.getOwnPropertyDescriptors;var Q=Object.getOwnPropertySymbols;var ne=Object.prototype.hasOwnProperty,re=Object.prototype.propertyIsEnumerable;var B=(m,d,l)=>d in m?te(m,d,{enumerable:!0,configurable:!0,writable:!0,value:l}):m[d]=l,O=(m,d)=>{for(var l in d||(d={}))ne.call(d,l)&&B(m,l,d[l]);if(Q)for(var l of Q(d))re.call(d,l)&&B(m,l,d[l]);return m},I=(m,d)=>ae(m,oe(d));var F=(m,d,l)=>new Promise((k,T)=>{var w=p=>{try{S(l.next(p))}catch(D){T(D)}},R=p=>{try{S(l.throw(p))}catch(D){T(D)}},S=p=>p.done?k(p.value):Promise.resolve(p.value).then(w,R);S((l=l.apply(m,d)).next())});import{c0 as z,c1 as y,au as g,an as x,S as v,ax as A,ac as le}from"./bootstrap-DO1fwVR8.js";import{b as se}from"./index-75rCKGPj.js";import{S as $}from"./index-BUxvBvuf.js";import{u as _,_ as C}from"./use-echarts-DnBePcuY.js";import{m as ie,b9 as b,v as ce,aU as de,aX as ue,x as fe,ad as me,b2 as pe,j as e,bJ as o,u as t,ae as s,n as he}from"../jse/index-index-WYMMa-75.js";const ye={class:"work-order-dashboard"},ge={class:"metric-content"},be={class:"metric-icon"},xe={class:"metric-info"},ve={class:"metric-content"},Se={class:"metric-icon"},_e={class:"metric-info"},Ce={class:"metric-content"},Te={class:"metric-icon"},De={class:"metric-info"},Le={class:"metric-content"},ke={class:"metric-icon"},we={class:"metric-info"},Re=ie({name:"CleaningWorkOrderDashboard",__name:"index",setup(m){const d=b(!0),l=b(!0),k=b(),T=b(),w=b(),R=b(),S=b(),p=b(),{renderEcharts:D}=_(k),{renderEcharts:G}=_(T),{renderEcharts:H}=_(w),{renderEcharts:N}=_(R),{renderEcharts:U}=_(S),{renderEcharts:q}=_(p),f=b({pendingCount:0,inProgressCount:0,completedTodayCount:0,completedTotalCount:0,trendData:{dates:[],createdData:[],completedData:[]},hourlyDistribution:{hours:[],data:[]},timeTrendData:{dates:[],responseTimeData:[],completionTimeData:[]},funnelData:[],heatmapData:{days:[],hours:[],data:[]},functionTypeRanking:[],monthlyTrendData:void 0,badgeQueueStats:void 0}),V={pendingCount:0,inProgressCount:0,completedTodayCount:0,completedTotalCount:0,trendData:{dates:[],createdData:[],completedData:[]},hourlyDistribution:{hours:[],data:[]},timeTrendData:{dates:[],responseTimeData:[],completionTimeData:[]},funnelData:[],heatmapData:{days:[],hours:[],data:[]},functionTypeRanking:[]};function j(){const a=f.value.monthlyTrendData;if(!a){const{trendData:u}=f.value;return{tooltip:{trigger:"axis"},legend:{data:["新增工单"],top:"5%",textStyle:{color:"#595959"}},grid:{left:"3%",right:"4%",bottom:"3%",top:"15%",containLabel:!0},xAxis:[{type:"category",boundaryGap:!1,data:u.dates,axisLine:{lineStyle:{color:"#d9d9d9"}},axisLabel:{color:"#8c8c8c"}}],yAxis:[{type:"value",name:"工单数量",nameTextStyle:{color:"#8c8c8c"},axisLine:{show:!1},axisLabel:{color:"#8c8c8c"},splitLine:{lineStyle:{color:"#f0f0f0",type:"dashed"}}}],series:[{name:"新增工单",type:"line",smooth:!0,symbol:"circle",symbolSize:6,data:u.createdData,itemStyle:{color:"#1677ff"},areaStyle:{opacity:.15,color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(22, 119, 255, 0.4)"},{offset:1,color:"rgba(22, 119, 255, 0.05)"}]}}}]}}const n=a.currentMonth.dates.map(u=>u.split("-")[2]||u),r=a.lastMonth.dates.map(u=>u.split("-")[2]||u),i=n.length>=r.length?n:r;return{tooltip:{trigger:"axis",axisPointer:{type:"cross",label:{backgroundColor:"#6a7985"}}},legend:{data:["当月新增","上月新增"],top:"5%",textStyle:{color:"#595959"}},grid:{left:"3%",right:"4%",bottom:"3%",top:"15%",containLabel:!0},xAxis:[{type:"category",boundaryGap:!1,data:i,axisLine:{lineStyle:{color:"#d9d9d9"}},axisLabel:{color:"#8c8c8c",formatter:u=>`${u}`}}],yAxis:[{type:"value",name:"工单数量",nameTextStyle:{color:"#8c8c8c"},axisLine:{show:!1},axisLabel:{color:"#8c8c8c"},splitLine:{lineStyle:{color:"#f0f0f0",type:"dashed"}}}],series:[{name:"当月新增",type:"line",smooth:!0,symbol:"circle",symbolSize:6,areaStyle:{opacity:.15,color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(22, 119, 255, 0.4)"},{offset:1,color:"rgba(22, 119, 255, 0.05)"}]}},emphasis:{focus:"series"},data:a.currentMonth.createdData,itemStyle:{color:"#1677ff"}},{name:"上月新增",type:"line",smooth:!0,symbol:"circle",symbolSize:6,lineStyle:{type:"dashed"},areaStyle:{opacity:.1,color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(82, 196, 26, 0.3)"},{offset:1,color:"rgba(82, 196, 26, 0.05)"}]}},emphasis:{focus:"series"},data:a.lastMonth.createdData,itemStyle:{color:"#52c41a"}}]}}function J(){const{timeTrendData:a}=f.value;return{tooltip:{trigger:"axis",axisPointer:{type:"cross",label:{backgroundColor:"#6a7985"}},formatter:n=>{let r=`${n[0].name}<br/>`;return n.forEach(i=>{r+=`${i.marker} ${i.seriesName}: ${i.value}分钟<br/>`}),r}},legend:{data:["平均响应时间","平均完成时间"],top:"5%",textStyle:{color:"#595959"}},grid:{left:"3%",right:"4%",bottom:"3%",top:"15%",containLabel:!0},xAxis:[{type:"category",boundaryGap:!1,data:a.dates,axisLine:{lineStyle:{color:"#d9d9d9"}},axisLabel:{color:"#8c8c8c"}}],yAxis:[{type:"value",name:"响应时间(分钟)",nameTextStyle:{color:"#8c8c8c",fontSize:12},position:"left",axisLine:{show:!1},axisLabel:{color:"#8c8c8c"},splitLine:{lineStyle:{color:"#f0f0f0",type:"dashed"}}},{type:"value",name:"完成时间(分钟)",nameTextStyle:{color:"#8c8c8c",fontSize:12},position:"right",axisLine:{show:!1},axisLabel:{color:"#8c8c8c"},splitLine:{show:!1}}],series:[{name:"平均响应时间",type:"line",smooth:!0,symbol:"circle",symbolSize:6,yAxisIndex:0,data:a.responseTimeData,itemStyle:{color:"#1677ff"},lineStyle:{width:2}},{name:"平均完成时间",type:"line",smooth:!0,symbol:"circle",symbolSize:6,yAxisIndex:1,data:a.completionTimeData,itemStyle:{color:"#52c41a"},lineStyle:{width:2}}]}}function X(){const{funnelData:a}=f.value,n={待处理:"#f5a623",排队中:"#8b5cf6",已派单:"#3b82f6",已到岗:"#06b6d4",已完成:"#10b981",已取消:"#f43f5e",已暂停:"#94a3b8"},r=a.reduce((i,u)=>i+u.value,0);return{tooltip:{trigger:"item",backgroundColor:"rgba(255, 255, 255, 0.96)",borderColor:"#e5e7eb",borderWidth:1,textStyle:{color:"#374151",fontSize:13},formatter:i=>`${`<span style="display:inline-block;width:8px;height:8px;border-radius:50%;background:${i.color};margin-right:6px;"></span>`}${i.name}<br/><span style="font-weight:600">${i.value}</span>个 · ${i.percent}%`},legend:{orient:"vertical",right:"2%",top:"center",itemWidth:8,itemHeight:8,itemGap:12,icon:"circle",textStyle:{fontSize:12,color:"#6b7280"}},graphic:[{type:"text",left:"28%",top:"40%",style:{text:`${r}`,fontSize:22,fontWeight:"600",fill:"#1f2937",textAlign:"center"}},{type:"text",left:"28%",top:"54%",style:{text:"近7天工单",fontSize:11,fill:"#9ca3af",textAlign:"center"}}],series:[{name:"工单状态分布",type:"pie",radius:["50%","72%"],center:["30%","50%"],avoidLabelOverlap:!1,label:{show:!1},emphasis:{scale:!0,scaleSize:6,label:{show:!0,fontSize:13,fontWeight:"600",color:"#374151",formatter:`{b}
{c}个`}},itemStyle:{borderColor:"#fff",borderWidth:2,borderRadius:4},data:a.map(i=>I(O({},i),{itemStyle:{color:n[i.name]||"#d1d5db"}}))}]}}function Y(){var u;const{heatmapData:a}=f.value,n=a.hours.map((c,h)=>h),r=a.days.map((c,h)=>h),i=[];for(let c=0;c<a.days.length;c++)for(let h=0;h<24;h++){const E=((u=a.data[c])==null?void 0:u[h])||0;i.push([h,c,E])}return{tooltip:{position:"top",formatter:c=>{const h=a.days[c.value[1]]||"",E=a.hours[c.value[0]]||"",ee=c.value[2]||0;return`${h} ${E}<br/>工单数: ${ee}`}},grid:{height:"75%",top:"5%",left:"8%",right:"3%",bottom:"15%"},xAxis:{type:"category",data:n,splitArea:{show:!0},axisLabel:{fontSize:9,color:"#8c8c8c",formatter:c=>c%3===0?`${c}:00`:""},axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"category",data:r,splitArea:{show:!0},axisLabel:{fontSize:11,color:"#595959",formatter:c=>a.days[c]||""},axisLine:{show:!1},axisTick:{show:!1}},visualMap:{min:0,max:Math.max(10,...i.map(c=>c[2]||0)),calculable:!1,orient:"horizontal",left:"center",bottom:"2%",textStyle:{fontSize:10,color:"#8c8c8c"},itemWidth:8,itemHeight:50,inRange:{color:["#e6f7ff","#bae7ff","#91d5ff","#69c0ff","#40a9ff","#1677ff"]},splitNumber:5,show:!1},series:[{name:"工单数量",type:"heatmap",data:i,label:{show:!1},emphasis:{itemStyle:{shadowBlur:10,shadowColor:"rgba(0, 0, 0, 0.3)"}}}]}}function K(){const{functionTypeRanking:a}=f.value;return{grid:{left:"3%",right:"15%",top:"5%",bottom:"3%",containLabel:!0},xAxis:{type:"value",max:"dataMax",axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:a.map(r=>r.functionType),axisLabel:{fontSize:13,color:"#595959"},axisLine:{show:!1},axisTick:{show:!1}},series:[{type:"bar",data:a.map(r=>({value:r.count,itemStyle:{color:n(r.rate),borderRadius:[0,6,6,0]}})),barWidth:18,label:{show:!0,position:"right",fontSize:13,color:"#262626",fontWeight:500,formatter:r=>`${r.value}`}}]};function n(r){return r>=95?"#52c41a":r>=90?"#1677ff":r>=85?"#faad14":r>=80?"#ff7a45":"#ff4d4f"}}function Z(){const a=f.value.badgeQueueStats;return!a||a.dates.length===0?{}:{tooltip:{trigger:"axis",formatter:n=>{const r=n[0];return`${r.name}<br/>队列数量: ${r.value}`}},grid:{left:"3%",right:"4%",bottom:"3%",top:"10%",containLabel:!0},xAxis:[{type:"category",data:a.dates,axisLine:{lineStyle:{color:"#d9d9d9"}},axisLabel:{color:"#8c8c8c",fontSize:11}}],yAxis:[{type:"value",name:"队列数",nameTextStyle:{color:"#8c8c8c",fontSize:12},axisLine:{show:!1},axisLabel:{color:"#8c8c8c"},splitLine:{lineStyle:{color:"#f0f0f0",type:"dashed"}}}],series:[{name:"队列数量",type:"bar",barWidth:"50%",data:a.queueCounts,itemStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"#722ed1"},{offset:1,color:"#b37feb"}]},borderRadius:[4,4,0,0]}}]}}function P(){return F(this,null,function*(){d.value=!0;try{const a=yield se();f.value={pendingCount:a.pendingCount,inProgressCount:a.inProgressCount,completedTodayCount:a.completedTodayCount,completedTotalCount:a.completedTotalCount,trendData:a.trendData,hourlyDistribution:a.hourlyDistribution,timeTrendData:a.timeTrendData,funnelData:a.funnelData,heatmapData:a.heatmapData,functionTypeRanking:a.functionTypeRanking,monthlyTrendData:a.monthlyTrendData,badgeQueueStats:a.badgeQueueStats},l.value=!1,yield he(),D(j()),G(Y()),H(J()),N(X()),U(K()),q(Z())}catch(a){f.value=O({},V)}finally{d.value=!1}})}let L=null;function M(){W(),P(),L=setInterval(P,3e4)}function W(){L&&(clearInterval(L),L=null)}return ce(M),de(()=>{L||M()}),ue(W),fe(W),(a,n)=>(pe(),me("div",ye,[e(t(v),{spinning:d.value},{default:o(()=>[e(t(z),{gutter:[12,12],class:"mb-3"},{default:o(()=>[e(t(y),{xs:24,sm:12,lg:6},{default:o(()=>[e(t(g),{class:"metric-card metric-card--pending"},{default:o(()=>[s("div",ge,[s("div",be,[e(t(x),{icon:"solar:clock-circle-bold-duotone"})]),s("div",xe,[n[0]||(n[0]=s("div",{class:"metric-label"},"待处理工单",-1)),e(t($),{value:f.value.pendingCount,"value-style":{fontSize:"24px",fontWeight:600,color:"#ff4d4f"}},null,8,["value"])])])]),_:1})]),_:1}),e(t(y),{xs:24,sm:12,lg:6},{default:o(()=>[e(t(g),{class:"metric-card metric-card--progress"},{default:o(()=>[s("div",ve,[s("div",Se,[e(t(x),{icon:"solar:play-circle-bold-duotone"})]),s("div",_e,[n[1]||(n[1]=s("div",{class:"metric-label"},"进行中工单",-1)),e(t($),{value:f.value.inProgressCount,"value-style":{fontSize:"24px",fontWeight:600,color:"#1677ff"}},null,8,["value"])])])]),_:1})]),_:1}),e(t(y),{xs:24,sm:12,lg:6},{default:o(()=>[e(t(g),{class:"metric-card metric-card--completed"},{default:o(()=>[s("div",Ce,[s("div",Te,[e(t(x),{icon:"solar:check-circle-bold-duotone"})]),s("div",De,[n[2]||(n[2]=s("div",{class:"metric-label"},"今日完成",-1)),e(t($),{value:f.value.completedTodayCount,"value-style":{fontSize:"24px",fontWeight:600,color:"#52c41a"}},null,8,["value"])])])]),_:1})]),_:1}),e(t(y),{xs:24,sm:12,lg:6},{default:o(()=>[e(t(g),{class:"metric-card metric-card--total"},{default:o(()=>[s("div",Le,[s("div",ke,[e(t(x),{icon:"solar:document-text-bold-duotone"})]),s("div",we,[n[3]||(n[3]=s("div",{class:"metric-label"},"累计完成",-1)),e(t($),{value:f.value.completedTotalCount,"value-style":{fontSize:"24px",fontWeight:600,color:"#722ed1"}},null,8,["value"])])])]),_:1})]),_:1})]),_:1}),e(t(z),{gutter:[12,12],class:"mb-3"},{default:o(()=>[e(t(y),{xs:24,lg:16},{default:o(()=>[e(t(g),{class:"chart-card",title:"工单趋势(当月 vs 上月)"},{extra:o(()=>[e(t(A),{title:"展示当月与上月的新增工单对比"},{default:o(()=>[e(t(x),{icon:"solar:info-circle-bold-duotone",class:"info-icon"})]),_:1})]),default:o(()=>[e(t(v),{spinning:l.value},{default:o(()=>[e(t(C),{ref_key:"trendChartRef",ref:k,class:"chart-container"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1}),e(t(y),{xs:24,lg:8},{default:o(()=>[e(t(g),{class:"chart-card",title:"时段热力图近7天"},{extra:o(()=>[e(t(A),{title:"展示近7天各时段的工单数量热力分布"},{default:o(()=>[e(t(x),{icon:"solar:info-circle-bold-duotone",class:"info-icon"})]),_:1})]),default:o(()=>[e(t(v),{spinning:l.value},{default:o(()=>[e(t(C),{ref_key:"hourlyChartRef",ref:T,class:"chart-container"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1})]),_:1}),e(t(z),{gutter:[12,12],class:"mb-3"},{default:o(()=>[e(t(y),{xs:24,lg:16},{default:o(()=>[e(t(g),{class:"chart-card",title:"平均耗时趋势近7天"},{extra:o(()=>[e(t(A),{title:"展示平均响应时间和平均完成时间的变化趋势"},{default:o(()=>[e(t(x),{icon:"solar:info-circle-bold-duotone",class:"info-icon"})]),_:1})]),default:o(()=>[e(t(v),{spinning:l.value},{default:o(()=>[e(t(C),{ref_key:"timeTrendChartRef",ref:w,class:"chart-container chart-container--medium"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1}),e(t(y),{xs:24,lg:8},{default:o(()=>[e(t(g),{class:"chart-card",title:"工单状态分布近7天"},{extra:o(()=>[e(t(A),{title:"展示近7天工单的状态占比分布"},{default:o(()=>[e(t(x),{icon:"solar:info-circle-bold-duotone",class:"info-icon"})]),_:1})]),default:o(()=>[e(t(v),{spinning:l.value},{default:o(()=>[e(t(C),{ref_key:"funnelChartRef",ref:R,class:"chart-container chart-container--medium"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1})]),_:1}),e(t(z),{gutter:[12,12]},{default:o(()=>[e(t(y),{xs:24,md:12,lg:12},{default:o(()=>[e(t(g),{class:"modern-card modern-card--heatmap"},{default:o(()=>[n[4]||(n[4]=s("div",{class:"modern-header"},[s("span",{class:"modern-title"},"工牌队列统计近7天")],-1)),e(t(v),{spinning:l.value},{default:o(()=>[e(t(C),{ref_key:"badgeQueueChartRef",ref:p,class:"modern-chart"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1}),e(t(y),{xs:24,md:12,lg:12},{default:o(()=>[e(t(g),{class:"modern-card modern-card--ranking"},{default:o(()=>[n[5]||(n[5]=s("div",{class:"modern-header"},[s("span",{class:"modern-title"},"功能类型排行")],-1)),e(t(v),{spinning:l.value},{default:o(()=>[e(t(C),{ref_key:"functionTypeRankingChartRef",ref:S,class:"modern-chart"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"])]))}}),Pe=le(Re,[["__scopeId","data-v-9032297a"]]);export{Pe as default};