{const _=P,b=K,i=T,f=G,g=q,F=j,I=R,S=H,A=Q,J=L,O=M;return V(),v(Z,null,[e(_,{shadow:"never",class:"!border-none flex"},{default:t(()=>[...l[3]||(l[3]=[a("div",{class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2 text-xl font-medium"},[h(" 底部导航设置 "),a("span",{class:"form-tips ml-[10px] !mt-0"}," 至少添加2个导航,最多添加5个导航 ")],-1)])]),_:1}),e(O,{"label-width":"70px"},{default:t(()=>[e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[l[4]||(l[4]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),e(i,{label:"默认颜色"},{default:t(()=>[e(b,{class:"max-w-[400px]",modelValue:m(n).style.default_color,"onUpdate:modelValue":l[0]||(l[0]=r=>m(n).style.default_color=r),"default-color":"#999999"},null,8,["modelValue"])]),_:1}),e(i,{label:"选中颜色",style:{"margin-bottom":"0"}},{default:t(()=>[e(b,{class:"max-w-[400px]",modelValue:m(n).style.selected_color,"onUpdate:modelValue":l[1]||(l[1]=r=>m(n).style.selected_color=r),"default-color":"#4173ff"},null,8,["modelValue"])]),_:1})]),_:1}),e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>{var r;return[l[7]||(l[7]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"菜单设置"),a("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),a("div",le,[e(m(W),{class:"draggable",modelValue:m(n).list,"onUpdate:modelValue":l[2]||(l[2]=o=>m(n).list=o),animation:"300",draggable:".draggable",handle:".drag-move",move:D,"item-key":"index"},{item:t(({element:o,index:u})=>[e(A,{onClose:d=>B(u),class:ee(["max-w-[400px]",{draggable:u!=0}]),"show-close":u!==0},{default:t(()=>[a("div",oe,[e(i,{label:"导航图标"},{default:t(()=>[e(g,{modelValue:o.unselected,"onUpdate:modelValue":d=>o.unselected=d,"upload-class":"bg-body","exclude-domain":"",size:"60px"},{upload:t(()=>[a("div",te,[e(f,{name:"el-icon-Plus",size:16}),l[5]||(l[5]=a("span",{class:"text-xs leading-5"}," 未选中 ",-1))])]),_:1},8,["modelValue","onUpdate:modelValue"]),e(g,{modelValue:o.selected,"onUpdate:modelValue":d=>o.selected=d,"exclude-domain":"","upload-class":"bg-body",size:"60px"},{upload:t(()=>[a("div",ae,[e(f,{name:"el-icon-Plus",size:16}),l[6]||(l[6]=a("span",{class:"text-xs leading-5"}," 选中 ",-1))])]),_:1},8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"导航名称"},{default:t(()=>[e(F,{modelValue:o.name,"onUpdate:modelValue":d=>o.name=d,placeholder:"请输入名称"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"链接地址"},{default:t(()=>[e(I,{"is-tab":!0,disabled:u===0,modelValue:o.link,"onUpdate:modelValue":d=>o.link=d},null,8,["disabled","modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"是否显示"},{default:t(()=>[a("div",se,[e(S,{disabled:u==0,modelValue:o.is_show,"onUpdate:modelValue":d=>o.is_show=d,"active-value":1,"inactive-value":0,onChange:d=>N(o)},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"]),a("div",ne,[e(f,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])]),_:2},1032,["onClose","show-close","class"])]),_:1},8,["modelValue"])]),((r=m(n).list)==null?void 0:r.length) {const _=P,b=K,i=T,f=G,g=q,F=j,I=R,S=H,A=Q,J=L,O=M;return V(),v(Z,null,[e(_,{shadow:"never",class:"!border-none flex"},{default:t(()=>[...l[3]||(l[3]=[a("div",{class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2 text-xl font-medium"},[h(" 底部导航设置 "),a("span",{class:"form-tips ml-[10px] !mt-0"}," 至少添加2个导航,最多添加5个导航 ")],-1)])]),_:1}),e(O,{"label-width":"70px"},{default:t(()=>[e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[l[4]||(l[4]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),e(i,{label:"默认颜色"},{default:t(()=>[e(b,{class:"max-w-[400px]",modelValue:m(n).style.default_color,"onUpdate:modelValue":l[0]||(l[0]=r=>m(n).style.default_color=r),"default-color":"#999999"},null,8,["modelValue"])]),_:1}),e(i,{label:"选中颜色",style:{"margin-bottom":"0"}},{default:t(()=>[e(b,{class:"max-w-[400px]",modelValue:m(n).style.selected_color,"onUpdate:modelValue":l[1]||(l[1]=r=>m(n).style.selected_color=r),"default-color":"#4173ff"},null,8,["modelValue"])]),_:1})]),_:1}),e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>{var r;return[l[7]||(l[7]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"菜单设置"),a("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),a("div",le,[e(m(W),{class:"draggable",modelValue:m(n).list,"onUpdate:modelValue":l[2]||(l[2]=o=>m(n).list=o),animation:"300",draggable:".draggable",handle:".drag-move",move:D,"item-key":"index"},{item:t(({element:o,index:u})=>[e(A,{onClose:d=>B(u),class:ee(["max-w-[400px]",{draggable:u!=0}]),"show-close":u!==0},{default:t(()=>[a("div",oe,[e(i,{label:"导航图标"},{default:t(()=>[e(g,{modelValue:o.unselected,"onUpdate:modelValue":d=>o.unselected=d,"upload-class":"bg-body","exclude-domain":"",size:"60px"},{upload:t(()=>[a("div",te,[e(f,{name:"el-icon-Plus",size:16}),l[5]||(l[5]=a("span",{class:"text-xs leading-5"}," 未选中 ",-1))])]),_:1},8,["modelValue","onUpdate:modelValue"]),e(g,{modelValue:o.selected,"onUpdate:modelValue":d=>o.selected=d,"exclude-domain":"","upload-class":"bg-body",size:"60px"},{upload:t(()=>[a("div",ae,[e(f,{name:"el-icon-Plus",size:16}),l[6]||(l[6]=a("span",{class:"text-xs leading-5"}," 选中 ",-1))])]),_:1},8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"导航名称"},{default:t(()=>[e(F,{modelValue:o.name,"onUpdate:modelValue":d=>o.name=d,placeholder:"请输入名称"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"链接地址"},{default:t(()=>[e(I,{"is-tab":!0,disabled:u===0,modelValue:o.link,"onUpdate:modelValue":d=>o.link=d},null,8,["disabled","modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"是否显示"},{default:t(()=>[a("div",se,[e(S,{disabled:u==0,modelValue:o.is_show,"onUpdate:modelValue":d=>o.is_show=d,"active-value":1,"inactive-value":0,onChange:d=>N(o)},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"]),a("div",ne,[e(f,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])]),_:2},1032,["onClose","show-close","class"])]),_:1},8,["modelValue"])]),((r=m(n).list)==null?void 0:r.length)
{c} 单 ({d}%)"},legend:{type:"scroll",bottom:0,textStyle:{fontSize:11}},series:[{name:"诊单",type:"pie",radius:["46%","72%"],center:["50%","46%"],avoidLabelOverlap:!0,itemStyle:{borderRadius:6,borderColor:"#fff",borderWidth:2},label:{formatter:`{b}
+import{i as nt,d as dt,Q as ct,P as pt,a4 as ut,a3 as bt,R as mt}from"./element-plus-FSf94q2-.js";import{H as O}from"./vue-echarts-BNtg2q_G.js";import{L as Q,ad as _t,ae as ht,a2 as yt}from"./@element-plus/icons-vue-BDOO1F0I.js";import{l as wt,O as V,Q as ft,_ as vt}from"./index-CLwyu9dm.js";import{ap as gt}from"./tcm-CZik0zOd.js";import{u as kt}from"./order-BaLEBNxW.js";import{u as U}from"./getExposeType-MUpmx9zy.js";import{f as Y,w as xt,b as St,ak as l,I as c,J as t,a,aN as r,O as C,F as A,ap as D,G as w,H as B,A as S}from"./@vue/runtime-core-C6bnekPw.js";import{r as M,y as f,n as J}from"./@vue/reactivity-DiY1c2vO.js";import{Q as n}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./resize-detector-G6vbKCU7.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const Ot={class:"workbench-page"},Ct={class:"wb-hero"},At={class:"wb-section wb-section--order"},Dt={class:"wb-section-head"},Nt={class:"wb-section-title"},$t={class:"wb-section-icon wb-section-icon--violet"},zt={class:"wb-section-sub"},Et={class:"wb-toolbar"},Lt={class:"wb-section-body"},Vt={class:"wb-kpi wb-kpi--violet"},Rt={class:"wb-kpi-value"},Pt={class:"wb-kpi wb-kpi--amber"},Ft={class:"wb-kpi-value wb-kpi-value--sm"},Wt={class:"wb-rank-strip wb-rank-strip--compact"},Bt={key:0,class:"wb-rank-chips"},Ht={key:1,class:"wb-rank-empty"},Tt={class:"wb-chart-card"},It={class:"wb-chart-card"},Qt={class:"wb-chart-card"},Ut={class:"wb-chart-card wb-ranking-card"},Mt={key:0,class:"wb-ranking-list"},jt={class:"wb-ranking-rank"},Gt={class:"wb-ranking-name"},Jt={class:"wb-ranking-meta"},Yt={class:"wb-ranking-money"},qt={key:0,class:"wb-dept-block"},Kt={class:"wb-dept-card wb-dept-card--order"},Xt={class:"wb-dept-card-head"},Zt={class:"wb-dept-total"},te={class:"wb-dept-list"},ee={class:"wb-dept-num"},se={key:0,class:"wb-dept-empty"},ae={class:"wb-section wb-section--diagnosis"},oe={class:"wb-section-head"},le={class:"wb-section-title"},re={class:"wb-section-icon wb-section-icon--blue"},ie={class:"wb-section-sub"},ne={class:"wb-toolbar"},de={class:"wb-section-body"},ce={class:"wb-kpi wb-kpi--blue"},pe={class:"wb-kpi-value"},ue={class:"wb-rank-strip"},be={key:0,class:"wb-rank-chips"},me={key:1,class:"wb-rank-empty"},_e={class:"wb-chart-card"},he={class:"wb-chart-card"},ye={key:0,class:"wb-dept-block"},we={class:"wb-dept-card"},fe={class:"wb-dept-card-head"},ve={class:"wb-dept-total"},ge={class:"wb-dept-list"},ke={class:"wb-dept-num"},xe={key:0,class:"wb-dept-empty"},Se={class:"wb-section wb-section--trend"},Oe={class:"wb-section-head"},Ce={class:"wb-section-title"},Ae={class:"wb-section-icon wb-section-icon--teal"},De={class:"wb-section-body wb-trend-body"},Ne={class:"wb-chart-card wb-trend-card"},$e={class:"wb-chart-card wb-trend-card"},ze=Y({name:"workbench"}),Ee=Y({...ze,setup(Le){const g=wt(),H=U(),T=U(),q=U(),I=["#5b7cfa","#36cfc9","#ffc53d","#ff7a45","#b37feb","#597ef7","#73d13d","#ff85c0"];function j(s){if(s==null)return 0;const e=parseFloat(String(s).replace(/,/g,""));return Number.isFinite(e)?e:0}const p=M({days:0,departments:[],today_ranking:[],ranking:[],chart:{xAxis:[],series:[]}}),K=S(()=>(p.departments||[]).some(s=>Number(s.total)>0)),X=S(()=>{const s=(p.departments||[]).filter(e=>Number(e.total)>0).map(e=>({name:e.dept_name||"—",value:Number(e.total)}));return{color:I,tooltip:{trigger:"item",formatter:"{b}
{c} 单 ({d}%)"},legend:{type:"scroll",bottom:0,textStyle:{fontSize:11}},series:[{name:"诊单",type:"pie",radius:["46%","72%"],center:["50%","46%"],avoidLabelOverlap:!0,itemStyle:{borderRadius:6,borderColor:"#fff",borderWidth:2},label:{formatter:`{b}
{c}`},data:s}]}}),Z=S(()=>{var b;const s=g.theme,e=(p.chart.series||[]).map(i=>({...i,name:i.name||"诊单数",type:"bar",barWidth:"46%",itemStyle:{borderRadius:[8,8,0,0],color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:V(s,.75)},{offset:1,color:s}]}}})),h=((b=e[0])==null?void 0:b.data)||[];return{color:[s,"#f0b429"],legend:{data:["诊单数","趋势"],top:4},xAxis:{type:"category",data:p.chart.xAxis||[],axisLabel:{rotate:28,fontSize:11},axisLine:{lineStyle:{color:"#e4e7ec"}}},yAxis:{type:"value",name:"诊单数",splitLine:{lineStyle:{type:"dashed",color:"#eef0f4"}}},tooltip:{trigger:"axis"},grid:{left:"2%",right:"2%",bottom:"12%",top:48,containLabel:!0},series:[...e,{name:"趋势",type:"line",smooth:.35,symbol:"circle",symbolSize:7,lineStyle:{width:3,color:"#f0b429"},itemStyle:{color:"#f0b429"},data:h}]}}),R=()=>{gt({days:p.days}).then(s=>{p.date_range=s.date_range,p.today_total=s.today_total??0,p.today_ranking=s.today_ranking||[],p.departments=s.departments||[],p.ranking=s.ranking||[],p.chart=s.chart||{xAxis:[],series:[]}}).catch(()=>{})},P=J(-1),F=J(0),_=M({order_type_name:"",date_range:[],today_total:0,today_amount:"0.00",today_ranking:[],departments:[],ranking:[],chart:{xAxis:[],series:[]}}),tt=S(()=>(_.departments||[]).some(s=>Number(s.total)>0)),et=S(()=>(_.departments||[]).some(s=>j(s.amount)>0)),st=S(()=>{const s=(_.departments||[]).filter(e=>Number(e.total)>0).map(e=>({name:e.dept_name||"—",value:Number(e.total)}));return{color:I,tooltip:{trigger:"item",formatter:"{b}
{c} 单 ({d}%)"},legend:{type:"scroll",bottom:0,textStyle:{fontSize:11}},series:[{name:"单数",type:"pie",radius:["44%","70%"],center:["50%","46%"],itemStyle:{borderRadius:6,borderColor:"#fff",borderWidth:2},label:{formatter:`{b}
{c}`},data:s}]}}),at=S(()=>{const s=(_.departments||[]).map(e=>({name:e.dept_name||"—",value:j(e.amount)})).filter(e=>e.value>0);return{color:I,tooltip:{trigger:"item",formatter:e=>{const h=e.value;return`${e.name}
¥${Number(h).toFixed(2)} (${e.percent}%)`}},legend:{type:"scroll",bottom:0,textStyle:{fontSize:11}},series:[{name:"金额",type:"pie",radius:["44%","70%"],center:["50%","46%"],itemStyle:{borderRadius:6,borderColor:"#fff",borderWidth:2},label:{formatter:e=>`${e.name}
¥${Number(e.value).toFixed(0)}`},data:s}]}}),ot=S(()=>{const s=_.date_range;if((s==null?void 0:s.length)>=2)return`${s[0]} 至 ${s[1]}`;const e=F.value,h=new Date,b=new Date;return e===0?(b.setHours(0,0,0,0),`${W(b)} 至 ${W(h)}`):(b.setDate(b.getDate()-(e||7)),`${W(b)} 至 ${W(h)}`)});function W(s){return s.getFullYear()+"-"+String(s.getMonth()+1).padStart(2,"0")+"-"+String(s.getDate()).padStart(2,"0")}const lt=S(()=>{var b,i,k;const s=g.theme,e=(((b=_.chart)==null?void 0:b.series)||[]).map(m=>({...m,name:m.name||"单数",type:"bar",barWidth:"46%",itemStyle:{borderRadius:[8,8,0,0],color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:V(s,.72)},{offset:1,color:s}]}}})),h=((i=e[0])==null?void 0:i.data)||[];return{color:[s,"#fa8c16"],legend:{data:["单数","趋势"],top:4},xAxis:{type:"category",data:((k=_.chart)==null?void 0:k.xAxis)||[],axisLabel:{rotate:28,fontSize:11},axisLine:{lineStyle:{color:"#e4e7ec"}}},yAxis:{type:"value",name:"单数",splitLine:{lineStyle:{type:"dashed",color:"#eef0f4"}}},tooltip:{trigger:"axis"},grid:{left:"2%",right:"2%",bottom:"12%",top:48,containLabel:!0},series:[...e,{name:"趋势",type:"line",smooth:.35,symbol:"circle",symbolSize:7,lineStyle:{width:3,color:"#fa8c16"},itemStyle:{color:"#fa8c16"},data:h}]}}),N=()=>{kt({order_type:P.value,days:F.value}).then(s=>{Object.assign(_,{order_type_name:s.order_type_name??"",date_range:s.date_range||[],today_total:s.today_total??0,today_amount:s.today_amount??"0.00",today_ranking:s.today_ranking||[],departments:s.departments||[],ranking:s.ranking||[],chart:s.chart||{xAxis:[],series:[]}})}).catch(()=>{})},rt=()=>{G(),R(),N()};xt(()=>g.theme,()=>{it()});const u=M({version:{version:"",website:"",based:"",channel:{gitee:"",website:""}},support:[],today:{},menu:[],visitor:[],article:[],visitorOption:{xAxis:{type:"category",data:[]},yAxis:{type:"value"},legend:{data:["访问量"],top:8},tooltip:{trigger:"axis"},grid:{left:"2%",right:"3%",bottom:"3%",top:40,containLabel:!0},series:[{name:"访问量",data:[],type:"line",smooth:!0,color:g.theme,lineStyle:{color:g.theme,width:2},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:g.theme},{offset:1,color:g.theme}]},opacity:.12}}]},saleOption:{xAxis:{type:"category",data:[]},yAxis:{type:"value",name:"万"},tooltip:{trigger:"axis"},grid:{left:"2%",right:"3%",bottom:"3%",top:36,containLabel:!0},series:[{name:"销售量",data:[],type:"bar",showBackground:!0,backgroundStyle:{color:"rgba(120, 130, 150, 0.08)",borderRadius:[10,10,0,0]},barWidth:"42%",itemStyle:{borderRadius:[10,10,0,0],color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:V(g.theme,.65)},{offset:1,color:g.theme}]}}}]}}),G=()=>{ft().then(s=>{var e,h,b,i,k,m,v,x,$,z,E,L;u.version=s.version,u.today=s.today,u.menu=s.menu,u.visitor=s.visitor,u.support=s.support,u.visitorOption.xAxis.data=[],u.visitorOption.series[0].data=[],u.saleOption.xAxis.data=[],u.saleOption.series[0].data=[],(h=(e=s.visitor)==null?void 0:e.date)==null||h.reverse().forEach(o=>{u.visitorOption.xAxis.data.push(o)}),(m=(k=(i=(b=s.visitor)==null?void 0:b.list)==null?void 0:i[0])==null?void 0:k.data)==null||m.forEach(o=>{u.visitorOption.series[0].data.push(o)}),(x=(v=s.sale)==null?void 0:v.date)==null||x.reverse().forEach(o=>{u.saleOption.xAxis.data.push(o)}),(L=(E=(z=($=s.sale)==null?void 0:$.list)==null?void 0:z[0])==null?void 0:E.data)==null||L.forEach(o=>{let d=o;o<=50&&(d={value:o,itemStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:V("#ff8729",.7)},{offset:1,color:"#ff8729"}]}}}),u.saleOption.series[0].data.push(d)})}).catch(s=>{console.log("err",s)})},it=()=>{var e,h,b,i;const s=g.theme;u.visitorOption.series[0].color=s,u.visitorOption.series[0].lineStyle.color=s,u.visitorOption.series[0].areaStyle.color.colorStops=[{offset:0,color:s},{offset:1,color:s}],u.saleOption.series[0].itemStyle.color.colorStops=[{offset:0,color:V(s,.65)},{offset:1,color:s}],(e=H.value)==null||e.clear(),(h=T.value)==null||h.clear(),(b=H.value)==null||b.setOption(u.saleOption),(i=T.value)==null||i.setOption(u.visitorOption)};return St(()=>{G(),R(),N()}),(s,e)=>{var $,z,E,L;const h=nt,b=dt,i=ct,k=pt,m=ut,v=bt,x=mt;return l(),c("div",Ot,[t("header",Ct,[e[4]||(e[4]=t("div",{class:"wb-hero-text"},[t("h1",{class:"wb-hero-title"},"数据工作台"),t("p",{class:"wb-hero-desc"},"医助诊单、订单营收与运营趋势一屏掌握")],-1)),a(h,{type:"primary",icon:f(Q),round:"",class:"wb-refresh-btn",onClick:rt},{default:r(()=>[...e[3]||(e[3]=[C(" 刷新全部 ",-1)])]),_:1},8,["icon"])]),t("section",At,[t("div",Dt,[t("div",Nt,[t("span",$t,[a(b,null,{default:r(()=>[a(f(_t))]),_:1})]),t("div",null,[e[5]||(e[5]=t("div",{class:"wb-section-name"},"订单统计",-1)),t("div",zt,n(ot.value)+" · "+n(_.order_type_name||"—"),1)])]),t("div",Et,[a(k,{modelValue:P.value,"onUpdate:modelValue":e[0]||(e[0]=o=>P.value=o),class:"wb-select wb-select--wide",onChange:N},{default:r(()=>[a(i,{label:"全部(已支付)",value:-1}),a(i,{label:"挂号费",value:1}),a(i,{label:"问诊费",value:2}),a(i,{label:"药品费用",value:3}),a(i,{label:"首付费用",value:4}),a(i,{label:"尾款费用",value:5}),a(i,{label:"其他费用",value:6}),a(i,{label:"全部费用",value:7}),a(i,{label:"驼奶费用",value:8}),a(i,{label:"退款统计",value:0})]),_:1},8,["modelValue"]),a(k,{modelValue:F.value,"onUpdate:modelValue":e[1]||(e[1]=o=>F.value=o),class:"wb-select",onChange:N},{default:r(()=>[a(i,{label:"今天",value:0}),a(i,{label:"最近7天",value:7}),a(i,{label:"最近30天",value:30})]),_:1},8,["modelValue"]),a(h,{icon:f(Q),circle:"",onClick:N},null,8,["icon"])])]),t("div",Lt,[a(v,{gutter:16,class:"wb-kpi-row"},{default:r(()=>[a(m,{xs:24,sm:8},{default:r(()=>[t("div",Vt,[e[6]||(e[6]=t("div",{class:"wb-kpi-label"},"今日单数",-1)),t("div",Rt,n(_.today_total??0),1)])]),_:1}),a(m,{xs:24,sm:8},{default:r(()=>[t("div",Pt,[e[7]||(e[7]=t("div",{class:"wb-kpi-label"},"今日金额",-1)),t("div",Ft,"¥"+n(_.today_amount??"0.00"),1)])]),_:1}),a(m,{xs:24,sm:8},{default:r(()=>{var o;return[t("div",Wt,[e[8]||(e[8]=t("span",{class:"wb-rank-strip-label"},"今日 TOP",-1)),(o=_.today_ranking)!=null&&o.length?(l(),c("div",Bt,[(l(!0),c(A,null,D(_.today_ranking.slice(0,4),(d,y)=>(l(),c("span",{key:d.id,class:"wb-rank-chip wb-rank-chip--dense"},[t("em",null,n(Number(y)+1),1),C(" "+n(d.name)+" ",1),t("strong",null,n(d.count),1),t("small",null,"¥"+n(d.amount),1)]))),128))])):(l(),c("span",Ht,"暂无"))])]}),_:1})]),_:1}),a(v,{gutter:20,class:"wb-chart-row"},{default:r(()=>[a(m,{xs:24,lg:10},{default:r(()=>[t("div",Tt,[e[9]||(e[9]=t("div",{class:"wb-chart-card-head"},[t("span",{class:"wb-chart-title"},"部门单数占比")],-1)),tt.value?(l(),w(f(O),{key:0,class:"wb-chart",style:{height:"300px"},option:st.value,autoresize:!0},null,8,["option"])):(l(),w(x,{key:1,class:"wb-chart-empty",description:"暂无数据"}))])]),_:1}),a(m,{xs:24,lg:14},{default:r(()=>{var o,d;return[t("div",It,[e[10]||(e[10]=t("div",{class:"wb-chart-card-head"},[t("span",{class:"wb-chart-title"},"开单人 · 单数排行"),t("span",{class:"wb-chart-hint"},"柱状 + 趋势")],-1)),(d=(o=_.chart)==null?void 0:o.xAxis)!=null&&d.length?(l(),w(f(O),{key:"order-bar-"+P.value,class:"wb-chart",style:{height:"300px"},option:lt.value,autoresize:!0},null,8,["option"])):(l(),w(x,{key:1,class:"wb-chart-empty",description:"暂无图表数据"}))])]}),_:1})]),_:1}),a(v,{gutter:20,class:"wb-chart-row"},{default:r(()=>[a(m,{xs:24,lg:10},{default:r(()=>[t("div",Qt,[e[11]||(e[11]=t("div",{class:"wb-chart-card-head"},[t("span",{class:"wb-chart-title"},"部门金额占比")],-1)),et.value?(l(),w(f(O),{key:0,class:"wb-chart",style:{height:"300px"},option:at.value,autoresize:!0},null,8,["option"])):(l(),w(x,{key:1,class:"wb-chart-empty",description:"暂无数据"}))])]),_:1}),a(m,{xs:24,lg:14},{default:r(()=>{var o;return[t("div",Ut,[e[13]||(e[13]=t("div",{class:"wb-chart-card-head"},[t("span",{class:"wb-chart-title"},"周期内排行"),t("span",{class:"wb-chart-hint"},"单数 / 金额")],-1)),(o=_.ranking)!=null&&o.length?(l(),c("div",Mt,[(l(!0),c(A,null,D(_.ranking,(d,y)=>(l(),c("div",{key:d.id,class:"wb-ranking-item"},[t("span",jt,n(Number(y)+1),1),t("span",Gt,n(d.name),1),t("span",Jt,[t("b",null,n(d.count),1),e[12]||(e[12]=C(" 单 ",-1)),t("span",Yt,"¥"+n(d.amount),1)])]))),128))])):(l(),w(x,{key:1,description:"暂无排行"}))])]}),_:1})]),_:1}),($=_.departments)!=null&&$.length?(l(),c("div",qt,[e[14]||(e[14]=t("div",{class:"wb-dept-title"},"按部门统计",-1)),a(v,{gutter:16},{default:r(()=>[(l(!0),c(A,null,D(_.departments,o=>(l(),w(m,{key:o.dept_id,xs:24,sm:12,lg:8},{default:r(()=>{var d;return[t("div",Kt,[t("div",Xt,[C(n(o.dept_name)+" ",1),t("span",Zt,n(o.total)+" 单 · ¥"+n(o.amount),1)]),t("div",te,[(l(!0),c(A,null,D(o.members,y=>(l(),c("div",{key:`${o.dept_id}-${y.id}`,class:"wb-dept-row"},[t("span",null,n(y.name),1),t("span",ee,[C(n(y.count)+" ",1),t("small",null,"¥"+n(y.amount),1)])]))),128)),(d=o.members)!=null&&d.length?B("",!0):(l(),c("div",se,"暂无"))])])]}),_:2},1024))),128))]),_:1})])):B("",!0)])]),t("section",ae,[t("div",oe,[t("div",le,[t("span",re,[a(b,null,{default:r(()=>[a(f(ht))]),_:1})]),t("div",null,[e[15]||(e[15]=t("div",{class:"wb-section-name"},"医助理诊单统计",-1)),t("div",ie,n((z=p.date_range)==null?void 0:z[0])+" 至 "+n((E=p.date_range)==null?void 0:E[1]),1)])]),t("div",ne,[a(k,{modelValue:p.days,"onUpdate:modelValue":e[2]||(e[2]=o=>p.days=o),class:"wb-select",onChange:R},{default:r(()=>[a(i,{label:"今天",value:0}),a(i,{label:"最近7天",value:7}),a(i,{label:"最近14天",value:14}),a(i,{label:"最近30天",value:30})]),_:1},8,["modelValue"]),a(h,{icon:f(Q),circle:"",onClick:R},null,8,["icon"])])]),t("div",de,[a(v,{gutter:16,class:"wb-kpi-row"},{default:r(()=>[a(m,{xs:24,sm:8,lg:6},{default:r(()=>[t("div",ce,[e[16]||(e[16]=t("div",{class:"wb-kpi-label"},"今日创建诊单",-1)),t("div",pe,n(p.today_total??0),1),e[17]||(e[17]=t("div",{class:"wb-kpi-hint"},"当日新增总量",-1))])]),_:1}),a(m,{xs:24,sm:16,lg:18},{default:r(()=>{var o;return[t("div",ue,[e[18]||(e[18]=t("span",{class:"wb-rank-strip-label"},"今日排行",-1)),(o=p.today_ranking)!=null&&o.length?(l(),c("div",be,[(l(!0),c(A,null,D(p.today_ranking.slice(0,6),(d,y)=>(l(),c("span",{key:d.id,class:"wb-rank-chip"},[t("em",null,n(y+1),1),C(" "+n(d.name)+" ",1),t("strong",null,n(d.count),1)]))),128))])):(l(),c("span",me,"暂无排行数据"))])]}),_:1})]),_:1}),a(v,{gutter:20,class:"wb-chart-row"},{default:r(()=>[a(m,{xs:24,lg:15},{default:r(()=>{var o;return[t("div",_e,[e[19]||(e[19]=t("div",{class:"wb-chart-card-head"},[t("span",{class:"wb-chart-title"},"诊单量分布"),t("span",{class:"wb-chart-hint"},"柱状 + 趋势线")],-1)),(o=p.chart.xAxis)!=null&&o.length?(l(),w(f(O),{key:0,ref_key:"assistantChart",ref:q,class:"wb-chart",style:{height:"340px"},option:Z.value,autoresize:!0},null,8,["option"])):(l(),w(x,{key:1,class:"wb-chart-empty",description:"暂无图表数据"}))])]}),_:1}),a(m,{xs:24,lg:9},{default:r(()=>[t("div",he,[e[20]||(e[20]=t("div",{class:"wb-chart-card-head"},[t("span",{class:"wb-chart-title"},"部门占比"),t("span",{class:"wb-chart-hint"},"按诊单数")],-1)),K.value?(l(),w(f(O),{key:0,class:"wb-chart",style:{height:"340px"},option:X.value,autoresize:!0},null,8,["option"])):(l(),w(x,{key:1,class:"wb-chart-empty",description:"暂无部门数据"}))])]),_:1})]),_:1}),(L=p.departments)!=null&&L.length?(l(),c("div",ye,[e[21]||(e[21]=t("div",{class:"wb-dept-title"},"按部门明细",-1)),a(v,{gutter:16},{default:r(()=>[(l(!0),c(A,null,D(p.departments,o=>(l(),w(m,{key:o.dept_id,xs:24,sm:12,lg:8},{default:r(()=>{var d;return[t("div",we,[t("div",fe,[C(n(o.dept_name)+" ",1),t("span",ve,"共 "+n(o.total),1)]),t("div",ge,[(l(!0),c(A,null,D(o.assistants,y=>(l(),c("div",{key:`${o.dept_id}-${y.id}`,class:"wb-dept-row"},[t("span",null,n(y.name),1),t("span",ke,n(y.count),1)]))),128)),(d=o.assistants)!=null&&d.length?B("",!0):(l(),c("div",xe,"暂无医助"))])])]}),_:2},1024))),128))]),_:1})])):B("",!0)])]),t("section",Se,[t("div",Oe,[t("div",Ce,[t("span",Ae,[a(b,null,{default:r(()=>[a(f(yt))]),_:1})]),e[22]||(e[22]=t("div",null,[t("div",{class:"wb-section-name"},"运营趋势"),t("div",{class:"wb-section-sub"},"访问量与销售额走势")],-1))])]),t("div",De,[a(v,{gutter:20},{default:r(()=>[a(m,{xs:24,lg:14},{default:r(()=>[t("div",Ne,[e[23]||(e[23]=t("div",{class:"wb-chart-card-head"},[t("span",{class:"wb-chart-title"},"访问量趋势")],-1)),a(f(O),{ref_key:"visitorChart",ref:T,class:"wb-chart",style:{height:"320px"},option:u.visitorOption,autoresize:!0},null,8,["option"])])]),_:1}),a(m,{xs:24,lg:10},{default:r(()=>[t("div",$e,[e[24]||(e[24]=t("div",{class:"wb-chart-card-head"},[t("span",{class:"wb-chart-title"},"销售额趋势"),t("span",{class:"wb-chart-hint"},"单位(万)")],-1)),a(f(O),{ref_key:"saleChart",ref:H,class:"wb-chart",style:{height:"320px"},option:u.saleOption,autoresize:!0},null,8,["option"])])]),_:1})]),_:1})])])])}}}),ks=vt(Ee,[["__scopeId","data-v-2f6eaa33"]]);export{ks as default};
diff --git a/server/public/admin/assets/index-Bu8xiw_m.js b/server/public/admin/assets/index-DJYMgXQJ.js
similarity index 97%
rename from server/public/admin/assets/index-Bu8xiw_m.js
rename to server/public/admin/assets/index-DJYMgXQJ.js
index 9b43967e..492081f8 100644
--- a/server/public/admin/assets/index-Bu8xiw_m.js
+++ b/server/public/admin/assets/index-DJYMgXQJ.js
@@ -1 +1 @@
-import{_ as G}from"./index-CAKaWAWM.js";import{r as V,c as R,_ as T}from"./index-B9GiQBjX.js";import{D as z,B as A,G as J,I as $,J as q,i as L,M,N as O,C as P}from"./element-plus-FSf94q2-.js";import{f as C,as as Q,ak as i,I as _,a as e,aN as o,J as a,O as m,aP as x,G as y,F as j,ap as H,A as K}from"./@vue/runtime-core-C6bnekPw.js";import{y as d,r as W}from"./@vue/reactivity-DiY1c2vO.js";import{Q as X}from"./@vue/shared-mAAVTE9n.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./lodash-D3kF6u-c.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./@element-plus/icons-vue-BDOO1F0I.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";function Y(){return V.get({url:"/setting.hot_search/getConfig"})}function Z(u){return V.post({url:"/setting.hot_search/setConfig",params:u})}const tt={class:"hot-search"},et={class:"lg:flex"},ot={class:"flex-1 min-w-0"},st={class:"hot-search-phone mt-4 lg:mt-0 lg:ml-4 flex-none"},at={class:"hot-search-phone-content"},nt={class:"search-com"},rt={class:"search-con flex items-center px-[15px]"},lt={class:"hot-search-text"},it=C({name:"search"}),mt=C({...it,setup(u){const r=W({status:1,data:[]}),k=K(()=>r.data.filter(s=>s.name).sort((s,t)=>t.sort-s.sort)),f=async()=>{try{const s=await Y();for(const t in r)r[t]=s[t]}catch(s){console.log("获取=>",s)}},w=()=>{r.data.push({name:"",sort:0})},E=s=>{r.data.splice(s,1)},D=async()=>{try{await Z(r),f()}catch(s){console.log("保存=>",s)}};return f(),(s,t)=>{const h=$,B=J,I=A,N=z,g=q,p=L,v=P,c=O,S=M,U=R,F=G,b=Q("perms");return i(),_("div",tt,[e(g,{class:"!border-none",shadow:"never"},{default:o(()=>[e(N,{ref:"formRef",model:d(r),"label-width":"100px"},{default:o(()=>[e(I,{label:"功能状态",style:{"margin-bottom":"0"}},{default:o(()=>[a("div",null,[e(B,{modelValue:d(r).status,"onUpdate:modelValue":t[0]||(t[0]=n=>d(r).status=n)},{default:o(()=>[e(h,{value:1},{default:o(()=>[...t[1]||(t[1]=[m("开启",-1)])]),_:1}),e(h,{value:0},{default:o(()=>[...t[2]||(t[2]=[m("关闭",-1)])]),_:1})]),_:1},8,["modelValue"]),t[3]||(t[3]=a("div",{class:"form-tips"},"默认开启,关闭则前端不显示该功能",-1))])]),_:1})]),_:1},8,["model"])]),_:1}),e(g,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[a("div",et,[a("div",ot,[e(p,{type:"primary",class:"mb-4",onClick:w},{default:o(()=>[...t[4]||(t[4]=[m("添加",-1)])]),_:1}),e(S,{size:"large",data:d(r).data},{default:o(()=>[e(c,{label:"关键词",prop:"describe","min-width":"160"},{default:o(({row:n})=>[e(v,{modelValue:n.name,"onUpdate:modelValue":l=>n.name=l,clearable:"",placeholder:"请输入关键字","show-word-limit":"",maxlength:"30"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),e(c,{label:"排序",prop:"describe","min-width":"160"},{default:o(({row:n})=>[e(v,{modelValue:n.sort,"onUpdate:modelValue":l=>n.sort=l,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),e(c,{label:"操作","min-width":"80",fixed:"right"},{default:o(({$index:n})=>[x((i(),y(p,{type:"danger",link:"",onClick:l=>E(n)},{default:o(()=>[...t[5]||(t[5]=[m(" 删除 ",-1)])]),_:1},8,["onClick"])),[[b,["setting:storage:edit"]]])]),_:1})]),_:1},8,["data"])]),a("div",st,[t[8]||(t[8]=a("div",{class:"mb-4 text-center"},"- 热搜预览图 -",-1)),a("div",at,[a("div",nt,[a("div",rt,[e(U,{name:"el-icon-Search",size:17}),t[6]||(t[6]=a("span",{class:"ml-[5px]"},"请输入关键词搜索",-1))])]),t[7]||(t[7]=a("div",{class:"hot-search-title"},"热门搜索",-1)),a("div",lt,[(i(!0),_(j,null,H(d(k),(n,l)=>(i(),_("span",{key:l},X(n.name),1))),128))])])])])]),_:1}),x((i(),y(F,null,{default:o(()=>[e(p,{type:"primary",onClick:D},{default:o(()=>[...t[9]||(t[9]=[m("保存",-1)])]),_:1})]),_:1})),[[b,["setting.hot_search/setConfig"]]])])}}}),Ht=T(mt,[["__scopeId","data-v-7cc9d6c3"]]);export{Ht as default};
+import{_ as G}from"./index-Ct68tUa4.js";import{r as V,c as R,_ as T}from"./index-CLwyu9dm.js";import{D as z,B as A,G as J,I as $,J as q,i as L,M,N as O,C as P}from"./element-plus-FSf94q2-.js";import{f as C,as as Q,ak as i,I as _,a as e,aN as o,J as a,O as m,aP as x,G as y,F as j,ap as H,A as K}from"./@vue/runtime-core-C6bnekPw.js";import{y as d,r as W}from"./@vue/reactivity-DiY1c2vO.js";import{Q as X}from"./@vue/shared-mAAVTE9n.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./lodash-D3kF6u-c.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./@element-plus/icons-vue-BDOO1F0I.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";function Y(){return V.get({url:"/setting.hot_search/getConfig"})}function Z(u){return V.post({url:"/setting.hot_search/setConfig",params:u})}const tt={class:"hot-search"},et={class:"lg:flex"},ot={class:"flex-1 min-w-0"},st={class:"hot-search-phone mt-4 lg:mt-0 lg:ml-4 flex-none"},at={class:"hot-search-phone-content"},nt={class:"search-com"},rt={class:"search-con flex items-center px-[15px]"},lt={class:"hot-search-text"},it=C({name:"search"}),mt=C({...it,setup(u){const r=W({status:1,data:[]}),k=K(()=>r.data.filter(s=>s.name).sort((s,t)=>t.sort-s.sort)),f=async()=>{try{const s=await Y();for(const t in r)r[t]=s[t]}catch(s){console.log("获取=>",s)}},w=()=>{r.data.push({name:"",sort:0})},E=s=>{r.data.splice(s,1)},D=async()=>{try{await Z(r),f()}catch(s){console.log("保存=>",s)}};return f(),(s,t)=>{const h=$,B=J,I=A,N=z,g=q,p=L,v=P,c=O,S=M,U=R,F=G,b=Q("perms");return i(),_("div",tt,[e(g,{class:"!border-none",shadow:"never"},{default:o(()=>[e(N,{ref:"formRef",model:d(r),"label-width":"100px"},{default:o(()=>[e(I,{label:"功能状态",style:{"margin-bottom":"0"}},{default:o(()=>[a("div",null,[e(B,{modelValue:d(r).status,"onUpdate:modelValue":t[0]||(t[0]=n=>d(r).status=n)},{default:o(()=>[e(h,{value:1},{default:o(()=>[...t[1]||(t[1]=[m("开启",-1)])]),_:1}),e(h,{value:0},{default:o(()=>[...t[2]||(t[2]=[m("关闭",-1)])]),_:1})]),_:1},8,["modelValue"]),t[3]||(t[3]=a("div",{class:"form-tips"},"默认开启,关闭则前端不显示该功能",-1))])]),_:1})]),_:1},8,["model"])]),_:1}),e(g,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[a("div",et,[a("div",ot,[e(p,{type:"primary",class:"mb-4",onClick:w},{default:o(()=>[...t[4]||(t[4]=[m("添加",-1)])]),_:1}),e(S,{size:"large",data:d(r).data},{default:o(()=>[e(c,{label:"关键词",prop:"describe","min-width":"160"},{default:o(({row:n})=>[e(v,{modelValue:n.name,"onUpdate:modelValue":l=>n.name=l,clearable:"",placeholder:"请输入关键字","show-word-limit":"",maxlength:"30"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),e(c,{label:"排序",prop:"describe","min-width":"160"},{default:o(({row:n})=>[e(v,{modelValue:n.sort,"onUpdate:modelValue":l=>n.sort=l,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),e(c,{label:"操作","min-width":"80",fixed:"right"},{default:o(({$index:n})=>[x((i(),y(p,{type:"danger",link:"",onClick:l=>E(n)},{default:o(()=>[...t[5]||(t[5]=[m(" 删除 ",-1)])]),_:1},8,["onClick"])),[[b,["setting:storage:edit"]]])]),_:1})]),_:1},8,["data"])]),a("div",st,[t[8]||(t[8]=a("div",{class:"mb-4 text-center"},"- 热搜预览图 -",-1)),a("div",at,[a("div",nt,[a("div",rt,[e(U,{name:"el-icon-Search",size:17}),t[6]||(t[6]=a("span",{class:"ml-[5px]"},"请输入关键词搜索",-1))])]),t[7]||(t[7]=a("div",{class:"hot-search-title"},"热门搜索",-1)),a("div",lt,[(i(!0),_(j,null,H(d(k),(n,l)=>(i(),_("span",{key:l},X(n.name),1))),128))])])])])]),_:1}),x((i(),y(F,null,{default:o(()=>[e(p,{type:"primary",onClick:D},{default:o(()=>[...t[9]||(t[9]=[m("保存",-1)])]),_:1})]),_:1})),[[b,["setting.hot_search/setConfig"]]])])}}}),Ht=T(mt,[["__scopeId","data-v-7cc9d6c3"]]);export{Ht as default};
diff --git a/server/public/admin/assets/index-Bs1p3Xwl.js b/server/public/admin/assets/index-DL65fiIv.js
similarity index 91%
rename from server/public/admin/assets/index-Bs1p3Xwl.js
rename to server/public/admin/assets/index-DL65fiIv.js
index 0c36b3fb..f7c01dc6 100644
--- a/server/public/admin/assets/index-Bs1p3Xwl.js
+++ b/server/public/admin/assets/index-DL65fiIv.js
@@ -1 +1 @@
-import{Q as V,P as b}from"./element-plus-FSf94q2-.js";import{m as k}from"./medicine-Cg-Szpym.js";import{f as w,w as x,ak as l,I as d,G as u,aN as B,F as C,ap as E}from"./@vue/runtime-core-C6bnekPw.js";import{Q as I}from"./@vue/shared-mAAVTE9n.js";import{y as p,n as f}from"./@vue/reactivity-DiY1c2vO.js";import{_ as M}from"./index-B9GiQBjX.js";const S={key:0,class:"medicine-name-readonly"},F=w({__name:"index",props:{modelValue:{},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(o,{emit:v}){const i=o,_=v,n=f(!1),a=f([]);function m(){const e=(i.modelValue||"").trim();e&&(a.value.some(t=>t.name===e)||(a.value=[{id:0,name:e},...a.value]))}const c=async e=>{n.value=!0;try{const t=(e||"").trim(),s=await k({name:t||void 0,page_no:1,page_size:100,status:1});a.value=s.lists||[],m()}catch(t){console.error(t),a.value=[]}finally{n.value=!1}},y=e=>{e&&a.value.length===0&&c("")},h=e=>{_("update:modelValue",e||"")};return x(()=>i.modelValue,()=>{m()},{immediate:!0}),(e,t)=>{const s=V,g=b;return o.disabled?(l(),d("span",S,I(o.modelValue||"—"),1)):(l(),u(g,{key:1,"model-value":o.modelValue,class:"medicine-name-select w-full",filterable:"",remote:"","reserve-keyword":"",placeholder:"搜索药材名称或拼音首字母","remote-method":c,loading:p(n),clearable:"",onVisibleChange:y,"onUpdate:modelValue":h},{default:B(()=>[(l(!0),d(C,null,E(p(a),r=>(l(),u(s,{key:r.id,label:r.name,value:r.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","loading"]))}}}),z=M(F,[["__scopeId","data-v-01d726b0"]]);export{z as M};
+import{Q as V,P as b}from"./element-plus-FSf94q2-.js";import{m as k}from"./medicine-CL4B3e2L.js";import{f as w,w as x,ak as l,I as d,G as u,aN as B,F as C,ap as E}from"./@vue/runtime-core-C6bnekPw.js";import{Q as I}from"./@vue/shared-mAAVTE9n.js";import{y as p,n as f}from"./@vue/reactivity-DiY1c2vO.js";import{_ as M}from"./index-CLwyu9dm.js";const S={key:0,class:"medicine-name-readonly"},F=w({__name:"index",props:{modelValue:{},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(o,{emit:v}){const i=o,_=v,n=f(!1),a=f([]);function m(){const e=(i.modelValue||"").trim();e&&(a.value.some(t=>t.name===e)||(a.value=[{id:0,name:e},...a.value]))}const c=async e=>{n.value=!0;try{const t=(e||"").trim(),s=await k({name:t||void 0,page_no:1,page_size:100,status:1});a.value=s.lists||[],m()}catch(t){console.error(t),a.value=[]}finally{n.value=!1}},y=e=>{e&&a.value.length===0&&c("")},h=e=>{_("update:modelValue",e||"")};return x(()=>i.modelValue,()=>{m()},{immediate:!0}),(e,t)=>{const s=V,g=b;return o.disabled?(l(),d("span",S,I(o.modelValue||"—"),1)):(l(),u(g,{key:1,"model-value":o.modelValue,class:"medicine-name-select w-full",filterable:"",remote:"","reserve-keyword":"",placeholder:"搜索药材名称或拼音首字母","remote-method":c,loading:p(n),clearable:"",onVisibleChange:y,"onUpdate:modelValue":h},{default:B(()=>[(l(!0),d(C,null,E(p(a),r=>(l(),u(s,{key:r.id,label:r.name,value:r.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","loading"]))}}}),z=M(F,[["__scopeId","data-v-01d726b0"]]);export{z as M};
diff --git a/server/public/admin/assets/index-DI3f6owT.js b/server/public/admin/assets/index-DNkSYmLH.js
similarity index 93%
rename from server/public/admin/assets/index-DI3f6owT.js
rename to server/public/admin/assets/index-DNkSYmLH.js
index 3322747e..95ebb36c 100644
--- a/server/public/admin/assets/index-DI3f6owT.js
+++ b/server/public/admin/assets/index-DNkSYmLH.js
@@ -1 +1 @@
-import{i as A,M as P,N as z,T as F,L as G,J}from"./element-plus-FSf94q2-.js";import{c as S,M as y,i as q}from"./index-B9GiQBjX.js";import{a as H,e as I}from"./menu-DozIh1pi.js";import{u as j}from"./usePaging-VsbTxSU0.js";import{_ as K}from"./edit.vue_vue_type_script_setup_true_lang-5uKur5Q8.js";import{f as D,as as Q,ak as a,I as k,a as n,aN as o,J as N,aP as f,G as p,O as d,H as h,n as B}from"./@vue/runtime-core-C6bnekPw.js";import{y as m,q as $,n as W}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-BDOO1F0I.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker.vue_vue_type_script_setup_true_lang-JXfC2Xe4.js";import"./index-DYbQoSgX.js";const X={class:"menu-lists"},Y={key:0},Z={key:1},ee={key:2},te={class:"flex"},oe=D({name:"permission-menu"}),Ie=D({...oe,setup(ie){const w=$(),u=$();let v=!1;const _=W(!1),{pager:b,getLists:g}=j({fetchFun:H,params:{page_type:0}}),C=async i=>{var e,s;_.value=!0,await B(),i&&((e=u.value)==null||e.setFormData({pid:i})),(s=u.value)==null||s.open("add")},R=async i=>{var e,s;_.value=!0,await B(),(e=u.value)==null||e.open("edit"),(s=u.value)==null||s.getDetail(i)},L=async i=>{await q.confirm("确定要删除?"),await I({id:i}),g()},M=()=>{v=!v,E(b.lists,v)},E=(i,e=!0)=>{var s;for(const l in i)(s=w.value)==null||s.toggleRowExpansion(i[l],e),i[l].children&&E(i[l].children,e)};return g(),(i,e)=>{const s=S,l=A,r=z,x=F,O=P,U=J,c=Q("perms"),V=G;return a(),k("div",X,[n(U,{class:"!border-none",shadow:"never"},{default:o(()=>[N("div",null,[f((a(),p(l,{type:"primary",onClick:e[0]||(e[0]=t=>C())},{icon:o(()=>[n(s,{name:"el-icon-Plus"})]),default:o(()=>[e[2]||(e[2]=d(" 新增 ",-1))]),_:1})),[[c,["auth.menu/add"]]]),n(l,{onClick:M},{default:o(()=>[...e[3]||(e[3]=[d(" 展开/折叠 ",-1)])]),_:1})]),f((a(),p(O,{ref_key:"tableRef",ref:w,class:"mt-4",size:"large",data:m(b).lists,"row-key":"id","tree-props":{children:"children",hasChildren:"hasChildren"}},{default:o(()=>[n(r,{label:"菜单名称",prop:"name","min-width":"150","show-overflow-tooltip":""}),n(r,{label:"类型",prop:"type","min-width":"80"},{default:o(({row:t})=>[t.type==m(y).CATALOGUE?(a(),k("div",Y,"目录")):t.type==m(y).MENU?(a(),k("div",Z,"菜单")):t.type==m(y).BUTTON?(a(),k("div",ee,"按钮")):h("",!0)]),_:1}),n(r,{label:"图标",prop:"icon","min-width":"80"},{default:o(({row:t})=>[N("div",te,[n(s,{name:t.icon,size:20},null,8,["name"])])]),_:1}),n(r,{label:"权限标识",prop:"perms","min-width":"150","show-overflow-tooltip":""}),n(r,{label:"状态",prop:"is_disable","min-width":"100"},{default:o(({row:t})=>[t.is_disable==0?(a(),p(x,{key:0},{default:o(()=>[...e[4]||(e[4]=[d("正常",-1)])]),_:1})):(a(),p(x,{key:1,type:"danger"},{default:o(()=>[...e[5]||(e[5]=[d("停用",-1)])]),_:1}))]),_:1}),n(r,{label:"排序",prop:"sort","min-width":"100"}),n(r,{label:"更新时间",prop:"update_time","min-width":"180"}),n(r,{label:"操作",width:"160",fixed:"right"},{default:o(({row:t})=>[t.type!==m(y).BUTTON?f((a(),p(l,{key:0,type:"primary",link:"",onClick:T=>C(t.id)},{default:o(()=>[...e[6]||(e[6]=[d(" 新增 ",-1)])]),_:1},8,["onClick"])),[[c,["auth.menu/add"]]]):h("",!0),f((a(),p(l,{type:"primary",link:"",onClick:T=>R(t)},{default:o(()=>[...e[7]||(e[7]=[d(" 编辑 ",-1)])]),_:1},8,["onClick"])),[[c,["auth.menu/edit"]]]),f((a(),p(l,{type:"danger",link:"",onClick:T=>L(t.id)},{default:o(()=>[...e[8]||(e[8]=[d(" 删除 ",-1)])]),_:1},8,["onClick"])),[[c,["auth.menu/delete"]]])]),_:1})]),_:1},8,["data"])),[[V,m(b).loading]])]),_:1}),m(_)?(a(),p(K,{key:0,ref_key:"editRef",ref:u,onSuccess:m(g),onClose:e[1]||(e[1]=t=>_.value=!1)},null,8,["onSuccess"])):h("",!0)])}}});export{Ie as default};
+import{i as A,M as P,N as z,T as F,L as G,J}from"./element-plus-FSf94q2-.js";import{c as S,M as y,i as q}from"./index-CLwyu9dm.js";import{a as H,e as I}from"./menu-b9lzcaLL.js";import{u as j}from"./usePaging-VsbTxSU0.js";import{_ as K}from"./edit.vue_vue_type_script_setup_true_lang-7odqhjEG.js";import{f as D,as as Q,ak as a,I as k,a as n,aN as o,J as N,aP as f,G as p,O as d,H as h,n as B}from"./@vue/runtime-core-C6bnekPw.js";import{y as m,q as $,n as W}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-BDOO1F0I.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker.vue_vue_type_script_setup_true_lang-B9hC1i0n.js";import"./index-CbVXHb-T.js";const X={class:"menu-lists"},Y={key:0},Z={key:1},ee={key:2},te={class:"flex"},oe=D({name:"permission-menu"}),Ie=D({...oe,setup(ie){const w=$(),u=$();let v=!1;const _=W(!1),{pager:b,getLists:g}=j({fetchFun:H,params:{page_type:0}}),C=async i=>{var e,s;_.value=!0,await B(),i&&((e=u.value)==null||e.setFormData({pid:i})),(s=u.value)==null||s.open("add")},R=async i=>{var e,s;_.value=!0,await B(),(e=u.value)==null||e.open("edit"),(s=u.value)==null||s.getDetail(i)},L=async i=>{await q.confirm("确定要删除?"),await I({id:i}),g()},M=()=>{v=!v,E(b.lists,v)},E=(i,e=!0)=>{var s;for(const l in i)(s=w.value)==null||s.toggleRowExpansion(i[l],e),i[l].children&&E(i[l].children,e)};return g(),(i,e)=>{const s=S,l=A,r=z,x=F,O=P,U=J,c=Q("perms"),V=G;return a(),k("div",X,[n(U,{class:"!border-none",shadow:"never"},{default:o(()=>[N("div",null,[f((a(),p(l,{type:"primary",onClick:e[0]||(e[0]=t=>C())},{icon:o(()=>[n(s,{name:"el-icon-Plus"})]),default:o(()=>[e[2]||(e[2]=d(" 新增 ",-1))]),_:1})),[[c,["auth.menu/add"]]]),n(l,{onClick:M},{default:o(()=>[...e[3]||(e[3]=[d(" 展开/折叠 ",-1)])]),_:1})]),f((a(),p(O,{ref_key:"tableRef",ref:w,class:"mt-4",size:"large",data:m(b).lists,"row-key":"id","tree-props":{children:"children",hasChildren:"hasChildren"}},{default:o(()=>[n(r,{label:"菜单名称",prop:"name","min-width":"150","show-overflow-tooltip":""}),n(r,{label:"类型",prop:"type","min-width":"80"},{default:o(({row:t})=>[t.type==m(y).CATALOGUE?(a(),k("div",Y,"目录")):t.type==m(y).MENU?(a(),k("div",Z,"菜单")):t.type==m(y).BUTTON?(a(),k("div",ee,"按钮")):h("",!0)]),_:1}),n(r,{label:"图标",prop:"icon","min-width":"80"},{default:o(({row:t})=>[N("div",te,[n(s,{name:t.icon,size:20},null,8,["name"])])]),_:1}),n(r,{label:"权限标识",prop:"perms","min-width":"150","show-overflow-tooltip":""}),n(r,{label:"状态",prop:"is_disable","min-width":"100"},{default:o(({row:t})=>[t.is_disable==0?(a(),p(x,{key:0},{default:o(()=>[...e[4]||(e[4]=[d("正常",-1)])]),_:1})):(a(),p(x,{key:1,type:"danger"},{default:o(()=>[...e[5]||(e[5]=[d("停用",-1)])]),_:1}))]),_:1}),n(r,{label:"排序",prop:"sort","min-width":"100"}),n(r,{label:"更新时间",prop:"update_time","min-width":"180"}),n(r,{label:"操作",width:"160",fixed:"right"},{default:o(({row:t})=>[t.type!==m(y).BUTTON?f((a(),p(l,{key:0,type:"primary",link:"",onClick:T=>C(t.id)},{default:o(()=>[...e[6]||(e[6]=[d(" 新增 ",-1)])]),_:1},8,["onClick"])),[[c,["auth.menu/add"]]]):h("",!0),f((a(),p(l,{type:"primary",link:"",onClick:T=>R(t)},{default:o(()=>[...e[7]||(e[7]=[d(" 编辑 ",-1)])]),_:1},8,["onClick"])),[[c,["auth.menu/edit"]]]),f((a(),p(l,{type:"danger",link:"",onClick:T=>L(t.id)},{default:o(()=>[...e[8]||(e[8]=[d(" 删除 ",-1)])]),_:1},8,["onClick"])),[[c,["auth.menu/delete"]]])]),_:1})]),_:1},8,["data"])),[[V,m(b).loading]])]),_:1}),m(_)?(a(),p(K,{key:0,ref_key:"editRef",ref:u,onSuccess:m(g),onClose:e[1]||(e[1]=t=>_.value=!1)},null,8,["onSuccess"])):h("",!0)])}}});export{Ie as default};
diff --git a/server/public/admin/assets/index-Bzc2YBt2.js b/server/public/admin/assets/index-DQ4-ihQv.js
similarity index 98%
rename from server/public/admin/assets/index-Bzc2YBt2.js
rename to server/public/admin/assets/index-DQ4-ihQv.js
index 0bd0fc4d..330e56b9 100644
--- a/server/public/admin/assets/index-Bzc2YBt2.js
+++ b/server/public/admin/assets/index-DQ4-ihQv.js
@@ -1 +1 @@
-import{K as Je,i as Oe,d as Ge,r as We,Q as je,q as Xe,P as Ye,C as Ze,H as et,L as tt,R as st,S as at,T as lt,l as nt,m as it,U as ot,M as rt,N as ut,V as dt}from"./element-plus-FSf94q2-.js";import{w as ct}from"./@vue/runtime-dom-DDAG46FW.js";import{L as fe,M as mt,N as _t,J as ft}from"./@element-plus/icons-vue-BDOO1F0I.js";import{i as C,t as vt,_ as pt}from"./index-B9GiQBjX.js";import{u as gt}from"./usePaging-VsbTxSU0.js";import yt from"./MessageBubble-Cbj4bUst.js";import{q as ht,S as kt,a as wt,b as bt,c as xt,d as St,e as ae,f as Tt,g as Mt,h as ve}from"./SendPanel-jrTNHid3.js";import{f as zt,w as Et,b as Ct,ae as Vt,ak as o,I as u,G as x,H as _,J as a,a as l,aN as i,F as M,ap as B,O as f,aP as le,A as pe,n as ne}from"./@vue/runtime-core-C6bnekPw.js";import{y,n as m}from"./@vue/reactivity-DiY1c2vO.js";import{Q as d,o as $t}from"./@vue/shared-mAAVTE9n.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./file-BWkxVNko.js";const Dt={class:"qywx-im"},Lt={class:"im-layout"},qt={class:"col-session"},At={class:"col-header"},It={class:"col-actions"},Bt={class:"col-filters"},Ht={class:"staff-option"},Pt={class:"staff-userid"},Nt={class:"session-list"},Ut={key:0,class:"empty-tip"},Rt=["onClick"],Kt={class:"session-meta"},Ft={class:"session-top"},Qt={class:"session-name"},Jt={class:"session-time"},Ot={class:"session-bottom"},Gt={class:"session-preview"},Wt={key:0,class:"session-staff"},jt={key:1,class:"session-load-more"},Xt={class:"col-message"},Yt={key:0,class:"no-session"},Zt={class:"col-header"},es={class:"msg-header-title"},ts={class:"msg-customer-name"},ss={class:"msg-customer-sub"},as={class:"col-actions"},ls={key:0,class:"load-history"},ns={key:1,class:"load-history end-tip"},is={key:2,class:"empty-tip"},os={class:"col-profile"},rs={class:"profile-panel"},us={class:"profile-name"},ds={class:"profile-fields"},cs={class:"field"},ms={class:"value"},_s={class:"field"},fs=["title"],vs={key:0,class:"field"},ps={class:"value"},gs={key:1,class:"field"},ys={class:"value"},hs={class:"field"},ks={class:"value"},ws={class:"field"},bs={class:"value"},xs={class:"tasks-panel"},Ss={key:0,class:"empty-tip"},Ts={class:"task-top"},Ms={class:"task-time"},zs={class:"task-body"},Es={key:0,class:"task-text"},Cs={key:1,class:"task-attachments"},Vs={key:2,class:"task-error"},$s={class:"task-actions"},Ds={key:1,class:"no-session"},Ls={class:"tips"},qs={key:1,class:"mt-2 text-center"},As=zt({__name:"index",setup(Is){const z=m(null),J=m(!1),ge=pe(()=>{if(!z.value)return"";const t=z.value;return t.enabled?`会话存档 SDK 不可用:${t.error||"未知错误"}`:"「会话内容存档」未启用,实时消息不可用。请在后端 pay.php 中开启 msgaudit_enabled 并配置 SDK 动态库与 RSA 私钥。"});async function ye(){try{z.value=await wt()}catch{}}async function he(){J.value=!0;try{await bt(5,!0),C.msgSuccess("已触发一次拉取,稍后刷新可见"),await S(!0),n.value&&await j()}catch(t){C.msgError((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"拉取失败")}finally{J.value=!1}}const O=m([]);async function ke(){try{const t=await xt();O.value=Array.isArray(t)?t:(t==null?void 0:t.lists)||[]}catch{O.value=[]}}const E=m({staff_userid:"",keyword:"",only_unread:0}),G=m(!1);Et(G,t=>{E.value.only_unread=t?1:0});const{pager:g,getLists:W}=gt({fetchFun:ht,params:E.value,size:30});function S(t=!1){return t||(g.page=1),W()}async function we(){const t=[...g.lists||[]];g.page+=1;try{await W();const e=g.lists||[],r=new Set(t.map(v=>v.id)),c=[...t,...e.filter(v=>!r.has(v.id))];g.lists=c}catch{}}const n=m(null),h=m([]),H=m(!1),V=m(!1),$=m(!1),P=m(0),N=m(0),k=m(null),be=pe(()=>!!n.value&&n.value.session_type!==2);async function xe(t){var e;if(((e=n.value)==null?void 0:e.id)!==t.id){if(n.value=t,h.value=[],P.value=0,N.value=0,$.value=!1,await j(),await re(),t.unread_staff>0)try{await St(t.id),t.unread_staff=0}catch{}U.value="profile"}}async function j(){if(n.value){H.value=!0;try{const t=await ae({session_id:n.value.id,page_no:1,page_size:30}),e=(t==null?void 0:t.lists)||[];h.value=e,e.length&&(P.value=e[0].send_time,N.value=e[e.length-1].send_time),$.value=e.length>=30,await ne(),oe()}catch(t){C.msgError((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"加载消息失败")}finally{H.value=!1}}}async function ie(){var e;if(!n.value||V.value)return;V.value=!0;const t=((e=k.value)==null?void 0:e.scrollHeight)||0;try{const r=await ae({session_id:n.value.id,page_no:1,page_size:30,before_time:P.value}),c=(r==null?void 0:r.lists)||[];c.length&&(P.value=c[0].send_time,h.value=[...c,...h.value]),$.value=c.length>=30,await ne(),k.value&&(k.value.scrollTop=k.value.scrollHeight-t)}finally{V.value=!1}}async function Se(){if(n.value)try{const t=await ae({session_id:n.value.id,page_no:1,page_size:50,after_time:N.value}),e=(t==null?void 0:t.lists)||[];if(!e.length)return;const r=new Set(h.value.map(T=>T.id)),c=e.filter(T=>!r.has(T.id));if(!c.length)return;h.value=[...h.value,...c],N.value=c[c.length-1].send_time;const v=k.value;(v?v.scrollHeight-v.scrollTop-v.clientHeight<120:!0)&&(await ne(),oe())}catch{}}function Te(){const t=k.value;t&&t.scrollTop<40&&$.value&&!V.value&&ie()}function oe(){k.value&&(k.value.scrollTop=k.value.scrollHeight)}async function Me(t){if(n.value)try{await Tt({sender_userid:n.value.staff_userid,external_userids:[n.value.external_userid],msg_payload:t,chat_type:"single"}),C.msgSuccess("已创建群发任务,员工手机确认后送达客户"),await re(),U.value="tasks"}catch(e){C.msgError((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"发送失败")}}const U=m("profile"),R=m([]),X=m(!1);async function re(){if(n.value){X.value=!0;try{const t=await Mt({sender_userid:n.value.staff_userid,page_no:1,page_size:50}),e=(t==null?void 0:t.lists)||[];R.value=e.filter(r=>(r.external_userids||[]).includes(n.value.external_userid))}finally{X.value=!1}}}function ze(t){return{0:"待提交",1:"已提交",2:"已送达",3:"失败"}[t]??`状态${t}`}function Ee(t){return{0:"info",1:"primary",2:"success",3:"danger"}[t]??"info"}function Ce(t){return{image:"图片",video:"视频",file:"文件",link:"链接",miniprogram:"小程序"}[t]||t}const Y=m(!1),D=m(!1),ue=m(0),w=m(null);async function Ve(t){ue.value=t.id,w.value={detail_list:[],next_cursor:""},Y.value=!0,D.value=!0;try{const e=await ve(t.id,"");w.value={detail_list:(e==null?void 0:e.detail_list)||[],next_cursor:(e==null?void 0:e.next_cursor)||"",task:e==null?void 0:e.task}}catch(e){C.msgError((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"加载失败")}finally{D.value=!1}}async function $e(){var t;if((t=w.value)!=null&&t.next_cursor){D.value=!0;try{const e=await ve(ue.value,w.value.next_cursor);w.value={detail_list:[...w.value.detail_list,...(e==null?void 0:e.detail_list)||[]],next_cursor:(e==null?void 0:e.next_cursor)||"",task:e==null?void 0:e.task}}finally{D.value=!1}}}function De(t){switch(t){case 0:return"未发送";case 1:return"已送达";case 2:return"被拒收";case 3:return"已送达(未读)";default:return`状态${t}`}}function Le(t){return t===1?"success":t===2?"warning":t===3?"primary":"info"}function L(t){var e;return(e=t.customer)!=null&&e.name?t.customer.name:t.session_type===2?`群聊 ${t.roomid.slice(-6)}`:t.external_userid||"未命名客户"}function qe(t){const e=t.last_msg_summary||"",r=t.last_msg_type;return e||(r==="image"?"[图片]":r==="video"?"[视频]":r==="voice"?"[语音]":r==="file"?"[文件]":r==="link"?"[链接]":r==="weapp"?"[小程序]":r==="chatrecord"?"[聊天记录]":r?`[${r}]`:"暂无消息")}function Z(t){return t?vt(t*1e3,"yyyy-mm-dd hh:MM"):"-"}function Ae(t){if(!t)return"";const r=Math.floor(Date.now()/1e3)-t;if(r<60)return`${r}秒前`;if(r<3600)return`${Math.floor(r/60)}分前`;if(r<86400)return`${Math.floor(r/3600)}小时前`;const c=new Date(t*1e3);return`${c.getMonth()+1}-${c.getDate()}`}let ee=null,te=null;return Ct(async()=>{await Promise.all([ye(),ke()]),await S(),ee=window.setInterval(()=>{W({silent:!0}).catch(()=>{})},15e3),te=window.setInterval(()=>{Se()},8e3)}),Vt(()=>{ee&&window.clearInterval(ee),te&&window.clearInterval(te)}),(t,e)=>{var ce,me;const r=Je,c=Ge,v=Oe,K=We,T=Xe,Ie=je,Be=Ye,He=Ze,Pe=et,F=st,Ne=at,q=lt,de=nt,Ue=it,Re=ot,Q=ut,Ke=rt,Fe=dt,se=tt;return o(),u("div",Dt,[z.value&&!z.value.available?(o(),x(r,{key:0,title:ge.value,type:"warning",closable:!1,"show-icon":"",class:"archive-warning"},null,8,["title"])):_("",!0),a("div",Lt,[a("section",qt,[a("header",At,[e[11]||(e[11]=a("div",{class:"col-title"},"会话",-1)),a("div",It,[l(K,{content:"刷新"},{default:i(()=>[l(v,{size:"small",link:"",loading:y(g).loading,onClick:e[0]||(e[0]=s=>S(!0))},{default:i(()=>[l(c,null,{default:i(()=>[l(y(fe))]),_:1})]),_:1},8,["loading"])]),_:1}),l(K,{content:"手动拉一次存档"},{default:i(()=>{var s;return[l(v,{size:"small",link:"",disabled:!((s=z.value)!=null&&s.available),loading:J.value,onClick:he},{default:i(()=>[l(c,null,{default:i(()=>[l(y(mt))]),_:1})]),_:1},8,["disabled","loading"])]}),_:1})])]),a("div",Bt,[l(Be,{modelValue:E.value.staff_userid,"onUpdate:modelValue":e[1]||(e[1]=s=>E.value.staff_userid=s),placeholder:"全部员工",clearable:"",filterable:"",size:"default",style:{width:"100%"},onChange:e[2]||(e[2]=s=>S())},{default:i(()=>[(o(!0),u(M,null,B(O.value,s=>(o(),x(Ie,{key:s.userid,label:(s.name||s.userid)+"("+s.userid+")",value:s.userid},{default:i(()=>[a("div",Ht,[l(T,{size:20,src:s.avatar},{default:i(()=>[f(d((s.name||"").slice(-2)),1)]),_:2},1032,["src"]),a("span",null,d(s.name),1),a("span",Pt,d(s.userid),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),l(He,{modelValue:E.value.keyword,"onUpdate:modelValue":e[3]||(e[3]=s=>E.value.keyword=s),placeholder:"搜索客户或消息",clearable:"",size:"default",onKeyup:e[4]||(e[4]=ct(s=>S(),["enter"])),onClear:e[5]||(e[5]=s=>S())},{prefix:i(()=>[l(c,null,{default:i(()=>[l(y(_t))]),_:1})]),_:1},8,["modelValue"]),l(Pe,{modelValue:G.value,"onUpdate:modelValue":e[6]||(e[6]=s=>G.value=s),onChange:e[7]||(e[7]=s=>S())},{default:i(()=>[...e[12]||(e[12]=[f(" 仅未读 ",-1)])]),_:1},8,["modelValue"])]),le((o(),u("div",Nt,[!y(g).lists.length&&!y(g).loading?(o(),u("div",Ut,[l(F,{description:"暂无会话","image-size":80})])):_("",!0),(o(!0),u(M,null,B(y(g).lists,s=>{var p;return o(),u("div",{key:s.id,class:$t(["session-item",{active:((p=n.value)==null?void 0:p.id)===s.id}]),onClick:b=>xe(s)},[l(Ne,{value:s.unread_staff,hidden:!s.unread_staff,max:99},{default:i(()=>{var b;return[l(T,{size:42,src:((b=s.customer)==null?void 0:b.avatar)||""},{default:i(()=>[f(d(L(s).slice(-2)),1)]),_:2},1032,["src"])]}),_:2},1032,["value","hidden"]),a("div",Kt,[a("div",Ft,[a("span",Qt,d(L(s)),1),a("span",Jt,d(Ae(s.last_msg_time)),1)]),a("div",Ot,[a("span",Gt,d(qe(s)),1),s.session_type===2?(o(),x(q,{key:0,size:"small",type:"info",class:"session-tag"},{default:i(()=>[...e[13]||(e[13]=[f(" 群 ",-1)])]),_:1})):_("",!0)]),s.staff?(o(),u("div",Wt," 员工: "+d(s.staff.name||s.staff_userid),1)):_("",!0)])],10,Rt)}),128)),y(g).lists.length
接诊诊单:${d[0]}
金额:${Number(d[1]).toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})} 元`:""}},grid:{left:48,right:24,top:28,bottom:32,containLabel:!0},xAxis:{type:"value",name:"接诊诊单",nameLocation:"middle",nameGap:28,splitLine:{lineStyle:{type:"dashed",opacity:.55}}},yAxis:{type:"value",name:"成交金额",nameLocation:"middle",nameGap:40,splitLine:{lineStyle:{type:"dashed",opacity:.55}}},series:[{type:"scatter",data:n}]}}),yt=z(()=>U.value.filter(e=>Number(e.deal_amount??0)+Number(e.deal_order_count??0)+Number(e.system_prescription_count??0)+Number(e.manual_prescription_count??0)>0).length>=2),ka=z(()=>{const t=[...U.value].filter(p=>Number(p.deal_amount??0)+Number(p.deal_order_count??0)+Number(p.system_prescription_count??0)+Number(p.manual_prescription_count??0)>0).sort((p,P)=>Number(P.deal_amount)-Number(p.deal_amount)).slice(0,5);if(t.length<2)return{radar:{indicator:[]},series:[{type:"radar",data:[]}]};const e=p=>{const P=String(p.doctor_name||"—");return P.length>7?`${P.slice(0,7)}…`:P},n=p=>Number(p.system_prescription_count??0)+Number(p.manual_prescription_count??0),s=p=>{const P=Number(p.avg_deal_amount);if(Number.isFinite(P)&&P>0)return P;const R=Number(p.deal_order_count);return R>0?Number(p.deal_amount)/R:0},d=Math.max(...t.map(p=>Number(p.deal_amount)),1e-9),b=Math.max(...t.map(p=>Number(p.deal_order_count)),1e-9),g=Math.max(...t.map(n),1e-9),k=Math.max(...t.map(p=>Number(p.appointment_completed??0)),1e-9),B=Math.max(...t.map(s),1e-9),M=t.map(p=>({name:e(p),value:[Number(p.deal_amount)/d*100,Number(p.deal_order_count)/b*100,n(p)/g*100,Number(p.appointment_completed??0)/k*100,s(p)/B*100]}));return{color:["#2563eb","#0d9488","#d97706","#7c3aed","#64748b"],tooltip:{trigger:"item"},legend:{bottom:0,type:"scroll",textStyle:{fontSize:10}},radar:{indicator:[{name:"成交金额",max:100},{name:"接诊诊单",max:100},{name:"开方量",max:100},{name:"挂号完成",max:100},{name:"客单价",max:100}],radius:"58%",center:["50%","48%"],splitNumber:4,axisName:{fontSize:10,color:"#64748b"}},series:[{type:"radar",data:M,emphasis:{lineStyle:{width:3}}}]}}),ja=z(()=>{const t=[...U.value].filter(s=>Number(s.deal_amount??0)>0).sort((s,d)=>Number(d.deal_amount)-Number(s.deal_amount)).slice(0,20),e=t.map(s=>{const d=String(s.doctor_name||"—");return d.length>10?`${d.slice(0,10)}…`:d}),n=t.map(s=>Number(s.deal_amount??0));return{color:["#2563eb"],tooltip:{trigger:"axis",axisPointer:{type:"shadow"},valueFormatter:s=>`${s.toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})} 元`},grid:{left:8,right:16,top:28,bottom:8,containLabel:!0},xAxis:{type:"value",axisLabel:{fontSize:11},splitLine:{lineStyle:{type:"dashed",opacity:.6}}},yAxis:{type:"category",data:[...e].reverse(),axisLabel:{fontSize:11}},series:[{name:"成交金额",type:"bar",data:[...n].reverse(),barMaxWidth:22,itemStyle:{borderRadius:[0,6,6,0]}}]}}),xa=z(()=>{const t=[...U.value].filter(n=>Number(n.system_prescription_count??0)+Number(n.manual_prescription_count??0)>0).sort((n,s)=>Number(s.system_prescription_count??0)+Number(s.manual_prescription_count??0)-(Number(n.system_prescription_count??0)+Number(n.manual_prescription_count??0))).slice(0,14),e=t.map(n=>{const s=String(n.doctor_name||"—");return s.length>6?`${s.slice(0,6)}…`:s});return{tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},legend:{top:0,textStyle:{fontSize:11}},grid:{left:44,right:16,top:32,bottom:e.length>10?72:28},xAxis:{type:"category",data:e,axisLabel:{rotate:e.length>8?32:0,fontSize:10}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.6}}},series:[{name:"系统开方",type:"bar",stack:"rx",barMaxWidth:18,data:t.map(n=>Number(n.system_prescription_count??0)),itemStyle:{color:"#2563eb"}},{name:"手动开方",type:"bar",stack:"rx",barMaxWidth:18,data:t.map(n=>Number(n.manual_prescription_count??0)),itemStyle:{color:"#d97706"}}]}});function Na(){var e,n;const t={};if(x.value&&(t.channel_code=x.value),(e=Y.value)!=null&&e[0]&&((n=Y.value)!=null&&n[1]))t.start_date=Y.value[0],t.end_date=Y.value[1];else{const s=at(new Date);t.start_date=s,t.end_date=s}return t}function Ot(t){return Number(t??0).toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})}function Sa(t){const e=Ce.value,n=[];return t.columns.forEach((s,d)=>{if(d===0){n[d]="合计";return}switch(s.property){case"system_prescription_count":n[d]=String(e.system_prescription_count??0);break;case"manual_prescription_count":n[d]=String(e.manual_prescription_count??0);break;case"deal_amount":n[d]=`¥ ${Ot(e.deal_amount)}`;break;case"deal_order_count":n[d]=String(e.deal_order_count??0);break;case"appointment_completed":n[d]=String(e.appointment_completed??0);break;case"appointment_missed":n[d]=String(e.appointment_missed??0);break;case"appointment_cancelled":n[d]=String(e.appointment_cancelled??0);break;default:n[d]=""}}),n}async function It(){De.value=!0;try{const t=await Xn(Na());U.value=(t==null?void 0:t.rows)??[],Ce.value=(t==null?void 0:t.total)??{},t!=null&&t.start_date&&(t!=null&&t.end_date)&&(Je.value={start:t.start_date,end:t.end_date})}catch{U.value=[],Ce.value={},Je.value=null}finally{De.value=!1}}const te=v(!1),ce=v(!1),Ve=v(""),Fe=v(""),_e=v([]),Xe=v(0),X=v(1),Qe=v(15),G=v("channel"),H=v(null),Ee=v(null),ae=v(null),Mt=z(()=>{const t=ae.value;if(!t)return null;const e=t.stats_order_amount_performance??t.stats_order_amount_not_cancelled;if(e==null||e==="")return null;const n=Number(e);return Number.isFinite(n)?n:null}),Tt=z(()=>{const t=ae.value;if(!t||t.stats_yeji_consult_count===void 0||t.stats_yeji_consult_count===null)return null;const e=Number(t.stats_yeji_consult_count);return Number.isFinite(e)?e:null}),Da=z(()=>_e.value.reduce((t,e)=>t+Number(e.amount??0),0)),Vt=z(()=>!!x.value&&te.value),ht=z(()=>{var e;const t=x.value;if(!t)return"";for(const n of He.value){const s=(e=n.channels)==null?void 0:e.find(d=>d.channel_code===t);if(s!=null&&s.channel_name)return String(s.channel_name)}return t}),Ca=z(()=>{const t=H.value;return t&&G.value==="total"?Number.isFinite(t.channelAmount)?t.channelAmount:null:Mt.value}),Be=v(null),Ze=v(!1);function La(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function za(t){const[e,n]=t.split("-").map(Number);return new Date(e,n,0).getDate()}async function $a(){var t,e,n,s;Ze.value=!0,Be.value=null;try{let d=function(f,C=0){const L=[];for(const $ of f??[])L.push({node:$,depth:C}),L.push(...d($.children??[],C+1));return L},b=function(f){const C=ye.value.find(q=>Number(q.id)===f);if(!C)return"";const L=Number(C.pid);if(!L)return"";const $=ye.value.find(q=>Number(q.id)===L);return $!=null&&$.name?String($.name):""},g=function(f){const C=[],L=[f];for(;L.length;){const $=L.shift();for(const q of ye.value)Number(q.pid)===$&&(C.push(q.id),L.push(q.id))}return C},k=function(f,C){const L=new Map;for(const $ of(f==null?void 0:f.rows)??[])L.set(Number($.dept_id),Number($[C]??0));return L};const B=La(),M=await sl({year_month:B}),p=(M==null?void 0:M.rows)??[];if(!p.length)return;const R=d(p).filter(f=>f.depth>=1&&Number(f.node.target_amount)>0).map(f=>f.node);if(!R.length)return;const Q=new Set,O=R.map(f=>{const C=Number(f.dept_id),L=g(C),$=L.length?L:[C];return $.forEach(q=>Q.add(q)),{dept_id:C,dept_name:String(f.dept_name),target_amount:Number(f.target_amount),totalIds:$}});if(!Q.size)return;const ze=He.value.flatMap(f=>f.channels),W=(t=ze.find(f=>f.channel_name.includes("自媒体1")))==null?void 0:t.channel_code,ve=(e=ze.find(f=>f.channel_name.includes("自媒体3")))==null?void 0:e.channel_code,$e=(n=ze.find(f=>f.channel_name.includes("自媒体4")))==null?void 0:n.channel_code,Ae=Array.from(Q).join(","),[fe,F,l,h]=await Promise.all([Ue({dept_ids:Ae}),W?Ue({dept_ids:Ae,channel_code:W}):Promise.resolve(null),ve?Ue({dept_ids:Ae,channel_code:ve}):Promise.resolve(null),$e?Ue({dept_ids:Ae,channel_code:$e}):Promise.resolve(null)]),m=f=>{var C;return((f==null?void 0:f.tables)??[]).find(L=>String(L.label).includes("月"))??((C=f==null?void 0:f.tables)==null?void 0:C[0])},T=f=>{var C,L;return((f==null?void 0:f.tables)??[]).find($=>String($.label).includes("昨"))??((L=f==null?void 0:f.tables)==null?void 0:L[((C=f==null?void 0:f.tables)==null?void 0:C.length)-1])},la=k(m(fe),"performance_amount"),gn=k(T(fe),"performance_amount"),oa=F?k(m(F),"completed_performance_amount"):null,sa=l?k(m(l),"completed_performance_amount"):null,ia=h?k(m(h),"completed_performance_amount"):null,Ye=(f,C)=>C.reduce((L,$)=>L+(f.get($)??0),0),xt=new Date,bn=za(B),wn=xt.getDate(),kn=O.map(f=>{const C=Ye(la,f.totalIds),L=Ye(gn,f.totalIds),$=oa?Ye(oa,f.totalIds):null,q=sa?Ye(sa,f.totalIds):null,ra=ia?Ye(ia,f.totalIds):null,Nt=q!==null||ra!==null?(q??0)+(ra??0):null,Sn=Math.round(f.target_amount*(wn/bn)*100)/100,Dn=f.target_amount>0?C/f.target_amount:null;return{dept_id:f.dept_id,dept_name:f.dept_name,parent_dept_name:b(f.dept_id),target_amount:f.target_amount,total_amount:C,yesterday_amount:L,douyin_amount:$&&$>0?$:null,tuifen_amount:Nt&&Nt>0?Nt:null,target_progress:Sn,completion_rate:Dn}}),jn=((s=p[0])==null?void 0:s.dept_name)??"",xn=xt.getMonth()+1,Nn=xt.getDate();Be.value={title:`${jn}诊金-${xn}.${Nn}`,sections:kn}}catch{}finally{Ze.value=!1}}const Aa=z(()=>{var e;const t=(e=N.value)==null?void 0:e.leaderboards;return t?t.filter(n=>n.rows.length>0).length:0}),Ft=[{text:"昨天",value:()=>{const t=new Date;return t.setDate(t.getDate()-1),[t,t]}},{text:"最近七天",value:()=>{const t=new Date,e=new Date;return e.setDate(e.getDate()-6),[e,t]}},{text:"本月",value:()=>{const t=new Date;return[new Date(t.getFullYear(),t.getMonth(),1),t]}},{text:"今日",value:()=>{const t=new Date;return[t,t]}},{text:"本周",value:()=>{const t=new Date,e=new Date,n=e.getDay()||7;return e.setDate(e.getDate()-(n-1)),[e,t]}},{text:"上月",value:()=>{const t=new Date,e=new Date(t.getFullYear(),t.getMonth()-1,1),n=new Date(t.getFullYear(),t.getMonth(),0);return[e,n]}}];function Ra(t){const e=t.value();Y.value=[at(e[0]),at(e[1])],Le()}async function Pa(){lt.value=!0;try{const t=await Qn();ye.value=(t||[]).sort((e,n)=>{const s=e.name.includes("中心")?-1:1,d=n.name.includes("中心")?-1:1;return s!==d?s-d:e.id-n.id})}catch{}finally{lt.value=!1}}async function Oa(){ot.value=!0;try{const t=await Zn(),e=(t==null?void 0:t.groups)||[];He.value=e}catch{}finally{ot.value=!1}}async function Et(t){oe.value=!0;try{const e={start_date:t.start,end_date:t.end};A.value.length>0&&(e.dept_ids=A.value.join(",")),x.value&&(e.channel_code=x.value);const n=await al(e);N.value={start_date:n.start_date,end_date:n.end_date,channel_code:n.channel_code||"",channel_name:n.channel_name||"",channel_filter_note:n.channel_filter_note||"",range_note:n.range_note||"",leaderboards:n.leaderboards||[]}}catch{N.value=null}finally{oe.value=!1}}async function Le(){le.value=!0,N.value=null;try{const t={};if(A.value.length>0&&(t.dept_ids=A.value.join(",")),x.value&&(t.channel_code=x.value),Y.value&&Y.value[0]&&Y.value[1]){const[s,d]=Y.value,b={...t,start_date:s,end_date:d},g=await el(b);ie.value=[{label:s===d?s:`${s} ~ ${d}`,start_date:g.start_date,end_date:g.end_date,channel_code:g.channel_code||"",channel_name:g.channel_name||"",channel_group:g.channel_group||"",channel_filter_note:g.channel_filter_note||"",rows:g.rows||[],total:g.total}],await Et({start:g.start_date,end:g.end_date});return}const e=await Ue(t);ie.value=((e==null?void 0:e.tables)||[]).map(s=>({label:s.label,start_date:s.start_date,end_date:s.end_date,channel_code:s.channel_code||"",channel_name:s.channel_name||"",channel_group:s.channel_group||"",channel_filter_note:s.channel_filter_note||"",rows:s.rows||[],total:s.total}));const n=at(new Date);await Et({start:n,end:n})}catch(t){Re.error((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"加载失败")}finally{le.value=!1,Se.value?It():(U.value=[],Ce.value={},Je.value=null)}}function Ia(){A.value=[],Y.value=null,x.value="",Le()}function Ma(t){return t<=0?!1:ye.value.some(e=>Number(e.pid)===t)}function Ta(t){return{1:"待双审通过",2:"待发货",3:"已完成",4:"已取消",5:"已发货",6:"已签收",7:"进行中",8:"暂不制药",9:"拒收",10:"退款",11:"保留药方",12:"制药缓发"}[Number(t)]??"—"}function et(t){return t==null||!Number.isFinite(Number(t))?"—":Number(t).toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})}function Va(t){return(X.value-1)*Qe.value+t+1}function Fa(t){const e=(t==null?void 0:t.appointment_date)!=null&&String(t.appointment_date)!==""?String(t.appointment_date):"",n=(t==null?void 0:t.period)!=null&&String(t.period)!==""?String(t.period):"",s=(t==null?void 0:t.appointment_time)!=null&&String(t.appointment_time)!==""?String(t.appointment_time):"",d=[n,s].filter(Boolean).join(" ");return e&&d?`${e} ${d}`:e||d||"—"}function Bt(t){if(!t)return"";const e=t.channel_dict_value;if(e!=null&&e!==""){const d=Number(e);if(Number.isFinite(d))return String(Math.trunc(d))}const n=t.channel_source;if(n==null)return"";const s=String(n).trim();return s===""||!/^\d+$/.test(s)?"":String(parseInt(s,10))}function Ea(t){if(t==null||t==="")return"—";const e=Number(t);if(Number.isFinite(e)&&e>=1e9&&e<1e15){const s=e<1e12?e*1e3:e,d=new Date(s);if(!Number.isNaN(d.getTime())){const b=d.getFullYear(),g=String(d.getMonth()+1).padStart(2,"0"),k=String(d.getDate()).padStart(2,"0"),B=String(d.getHours()).padStart(2,"0"),M=String(d.getMinutes()).padStart(2,"0");return`${b}-${g}-${k} ${B}:${M}`}}const n=String(t);return n.length>=16?n.slice(0,16):n}function Yt(){const t=Ee.value;if(!t)return null;const e={start_time:`${t.start} 00:00:00`,end_time:`${t.end} 23:59:59`,exclude_fulfillment_cancelled:1,yeji_order_drawer:1};return t.mode==="dept"?(e.assistant_dept_id=t.deptId,t.yejiTableRowDeptIds&&t.yejiTableRowDeptIds.length>0&&(e.yeji_table_row_dept_ids=t.yejiTableRowDeptIds.join(",")),A.value.length>0&&(e.dept_ids=A.value.join(","))):(e.assistant_id=t.assistantId,t.erCenterRevisitSlot!==void 0&&(e.yeji_er_center_revisit_only=1,e.yeji_er_center_revisit_slot=t.erCenterRevisitSlot)),x.value&&te.value&&G.value==="channel"&&(e.channel_code=x.value),e}async function Ba(){const t=Yt();if(!t||!x.value)return;const e={...t,channel_code:x.value,page_no:1,page_size:1};try{const n=await da(e),s=n!=null&&n.extend&&typeof n.extend=="object"?n.extend:null;s&&s.stats_yeji_drawer_total_performance_amount!=null&&(H.value={totalAmount:Number(s.stats_yeji_drawer_total_performance_amount),totalOrderCount:Number(s.stats_yeji_drawer_total_performance_order_count??0),channelAmount:Number(s.stats_order_amount_performance??0),channelOrderCount:Number((n==null?void 0:n.count)??0)})}catch{}}async function pe(){const t=Yt();if(t){x.value&&G.value==="total"&&(H.value=null),ce.value=!0;try{const e={...t,page_no:X.value,page_size:Qe.value},n=await da(e);_e.value=Array.isArray(n==null?void 0:n.lists)?n.lists:[],Xe.value=Number((n==null?void 0:n.count)??0),ae.value=n!=null&&n.extend&&typeof n.extend=="object"?n.extend:null,x.value&&G.value==="channel"&&ae.value&&ae.value.stats_yeji_drawer_total_performance_amount!=null&&(H.value={totalAmount:Number(ae.value.stats_yeji_drawer_total_performance_amount),totalOrderCount:Number(ae.value.stats_yeji_drawer_total_performance_order_count??0),channelAmount:Number(ae.value.stats_order_amount_performance??0),channelOrderCount:Number((n==null?void 0:n.count)??0)}),x.value&&te.value&&G.value==="total"&&await Ba()}catch(e){Re.error((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"加载业务订单失败"),_e.value=[],Xe.value=0,ae.value=null}finally{ce.value=!1}}}function Ut(t,e,n){const s=!!(x.value&&t.channel_name);G.value=s?(n==null?void 0:n.listTab)??"channel":"channel",H.value=null,Ee.value={mode:"dept",deptId:e.dept_id,deptName:e.dept_name,start:t.start_date,end:t.end_date,yejiTableRowDeptIds:t.rows.map(d=>d.dept_id).filter(d=>typeof d=="number"&&d>0)},Ve.value=`业务订单 · ${e.dept_name}`,Fe.value=`创建时间:${t.start_date} ~ ${t.end_date} · 与「接诊诊单」同口径:**创建人**人事部门优先,无创建人则诊单医助;同表多行间取最深归属 · 不含履约已取消`,X.value=1,te.value=!0,pe()}function Ya(t,e,n){const s=!!(x.value&&t.channel_name);G.value=s?n:"channel",H.value=null,Ee.value={mode:"dept",deptId:e,deptName:"当前展示合计",start:t.start_date,end:t.end_date,yejiTableRowDeptIds:t.rows.map(d=>d.dept_id).filter(d=>typeof d=="number"&&d>0)},Ve.value="业务订单 · 当前展示合计",Fe.value=`创建时间:${t.start_date} ~ ${t.end_date} · 已选展示部门 1 个根节点(含其下全部展示行)· 不含履约已取消`,X.value=1,te.value=!0,pe()}function gt(t,e,n){return!(me(e)||e.dept_id<=0||n==="channel"&&!t.channel_name)}function bt(t,e){return!(A.value.length!==1||e==="channel"&&!t.channel_name)}function Ht(t,e,n){if(!gt(t,e,n))return;Ut(t,e,{listTab:n==="total"?"total":"channel"})}function Wt(t,e){if(!bt(t,e))return;const n=A.value[0];if(!n)return;Ya(t,n,e==="total"?"total":"channel")}function Ua(t,e,n){G.value="channel",H.value=null,Ee.value={mode:"assistant",assistantId:t.admin_id,assistantName:t.name,start:e,end:n},Ve.value=`业务订单 · ${t.name}`,Fe.value=`创建时间:${e} ~ ${n} · 诊单医助 · 不含履约已取消`,X.value=1,te.value=!0,pe()}function wt(t,e,n,s){G.value="channel",H.value=null,Ee.value={mode:"assistant",assistantId:t.admin_id,assistantName:t.name,start:e,end:n,erCenterRevisitSlot:s};const d=s===0?"复诊合计":We(s);Ve.value=`业务订单 · ${t.name} · ${d}`,Fe.value=`创建时间:${e} ~ ${n} · 诊单医助 · 仅二中心复诊口径 · ${d} · 不含履约已取消`,X.value=1,te.value=!0,pe()}function Ha(t){if(!t||t.admin_id<=0||!N.value||Number(t.revisit_count??0)<=0)return;const{start_date:e,end_date:n}=N.value;wt({admin_id:t.admin_id,name:t.name},e,n,0)}function Wa(t,e){if(!t||t.admin_id<=0||!N.value||ee(t,e)<=0)return;const{start_date:n,end_date:s}=N.value;wt({admin_id:t.admin_id,name:t.name},n,s,e)}function qa(){X.value=1,pe()}function Ga(t){X.value=t,pe()}function Ja(t){Qe.value=t,X.value=1,pe()}function me(t){return t.dept_id<=0&&t.dept_name==="未归属中心"}function Ka(t,e){e.dept_id<=0||me(e)||Number(e.revisit_count??0)<=0||Gt(t,e,0)}function Xa(t,e,n){e.dept_id<=0||me(e)||ee(e,n)<=0||Gt(t,e,n)}function qt(t){const e=Lt.value;!e||Number(t.order_count)<=0||wt({admin_id:t.admin_id,name:t.name},e.start,e.end,e.revisitSlot)}async function Gt(t,e,n){const s=n===0?"复诊合计":We(n);Ct.value=`${e.dept_name} · ${s} · ${t.start_date} ~ ${t.end_date}`,Lt.value={start:t.start_date,end:t.end_date,revisitSlot:n},Oe.value="",we.value=[],dt.value=!0,be.value=!0;try{const d={start_date:t.start_date,end_date:t.end_date,dept_id:e.dept_id,revisit_slot:n};A.value.length>0&&(d.dept_ids=A.value.join(",")),x.value&&(d.channel_code=x.value);const b=await tl(d);we.value=Array.isArray(b==null?void 0:b.rows)?b.rows:[],Oe.value=typeof(b==null?void 0:b.note)=="string"?b.note:""}catch(d){Re.error((d==null?void 0:d.msg)||(d==null?void 0:d.message)||"加载复诊拆解失败"),we.value=[],Oe.value=""}finally{be.value=!1}}function Jt(t){const e=[`区间:${t.start_date} ~ ${t.end_date}`];return x.value&&e.push(`渠道:${t.channel_name||x.value}`),A.value.length>0&&e.push(`已选展示部门 ${A.value.length} 个`),e.join(" · ")}async function Qa(t){Dt.value=Jt(t),Pe.value="",ge.value=[],rt.value=!0,he.value=!0;try{const e={start_date:t.start_date,end_date:t.end_date};A.value.length>0&&(e.dept_ids=A.value.join(",")),x.value&&(e.channel_code=x.value);const n=await nl(e);ge.value=Array.isArray(n==null?void 0:n.rows)?n.rows:[],Pe.value=typeof(n==null?void 0:n.note)=="string"?n.note:""}catch(e){Re.error((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"加载未归属拆解失败"),ge.value=[],Pe.value=""}finally{he.value=!1}}function Za(t,e,n){n.dept_id<=0||Number(n.lead_count)<=0||(t.stopPropagation(),en(e,n))}async function kt(){const t=$t.value;if(!t)return;const{tb:e,row:n}=t;re.value=!0;try{const s={start_date:e.start_date,end_date:e.end_date,dept_id:n.dept_id,page:Te.value,page_size:qe.value};A.value.length>0&&(s.dept_ids=A.value.join(",")),x.value&&(s.channel_code=x.value);const d=await ll(s);ke.value=Array.isArray(d==null?void 0:d.lists)?d.lists:[],Me.value=Number((d==null?void 0:d.count)??0),Ie.value=typeof(d==null?void 0:d.note)=="string"?d.note:""}catch(s){Re.error((s==null?void 0:s.msg)||(s==null?void 0:s.message)||"加载进线明细失败"),ke.value=[],Me.value=0,Ie.value=""}finally{re.value=!1}}async function en(t,e){$t.value={tb:t,row:e},zt.value=`${e.dept_name} · ${Jt(t)}`,Ie.value="",ke.value=[],Me.value=0,Te.value=1,qe.value=20,ut.value=!0,await kt()}function tn(t){Te.value=t,kt()}function an(t){qe.value=t,Te.value=1,kt()}function nn(t){return(ue.value-1)*Ne.value+t+1}function Kt(t){return me(t)?!0:t.dept_id>0}async function tt(){const t=_t.value;if(t){de.value=!0;try{const e={start_date:t.start_date,end_date:t.end_date,page:ue.value,page_size:Ne.value};t.mode==="dept"?e.dept_id=t.dept_id:e.assistant_id=t.assistant_id,A.value.length>0&&(e.dept_ids=A.value.join(",")),x.value&&(e.channel_code=x.value);const n=await ol(e);se.value=Array.isArray(n==null?void 0:n.lists)?n.lists:[],xe.value=Number((n==null?void 0:n.count)??0),je.value=typeof(n==null?void 0:n.note)=="string"?n.note:""}catch(e){Re.error((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"加载挂号明细失败"),se.value=[],xe.value=0,je.value=""}finally{de.value=!1}}}function ln(t){if(!t||t.admin_id<=0||!N.value||Number(t.appointment_count??0)<=0)return;const e=N.value;_t.value={mode:"assistant",assistant_id:t.admin_id,name:t.name,start_date:e.start_date,end_date:e.end_date},ct.value=`${t.name} · 医助 · ${e.start_date} ~ ${e.end_date}`,je.value="",se.value=[],xe.value=0,ue.value=1,Ne.value=20,Ge.value=!0,tt()}function on(t,e){!Kt(e)||Number(e.appointment_booked_count??0)<=0||(_t.value={mode:"dept",dept_id:e.dept_id,dept_name:e.dept_name,start_date:t.start_date,end_date:t.end_date},ct.value=`${e.dept_name} · ${t.start_date} ~ ${t.end_date}`,je.value="",se.value=[],xe.value=0,ue.value=1,Ne.value=20,Ge.value=!0,tt())}function sn(t){ue.value=t,tt()}function rn(t){Ne.value=t,ue.value=1,tt()}function dn(t,e){if(me(e)){Qa(t);return}if(!(e.dept_id<=0)){if(Ma(e.dept_id)){A.value=[e.dept_id],Le();return}Ut(t,e)}}function un(t){if(!t||t.admin_id<=0||!N.value)return;const{start_date:e,end_date:n}=N.value;Ua(t,e,n)}function Xt(t){const e=t.channel_name?` · ${t.channel_name}`:"";return`${t.label}${e}`}function cn(t){const e=t.rows.filter(g=>g.dept_id>0),n=e.map(g=>g.dept_name.length>10?`${g.dept_name.slice(0,10)}…`:g.dept_name),s=["#64748b","#38bdf8","#6366f1"],d=[{name:"进线",type:"bar",data:e.map(g=>g.lead_count),yAxisIndex:0,barMaxWidth:16},{name:"接诊",type:"bar",data:e.map(g=>g.consult_count),yAxisIndex:0,barMaxWidth:16},{name:"成交单",type:"bar",data:e.map(g=>g.deal_order_count),yAxisIndex:0,barMaxWidth:16},{name:"合计业绩",type:"bar",data:e.map(g=>g.performance_amount),yAxisIndex:1,barMaxWidth:14,itemStyle:{color:"#d97706"}}];t.channel_name&&d.push({name:`${t.channel_name}业绩`,type:"bar",data:e.map(g=>g.completed_performance_amount),yAxisIndex:1,barMaxWidth:14,itemStyle:{color:"#0d9488"}});const b=e.length>10;return{color:[...s,"#d97706","#0d9488"],tooltip:{trigger:"axis",axisPointer:{type:"cross"}},legend:{top:8,type:"scroll",textStyle:{fontSize:11}},grid:{left:52,right:52,top:48,bottom:b?56:28,containLabel:!1},dataZoom:b?[{type:"slider",bottom:4,start:0,end:Math.min(100,Math.ceil(12/Math.max(e.length,1)*100))}]:[],xAxis:{type:"category",data:n,axisLabel:{rotate:n.length>8?28:0,fontSize:10}},yAxis:[{type:"value",name:"数量",splitLine:{lineStyle:{type:"dashed",opacity:.55}}},{type:"value",name:"金额",splitLine:{show:!1}}],series:d}}function _n(t,e){const n=[...t.rows].sort((s,d)=>Number(d.fee_amount)-Number(s.fee_amount)).slice(0,15);return{color:["#2563eb"],tooltip:{trigger:"axis",axisPointer:{type:"shadow"},valueFormatter:s=>`${Number(s).toLocaleString("zh-CN")} 元`},grid:{left:8,right:20,top:12,bottom:8,containLabel:!0},xAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.6}}},yAxis:{type:"category",data:n.map(s=>s.name.length>8?`${s.name.slice(0,8)}…`:s.name).reverse(),axisLabel:{fontSize:11}},series:[{name:"诊金",type:"bar",data:n.map(s=>Number(s.fee_amount??0)).reverse(),barMaxWidth:20,itemStyle:{borderRadius:[0,6,6,0]}}]}}function Qt(t){return t.rows.some(e=>Number(e.fee_amount)>0)}function pn(t,e){const s=[...t.rows].filter(d=>Number(d.fee_amount)>0).sort((d,b)=>Number(b.fee_amount)-Number(d.fee_amount)).slice(0,10).map(d=>({name:d.name.length>6?`${d.name.slice(0,6)}…`:d.name,value:Number(d.fee_amount)}));return{color:["#2563eb","#0d9488","#d97706","#7c3aed","#64748b","#0891b2","#65a30d","#c026d3","#ea580c","#4f46e5"],tooltip:{trigger:"item",formatter:"{b}: {c} 元 ({d}%)"},legend:{type:"scroll",bottom:0,textStyle:{fontSize:9}},series:[{name:"诊金",type:"pie",radius:["38%","64%"],center:["50%","42%"],data:s,itemStyle:{borderRadius:5,borderColor:"#fff",borderWidth:2},label:{formatter:`{b}
+{d}%`,fontSize:10}}]}}function Zt(t){return Number(t.total.lead_count)+Number(t.total.consult_count)+Number(t.total.deal_order_count)>0}function mn(t){const e=Number(t.total.lead_count??0),n=Number(t.total.consult_count??0),s=Number(t.total.deal_order_count??0);return{tooltip:{trigger:"item",formatter:"{b}: {c}"},color:["#2563eb","#38bdf8","#0d9488"],series:[{type:"funnel",left:"8%",width:"84%",minSize:"12%",sort:"none",gap:6,label:{show:!0,position:"inside",formatter:`{b}
+{c}`,fontSize:11},data:[{value:e,name:"进线"},{value:n,name:"接诊"},{value:s,name:"成交单"}]}]}}function ea(t){return t.rows.some(e=>e.dept_id>0&&Number(e.performance_amount)>0)}function vn(t){const e=t.rows.filter(d=>d.dept_id>0&&Number(d.performance_amount)>0).sort((d,b)=>Number(b.performance_amount)-Number(d.performance_amount));if(!e.length)return{series:[{type:"pie",data:[]}]};const s=e.slice(0,10).map(d=>({name:d.dept_name.length>8?`${d.dept_name.slice(0,8)}…`:d.dept_name,value:Number(d.performance_amount)}));if(e.length>10){const d=e.slice(10).reduce((b,g)=>b+Number(g.performance_amount),0);d>0&&s.push({name:"其它",value:d})}return{color:["#2563eb","#0d9488","#d97706","#7c3aed","#64748b","#0891b2","#65a30d","#c026d3","#ea580c","#4f46e5","#94a3b8"],tooltip:{trigger:"item",formatter:"{b}
{c} 元({d}%)"},legend:{type:"scroll",bottom:0,textStyle:{fontSize:10}},series:[{type:"pie",radius:["36%","62%"],center:["50%","44%"],data:s,itemStyle:{borderRadius:5,borderColor:"#fff",borderWidth:2},label:{formatter:`{b}
+{d}%`,fontSize:10}}]}}function jt(t){return{perf:"渠道业绩",deal:"渠道成交",aov:"渠道客单"}[t]??t}function S(t){return t==null||t===""?"0":Number(t).toLocaleString("en-US")}function I(t){return t==null||t===""?"0.0":Number(t).toLocaleString("en-US",{minimumFractionDigits:1,maximumFractionDigits:1})}function ne(t){if(t==null||t==="")return"0";const e=Number(t);return Number.isFinite(e)?Math.round(e).toLocaleString("zh-CN"):"0"}function ta(t){return t==null||t===""?"—":Number(t).toLocaleString("en-US",{minimumFractionDigits:1,maximumFractionDigits:1})}function aa(t){return t==null||t===""?"—":Number(t).toFixed(1)}function na(t){if(t==null||t==="")return"";const e=Number(t);return e>=1?"roi-good":e>=.8?"roi-mid":"roi-bad"}function fn(t){return t===null?"—":(t*100).toFixed(2)+"%"}function yn(t){return t===null?"":t>=1?"tp-good":t>=.8?"tp-mid":"tp-bad"}function hn(t){return t>=1e4?(t/1e4).toFixed(1)+"万":String(t)}function at(t){const e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0");return`${e}-${n}-${s}`}return ul(async()=>{await Promise.all([Pa(),Oa()]),Le(),$a()}),(t,e)=>{const n=Ln,s=zn,d=Cn,b=$n,g=Rn,k=On,B=Pn,M=In,p=Fn,P=Vn,R=En,Q=Tn,O=Bn,ze=Mn,W=Un,ve=Yn,$e=Hn,Ae=Wn,fe=qn,F=An;return o(),u("div",cl,[e[140]||(e[140]=a("header",{class:"yeji-masthead"},[a("div",{class:"yeji-masthead__inner"},[a("h1",{class:"yeji-masthead__title"},"业绩看板"),a("p",{class:"yeji-masthead__desc"},"渠道 · 部门 · 日期维度的业绩分析")])],-1)),r(M,{class:"yeji-panel filter-card",shadow:"never"},{default:_(()=>[a("div",_l,[a("div",pl,[a("div",ml,[e[10]||(e[10]=a("span",{class:"lbl"},"渠道来源",-1)),r(d,{modelValue:x.value,"onUpdate:modelValue":e[0]||(e[0]=l=>x.value=l),filterable:"",placeholder:"渠道筛选",class:"filter-select filter-select--channel",loading:ot.value,onChange:Le},{default:_(()=>[r(n,{label:"全部",value:""}),(o(!0),u(w,null,V(He.value,l=>(o(),j(s,{key:l.group_name,label:l.group_name},{default:_(()=>[(o(!0),u(w,null,V(l.channels,h=>(o(),j(n,{key:h.channel_code,label:h.channel_name,value:h.channel_code},{default:_(()=>[a("div",vl,[a("span",fl,i(h.channel_name),1),a("span",yl,i(h.customer_count>0?h.customer_count:""),1)])]),_:2},1032,["label","value"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","loading"])]),a("div",hl,[e[11]||(e[11]=a("span",{class:"lbl"},"展示部门",-1)),K((o(),u("div",gl,[r(b,{modelValue:A.value,"onUpdate:modelValue":e[1]||(e[1]=l=>A.value=l),data:pa.value,multiple:"","collapse-tags":"","collapse-tags-tooltip":"",filterable:"","check-strictly":"","render-after-expand":!1,"default-expand-all":!0,placeholder:"默认:所有「中心」部门",class:"filter-dept-tree-select","node-key":"id",props:ca},null,8,["modelValue","data"])])),[[F,lt.value]])]),a("div",bl,[e[12]||(e[12]=a("span",{class:"lbl"},"日期范围",-1)),r(g,{modelValue:Y.value,"onUpdate:modelValue":e[2]||(e[2]=l=>Y.value=l),type:"daterange","value-format":"YYYY-MM-DD","start-placeholder":"开始","end-placeholder":"结束",clearable:!0,shortcuts:Ft,class:"filter-date-picker"},null,8,["modelValue"])]),a("div",wl,[r(B,{type:"primary",class:"filter-btn filter-btn--query",loading:le.value,onClick:Le},{default:_(()=>[r(k,{class:"filter-btn__icon"},{default:_(()=>[r(D(Jn))]),_:1}),e[13]||(e[13]=c(" 查询 ",-1))]),_:1},8,["loading"]),r(B,{class:"filter-btn filter-btn--reset",disabled:le.value,onClick:Ia},{default:_(()=>[r(k,{class:"filter-btn__icon"},{default:_(()=>[r(D(Kn))]),_:1}),e[14]||(e[14]=c(" 重置 ",-1))]),_:1},8,["disabled"])])]),a("div",kl,[e[15]||(e[15]=a("span",{class:"filter-quick__title"},"快捷日期",-1)),a("div",jl,[(o(),u(w,null,V(Ft,l=>a("button",{key:l.text,type:"button",class:"date-pill",onClick:h=>Ra(l)},i(l.text),9,xl)),64))])])])]),_:1}),r(M,{class:"yeji-panel yeji-main-tabs-card",shadow:"never"},{default:_(()=>[e[115]||(e[115]=a("div",{class:"yeji-table-tabs-head"},[a("span",{class:"yeji-table-tabs-head__title"},"表格统计"),a("span",{class:"yeji-table-tabs-head__hint"},"列较多时可横向滚动浏览;「部门 / 排名」列在滚动时保持固定。")],-1)),r(ze,{modelValue:At.value,"onUpdate:modelValue":e[3]||(e[3]=l=>At.value=l),class:"yeji-view-tabs"},{default:_(()=>[r(Q,{label:"医生统计",name:"doctor",lazy:""},{default:_(()=>[Se.value?(o(),j(M,{key:0,class:"yeji-panel doctor-daily-card doctor-daily-card--nested",shadow:"never"},{header:_(()=>[a("div",Nl,[a("div",Sl,[e[16]||(e[16]=a("span",{class:"doctor-daily-card__title"},"医生明细",-1)),Ke.value?(o(),u("span",Dl,i(Ke.value),1)):y("",!0)]),a("div",Cl,[r(B,{type:"primary",size:"small",loading:De.value,onClick:It},{default:_(()=>[...e[17]||(e[17]=[c(" 刷新 ",-1)])]),_:1},8,["loading"])])])]),default:_(()=>[K((o(),j(P,{data:U.value,size:"small",border:"",stripe:"",class:"doctor-daily-table","show-summary":"","summary-method":Sa},{default:_(()=>[r(p,{prop:"doctor_name",label:"医生","min-width":"100",fixed:""}),r(p,{prop:"system_prescription_count",label:"系统开方","min-width":"88",align:"right"}),r(p,{prop:"manual_prescription_count",label:"手动开方","min-width":"88",align:"right"}),r(p,{prop:"deal_amount",label:"成交金额","min-width":"110",align:"right"},{default:_(({row:l})=>[c("¥ "+i(Ot(l.deal_amount)),1)]),_:1}),r(p,{prop:"deal_order_count",label:"接诊诊单","min-width":"88",align:"right"}),r(p,{prop:"appointment_completed",label:"挂号完成","min-width":"88",align:"right"}),r(p,{prop:"appointment_missed",label:"过号","min-width":"72",align:"right"}),r(p,{prop:"appointment_cancelled",label:"取消","min-width":"72",align:"right"})]),_:1},8,["data"])),[[F,De.value]])]),_:1})):(o(),j(R,{key:1,description:"当前账号无医生统计权限"}))]),_:1}),r(Q,{label:"医助排行榜",name:"leaderboard",lazy:""},{default:_(()=>[N.value||oe.value?K((o(),u("div",Ll,[N.value?(o(),u(w,{key:0},[a("p",zl,[c(i(N.value.range_note)+" ",1),a("span",$l,i(N.value.start_date)+" ~ "+i(N.value.end_date),1)]),a("div",Al,[(o(!0),u(w,null,V(N.value.leaderboards,l=>(o(),u(w,{key:l.dept_id},[l.rows.length>0?(o(),u("div",Rl,[a("div",Pl,[c(i(l.dept_name)+" · 医助排行榜 ",1),N.value.channel_name?(o(),u("span",Ol," ("+i(N.value.channel_name)+") ",1)):y("",!0)]),a("div",Il,[a("table",Ml,[a("thead",null,[a("tr",null,[e[19]||(e[19]=a("th",{class:"col-rank"},"排名",-1)),e[20]||(e[20]=a("th",{class:"col-abbr"},"部门",-1)),e[21]||(e[21]=a("th",{class:"col-name"},"姓名",-1)),e[22]||(e[22]=a("th",{class:"col-consult"},"接诊单数",-1)),e[23]||(e[23]=a("th",{class:"col-deal"},"接诊诊单",-1)),e[24]||(e[24]=a("th",{class:"col-assign"},"被指派数",-1)),e[25]||(e[25]=a("th",{class:"col-appointment"},"预约诊单",-1)),l.er_center_subtree?(o(),u(w,{key:0},[e[18]||(e[18]=a("th",{class:"col-revisit"},"复诊合计",-1)),(o(!0),u(w,null,V(St(l),h=>(o(),u("th",{key:"lbh-"+l.dept_id+"-"+h,class:"col-revisit-slot"},i(We(h)),1))),128))],64)):y("",!0),e[26]||(e[26]=a("th",null,"诊金",-1)),e[27]||(e[27]=a("th",null,[c("接诊率"),a("br"),a("span",{class:"th-sub"},"(元/进线)")],-1))])]),a("tbody",null,[(o(!0),u(w,null,V(l.rows,h=>(o(),u("tr",{key:h.admin_id,class:"yeji-row--action",onClick:m=>un(h)},[a("td",Vl,i(h.rank),1),a("td",Fl,i(h.dept_abbr),1),a("td",El,i(h.name),1),a("td",Bl,i(ne(h.consult_count)),1),a("td",Yl,i(ne(h.deal_order_count)),1),a("td",Ul,i(ne(h.assign_count??0)),1),a("td",{class:"col-appointment",onClick:J(m=>ln(h),["stop"])},[Number(h.appointment_count??0)>0?(o(),u("span",Wl,i(ne(h.appointment_count??0)),1)):(o(),u(w,{key:1},[c(i(ne(h.appointment_count??0)),1)],64))],8,Hl),l.er_center_subtree?(o(),u(w,{key:0},[a("td",{class:"col-revisit",onClick:J(m=>Ha(h),["stop"])},[Number(h.revisit_count??0)>0?(o(),u("span",Gl,i(ne(h.revisit_count??0)),1)):(o(),u(w,{key:1},[c(i(ne(h.revisit_count??0)),1)],64))],8,ql),(o(!0),u(w,null,V(St(l),m=>(o(),u("td",{key:"lbc-"+h.admin_id+"-"+m,class:"col-revisit-slot",onClick:J(T=>Wa(h,m),["stop"])},[ee(h,m)>0?(o(),u("span",Kl,i(ne(ee(h,m))),1)):(o(),u(w,{key:1},[c(i(ne(ee(h,m))),1)],64))],8,Jl))),128))],64)):y("",!0),a("td",null,i(I(h.fee_amount)),1),a("td",null,i(I(h.consult_rate)),1)],8,Tl))),128))])])]),a("div",Xl,[e[28]||(e[28]=a("span",null,"诊金单位:元 · 被指派数与部门业绩表同口径 · 接诊率 = 诊金 ÷ 进线(元/进线)",-1)),l.er_center_subtree?(o(),u("span",Ql," · 复诊列为二中心口径(同一诊单业务单序列第 2 笔起),点击数字查看对应业务订单 ")):y("",!0),e[29]||(e[29]=a("span",null," · 预约诊单:预约日期在统计区间内,状态含已预约/已完成/已过号(不含已取消),医助归属与接诊单数一致;各科组展示全部医助。 ",-1))])])):y("",!0)],64))),128))]),!oe.value&&Aa.value===0?(o(),u("div",Zl,[r(R,{description:"当前筛选下暂无医助排行数据"})])):y("",!0)],64)):y("",!0)])),[[F,oe.value]]):oe.value?y("",!0):(o(),j(R,{key:1,class:"yeji-charts-empty",description:"当前筛选下暂无医助排行数据"}))]),_:1}),r(Q,{label:"甄养堂互联网医院诊金",name:"zyyt",lazy:""},{default:_(()=>[K((o(),u("div",eo,[!le.value&&ie.value.length===0?(o(),u("div",to,[r(R,{description:"暂无数据"})])):y("",!0),(o(!0),u(w,null,V(ie.value,(l,h)=>(o(),u("div",{key:h,class:"yeji-table"},[a("div",ao,i(Xt(l)),1),a("div",no,[a("table",lo,[a("thead",null,[a("tr",null,[e[107]||(e[107]=a("th",{class:"col-dept"},"部门",-1)),a("th",null,[e[36]||(e[36]=a("span",null,"进线数据",-1)),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[a("div",oo,[e[34]||(e[34]=c(" add_external_contact 事件数,按接待企微成员归属部门;定渠道时须客户带对应企微标签。",-1)),e[35]||(e[35]=a("br",null,null,-1)),l.channel_name?(o(),u(w,{key:0},[e[30]||(e[30]=a("b",null,"二中心及其组织下级",-1)),e[31]||(e[31]=c("(与部门 ErCenter 子树一致)在选定渠道下进线计 ",-1)),e[32]||(e[32]=a("b",null,"0",-1)),e[33]||(e[33]=c("。 ",-1))],64)):y("",!0)])]),default:_(()=>[r(k,{class:"col-info"},{default:_(()=>[r(D(E))]),_:1})]),_:2},1024)]),a("th",null,[e[52]||(e[52]=a("span",null,"被指派数",-1)),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[a("div",so,[e[44]||(e[44]=a("b",null,"tcm_diagnosis_assign_log",-1)),e[45]||(e[45]=c(" 行数(成功指派:",-1)),e[46]||(e[46]=a("b",null,"to_assistant_id > 0",-1)),e[47]||(e[47]=c("),**仅按 ",-1)),e[48]||(e[48]=a("b",null,"related_po_create_time",-1)),e[49]||(e[49]=c("** 落在所选区间内(与日志表快照一致;诊单手动指派已写入该字段)。按",-1)),e[50]||(e[50]=a("b",null,"被指派医助",-1)),e[51]||(e[51]=c("归属展示部门。",-1)),l.channel_name?(o(),u(w,{key:0},[c(" 选定渠道时收窄与「"+i(l.channel_name)+"」业绩同口径(标签诊单或 channels EXISTS)。",1),e[37]||(e[37]=a("br",null,null,-1)),e[38]||(e[38]=a("b",null,"二中心及其组织下级",-1)),e[39]||(e[39]=c("在选定渠道下本列计 ",-1)),e[40]||(e[40]=a("b",null,"0",-1)),e[41]||(e[41]=c("。 ",-1))],64)):(o(),u(w,{key:1},[e[42]||(e[42]=a("br",null,null,-1)),e[43]||(e[43]=c("未选渠道时不限客户来源,与「合计业绩」列渠道无关。",-1))],64))])]),default:_(()=>[r(k,{class:"col-info"},{default:_(()=>[r(D(E))]),_:1})]),_:2},1024)]),a("th",null,[e[54]||(e[54]=a("span",null,"复诊合计",-1)),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[...e[53]||(e[53]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[c(" 仅"),a("b",null,"名称含「二中心」"),c("的部门及其组织下级:与本表区间一致,按患者业务单 "),a("b",null,"create_time"),c(" 排序,"),a("b",null,"第 1 笔不计"),c(";第 2 笔起计入合计,并分列复诊2、复诊三…(含本部门及下级汇总)。订单条件同「合计业绩」列(非取消)。非二中心子树部门为 0。 ")],-1)])]),default:_(()=>[r(k,{class:"col-info"},{default:_(()=>[r(D(E))]),_:1})]),_:1})]),(o(!0),u(w,null,V(it.value,m=>(o(),u("th",{key:"yjv-h-"+m},[a("span",null,i(We(m)),1),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[a("div",io,[e[55]||(e[55]=c(" 该列统计区间内患者第 ",-1)),a("b",null,i(m),1),e[56]||(e[56]=c(" 笔业务单条数(第 1 笔初诊单列不计);归属与合计列相同。 ",-1))])]),default:_(()=>[r(k,{class:"col-info"},{default:_(()=>[r(D(E))]),_:1})]),_:2},1024)]))),128)),a("th",null,[e[58]||(e[58]=a("span",null,"合计业绩",-1)),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[...e[57]||(e[57]=[a("div",{style:{"max-width":"300px","line-height":"1.7","font-size":"12px"}},[c(" 按订单"),a("b",null,"创建时间"),c("统计(剔除履约已取消),金额与"),a("b",null,"接诊诊单"),c("列一致:"),a("b",null,"创建人"),c("人事部门优先,无创建人时回退诊单"),a("b",null,"医助"),c(";落在本展示行(含下级)即计入,同表多行命中时取最深的展示部门。"),a("br"),a("b",null,"不受渠道筛选影响"),c("。与侧栏按部门打开的业务订单列表可对齐。"),a("br"),c(" 点击金额可查看对应业务订单明细(侧栏默认「合计业绩」全量列表)。 ")],-1)])]),default:_(()=>[r(k,{class:"col-info"},{default:_(()=>[r(D(E))]),_:1})]),_:1})]),l.channel_name?(o(),u("th",ro,[a("span",uo,i(jt("perf")),1),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[a("div",co,[c(" 「"+i(l.channel_name)+"」渠道业绩(与卡片标题渠道一致)。与「处方订单列表」业绩",1),e[59]||(e[59]=a("b",null,"同口径",-1)),e[60]||(e[60]=c(":按订单 ",-1)),e[61]||(e[61]=a("b",null,"create_time",-1)),e[62]||(e[62]=c(" 归日,剔除履约已取消(4)。",-1)),e[63]||(e[63]=a("br",null,null,-1)),e[64]||(e[64]=c(" 渠道判定用 EXISTS:该患者有任一挂号 ",-1)),e[65]||(e[65]=a("b",null,"channels 命中字典 + status=3",-1)),e[66]||(e[66]=c("(不限挂号时点)。",-1)),e[67]||(e[67]=a("br",null,null,-1)),e[68]||(e[68]=c(" 点击金额可查看该部门本渠道订单明细(侧栏「渠道筛选」列表)。 ",-1))])]),default:_(()=>[r(k,{class:"col-info","aria-label":"说明"},{default:_(()=>[r(D(E))]),_:1})]),_:2},1024)])):y("",!0),a("th",null,[e[70]||(e[70]=a("span",null,"预约诊单",-1)),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[...e[69]||(e[69]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[c(" 已预约 / 已完成 / 已过号(不含已取消),按"),a("b",null,"预约日期"),c("落在区间内统计;部门归属医助优先,否则接诊医生;与"),a("b",null,"医助排行榜 · 预约诊单"),c("及明细弹窗同口径。"),a("br"),c(" 点击数字可查看每条挂号记录。 ")],-1)])]),default:_(()=>[r(k,{class:"col-info"},{default:_(()=>[r(D(E))]),_:1})]),_:1})]),a("th",null,[e[72]||(e[72]=a("span",null,"已完成挂号",-1)),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[...e[71]||(e[71]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[c(" 仅"),a("b",null,"已完成"),c("(status=3),与 admin「医生预约 / 已完成」列表计数条件一致(appointment_date、诊单未软删);部门归属医助优先,否则接诊医生。 ")],-1)])]),default:_(()=>[r(k,{class:"col-info"},{default:_(()=>[r(D(E))]),_:1})]),_:1})]),a("th",null,[e[74]||(e[74]=a("span",null,"接诊诊单",-1)),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[...e[73]||(e[73]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[a("b",null,"业务订单条数"),c("(非取消):订单 "),a("b",null,"create_time"),c(" 落入区间、"),a("b",null,"fulfillment_status ≠ 4"),c(";与列表筛选 "),a("b",null,"assistant_dept_id"),c(" 时一致——"),a("b",null,"创建人"),c("人事部门优先,无创建人则诊单 "),a("b",null,"医助"),c(";落在该部门子树即计入(表格多行命中时取最深的展示部门)。与侧栏勾选「与表格业绩对齐」时的集合可能略有差异。选定渠道时本列仍为全量。 ")],-1)])]),default:_(()=>[r(k,{class:"col-info"},{default:_(()=>[r(D(E))]),_:1})]),_:1})]),l.channel_name?(o(),u("th",_o,[a("span",po,i(jt("deal")),1),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[a("div",mo,[c(" 「"+i(l.channel_name)+"」渠道成交单数;与渠道业绩同源:区间内 ",1),e[75]||(e[75]=a("b",null,"非取消业务订单",-1)),e[76]||(e[76]=c(" 条数,按订单 ",-1)),e[77]||(e[77]=a("b",null,"create_time",-1)),e[78]||(e[78]=c(" 归日;渠道判定同业绩列。 ",-1))])]),default:_(()=>[r(k,{class:"col-info","aria-label":"说明"},{default:_(()=>[r(D(E))]),_:1})]),_:2},1024)])):y("",!0),l.channel_name?(o(),u("th",vo,[a("span",fo,i(jt("aov")),1),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[a("div",yo," 「"+i(l.channel_name)+"」渠道客单价 ≈ 渠道业绩 ÷ 渠道成交单。 ",1)]),default:_(()=>[r(k,{class:"col-info","aria-label":"说明"},{default:_(()=>[r(D(E))]),_:1})]),_:2},1024)])):y("",!0),a("th",null,[e[104]||(e[104]=a("span",null,"ROI",-1)),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[a("div",ho,[l.channel_name?(o(),u(w,{key:0},[e[79]||(e[79]=c(" 有渠道时:",-1)),e[80]||(e[80]=a("b",null,"合计行 ROI",-1)),e[81]||(e[81]=c(" = ",-1)),a("b",null,i(l.channel_name)+"业绩合计",1),e[82]||(e[82]=c("(与上表该渠道业绩列合计一致,",-1)),e[83]||(e[83]=a("b",null,"不含二中心及其组织下级",-1)),e[84]||(e[84]=c(")÷ ",-1)),e[85]||(e[85]=a("b",null,"投放成本合计",-1)),e[86]||(e[86]=c("。",-1)),e[87]||(e[87]=a("br",null,null,-1)),e[88]||(e[88]=c(" 部门行 ROI = 该部门 ",-1)),a("b",null,i(l.channel_name)+"业绩",1),e[89]||(e[89]=c(" ÷ 该部门 ",-1)),e[90]||(e[90]=a("b",null,"投放成本",-1)),e[91]||(e[91]=c(";",-1)),e[92]||(e[92]=a("b",null,"二中心子树",-1)),e[93]||(e[93]=c("部门该渠道业绩与进线为 0、投放成本分摊进线计 0,故无 ROI。与「合计业绩」列无关。 ",-1))],64)):(o(),u(w,{key:1},[e[94]||(e[94]=a("b",null,"合计行 ROI",-1)),e[95]||(e[95]=c(" = 全表业绩合计(",-1)),e[96]||(e[96]=a("b",null,"不含二中心子树",-1)),e[97]||(e[97]=c("各部门行业绩)÷ ",-1)),e[98]||(e[98]=a("b",null,"投放成本合计",-1)),e[99]||(e[99]=c(";",-1)),e[100]||(e[100]=a("br",null,null,-1)),e[101]||(e[101]=c(" 部门行 = 该部门「合计业绩」口径业绩 ÷ 该部门均摊投放成本;",-1)),e[102]||(e[102]=a("b",null,"二中心子树",-1)),e[103]||(e[103]=c("部门不参与成本分摊(进线占比计 0),故无 ROI。 ",-1))],64))])]),default:_(()=>[r(k,{class:"col-info"},{default:_(()=>[r(D(E))]),_:1})]),_:2},1024)]),a("th",null,[e[106]||(e[106]=a("span",null,"投放成本",-1)),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[...e[105]||(e[105]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[c(" 区间与渠道与账务表一致后得到"),a("b",null,"总投放成本"),c(";"),a("b",null,"单进线成本"),c(" = 总成本 ÷ 各展示部门"),a("b",null,"进线合计"),c(";"),a("br"),c(" 各部门行投放成本 = 单进线成本 × 该部门进线(四舍五入尾差并入进线最多的部门)。"),a("b",null,"二中心及其组织下级"),c("进线在分摊中计 "),a("b",null,"0"),c("(与 ROI 分子扣除范围一致)。 ")],-1)])]),default:_(()=>[r(k,{class:"col-info"},{default:_(()=>[r(D(E))]),_:1})]),_:1})])])]),a("tbody",null,[(o(!0),u(w,null,V(l.rows,m=>(o(),u("tr",{key:`${h}-${m.dept_id}-${m.dept_name}`,class:nt(["yeji-row--action",{"yeji-row--unassigned":me(m),"yeji-row--idle":m.dept_id<=0&&!me(m)}]),onClick:T=>dn(l,m)},[a("td",bo,i(m.dept_name),1),a("td",{onClick:T=>Za(T,l,m)},[m.dept_id>0&&Number(m.lead_count)>0?(o(),u("span",ko,i(S(m.lead_count)),1)):(o(),u(w,{key:1},[c(i(S(m.lead_count)),1)],64))],8,wo),a("td",null,i(S(m.assign_count??0)),1),a("td",{onClick:J(T=>Ka(l,m),["stop"])},[m.dept_id>0&&Number(m.revisit_count??0)>0?(o(),u("span",xo,i(S(m.revisit_count??0)),1)):(o(),u(w,{key:1},[c(i(S(m.revisit_count??0)),1)],64))],8,jo),(o(!0),u(w,null,V(it.value,T=>(o(),u("td",{key:"yjv-"+h+"-"+m.dept_id+"-"+T,onClick:J(la=>Xa(l,m,T),["stop"])},[m.dept_id>0&&ee(m,T)>0?(o(),u("span",So,i(S(ee(m,T))),1)):(o(),u(w,{key:1},[c(i(S(ee(m,T))),1)],64))],8,No))),128)),a("td",null,[gt(l,m,"total")?(o(),u("span",{key:0,class:"yeji-lead-cell--link",onClick:J(T=>Ht(l,m,"total"),["stop"])},i(I(m.performance_amount)),9,Do)):(o(),u(w,{key:1},[c(i(I(m.performance_amount)),1)],64))]),l.channel_name?(o(),u("td",Co,[gt(l,m,"channel")?(o(),u("span",{key:0,class:"yeji-lead-cell--link",onClick:J(T=>Ht(l,m,"channel"),["stop"])},i(I(m.completed_performance_amount)),9,Lo)):(o(),u(w,{key:1},[c(i(I(m.completed_performance_amount)),1)],64))])):y("",!0),a("td",{onClick:J(T=>on(l,m),["stop"])},[Kt(m)&&Number(m.appointment_booked_count??0)>0?(o(),u("span",$o,i(S(m.appointment_booked_count??0)),1)):(o(),u(w,{key:1},[c(i(S(m.appointment_booked_count??0)),1)],64))],8,zo),a("td",null,i(S(m.consult_count)),1),a("td",null,i(S(m.deal_order_count)),1),l.channel_name?(o(),u("td",Ao,i(S(m.channel_consult_count)),1)):y("",!0),l.channel_name?(o(),u("td",Ro,i(ta(m.channel_avg_price)),1)):y("",!0),a("td",{class:nt(na(m.roi))},i(aa(m.roi)),3),a("td",null,i(I(m.cost_amount)),1)],10,go))),128)),a("tr",Po,[e[108]||(e[108]=a("td",{class:"col-dept"},"合计",-1)),a("td",null,i(S(l.total.lead_count)),1),a("td",null,i(S(l.total.assign_count??0)),1),a("td",null,i(S(l.total.revisit_count??0)),1),(o(!0),u(w,null,V(it.value,m=>(o(),u("td",{key:"yjvt-"+h+"-"+m},i(S(ee(l.total,m))),1))),128)),a("td",null,[bt(l,"total")?(o(),u("span",{key:0,class:"yeji-lead-cell--link",onClick:J(m=>Wt(l,"total"),["stop"])},i(I(l.total.performance_amount)),9,Oo)):(o(),u(w,{key:1},[c(i(I(l.total.performance_amount)),1)],64))]),l.channel_name?(o(),u("td",Io,[bt(l,"channel")?(o(),u("span",{key:0,class:"yeji-lead-cell--link",onClick:J(m=>Wt(l,"channel"),["stop"])},i(I(l.total.completed_performance_amount)),9,Mo)):(o(),u(w,{key:1},[c(i(I(l.total.completed_performance_amount)),1)],64))])):y("",!0),a("td",null,i(S(l.total.appointment_booked_count??0)),1),a("td",null,i(S(l.total.consult_count)),1),a("td",null,i(S(l.total.deal_order_count)),1),l.channel_name?(o(),u("td",To,i(S(l.total.channel_consult_count)),1)):y("",!0),l.channel_name?(o(),u("td",Vo,i(ta(l.total.channel_avg_price)),1)):y("",!0),a("td",{class:nt(na(l.total.roi))},i(aa(l.total.roi)),3),a("td",null,i(I(l.total.cost_amount)),1)])])])]),a("div",Fo,[a("span",null,"区间:"+i(l.start_date)+" ~ "+i(l.end_date),1),l.channel_name?(o(),u("span",Eo," · 渠道:"+i(l.channel_name),1)):y("",!0),l.total.cost_per_lead!=null&&l.total.cost_per_lead>0?(o(),u("span",Bo," · 单进线成本:"+i(I(l.total.cost_per_lead))+" 元 ",1)):y("",!0)])]))),128))])),[[F,le.value]])]),_:1}),r(Q,{label:"目标看板(卡片)",name:"zyyt_matrix",lazy:""},{default:_(()=>[K((o(),u("div",Yo,[Be.value?(o(),u(w,{key:0},[a("h2",Uo,i(Be.value.title),1),a("div",Ho,[(o(!0),u(w,null,V(Be.value.sections,l=>(o(),u("div",{key:"tm-"+l.dept_id,class:"tp-matrix-card",role:"listitem"},[a("div",Wo,[a("div",qo,[l.parent_dept_name?(o(),u("span",Go,i(l.parent_dept_name),1)):y("",!0),a("span",Jo,i(l.dept_name)+"目标",1)]),a("span",Ko,i(hn(l.target_amount)),1)]),a("table",Xo,[a("tbody",null,[a("tr",null,[e[109]||(e[109]=a("td",{class:"tp-matrix-card__lbl"},"昨日诊金",-1)),a("td",Qo,i(S(l.yesterday_amount)),1)]),l.douyin_amount!==null?(o(),u("tr",Zo,[e[110]||(e[110]=a("td",{class:"tp-matrix-card__lbl"},"抖音总诊金",-1)),a("td",es,i(S(l.douyin_amount)),1)])):y("",!0),l.tuifen_amount!==null?(o(),u("tr",ts,[e[111]||(e[111]=a("td",{class:"tp-matrix-card__lbl"},"推粉总诊金",-1)),a("td",as,i(S(l.tuifen_amount)),1)])):y("",!0),a("tr",null,[e[112]||(e[112]=a("td",{class:"tp-matrix-card__lbl"},"总诊金",-1)),a("td",ns,i(S(l.total_amount)),1)]),a("tr",null,[e[113]||(e[113]=a("td",{class:"tp-matrix-card__lbl"},"目标进度",-1)),a("td",ls,i(I(l.target_progress)),1)]),a("tr",null,[e[114]||(e[114]=a("td",{class:"tp-matrix-card__lbl"},"完成进度",-1)),a("td",{class:nt(["tp-matrix-card__num tp-matrix-card__num--hot",yn(l.completion_rate)])},i(fn(l.completion_rate)),3)])])])]))),128))])],64)):Ze.value?y("",!0):(o(),j(R,{key:1,class:"tp-matrix-empty",description:"暂无目标数据,请先配置当月部门目标或为部门设置诊金目标后刷新页面"}))])),[[F,Ze.value]])]),_:1})]),_:1},8,["modelValue"])]),_:1}),r(M,{class:"yeji-panel yeji-charts-only-card",shadow:"never"},{default:_(()=>[e[125]||(e[125]=a("div",{class:"yeji-charts-only-head"},"统计图",-1)),K((o(),u("div",os,[ga.value?(o(),u(w,{key:0},[Se.value&&(pt.value||mt.value||vt.value||ft.value||yt.value)?(o(),u("section",ss,[a("h3",is,[e[116]||(e[116]=c(" 医生统计 ",-1)),Ke.value?(o(),u("span",rs,i(Ke.value),1)):y("",!0)]),r(ve,{gutter:16},{default:_(()=>[r(W,{xs:24,lg:9},{default:_(()=>[a("div",ds,[e[117]||(e[117]=a("div",{class:"yeji-chart-panel__label"},"成交金额 TOP(条形)",-1)),pt.value?(o(),j(D(Z),{key:0,class:"yeji-echart",option:ja.value,autoresize:""},null,8,["option"])):(o(),j(R,{key:1,description:"暂无成交金额数据","image-size":72}))])]),_:1}),r(W,{xs:24,lg:8},{default:_(()=>[a("div",us,[e[118]||(e[118]=a("div",{class:"yeji-chart-panel__label"},"开方构成(堆叠柱)",-1)),mt.value?(o(),j(D(Z),{key:0,class:"yeji-echart yeji-echart--short",option:xa.value,autoresize:""},null,8,["option"])):(o(),j(R,{key:1,description:"暂无开方数据","image-size":72}))])]),_:1}),r(W,{xs:24,lg:7},{default:_(()=>[a("div",cs,[e[119]||(e[119]=a("div",{class:"yeji-chart-panel__label"},"挂号结果(环形 · 表尾合计)",-1)),vt.value?(o(),j(D(Z),{key:0,class:"yeji-echart yeji-echart--short",option:ba.value,autoresize:""},null,8,["option"])):(o(),j(R,{key:1,description:"暂无挂号汇总","image-size":72}))])]),_:1})]),_:1}),r(ve,{gutter:16,class:"yeji-chart-subrow"},{default:_(()=>[r(W,{xs:24,lg:12},{default:_(()=>[a("div",_s,[e[120]||(e[120]=a("div",{class:"yeji-chart-panel__label"},"接诊诊单 × 金额(散点)",-1)),ft.value?(o(),j(D(Z),{key:0,class:"yeji-echart yeji-echart--compact",option:wa.value,autoresize:""},null,8,["option"])):(o(),j(R,{key:1,description:"至少两名医生同时有接诊诊单与金额时可展示","image-size":72}))])]),_:1}),r(W,{xs:24,lg:12},{default:_(()=>[a("div",ps,[e[121]||(e[121]=a("div",{class:"yeji-chart-panel__label"},"TOP 医生雷达(相对最高值归一)",-1)),yt.value?(o(),j(D(Z),{key:0,class:"yeji-echart yeji-echart--compact",option:ka.value,autoresize:""},null,8,["option"])):(o(),j(R,{key:1,description:"至少两名医生有数据时可展示","image-size":72}))])]),_:1})]),_:1})])):y("",!0),(o(!0),u(w,null,V(ie.value,(l,h)=>(o(),u(w,{key:"dept-chart-"+h},[Pt(l)?(o(),u("section",ms,[a("h3",vs,i(Xt(l)),1),r(D(Z),{class:"yeji-echart yeji-echart--tall",option:cn(l),autoresize:""},null,8,["option"]),Zt(l)||ea(l)?(o(),j(ve,{key:0,gutter:16,class:"yeji-chart-subrow"},{default:_(()=>[Zt(l)?(o(),j(W,{key:0,xs:24,md:12},{default:_(()=>[a("div",fs,[e[122]||(e[122]=a("div",{class:"yeji-chart-panel__label"}," 进线 → 接诊 → 成交(汇总漏斗) ",-1)),r(D(Z),{class:"yeji-echart yeji-echart--compact",option:mn(l),autoresize:""},null,8,["option"])])]),_:2},1024)):y("",!0),ea(l)?(o(),j(W,{key:1,xs:24,md:12},{default:_(()=>[a("div",ys,[e[123]||(e[123]=a("div",{class:"yeji-chart-panel__label"}," 部门合计业绩占比(TOP10 + 其它) ",-1)),r(D(Z),{class:"yeji-echart yeji-echart--compact",option:vn(l),autoresize:""},null,8,["option"])])]),_:2},1024)):y("",!0)]),_:2},1024)):y("",!0)])):y("",!0)],64))),128)),N.value?(o(!0),u(w,{key:1},V(Rt.value,l=>(o(),u("section",{key:"lb-chart-"+l.dept_id,class:"yeji-chart-block"},[a("h3",hs,[c(i(l.dept_name)+" · 医助 ",1),N.value.channel_name?(o(),u("span",gs," ("+i(N.value.channel_name)+") ",1)):y("",!0),a("span",bs,i(N.value.start_date)+"~"+i(N.value.end_date),1)]),r(ve,{gutter:16},{default:_(()=>[r(W,{xs:24,lg:Qt(l)?14:24},{default:_(()=>[r(D(Z),{class:"yeji-echart",option:_n(l,N.value),autoresize:""},null,8,["option"])]),_:2},1032,["lg"]),Qt(l)?(o(),j(W,{key:0,xs:24,lg:10},{default:_(()=>[a("div",ws,[e[124]||(e[124]=a("div",{class:"yeji-chart-panel__label"},"诊金占比",-1)),r(D(Z),{class:"yeji-echart yeji-echart--compact",option:pn(l,N.value),autoresize:""},null,8,["option"])])]),_:2},1024)):y("",!0)]),_:2},1024)]))),128)):y("",!0)],64)):!le.value&&(!Se.value||!De.value)&&!oe.value?(o(),j(R,{key:1,class:"yeji-charts-empty",description:"当前筛选下暂无图表数据,请调整条件后查询"})):y("",!0)])),[[F,le.value||Se.value&&De.value||oe.value]])]),_:1}),r(Ae,{modelValue:te.value,"onUpdate:modelValue":e[5]||(e[5]=l=>te.value=l),direction:"rtl",size:"min(1120px, 98vw)","destroy-on-close":"",class:"yeji-order-drawer","show-close":!0},{header:_(()=>[a("div",ks,[a("h3",js,i(Ve.value),1),a("p",xs,i(Fe.value),1)])]),default:_(()=>[a("div",Ns,[a("section",Ss,[a("div",Ds,[e[126]||(e[126]=a("span",{class:"yeji-order-drawer__stat-label"},"符合条件的订单",-1)),a("span",Cs,i(Xe.value.toLocaleString("zh-CN"))+" 笔",1)]),a("div",Ls,[e[127]||(e[127]=a("span",{class:"yeji-order-drawer__stat-label"},[c(" 约诊 "),a("span",{class:"yeji-order-drawer__stat-note"},"(已完成挂号;日期按挂号 appointment_date;医助=挂号或诊单,与看板接诊一致)")],-1)),a("span",zs,i(Tt.value===null?"—":Tt.value.toLocaleString("zh-CN"))+" 次",1)]),Vt.value&&H.value?(o(),u(w,{key:0},[a("div",$s,[a("span",As,[e[128]||(e[128]=c(" 合计业绩 ",-1)),a("span",Rs,"(与看板「合计业绩」列同口径,不限渠道;"+i(H.value.totalOrderCount.toLocaleString("zh-CN"))+" 笔)",1)]),a("span",Ps," ¥"+i(et(H.value.totalAmount)),1)]),a("div",Os,[a("span",Is,[c(i(ht.value)+"业绩 ",1),a("span",Ms,"(与看板「"+i(ht.value)+"业绩」同口径;"+i(H.value.channelOrderCount.toLocaleString("zh-CN"))+" 笔)",1)]),a("span",Ts," ¥"+i(et(Ca.value)),1)])],64)):(o(),u("div",Vs,[e[129]||(e[129]=a("span",{class:"yeji-order-drawer__stat-label"},[c(" 业务订单金额合计 "),a("span",{class:"yeji-order-drawer__stat-note"},"(不含履约已取消,与上方业绩口径一致)")],-1)),a("span",Fs," ¥"+i(et(Mt.value)),1)])),_e.value.length>0?(o(),u("div",Es,[e[130]||(e[130]=a("span",{class:"yeji-order-drawer__stat-label"},"本页小计",-1)),a("span",Bs,"¥"+i(et(Da.value)),1)])):y("",!0)]),Vt.value?(o(),j(ze,{key:0,modelValue:G.value,"onUpdate:modelValue":e[4]||(e[4]=l=>G.value=l),class:"yeji-order-drawer__list-tabs",onTabChange:qa},{default:_(()=>[r(Q,{label:"合计业绩(全量订单)",name:"total"}),r(Q,{label:`渠道筛选(${ht.value})`,name:"channel"},null,8,["label"])]),_:1},8,["modelValue"])):y("",!0),K((o(),u("div",Ys,[_e.value.length>0||ce.value?(o(),j(P,{key:0,data:_e.value,size:"small",stripe:"",border:"","max-height":"58vh",class:"yeji-order-drawer__table","empty-text":ce.value?"加载中…":"暂无数据"},{default:_(()=>[r(p,{type:"index",label:"#",width:"46",index:Va}),r(p,{prop:"order_no",label:"订单号","min-width":"152","show-overflow-tooltip":""}),r(p,{label:"关联挂号","min-width":"218"},{default:_(({row:l})=>[l.linked_appointment?(o(),u("div",Us,[a("div",Hs,[e[131]||(e[131]=a("span",{class:"yeji-order-appt-k"},"日期",-1)),c(" "+i(Fa(l.linked_appointment)),1)]),a("div",Ws,[e[132]||(e[132]=a("span",{class:"yeji-order-appt-k"},"状态",-1)),c(" "+i(l.linked_appointment.status_desc||"—")+" ",1),l.linked_appointment.doctor_name?(o(),u("span",qs," · "+i(l.linked_appointment.doctor_name),1)):y("",!0)]),a("div",Gs,[e[133]||(e[133]=a("span",{class:"yeji-order-appt-k"},"类型",-1)),c(" "+i(l.linked_appointment.appointment_type_desc||"—"),1)]),a("div",Js,[e[135]||(e[135]=a("span",{class:"yeji-order-appt-k"},"渠道",-1)),a("span",Ks,[c(i(l.linked_appointment.channel_source_desc||l.linked_appointment.channel_source||"—")+" ",1),Bt(l.linked_appointment)!==""?(o(),u("span",Xs," (字典 value "+i(Bt(l.linked_appointment))+" ) ",1)):y("",!0)]),r(O,{placement:"top",effect:"dark","show-after":200},{content:_(()=>[...e[134]||(e[134]=[a("div",{style:{"max-width":"280px","line-height":"1.65","font-size":"12px"}},[c(" 「字典 value」= 系统字典 "),a("b",null,"channels"),c(" 的 value,与业绩表里按渠道收窄时所用"),a("b",null,"挂号 channels"),c("一致;便于和进线列所选渠道对照,"),a("b",null,"不是"),c("企微 add_external_contact 单上的独立编号。 ")],-1)])]),default:_(()=>[r(k,{class:"yeji-order-appt-info","aria-label":"说明"},{default:_(()=>[r(D(E))]),_:1})]),_:1})])])):(o(),u("span",Qs,"—"))]),_:1}),r(p,{label:"金额",width:"108",align:"right"},{default:_(({row:l})=>[a("span",Zs,"¥"+i(l.amount??"—"),1)]),_:1}),r(p,{prop:"recipient_name",label:"收货人",width:"96","show-overflow-tooltip":""}),r(p,{label:"履约",width:"104","show-overflow-tooltip":""},{default:_(({row:l})=>[c(i(Ta(l.fulfillment_status)),1)]),_:1}),r(p,{label:"创建时间","min-width":"148"},{default:_(({row:l})=>[c(i(Ea(l.create_time)),1)]),_:1}),r(p,{prop:"doctor_name",label:"开方人",width:"88","show-overflow-tooltip":""}),r(p,{prop:"assistant_name",label:"诊单医助",width:"88","show-overflow-tooltip":""}),r(p,{prop:"creator_name",label:"创建人",width:"88","show-overflow-tooltip":""})]),_:1},8,["data","empty-text"])):y("",!0),!ce.value&&_e.value.length===0?(o(),j(R,{key:1,description:"暂无业务订单"})):y("",!0),a("div",ei,[r($e,{"current-page":X.value,"page-size":Qe.value,background:"",layout:"total, sizes, prev, pager, next, jumper",total:Xe.value,"page-sizes":[10,15,20,50],disabled:ce.value,"hide-on-single-page":!1,onCurrentChange:Ga,onSizeChange:Ja},null,8,["current-page","page-size","total","disabled"])])])),[[F,ce.value]])])]),_:1},8,["modelValue"]),r(fe,{modelValue:rt.value,"onUpdate:modelValue":e[6]||(e[6]=l=>rt.value=l),width:"min(680px, 94vw)","destroy-on-close":"",class:"yeji-unassigned-dialog"},{header:_(()=>[a("div",ti,[e[136]||(e[136]=a("span",{class:"yeji-unassigned-dialog__title"},"「未归属中心」业绩拆解",-1)),a("p",ai,i(Dt.value),1)])]),default:_(()=>[Pe.value?(o(),u("p",ni,i(Pe.value),1)):y("",!0),K((o(),u("div",li,[ge.value.length>0||he.value?(o(),j(P,{key:0,data:ge.value,size:"small",stripe:"",border:"","max-height":"440",class:"yeji-unassigned-dialog__table","empty-text":he.value?"加载中…":"暂无数据"},{default:_(()=>[r(p,{prop:"name",label:"诊单医助","min-width":"120","show-overflow-tooltip":""}),r(p,{label:"账号",width:"88",align:"right"},{default:_(({row:l})=>[c(i(l.admin_id>0?l.admin_id:"—"),1)]),_:1}),r(p,{label:"订单数",width:"88",align:"right"},{default:_(({row:l})=>[c(i(S(l.order_count)),1)]),_:1}),r(p,{label:"业绩金额","min-width":"112",align:"right"},{default:_(({row:l})=>[c(i(I(l.amount)),1)]),_:1})]),_:1},8,["data","empty-text"])):y("",!0),!he.value&&ge.value.length===0?(o(),j(R,{key:1,description:"暂无拆解数据"})):y("",!0)])),[[F,he.value]])]),_:1},8,["modelValue"]),r(fe,{modelValue:ut.value,"onUpdate:modelValue":e[7]||(e[7]=l=>ut.value=l),width:"min(920px, 96vw)","destroy-on-close":"",class:"yeji-leadlines-dialog"},{header:_(()=>[a("div",oi,[e[137]||(e[137]=a("span",{class:"yeji-unassigned-dialog__title"},"进线数据明细",-1)),a("p",si,i(zt.value),1)])]),default:_(()=>[Ie.value?(o(),u("p",ii,i(Ie.value),1)):y("",!0),K((o(),u("div",ri,[ke.value.length>0||re.value?(o(),j(P,{key:0,data:ke.value,size:"small",stripe:"",border:"","max-height":"440",class:"yeji-unassigned-dialog__table","empty-text":re.value?"加载中…":"暂无数据"},{default:_(()=>[r(p,{prop:"event_time_text",label:"进线时间","min-width":"156","show-overflow-tooltip":""}),r(p,{prop:"reception_admin_name",label:"接待",width:"88","show-overflow-tooltip":""}),r(p,{prop:"external_contact_name",label:"客户","min-width":"100","show-overflow-tooltip":""}),r(p,{prop:"external_userid",label:"外部联系人ID","min-width":"140","show-overflow-tooltip":""}),r(p,{prop:"user_id",label:"企微成员ID","min-width":"120","show-overflow-tooltip":""}),r(p,{prop:"state",label:"渠道参数",width:"96","show-overflow-tooltip":""})]),_:1},8,["data","empty-text"])):y("",!0),!re.value&&ke.value.length===0?(o(),j(R,{key:1,description:"暂无进线明细"})):y("",!0),Me.value>0?(o(),u("div",di,[r($e,{"current-page":Te.value,"page-size":qe.value,background:"",layout:"total, sizes, prev, pager, next, jumper",total:Me.value,"page-sizes":[10,20,50,100],disabled:re.value,"hide-on-single-page":!1,onCurrentChange:tn,onSizeChange:an},null,8,["current-page","page-size","total","disabled"])])):y("",!0)])),[[F,re.value]])]),_:1},8,["modelValue"]),r(fe,{modelValue:Ge.value,"onUpdate:modelValue":e[8]||(e[8]=l=>Ge.value=l),width:"min(960px, 96vw)","destroy-on-close":"",class:"yeji-leadlines-dialog"},{header:_(()=>[a("div",ui,[e[138]||(e[138]=a("span",{class:"yeji-unassigned-dialog__title"},"预约诊单 · 挂号明细",-1)),a("p",ci,i(ct.value),1)])]),default:_(()=>[je.value?(o(),u("p",_i,i(je.value),1)):y("",!0),K((o(),u("div",pi,[se.value.length>0||de.value?(o(),j(P,{key:0,data:se.value,size:"small",stripe:"",border:"","max-height":"440",class:"yeji-unassigned-dialog__table","empty-text":de.value?"加载中…":"暂无数据"},{default:_(()=>[r(p,{type:"index",label:"#",width:"46",index:nn}),r(p,{prop:"appointment_date",label:"预约日期",width:"108"}),r(p,{prop:"appointment_time",label:"时段","min-width":"96","show-overflow-tooltip":""}),r(p,{prop:"status_desc",label:"状态",width:"84"}),r(p,{prop:"appointment_type_desc",label:"类型",width:"92"}),r(p,{prop:"patient_name",label:"患者","min-width":"92","show-overflow-tooltip":""}),r(p,{prop:"patient_phone",label:"手机","min-width":"116","show-overflow-tooltip":""}),r(p,{prop:"doctor_name",label:"接诊医生",width:"92","show-overflow-tooltip":""}),r(p,{label:"诊单ID",width:"84",align:"right"},{default:_(({row:l})=>[c(i(S(l.diagnosis_id??0)),1)]),_:1}),fa.value?(o(),j(p,{key:0,prop:"channel_source",label:"渠道来源",width:"96","show-overflow-tooltip":""})):y("",!0)]),_:1},8,["data","empty-text"])):y("",!0),!de.value&&se.value.length===0?(o(),j(R,{key:1,description:"暂无挂号记录"})):y("",!0),xe.value>0?(o(),u("div",mi,[r($e,{"current-page":ue.value,"page-size":Ne.value,background:"",layout:"total, sizes, prev, pager, next, jumper",total:xe.value,"page-sizes":[10,20,50,100],disabled:de.value,"hide-on-single-page":!1,onCurrentChange:sn,onSizeChange:rn},null,8,["current-page","page-size","total","disabled"])])):y("",!0)])),[[F,de.value]])]),_:1},8,["modelValue"]),r(fe,{modelValue:dt.value,"onUpdate:modelValue":e[9]||(e[9]=l=>dt.value=l),width:"min(560px, 94vw)","destroy-on-close":"",class:"yeji-unassigned-dialog"},{header:_(()=>[a("div",vi,[e[139]||(e[139]=a("span",{class:"yeji-unassigned-dialog__title"},"复诊 · 医助拆解",-1)),a("p",fi,i(Ct.value),1)])]),default:_(()=>[Oe.value?(o(),u("p",yi,i(Oe.value),1)):y("",!0),K((o(),u("div",hi,[we.value.length>0||be.value?(o(),j(P,{key:0,data:we.value,size:"small",stripe:"",border:"","max-height":"440",class:"yeji-unassigned-dialog__table","empty-text":be.value?"加载中…":"暂无数据"},{default:_(()=>[r(p,{prop:"name",label:"医助","min-width":"120","show-overflow-tooltip":""}),r(p,{label:"业务订单",width:"108",align:"right"},{default:_(({row:l})=>[Number(l.order_count)>0?(o(),u("span",{key:0,class:"yeji-lead-cell--link",role:"button",tabindex:"0",onClick:h=>qt(l),onKeydown:Gn(J(h=>qt(l),["prevent"]),["enter"])},i(S(l.order_count))+" 笔",41,gi)):(o(),u(w,{key:1},[c(i(S(l.order_count)),1)],64))]),_:1})]),_:1},8,["data","empty-text"])):y("",!0),!be.value&&we.value.length===0?(o(),j(R,{key:1,description:"暂无拆解数据"})):y("",!0)])),[[F,be.value]])]),_:1},8,["modelValue"])])}}}),cr=rl(wi,[["__scopeId","data-v-0c056319"]]);export{cr as default};
diff --git a/server/public/admin/assets/yeji-DI5wD3WW.js b/server/public/admin/assets/yeji-DI5wD3WW.js
deleted file mode 100644
index 876869fa..00000000
--- a/server/public/admin/assets/yeji-DI5wD3WW.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import{P as hn,Q as wn,af as kn,W as jn,L as xn,a2 as Nn,i as Sn,d as Dn,J as Cn,m as Ln,l as zn,M as $n,N as An,R as Rn,r as Pn,a3 as Mn,a4 as On,X as In,e as Vn,V as Fn,E as Pe}from"./element-plus-FSf94q2-.js";import{s as _e,w as Tn}from"./@vue/runtime-dom-DDAG46FW.js";import{N as En,x as Bn,i as F}from"./@element-plus/icons-vue-BDOO1F0I.js";import{H as G}from"./vue-echarts-BNtg2q_G.js";import{d as Yn,y as Ee,a as Un,b as Hn,c as Wn,e as qn,f as Gn,g as Jn,h as Kn,i as Xn}from"./stats-CFZvb-WP.js";import{d as Qn}from"./finance-Bch3AEJw.js";import{j as Zn}from"./tcm-Bus_TOfe.js";import{u as el,_ as tl}from"./index-B9GiQBjX.js";import{f as al,b as nl,ak as o,I as u,J as a,a as i,aN as c,F as k,ap as I,G as j,aP as q,O as p,H as y,A as L}from"./@vue/runtime-core-C6bnekPw.js";import{Q as r,o as nt}from"./@vue/shared-mAAVTE9n.js";import{y as S,n as v}from"./@vue/reactivity-DiY1c2vO.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./resize-detector-G6vbKCU7.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const ll={class:"yeji-page"},ol={class:"filter-surface"},sl={class:"filter-row filter-row--top"},il={class:"filter-field"},rl={class:"channel-opt-row"},dl={class:"opt-name"},ul={class:"opt-count"},cl={class:"filter-field filter-field--wide"},pl={class:"filter-select filter-select--dept filter-dept-tree-wrap"},_l={class:"filter-field filter-field--date-top"},ml={class:"filter-actions"},vl={class:"filter-quick"},fl={class:"date-pills",role:"group","aria-label":"快捷日期"},yl=["onClick"],gl={class:"doctor-daily-card__head"},bl={class:"doctor-daily-card__title-block"},hl={key:0,class:"doctor-daily-card__range"},wl={class:"doctor-daily-card__tools"},kl={key:0,class:"leaderboards-wrap"},jl={class:"leaderboard-hint"},xl={class:"muted"},Nl={class:"tables-wrap"},Sl={key:0,class:"yeji-table leaderboard-table"},Dl={class:"yeji-table__header"},Cl={key:0,class:"leaderboard-sub"},Ll={class:"yeji-table__scroll",tabindex:"0",role:"region","aria-label":"排行榜,可横向滚动"},zl={class:"yeji-table__body yeji-table__body--leaderboard"},$l=["onClick"],Al={class:"col-rank"},Rl={class:"col-abbr"},Pl={class:"col-name"},Ml={class:"col-consult"},Ol={class:"col-deal"},Il={class:"col-assign"},Vl=["onClick"],Fl={key:0,class:"yeji-lead-cell--link"},Tl=["onClick"],El={key:0,class:"yeji-lead-cell--link"},Bl=["onClick"],Yl={key:0,class:"yeji-lead-cell--link"},Ul={class:"yeji-table__foot yeji-table__foot--left"},Hl={key:0},Wl={key:0,class:"empty-tip leaderboard-empty"},ql={key:0,class:"tp-wrap"},Gl={key:0,class:"tp-card"},Jl={class:"tp-card__title"},Kl={class:"tp-card__body"},Xl={class:"tp-section__head"},Ql={class:"tp-section__title-col"},Zl={key:0,class:"tp-section__parent"},eo={class:"tp-section__name"},to={class:"tp-section__target"},ao={class:"tp-table"},no={class:"tp-val"},lo={key:0},oo={class:"tp-val"},so={key:1},io={class:"tp-val"},ro={class:"tp-val tp-val--total"},uo={class:"tp-val"},co={class:"tables-wrap"},po={key:0,class:"empty-tip"},_o={class:"yeji-table__header"},mo={class:"yeji-table__scroll",tabindex:"0",role:"region","aria-label":"业绩数据表,可横向滚动"},vo={class:"yeji-table__body yeji-table__body--data"},fo={style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},yo={style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},go={style:{"max-width":"280px","line-height":"1.7","font-size":"12px"}},bo={key:0,class:"col-completed col-narrow-head"},ho={class:"yeji-th-label"},wo={style:{"max-width":"340px","line-height":"1.7","font-size":"12px"}},ko={key:1,class:"col-completed col-narrow-head"},jo={class:"yeji-th-label"},xo={style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},No={key:2,class:"col-completed col-narrow-head"},So={class:"yeji-th-label"},Do={style:{"max-width":"280px","line-height":"1.7","font-size":"12px"}},Co={style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},Lo=["onClick"],zo={class:"col-dept"},$o=["onClick"],Ao={key:0,class:"yeji-lead-cell--link"},Ro=["onClick"],Po={key:0,class:"yeji-lead-cell--link"},Mo=["onClick"],Oo={key:0,class:"yeji-lead-cell--link"},Io={key:0,class:"col-completed"},Vo=["onClick"],Fo={key:0,class:"yeji-lead-cell--link"},To={key:1,class:"col-completed"},Eo={key:2,class:"col-completed"},Bo={class:"total-row"},Yo={key:0,class:"col-completed"},Uo={key:1,class:"col-completed"},Ho={key:2,class:"col-completed"},Wo={class:"yeji-table__foot"},qo={key:0},Go={key:1},Jo={class:"yeji-charts-stack"},Ko={key:0,class:"yeji-chart-block"},Xo={class:"yeji-chart-block__title"},Qo={key:0,class:"yeji-chart-block__sub"},Zo={class:"yeji-chart-panel"},es={class:"yeji-chart-panel"},ts={class:"yeji-chart-panel"},as={class:"yeji-chart-panel"},ns={class:"yeji-chart-panel"},ls={key:0,class:"yeji-chart-block"},os={class:"yeji-chart-block__title"},ss={class:"yeji-chart-panel"},is={class:"yeji-chart-panel"},rs={class:"yeji-chart-block__title"},ds={key:0,class:"yeji-chart-block__sub"},us={class:"yeji-chart-block__sub yeji-chart-block__sub--muted"},cs={class:"yeji-chart-panel"},ps={class:"yeji-order-drawer__header"},_s={class:"yeji-order-drawer__heading"},ms={class:"yeji-order-drawer__sub"},vs={class:"yeji-order-drawer__shell"},fs={class:"yeji-order-drawer__stats",role:"region","aria-label":"订单汇总"},ys={class:"yeji-order-drawer__stat-card"},gs={class:"yeji-order-drawer__stat-value"},bs={class:"yeji-order-drawer__stat-card"},hs={class:"yeji-order-drawer__stat-value"},ws={class:"yeji-order-drawer__stat-card yeji-order-drawer__stat-card--total"},ks={class:"yeji-order-drawer__stat-label"},js={class:"yeji-order-drawer__stat-note"},xs={class:"yeji-order-drawer__stat-value yeji-order-drawer__stat-value--money"},Ns={class:"yeji-order-drawer__stat-card yeji-order-drawer__stat-card--accent"},Ss={class:"yeji-order-drawer__stat-label"},Ds={class:"yeji-order-drawer__stat-note"},Cs={class:"yeji-order-drawer__stat-value yeji-order-drawer__stat-value--money"},Ls={key:1,class:"yeji-order-drawer__stat-card yeji-order-drawer__stat-card--accent"},zs={class:"yeji-order-drawer__stat-value yeji-order-drawer__stat-value--money"},$s={key:2,class:"yeji-order-drawer__stat-card yeji-order-drawer__stat-card--muted"},As={class:"yeji-order-drawer__stat-value"},Rs={class:"yeji-order-drawer__body"},Ps={key:0,class:"yeji-order-appt-lines"},Ms={class:"yeji-order-appt-line"},Os={class:"yeji-order-appt-line"},Is={key:0,class:"yeji-order-appt-sub"},Vs={class:"yeji-order-appt-line"},Fs={class:"yeji-order-appt-line yeji-order-appt-line--channel"},Ts={class:"yeji-order-appt-channel-text"},Es={key:0,class:"yeji-order-appt-sub"},Bs={key:1,class:"yeji-order-appt-empty"},Ys={class:"yeji-order-amt"},Us={class:"yeji-order-drawer__pager"},Hs={class:"yeji-unassigned-dialog__head"},Ws={class:"yeji-unassigned-dialog__sub"},qs={key:0,class:"yeji-unassigned-dialog__note"},Gs={class:"yeji-unassigned-dialog__body"},Js={class:"yeji-unassigned-dialog__head"},Ks={class:"yeji-unassigned-dialog__sub"},Xs={key:0,class:"yeji-unassigned-dialog__note"},Qs={class:"yeji-unassigned-dialog__body"},Zs={key:2,class:"yeji-leadlines-dialog__pager"},ei={class:"yeji-unassigned-dialog__head"},ti={class:"yeji-unassigned-dialog__sub"},ai={key:0,class:"yeji-unassigned-dialog__note"},ni={class:"yeji-unassigned-dialog__body"},li={key:2,class:"yeji-leadlines-dialog__pager"},oi={class:"yeji-unassigned-dialog__head"},si={class:"yeji-unassigned-dialog__sub"},ii={key:0,class:"yeji-unassigned-dialog__note"},ri={class:"yeji-unassigned-dialog__body"},di=["onClick","onKeydown"],na=30,ui="stats.doctorDailyStats/overview",ci=al({__name:"yeji",setup(pi){const la={value:"id",label:"name",children:"children"};function oa(t){if(!t.length)return[];const e=new Map;for(const h of t)e.set(h.id,{...h,children:[]});const n=[];for(const h of t){const b=e.get(h.id),w=Number(h.pid);w>0&&e.has(w)?e.get(w).children.push(b):n.push(b)}const s=h=>{var b;(b=h.children)!=null&&b.length?h.children.forEach(s):delete h.children};n.forEach(s);const d=h=>{var b;h.sort((w,T)=>{const O=w.name.includes("中心")?-1:1,_=T.name.includes("中心")?-1:1;return O!==_?O-_:w.id-T.id});for(const w of h)(b=w.children)!=null&&b.length&&d(w.children)};return d(n),n}const te=v(!1),me=v([]),lt=v(!1),sa=L(()=>oa(me.value)),R=v([]),Be=v([]),ot=v(!1),z=v(""),B=v(null),oe=v([]);function st(t,e){if(!t||typeof t!="object")return e;for(const n of Object.keys(t)){const s=parseInt(n,10);!Number.isNaN(s)&&s>=2&&(e=Math.max(e,s))}return e}function ia(t){var n;let e=0;for(const s of t){for(const d of s.rows)e=st(d.revisit_slots,e);e=st((n=s.total)==null?void 0:n.revisit_slots,e)}return e}const it=L(()=>{const t=Math.min(ia(oe.value),na);return t<2?[]:Array.from({length:t-1},(e,n)=>n+2)});function ra(t){if(!t.er_center_subtree)return 0;let e=0;for(const n of t.rows)e=st(n.revisit_slots,e);return e}function Nt(t){const e=Math.min(ra(t),na);return e<2?[]:Array.from({length:e-1},(n,s)=>s+2)}function Ye(t){if(t===2)return"复诊2";const e=["三","四","五","六","七","八","九","十"];return t>=3&&t<=10?`复诊${e[t-3]}`:`复诊${t}`}function J(t,e){const n=t==null?void 0:t.revisit_slots;if(!n||typeof n!="object")return 0;const s=n[e]??n[String(e)],d=Number(s);return Number.isFinite(d)?d:0}const x=v(null),ae=v(!1),rt=v(!1),ve=v(!1),St=v(""),Me=v(""),fe=v([]),dt=v(!1),ye=v(!1),Dt=v(""),Oe=v(""),ge=v([]),Ct=v(null),ut=v(!1),se=v(!1),Lt=v(""),Ie=v(""),be=v([]),Ve=v(0),Fe=v(1),Ue=v(20),zt=v(null),He=v(!1),ie=v(!1),ct=v(""),he=v(""),ne=v([]),we=v(0),re=v(1),ke=v(20),pt=v(null),da=L(()=>ne.value.some(t=>String(t.channel_source??"")!=="")),$t=v("zyyt"),ua=el(),je=L(()=>(ua.perms||[]).some(e=>e==="*"||e===ui)),At=L(()=>{var t;return(((t=x.value)==null?void 0:t.leaderboards)??[]).filter(e=>e.rows.length>0)});function Rt(t){return t.rows.some(e=>e.dept_id>0&&(Number(e.lead_count)>0||Number(e.consult_count)>0||Number(e.deal_order_count)>0||Number(e.performance_amount)>0||Number(e.completed_performance_amount)>0))}const xe=v(!1),Y=v([]),Ne=v({}),We=v(null),qe=L(()=>{const t=We.value;return!(t!=null&&t.start)||!(t!=null&&t.end)?"":t.start===t.end?`区间 ${t.start}`:`区间 ${t.start} ~ ${t.end}`}),_t=L(()=>Y.value.some(t=>Number(t.deal_amount??0)>0)),mt=L(()=>Y.value.some(t=>Number(t.system_prescription_count??0)>0||Number(t.manual_prescription_count??0)>0)),ca=L(()=>je.value?_t.value||mt.value||vt.value||ft.value||yt.value:!1),pa=L(()=>{if(ca.value)return!0;for(const t of oe.value)if(Rt(t))return!0;return At.value.length>0}),vt=L(()=>{const t=Ne.value;return Number(t.appointment_completed??0)+Number(t.appointment_missed??0)+Number(t.appointment_cancelled??0)>0}),_a=L(()=>{const t=Ne.value,e=[{value:Number(t.appointment_completed??0),name:"挂号完成"},{value:Number(t.appointment_missed??0),name:"过号"},{value:Number(t.appointment_cancelled??0),name:"取消"}].filter(n=>n.value>0);return{color:["#0d9488","#d97706","#94a3b8"],tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)"},legend:{bottom:0,type:"scroll",textStyle:{fontSize:10}},series:[{name:"挂号",type:"pie",radius:["42%","68%"],center:["50%","46%"],avoidLabelOverlap:!0,itemStyle:{borderRadius:6,borderColor:"#fff",borderWidth:2},label:{formatter:`{b}
-{c}`,fontSize:11},data:e}]}}),ft=L(()=>Y.value.filter(t=>Number(t.deal_order_count??0)>0&&Number(t.deal_amount??0)>0).length>=2),ma=L(()=>{const t=Y.value.filter(s=>Number(s.deal_order_count??0)>0&&Number(s.deal_amount??0)>0),e=Math.max(...t.map(s=>Number(s.deal_amount)),1),n=t.map(s=>{const d=Number(s.deal_amount);return{name:String(s.doctor_name||"—"),value:[Number(s.deal_order_count),d],symbolSize:12+Math.sqrt(d/e)*26}});return{color:["#2563eb"],tooltip:{trigger:"item",formatter:s=>{var h;const d=(h=s.data)==null?void 0:h.value;return Array.isArray(d)?`${s.data.name}
接诊诊单:${d[0]}
金额:${Number(d[1]).toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})} 元`:""}},grid:{left:48,right:24,top:28,bottom:32,containLabel:!0},xAxis:{type:"value",name:"接诊诊单",nameLocation:"middle",nameGap:28,splitLine:{lineStyle:{type:"dashed",opacity:.55}}},yAxis:{type:"value",name:"成交金额",nameLocation:"middle",nameGap:40,splitLine:{lineStyle:{type:"dashed",opacity:.55}}},series:[{type:"scatter",data:n}]}}),yt=L(()=>Y.value.filter(e=>Number(e.deal_amount??0)+Number(e.deal_order_count??0)+Number(e.system_prescription_count??0)+Number(e.manual_prescription_count??0)>0).length>=2),va=L(()=>{const t=[...Y.value].filter(_=>Number(_.deal_amount??0)+Number(_.deal_order_count??0)+Number(_.system_prescription_count??0)+Number(_.manual_prescription_count??0)>0).sort((_,P)=>Number(P.deal_amount)-Number(_.deal_amount)).slice(0,5);if(t.length<2)return{radar:{indicator:[]},series:[{type:"radar",data:[]}]};const e=_=>{const P=String(_.doctor_name||"—");return P.length>7?`${P.slice(0,7)}…`:P},n=_=>Number(_.system_prescription_count??0)+Number(_.manual_prescription_count??0),s=_=>{const P=Number(_.avg_deal_amount);if(Number.isFinite(P)&&P>0)return P;const A=Number(_.deal_order_count);return A>0?Number(_.deal_amount)/A:0},d=Math.max(...t.map(_=>Number(_.deal_amount)),1e-9),h=Math.max(...t.map(_=>Number(_.deal_order_count)),1e-9),b=Math.max(...t.map(n),1e-9),w=Math.max(...t.map(_=>Number(_.appointment_completed??0)),1e-9),T=Math.max(...t.map(s),1e-9),O=t.map(_=>({name:e(_),value:[Number(_.deal_amount)/d*100,Number(_.deal_order_count)/h*100,n(_)/b*100,Number(_.appointment_completed??0)/w*100,s(_)/T*100]}));return{color:["#2563eb","#0d9488","#d97706","#7c3aed","#64748b"],tooltip:{trigger:"item"},legend:{bottom:0,type:"scroll",textStyle:{fontSize:10}},radar:{indicator:[{name:"成交金额",max:100},{name:"接诊诊单",max:100},{name:"开方量",max:100},{name:"挂号完成",max:100},{name:"客单价",max:100}],radius:"58%",center:["50%","48%"],splitNumber:4,axisName:{fontSize:10,color:"#64748b"}},series:[{type:"radar",data:O,emphasis:{lineStyle:{width:3}}}]}}),fa=L(()=>{const t=[...Y.value].filter(s=>Number(s.deal_amount??0)>0).sort((s,d)=>Number(d.deal_amount)-Number(s.deal_amount)).slice(0,20),e=t.map(s=>{const d=String(s.doctor_name||"—");return d.length>10?`${d.slice(0,10)}…`:d}),n=t.map(s=>Number(s.deal_amount??0));return{color:["#2563eb"],tooltip:{trigger:"axis",axisPointer:{type:"shadow"},valueFormatter:s=>`${s.toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})} 元`},grid:{left:8,right:16,top:28,bottom:8,containLabel:!0},xAxis:{type:"value",axisLabel:{fontSize:11},splitLine:{lineStyle:{type:"dashed",opacity:.6}}},yAxis:{type:"category",data:[...e].reverse(),axisLabel:{fontSize:11}},series:[{name:"成交金额",type:"bar",data:[...n].reverse(),barMaxWidth:22,itemStyle:{borderRadius:[0,6,6,0]}}]}}),ya=L(()=>{const t=[...Y.value].filter(n=>Number(n.system_prescription_count??0)+Number(n.manual_prescription_count??0)>0).sort((n,s)=>Number(s.system_prescription_count??0)+Number(s.manual_prescription_count??0)-(Number(n.system_prescription_count??0)+Number(n.manual_prescription_count??0))).slice(0,14),e=t.map(n=>{const s=String(n.doctor_name||"—");return s.length>6?`${s.slice(0,6)}…`:s});return{tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},legend:{top:0,textStyle:{fontSize:11}},grid:{left:44,right:16,top:32,bottom:e.length>10?72:28},xAxis:{type:"category",data:e,axisLabel:{rotate:e.length>8?32:0,fontSize:10}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.6}}},series:[{name:"系统开方",type:"bar",stack:"rx",barMaxWidth:18,data:t.map(n=>Number(n.system_prescription_count??0)),itemStyle:{color:"#2563eb"}},{name:"手动开方",type:"bar",stack:"rx",barMaxWidth:18,data:t.map(n=>Number(n.manual_prescription_count??0)),itemStyle:{color:"#d97706"}}]}});function ga(){var e,n;const t={};if(z.value&&(t.channel_code=z.value),(e=B.value)!=null&&e[0]&&((n=B.value)!=null&&n[1]))t.start_date=B.value[0],t.end_date=B.value[1];else{const s=at(new Date);t.start_date=s,t.end_date=s}return t}function Pt(t){return Number(t??0).toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})}function ba(t){const e=Ne.value,n=[];return t.columns.forEach((s,d)=>{if(d===0){n[d]="合计";return}switch(s.property){case"system_prescription_count":n[d]=String(e.system_prescription_count??0);break;case"manual_prescription_count":n[d]=String(e.manual_prescription_count??0);break;case"deal_amount":n[d]=`¥ ${Pt(e.deal_amount)}`;break;case"deal_order_count":n[d]=String(e.deal_order_count??0);break;case"appointment_completed":n[d]=String(e.appointment_completed??0);break;case"appointment_missed":n[d]=String(e.appointment_missed??0);break;case"appointment_cancelled":n[d]=String(e.appointment_cancelled??0);break;default:n[d]=""}}),n}async function Mt(){xe.value=!0;try{const t=await Yn(ga());Y.value=(t==null?void 0:t.rows)??[],Ne.value=(t==null?void 0:t.total)??{},t!=null&&t.start_date&&(t!=null&&t.end_date)&&(We.value={start:t.start_date,end:t.end_date})}catch{Y.value=[],Ne.value={},We.value=null}finally{xe.value=!1}}const Se=v(!1),de=v(!1),Ge=v(""),Je=v(""),ue=v([]),Ke=v(0),K=v(1),Xe=v(15),le=v("channel"),X=v(null),Qe=v(null),Q=v(null),Ot=L(()=>{const t=Q.value;if(!t)return null;const e=t.stats_order_amount_performance??t.stats_order_amount_not_cancelled;if(e==null||e==="")return null;const n=Number(e);return Number.isFinite(n)?n:null}),It=L(()=>{const t=Q.value;if(!t||t.stats_yeji_consult_count===void 0||t.stats_yeji_consult_count===null)return null;const e=Number(t.stats_yeji_consult_count);return Number.isFinite(e)?e:null}),ha=L(()=>ue.value.reduce((t,e)=>t+Number(e.amount??0),0)),gt=L(()=>!!z.value&&Se.value),bt=L(()=>{var e;const t=z.value;if(!t)return"";for(const n of Be.value){const s=(e=n.channels)==null?void 0:e.find(d=>d.channel_code===t);if(s!=null&&s.channel_name)return String(s.channel_name)}return t}),wa=L(()=>{const t=X.value;return t&&le.value==="total"?Number.isFinite(t.channelAmount)?t.channelAmount:null:Ot.value}),De=v(null),Ze=v(!1);function ka(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function ja(t){const[e,n]=t.split("-").map(Number);return new Date(e,n,0).getDate()}async function xa(){var t,e,n,s;Ze.value=!0,De.value=null;try{let d=function(f,D=0){const C=[];for(const $ of f??[])C.push({node:$,depth:D}),C.push(...d($.children??[],D+1));return C},h=function(f){const D=me.value.find(H=>Number(H.id)===f);if(!D)return"";const C=Number(D.pid);if(!C)return"";const $=me.value.find(H=>Number(H.id)===C);return $!=null&&$.name?String($.name):""},b=function(f){const D=[],C=[f];for(;C.length;){const $=C.shift();for(const H of me.value)Number(H.pid)===$&&(D.push(H.id),C.push(H.id))}return D},w=function(f,D){const C=new Map;for(const $ of(f==null?void 0:f.rows)??[])C.set(Number($.dept_id),Number($[D]??0));return C};const T=ka(),O=await Qn({year_month:T}),_=(O==null?void 0:O.rows)??[];if(!_.length)return;const A=d(_).filter(f=>f.depth>=1&&Number(f.node.target_amount)>0).map(f=>f.node);if(!A.length)return;const ee=new Set,M=A.map(f=>{const D=Number(f.dept_id),C=b(D),$=C.length?C:[D];return $.forEach(H=>ee.add(H)),{dept_id:D,dept_name:String(f.dept_name),target_amount:Number(f.target_amount),totalIds:$}});if(!ee.size)return;const $e=Be.value.flatMap(f=>f.channels),U=(t=$e.find(f=>f.channel_name.includes("自媒体1")))==null?void 0:t.channel_code,ce=(e=$e.find(f=>f.channel_name.includes("自媒体3")))==null?void 0:e.channel_code,Ae=(n=$e.find(f=>f.channel_name.includes("自媒体4")))==null?void 0:n.channel_code,Re=Array.from(ee).join(","),[pe,V,l,g]=await Promise.all([Ee({dept_ids:Re}),U?Ee({dept_ids:Re,channel_code:U}):Promise.resolve(null),ce?Ee({dept_ids:Re,channel_code:ce}):Promise.resolve(null),Ae?Ee({dept_ids:Re,channel_code:Ae}):Promise.resolve(null)]),m=f=>{var D;return((f==null?void 0:f.tables)??[]).find(C=>String(C.label).includes("月"))??((D=f==null?void 0:f.tables)==null?void 0:D[0])},E=f=>{var D,C;return((f==null?void 0:f.tables)??[]).find($=>String($.label).includes("昨"))??((C=f==null?void 0:f.tables)==null?void 0:C[((D=f==null?void 0:f.tables)==null?void 0:D.length)-1])},Qt=w(m(pe),"performance_amount"),cn=w(E(pe),"performance_amount"),Zt=V?w(m(V),"completed_performance_amount"):null,ea=l?w(m(l),"completed_performance_amount"):null,ta=g?w(m(g),"completed_performance_amount"):null,Te=(f,D)=>D.reduce((C,$)=>C+(f.get($)??0),0),jt=new Date,pn=ja(T),_n=jt.getDate(),mn=M.map(f=>{const D=Te(Qt,f.totalIds),C=Te(cn,f.totalIds),$=Zt?Te(Zt,f.totalIds):null,H=ea?Te(ea,f.totalIds):null,aa=ta?Te(ta,f.totalIds):null,xt=H!==null||aa!==null?(H??0)+(aa??0):null,gn=Math.round(f.target_amount*(_n/pn)*100)/100,bn=f.target_amount>0?D/f.target_amount:null;return{dept_id:f.dept_id,dept_name:f.dept_name,parent_dept_name:h(f.dept_id),target_amount:f.target_amount,total_amount:D,yesterday_amount:C,douyin_amount:$&&$>0?$:null,tuifen_amount:xt&&xt>0?xt:null,target_progress:gn,completion_rate:bn}}),vn=((s=_[0])==null?void 0:s.dept_name)??"",fn=jt.getMonth()+1,yn=jt.getDate();De.value={title:`${vn}诊金-${fn}.${yn}`,sections:mn}}catch{}finally{Ze.value=!1}}const Na=L(()=>{var e;const t=(e=x.value)==null?void 0:e.leaderboards;return t?t.filter(n=>n.rows.length>0).length:0}),Vt=[{text:"昨天",value:()=>{const t=new Date;return t.setDate(t.getDate()-1),[t,t]}},{text:"最近七天",value:()=>{const t=new Date,e=new Date;return e.setDate(e.getDate()-6),[e,t]}},{text:"本月",value:()=>{const t=new Date;return[new Date(t.getFullYear(),t.getMonth(),1),t]}},{text:"今日",value:()=>{const t=new Date;return[t,t]}},{text:"本周",value:()=>{const t=new Date,e=new Date,n=e.getDay()||7;return e.setDate(e.getDate()-(n-1)),[e,t]}},{text:"上月",value:()=>{const t=new Date,e=new Date(t.getFullYear(),t.getMonth()-1,1),n=new Date(t.getFullYear(),t.getMonth(),0);return[e,n]}}];function Sa(t){const e=t.value();B.value=[at(e[0]),at(e[1])],Ce()}async function Da(){lt.value=!0;try{const t=await Un();me.value=(t||[]).sort((e,n)=>{const s=e.name.includes("中心")?-1:1,d=n.name.includes("中心")?-1:1;return s!==d?s-d:e.id-n.id})}catch{}finally{lt.value=!1}}async function Ca(){ot.value=!0;try{const t=await Hn(),e=(t==null?void 0:t.groups)||[];Be.value=e}catch{}finally{ot.value=!1}}async function Ft(t){ae.value=!0;try{const e={start_date:t.start,end_date:t.end};R.value.length>0&&(e.dept_ids=R.value.join(",")),z.value&&(e.channel_code=z.value);const n=await Gn(e);x.value={start_date:n.start_date,end_date:n.end_date,channel_code:n.channel_code||"",channel_name:n.channel_name||"",channel_filter_note:n.channel_filter_note||"",range_note:n.range_note||"",leaderboards:n.leaderboards||[]}}catch{x.value=null}finally{ae.value=!1}}async function Ce(){te.value=!0,x.value=null;try{const t={};if(R.value.length>0&&(t.dept_ids=R.value.join(",")),z.value&&(t.channel_code=z.value),B.value&&B.value[0]&&B.value[1]){const[s,d]=B.value,h={...t,start_date:s,end_date:d},b=await Wn(h);oe.value=[{label:s===d?s:`${s} ~ ${d}`,start_date:b.start_date,end_date:b.end_date,channel_code:b.channel_code||"",channel_name:b.channel_name||"",channel_group:b.channel_group||"",channel_filter_note:b.channel_filter_note||"",rows:b.rows||[],total:b.total}],await Ft({start:b.start_date,end:b.end_date});return}const e=await Ee(t);oe.value=((e==null?void 0:e.tables)||[]).map(s=>({label:s.label,start_date:s.start_date,end_date:s.end_date,channel_code:s.channel_code||"",channel_name:s.channel_name||"",channel_group:s.channel_group||"",channel_filter_note:s.channel_filter_note||"",rows:s.rows||[],total:s.total}));const n=at(new Date);await Ft({start:n,end:n})}catch(t){Pe.error((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"加载失败")}finally{te.value=!1,je.value?Mt():(Y.value=[],Ne.value={},We.value=null)}}function La(){R.value=[],B.value=null,z.value="",Ce()}function za(t){return t<=0?!1:me.value.some(e=>Number(e.pid)===t)}function $a(t){return{1:"待双审通过",2:"待发货",3:"已完成",4:"已取消",5:"已发货",6:"已签收",7:"进行中",8:"暂不制药",9:"拒收",10:"退款",11:"保留药方",12:"制药缓发"}[Number(t)]??"—"}function et(t){return t==null||!Number.isFinite(Number(t))?"—":Number(t).toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})}function Aa(t){return(K.value-1)*Xe.value+t+1}function Ra(t){const e=(t==null?void 0:t.appointment_date)!=null&&String(t.appointment_date)!==""?String(t.appointment_date):"",n=(t==null?void 0:t.period)!=null&&String(t.period)!==""?String(t.period):"",s=(t==null?void 0:t.appointment_time)!=null&&String(t.appointment_time)!==""?String(t.appointment_time):"",d=[n,s].filter(Boolean).join(" ");return e&&d?`${e} ${d}`:e||d||"—"}function Tt(t){if(!t)return"";const e=t.channel_dict_value;if(e!=null&&e!==""){const d=Number(e);if(Number.isFinite(d))return String(Math.trunc(d))}const n=t.channel_source;if(n==null)return"";const s=String(n).trim();return s===""||!/^\d+$/.test(s)?"":String(parseInt(s,10))}function Pa(t){if(t==null||t==="")return"—";const e=Number(t);if(Number.isFinite(e)&&e>=1e9&&e<1e15){const s=e<1e12?e*1e3:e,d=new Date(s);if(!Number.isNaN(d.getTime())){const h=d.getFullYear(),b=String(d.getMonth()+1).padStart(2,"0"),w=String(d.getDate()).padStart(2,"0"),T=String(d.getHours()).padStart(2,"0"),O=String(d.getMinutes()).padStart(2,"0");return`${h}-${b}-${w} ${T}:${O}`}}const n=String(t);return n.length>=16?n.slice(0,16):n}async function Le(){const t=Qe.value;if(t){de.value=!0;try{const e={page_no:K.value,page_size:Xe.value,start_time:`${t.start} 00:00:00`,end_time:`${t.end} 23:59:59`,exclude_fulfillment_cancelled:1,yeji_order_drawer:1};t.mode==="dept"?(e.assistant_dept_id=t.deptId,R.value.length>0&&(e.dept_ids=R.value.join(","))):(e.assistant_id=t.assistantId,t.erCenterRevisitSlot!==void 0&&(e.yeji_er_center_revisit_only=1,e.yeji_er_center_revisit_slot=t.erCenterRevisitSlot)),z.value&>.value&&le.value==="channel"&&(e.channel_code=z.value);const n=await Zn(e);ue.value=Array.isArray(n==null?void 0:n.lists)?n.lists:[],Ke.value=Number((n==null?void 0:n.count)??0),Q.value=n!=null&&n.extend&&typeof n.extend=="object"?n.extend:null,z.value&&le.value==="channel"&&Q.value&&Q.value.stats_yeji_drawer_total_performance_amount!=null&&(X.value={totalAmount:Number(Q.value.stats_yeji_drawer_total_performance_amount),totalOrderCount:Number(Q.value.stats_yeji_drawer_total_performance_order_count??0),channelAmount:Number(Q.value.stats_order_amount_performance??0),channelOrderCount:Number((n==null?void 0:n.count)??0)})}catch(e){Pe.error((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"加载业务订单失败"),ue.value=[],Ke.value=0,Q.value=null}finally{de.value=!1}}}function Ma(t,e){le.value="channel",X.value=null,Qe.value={mode:"dept",deptId:e.dept_id,deptName:e.dept_name,start:t.start_date,end:t.end_date},Ge.value=`业务订单 · ${e.dept_name}`,Je.value=`创建时间:${t.start_date} ~ ${t.end_date} · 与「接诊诊单」同口径:诊单医助或订单创建人落在本部门(含下级)· 不含履约已取消`,K.value=1,Se.value=!0,Le()}function Oa(t,e,n){le.value="channel",X.value=null,Qe.value={mode:"assistant",assistantId:t.admin_id,assistantName:t.name,start:e,end:n},Ge.value=`业务订单 · ${t.name}`,Je.value=`创建时间:${e} ~ ${n} · 诊单医助 · 不含履约已取消`,K.value=1,Se.value=!0,Le()}function ht(t,e,n,s){le.value="channel",X.value=null,Qe.value={mode:"assistant",assistantId:t.admin_id,assistantName:t.name,start:e,end:n,erCenterRevisitSlot:s};const d=s===0?"复诊合计":Ye(s);Ge.value=`业务订单 · ${t.name} · ${d}`,Je.value=`创建时间:${e} ~ ${n} · 诊单医助 · 仅二中心复诊口径 · ${d} · 不含履约已取消`,K.value=1,Se.value=!0,Le()}function Ia(t){if(!t||t.admin_id<=0||!x.value||Number(t.revisit_count??0)<=0)return;const{start_date:e,end_date:n}=x.value;ht({admin_id:t.admin_id,name:t.name},e,n,0)}function Va(t,e){if(!t||t.admin_id<=0||!x.value||J(t,e)<=0)return;const{start_date:n,end_date:s}=x.value;ht({admin_id:t.admin_id,name:t.name},n,s,e)}function Fa(){K.value=1,Le()}function Ta(t){K.value=t,Le()}function Ea(t){Xe.value=t,K.value=1,Le()}function ze(t){return t.dept_id<=0&&t.dept_name==="未归属中心"}function Ba(t,e){e.dept_id<=0||ze(e)||Number(e.revisit_count??0)<=0||Bt(t,e,0)}function Ya(t,e,n){e.dept_id<=0||ze(e)||J(e,n)<=0||Bt(t,e,n)}function Et(t){const e=Ct.value;!e||Number(t.order_count)<=0||ht({admin_id:t.admin_id,name:t.name},e.start,e.end,e.revisitSlot)}async function Bt(t,e,n){const s=n===0?"复诊合计":Ye(n);Dt.value=`${e.dept_name} · ${s} · ${t.start_date} ~ ${t.end_date}`,Ct.value={start:t.start_date,end:t.end_date,revisitSlot:n},Oe.value="",ge.value=[],dt.value=!0,ye.value=!0;try{const d={start_date:t.start_date,end_date:t.end_date,dept_id:e.dept_id,revisit_slot:n};R.value.length>0&&(d.dept_ids=R.value.join(",")),z.value&&(d.channel_code=z.value);const h=await qn(d);ge.value=Array.isArray(h==null?void 0:h.rows)?h.rows:[],Oe.value=typeof(h==null?void 0:h.note)=="string"?h.note:""}catch(d){Pe.error((d==null?void 0:d.msg)||(d==null?void 0:d.message)||"加载复诊拆解失败"),ge.value=[],Oe.value=""}finally{ye.value=!1}}function Yt(t){const e=[`区间:${t.start_date} ~ ${t.end_date}`];return z.value&&e.push(`渠道:${t.channel_name||z.value}`),R.value.length>0&&e.push(`已选展示部门 ${R.value.length} 个`),e.join(" · ")}async function Ua(t){St.value=Yt(t),Me.value="",fe.value=[],rt.value=!0,ve.value=!0;try{const e={start_date:t.start_date,end_date:t.end_date};R.value.length>0&&(e.dept_ids=R.value.join(",")),z.value&&(e.channel_code=z.value);const n=await Jn(e);fe.value=Array.isArray(n==null?void 0:n.rows)?n.rows:[],Me.value=typeof(n==null?void 0:n.note)=="string"?n.note:""}catch(e){Pe.error((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"加载未归属拆解失败"),fe.value=[],Me.value=""}finally{ve.value=!1}}function Ha(t,e,n){n.dept_id<=0||Number(n.lead_count)<=0||(t.stopPropagation(),Wa(e,n))}async function wt(){const t=zt.value;if(!t)return;const{tb:e,row:n}=t;se.value=!0;try{const s={start_date:e.start_date,end_date:e.end_date,dept_id:n.dept_id,page:Fe.value,page_size:Ue.value};R.value.length>0&&(s.dept_ids=R.value.join(",")),z.value&&(s.channel_code=z.value);const d=await Kn(s);be.value=Array.isArray(d==null?void 0:d.lists)?d.lists:[],Ve.value=Number((d==null?void 0:d.count)??0),Ie.value=typeof(d==null?void 0:d.note)=="string"?d.note:""}catch(s){Pe.error((s==null?void 0:s.msg)||(s==null?void 0:s.message)||"加载进线明细失败"),be.value=[],Ve.value=0,Ie.value=""}finally{se.value=!1}}async function Wa(t,e){zt.value={tb:t,row:e},Lt.value=`${e.dept_name} · ${Yt(t)}`,Ie.value="",be.value=[],Ve.value=0,Fe.value=1,Ue.value=20,ut.value=!0,await wt()}function qa(t){Fe.value=t,wt()}function Ga(t){Ue.value=t,Fe.value=1,wt()}function Ja(t){return(re.value-1)*ke.value+t+1}function Ut(t){return ze(t)?!0:t.dept_id>0}async function tt(){const t=pt.value;if(t){ie.value=!0;try{const e={start_date:t.start_date,end_date:t.end_date,page:re.value,page_size:ke.value};t.mode==="dept"?e.dept_id=t.dept_id:e.assistant_id=t.assistant_id,R.value.length>0&&(e.dept_ids=R.value.join(",")),z.value&&(e.channel_code=z.value);const n=await Xn(e);ne.value=Array.isArray(n==null?void 0:n.lists)?n.lists:[],we.value=Number((n==null?void 0:n.count)??0),he.value=typeof(n==null?void 0:n.note)=="string"?n.note:""}catch(e){Pe.error((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"加载挂号明细失败"),ne.value=[],we.value=0,he.value=""}finally{ie.value=!1}}}function Ka(t){if(!t||t.admin_id<=0||!x.value||Number(t.appointment_count??0)<=0)return;const e=x.value;pt.value={mode:"assistant",assistant_id:t.admin_id,name:t.name,start_date:e.start_date,end_date:e.end_date},ct.value=`${t.name} · 医助 · ${e.start_date} ~ ${e.end_date}`,he.value="",ne.value=[],we.value=0,re.value=1,ke.value=20,He.value=!0,tt()}function Xa(t,e){!Ut(e)||Number(e.appointment_booked_count??0)<=0||(pt.value={mode:"dept",dept_id:e.dept_id,dept_name:e.dept_name,start_date:t.start_date,end_date:t.end_date},ct.value=`${e.dept_name} · ${t.start_date} ~ ${t.end_date}`,he.value="",ne.value=[],we.value=0,re.value=1,ke.value=20,He.value=!0,tt())}function Qa(t){re.value=t,tt()}function Za(t){ke.value=t,re.value=1,tt()}function en(t,e){if(ze(e)){Ua(t);return}if(!(e.dept_id<=0)){if(za(e.dept_id)){R.value=[e.dept_id],Ce();return}Ma(t,e)}}function tn(t){if(!t||t.admin_id<=0||!x.value)return;const{start_date:e,end_date:n}=x.value;Oa(t,e,n)}function Ht(t){const e=t.channel_name?` · ${t.channel_name}`:"";return`${t.label}${e}`}function an(t){const e=t.rows.filter(b=>b.dept_id>0),n=e.map(b=>b.dept_name.length>10?`${b.dept_name.slice(0,10)}…`:b.dept_name),s=["#64748b","#38bdf8","#6366f1"],d=[{name:"进线",type:"bar",data:e.map(b=>b.lead_count),yAxisIndex:0,barMaxWidth:16},{name:"接诊",type:"bar",data:e.map(b=>b.consult_count),yAxisIndex:0,barMaxWidth:16},{name:"成交单",type:"bar",data:e.map(b=>b.deal_order_count),yAxisIndex:0,barMaxWidth:16},{name:"合计业绩",type:"bar",data:e.map(b=>b.performance_amount),yAxisIndex:1,barMaxWidth:14,itemStyle:{color:"#d97706"}}];t.channel_name&&d.push({name:`${t.channel_name}业绩`,type:"bar",data:e.map(b=>b.completed_performance_amount),yAxisIndex:1,barMaxWidth:14,itemStyle:{color:"#0d9488"}});const h=e.length>10;return{color:[...s,"#d97706","#0d9488"],tooltip:{trigger:"axis",axisPointer:{type:"cross"}},legend:{top:8,type:"scroll",textStyle:{fontSize:11}},grid:{left:52,right:52,top:48,bottom:h?56:28,containLabel:!1},dataZoom:h?[{type:"slider",bottom:4,start:0,end:Math.min(100,Math.ceil(12/Math.max(e.length,1)*100))}]:[],xAxis:{type:"category",data:n,axisLabel:{rotate:n.length>8?28:0,fontSize:10}},yAxis:[{type:"value",name:"数量",splitLine:{lineStyle:{type:"dashed",opacity:.55}}},{type:"value",name:"金额",splitLine:{show:!1}}],series:d}}function nn(t,e){const n=[...t.rows].sort((s,d)=>Number(d.fee_amount)-Number(s.fee_amount)).slice(0,15);return{color:["#2563eb"],tooltip:{trigger:"axis",axisPointer:{type:"shadow"},valueFormatter:s=>`${Number(s).toLocaleString("zh-CN")} 元`},grid:{left:8,right:20,top:12,bottom:8,containLabel:!0},xAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.6}}},yAxis:{type:"category",data:n.map(s=>s.name.length>8?`${s.name.slice(0,8)}…`:s.name).reverse(),axisLabel:{fontSize:11}},series:[{name:"诊金",type:"bar",data:n.map(s=>Number(s.fee_amount??0)).reverse(),barMaxWidth:20,itemStyle:{borderRadius:[0,6,6,0]}}]}}function Wt(t){return t.rows.some(e=>Number(e.fee_amount)>0)}function ln(t,e){const s=[...t.rows].filter(d=>Number(d.fee_amount)>0).sort((d,h)=>Number(h.fee_amount)-Number(d.fee_amount)).slice(0,10).map(d=>({name:d.name.length>6?`${d.name.slice(0,6)}…`:d.name,value:Number(d.fee_amount)}));return{color:["#2563eb","#0d9488","#d97706","#7c3aed","#64748b","#0891b2","#65a30d","#c026d3","#ea580c","#4f46e5"],tooltip:{trigger:"item",formatter:"{b}: {c} 元 ({d}%)"},legend:{type:"scroll",bottom:0,textStyle:{fontSize:9}},series:[{name:"诊金",type:"pie",radius:["38%","64%"],center:["50%","42%"],data:s,itemStyle:{borderRadius:5,borderColor:"#fff",borderWidth:2},label:{formatter:`{b}
-{d}%`,fontSize:10}}]}}function qt(t){return Number(t.total.lead_count)+Number(t.total.consult_count)+Number(t.total.deal_order_count)>0}function on(t){const e=Number(t.total.lead_count??0),n=Number(t.total.consult_count??0),s=Number(t.total.deal_order_count??0);return{tooltip:{trigger:"item",formatter:"{b}: {c}"},color:["#2563eb","#38bdf8","#0d9488"],series:[{type:"funnel",left:"8%",width:"84%",minSize:"12%",sort:"none",gap:6,label:{show:!0,position:"inside",formatter:`{b}
-{c}`,fontSize:11},data:[{value:e,name:"进线"},{value:n,name:"接诊"},{value:s,name:"成交单"}]}]}}function Gt(t){return t.rows.some(e=>e.dept_id>0&&Number(e.performance_amount)>0)}function sn(t){const e=t.rows.filter(d=>d.dept_id>0&&Number(d.performance_amount)>0).sort((d,h)=>Number(h.performance_amount)-Number(d.performance_amount));if(!e.length)return{series:[{type:"pie",data:[]}]};const s=e.slice(0,10).map(d=>({name:d.dept_name.length>8?`${d.dept_name.slice(0,8)}…`:d.dept_name,value:Number(d.performance_amount)}));if(e.length>10){const d=e.slice(10).reduce((h,b)=>h+Number(b.performance_amount),0);d>0&&s.push({name:"其它",value:d})}return{color:["#2563eb","#0d9488","#d97706","#7c3aed","#64748b","#0891b2","#65a30d","#c026d3","#ea580c","#4f46e5","#94a3b8"],tooltip:{trigger:"item",formatter:"{b}
{c} 元({d}%)"},legend:{type:"scroll",bottom:0,textStyle:{fontSize:10}},series:[{type:"pie",radius:["36%","62%"],center:["50%","44%"],data:s,itemStyle:{borderRadius:5,borderColor:"#fff",borderWidth:2},label:{formatter:`{b}
-{d}%`,fontSize:10}}]}}function kt(t){return{perf:"渠道业绩",deal:"渠道成交",aov:"渠道客单"}[t]??t}function N(t){return t==null||t===""?"0":Number(t).toLocaleString("en-US")}function W(t){return t==null||t===""?"0.0":Number(t).toLocaleString("en-US",{minimumFractionDigits:1,maximumFractionDigits:1})}function Z(t){if(t==null||t==="")return"0";const e=Number(t);return Number.isFinite(e)?Math.round(e).toLocaleString("zh-CN"):"0"}function Jt(t){return t==null||t===""?"—":Number(t).toLocaleString("en-US",{minimumFractionDigits:1,maximumFractionDigits:1})}function Kt(t){return t==null||t===""?"—":Number(t).toFixed(1)}function Xt(t){if(t==null||t==="")return"";const e=Number(t);return e>=1?"roi-good":e>=.8?"roi-mid":"roi-bad"}function rn(t){return t===null?"—":(t*100).toFixed(2)+"%"}function dn(t){return t===null?"":t>=1?"tp-good":t>=.8?"tp-mid":"tp-bad"}function un(t){return t>=1e4?(t/1e4).toFixed(1)+"万":String(t)}function at(t){const e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0");return`${e}-${n}-${s}`}return nl(async()=>{await Promise.all([Da(),Ca()]),Ce(),xa()}),(t,e)=>{const n=wn,s=kn,d=hn,h=jn,b=Nn,w=Dn,T=Sn,O=Cn,_=An,P=$n,A=Rn,ee=zn,M=Pn,$e=Ln,U=On,ce=Mn,Ae=In,Re=Vn,pe=Fn,V=xn;return o(),u("div",ll,[e[139]||(e[139]=a("header",{class:"yeji-masthead"},[a("div",{class:"yeji-masthead__inner"},[a("h1",{class:"yeji-masthead__title"},"业绩看板"),a("p",{class:"yeji-masthead__desc"},"渠道 · 部门 · 日期维度的业绩分析")])],-1)),i(O,{class:"yeji-panel filter-card",shadow:"never"},{default:c(()=>[a("div",ol,[a("div",sl,[a("div",il,[e[10]||(e[10]=a("span",{class:"lbl"},"渠道来源",-1)),i(d,{modelValue:z.value,"onUpdate:modelValue":e[0]||(e[0]=l=>z.value=l),filterable:"",placeholder:"渠道筛选",class:"filter-select filter-select--channel",loading:ot.value,onChange:Ce},{default:c(()=>[i(n,{label:"全部",value:""}),(o(!0),u(k,null,I(Be.value,l=>(o(),j(s,{key:l.group_name,label:l.group_name},{default:c(()=>[(o(!0),u(k,null,I(l.channels,g=>(o(),j(n,{key:g.channel_code,label:g.channel_name,value:g.channel_code},{default:c(()=>[a("div",rl,[a("span",dl,r(g.channel_name),1),a("span",ul,r(g.customer_count>0?g.customer_count:""),1)])]),_:2},1032,["label","value"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","loading"])]),a("div",cl,[e[11]||(e[11]=a("span",{class:"lbl"},"展示部门",-1)),q((o(),u("div",pl,[i(h,{modelValue:R.value,"onUpdate:modelValue":e[1]||(e[1]=l=>R.value=l),data:sa.value,multiple:"","collapse-tags":"","collapse-tags-tooltip":"",filterable:"","check-strictly":"","render-after-expand":!1,"default-expand-all":!0,placeholder:"默认:所有「中心」部门",class:"filter-dept-tree-select","node-key":"id",props:la},null,8,["modelValue","data"])])),[[V,lt.value]])]),a("div",_l,[e[12]||(e[12]=a("span",{class:"lbl"},"日期范围",-1)),i(b,{modelValue:B.value,"onUpdate:modelValue":e[2]||(e[2]=l=>B.value=l),type:"daterange","value-format":"YYYY-MM-DD","start-placeholder":"开始","end-placeholder":"结束",clearable:!0,shortcuts:Vt,class:"filter-date-picker"},null,8,["modelValue"])]),a("div",ml,[i(T,{type:"primary",class:"filter-btn filter-btn--query",loading:te.value,onClick:Ce},{default:c(()=>[i(w,{class:"filter-btn__icon"},{default:c(()=>[i(S(En))]),_:1}),e[13]||(e[13]=p(" 查询 ",-1))]),_:1},8,["loading"]),i(T,{class:"filter-btn filter-btn--reset",disabled:te.value,onClick:La},{default:c(()=>[i(w,{class:"filter-btn__icon"},{default:c(()=>[i(S(Bn))]),_:1}),e[14]||(e[14]=p(" 重置 ",-1))]),_:1},8,["disabled"])])]),a("div",vl,[e[15]||(e[15]=a("span",{class:"filter-quick__title"},"快捷日期",-1)),a("div",fl,[(o(),u(k,null,I(Vt,l=>a("button",{key:l.text,type:"button",class:"date-pill",onClick:g=>Sa(l)},r(l.text),9,yl)),64))])])])]),_:1}),i(O,{class:"yeji-panel yeji-main-tabs-card",shadow:"never"},{default:c(()=>[e[114]||(e[114]=a("div",{class:"yeji-table-tabs-head"},[a("span",{class:"yeji-table-tabs-head__title"},"表格统计"),a("span",{class:"yeji-table-tabs-head__hint"},"列较多时可横向滚动浏览;「部门 / 排名」列在滚动时保持固定。")],-1)),i($e,{modelValue:$t.value,"onUpdate:modelValue":e[3]||(e[3]=l=>$t.value=l),class:"yeji-view-tabs"},{default:c(()=>[i(ee,{label:"医生统计",name:"doctor",lazy:""},{default:c(()=>[je.value?(o(),j(O,{key:0,class:"yeji-panel doctor-daily-card doctor-daily-card--nested",shadow:"never"},{header:c(()=>[a("div",gl,[a("div",bl,[e[16]||(e[16]=a("span",{class:"doctor-daily-card__title"},"医生明细",-1)),qe.value?(o(),u("span",hl,r(qe.value),1)):y("",!0)]),a("div",wl,[i(T,{type:"primary",size:"small",loading:xe.value,onClick:Mt},{default:c(()=>[...e[17]||(e[17]=[p(" 刷新 ",-1)])]),_:1},8,["loading"])])])]),default:c(()=>[q((o(),j(P,{data:Y.value,size:"small",border:"",stripe:"",class:"doctor-daily-table","show-summary":"","summary-method":ba},{default:c(()=>[i(_,{prop:"doctor_name",label:"医生","min-width":"100",fixed:""}),i(_,{prop:"system_prescription_count",label:"系统开方","min-width":"88",align:"right"}),i(_,{prop:"manual_prescription_count",label:"手动开方","min-width":"88",align:"right"}),i(_,{prop:"deal_amount",label:"成交金额","min-width":"110",align:"right"},{default:c(({row:l})=>[p("¥ "+r(Pt(l.deal_amount)),1)]),_:1}),i(_,{prop:"deal_order_count",label:"接诊诊单","min-width":"88",align:"right"}),i(_,{prop:"appointment_completed",label:"挂号完成","min-width":"88",align:"right"}),i(_,{prop:"appointment_missed",label:"过号","min-width":"72",align:"right"}),i(_,{prop:"appointment_cancelled",label:"取消","min-width":"72",align:"right"})]),_:1},8,["data"])),[[V,xe.value]])]),_:1})):(o(),j(A,{key:1,description:"当前账号无医生统计权限"}))]),_:1}),i(ee,{label:"医助排行榜",name:"leaderboard",lazy:""},{default:c(()=>[x.value||ae.value?q((o(),u("div",kl,[x.value?(o(),u(k,{key:0},[a("p",jl,[p(r(x.value.range_note)+" ",1),a("span",xl,r(x.value.start_date)+" ~ "+r(x.value.end_date),1)]),a("div",Nl,[(o(!0),u(k,null,I(x.value.leaderboards,l=>(o(),u(k,{key:l.dept_id},[l.rows.length>0?(o(),u("div",Sl,[a("div",Dl,[p(r(l.dept_name)+" · 医助排行榜 ",1),x.value.channel_name?(o(),u("span",Cl," ("+r(x.value.channel_name)+") ",1)):y("",!0)]),a("div",Ll,[a("table",zl,[a("thead",null,[a("tr",null,[e[19]||(e[19]=a("th",{class:"col-rank"},"排名",-1)),e[20]||(e[20]=a("th",{class:"col-abbr"},"部门",-1)),e[21]||(e[21]=a("th",{class:"col-name"},"姓名",-1)),e[22]||(e[22]=a("th",{class:"col-consult"},"接诊单数",-1)),e[23]||(e[23]=a("th",{class:"col-deal"},"接诊诊单",-1)),e[24]||(e[24]=a("th",{class:"col-assign"},"被指派数",-1)),e[25]||(e[25]=a("th",{class:"col-appointment"},"预约诊单",-1)),l.er_center_subtree?(o(),u(k,{key:0},[e[18]||(e[18]=a("th",{class:"col-revisit"},"复诊合计",-1)),(o(!0),u(k,null,I(Nt(l),g=>(o(),u("th",{key:"lbh-"+l.dept_id+"-"+g,class:"col-revisit-slot"},r(Ye(g)),1))),128))],64)):y("",!0),e[26]||(e[26]=a("th",null,"诊金",-1)),e[27]||(e[27]=a("th",null,[p("接诊率"),a("br"),a("span",{class:"th-sub"},"(元/进线)")],-1))])]),a("tbody",null,[(o(!0),u(k,null,I(l.rows,g=>(o(),u("tr",{key:g.admin_id,class:"yeji-row--action",onClick:m=>tn(g)},[a("td",Al,r(g.rank),1),a("td",Rl,r(g.dept_abbr),1),a("td",Pl,r(g.name),1),a("td",Ml,r(Z(g.consult_count)),1),a("td",Ol,r(Z(g.deal_order_count)),1),a("td",Il,r(Z(g.assign_count??0)),1),a("td",{class:"col-appointment",onClick:_e(m=>Ka(g),["stop"])},[Number(g.appointment_count??0)>0?(o(),u("span",Fl,r(Z(g.appointment_count??0)),1)):(o(),u(k,{key:1},[p(r(Z(g.appointment_count??0)),1)],64))],8,Vl),l.er_center_subtree?(o(),u(k,{key:0},[a("td",{class:"col-revisit",onClick:_e(m=>Ia(g),["stop"])},[Number(g.revisit_count??0)>0?(o(),u("span",El,r(Z(g.revisit_count??0)),1)):(o(),u(k,{key:1},[p(r(Z(g.revisit_count??0)),1)],64))],8,Tl),(o(!0),u(k,null,I(Nt(l),m=>(o(),u("td",{key:"lbc-"+g.admin_id+"-"+m,class:"col-revisit-slot",onClick:_e(E=>Va(g,m),["stop"])},[J(g,m)>0?(o(),u("span",Yl,r(Z(J(g,m))),1)):(o(),u(k,{key:1},[p(r(Z(J(g,m))),1)],64))],8,Bl))),128))],64)):y("",!0),a("td",null,r(W(g.fee_amount)),1),a("td",null,r(W(g.consult_rate)),1)],8,$l))),128))])])]),a("div",Ul,[e[28]||(e[28]=a("span",null,"诊金单位:元 · 被指派数与部门业绩表同口径 · 接诊率 = 诊金 ÷ 进线(元/进线)",-1)),l.er_center_subtree?(o(),u("span",Hl," · 复诊列为二中心口径(同一诊单业务单序列第 2 笔起),点击数字查看对应业务订单 ")):y("",!0),e[29]||(e[29]=a("span",null," · 预约诊单:预约日期在统计区间内,状态含已预约/已完成/已过号(不含已取消),医助归属与接诊单数一致;各科组展示全部医助。 ",-1))])])):y("",!0)],64))),128))]),!ae.value&&Na.value===0?(o(),u("div",Wl,[i(A,{description:"当前筛选下暂无医助排行数据"})])):y("",!0)],64)):y("",!0)])),[[V,ae.value]]):ae.value?y("",!0):(o(),j(A,{key:1,class:"yeji-charts-empty",description:"当前筛选下暂无医助排行数据"}))]),_:1}),i(ee,{label:"甄养堂互联网医院诊金",name:"zyyt",lazy:""},{default:c(()=>[e[113]||(e[113]=a("p",{class:"yeji-zyyt-intro"}," 各中心部门诊金、业绩、进线与 ROI 等,与顶部渠道、展示部门、日期筛选联动。本月 / 本周 / 今日等多张业绩表中「预约诊单」列数字可点开查看每条挂号记录。 ",-1)),De.value||Ze.value?q((o(),u("div",ql,[De.value?(o(),u("div",Gl,[a("div",Jl,r(De.value.title),1),a("div",Kl,[(o(!0),u(k,null,I(De.value.sections,l=>(o(),u("div",{key:l.dept_id,class:"tp-section"},[a("div",Xl,[a("div",Ql,[l.parent_dept_name?(o(),u("span",Zl,r(l.parent_dept_name),1)):y("",!0),a("span",eo,r(l.dept_name)+"目标",1)]),a("span",to,r(un(l.target_amount)),1)]),a("table",ao,[a("tbody",null,[a("tr",null,[e[30]||(e[30]=a("td",{class:"tp-lbl"},"昨日诊金",-1)),a("td",no,r(N(l.yesterday_amount)),1)]),l.douyin_amount!==null?(o(),u("tr",lo,[e[31]||(e[31]=a("td",{class:"tp-lbl"},"抖音总诊金",-1)),a("td",oo,r(N(l.douyin_amount)),1)])):y("",!0),l.tuifen_amount!==null?(o(),u("tr",so,[e[32]||(e[32]=a("td",{class:"tp-lbl"},"推粉总诊金",-1)),a("td",io,r(N(l.tuifen_amount)),1)])):y("",!0),a("tr",null,[e[33]||(e[33]=a("td",{class:"tp-lbl"},"总诊金",-1)),a("td",ro,r(N(l.total_amount)),1)]),a("tr",null,[e[34]||(e[34]=a("td",{class:"tp-lbl"},"目标进度",-1)),a("td",uo,r(W(l.target_progress)),1)]),a("tr",null,[e[35]||(e[35]=a("td",{class:"tp-lbl"},"完成进度",-1)),a("td",{class:nt(["tp-val",dn(l.completion_rate)])},r(rn(l.completion_rate)),3)])])])]))),128))])])):y("",!0)])),[[V,Ze.value]]):y("",!0),q((o(),u("div",co,[!te.value&&oe.value.length===0?(o(),u("div",po,[i(A,{description:"暂无数据"})])):y("",!0),(o(!0),u(k,null,I(oe.value,(l,g)=>(o(),u("div",{key:g,class:"yeji-table"},[a("div",_o,r(Ht(l)),1),a("div",mo,[a("table",vo,[a("thead",null,[a("tr",null,[e[111]||(e[111]=a("th",{class:"col-dept"},"部门",-1)),a("th",null,[e[42]||(e[42]=a("span",null,"进线数据",-1)),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[a("div",fo,[e[40]||(e[40]=p(" add_external_contact 事件数,按接待企微成员归属部门;定渠道时须客户带对应企微标签。",-1)),e[41]||(e[41]=a("br",null,null,-1)),l.channel_name?(o(),u(k,{key:0},[e[36]||(e[36]=a("b",null,"二中心及其组织下级",-1)),e[37]||(e[37]=p("(与部门 ErCenter 子树一致)在选定渠道下进线计 ",-1)),e[38]||(e[38]=a("b",null,"0",-1)),e[39]||(e[39]=p("。 ",-1))],64)):y("",!0)])]),default:c(()=>[i(w,{class:"col-info"},{default:c(()=>[i(S(F))]),_:1})]),_:2},1024)]),a("th",null,[e[58]||(e[58]=a("span",null,"被指派数",-1)),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[a("div",yo,[e[50]||(e[50]=a("b",null,"tcm_diagnosis_assign_log",-1)),e[51]||(e[51]=p(" 行数(成功指派:",-1)),e[52]||(e[52]=a("b",null,"to_assistant_id > 0",-1)),e[53]||(e[53]=p("),**仅按 ",-1)),e[54]||(e[54]=a("b",null,"related_po_create_time",-1)),e[55]||(e[55]=p("** 落在所选区间内(与日志表快照一致;诊单手动指派已写入该字段)。按",-1)),e[56]||(e[56]=a("b",null,"被指派医助",-1)),e[57]||(e[57]=p("归属展示部门。",-1)),l.channel_name?(o(),u(k,{key:0},[p(" 选定渠道时收窄与「"+r(l.channel_name)+"」业绩同口径(标签诊单或 channels EXISTS)。",1),e[43]||(e[43]=a("br",null,null,-1)),e[44]||(e[44]=a("b",null,"二中心及其组织下级",-1)),e[45]||(e[45]=p("在选定渠道下本列计 ",-1)),e[46]||(e[46]=a("b",null,"0",-1)),e[47]||(e[47]=p("。 ",-1))],64)):(o(),u(k,{key:1},[e[48]||(e[48]=a("br",null,null,-1)),e[49]||(e[49]=p("未选渠道时不限客户来源,与「合计业绩」列渠道无关。",-1))],64))])]),default:c(()=>[i(w,{class:"col-info"},{default:c(()=>[i(S(F))]),_:1})]),_:2},1024)]),a("th",null,[e[60]||(e[60]=a("span",null,"复诊合计",-1)),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[...e[59]||(e[59]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[p(" 仅"),a("b",null,"名称含「二中心」"),p("的部门及其组织下级:与本表区间一致,按患者业务单 "),a("b",null,"create_time"),p(" 排序,"),a("b",null,"第 1 笔不计"),p(";第 2 笔起计入合计,并分列复诊2、复诊三…(含本部门及下级汇总)。订单条件同「合计业绩」列(非取消)。非二中心子树部门为 0。 ")],-1)])]),default:c(()=>[i(w,{class:"col-info"},{default:c(()=>[i(S(F))]),_:1})]),_:1})]),(o(!0),u(k,null,I(it.value,m=>(o(),u("th",{key:"yjv-h-"+m},[a("span",null,r(Ye(m)),1),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[a("div",go,[e[61]||(e[61]=p(" 该列统计区间内患者第 ",-1)),a("b",null,r(m),1),e[62]||(e[62]=p(" 笔业务单条数(第 1 笔初诊单列不计);归属与合计列相同。 ",-1))])]),default:c(()=>[i(w,{class:"col-info"},{default:c(()=>[i(S(F))]),_:1})]),_:2},1024)]))),128)),a("th",null,[e[64]||(e[64]=a("span",null,"合计业绩",-1)),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[...e[63]||(e[63]=[a("div",{style:{"max-width":"300px","line-height":"1.7","font-size":"12px"}},[p(" 按订单"),a("b",null,"创建时间"),p("统计(剔除履约已取消),金额与"),a("b",null,"接诊诊单"),p("列一致:诊单"),a("b",null,"医助"),p("或订单"),a("b",null,"创建人"),p("的人事部门落在本展示行(含下级)即计入,多行命中时取最深的展示部门。"),a("br"),a("b",null,"不受渠道筛选影响"),p("。与侧栏按部门打开的业务订单列表可对齐。 ")],-1)])]),default:c(()=>[i(w,{class:"col-info"},{default:c(()=>[i(S(F))]),_:1})]),_:1})]),l.channel_name?(o(),u("th",bo,[a("span",ho,r(kt("perf")),1),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[a("div",wo,[p(" 「"+r(l.channel_name)+"」渠道业绩(与卡片标题渠道一致)。与「处方订单列表」业绩",1),e[65]||(e[65]=a("b",null,"同口径",-1)),e[66]||(e[66]=p(":按订单 ",-1)),e[67]||(e[67]=a("b",null,"create_time",-1)),e[68]||(e[68]=p(" 归日,剔除履约已取消(4)。",-1)),e[69]||(e[69]=a("br",null,null,-1)),e[70]||(e[70]=p(" 渠道判定用 EXISTS:该患者有任一挂号 ",-1)),e[71]||(e[71]=a("b",null,"channels 命中字典 + status=3",-1)),e[72]||(e[72]=p("(不限挂号时点)。 ",-1))])]),default:c(()=>[i(w,{class:"col-info","aria-label":"说明"},{default:c(()=>[i(S(F))]),_:1})]),_:2},1024)])):y("",!0),a("th",null,[e[74]||(e[74]=a("span",null,"预约诊单",-1)),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[...e[73]||(e[73]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[p(" 已预约 / 已完成 / 已过号(不含已取消),按"),a("b",null,"预约日期"),p("落在区间内统计;部门归属医助优先,否则接诊医生;与"),a("b",null,"医助排行榜 · 预约诊单"),p("及明细弹窗同口径。"),a("br"),p(" 点击数字可查看每条挂号记录。 ")],-1)])]),default:c(()=>[i(w,{class:"col-info"},{default:c(()=>[i(S(F))]),_:1})]),_:1})]),a("th",null,[e[76]||(e[76]=a("span",null,"已完成挂号",-1)),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[...e[75]||(e[75]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[p(" 仅"),a("b",null,"已完成"),p("(status=3),与 admin「医生预约 / 已完成」列表计数条件一致(appointment_date、诊单未软删);部门归属医助优先,否则接诊医生。 ")],-1)])]),default:c(()=>[i(w,{class:"col-info"},{default:c(()=>[i(S(F))]),_:1})]),_:1})]),a("th",null,[e[78]||(e[78]=a("span",null,"接诊诊单",-1)),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[...e[77]||(e[77]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[a("b",null,"业务订单条数"),p("(非取消):订单 "),a("b",null,"create_time"),p(" 落入区间、"),a("b",null,"fulfillment_status ≠ 4"),p(";与列表筛选 "),a("b",null,"assistant_dept_id"),p(" 时一致——诊单 "),a("b",null,"医助"),p("或订单 "),a("b",null,"创建人"),p("的人事部门落在该部门子树即计入(表格多行命中时取最深的展示部门)。与侧栏勾选「与表格业绩对齐」时的集合可能略有差异。选定渠道时本列仍为全量。 ")],-1)])]),default:c(()=>[i(w,{class:"col-info"},{default:c(()=>[i(S(F))]),_:1})]),_:1})]),l.channel_name?(o(),u("th",ko,[a("span",jo,r(kt("deal")),1),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[a("div",xo,[p(" 「"+r(l.channel_name)+"」渠道成交单数;与渠道业绩同源:区间内 ",1),e[79]||(e[79]=a("b",null,"非取消业务订单",-1)),e[80]||(e[80]=p(" 条数,按订单 ",-1)),e[81]||(e[81]=a("b",null,"create_time",-1)),e[82]||(e[82]=p(" 归日;渠道判定同业绩列。 ",-1))])]),default:c(()=>[i(w,{class:"col-info","aria-label":"说明"},{default:c(()=>[i(S(F))]),_:1})]),_:2},1024)])):y("",!0),l.channel_name?(o(),u("th",No,[a("span",So,r(kt("aov")),1),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[a("div",Do," 「"+r(l.channel_name)+"」渠道客单价 ≈ 渠道业绩 ÷ 渠道成交单。 ",1)]),default:c(()=>[i(w,{class:"col-info","aria-label":"说明"},{default:c(()=>[i(S(F))]),_:1})]),_:2},1024)])):y("",!0),a("th",null,[e[108]||(e[108]=a("span",null,"ROI",-1)),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[a("div",Co,[l.channel_name?(o(),u(k,{key:0},[e[83]||(e[83]=p(" 有渠道时:",-1)),e[84]||(e[84]=a("b",null,"合计行 ROI",-1)),e[85]||(e[85]=p(" = ",-1)),a("b",null,r(l.channel_name)+"业绩合计",1),e[86]||(e[86]=p("(与上表该渠道业绩列合计一致,",-1)),e[87]||(e[87]=a("b",null,"不含二中心及其组织下级",-1)),e[88]||(e[88]=p(")÷ ",-1)),e[89]||(e[89]=a("b",null,"投放成本合计",-1)),e[90]||(e[90]=p("。",-1)),e[91]||(e[91]=a("br",null,null,-1)),e[92]||(e[92]=p(" 部门行 ROI = 该部门 ",-1)),a("b",null,r(l.channel_name)+"业绩",1),e[93]||(e[93]=p(" ÷ 该部门 ",-1)),e[94]||(e[94]=a("b",null,"投放成本",-1)),e[95]||(e[95]=p(";",-1)),e[96]||(e[96]=a("b",null,"二中心子树",-1)),e[97]||(e[97]=p("部门该渠道业绩与进线为 0、投放成本分摊进线计 0,故无 ROI。与「合计业绩」列无关。 ",-1))],64)):(o(),u(k,{key:1},[e[98]||(e[98]=a("b",null,"合计行 ROI",-1)),e[99]||(e[99]=p(" = 全表业绩合计(",-1)),e[100]||(e[100]=a("b",null,"不含二中心子树",-1)),e[101]||(e[101]=p("各部门行业绩)÷ ",-1)),e[102]||(e[102]=a("b",null,"投放成本合计",-1)),e[103]||(e[103]=p(";",-1)),e[104]||(e[104]=a("br",null,null,-1)),e[105]||(e[105]=p(" 部门行 = 该部门「合计业绩」口径业绩 ÷ 该部门均摊投放成本;",-1)),e[106]||(e[106]=a("b",null,"二中心子树",-1)),e[107]||(e[107]=p("部门不参与成本分摊(进线占比计 0),故无 ROI。 ",-1))],64))])]),default:c(()=>[i(w,{class:"col-info"},{default:c(()=>[i(S(F))]),_:1})]),_:2},1024)]),a("th",null,[e[110]||(e[110]=a("span",null,"投放成本",-1)),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[...e[109]||(e[109]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[p(" 区间与渠道与账务表一致后得到"),a("b",null,"总投放成本"),p(";"),a("b",null,"单进线成本"),p(" = 总成本 ÷ 各展示部门"),a("b",null,"进线合计"),p(";"),a("br"),p(" 各部门行投放成本 = 单进线成本 × 该部门进线(四舍五入尾差并入进线最多的部门)。"),a("b",null,"二中心及其组织下级"),p("进线在分摊中计 "),a("b",null,"0"),p("(与 ROI 分子扣除范围一致)。 ")],-1)])]),default:c(()=>[i(w,{class:"col-info"},{default:c(()=>[i(S(F))]),_:1})]),_:1})])])]),a("tbody",null,[(o(!0),u(k,null,I(l.rows,m=>(o(),u("tr",{key:`${g}-${m.dept_id}-${m.dept_name}`,class:nt(["yeji-row--action",{"yeji-row--unassigned":ze(m),"yeji-row--idle":m.dept_id<=0&&!ze(m)}]),onClick:E=>en(l,m)},[a("td",zo,r(m.dept_name),1),a("td",{onClick:E=>Ha(E,l,m)},[m.dept_id>0&&Number(m.lead_count)>0?(o(),u("span",Ao,r(N(m.lead_count)),1)):(o(),u(k,{key:1},[p(r(N(m.lead_count)),1)],64))],8,$o),a("td",null,r(N(m.assign_count??0)),1),a("td",{onClick:_e(E=>Ba(l,m),["stop"])},[m.dept_id>0&&Number(m.revisit_count??0)>0?(o(),u("span",Po,r(N(m.revisit_count??0)),1)):(o(),u(k,{key:1},[p(r(N(m.revisit_count??0)),1)],64))],8,Ro),(o(!0),u(k,null,I(it.value,E=>(o(),u("td",{key:"yjv-"+g+"-"+m.dept_id+"-"+E,onClick:_e(Qt=>Ya(l,m,E),["stop"])},[m.dept_id>0&&J(m,E)>0?(o(),u("span",Oo,r(N(J(m,E))),1)):(o(),u(k,{key:1},[p(r(N(J(m,E))),1)],64))],8,Mo))),128)),a("td",null,r(W(m.performance_amount)),1),l.channel_name?(o(),u("td",Io,r(W(m.completed_performance_amount)),1)):y("",!0),a("td",{onClick:_e(E=>Xa(l,m),["stop"])},[Ut(m)&&Number(m.appointment_booked_count??0)>0?(o(),u("span",Fo,r(N(m.appointment_booked_count??0)),1)):(o(),u(k,{key:1},[p(r(N(m.appointment_booked_count??0)),1)],64))],8,Vo),a("td",null,r(N(m.consult_count)),1),a("td",null,r(N(m.deal_order_count)),1),l.channel_name?(o(),u("td",To,r(N(m.channel_consult_count)),1)):y("",!0),l.channel_name?(o(),u("td",Eo,r(Jt(m.channel_avg_price)),1)):y("",!0),a("td",{class:nt(Xt(m.roi))},r(Kt(m.roi)),3),a("td",null,r(W(m.cost_amount)),1)],10,Lo))),128)),a("tr",Bo,[e[112]||(e[112]=a("td",{class:"col-dept"},"合计",-1)),a("td",null,r(N(l.total.lead_count)),1),a("td",null,r(N(l.total.assign_count??0)),1),a("td",null,r(N(l.total.revisit_count??0)),1),(o(!0),u(k,null,I(it.value,m=>(o(),u("td",{key:"yjvt-"+g+"-"+m},r(N(J(l.total,m))),1))),128)),a("td",null,r(W(l.total.performance_amount)),1),l.channel_name?(o(),u("td",Yo,r(W(l.total.completed_performance_amount)),1)):y("",!0),a("td",null,r(N(l.total.appointment_booked_count??0)),1),a("td",null,r(N(l.total.consult_count)),1),a("td",null,r(N(l.total.deal_order_count)),1),l.channel_name?(o(),u("td",Uo,r(N(l.total.channel_consult_count)),1)):y("",!0),l.channel_name?(o(),u("td",Ho,r(Jt(l.total.channel_avg_price)),1)):y("",!0),a("td",{class:nt(Xt(l.total.roi))},r(Kt(l.total.roi)),3),a("td",null,r(W(l.total.cost_amount)),1)])])])]),a("div",Wo,[a("span",null,"区间:"+r(l.start_date)+" ~ "+r(l.end_date),1),l.channel_name?(o(),u("span",qo," · 渠道:"+r(l.channel_name),1)):y("",!0),l.total.cost_per_lead!=null&&l.total.cost_per_lead>0?(o(),u("span",Go," · 单进线成本:"+r(W(l.total.cost_per_lead))+" 元 ",1)):y("",!0)])]))),128))])),[[V,te.value]])]),_:1})]),_:1},8,["modelValue"])]),_:1}),i(O,{class:"yeji-panel yeji-charts-only-card",shadow:"never"},{default:c(()=>[e[124]||(e[124]=a("div",{class:"yeji-charts-only-head"},"统计图",-1)),q((o(),u("div",Jo,[pa.value?(o(),u(k,{key:0},[je.value&&(_t.value||mt.value||vt.value||ft.value||yt.value)?(o(),u("section",Ko,[a("h3",Xo,[e[115]||(e[115]=p(" 医生统计 ",-1)),qe.value?(o(),u("span",Qo,r(qe.value),1)):y("",!0)]),i(ce,{gutter:16},{default:c(()=>[i(U,{xs:24,lg:9},{default:c(()=>[a("div",Zo,[e[116]||(e[116]=a("div",{class:"yeji-chart-panel__label"},"成交金额 TOP(条形)",-1)),_t.value?(o(),j(S(G),{key:0,class:"yeji-echart",option:fa.value,autoresize:""},null,8,["option"])):(o(),j(A,{key:1,description:"暂无成交金额数据","image-size":72}))])]),_:1}),i(U,{xs:24,lg:8},{default:c(()=>[a("div",es,[e[117]||(e[117]=a("div",{class:"yeji-chart-panel__label"},"开方构成(堆叠柱)",-1)),mt.value?(o(),j(S(G),{key:0,class:"yeji-echart yeji-echart--short",option:ya.value,autoresize:""},null,8,["option"])):(o(),j(A,{key:1,description:"暂无开方数据","image-size":72}))])]),_:1}),i(U,{xs:24,lg:7},{default:c(()=>[a("div",ts,[e[118]||(e[118]=a("div",{class:"yeji-chart-panel__label"},"挂号结果(环形 · 表尾合计)",-1)),vt.value?(o(),j(S(G),{key:0,class:"yeji-echart yeji-echart--short",option:_a.value,autoresize:""},null,8,["option"])):(o(),j(A,{key:1,description:"暂无挂号汇总","image-size":72}))])]),_:1})]),_:1}),i(ce,{gutter:16,class:"yeji-chart-subrow"},{default:c(()=>[i(U,{xs:24,lg:12},{default:c(()=>[a("div",as,[e[119]||(e[119]=a("div",{class:"yeji-chart-panel__label"},"接诊诊单 × 金额(散点)",-1)),ft.value?(o(),j(S(G),{key:0,class:"yeji-echart yeji-echart--compact",option:ma.value,autoresize:""},null,8,["option"])):(o(),j(A,{key:1,description:"至少两名医生同时有接诊诊单与金额时可展示","image-size":72}))])]),_:1}),i(U,{xs:24,lg:12},{default:c(()=>[a("div",ns,[e[120]||(e[120]=a("div",{class:"yeji-chart-panel__label"},"TOP 医生雷达(相对最高值归一)",-1)),yt.value?(o(),j(S(G),{key:0,class:"yeji-echart yeji-echart--compact",option:va.value,autoresize:""},null,8,["option"])):(o(),j(A,{key:1,description:"至少两名医生有数据时可展示","image-size":72}))])]),_:1})]),_:1})])):y("",!0),(o(!0),u(k,null,I(oe.value,(l,g)=>(o(),u(k,{key:"dept-chart-"+g},[Rt(l)?(o(),u("section",ls,[a("h3",os,r(Ht(l)),1),i(S(G),{class:"yeji-echart yeji-echart--tall",option:an(l),autoresize:""},null,8,["option"]),qt(l)||Gt(l)?(o(),j(ce,{key:0,gutter:16,class:"yeji-chart-subrow"},{default:c(()=>[qt(l)?(o(),j(U,{key:0,xs:24,md:12},{default:c(()=>[a("div",ss,[e[121]||(e[121]=a("div",{class:"yeji-chart-panel__label"}," 进线 → 接诊 → 成交(汇总漏斗) ",-1)),i(S(G),{class:"yeji-echart yeji-echart--compact",option:on(l),autoresize:""},null,8,["option"])])]),_:2},1024)):y("",!0),Gt(l)?(o(),j(U,{key:1,xs:24,md:12},{default:c(()=>[a("div",is,[e[122]||(e[122]=a("div",{class:"yeji-chart-panel__label"}," 部门合计业绩占比(TOP10 + 其它) ",-1)),i(S(G),{class:"yeji-echart yeji-echart--compact",option:sn(l),autoresize:""},null,8,["option"])])]),_:2},1024)):y("",!0)]),_:2},1024)):y("",!0)])):y("",!0)],64))),128)),x.value?(o(!0),u(k,{key:1},I(At.value,l=>(o(),u("section",{key:"lb-chart-"+l.dept_id,class:"yeji-chart-block"},[a("h3",rs,[p(r(l.dept_name)+" · 医助 ",1),x.value.channel_name?(o(),u("span",ds," ("+r(x.value.channel_name)+") ",1)):y("",!0),a("span",us,r(x.value.start_date)+"~"+r(x.value.end_date),1)]),i(ce,{gutter:16},{default:c(()=>[i(U,{xs:24,lg:Wt(l)?14:24},{default:c(()=>[i(S(G),{class:"yeji-echart",option:nn(l,x.value),autoresize:""},null,8,["option"])]),_:2},1032,["lg"]),Wt(l)?(o(),j(U,{key:0,xs:24,lg:10},{default:c(()=>[a("div",cs,[e[123]||(e[123]=a("div",{class:"yeji-chart-panel__label"},"诊金占比",-1)),i(S(G),{class:"yeji-echart yeji-echart--compact",option:ln(l,x.value),autoresize:""},null,8,["option"])])]),_:2},1024)):y("",!0)]),_:2},1024)]))),128)):y("",!0)],64)):!te.value&&(!je.value||!xe.value)&&!ae.value?(o(),j(A,{key:1,class:"yeji-charts-empty",description:"当前筛选下暂无图表数据,请调整条件后查询"})):y("",!0)])),[[V,te.value||je.value&&xe.value||ae.value]])]),_:1}),i(Re,{modelValue:Se.value,"onUpdate:modelValue":e[5]||(e[5]=l=>Se.value=l),direction:"rtl",size:"min(1120px, 98vw)","destroy-on-close":"",class:"yeji-order-drawer","show-close":!0},{header:c(()=>[a("div",ps,[a("h3",_s,r(Ge.value),1),a("p",ms,r(Je.value),1)])]),default:c(()=>[a("div",vs,[a("section",fs,[a("div",ys,[e[125]||(e[125]=a("span",{class:"yeji-order-drawer__stat-label"},"符合条件的订单",-1)),a("span",gs,r(Ke.value.toLocaleString("zh-CN"))+" 笔",1)]),a("div",bs,[e[126]||(e[126]=a("span",{class:"yeji-order-drawer__stat-label"},[p(" 约诊 "),a("span",{class:"yeji-order-drawer__stat-note"},"(已完成挂号;日期按挂号 appointment_date;医助=挂号或诊单,与看板接诊一致)")],-1)),a("span",hs,r(It.value===null?"—":It.value.toLocaleString("zh-CN"))+" 次",1)]),gt.value&&X.value?(o(),u(k,{key:0},[a("div",ws,[a("span",ks,[e[127]||(e[127]=p(" 合计业绩 ",-1)),a("span",js,"(与看板「合计业绩」列同口径,不限渠道;"+r(X.value.totalOrderCount.toLocaleString("zh-CN"))+" 笔)",1)]),a("span",xs," ¥"+r(et(X.value.totalAmount)),1)]),a("div",Ns,[a("span",Ss,[p(r(bt.value)+"业绩 ",1),a("span",Ds,"(与看板「"+r(bt.value)+"业绩」同口径;"+r(X.value.channelOrderCount.toLocaleString("zh-CN"))+" 笔)",1)]),a("span",Cs," ¥"+r(et(wa.value)),1)])],64)):(o(),u("div",Ls,[e[128]||(e[128]=a("span",{class:"yeji-order-drawer__stat-label"},[p(" 业务订单金额合计 "),a("span",{class:"yeji-order-drawer__stat-note"},"(不含履约已取消,与上方业绩口径一致)")],-1)),a("span",zs," ¥"+r(et(Ot.value)),1)])),ue.value.length>0?(o(),u("div",$s,[e[129]||(e[129]=a("span",{class:"yeji-order-drawer__stat-label"},"本页小计",-1)),a("span",As,"¥"+r(et(ha.value)),1)])):y("",!0)]),gt.value?(o(),j($e,{key:0,modelValue:le.value,"onUpdate:modelValue":e[4]||(e[4]=l=>le.value=l),class:"yeji-order-drawer__list-tabs",onTabChange:Fa},{default:c(()=>[i(ee,{label:"合计业绩(全量订单)",name:"total"}),i(ee,{label:`渠道筛选(${bt.value})`,name:"channel"},null,8,["label"])]),_:1},8,["modelValue"])):y("",!0),q((o(),u("div",Rs,[ue.value.length>0||de.value?(o(),j(P,{key:0,data:ue.value,size:"small",stripe:"",border:"","max-height":"58vh",class:"yeji-order-drawer__table","empty-text":de.value?"加载中…":"暂无数据"},{default:c(()=>[i(_,{type:"index",label:"#",width:"46",index:Aa}),i(_,{prop:"order_no",label:"订单号","min-width":"152","show-overflow-tooltip":""}),i(_,{label:"关联挂号","min-width":"218"},{default:c(({row:l})=>[l.linked_appointment?(o(),u("div",Ps,[a("div",Ms,[e[130]||(e[130]=a("span",{class:"yeji-order-appt-k"},"日期",-1)),p(" "+r(Ra(l.linked_appointment)),1)]),a("div",Os,[e[131]||(e[131]=a("span",{class:"yeji-order-appt-k"},"状态",-1)),p(" "+r(l.linked_appointment.status_desc||"—")+" ",1),l.linked_appointment.doctor_name?(o(),u("span",Is," · "+r(l.linked_appointment.doctor_name),1)):y("",!0)]),a("div",Vs,[e[132]||(e[132]=a("span",{class:"yeji-order-appt-k"},"类型",-1)),p(" "+r(l.linked_appointment.appointment_type_desc||"—"),1)]),a("div",Fs,[e[134]||(e[134]=a("span",{class:"yeji-order-appt-k"},"渠道",-1)),a("span",Ts,[p(r(l.linked_appointment.channel_source_desc||l.linked_appointment.channel_source||"—")+" ",1),Tt(l.linked_appointment)!==""?(o(),u("span",Es," (字典 value "+r(Tt(l.linked_appointment))+" ) ",1)):y("",!0)]),i(M,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[...e[133]||(e[133]=[a("div",{style:{"max-width":"280px","line-height":"1.65","font-size":"12px"}},[p(" 「字典 value」= 系统字典 "),a("b",null,"channels"),p(" 的 value,与业绩表里按渠道收窄时所用"),a("b",null,"挂号 channels"),p("一致;便于和进线列所选渠道对照,"),a("b",null,"不是"),p("企微 add_external_contact 单上的独立编号。 ")],-1)])]),default:c(()=>[i(w,{class:"yeji-order-appt-info","aria-label":"说明"},{default:c(()=>[i(S(F))]),_:1})]),_:1})])])):(o(),u("span",Bs,"—"))]),_:1}),i(_,{label:"金额",width:"108",align:"right"},{default:c(({row:l})=>[a("span",Ys,"¥"+r(l.amount??"—"),1)]),_:1}),i(_,{prop:"recipient_name",label:"收货人",width:"96","show-overflow-tooltip":""}),i(_,{label:"履约",width:"104","show-overflow-tooltip":""},{default:c(({row:l})=>[p(r($a(l.fulfillment_status)),1)]),_:1}),i(_,{label:"创建时间","min-width":"148"},{default:c(({row:l})=>[p(r(Pa(l.create_time)),1)]),_:1}),i(_,{prop:"doctor_name",label:"开方人",width:"88","show-overflow-tooltip":""}),i(_,{prop:"creator_name",label:"创建人",width:"88","show-overflow-tooltip":""})]),_:1},8,["data","empty-text"])):y("",!0),!de.value&&ue.value.length===0?(o(),j(A,{key:1,description:"暂无业务订单"})):y("",!0),a("div",Us,[i(Ae,{"current-page":K.value,"page-size":Xe.value,background:"",layout:"total, sizes, prev, pager, next, jumper",total:Ke.value,"page-sizes":[10,15,20,50],disabled:de.value,"hide-on-single-page":!1,onCurrentChange:Ta,onSizeChange:Ea},null,8,["current-page","page-size","total","disabled"])])])),[[V,de.value]])])]),_:1},8,["modelValue"]),i(pe,{modelValue:rt.value,"onUpdate:modelValue":e[6]||(e[6]=l=>rt.value=l),width:"min(680px, 94vw)","destroy-on-close":"",class:"yeji-unassigned-dialog"},{header:c(()=>[a("div",Hs,[e[135]||(e[135]=a("span",{class:"yeji-unassigned-dialog__title"},"「未归属中心」业绩拆解",-1)),a("p",Ws,r(St.value),1)])]),default:c(()=>[Me.value?(o(),u("p",qs,r(Me.value),1)):y("",!0),q((o(),u("div",Gs,[fe.value.length>0||ve.value?(o(),j(P,{key:0,data:fe.value,size:"small",stripe:"",border:"","max-height":"440",class:"yeji-unassigned-dialog__table","empty-text":ve.value?"加载中…":"暂无数据"},{default:c(()=>[i(_,{prop:"name",label:"诊单医助","min-width":"120","show-overflow-tooltip":""}),i(_,{label:"账号",width:"88",align:"right"},{default:c(({row:l})=>[p(r(l.admin_id>0?l.admin_id:"—"),1)]),_:1}),i(_,{label:"订单数",width:"88",align:"right"},{default:c(({row:l})=>[p(r(N(l.order_count)),1)]),_:1}),i(_,{label:"业绩金额","min-width":"112",align:"right"},{default:c(({row:l})=>[p(r(W(l.amount)),1)]),_:1})]),_:1},8,["data","empty-text"])):y("",!0),!ve.value&&fe.value.length===0?(o(),j(A,{key:1,description:"暂无拆解数据"})):y("",!0)])),[[V,ve.value]])]),_:1},8,["modelValue"]),i(pe,{modelValue:ut.value,"onUpdate:modelValue":e[7]||(e[7]=l=>ut.value=l),width:"min(920px, 96vw)","destroy-on-close":"",class:"yeji-leadlines-dialog"},{header:c(()=>[a("div",Js,[e[136]||(e[136]=a("span",{class:"yeji-unassigned-dialog__title"},"进线数据明细",-1)),a("p",Ks,r(Lt.value),1)])]),default:c(()=>[Ie.value?(o(),u("p",Xs,r(Ie.value),1)):y("",!0),q((o(),u("div",Qs,[be.value.length>0||se.value?(o(),j(P,{key:0,data:be.value,size:"small",stripe:"",border:"","max-height":"440",class:"yeji-unassigned-dialog__table","empty-text":se.value?"加载中…":"暂无数据"},{default:c(()=>[i(_,{prop:"event_time_text",label:"进线时间","min-width":"156","show-overflow-tooltip":""}),i(_,{prop:"reception_admin_name",label:"接待",width:"88","show-overflow-tooltip":""}),i(_,{prop:"external_contact_name",label:"客户","min-width":"100","show-overflow-tooltip":""}),i(_,{prop:"external_userid",label:"外部联系人ID","min-width":"140","show-overflow-tooltip":""}),i(_,{prop:"user_id",label:"企微成员ID","min-width":"120","show-overflow-tooltip":""}),i(_,{prop:"state",label:"渠道参数",width:"96","show-overflow-tooltip":""})]),_:1},8,["data","empty-text"])):y("",!0),!se.value&&be.value.length===0?(o(),j(A,{key:1,description:"暂无进线明细"})):y("",!0),Ve.value>0?(o(),u("div",Zs,[i(Ae,{"current-page":Fe.value,"page-size":Ue.value,background:"",layout:"total, sizes, prev, pager, next, jumper",total:Ve.value,"page-sizes":[10,20,50,100],disabled:se.value,"hide-on-single-page":!1,onCurrentChange:qa,onSizeChange:Ga},null,8,["current-page","page-size","total","disabled"])])):y("",!0)])),[[V,se.value]])]),_:1},8,["modelValue"]),i(pe,{modelValue:He.value,"onUpdate:modelValue":e[8]||(e[8]=l=>He.value=l),width:"min(960px, 96vw)","destroy-on-close":"",class:"yeji-leadlines-dialog"},{header:c(()=>[a("div",ei,[e[137]||(e[137]=a("span",{class:"yeji-unassigned-dialog__title"},"预约诊单 · 挂号明细",-1)),a("p",ti,r(ct.value),1)])]),default:c(()=>[he.value?(o(),u("p",ai,r(he.value),1)):y("",!0),q((o(),u("div",ni,[ne.value.length>0||ie.value?(o(),j(P,{key:0,data:ne.value,size:"small",stripe:"",border:"","max-height":"440",class:"yeji-unassigned-dialog__table","empty-text":ie.value?"加载中…":"暂无数据"},{default:c(()=>[i(_,{type:"index",label:"#",width:"46",index:Ja}),i(_,{prop:"appointment_date",label:"预约日期",width:"108"}),i(_,{prop:"appointment_time",label:"时段","min-width":"96","show-overflow-tooltip":""}),i(_,{prop:"status_desc",label:"状态",width:"84"}),i(_,{prop:"appointment_type_desc",label:"类型",width:"92"}),i(_,{prop:"patient_name",label:"患者","min-width":"92","show-overflow-tooltip":""}),i(_,{prop:"patient_phone",label:"手机","min-width":"116","show-overflow-tooltip":""}),i(_,{prop:"doctor_name",label:"接诊医生",width:"92","show-overflow-tooltip":""}),i(_,{label:"诊单ID",width:"84",align:"right"},{default:c(({row:l})=>[p(r(N(l.diagnosis_id??0)),1)]),_:1}),da.value?(o(),j(_,{key:0,prop:"channel_source",label:"渠道来源",width:"96","show-overflow-tooltip":""})):y("",!0)]),_:1},8,["data","empty-text"])):y("",!0),!ie.value&&ne.value.length===0?(o(),j(A,{key:1,description:"暂无挂号记录"})):y("",!0),we.value>0?(o(),u("div",li,[i(Ae,{"current-page":re.value,"page-size":ke.value,background:"",layout:"total, sizes, prev, pager, next, jumper",total:we.value,"page-sizes":[10,20,50,100],disabled:ie.value,"hide-on-single-page":!1,onCurrentChange:Qa,onSizeChange:Za},null,8,["current-page","page-size","total","disabled"])])):y("",!0)])),[[V,ie.value]])]),_:1},8,["modelValue"]),i(pe,{modelValue:dt.value,"onUpdate:modelValue":e[9]||(e[9]=l=>dt.value=l),width:"min(560px, 94vw)","destroy-on-close":"",class:"yeji-unassigned-dialog"},{header:c(()=>[a("div",oi,[e[138]||(e[138]=a("span",{class:"yeji-unassigned-dialog__title"},"复诊 · 医助拆解",-1)),a("p",si,r(Dt.value),1)])]),default:c(()=>[Oe.value?(o(),u("p",ii,r(Oe.value),1)):y("",!0),q((o(),u("div",ri,[ge.value.length>0||ye.value?(o(),j(P,{key:0,data:ge.value,size:"small",stripe:"",border:"","max-height":"440",class:"yeji-unassigned-dialog__table","empty-text":ye.value?"加载中…":"暂无数据"},{default:c(()=>[i(_,{prop:"name",label:"医助","min-width":"120","show-overflow-tooltip":""}),i(_,{label:"业务订单",width:"108",align:"right"},{default:c(({row:l})=>[Number(l.order_count)>0?(o(),u("span",{key:0,class:"yeji-lead-cell--link",role:"button",tabindex:"0",onClick:g=>Et(l),onKeydown:Tn(_e(g=>Et(l),["prevent"]),["enter"])},r(N(l.order_count))+" 笔",41,di)):(o(),u(k,{key:1},[p(r(N(l.order_count)),1)],64))]),_:1})]),_:1},8,["data","empty-text"])):y("",!0),!ye.value&&ge.value.length===0?(o(),j(A,{key:1,description:"暂无拆解数据"})):y("",!0)])),[[V,ye.value]])]),_:1},8,["modelValue"])])}}}),tr=tl(ci,[["__scopeId","data-v-17041657"]]);export{tr as default};
diff --git a/server/public/admin/assets/yeji-DWvcQDza.css b/server/public/admin/assets/yeji-DWvcQDza.css
deleted file mode 100644
index 85a61d3d..00000000
--- a/server/public/admin/assets/yeji-DWvcQDza.css
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";.yeji-page[data-v-17041657]{min-width:0;--yj-brand: #6366f1;--yj-brand-soft: #eef2ff;--yj-teal: #0ea5e9;--yj-teal-soft: #f0f9ff;--yj-accent: #f43f5e;--yj-accent-soft: #fff1f2;--yj-ink: #1e293b;--yj-ink-secondary: #475569;--yj-muted: #64748b;--yj-line: #e2e8f0;--yj-line-strong: #cbd5e1;--yj-surface: #ffffff;--yj-surface-muted: #f8fafc;--yj-page: #f1f5f9;--yj-shadow-sm: 0 1px 3px rgba(0,0,0,.06);--yj-shadow-md: 0 4px 16px rgba(0,0,0,.06);--yj-radius: 16px;--yj-radius-sm: 10px;--yj-font: "Inter", var(--el-font-family), system-ui, sans-serif;--yj-dept-col-bg: #eef2ff;--yj-dept-col-bg-hover: #e0e7ff;--yj-dept-col-head-start: #e0e7ff;--yj-dept-col-head-end: #e8ecff;--yj-dept-col-border: #c7d2fe;--yj-dept-col-head-ink: #3730a3;min-height:100%;padding:24px;font-family:var(--yj-font);color:var(--yj-ink);background:var(--yj-page)}.yeji-masthead[data-v-17041657]{margin-bottom:24px}.yeji-masthead__inner[data-v-17041657]{display:flex;align-items:center;gap:16px;padding:28px 32px;background:linear-gradient(135deg,#1e293b,#334155);border-radius:var(--yj-radius);box-shadow:var(--yj-shadow-md)}.yeji-masthead__title[data-v-17041657]{margin:0;font-size:1.5rem;font-weight:800;letter-spacing:-.03em;color:#fff;line-height:1.2}.yeji-masthead__desc[data-v-17041657]{margin:6px 0 0;font-size:.875rem;line-height:1.5;color:#94a3b8}.yeji-panel[data-v-17041657]{margin-bottom:20px;border-radius:var(--yj-radius);border:1px solid var(--yj-line);background:var(--yj-surface);box-shadow:var(--yj-shadow-sm)}.yeji-panel[data-v-17041657] .el-card__body{padding:0}.filter-card[data-v-17041657]{overflow:hidden;border-radius:var(--yj-radius)}.yeji-main-tabs-card[data-v-17041657]{margin-bottom:20px;box-shadow:var(--yj-shadow-md)}.yeji-main-tabs-card[data-v-17041657] .el-card__body{padding:0 0 18px}.yeji-charts-only-card[data-v-17041657]{margin-bottom:20px;box-shadow:var(--yj-shadow-md)}.yeji-charts-only-card[data-v-17041657] .el-card__body{padding:0}.yeji-charts-only-card .yeji-charts-stack[data-v-17041657]{padding:16px 20px 4px}.yeji-charts-only-head[data-v-17041657]{padding:16px 20px 12px;font-size:15px;font-weight:700;color:var(--yj-ink);border-bottom:1px solid var(--yj-line)}.yeji-table-tabs-head[data-v-17041657]{padding:14px 20px 10px;background:var(--yj-surface-muted);border-bottom:1px solid var(--yj-line)}.yeji-table-tabs-head__title[data-v-17041657]{display:block;font-size:15px;font-weight:700;color:var(--yj-ink);line-height:1.3}.yeji-table-tabs-head__hint[data-v-17041657]{display:block;margin-top:6px;font-size:12px;font-weight:500;color:var(--yj-muted);line-height:1.45}.yeji-tab-pane-stack[data-v-17041657]{min-height:100px}.yeji-zyyt-intro[data-v-17041657]{margin:0 20px 14px;padding-top:4px;font-size:.8125rem;line-height:1.65;color:#64748b}.yeji-view-tabs[data-v-17041657] .el-tabs__header{margin:0;padding:0 20px;background:var(--yj-surface-muted);border-bottom:1px solid var(--yj-line)}.yeji-view-tabs[data-v-17041657] .el-tabs__nav-wrap:after{display:none}.yeji-view-tabs[data-v-17041657] .el-tabs__nav{border:none}.yeji-view-tabs[data-v-17041657] .el-tabs__item{font-weight:600;font-size:13px;height:44px;line-height:44px;padding:0 20px;color:var(--yj-muted);border-bottom:2px solid transparent;transition:color .2s,border-color .2s}.yeji-view-tabs[data-v-17041657] .el-tabs__item:hover{color:var(--yj-ink)}.yeji-view-tabs[data-v-17041657] .el-tabs__item.is-active{color:var(--yj-brand);border-bottom-color:var(--yj-brand);font-weight:700}.yeji-view-tabs[data-v-17041657] .el-tabs__active-bar{display:none}.yeji-view-tabs[data-v-17041657] .el-tabs__content{padding:20px;overflow:visible}.yeji-view-tabs[data-v-17041657] .el-tab-pane{overflow:visible}.yeji-charts-intro[data-v-17041657]{margin:0 0 16px;padding:12px 16px;font-size:12px;line-height:1.6;color:var(--yj-muted);background:var(--yj-surface-muted);border-radius:var(--yj-radius-sm);border:1px solid var(--yj-line)}.yeji-charts-stack[data-v-17041657]{display:flex;flex-direction:column;gap:20px;min-height:120px}.yeji-charts-empty[data-v-17041657]{padding:48px 16px}.yeji-chart-block[data-v-17041657]{padding:20px;background:var(--yj-surface);border-radius:var(--yj-radius-sm);border:1px solid var(--yj-line)}.yeji-chart-block__title[data-v-17041657]{margin:0 0 16px;font-size:1rem;font-weight:700;color:var(--yj-ink);display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px}.yeji-chart-block__sub[data-v-17041657]{font-size:12px;font-weight:600;color:var(--yj-teal)}.yeji-chart-block__sub--muted[data-v-17041657]{font-size:11px;font-weight:500;color:var(--yj-muted)}.yeji-chart-subrow[data-v-17041657]{margin-top:4px}.yeji-chart-panel[data-v-17041657]{border:1px solid var(--yj-line);border-radius:var(--yj-radius-sm);padding:14px;background:var(--yj-surface);height:100%;transition:box-shadow .2s}.yeji-chart-panel[data-v-17041657]:hover{box-shadow:var(--yj-shadow-sm)}.yeji-chart-panel__label[data-v-17041657]{font-size:12px;font-weight:700;letter-spacing:.03em;color:var(--yj-muted);margin-bottom:10px}.yeji-echart[data-v-17041657]{width:100%;height:320px;min-height:240px}.yeji-echart--short[data-v-17041657]{height:280px;min-height:220px}.yeji-echart--tall[data-v-17041657]{height:400px;min-height:300px}.yeji-echart--compact[data-v-17041657]{height:288px;min-height:232px}.doctor-daily-card--nested[data-v-17041657]{margin-bottom:20px}.doctor-daily-card[data-v-17041657]{box-shadow:var(--yj-shadow-sm)}.doctor-daily-card[data-v-17041657] .el-card__header{padding:16px 22px;background:var(--yj-surface-muted);border-bottom:1px solid var(--yj-line)}.doctor-daily-card[data-v-17041657] .el-card__body{padding:18px 22px 22px}.doctor-daily-card__head[data-v-17041657]{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.doctor-daily-card__title[data-v-17041657]{font-weight:700;font-size:1.0625rem;color:var(--yj-ink)}.doctor-daily-card__title-block[data-v-17041657]{display:flex;flex-direction:column;gap:6px}.doctor-daily-card__range[data-v-17041657]{font-size:12px;font-weight:600;color:var(--yj-teal)}.doctor-daily-card__tools[data-v-17041657]{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.doctor-daily-card__lbl[data-v-17041657]{font-size:12px;color:var(--el-text-color-secondary)}.doctor-daily-card__picker[data-v-17041657]{width:150px}.doctor-daily-card__hint[data-v-17041657]{margin:0 0 16px;padding:14px 16px;font-size:12px;line-height:1.65;color:var(--yj-ink-secondary);background:var(--yj-brand-soft);border-radius:var(--yj-radius-sm);border:1px solid rgba(37,99,235,.12)}.doctor-daily-table[data-v-17041657]{width:100%;border-radius:var(--yj-radius-sm);overflow:hidden}.doctor-daily-table[data-v-17041657] .el-table__header th{background:var(--yj-surface-muted)!important;color:var(--yj-ink-secondary)!important;font-weight:600;font-size:12px}.doctor-daily-table[data-v-17041657] .el-table__footer-wrapper td{font-weight:700;background:var(--yj-accent-soft)!important;font-size:13px}.filter-surface[data-v-17041657]{padding:20px;background:var(--yj-surface)}.filter-row--top[data-v-17041657]{display:flex;flex-wrap:wrap;align-items:flex-end;gap:16px 20px}.filter-field[data-v-17041657]{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}.filter-field .lbl[data-v-17041657]{font-size:12px;font-weight:600;color:var(--yj-muted);letter-spacing:.02em}.filter-field--wide[data-v-17041657]{flex:1 1 280px;min-width:240px}.filter-field--date-top[data-v-17041657]{flex:1 1 320px;min-width:260px}.filter-select[data-v-17041657]{width:100%}.filter-select--channel[data-v-17041657]{min-width:220px;max-width:320px}.filter-select--dept[data-v-17041657]{min-width:280px}.filter-dept-tree-wrap[data-v-17041657]{min-height:32px}.filter-dept-tree-select[data-v-17041657]{width:100%}.filter-date-picker[data-v-17041657]{width:100%;max-width:320px}.filter-hint[data-v-17041657]{display:none}.filter-quick[data-v-17041657]{margin-top:16px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}.filter-quick__title[data-v-17041657]{flex-shrink:0;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--yj-muted)}.date-pills[data-v-17041657]{display:flex;flex-wrap:wrap;gap:8px}.date-pill[data-v-17041657]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;border:1px solid var(--yj-line);background:var(--yj-surface);color:var(--yj-ink-secondary);font-size:12px;font-weight:600;font-family:inherit;padding:7px 14px;border-radius:6px;cursor:pointer;line-height:1.4;transition:all .15s ease}.date-pill[data-v-17041657]:hover{border-color:var(--yj-brand);color:var(--yj-brand);background:var(--yj-brand-soft)}.date-pill[data-v-17041657]:focus-visible{outline:2px solid var(--yj-brand);outline-offset:2px}.filter-actions[data-v-17041657]{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;flex-shrink:0}.filter-btn[data-v-17041657]{padding:8px 20px;font-weight:600;border-radius:var(--yj-radius-sm)}.filter-btn__icon[data-v-17041657]{margin-right:4px;font-size:15px;vertical-align:-2px}.filter-btn--query[data-v-17041657]{background:var(--yj-brand);color:#fff;border:none}.filter-btn--query[data-v-17041657]:hover{opacity:.9;color:#fff}.filter-btn--reset[data-v-17041657]{border:1px solid var(--yj-line);background:var(--yj-surface)}.filter-btn--reset[data-v-17041657]:hover{border-color:var(--yj-brand);color:var(--yj-brand)}.filter-btn--reset[data-v-17041657]:disabled{opacity:.5}.channel-opt-row[data-v-17041657]{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding-right:4px}.opt-name[data-v-17041657]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.opt-count[data-v-17041657]{flex-shrink:0;font-size:12px;color:var(--yj-muted)}.filter-alert[data-v-17041657]{margin-bottom:12px}.tables-wrap[data-v-17041657]{display:grid;grid-template-columns:minmax(0,1fr);gap:20px}.leaderboards-wrap[data-v-17041657]{margin-top:22px;min-height:48px}.leaderboard-hint[data-v-17041657]{margin:0 0 16px;padding:14px 16px;font-size:13px;color:var(--yj-ink-secondary);line-height:1.6;background:var(--yj-surface);border:1px solid var(--yj-line);border-radius:var(--yj-radius-sm);box-shadow:var(--yj-shadow-sm)}.leaderboard-hint .muted[data-v-17041657]{display:block;margin-top:8px;color:var(--yj-muted);font-size:12px}.tp-wrap[data-v-17041657]{min-height:40px;margin-bottom:20px}.tp-card[data-v-17041657]{display:inline-flex;flex-direction:column;max-width:100%;border-radius:var(--yj-radius);overflow:hidden;font-size:13px;background:var(--yj-surface);border:1px solid var(--yj-line);box-shadow:var(--yj-shadow-md)}.tp-card__title[data-v-17041657]{background:var(--yj-surface-muted);color:var(--yj-ink);font-weight:700;font-size:14px;text-align:center;padding:14px 20px;letter-spacing:.04em;border-bottom:1px solid var(--yj-line)}.tp-card__body[data-v-17041657]{display:flex;flex-wrap:wrap;gap:0}.tp-section[data-v-17041657]{min-width:200px;flex:1 1 200px;border-right:1px solid var(--yj-line)}.tp-section[data-v-17041657]:last-child{border-right:none}.tp-section__head[data-v-17041657]{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--yj-brand-soft);padding:11px 14px;border-bottom:1px solid var(--yj-line)}.tp-section__title-col[data-v-17041657]{display:flex;flex-direction:column;gap:3px;min-width:0}.tp-section__parent[data-v-17041657]{font-size:11px;font-weight:600;color:var(--yj-muted);line-height:1.25}.tp-section__name[data-v-17041657]{font-weight:700;font-size:13px;color:var(--yj-ink)}.tp-section__target[data-v-17041657]{font-size:13px;font-weight:700;color:var(--yj-accent)}.tp-table[data-v-17041657]{width:100%;border-collapse:collapse}.tp-table .tp-lbl[data-v-17041657]{padding:8px 12px;color:var(--yj-muted);font-size:12px;border-bottom:1px solid var(--yj-line);white-space:nowrap}.tp-table .tp-val[data-v-17041657]{padding:8px 14px;font-weight:600;text-align:right;border-bottom:1px solid var(--yj-line);white-space:nowrap;color:var(--yj-ink);font-variant-numeric:tabular-nums}.tp-table .tp-val--total[data-v-17041657]{color:var(--yj-accent)}.tp-table tr:last-child td[data-v-17041657]{border-bottom:none}.tp-good[data-v-17041657]{color:#15803d!important;font-weight:700}.tp-mid[data-v-17041657]{color:#c2410c!important;font-weight:700}.tp-bad[data-v-17041657]{color:#b91c1c!important;font-weight:700}.leaderboard-sub[data-v-17041657]{font-size:13px;font-weight:500;opacity:.95}.leaderboard-table .th-sub[data-v-17041657]{display:block;font-size:11px;font-weight:500;opacity:.85}.leaderboard-table .col-rank[data-v-17041657]{width:52px;font-weight:600}.leaderboard-table .col-abbr[data-v-17041657]{min-width:56px}.leaderboard-table .col-name[data-v-17041657]{min-width:72px;font-weight:500}.leaderboard-table .col-consult[data-v-17041657],.leaderboard-table .col-deal[data-v-17041657],.leaderboard-table .col-assign[data-v-17041657]{width:84px;text-align:right;font-variant-numeric:tabular-nums}.leaderboard-table .col-appointment[data-v-17041657]{width:88px;text-align:right;font-variant-numeric:tabular-nums}.leaderboard-empty[data-v-17041657]{grid-column:1/-1}.yeji-table__foot--left[data-v-17041657]{text-align:left}.empty-tip[data-v-17041657]{grid-column:1/-1;background:var(--yj-surface);border-radius:var(--yj-radius-sm);padding:36px 16px;border:1px dashed var(--yj-line-strong)}.yeji-th-label[data-v-17041657]{display:inline-block;line-height:1.25;vertical-align:middle;max-width:6.5rem}.yeji-table[data-v-17041657]{background:var(--yj-surface);border-radius:var(--yj-radius);overflow:hidden;box-shadow:var(--yj-shadow-sm);border:1px solid var(--yj-line)}.yeji-table__scroll[data-v-17041657]{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable;outline:none}.yeji-table__scroll[data-v-17041657]::-webkit-scrollbar{height:10px}.yeji-table__scroll[data-v-17041657]::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--yj-muted) 50%,transparent);border-radius:999px}.yeji-table__scroll[data-v-17041657]::-webkit-scrollbar-track{background:var(--yj-surface-muted)}.yeji-table__scroll[data-v-17041657]:focus-visible{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--yj-brand) 40%,transparent)}.yeji-table__header[data-v-17041657]{background:var(--yj-surface-muted);color:var(--yj-ink);font-weight:700;font-size:14px;text-align:center;padding:14px 16px;border-bottom:1px solid var(--yj-line)}.yeji-table__body[data-v-17041657]{width:100%;border-collapse:collapse;text-align:center;font-size:13px;color:var(--yj-ink)}.yeji-table__body thead th.col-dept[data-v-17041657],.yeji-table__body thead th.col-abbr[data-v-17041657]{min-width:88px;background:linear-gradient(180deg,var(--yj-dept-col-head-start) 0%,var(--yj-dept-col-head-end) 100%);color:var(--yj-dept-col-head-ink);font-weight:700;border-right:2px solid var(--yj-dept-col-border);box-shadow:inset 0 1px #ffffff59}.yeji-table__body thead th.col-abbr[data-v-17041657]{min-width:56px}.yeji-table__body tbody td.col-dept[data-v-17041657],.yeji-table__body tbody td.col-abbr[data-v-17041657]{background:var(--yj-dept-col-bg);color:var(--yj-ink);font-weight:600;border-right:2px solid var(--yj-dept-col-border);text-align:center}.yeji-table__body tbody tr.yeji-row--action:not(.yeji-row--idle):hover td.col-dept[data-v-17041657],.yeji-table__body tbody tr.yeji-row--action:not(.yeji-row--idle):hover td.col-abbr[data-v-17041657]{background:var(--yj-dept-col-bg-hover)}.yeji-table__body .total-row td.col-dept[data-v-17041657]{background:color-mix(in srgb,var(--yj-accent-soft) 55%,var(--yj-dept-col-bg) 45%);color:var(--yj-ink);font-weight:700;border-right:2px solid color-mix(in srgb,var(--yj-dept-col-border) 55%,var(--yj-line) 45%)}.yeji-table__body thead th[data-v-17041657]{background:#f1f5f9;color:var(--yj-ink-secondary);font-weight:600;padding:10px 8px;border:1px solid var(--yj-line);font-variant-numeric:tabular-nums;font-size:12px}.yeji-table__body thead th .col-info[data-v-17041657]{margin-left:4px;color:var(--yj-muted);cursor:help;vertical-align:-2px;font-size:14px;transition:color .15s}.yeji-table__body thead th .col-info[data-v-17041657]:hover{color:var(--yj-brand)}.yeji-table__body tbody td[data-v-17041657]{padding:10px 8px;border:1px solid var(--yj-line);white-space:nowrap;font-variant-numeric:tabular-nums}.yeji-table__body tbody tr.yeji-row--action[data-v-17041657]{cursor:pointer;transition:background .18s ease}.yeji-table__body tbody tr.yeji-row--action[data-v-17041657]:hover{background:var(--yj-brand-soft)}.yeji-table__body tbody tr.yeji-row--action.yeji-row--unassigned[data-v-17041657]{cursor:pointer}.yeji-table__body tbody tr.yeji-row--action.yeji-row--idle[data-v-17041657]{cursor:default}.yeji-table__body tbody tr.yeji-row--action.yeji-row--idle[data-v-17041657]:hover{background:transparent}.yeji-table__body .col-completed[data-v-17041657]{color:#0f766e;font-weight:600;background:var(--yj-teal-soft)}.yeji-table__body .total-row[data-v-17041657]{font-weight:700;background:var(--yj-accent-soft);color:var(--yj-ink)}.yeji-table__body .total-row td[data-v-17041657]{border-color:#d9770633}.yeji-table__body .roi-good[data-v-17041657]{color:#15803d;font-weight:600}.yeji-table__body .roi-mid[data-v-17041657]{color:#c2410c;font-weight:600}.yeji-table__body .roi-bad[data-v-17041657]{color:#b91c1c;font-weight:600}.yeji-table__body.yeji-table__body--data[data-v-17041657]{min-width:max(100%,1180px);width:-moz-max-content;width:max-content}.yeji-table__body.yeji-table__body--data thead th.col-dept[data-v-17041657],.yeji-table__body.yeji-table__body--data tbody td.col-dept[data-v-17041657]{position:sticky;left:0;z-index:3}.yeji-table__body.yeji-table__body--data thead th.col-dept[data-v-17041657]{z-index:6;text-align:left;padding-left:12px;padding-right:10px;box-shadow:8px 0 20px -12px #0f172a59}.yeji-table__body.yeji-table__body--data tbody td.col-dept[data-v-17041657]{box-shadow:8px 0 20px -12px #0f172a47;white-space:normal;max-width:300px;line-height:1.35;text-align:left;padding-left:12px;padding-right:10px;word-break:break-word}.yeji-table__body.yeji-table__body--data .total-row td.col-dept[data-v-17041657]{box-shadow:8px 0 20px -12px #0f172a47}.yeji-table__body.yeji-table__body--data thead th[data-v-17041657]:not(.col-dept){min-width:88px}.yeji-table__body.yeji-table__body--data thead th.col-narrow-head[data-v-17041657]{min-width:76px;max-width:112px;padding:8px 6px;vertical-align:middle;line-height:1.2}.yeji-table__body.yeji-table__body--leaderboard[data-v-17041657]{min-width:max(100%,780px);width:-moz-max-content;width:max-content}.yeji-table__body.yeji-table__body--leaderboard thead th.col-rank[data-v-17041657],.yeji-table__body.yeji-table__body--leaderboard tbody td.col-rank[data-v-17041657]{position:sticky;left:0;z-index:3}.yeji-table__body.yeji-table__body--leaderboard thead th.col-rank[data-v-17041657]{z-index:6;background:linear-gradient(180deg,var(--yj-dept-col-head-start) 0%,var(--yj-dept-col-head-end) 100%)!important;box-shadow:8px 0 20px -12px #0f172a4d}.yeji-table__body.yeji-table__body--leaderboard tbody td.col-rank[data-v-17041657]{background:var(--yj-surface);box-shadow:8px 0 20px -12px #0f172a38}.yeji-table__body.yeji-table__body--leaderboard tbody tr.yeji-row--action:hover td.col-rank[data-v-17041657]{background:var(--yj-brand-soft)}.yeji-table__foot[data-v-17041657]{padding:11px 14px;font-size:12px;color:var(--yj-muted);background:var(--yj-surface-muted);border-top:1px solid var(--yj-line);text-align:right;line-height:1.5}.yeji-order-drawer__hint[data-v-17041657]{margin:0 0 12px;font-size:13px;color:var(--yj-muted);line-height:1.5}.yeji-order-drawer__header[data-v-17041657]{padding-right:8px}.yeji-order-drawer__heading[data-v-17041657]{margin:0;font-size:18px;font-weight:700;color:var(--yj-ink);line-height:1.35;letter-spacing:-.01em}.yeji-order-drawer__sub[data-v-17041657]{margin:6px 0 0;font-size:13px;color:var(--yj-muted);line-height:1.55}.yeji-order-drawer__shell[data-v-17041657]{display:flex;flex-direction:column;gap:16px;min-height:200px}.yeji-order-drawer__stats[data-v-17041657]{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.yeji-order-drawer__stat-card[data-v-17041657]{border:1px solid var(--yj-line);border-radius:var(--yj-radius-sm);padding:14px 16px;background:var(--yj-surface);display:flex;flex-direction:column;gap:8px;transition:border-color .2s ease,box-shadow .2s ease}.yeji-order-drawer__stat-card[data-v-17041657]:hover{border-color:#2563eb38;box-shadow:var(--yj-shadow-sm)}.yeji-order-drawer__stat-card--accent[data-v-17041657]{border-color:#dc26262e;background:linear-gradient(180deg,#fef2f2 0%,var(--el-fill-color-blank) 100%)}.yeji-order-drawer__stat-card--muted[data-v-17041657]{background:#f8fafc}.yeji-order-drawer__stat-card--total[data-v-17041657]{border-color:#d9770638;background:linear-gradient(180deg,#fffbeb 0%,var(--el-fill-color-blank) 100%)}.yeji-order-drawer__list-tabs[data-v-17041657] .el-tabs__header{margin:0;padding:0;border-bottom:1px solid var(--yj-line)}.yeji-order-drawer__list-tabs[data-v-17041657] .el-tabs__content{display:none}.yeji-order-drawer__list-tabs[data-v-17041657] .el-tabs__nav-wrap:after{display:none}.yeji-order-drawer__stat-label[data-v-17041657]{font-size:12px;color:var(--yj-muted);line-height:1.45}.yeji-order-drawer__stat-note[data-v-17041657]{display:block;margin-top:2px;font-size:11px;font-weight:400;color:var(--el-text-color-placeholder)}.yeji-order-drawer__stat-value[data-v-17041657]{font-size:18px;font-weight:700;color:var(--yj-ink);font-variant-numeric:tabular-nums}.yeji-order-drawer__stat-value--money[data-v-17041657]{font-size:21px;color:#b91c1c}.yeji-order-drawer__body[data-v-17041657]{flex:1;min-height:120px}.yeji-order-drawer__pager[data-v-17041657]{margin-top:4px;padding-top:10px;border-top:1px solid var(--yj-line);display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}.yeji-order-appt-lines[data-v-17041657]{line-height:1.45;font-size:12px;color:var(--yj-ink, #0f172a)}.yeji-order-appt-line[data-v-17041657]{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;margin-bottom:2px}.yeji-order-appt-line[data-v-17041657]:last-child{margin-bottom:0}.yeji-order-appt-line.yeji-order-appt-line--channel[data-v-17041657]{align-items:flex-start}.yeji-order-appt-line.yeji-order-appt-line--channel .yeji-order-appt-channel-text[data-v-17041657]{flex:1;min-width:0}.yeji-order-appt-info[data-v-17041657]{font-size:14px;color:var(--yj-muted, #94a3b8);cursor:help;flex-shrink:0;margin-top:1px}.yeji-order-appt-k[data-v-17041657]{flex:0 0 auto;font-size:11px;font-weight:600;color:var(--yj-muted, #64748b)}.yeji-order-appt-sub[data-v-17041657]{font-size:11px;color:var(--yj-muted, #64748b)}.yeji-order-appt-empty[data-v-17041657]{font-size:12px;color:var(--yj-muted, #94a3b8)}.yeji-order-amt[data-v-17041657]{color:#b91c1c;font-weight:600;font-variant-numeric:tabular-nums}[data-v-17041657] .yeji-order-drawer.el-drawer{--el-drawer-padding-primary: 18px}[data-v-17041657] .yeji-order-drawer .el-drawer__header{margin-bottom:10px;padding-bottom:12px;border-bottom:1px solid var(--yj-line, #e2e8f0)}[data-v-17041657] .yeji-order-drawer .el-pagination{flex-wrap:wrap;justify-content:flex-end}.yeji-unassigned-dialog__head[data-v-17041657]{line-height:1.35}.yeji-unassigned-dialog__title[data-v-17041657]{display:block;font-size:16px;font-weight:700;color:var(--yj-ink, #0f172a)}.yeji-unassigned-dialog__sub[data-v-17041657]{margin:6px 0 0;font-size:12px;color:var(--yj-ink-secondary, #64748b);font-weight:400}.yeji-unassigned-dialog__note[data-v-17041657]{margin:0 0 12px;padding:10px 12px;font-size:12px;line-height:1.65;color:var(--yj-ink-secondary, #64748b);background:var(--yj-accent-soft, #fff7ed);border-radius:8px;border:1px solid color-mix(in srgb,var(--yj-line, #e2e8f0) 80%,transparent)}.yeji-unassigned-dialog__body[data-v-17041657]{min-height:120px}.yeji-lead-cell--link[data-v-17041657]{color:var(--yj-brand, #2563eb);font-weight:600;text-decoration:underline;text-underline-offset:2px;cursor:pointer}tbody tr.yeji-row--action:hover .yeji-lead-cell--link[data-v-17041657]{color:color-mix(in srgb,var(--yj-brand, #2563eb) 88%,#000)}.yeji-leadlines-dialog__pager[data-v-17041657]{margin-top:14px;display:flex;justify-content:flex-end}@media(prefers-reduced-motion:reduce){.date-pill[data-v-17041657],.filter-btn[data-v-17041657],.yeji-table__body tbody tr.yeji-row--action[data-v-17041657],.yeji-order-drawer__stat-card[data-v-17041657]{transition:none}}
diff --git a/server/public/admin/index.html b/server/public/admin/index.html
index 5be6295f..0bd5a1cb 100644
--- a/server/public/admin/index.html
+++ b/server/public/admin/index.html
@@ -60,7 +60,7 @@
document.head.appendChild(link);
})();
-
+
diff --git a/server/public/uploads/index.html b/server/public/uploads/index.html
new file mode 100755
index 00000000..e69de29b
diff --git a/server/sql/1.9.20260511/add_tcm_prescription_order_creator_id_column.sql b/server/sql/1.9.20260511/add_tcm_prescription_order_creator_id_column.sql
new file mode 100644
index 00000000..0f3c933b
--- /dev/null
+++ b/server/sql/1.9.20260511/add_tcm_prescription_order_creator_id_column.sql
@@ -0,0 +1,8 @@
+-- 历史库若早于 2026_04_07 建表可能缺少 creator_id,会导致业绩看板等 SQL 报 Unknown column … creator_id
+-- 执行前可先:SHOW COLUMNS FROM `zyt_tcm_prescription_order` LIKE 'creator_id';
+-- 若列已存在,本脚本会报错,跳过即可。
+ALTER TABLE `zyt_tcm_prescription_order`
+ ADD COLUMN `creator_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建人管理员ID' AFTER `diagnosis_id`;
+
+-- 若需索引且尚未存在,可再执行(已存在会报错可忽略):
+-- ALTER TABLE `zyt_tcm_prescription_order` ADD KEY `idx_creator_id` (`creator_id`);