3 lines
13 KiB
JavaScript
3 lines
13 KiB
JavaScript
var te=Object.defineProperty,ae=Object.defineProperties;var oe=Object.getOwnPropertyDescriptors;var H=Object.getOwnPropertySymbols;var ne=Object.prototype.hasOwnProperty,le=Object.prototype.propertyIsEnumerable;var B=(d,i,n)=>i in d?te(d,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):d[i]=n,W=(d,i)=>{for(var n in i||(i={}))ne.call(i,n)&&B(d,n,i[n]);if(H)for(var n of H(i))le.call(i,n)&&B(d,n,i[n]);return d},F=(d,i)=>ae(d,oe(i));var M=(d,i,n)=>new Promise((L,C)=>{var w=u=>{try{b(n.next(u))}catch(T){C(T)}},k=u=>{try{b(n.throw(u))}catch(T){C(T)}},b=u=>u.done?L(u.value):Promise.resolve(u.value).then(w,k);b((n=n.apply(d,i)).next())});import{c0 as R,c1 as p,au as h,an as g,S as x,ax as z,ac as re}from"./bootstrap-Cih4O7h2.js";import{b as se}from"./index-DoooWFaU.js";import{S as A}from"./index-fEjxWQnM.js";import{u as _,_ as S}from"./use-echarts-CZVrlB9v.js";import{m as ie,b9 as y,v as ce,aU as de,aX as fe,x as ue,ad as me,b2 as pe,j as e,bJ as a,u as t,ae as s,n as he}from"../jse/index-index-B6W-azrl.js";const ye={class:"work-order-dashboard"},ge={class:"metric-content"},xe={class:"metric-icon"},be={class:"metric-info"},ve={class:"metric-content"},_e={class:"metric-icon"},Se={class:"metric-info"},Ce={class:"metric-content"},Te={class:"metric-icon"},De={class:"metric-info"},Le={class:"metric-content"},we={class:"metric-icon"},ke={class:"metric-info"},Re=ie({name:"CleaningWorkOrderDashboard",__name:"index",setup(d){const i=y(!0),n=y(!0),L=y(),C=y(),w=y(),k=y(),b=y(),u=y(),{renderEcharts:T}=_(L),{renderEcharts:N}=_(C),{renderEcharts:G}=_(w),{renderEcharts:U}=_(k),{renderEcharts:V}=_(b),{renderEcharts:j}=_(u),f=y({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:[]}),J={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 X(){const{trendData:o}=f.value;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:o.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,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:o.createdData,itemStyle:{color:"#1677ff"}},{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(82, 196, 26, 0.4)"},{offset:1,color:"rgba(82, 196, 26, 0.05)"}]}},emphasis:{focus:"series"},data:o.completedData,itemStyle:{color:"#52c41a"}}]}}function Y(){const{hourlyDistribution:o}=f.value;return{tooltip:{trigger:"axis",axisPointer:{type:"shadow"},formatter:l=>{const r=l[0];return`${r.name}<br/>工单数: ${r.value}单`}},grid:{left:"3%",right:"4%",bottom:"3%",top:"10%",containLabel:!0},xAxis:[{type:"category",data:o.hours,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:"60%",data:o.data,itemStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"#1677ff"},{offset:1,color:"#69b1ff"}]},borderRadius:[4,4,0,0]},emphasis:{itemStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"#1677ff"},{offset:1,color:"#40a9ff"}]}}}}]}}function q(){const{timeTrendData:o}=f.value;return{tooltip:{trigger:"axis",axisPointer:{type:"cross",label:{backgroundColor:"#6a7985"}},formatter:l=>{let r=`${l[0].name}<br/>`;return l.forEach(v=>{r+=`${v.marker} ${v.seriesName}: ${v.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:o.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:o.responseTimeData,itemStyle:{color:"#1677ff"},lineStyle:{width:2}},{name:"平均完成时间",type:"line",smooth:!0,symbol:"circle",symbolSize:6,yAxisIndex:1,data:o.completionTimeData,itemStyle:{color:"#52c41a"},lineStyle:{width:2}}]}}function K(){const{funnelData:o}=f.value;return{tooltip:{trigger:"item",formatter:"{b}: {c}个 ({d}%)"},series:[{name:"工单处理流程",type:"funnel",left:"10%",top:"5%",bottom:"5%",width:"80%",minSize:"0%",maxSize:"100%",sort:"descending",gap:4,label:{show:!0,position:"inside",formatter:`{b}
|
||
{c}个`,fontSize:13,color:"#fff"},labelLine:{show:!1},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{fontSize:15,fontWeight:"bold"}},data:o.map((l,r)=>F(W({},l),{itemStyle:{color:["#1677ff","#40a9ff","#69b1ff","#91caff","#b3d4ff"][r]}}))}]}}function Q(){var I;const{heatmapData:o}=f.value,l=o.hours.map((c,m)=>m),r=o.days.map((c,m)=>m),v=[];for(let c=0;c<o.days.length;c++)for(let m=0;m<24;m++){const P=((I=o.data[c])==null?void 0:I[m])||0;v.push([m,c,P])}return{tooltip:{position:"top",formatter:c=>{const m=o.days[c.value[1]]||"",P=o.hours[c.value[0]]||"",ee=c.value[2]||0;return`${m} ${P}<br/>工单数: ${ee}单`}},grid:{height:"75%",top:"5%",left:"8%",right:"3%",bottom:"15%"},xAxis:{type:"category",data:l,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=>o.days[c]||""},axisLine:{show:!1},axisTick:{show:!1}},visualMap:{min:0,max:10,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:v,label:{show:!1},emphasis:{itemStyle:{shadowBlur:10,shadowColor:"rgba(0, 0, 0, 0.3)"}}}]}}function Z(){const{functionTypeRanking:o}=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:o.map(r=>r.functionType),axisLabel:{fontSize:13,color:"#595959"},axisLine:{show:!1},axisTick:{show:!1}},series:[{type:"bar",data:o.map(r=>({value:r.count,itemStyle:{color:l(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 l(r){return r>=95?"#52c41a":r>=90?"#1677ff":r>=85?"#faad14":r>=80?"#ff7a45":"#ff4d4f"}}function E(){return M(this,null,function*(){i.value=!0;try{const o=yield se();f.value={pendingCount:o.pendingCount,inProgressCount:o.inProgressCount,completedTodayCount:o.completedTodayCount,completedTotalCount:o.completedTotalCount,trendData:o.trendData,hourlyDistribution:o.hourlyDistribution,timeTrendData:o.timeTrendData,funnelData:o.funnelData,heatmapData:o.heatmapData,functionTypeRanking:o.functionTypeRanking},n.value=!1,yield he(),T(X()),N(Y()),G(q()),U(K()),V(Q()),j(Z())}catch(o){f.value=W({},J)}finally{i.value=!1}})}let D=null;function O(){$(),E(),D=setInterval(E,3e4)}function $(){D&&(clearInterval(D),D=null)}return ce(O),de(()=>{D||O()}),fe($),ue($),(o,l)=>(pe(),me("div",ye,[e(t(x),{spinning:i.value},{default:a(()=>[e(t(R),{gutter:[12,12],class:"mb-3"},{default:a(()=>[e(t(p),{xs:24,sm:12,lg:6},{default:a(()=>[e(t(h),{class:"metric-card metric-card--pending"},{default:a(()=>[s("div",ge,[s("div",xe,[e(t(g),{icon:"solar:clock-circle-bold-duotone"})]),s("div",be,[l[0]||(l[0]=s("div",{class:"metric-label"},"待处理工单",-1)),e(t(A),{value:f.value.pendingCount,"value-style":{fontSize:"24px",fontWeight:600,color:"#ff4d4f"}},null,8,["value"])])])]),_:1})]),_:1}),e(t(p),{xs:24,sm:12,lg:6},{default:a(()=>[e(t(h),{class:"metric-card metric-card--progress"},{default:a(()=>[s("div",ve,[s("div",_e,[e(t(g),{icon:"solar:play-circle-bold-duotone"})]),s("div",Se,[l[1]||(l[1]=s("div",{class:"metric-label"},"进行中工单",-1)),e(t(A),{value:f.value.inProgressCount,"value-style":{fontSize:"24px",fontWeight:600,color:"#1677ff"}},null,8,["value"])])])]),_:1})]),_:1}),e(t(p),{xs:24,sm:12,lg:6},{default:a(()=>[e(t(h),{class:"metric-card metric-card--completed"},{default:a(()=>[s("div",Ce,[s("div",Te,[e(t(g),{icon:"solar:check-circle-bold-duotone"})]),s("div",De,[l[2]||(l[2]=s("div",{class:"metric-label"},"今日完成",-1)),e(t(A),{value:f.value.completedTodayCount,"value-style":{fontSize:"24px",fontWeight:600,color:"#52c41a"}},null,8,["value"])])])]),_:1})]),_:1}),e(t(p),{xs:24,sm:12,lg:6},{default:a(()=>[e(t(h),{class:"metric-card metric-card--total"},{default:a(()=>[s("div",Le,[s("div",we,[e(t(g),{icon:"solar:document-text-bold-duotone"})]),s("div",ke,[l[3]||(l[3]=s("div",{class:"metric-label"},"累计完成",-1)),e(t(A),{value:f.value.completedTotalCount,"value-style":{fontSize:"24px",fontWeight:600,color:"#722ed1"}},null,8,["value"])])])]),_:1})]),_:1})]),_:1}),e(t(R),{gutter:[12,12],class:"mb-3"},{default:a(()=>[e(t(p),{xs:24,lg:16},{default:a(()=>[e(t(h),{class:"chart-card",title:"工单趋势(近7天)"},{extra:a(()=>[e(t(z),{title:"展示最近7天的工单新增与完成情况"},{default:a(()=>[e(t(g),{icon:"solar:info-circle-bold-duotone",class:"info-icon"})]),_:1})]),default:a(()=>[e(t(x),{spinning:n.value},{default:a(()=>[e(t(S),{ref_key:"trendChartRef",ref:L,class:"chart-container"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1}),e(t(p),{xs:24,lg:8},{default:a(()=>[e(t(h),{class:"chart-card",title:"今日工单时段分布"},{extra:a(()=>[e(t(z),{title:"展示今日24小时各时段的工单数量分布"},{default:a(()=>[e(t(g),{icon:"solar:info-circle-bold-duotone",class:"info-icon"})]),_:1})]),default:a(()=>[e(t(x),{spinning:n.value},{default:a(()=>[e(t(S),{ref_key:"hourlyChartRef",ref:C,class:"chart-container"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1})]),_:1}),e(t(R),{gutter:[12,12],class:"mb-3"},{default:a(()=>[e(t(p),{xs:24,lg:12},{default:a(()=>[e(t(h),{class:"chart-card",title:"平均耗时趋势(近7天)"},{extra:a(()=>[e(t(z),{title:"展示平均响应时间和平均完成时间的变化趋势"},{default:a(()=>[e(t(g),{icon:"solar:info-circle-bold-duotone",class:"info-icon"})]),_:1})]),default:a(()=>[e(t(x),{spinning:n.value},{default:a(()=>[e(t(S),{ref_key:"timeTrendChartRef",ref:w,class:"chart-container chart-container--medium"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1}),e(t(p),{xs:24,lg:12},{default:a(()=>[e(t(h),{class:"chart-card",title:"工单处理漏斗"},{extra:a(()=>[e(t(z),{title:"展示工单从创建到完成各环节的转化情况"},{default:a(()=>[e(t(g),{icon:"solar:info-circle-bold-duotone",class:"info-icon"})]),_:1})]),default:a(()=>[e(t(x),{spinning:n.value},{default:a(()=>[e(t(S),{ref_key:"funnelChartRef",ref:k,class:"chart-container chart-container--medium"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1})]),_:1}),e(t(R),{gutter:[12,12]},{default:a(()=>[e(t(p),{xs:24,md:12,lg:12},{default:a(()=>[e(t(h),{class:"modern-card modern-card--heatmap"},{default:a(()=>[l[4]||(l[4]=s("div",{class:"modern-header"},[s("span",{class:"modern-title"},"时段热力图(近7天)")],-1)),e(t(x),{spinning:n.value},{default:a(()=>[e(t(S),{ref_key:"heatmapChartRef",ref:b,class:"modern-chart"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1}),e(t(p),{xs:24,md:12,lg:12},{default:a(()=>[e(t(h),{class:"modern-card modern-card--ranking"},{default:a(()=>[l[5]||(l[5]=s("div",{class:"modern-header"},[s("span",{class:"modern-title"},"功能类型排行")],-1)),e(t(x),{spinning:n.value},{default:a(()=>[e(t(S),{ref_key:"functionTypeRankingChartRef",ref:u,class:"modern-chart"},null,512)]),_:1},8,["spinning"])]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"])]))}}),Oe=re(Re,[["__scopeId","data-v-5427e289"]]);export{Oe as default};
|