8 lines
18 KiB
JavaScript
8 lines
18 KiB
JavaScript
var le=(k,u,c)=>new Promise((A,C)=>{var y=p=>{try{v(c.next(p))}catch(O){C(O)}},_=p=>{try{v(c.throw(p))}catch(O){C(O)}},v=p=>p.done?A(p.value):Promise.resolve(p.value).then(y,_);v((c=c.apply(k,u)).next())});import{aL as U,ay as S,an as h,bI as be,ak as H,a9 as L,c6 as ae,ac as me}from"./bootstrap-CzaEOGmt.js";import{g as he,a as ye}from"./index-CXvTc5Y5.js";import{u as we,_ as ke}from"./use-echarts-BW2KrvmH.js";import{m as q,ad as x,b2 as g,aR as t,u as e,cd as Ce,bc as _e,b9 as f,w as Ie,v as ie,x as re,aT as se,j as o,aa as J,ae as l,bJ as i,bp as d,ai as T,I as Q,bb as Y,ac as j,ab as Te}from"../jse/index-index-BsCxB4ql.js";const F=q({__name:"GlassCard",props:{class:{}},setup(k){const u=k;return(c,A)=>(g(),x("div",{class:t(e(Ce)("glass-card glass-border glass-shadow glass-highlight","rounded-[2rem] text-card-foreground","transition-all duration-300 ease-out","hover:glass-shadow-hover hover:-translate-y-1",u.class))},[_e(c.$slots,"default")],2))}}),oe=q({__name:"BackgroundChart",props:{options:{},opacity:{default:.6},paddingBottom:{default:"1.5rem"}},setup(k){const u=k,c=f(),{renderEcharts:A}=we(c);function C(){u.options&&A(u.options)}Ie(()=>u.options,()=>{C()},{deep:!0});const y=()=>{var _,v;c.value&&((v=(_=c.value).resize)==null||v.call(_))};return ie(()=>{C(),window.addEventListener("resize",y)}),re(()=>{window.removeEventListener("resize",y)}),(_,v)=>(g(),x("div",{class:"absolute inset-x-0 bottom-0 top-0 z-0 overflow-visible rounded-lg",style:se({paddingBottom:k.paddingBottom})},[o(e(ke),{ref_key:"chartRef",ref:c,style:se({opacity:k.opacity}),class:"h-full w-full"},null,8,["style"])],4))}});function ne(k){const{xAxisData:u,yAxisData:c,seriesName:A,lineColor:C,areaColor:y,yAxisFormatter:_}=k;return{grid:{left:"4%",right:"2%",top:"5%",bottom:"15%",containLabel:!0},xAxis:{type:"category",data:u,show:!0,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!0,color:"rgba(148, 163, 184, 0.6)",fontSize:10,fontWeight:400,margin:6,interval:0,rotate:0},splitLine:{show:!1}},yAxis:{type:"value",show:!0,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!0,color:"rgba(148, 163, 184, 0.6)",fontSize:10,fontWeight:400,margin:6,formatter:_},splitLine:{show:!0,lineStyle:{color:"rgba(148, 163, 184, 0.1)",type:"dashed",width:1}}},series:[{name:A,type:"line",data:c,smooth:!0,areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:y[0]},{offset:.5,color:y[1]},{offset:1,color:y[2]}]}},lineStyle:{color:C,width:4},symbol:"none",symbolSize:0}],tooltip:{show:!0,trigger:"axis",axisPointer:{type:"line",lineStyle:{color:"rgba(148, 163, 184, 0.3)",width:1}},backgroundColor:"rgba(255, 255, 255, 0.95)",borderColor:"rgba(148, 163, 184, 0.2)",borderWidth:1,textStyle:{color:"#475569",fontSize:12},padding:[8,12],formatter:v=>{const p=v[0];return`
|
|
<div style="margin-bottom: 4px; font-weight: 600;">${p.name}</div>
|
|
<div style="display: flex; align-items: center; gap: 8px;">
|
|
<span style="display: inline-block; width: 10px; height: 10px; background-color: ${p.color}; border-radius: 50%;"></span>
|
|
<span>${p.seriesName||"数值"}: <strong>${p.value}</strong></span>
|
|
</div>
|
|
`}}}}const E={title:"drop-shadow-[0_2px_16px_rgba(255,255,255,0.95),0_0_8px_rgba(255,255,255,0.8)]",largeNumber:"drop-shadow-[0_2px_20px_rgba(255,255,255,0.98),0_0_12px_rgba(255,255,255,0.9)]",tag:"drop-shadow-[0_1px_8px_rgba(255,255,255,0.9),0_0_4px_rgba(255,255,255,0.8)]",smallText:"drop-shadow-[0_1px_8px_rgba(255,255,255,0.85),0_0_4px_rgba(255,255,255,0.7)]"},P={container:"relative",title:`text-sm font-semibold uppercase tracking-wide text-slate-500 ${E.title}`,numberContainer:"mt-1 flex items-baseline gap-2",largeNumber:`text-4xl font-bold text-slate-800 ${E.largeNumber}`,description:`mt-1 text-xs text-slate-400 ${E.smallText}`},r={card:"flex min-h-0 flex-1 flex-col overflow-hidden p-0",header:"flex shrink-0 items-center justify-between border-b border-white/40 p-5",title:"flex items-center gap-2 font-bold text-slate-800",titleDot:"h-2 w-2 animate-pulse rounded-full bg-red-500",filterButton:"text-xs font-medium text-slate-400 hover:text-orange-600",filterMenu:"min-w-[120px] rounded-lg bg-white p-2 shadow-lg",filterMenuItem:"cursor-pointer rounded px-3 py-2 text-sm hover:bg-gray-50",filterMenuItemActive:"bg-orange-50 text-orange-600",listContainer:"flex-1 overflow-y-auto px-2",emptyState:"flex h-full items-center justify-center text-slate-400",emptyContent:"text-center",emptyIcon:"mb-2 text-4xl",taskItem:"group cursor-pointer rounded-lg border-b border-slate-50 p-3 transition-colors last:border-0 hover:bg-orange-50/40",taskContent:"flex items-center justify-between",taskLeft:"flex min-w-0 flex-1 items-center gap-3",taskIcon:"flex h-7 w-7 items-center justify-center rounded-lg shadow-sm transition-transform group-hover:scale-110",taskInfo:"min-w-0 flex-1",taskTitle:"truncate font-semibold text-slate-700",taskMeta:"mt-1 flex items-center gap-3 text-xs text-slate-500",taskActions:"ml-2 flex items-center gap-1",taskPriorityTag:"border px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wide"},z={circleIcon:"h-7 w-7 bg-slate-50 text-slate-400",complete:"hover:bg-green-500 hover:text-white",view:"hover:bg-orange-500 hover:text-white",delete:"hover:bg-red-500 hover:text-white",refresh:"text-slate-400 hover:text-orange-600",viewAll:"rounded-lg bg-white/50 px-2 py-1 text-xs font-medium hover:text-blue-600"},M={container:"grid shrink-0 grid-cols-2 gap-3",card:"glass-card glass-border glass-shadow glass-highlight flex cursor-pointer items-center gap-3 rounded-[2rem] p-3 transition-colors hover:bg-white/60",iconContainer:"flex h-9 w-9 shrink-0 items-center justify-center rounded-xl text-lg",content:"min-w-0",label:"truncate text-[10px] font-bold uppercase text-slate-400",value:"mt-0.5 text-lg font-bold leading-none text-slate-800"},$={container:"group relative flex min-h-[140px] flex-1 items-center overflow-hidden border-0 !bg-gradient-to-br from-orange-400 to-amber-300 p-0 shadow-lg",background:"pointer-events-none absolute inset-0 opacity-20",leftContent:"relative z-10 flex h-full w-[60%] flex-col justify-center py-4 pl-8 pr-2",iconContainer:"flex h-6 w-6 items-center justify-center rounded-lg bg-white/20 shadow-sm backdrop-blur-sm",label:"text-[10px] font-bold uppercase tracking-widest text-white/90",title:"mb-4 whitespace-nowrap text-lg font-bold leading-tight text-white drop-shadow-sm",button:"flex w-fit items-center gap-2 rounded-full bg-white px-6 py-2.5 text-sm font-bold text-amber-600 shadow-md shadow-orange-900/10 transition-all hover:scale-105 hover:shadow-lg",buttonIcon:"text-base text-amber-400 transition-transform group-hover:rotate-12",imageContainer:"pointer-events-none absolute bottom-0 right-[-10px] top-0 z-20 flex w-[45%] items-center justify-center",image:"h-full w-full object-contain"},w={field:"space-y-4",label:"mb-1 text-sm text-slate-400",value:"text-base text-slate-700",titleValue:"text-lg font-bold text-slate-800",actions:"flex gap-2 pt-4"},$e={class:"animate-fade-in flex h-full w-full gap-5 px-5 py-5"},Ae={class:"flex h-full w-[60%] flex-none flex-col gap-5"},Se={class:"relative z-10 flex items-start justify-between"},Pe=["onClick"],ze={key:1,class:"space-y-2"},De=["onClick"],Le={key:0},Oe={key:1},Me={class:"flex h-full w-[40%] flex-none flex-col gap-5",style:{"padding-right":"1.25rem"}},Ne={class:"relative z-10 mb-2 flex items-start justify-between"},Be={class:"flex min-h-0 flex-1 flex-col gap-4"},Re={class:"mb-2 flex items-center gap-2"},je={key:0},Fe={key:1},Ee="/images/Image_robot.png",Ve=q({__name:"index",setup(k){const u=f([]),c=f([]),A=f([]),C=f([]),y=f([]),_=f(0),v=f(0),p=f(0),O=f([{label:"在岗人员",value:"-/-",icon:"ant-design:user-outlined",color:"indigo"},{label:"待处理",value:"0",icon:"ant-design:file-text-outlined",color:"orange"},{label:"平均响应",value:"-",icon:"ant-design:thunderbolt-outlined",color:"teal"},{label:"满意度",value:"-",icon:"ant-design:bar-chart-outlined",color:"pink"}]),ce={0:"P0",1:"P1",2:"P2"};function W(){return le(this,null,function*(){var n,a,s,m;try{const[R,I]=yield Promise.all([he(),ye()]);_.value=R.totalIn||0,c.value=((n=R.hourlyTrend)==null?void 0:n.hours)||[],A.value=((a=R.hourlyTrend)==null?void 0:a.inData)||[],v.value=I.todayOrderCount||0,p.value=I.newOrderCount||0,C.value=((s=I.workOrderTrend)==null?void 0:s.hours)||[],y.value=((m=I.workOrderTrend)==null?void 0:m.data)||[],u.value=(I.urgentTasks||[]).map(D=>({id:D.id,title:D.title,location:D.location,priority:ce[D.priority]||"P2",status:D.status==="COMPLETED"?"completed":"pending",createTime:D.createTime,assignee:D.assigneeName})),O.value=[{label:"在岗人员",value:`${I.onlineStaffCount||0}/${I.totalStaffCount||0}`,icon:"ant-design:user-outlined",color:"indigo"},{label:"待处理",value:`${I.pendingCount||0}`,icon:"ant-design:file-text-outlined",color:"orange"},{label:"平均响应",value:`${I.avgResponseMinutes||0}m`,icon:"ant-design:thunderbolt-outlined",color:"teal"},{label:"满意度",value:`${I.satisfactionRate||0}%`,icon:"ant-design:bar-chart-outlined",color:"pink"}]}catch(R){}})}const V=f("all"),de=f(!1),b=f(null),N=f(!1),K=J(()=>{let n=u.value;return V.value!=="all"&&(n=n.filter(a=>a.priority===V.value)),de.value||(n=n.filter(a=>a.status!=="completed")),n}),ue=J(()=>ne({xAxisData:c.value,yAxisData:A.value,seriesName:"客流",lineColor:"#FFA00A",areaColor:["rgba(255, 160, 10, 0.25)","rgba(255, 160, 10, 0.15)","rgba(255, 160, 10, 0)"],yAxisFormatter:n=>n>=1e3?`${(n/1e3).toFixed(1)}k`:n.toString()})),pe=J(()=>ne({xAxisData:C.value,yAxisData:y.value,seriesName:"工单",lineColor:"#3B82F6",areaColor:["rgba(59, 130, 246, 0.25)","rgba(59, 130, 246, 0.15)","rgba(59, 130, 246, 0)"]}));function ge(n){return n.toLocaleString()}function X(n){const a=u.value.find(s=>s.id===n);a&&(a.status="completed",L.success(`任务"${a.title}"已完成`))}function Z(n){b.value=n,N.value=!0}function ee(n){ae.confirm({title:"确认删除",content:"确定要删除这个任务吗?",onOk(){const a=u.value.findIndex(s=>s.id===n);a!==-1&&(u.value.splice(a,1),L.success("任务已删除"))}})}function fe(){L.loading("刷新中...",.5),W().then(()=>{L.success("刷新成功")})}function xe(n){L.info(`查看${n.label}详情`)}function ve(n){V.value=n}function B(n){const a={P0:{color:"red",bg:"bg-red-50",border:"border-red-100",text:"text-red-600"},P1:{color:"orange",bg:"bg-orange-50",border:"border-orange-100",text:"text-orange-600"},P2:{color:"slate",bg:"bg-slate-50",border:"border-slate-100",text:"text-slate-600"}};return a[n]||a.P2}function te(n,a){var m;return((m={indigo:{bg:"bg-indigo-50",text:"text-indigo-500"},orange:{bg:"bg-orange-50",text:"text-orange-500"},teal:{bg:"bg-teal-50",text:"text-teal-500"},pink:{bg:"bg-pink-50",text:"text-pink-500"}}[n])==null?void 0:m[a])||""}let G=null;return ie(()=>{W(),G=setInterval(W,3e4)}),re(()=>{G&&clearInterval(G)}),(n,a)=>(g(),x("div",$e,[l("div",Ae,[o(e(F),{class:"relative flex h-[35%] flex-col overflow-hidden p-6"},{default:i(()=>[l("div",Se,[l("div",{class:t(e(P).container)},[l("h3",{class:t(e(P).title)},"实时客流监测",2),l("div",{class:t(e(P).numberContainer)},[l("span",{class:t(e(P).largeNumber)},d(ge(_.value)),3),o(e(U),{color:"success",class:t(`text-xs font-bold ${e(E).tag}`)},{default:i(()=>[...a[5]||(a[5]=[T("+12%",-1)])]),_:1},8,["class"])],2),l("p",{class:t(e(P).description)},"预计高峰时间: 14:00",2)],2),o(e(S),{type:"text",shape:"circle",class:t(e(z).refresh),onClick:fe},{icon:i(()=>[o(e(h),{icon:"ant-design:more-outlined",class:"text-base"})]),_:1},8,["class"])]),o(e(oe),{options:ue.value,opacity:.6},null,8,["options"])]),_:1}),o(e(F),{class:t(e(r).card)},{default:i(()=>[l("div",{class:t(e(r).header)},[l("h3",{class:t(e(r).title)},[l("span",{class:t(e(r).titleDot)},null,2),a[6]||(a[6]=T(" 紧急待办事项 ",-1))],2),o(e(be),null,{overlay:i(()=>[l("div",{class:t(e(r).filterMenu)},[(g(),x(Q,null,Y([{label:"全部",value:"all"},{label:"P0 紧急",value:"P0"},{label:"P1 重要",value:"P1"},{label:"P2 普通",value:"P2"}],s=>l("div",{key:s.value,class:t([e(r).filterMenuItem,V.value===s.value&&e(r).filterMenuItemActive]),onClick:m=>ve(s.value)},d(s.label),11,Pe)),64))],2)]),default:i(()=>[o(e(S),{type:"text",size:"small",class:t(e(r).filterButton)},{default:i(()=>[a[7]||(a[7]=T(" 筛选 ",-1)),o(e(h),{icon:"ant-design:filter-outlined",class:"ml-1 text-xs"})]),_:1},8,["class"])]),_:1})],2),l("div",{class:t(e(r).listContainer)},[K.value.length===0?(g(),x("div",{key:0,class:t(e(r).emptyState)},[l("div",{class:t(e(r).emptyContent)},[o(e(h),{icon:"ant-design:check-circle-outlined",class:t(e(r).emptyIcon)},null,8,["class"]),a[8]||(a[8]=l("p",null,"暂无待办任务",-1))],2)],2)):(g(),x("div",ze,[(g(!0),x(Q,null,Y(K.value,s=>(g(),x("div",{key:s.id,class:t(e(r).taskItem),onClick:m=>Z(s)},[l("div",{class:t(e(r).taskContent)},[l("div",{class:t(e(r).taskLeft)},[l("div",{class:t([e(r).taskIcon,B(s.priority).bg])},[o(e(h),{icon:"ant-design:clock-circle-outlined",class:t(["text-xs",[B(s.priority).text]])},null,8,["class"])],2),l("div",{class:t(e(r).taskInfo)},[l("div",{class:t(e(r).taskTitle)},d(s.title),3),l("div",{class:t(e(r).taskMeta)},[l("span",null,d(s.location),1),s.createTime?(g(),x("span",Le,"• "+d(s.createTime),1)):j("",!0),s.assignee?(g(),x("span",Oe,"• "+d(s.assignee),1)):j("",!0)],2)],2),o(e(U),{color:B(s.priority).color,class:t([e(r).taskPriorityTag,B(s.priority).border])},{default:i(()=>[T(d(s.priority),1)]),_:2},1032,["color","class"])],2),l("div",{class:t(e(r).taskActions)},[o(e(S),{type:"text",size:"small",shape:"circle",class:t([e(z).circleIcon,e(z).complete]),onClick:H(m=>X(s.id),["stop"])},{icon:i(()=>[o(e(h),{icon:"ant-design:check-circle-outlined",class:"text-xs"})]),_:1},8,["class","onClick"]),o(e(S),{type:"text",size:"small",shape:"circle",class:t([e(z).circleIcon,e(z).view]),onClick:H(m=>Z(s),["stop"])},{icon:i(()=>[o(e(h),{icon:"ant-design:eye-outlined",class:"text-xs"})]),_:1},8,["class","onClick"]),o(e(S),{type:"text",size:"small",shape:"circle",class:t([e(z).circleIcon,e(z).delete]),onClick:H(m=>ee(s.id),["stop"])},{icon:i(()=>[o(e(h),{icon:"ant-design:delete-outlined",class:"text-xs"})]),_:1},8,["class","onClick"])],2)],2)],10,De))),128))]))],2)]),_:1},8,["class"])]),l("div",Me,[o(e(F),{class:"relative flex h-[35%] flex-col overflow-hidden p-6"},{default:i(()=>[l("div",Ne,[l("div",{class:t(e(P).container)},[l("h3",{class:t(e(P).title)},"工单趋势分析",2),l("div",{class:t(e(P).numberContainer)},[l("span",{class:t(e(P).largeNumber)},d(v.value),3),o(e(U),{color:"processing",class:t(`text-xs font-bold ${e(E).tag}`)},{default:i(()=>[T("+"+d(p.value)+" 新增",1)]),_:1},8,["class"])],2)],2),o(e(S),{type:"text",size:"small",class:t(e(z).viewAll),onClick:a[0]||(a[0]=s=>e(L).info("查看全部工单"))},{default:i(()=>[...a[9]||(a[9]=[T(" 查看全部 ",-1)])]),_:1},8,["class"])]),o(e(oe),{options:pe.value,opacity:.6},null,8,["options"])]),_:1}),l("div",Be,[l("div",{class:t(e(M).container)},[(g(!0),x(Q,null,Y(O.value,(s,m)=>(g(),Te(e(F),{key:m,class:t(e(M).card),onClick:R=>xe(s)},{default:i(()=>[l("div",{class:t([e(M).iconContainer,te(s.color,"bg"),te(s.color,"text")])},[o(e(h),{icon:s.icon,class:"text-lg"},null,8,["icon"])],2),l("div",{class:t(e(M).content)},[l("p",{class:t(e(M).label)},d(s.label),3),l("p",{class:t(e(M).value)},d(s.value),3)],2)]),_:2},1032,["class","onClick"]))),128))],2),o(e(F),{class:t(e($).container)},{default:i(()=>[l("div",{class:t(e($).background)},[...a[10]||(a[10]=[l("svg",{width:"100%",height:"100%"},[l("pattern",{id:"grid",x:"0",y:"0",width:"20",height:"20",patternUnits:"userSpaceOnUse"},[l("circle",{cx:"1",cy:"1",r:"1",fill:"white"})]),l("rect",{width:"100%",height:"100%",fill:"url(#grid)"}),l("path",{d:"M0,50 Q100,20 200,80 T400,50",fill:"none",stroke:"white","stroke-width":"1","stroke-opacity":"0.3"})],-1)])],2),l("div",{class:t(e($).leftContent)},[l("div",Re,[l("span",{class:t(e($).iconContainer)},[o(e(h),{icon:"ant-design:robot-outlined",class:"text-xs text-white"})],2),l("span",{class:t(e($).label)},"AI Agent",2)]),l("h3",{class:t(e($).title)},"需要我帮你做什么吗?",2),o(e(S),{type:"primary",class:t(e($).button),onClick:a[1]||(a[1]=s=>e(L).info("打开AI助手"))},{default:i(()=>[a[11]||(a[11]=T(" 使用AI助手 ",-1)),o(e(h),{icon:"ant-design:robot-outlined",class:t(e($).buttonIcon)},null,8,["class"])]),_:1},8,["class"])],2),l("div",{class:t(e($).imageContainer)},[l("img",{src:Ee,alt:"AI Robot",class:t(e($).image)},null,2)],2)]),_:1},8,["class"])])]),o(e(ae),{open:N.value,"onUpdate:open":a[4]||(a[4]=s=>N.value=s),title:"任务详情",footer:null,width:"600px"},{default:i(()=>[b.value?(g(),x("div",{key:0,class:t(e(w).field)},[l("div",null,[l("div",{class:t(e(w).label)},"任务标题",2),l("div",{class:t(e(w).titleValue)},d(b.value.title),3)]),l("div",null,[l("div",{class:t(e(w).label)},"位置",2),l("div",{class:t(e(w).value)},d(b.value.location),3)]),l("div",null,[l("div",{class:t(e(w).label)},"优先级",2),o(e(U),{color:B(b.value.priority).color,class:"px-2 py-1 text-xs font-bold uppercase"},{default:i(()=>[T(d(b.value.priority),1)]),_:1},8,["color"])]),b.value.assignee?(g(),x("div",je,[l("div",{class:t(e(w).label)},"负责人",2),l("div",{class:t(e(w).value)},d(b.value.assignee),3)])):j("",!0),b.value.createTime?(g(),x("div",Fe,[l("div",{class:t(e(w).label)},"创建时间",2),l("div",{class:t(e(w).value)},d(b.value.createTime),3)])):j("",!0),l("div",{class:t(e(w).actions)},[o(e(S),{type:"primary",onClick:a[2]||(a[2]=s=>{X(b.value.id),N.value=!1})},{icon:i(()=>[o(e(h),{icon:"ant-design:check-circle-outlined"})]),default:i(()=>[a[12]||(a[12]=T(" 标记完成 ",-1))]),_:1}),o(e(S),{danger:"",onClick:a[3]||(a[3]=s=>{ee(b.value.id),N.value=!1})},{icon:i(()=>[o(e(h),{icon:"ant-design:delete-outlined"})]),default:i(()=>[a[13]||(a[13]=T(" 删除任务 ",-1))]),_:1})],2)],2)):j("",!0)]),_:1},8,["open"])]))}}),Qe=me(Ve,[["__scopeId","data-v-f91981ca"]]);export{Qe as default};
|