Files
zyt/server/public/admin/assets/yeji-B-T-BOQB.js
T
2026-05-05 13:41:37 +08:00

6 lines
51 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{P as ea,Q as ta,af as aa,W as na,L as la,a2 as oa,i as sa,d as ra,J as ia,m as da,l as ua,a3 as ca,a4 as ma,R as _a,M as pa,N as fa,r as ya,X as ba,e as va,E as lt}from"./element-plus-B7Dx6hR2.js";import{M as ha,x as ga,i as Y}from"./@element-plus/icons-vue-C25ce6PD.js";import{H as V}from"./vue-echarts-NHykWhhX.js";import{d as wa,y as re,a as xa,b as Na,c as ja,e as ka}from"./stats-5liirA0-.js";import{d as Da}from"./finance-Bqjikfgz.js";import{n as Sa}from"./tcm-CPRxlmvb.js";import{f as za,b as Ca,ak as u,I as _,N as La,a as s,aN as c,J as a,F as L,ap as H,G as z,aP as Z,O as r,H as y,A as $}from"./@vue/runtime-core-tF_2qJHK.js";import{Q as i,o as xe}from"./@vue/shared-mAAVTE9n.js";import{y as S,n as h}from"./@vue/reactivity-BmZ-20sQ.js";import{_ as $a}from"./index-Bx_nF8uU.js";import"./@vue/runtime-dom-CEiKlVMn.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-yVHyDRAS.js";import"./tslib-BDyQ-Jie.js";import"./zrender-C0YiHEZX.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-BjeWxBI0.js";import"./pinia-CTWOnonq.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-Da2f2eD_.js";import"./@vueuse/shared-Bl-RnC0s.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-Bm7NQW9r.js";const Ma={class:"yeji-page"},Pa={class:"filter-surface"},Oa={class:"filter-row filter-row--top"},Fa={class:"filter-field"},Aa={class:"channel-opt-row"},Ia={class:"opt-name"},Ea={class:"opt-count"},Ra={class:"filter-field filter-field--wide"},Ta={class:"filter-select filter-select--dept filter-dept-tree-wrap"},Va={class:"filter-field filter-field--date-top"},Ha={class:"filter-actions"},Wa={class:"filter-quick"},Ya={class:"date-pills",role:"group","aria-label":"快捷日期"},Ba=["onClick"],Ua={class:"yeji-charts-stack"},qa={key:0,class:"yeji-chart-block"},Ga={class:"yeji-chart-block__title"},Ja={key:0,class:"yeji-chart-block__sub"},Qa={class:"yeji-chart-panel"},Xa={class:"yeji-chart-panel"},Za={class:"yeji-chart-panel"},Ka={class:"yeji-chart-panel"},en={class:"yeji-chart-panel"},tn={key:0,class:"yeji-chart-block"},an={class:"yeji-chart-block__title"},nn={class:"yeji-chart-panel"},ln={class:"yeji-chart-panel"},on={class:"yeji-chart-block__title"},sn={key:0,class:"yeji-chart-block__sub"},rn={class:"yeji-chart-block__sub yeji-chart-block__sub--muted"},dn={class:"yeji-chart-panel"},un={class:"doctor-daily-card__head"},cn={class:"doctor-daily-card__title-block"},mn={key:0,class:"doctor-daily-card__range"},_n={class:"doctor-daily-card__tools"},pn={key:0,class:"tp-wrap"},fn={key:0,class:"tp-card"},yn={class:"tp-card__title"},bn={class:"tp-card__body"},vn={class:"tp-section__head"},hn={class:"tp-section__name"},gn={class:"tp-section__target"},wn={class:"tp-table"},xn={class:"tp-val"},Nn={key:0},jn={class:"tp-val"},kn={key:1},Dn={class:"tp-val"},Sn={class:"tp-val tp-val--total"},zn={class:"tp-val"},Cn={class:"tables-wrap"},Ln={key:0,class:"empty-tip"},$n={class:"yeji-table__header"},Mn={class:"yeji-table__body"},Pn={style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},On={key:0,class:"col-completed"},Fn={key:1,class:"col-completed"},An={style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},In={key:2,class:"col-completed"},En={style:{"max-width":"280px","line-height":"1.7","font-size":"12px"}},Rn={style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},Tn=["onClick"],Vn={class:"col-dept"},Hn={key:0,class:"col-completed"},Wn={key:1,class:"col-completed"},Yn={key:2,class:"col-completed"},Bn={class:"total-row"},Un={key:0,class:"col-completed"},qn={key:1,class:"col-completed"},Gn={key:2,class:"col-completed"},Jn={class:"yeji-table__foot"},Qn={key:0},Xn={key:1},Zn={key:1,class:"leaderboards-wrap"},Kn={class:"leaderboard-hint"},el={class:"muted"},tl={class:"tables-wrap"},al={key:0,class:"yeji-table leaderboard-table"},nl={class:"yeji-table__header"},ll={key:0,class:"leaderboard-sub"},ol={class:"yeji-table__body"},sl=["onClick"],rl={class:"col-rank"},il={class:"col-abbr"},dl={class:"col-name"},ul={class:"col-consult"},cl={class:"col-deal"},ml={key:0,class:"empty-tip leaderboard-empty"},_l={class:"yeji-order-drawer__header"},pl={class:"yeji-order-drawer__heading"},fl={class:"yeji-order-drawer__sub"},yl={class:"yeji-order-drawer__shell"},bl={class:"yeji-order-drawer__stats",role:"region","aria-label":"订单汇总"},vl={class:"yeji-order-drawer__stat-card"},hl={class:"yeji-order-drawer__stat-value"},gl={class:"yeji-order-drawer__stat-card"},wl={class:"yeji-order-drawer__stat-value"},xl={class:"yeji-order-drawer__stat-card yeji-order-drawer__stat-card--accent"},Nl={class:"yeji-order-drawer__stat-value yeji-order-drawer__stat-value--money"},jl={key:0,class:"yeji-order-drawer__stat-card yeji-order-drawer__stat-card--muted"},kl={class:"yeji-order-drawer__stat-value"},Dl={class:"yeji-order-drawer__body"},Sl={class:"yeji-order-amt"},zl={class:"yeji-order-drawer__pager"},Cl=za({__name:"yeji",setup(Ll){const ot={value:"id",label:"name",children:"children"};function st(t){if(!t.length)return[];const e=new Map;for(const b of t)e.set(b.id,{...b,children:[]});const l=[];for(const b of t){const p=e.get(b.id),v=Number(b.pid);v>0&&e.has(v)?e.get(v).children.push(p):l.push(p)}const o=b=>{var p;(p=b.children)!=null&&p.length?b.children.forEach(o):delete b.children};l.forEach(o);const d=b=>{var p;b.sort((v,M)=>{const P=v.name.includes("中心")?-1:1,f=M.name.includes("中心")?-1:1;return P!==f?P-f:v.id-M.id});for(const v of b)(p=v.children)!=null&&p.length&&d(v.children)};return d(l),l}const B=h(!1),ie=h([]),Ne=h(!1),rt=$(()=>st(ie.value)),U=h([]),je=h([]),ke=h(!1),W=h(""),O=h(null),K=h([]),w=h(null),G=h(!1),Ee=h("table"),Re=$(()=>{var t;return(((t=w.value)==null?void 0:t.leaderboards)??[]).filter(e=>e.rows.length>0)});function Te(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 ee=h(!1),I=h([]),le=h({}),De=h(null),de=$(()=>{const t=De.value;return!(t!=null&&t.start)||!(t!=null&&t.end)?"":t.start===t.end?`区间 ${t.start}`:`区间 ${t.start} ${t.end}`}),Se=$(()=>I.value.some(t=>Number(t.deal_amount??0)>0)),ze=$(()=>I.value.some(t=>Number(t.system_prescription_count??0)>0||Number(t.manual_prescription_count??0)>0)),it=$(()=>{if(Se.value||ze.value||Ce.value||Le.value||$e.value)return!0;for(const t of K.value)if(Te(t))return!0;return Re.value.length>0}),Ce=$(()=>{const t=le.value;return Number(t.appointment_completed??0)+Number(t.appointment_missed??0)+Number(t.appointment_cancelled??0)>0}),dt=$(()=>{const t=le.value,e=[{value:Number(t.appointment_completed??0),name:"挂号完成"},{value:Number(t.appointment_missed??0),name:"过号"},{value:Number(t.appointment_cancelled??0),name:"取消"}].filter(l=>l.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}]}}),Le=$(()=>I.value.filter(t=>Number(t.deal_order_count??0)>0&&Number(t.deal_amount??0)>0).length>=2),ut=$(()=>{const t=I.value.filter(o=>Number(o.deal_order_count??0)>0&&Number(o.deal_amount??0)>0),e=Math.max(...t.map(o=>Number(o.deal_amount)),1),l=t.map(o=>{const d=Number(o.deal_amount);return{name:String(o.doctor_name||"—"),value:[Number(o.deal_order_count),d],symbolSize:12+Math.sqrt(d/e)*26}});return{color:["#2563eb"],tooltip:{trigger:"item",formatter:o=>{var b;const d=(b=o.data)==null?void 0:b.value;return Array.isArray(d)?`${o.data.name}<br/>成交单数:${d[0]}<br/>金额:${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:l}]}}),$e=$(()=>I.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),ct=$(()=>{const t=[...I.value].filter(f=>Number(f.deal_amount??0)+Number(f.deal_order_count??0)+Number(f.system_prescription_count??0)+Number(f.manual_prescription_count??0)>0).sort((f,x)=>Number(x.deal_amount)-Number(f.deal_amount)).slice(0,5);if(t.length<2)return{radar:{indicator:[]},series:[{type:"radar",data:[]}]};const e=f=>{const x=String(f.doctor_name||"—");return x.length>7?`${x.slice(0,7)}…`:x},l=f=>Number(f.system_prescription_count??0)+Number(f.manual_prescription_count??0),o=f=>{const x=Number(f.avg_deal_amount);if(Number.isFinite(x)&&x>0)return x;const E=Number(f.deal_order_count);return E>0?Number(f.deal_amount)/E:0},d=Math.max(...t.map(f=>Number(f.deal_amount)),1e-9),b=Math.max(...t.map(f=>Number(f.deal_order_count)),1e-9),p=Math.max(...t.map(l),1e-9),v=Math.max(...t.map(f=>Number(f.appointment_completed??0)),1e-9),M=Math.max(...t.map(o),1e-9),P=t.map(f=>({name:e(f),value:[Number(f.deal_amount)/d*100,Number(f.deal_order_count)/b*100,l(f)/p*100,Number(f.appointment_completed??0)/v*100,o(f)/M*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:P,emphasis:{lineStyle:{width:3}}}]}}),mt=$(()=>{const t=[...I.value].filter(o=>Number(o.deal_amount??0)>0).sort((o,d)=>Number(d.deal_amount)-Number(o.deal_amount)).slice(0,20),e=t.map(o=>{const d=String(o.doctor_name||"—");return d.length>10?`${d.slice(0,10)}…`:d}),l=t.map(o=>Number(o.deal_amount??0));return{color:["#2563eb"],tooltip:{trigger:"axis",axisPointer:{type:"shadow"},valueFormatter:o=>`${o.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:[...l].reverse(),barMaxWidth:22,itemStyle:{borderRadius:[0,6,6,0]}}]}}),_t=$(()=>{const t=[...I.value].filter(l=>Number(l.system_prescription_count??0)+Number(l.manual_prescription_count??0)>0).sort((l,o)=>Number(o.system_prescription_count??0)+Number(o.manual_prescription_count??0)-(Number(l.system_prescription_count??0)+Number(l.manual_prescription_count??0))).slice(0,14),e=t.map(l=>{const o=String(l.doctor_name||"—");return o.length>6?`${o.slice(0,6)}…`:o});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(l=>Number(l.system_prescription_count??0)),itemStyle:{color:"#2563eb"}},{name:"手动开方",type:"bar",stack:"rx",barMaxWidth:18,data:t.map(l=>Number(l.manual_prescription_count??0)),itemStyle:{color:"#d97706"}}]}});function pt(){var e,l;const t={};if(W.value&&(t.channel_code=W.value),(e=O.value)!=null&&e[0]&&((l=O.value)!=null&&l[1]))t.start_date=O.value[0],t.end_date=O.value[1];else{const o=ve(new Date);t.start_date=o,t.end_date=o}return t}function ue(t){return Number(t??0).toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})}function ft(t){const e=le.value,l=[];return t.columns.forEach((o,d)=>{if(d===0){l[d]="合计";return}switch(o.property){case"system_prescription_count":l[d]=String(e.system_prescription_count??0);break;case"manual_prescription_count":l[d]=String(e.manual_prescription_count??0);break;case"deal_amount":l[d]=${ue(e.deal_amount)}`;break;case"deal_order_count":l[d]=String(e.deal_order_count??0);break;case"avg_deal_amount":l[d]=e.avg_deal_amount!=null?${ue(e.avg_deal_amount)}`:"—";break;case"appointment_completed":l[d]=String(e.appointment_completed??0);break;case"appointment_missed":l[d]=String(e.appointment_missed??0);break;case"appointment_cancelled":l[d]=String(e.appointment_cancelled??0);break;default:l[d]=""}}),l}async function Ve(){ee.value=!0;try{const t=await wa(pt());I.value=(t==null?void 0:t.rows)??[],le.value=(t==null?void 0:t.total)??{},t!=null&&t.start_date&&(t!=null&&t.end_date)&&(De.value={start:t.start_date,end:t.end_date})}catch{I.value=[],le.value={},De.value=null}finally{ee.value=!1}}const ce=h(!1),J=h(!1),Me=h(""),Pe=h(""),Q=h([]),me=h(0),X=h(1),_e=h(15),Oe=h(null),pe=h(null),yt=$(()=>{const t=pe.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 l=Number(e);return Number.isFinite(l)?l:null}),He=$(()=>{const t=pe.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}),bt=$(()=>Q.value.reduce((t,e)=>t+Number(e.amount??0),0)),te=h(null),fe=h(!1);function vt(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function ht(t){const[e,l]=t.split("-").map(Number);return new Date(e,l,0).getDate()}async function gt(){var t,e,l,o;fe.value=!0,te.value=null;try{let d=function(m,N=0){const j=[];for(const C of m??[])j.push({node:C,depth:N}),j.push(...d(C.children??[],N+1));return j},b=function(m){const N=[],j=[m];for(;j.length;){const C=j.shift();for(const q of ie.value)Number(q.pid)===C&&(N.push(q.id),j.push(q.id))}return N},p=function(m,N){const j=new Map;for(const C of(m==null?void 0:m.rows)??[])j.set(Number(C.dept_id),Number(C[N]??0));return j};const v=vt(),M=await Da({year_month:v}),P=(M==null?void 0:M.rows)??[];if(!P.length)return;const x=d(P).filter(m=>m.depth>=1&&Number(m.node.target_amount)>0).map(m=>m.node);if(!x.length)return;const E=new Set,he=x.map(m=>{const N=Number(m.dept_id),j=b(N),C=j.length?j:[N];return C.forEach(q=>E.add(q)),{dept_id:N,dept_name:String(m.dept_name),target_amount:Number(m.target_amount),totalIds:C}});if(!E.size)return;const k=je.value.flatMap(m=>m.channels),oe=(t=k.find(m=>m.channel_name.includes("自媒体1")))==null?void 0:t.channel_code,A=(e=k.find(m=>m.channel_name.includes("自媒体3")))==null?void 0:e.channel_code,ge=(l=k.find(m=>m.channel_name.includes("自媒体4")))==null?void 0:l.channel_code,ne=Array.from(E).join(","),[we,T,n,g]=await Promise.all([re({dept_ids:ne}),oe?re({dept_ids:ne,channel_code:oe}):Promise.resolve(null),A?re({dept_ids:ne,channel_code:A}):Promise.resolve(null),ge?re({dept_ids:ne,channel_code:ge}):Promise.resolve(null)]),D=m=>{var N;return((m==null?void 0:m.tables)??[]).find(j=>String(j.label).includes("月"))??((N=m==null?void 0:m.tables)==null?void 0:N[0])},Ke=m=>{var N,j;return((m==null?void 0:m.tables)??[]).find(C=>String(C.label).includes("昨"))??((j=m==null?void 0:m.tables)==null?void 0:j[((N=m==null?void 0:m.tables)==null?void 0:N.length)-1])},Yt=p(D(we),"performance_amount"),Bt=p(Ke(we),"performance_amount"),et=T?p(D(T),"completed_performance_amount"):null,tt=n?p(D(n),"completed_performance_amount"):null,at=g?p(D(g),"completed_performance_amount"):null,se=(m,N)=>N.reduce((j,C)=>j+(m.get(C)??0),0),Ae=new Date,Ut=ht(v),qt=Ae.getDate(),Gt=he.map(m=>{const N=se(Yt,m.totalIds),j=se(Bt,m.totalIds),C=et?se(et,m.totalIds):null,q=tt?se(tt,m.totalIds):null,nt=at?se(at,m.totalIds):null,Ie=q!==null||nt!==null?(q??0)+(nt??0):null,Zt=Math.round(m.target_amount*(qt/Ut)*100)/100,Kt=m.target_amount>0?N/m.target_amount:null;return{dept_id:m.dept_id,dept_name:m.dept_name,target_amount:m.target_amount,total_amount:N,yesterday_amount:j,douyin_amount:C&&C>0?C:null,tuifen_amount:Ie&&Ie>0?Ie:null,target_progress:Zt,completion_rate:Kt}}),Jt=((o=P[0])==null?void 0:o.dept_name)??"",Qt=Ae.getMonth()+1,Xt=Ae.getDate();te.value={title:`${Jt}诊金-${Qt}.${Xt}`,sections:Gt}}catch{}finally{fe.value=!1}}const wt=$(()=>{var e;const t=(e=w.value)==null?void 0:e.leaderboards;return t?t.filter(l=>l.rows.length>0).length:0}),We=[{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,l=e.getDay()||7;return e.setDate(e.getDate()-(l-1)),[e,t]}},{text:"上月",value:()=>{const t=new Date,e=new Date(t.getFullYear(),t.getMonth()-1,1),l=new Date(t.getFullYear(),t.getMonth(),0);return[e,l]}}];function xt(t){const e=t.value();O.value=[ve(e[0]),ve(e[1])],ae()}async function Nt(){Ne.value=!0;try{const t=await xa();ie.value=(t||[]).sort((e,l)=>{const o=e.name.includes("中心")?-1:1,d=l.name.includes("中心")?-1:1;return o!==d?o-d:e.id-l.id})}catch{}finally{Ne.value=!1}}async function jt(){ke.value=!0;try{const t=await Na(),e=(t==null?void 0:t.groups)||[];je.value=e}catch{}finally{ke.value=!1}}async function Ye(t){G.value=!0;try{const e={start_date:t.start,end_date:t.end};U.value.length>0&&(e.dept_ids=U.value.join(",")),W.value&&(e.channel_code=W.value);const l=await ka(e);w.value={start_date:l.start_date,end_date:l.end_date,channel_code:l.channel_code||"",channel_name:l.channel_name||"",channel_filter_note:l.channel_filter_note||"",range_note:l.range_note||"",leaderboards:l.leaderboards||[]}}catch{w.value=null}finally{G.value=!1}}async function ae(){B.value=!0,w.value=null;try{const t={};if(U.value.length>0&&(t.dept_ids=U.value.join(",")),W.value&&(t.channel_code=W.value),O.value&&O.value[0]&&O.value[1]){const[o,d]=O.value,b={...t,start_date:o,end_date:d},p=await ja(b);K.value=[{label:o===d?o:`${o} ~ ${d}`,start_date:p.start_date,end_date:p.end_date,channel_code:p.channel_code||"",channel_name:p.channel_name||"",channel_group:p.channel_group||"",channel_filter_note:p.channel_filter_note||"",rows:p.rows||[],total:p.total}],await Ye({start:p.start_date,end:p.end_date});return}const e=await re(t);K.value=((e==null?void 0:e.tables)||[]).map(o=>({label:o.label,start_date:o.start_date,end_date:o.end_date,channel_code:o.channel_code||"",channel_name:o.channel_name||"",channel_group:o.channel_group||"",channel_filter_note:o.channel_filter_note||"",rows:o.rows||[],total:o.total}));const l=ve(new Date);await Ye({start:l,end:l})}catch(t){lt.error((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"加载失败")}finally{B.value=!1,Ve()}}function kt(){U.value=[],O.value=null,W.value="",ae()}function Dt(t){return t<=0?!1:ie.value.some(e=>Number(e.pid)===t)}function St(t){return{1:"待双审通过",2:"待发货",3:"已完成",4:"已取消",5:"已发货",6:"已签收",7:"进行中",8:"暂不制药",9:"拒收",10:"退款",11:"保留药方",12:"制药缓发"}[Number(t)]??"—"}function Be(t){return t==null||!Number.isFinite(Number(t))?"—":Number(t).toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})}function zt(t){return(X.value-1)*_e.value+t+1}function Ct(t){if(t==null||t==="")return"—";const e=Number(t);if(Number.isFinite(e)&&e>=1e9&&e<1e15){const o=e<1e12?e*1e3:e,d=new Date(o);if(!Number.isNaN(d.getTime())){const b=d.getFullYear(),p=String(d.getMonth()+1).padStart(2,"0"),v=String(d.getDate()).padStart(2,"0"),M=String(d.getHours()).padStart(2,"0"),P=String(d.getMinutes()).padStart(2,"0");return`${b}-${p}-${v} ${M}:${P}`}}const l=String(t);return l.length>=16?l.slice(0,16):l}async function ye(){const t=Oe.value;if(t){J.value=!0;try{const e={page_no:X.value,page_size:_e.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:e.assistant_id=t.assistantId;const l=await Sa(e);Q.value=Array.isArray(l==null?void 0:l.lists)?l.lists:[],me.value=Number((l==null?void 0:l.count)??0),pe.value=l!=null&&l.extend&&typeof l.extend=="object"?l.extend:null}catch(e){lt.error((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"加载业务订单失败"),Q.value=[],me.value=0,pe.value=null}finally{J.value=!1}}}function Lt(t,e){Oe.value={mode:"dept",deptId:e.dept_id,deptName:e.dept_name,start:t.start_date,end:t.end_date},Me.value=`业务订单 · ${e.dept_name}`,Pe.value=`创建时间:${t.start_date} ${t.end_date} · 诊单医助所属部门 · 不含履约已取消`,X.value=1,ce.value=!0,ye()}function $t(t,e,l){Oe.value={mode:"assistant",assistantId:t.admin_id,assistantName:t.name,start:e,end:l},Me.value=`业务订单 · ${t.name}`,Pe.value=`创建时间:${e} ${l} · 诊单医助 · 不含履约已取消`,X.value=1,ce.value=!0,ye()}function Mt(t){X.value=t,ye()}function Pt(t){_e.value=t,X.value=1,ye()}function Ot(t,e){if(!(e.dept_id<=0)){if(Dt(e.dept_id)){U.value=[e.dept_id],ae();return}Lt(t,e)}}function Ft(t){if(!t||t.admin_id<=0||!w.value)return;const{start_date:e,end_date:l}=w.value;$t(t,e,l)}function Ue(t){const e=t.channel_name?` · ${t.channel_name}`:"";return`${t.label}${e}`}function At(t){const e=t.rows.filter(p=>p.dept_id>0),l=e.map(p=>p.dept_name.length>10?`${p.dept_name.slice(0,10)}…`:p.dept_name),o=["#64748b","#38bdf8","#6366f1"],d=[{name:"进线",type:"bar",data:e.map(p=>p.lead_count),yAxisIndex:0,barMaxWidth:16},{name:"接诊",type:"bar",data:e.map(p=>p.consult_count),yAxisIndex:0,barMaxWidth:16},{name:"成交单",type:"bar",data:e.map(p=>p.deal_order_count),yAxisIndex:0,barMaxWidth:16},{name:"合计业绩",type:"bar",data:e.map(p=>p.performance_amount),yAxisIndex:1,barMaxWidth:14,itemStyle:{color:"#d97706"}}];t.channel_name&&d.push({name:`${t.channel_name}业绩`,type:"bar",data:e.map(p=>p.completed_performance_amount),yAxisIndex:1,barMaxWidth:14,itemStyle:{color:"#0d9488"}});const b=e.length>10;return{color:[...o,"#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:l,axisLabel:{rotate:l.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 It(t,e){const l=[...t.rows].sort((o,d)=>Number(d.fee_amount)-Number(o.fee_amount)).slice(0,15);return{color:["#2563eb"],tooltip:{trigger:"axis",axisPointer:{type:"shadow"},valueFormatter:o=>`${Number(o).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:l.map(o=>o.name.length>8?`${o.name.slice(0,8)}…`:o.name).reverse(),axisLabel:{fontSize:11}},series:[{name:"诊金",type:"bar",data:l.map(o=>Number(o.fee_amount??0)).reverse(),barMaxWidth:20,itemStyle:{borderRadius:[0,6,6,0]}}]}}function qe(t){return t.rows.some(e=>Number(e.fee_amount)>0)}function Et(t,e){const o=[...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:o,itemStyle:{borderRadius:5,borderColor:"#fff",borderWidth:2},label:{formatter:`{b}
{d}%`,fontSize:10}}]}}function Ge(t){return Number(t.total.lead_count)+Number(t.total.consult_count)+Number(t.total.deal_order_count)>0}function Rt(t){const e=Number(t.total.lead_count??0),l=Number(t.total.consult_count??0),o=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:l,name:"接诊"},{value:o,name:"成交单"}]}]}}function Je(t){return t.rows.some(e=>e.dept_id>0&&Number(e.performance_amount)>0)}function Tt(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 o=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,p)=>b+Number(p.performance_amount),0);d>0&&o.push({name:"其它",value:d})}return{color:["#2563eb","#0d9488","#d97706","#7c3aed","#64748b","#0891b2","#65a30d","#c026d3","#ea580c","#4f46e5","#94a3b8"],tooltip:{trigger:"item",formatter:"{b}<br/>{c} 元({d}%"},legend:{type:"scroll",bottom:0,textStyle:{fontSize:10}},series:[{type:"pie",radius:["36%","62%"],center:["50%","44%"],data:o,itemStyle:{borderRadius:5,borderColor:"#fff",borderWidth:2},label:{formatter:`{b}
{d}%`,fontSize:10}}]}}function Fe(t,e){return`${t.channel_name}${e}`}function F(t){return t==null||t===""?"0":Number(t).toLocaleString("en-US")}function R(t){return t==null||t===""?"0.0":Number(t).toLocaleString("en-US",{minimumFractionDigits:1,maximumFractionDigits:1})}function Qe(t){if(t==null||t==="")return"0";const e=Number(t);return Number.isFinite(e)?Math.round(e).toLocaleString("zh-CN"):"0"}function be(t){return t==null||t===""?"—":Number(t).toLocaleString("en-US",{minimumFractionDigits:1,maximumFractionDigits:1})}function Xe(t){return t==null||t===""?"—":Number(t).toFixed(1)}function Ze(t){if(t==null||t==="")return"";const e=Number(t);return e>=1?"roi-good":e>=.8?"roi-mid":"roi-bad"}function Vt(t){return t===null?"—":(t*100).toFixed(2)+"%"}function Ht(t){return t===null?"":t>=1?"tp-good":t>=.8?"tp-mid":"tp-bad"}function Wt(t){return t>=1e4?(t/1e4).toFixed(1)+"万":String(t)}function ve(t){const e=t.getFullYear(),l=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0");return`${e}-${l}-${o}`}return Ca(async()=>{await Promise.all([Nt(),jt()]),ae(),gt()}),(t,e)=>{const l=ta,o=aa,d=ea,b=na,p=oa,v=ra,M=sa,P=ia,f=_a,x=ma,E=ca,he=ua,k=fa,oe=pa,A=ya,ge=da,ne=ba,we=va,T=la;return u(),_("div",Ma,[e[84]||(e[84]=La('<header class="yeji-masthead" data-v-b646a81d><div class="yeji-masthead__inner" data-v-b646a81d><div class="yeji-masthead__text" data-v-b646a81d><h1 class="yeji-masthead__title" data-v-b646a81d>业绩看板</h1><p class="yeji-masthead__desc" data-v-b646a81d> 按渠道、部门与日期查看部门业绩、医生统计与医助排行。下方可切换「统计图表 / 数据表格」;表格模式下点击数据行可在侧栏查看订单明细。 </p></div><div class="yeji-masthead__meta" aria-hidden="true" data-v-b646a81d><span class="yeji-masthead__dot" data-v-b646a81d></span><span class="yeji-masthead__line" data-v-b646a81d></span></div></div></header>',1)),s(P,{class:"yeji-panel filter-card",shadow:"never"},{default:c(()=>[e[12]||(e[12]=a("div",{class:"yeji-panel__head"},[a("span",{class:"yeji-panel__eyebrow"},"筛选"),a("h2",{class:"yeji-panel__title"},"条件与快捷日期")],-1)),a("div",Pa,[a("div",Oa,[a("div",Fa,[e[5]||(e[5]=a("span",{class:"lbl"},"渠道来源",-1)),s(d,{modelValue:W.value,"onUpdate:modelValue":e[0]||(e[0]=n=>W.value=n),filterable:"",placeholder:"渠道筛选",class:"filter-select filter-select--channel",loading:ke.value,onChange:ae},{default:c(()=>[s(l,{label:"全部",value:""}),(u(!0),_(L,null,H(je.value,n=>(u(),z(o,{key:n.group_name,label:n.group_name},{default:c(()=>[(u(!0),_(L,null,H(n.channels,g=>(u(),z(l,{key:g.channel_code,label:g.channel_name,value:g.channel_code},{default:c(()=>[a("div",Aa,[a("span",Ia,i(g.channel_name),1),a("span",Ea,i(g.customer_count>0?g.customer_count:""),1)])]),_:2},1032,["label","value"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","loading"])]),a("div",Ra,[e[6]||(e[6]=a("span",{class:"lbl"},"展示部门",-1)),Z((u(),_("div",Ta,[s(b,{modelValue:U.value,"onUpdate:modelValue":e[1]||(e[1]=n=>U.value=n),data:rt.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:ot},null,8,["modelValue","data"])])),[[T,Ne.value]])]),a("div",Va,[e[7]||(e[7]=a("span",{class:"lbl"},"日期范围",-1)),s(p,{modelValue:O.value,"onUpdate:modelValue":e[2]||(e[2]=n=>O.value=n),type:"daterange","value-format":"YYYY-MM-DD","start-placeholder":"开始","end-placeholder":"结束",clearable:!0,shortcuts:We,class:"filter-date-picker"},null,8,["modelValue"])]),a("div",Ha,[s(M,{type:"primary",class:"filter-btn filter-btn--query",loading:B.value,onClick:ae},{default:c(()=>[s(v,{class:"filter-btn__icon"},{default:c(()=>[s(S(ha))]),_:1}),e[8]||(e[8]=r(" 查询 ",-1))]),_:1},8,["loading"]),s(M,{class:"filter-btn filter-btn--reset",disabled:B.value,onClick:kt},{default:c(()=>[s(v,{class:"filter-btn__icon"},{default:c(()=>[s(S(ga))]),_:1}),e[9]||(e[9]=r(" 重置 ",-1))]),_:1},8,["disabled"])])]),e[11]||(e[11]=a("p",{class:"filter-hint"},[r(" 未选日期时展示「本月 / 本周 / 今日 / 昨日」四张汇总表;选日期后为单表。排行榜默认按今日(见下方说明)。"),a("br"),r(" 筛选展示部门时:所选节点会"),a("strong",null,"自动包含其下全部子部门"),r("并分行展示数据。"),a("br"),r(" 点击"),a("strong",null,"部门汇总表"),r("数据行:若有子部门则下钻为仅看该节点树下级;若为末级则在本页侧栏打开"),a("strong",null,"业务订单"),r("(创建时间、诊单医助部门与当前行一致)。"),a("strong",null,"医助排行榜"),r("行点击后按该医助在侧栏展示订单。 ")],-1)),a("div",Wa,[e[10]||(e[10]=a("span",{class:"filter-quick__title"},"快捷日期",-1)),a("div",Ya,[(u(),_(L,null,H(We,n=>a("button",{key:n.text,type:"button",class:"date-pill",onClick:g=>xt(n)},i(n.text),9,Ba)),64))])])])]),_:1}),s(P,{class:"yeji-panel yeji-main-tabs-card",shadow:"never"},{default:c(()=>[s(ge,{modelValue:Ee.value,"onUpdate:modelValue":e[3]||(e[3]=n=>Ee.value=n),class:"yeji-view-tabs"},{default:c(()=>[s(he,{label:"统计图表",name:"charts",lazy:""},{default:c(()=>[e[22]||(e[22]=a("p",{class:"yeji-charts-intro"},[r(" 与上方筛选联动。除对比柱形外,补充"),a("strong",null,"漏斗"),r("(进线→成交)、"),a("strong",null,"环形占比"),r("、"),a("strong",null,"散点分布"),r("与"),a("strong",null,"雷达对比"),r("等视图,便于看结构、分布与多维差异;明细仍以「数据表格」为准。 ")],-1)),Z((u(),_("div",Ua,[it.value?(u(),_(L,{key:0},[Se.value||ze.value||Ce.value||Le.value||$e.value?(u(),_("section",qa,[a("h3",Ga,[e[13]||(e[13]=r(" 医生统计 ",-1)),de.value?(u(),_("span",Ja,i(de.value),1)):y("",!0)]),s(E,{gutter:16},{default:c(()=>[s(x,{xs:24,lg:9},{default:c(()=>[a("div",Qa,[e[14]||(e[14]=a("div",{class:"yeji-chart-panel__label"},"成交金额 TOP(条形)",-1)),Se.value?(u(),z(S(V),{key:0,class:"yeji-echart",option:mt.value,autoresize:""},null,8,["option"])):(u(),z(f,{key:1,description:"暂无成交金额数据","image-size":72}))])]),_:1}),s(x,{xs:24,lg:8},{default:c(()=>[a("div",Xa,[e[15]||(e[15]=a("div",{class:"yeji-chart-panel__label"},"开方构成(堆叠柱)",-1)),ze.value?(u(),z(S(V),{key:0,class:"yeji-echart yeji-echart--short",option:_t.value,autoresize:""},null,8,["option"])):(u(),z(f,{key:1,description:"暂无开方数据","image-size":72}))])]),_:1}),s(x,{xs:24,lg:7},{default:c(()=>[a("div",Za,[e[16]||(e[16]=a("div",{class:"yeji-chart-panel__label"},"挂号结果(环形 · 表尾合计)",-1)),Ce.value?(u(),z(S(V),{key:0,class:"yeji-echart yeji-echart--short",option:dt.value,autoresize:""},null,8,["option"])):(u(),z(f,{key:1,description:"暂无挂号汇总","image-size":72}))])]),_:1})]),_:1}),s(E,{gutter:16,class:"yeji-chart-subrow"},{default:c(()=>[s(x,{xs:24,lg:12},{default:c(()=>[a("div",Ka,[e[17]||(e[17]=a("div",{class:"yeji-chart-panel__label"},"成交单数 × 金额(散点)",-1)),Le.value?(u(),z(S(V),{key:0,class:"yeji-echart yeji-echart--compact",option:ut.value,autoresize:""},null,8,["option"])):(u(),z(f,{key:1,description:"至少两名医生同时有成交单与金额时可展示","image-size":72}))])]),_:1}),s(x,{xs:24,lg:12},{default:c(()=>[a("div",en,[e[18]||(e[18]=a("div",{class:"yeji-chart-panel__label"},"TOP 医生雷达(相对最高值归一)",-1)),$e.value?(u(),z(S(V),{key:0,class:"yeji-echart yeji-echart--compact",option:ct.value,autoresize:""},null,8,["option"])):(u(),z(f,{key:1,description:"至少两名医生有数据时可展示","image-size":72}))])]),_:1})]),_:1})])):y("",!0),(u(!0),_(L,null,H(K.value,(n,g)=>(u(),_(L,{key:"dept-chart-"+g},[Te(n)?(u(),_("section",tn,[a("h3",an,i(Ue(n)),1),s(S(V),{class:"yeji-echart yeji-echart--tall",option:At(n),autoresize:""},null,8,["option"]),Ge(n)||Je(n)?(u(),z(E,{key:0,gutter:16,class:"yeji-chart-subrow"},{default:c(()=>[Ge(n)?(u(),z(x,{key:0,xs:24,md:12},{default:c(()=>[a("div",nn,[e[19]||(e[19]=a("div",{class:"yeji-chart-panel__label"}," 进线 → 接诊 → 成交(汇总漏斗) ",-1)),s(S(V),{class:"yeji-echart yeji-echart--compact",option:Rt(n),autoresize:""},null,8,["option"])])]),_:2},1024)):y("",!0),Je(n)?(u(),z(x,{key:1,xs:24,md:12},{default:c(()=>[a("div",ln,[e[20]||(e[20]=a("div",{class:"yeji-chart-panel__label"}," 部门合计业绩占比(TOP10 + 其它) ",-1)),s(S(V),{class:"yeji-echart yeji-echart--compact",option:Tt(n),autoresize:""},null,8,["option"])])]),_:2},1024)):y("",!0)]),_:2},1024)):y("",!0)])):y("",!0)],64))),128)),w.value?(u(!0),_(L,{key:1},H(Re.value,n=>(u(),_("section",{key:"lb-chart-"+n.dept_id,class:"yeji-chart-block"},[a("h3",on,[r(i(n.dept_name)+" · 医助 ",1),w.value.channel_name?(u(),_("span",sn," "+i(w.value.channel_name)+" ",1)):y("",!0),a("span",rn,i(w.value.start_date)+""+i(w.value.end_date),1)]),s(E,{gutter:16},{default:c(()=>[s(x,{xs:24,lg:qe(n)?14:24},{default:c(()=>[s(S(V),{class:"yeji-echart",option:It(n,w.value),autoresize:""},null,8,["option"])]),_:2},1032,["lg"]),qe(n)?(u(),z(x,{key:0,xs:24,lg:10},{default:c(()=>[a("div",dn,[e[21]||(e[21]=a("div",{class:"yeji-chart-panel__label"},"诊金占比",-1)),s(S(V),{class:"yeji-echart yeji-echart--compact",option:Et(n,w.value),autoresize:""},null,8,["option"])])]),_:2},1024)):y("",!0)]),_:2},1024)]))),128)):y("",!0)],64)):!B.value&&!ee.value&&!G.value?(u(),z(f,{key:1,class:"yeji-charts-empty",description:"当前筛选下暂无图表数据,请调整条件后查询"})):y("",!0)])),[[T,B.value||ee.value||G.value]])]),_:1}),s(he,{label:"数据表格",name:"table"},{default:c(()=>[s(P,{class:"yeji-panel doctor-daily-card doctor-daily-card--nested",shadow:"never"},{header:c(()=>[a("div",un,[a("div",cn,[e[23]||(e[23]=a("span",{class:"yeji-panel__eyebrow yeji-panel__eyebrow--in-header"},"数据",-1)),e[24]||(e[24]=a("span",{class:"doctor-daily-card__title"},"医生统计",-1)),de.value?(u(),_("span",mn,i(de.value),1)):y("",!0)]),a("div",_n,[s(M,{type:"primary",size:"small",loading:ee.value,onClick:Ve},{default:c(()=>[...e[25]||(e[25]=[r(" 刷新 ",-1)])]),_:1},8,["loading"])])])]),default:c(()=>[e[26]||(e[26]=a("p",{class:"doctor-daily-card__hint"},[a("strong",null,"展示部门"),r("筛选不参与本表。与"),a("strong",null,"渠道来源"),r("、"),a("strong",null,"日期范围"),r("一致(含账号数据权限);未选日期范围时段为"),a("b",null,"今日"),r("。列出 "),a("b",null,"医生角色(role_id=1"),r("且在您数据范围内的账号;开方按处方 "),a("b",null,"prescription_date"),r(";成交按订单 "),a("b",null,"create_time"),r(";挂号按 "),a("b",null,"appointment_date"),r(";选渠道时口径与业绩看板渠道列对齐。 ")],-1)),Z((u(),z(oe,{data:I.value,size:"small",border:"",stripe:"",class:"doctor-daily-table","show-summary":"","summary-method":ft},{default:c(()=>[s(k,{prop:"doctor_name",label:"医生","min-width":"100",fixed:""}),s(k,{prop:"system_prescription_count",label:"系统开方","min-width":"88",align:"right"}),s(k,{prop:"manual_prescription_count",label:"手动开方","min-width":"88",align:"right"}),s(k,{prop:"deal_amount",label:"成交金额","min-width":"110",align:"right"},{default:c(({row:n})=>[r("¥ "+i(ue(n.deal_amount)),1)]),_:1}),s(k,{prop:"deal_order_count",label:"成交单数","min-width":"88",align:"right"}),s(k,{prop:"avg_deal_amount",label:"平均单价","min-width":"100",align:"right"},{default:c(({row:n})=>[r(i(n.avg_deal_amount!=null?${ue(n.avg_deal_amount)}`:"—"),1)]),_:1}),s(k,{prop:"appointment_completed",label:"挂号完成","min-width":"88",align:"right"}),s(k,{prop:"appointment_missed",label:"过号","min-width":"72",align:"right"}),s(k,{prop:"appointment_cancelled",label:"取消","min-width":"72",align:"right"})]),_:1},8,["data"])),[[T,ee.value]])]),_:1}),te.value||fe.value?Z((u(),_("div",pn,[te.value?(u(),_("div",fn,[a("div",yn,i(te.value.title),1),a("div",bn,[(u(!0),_(L,null,H(te.value.sections,n=>(u(),_("div",{key:n.dept_id,class:"tp-section"},[a("div",vn,[a("span",hn,i(n.dept_name)+"目标",1),a("span",gn,i(Wt(n.target_amount)),1)]),a("table",wn,[a("tbody",null,[a("tr",null,[e[27]||(e[27]=a("td",{class:"tp-lbl"},"昨日诊金",-1)),a("td",xn,i(F(n.yesterday_amount)),1)]),n.douyin_amount!==null?(u(),_("tr",Nn,[e[28]||(e[28]=a("td",{class:"tp-lbl"},"抖音总诊金",-1)),a("td",jn,i(F(n.douyin_amount)),1)])):y("",!0),n.tuifen_amount!==null?(u(),_("tr",kn,[e[29]||(e[29]=a("td",{class:"tp-lbl"},"推粉总诊金",-1)),a("td",Dn,i(F(n.tuifen_amount)),1)])):y("",!0),a("tr",null,[e[30]||(e[30]=a("td",{class:"tp-lbl"},"总诊金",-1)),a("td",Sn,i(F(n.total_amount)),1)]),a("tr",null,[e[31]||(e[31]=a("td",{class:"tp-lbl"},"目标进度",-1)),a("td",zn,i(R(n.target_progress)),1)]),a("tr",null,[e[32]||(e[32]=a("td",{class:"tp-lbl"},"完成进度",-1)),a("td",{class:xe(["tp-val",Ht(n.completion_rate)])},i(Vt(n.completion_rate)),3)])])])]))),128))])])):y("",!0)])),[[T,fe.value]]):y("",!0),Z((u(),_("div",Cn,[!B.value&&K.value.length===0?(u(),_("div",Ln,[s(f,{description:"暂无数据"})])):y("",!0),(u(!0),_(L,null,H(K.value,(n,g)=>(u(),_("div",{key:g,class:"yeji-table"},[a("div",$n,i(Ue(n)),1),a("table",Mn,[a("thead",null,[a("tr",null,[e[75]||(e[75]=a("th",{class:"col-dept"},"部门",-1)),a("th",null,[e[39]||(e[39]=a("span",null,"进线数据",-1)),s(A,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[a("div",Pn,[e[37]||(e[37]=r(" add_external_contact 事件数,按接待企微成员归属部门;定渠道时须客户带对应企微标签。",-1)),e[38]||(e[38]=a("br",null,null,-1)),n.channel_name?(u(),_(L,{key:0},[e[33]||(e[33]=a("b",null,"名称含「二中心」的部门",-1)),e[34]||(e[34]=r("在选定渠道下进线计 ",-1)),e[35]||(e[35]=a("b",null,"0",-1)),e[36]||(e[36]=r("。 ",-1))],64)):y("",!0)])]),default:c(()=>[s(v,{class:"col-info"},{default:c(()=>[s(S(Y))]),_:1})]),_:2},1024)]),a("th",null,[e[41]||(e[41]=a("span",null,"合计业绩",-1)),s(A,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[...e[40]||(e[40]=[a("div",{style:{"max-width":"300px","line-height":"1.7","font-size":"12px"}},[r(" 按订单"),a("b",null,"创建时间"),r("统计,与「处方订单列表」业绩合计口径一致。"),a("br"),a("b",null,"不受渠道筛选影响"),r(",展示部门下全部订单。 ")],-1)])]),default:c(()=>[s(v,{class:"col-info"},{default:c(()=>[s(S(Y))]),_:1})]),_:1})]),n.channel_name?(u(),_("th",On,[a("span",null,i(Fe(n,"业绩")),1),s(A,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[...e[42]||(e[42]=[a("div",{style:{"max-width":"340px","line-height":"1.7","font-size":"12px"}},[r(" 与「处方订单列表」业绩"),a("b",null,"同口径"),r(":按订单 "),a("b",null,"create_time"),r(" 归日,"),a("br"),r(" fulfillment_status ≠ 4。"),a("br"),r(" 渠道判定仅用 EXISTS:该患者有任一挂号 "),a("b",null,"channels 命中字典 + status=3"),r("(不限挂号时点)。 ")],-1)])]),default:c(()=>[s(v,{class:"col-info"},{default:c(()=>[s(S(Y))]),_:1})]),_:1})])):y("",!0),a("th",null,[e[44]||(e[44]=a("span",null,"接诊诊单",-1)),s(A,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[...e[43]||(e[43]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[r(" 已完成挂号条数,与「医生预约 / 已完成」列表同口径。"),a("br"),r(" 部门按医助→接诊医生归属。 ")],-1)])]),default:c(()=>[s(v,{class:"col-info"},{default:c(()=>[s(S(Y))]),_:1})]),_:1})]),a("th",null,[e[46]||(e[46]=a("span",null,"成交单数",-1)),s(A,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[...e[45]||(e[45]=[a("div",{style:{"max-width":"320px","line-height":"1.7","font-size":"12px"}},[r(" 与「处方订单列表」在 "),a("b",null,"assistant_dept_id"),r(" 下条数同源:订单 "),a("b",null,"create_time"),r(" 落入区间、履约 "),a("b",null,"fulfillment_status ≠ 4"),r(""),a("br"),r(" 按诊单 "),a("b",null,"医助 assistant_id"),r("(经 admin_dept 映射到展示「中心」),非订单 creator_id。选定渠道时本列仍为全量。 ")],-1)])]),default:c(()=>[s(v,{class:"col-info"},{default:c(()=>[s(S(Y))]),_:1})]),_:1})]),n.channel_name?(u(),_("th",Fn,[a("span",null,i(Fe(n,"成交单")),1),s(A,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[a("div",An,[r(" 与「"+i(n.channel_name)+"业绩」同源:统计区间内 ",1),e[47]||(e[47]=a("b",null,"非取消业务订单",-1)),e[48]||(e[48]=r(" 条数(fulfillment_status ≠ 4),",-1)),e[49]||(e[49]=a("br",null,null,-1)),e[50]||(e[50]=r(" 按订单 ",-1)),e[51]||(e[51]=a("b",null,"create_time",-1)),e[52]||(e[52]=r(" 归日;渠道判定同业绩列(患者须有对应 channels 的已完成挂号)。 ",-1))])]),default:c(()=>[s(v,{class:"col-info"},{default:c(()=>[s(S(Y))]),_:1})]),_:2},1024)])):y("",!0),e[76]||(e[76]=a("th",null,"平均单价",-1)),n.channel_name?(u(),_("th",In,[a("span",null,i(Fe(n,"客单价")),1),s(A,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[a("div",En,i(n.channel_name)+"业绩 ÷ "+i(n.channel_name)+"成交单数(均值)。 ",1)]),default:c(()=>[s(v,{class:"col-info"},{default:c(()=>[s(S(Y))]),_:1})]),_:2},1024)])):y("",!0),a("th",null,[e[72]||(e[72]=a("span",null,"ROI",-1)),s(A,{placement:"top",effect:"dark","show-after":200},{content:c(()=>[a("div",Rn,[n.channel_name?(u(),_(L,{key:0},[e[53]||(e[53]=r(" 有渠道时:",-1)),e[54]||(e[54]=a("b",null,"合计行 ROI",-1)),e[55]||(e[55]=r(" = ",-1)),a("b",null,i(n.channel_name)+"业绩合计",1),e[56]||(e[56]=r("(与上表该渠道业绩列合计一致,",-1)),e[57]||(e[57]=a("b",null,"不含名称含「二中心」的部门",-1)),e[58]||(e[58]=r(")÷ ",-1)),e[59]||(e[59]=a("b",null,"投放成本合计",-1)),e[60]||(e[60]=r("。",-1)),e[61]||(e[61]=a("br",null,null,-1)),e[62]||(e[62]=r(" 部门行 ROI = 该部门 ",-1)),a("b",null,i(n.channel_name)+"业绩",1),e[63]||(e[63]=r(" ÷ 该部门 ",-1)),e[64]||(e[64]=a("b",null,"投放成本",-1)),e[65]||(e[65]=r(";二中心部门该渠道业绩与进线为 0。与「合计业绩」列无关。 ",-1))],64)):(u(),_(L,{key:1},[e[66]||(e[66]=a("b",null,"合计业绩",-1)),e[67]||(e[67]=r(" ÷ ",-1)),e[68]||(e[68]=a("b",null,"投放成本",-1)),e[69]||(e[69]=r("。投放成本按各部门",-1)),e[70]||(e[70]=a("b",null,"进线条数占比",-1)),e[71]||(e[71]=r("从总成本中分摊。 ",-1))],64))])]),default:c(()=>[s(v,{class:"col-info"},{default:c(()=>[s(S(Y))]),_:1})]),_:2},1024)]),a("th",null,[e[74]||(e[74]=a("span",null,"投放成本",-1)),s(A,{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"}},[r(" 区间与渠道与账务表一致后得到"),a("b",null,"总投放成本"),r(""),a("b",null,"单进线成本"),r(" = 总成本 ÷ 各展示部门"),a("b",null,"进线合计"),r(""),a("br"),r(" 各部门行投放成本 = 单进线成本 × 该部门进线(四舍五入尾差并入进线最多的部门)。 ")],-1)])]),default:c(()=>[s(v,{class:"col-info"},{default:c(()=>[s(S(Y))]),_:1})]),_:1})])])]),a("tbody",null,[(u(!0),_(L,null,H(n.rows,D=>(u(),_("tr",{key:D.dept_id,class:xe(["yeji-row--action",{"yeji-row--idle":D.dept_id<=0}]),onClick:Ke=>Ot(n,D)},[a("td",Vn,i(D.dept_name),1),a("td",null,i(F(D.lead_count)),1),a("td",null,i(R(D.performance_amount)),1),n.channel_name?(u(),_("td",Hn,i(R(D.completed_performance_amount)),1)):y("",!0),a("td",null,i(F(D.consult_count)),1),a("td",null,i(F(D.deal_order_count)),1),n.channel_name?(u(),_("td",Wn,i(F(D.channel_consult_count)),1)):y("",!0),a("td",null,i(be(D.avg_price)),1),n.channel_name?(u(),_("td",Yn,i(be(D.channel_avg_price)),1)):y("",!0),a("td",{class:xe(Ze(D.roi))},i(Xe(D.roi)),3),a("td",null,i(R(D.cost_amount)),1)],10,Tn))),128)),a("tr",Bn,[e[77]||(e[77]=a("td",{class:"col-dept"},"合计",-1)),a("td",null,i(F(n.total.lead_count)),1),a("td",null,i(R(n.total.performance_amount)),1),n.channel_name?(u(),_("td",Un,i(R(n.total.completed_performance_amount)),1)):y("",!0),a("td",null,i(F(n.total.consult_count)),1),a("td",null,i(F(n.total.deal_order_count)),1),n.channel_name?(u(),_("td",qn,i(F(n.total.channel_consult_count)),1)):y("",!0),a("td",null,i(be(n.total.avg_price)),1),n.channel_name?(u(),_("td",Gn,i(be(n.total.channel_avg_price)),1)):y("",!0),a("td",{class:xe(Ze(n.total.roi))},i(Xe(n.total.roi)),3),a("td",null,i(R(n.total.cost_amount)),1)])])]),a("div",Jn,[a("span",null,"区间:"+i(n.start_date)+" ~ "+i(n.end_date),1),n.channel_name?(u(),_("span",Qn," · 渠道:"+i(n.channel_name),1)):y("",!0),n.total.cost_per_lead!=null&&n.total.cost_per_lead>0?(u(),_("span",Xn," · 单进线成本:"+i(R(n.total.cost_per_lead))+" 元 ",1)):y("",!0)])]))),128))])),[[T,B.value]]),w.value||G.value?Z((u(),_("div",Zn,[w.value?(u(),_(L,{key:0},[a("p",Kn,[r(i(w.value.range_note)+" ",1),a("span",el,[r(" 统计区间:"+i(w.value.start_date)+""+i(w.value.end_date)+" ",1),O.value?y("",!0):(u(),_(L,{key:0},[r(" (未选自定义日期时排行榜仅统计今日,与上方多张业绩表区间无关) ")],64))])]),a("div",tl,[(u(!0),_(L,null,H(w.value.leaderboards,n=>(u(),_(L,{key:n.dept_id},[n.rows.length>0?(u(),_("div",al,[a("div",nl,[r(i(n.dept_name)+" · 医助排行榜 ",1),w.value.channel_name?(u(),_("span",ll," "+i(w.value.channel_name)+" ",1)):y("",!0)]),a("table",ol,[e[78]||(e[78]=a("thead",null,[a("tr",null,[a("th",{class:"col-rank"},"排名"),a("th",{class:"col-abbr"},"部门"),a("th",{class:"col-name"},"姓名"),a("th",{class:"col-consult"},"接诊单数"),a("th",{class:"col-deal"},"成交单数"),a("th",null,"诊金"),a("th",null,[r("接诊率"),a("br"),a("span",{class:"th-sub"},"(元/进线)")])])],-1)),a("tbody",null,[(u(!0),_(L,null,H(n.rows,g=>(u(),_("tr",{key:g.admin_id,class:"yeji-row--action",onClick:D=>Ft(g)},[a("td",rl,i(g.rank),1),a("td",il,i(g.dept_abbr),1),a("td",dl,i(g.name),1),a("td",ul,i(Qe(g.consult_count)),1),a("td",cl,i(Qe(g.deal_order_count)),1),a("td",null,i(R(g.fee_amount)),1),a("td",null,i(R(g.consult_rate)),1)],8,sl))),128))])]),e[79]||(e[79]=a("div",{class:"yeji-table__foot yeji-table__foot--left"},[a("span",null,"诊金单位:元 · 接诊单数 = 统计区间内已完成挂号(与部门表「接诊诊单」同口径,按 appointment_date;有效医助 = 挂号或诊单医助;选定标签类渠道时与排行诊金同源收窄)· 成交单数 = 非取消业务订单条数(仅剔除履约已取消),按订单 create_time、诊单医助 dg.assistant_id,与部门表「成交单数」及排行诊金同源 · 接诊率 = 诊金 ÷ 进线(元/进线,保留 1 位小数;有渠道时进线含标签过滤与二中心规则)")],-1))])):y("",!0)],64))),128))]),!G.value&&wt.value===0?(u(),_("div",ml,[s(f,{description:"当前筛选下暂无医助排行数据"})])):y("",!0)],64)):y("",!0)])),[[T,G.value]]):y("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1}),s(we,{modelValue:ce.value,"onUpdate:modelValue":e[4]||(e[4]=n=>ce.value=n),direction:"rtl",size:"min(960px, 96vw)","destroy-on-close":"",class:"yeji-order-drawer","show-close":!0},{header:c(()=>[a("div",_l,[a("h3",pl,i(Me.value),1),a("p",fl,i(Pe.value),1)])]),default:c(()=>[a("div",yl,[a("section",bl,[a("div",vl,[e[80]||(e[80]=a("span",{class:"yeji-order-drawer__stat-label"},"符合条件的订单",-1)),a("span",hl,i(me.value.toLocaleString("zh-CN"))+" 笔",1)]),a("div",gl,[e[81]||(e[81]=a("span",{class:"yeji-order-drawer__stat-label"},[r(" 约诊 "),a("span",{class:"yeji-order-drawer__stat-note"},"(已完成挂号;日期按挂号 appointment_date;医助=挂号或诊单,与看板接诊一致)")],-1)),a("span",wl,i(He.value===null?"—":He.value.toLocaleString("zh-CN"))+" 次",1)]),a("div",xl,[e[82]||(e[82]=a("span",{class:"yeji-order-drawer__stat-label"},[r(" 业务订单金额合计 "),a("span",{class:"yeji-order-drawer__stat-note"},"(不含履约已取消,与上方业绩口径一致)")],-1)),a("span",Nl," ¥"+i(Be(yt.value)),1)]),Q.value.length>0?(u(),_("div",jl,[e[83]||(e[83]=a("span",{class:"yeji-order-drawer__stat-label"},"本页小计",-1)),a("span",kl,"¥"+i(Be(bt.value)),1)])):y("",!0)]),Z((u(),_("div",Dl,[Q.value.length>0||J.value?(u(),z(oe,{key:0,data:Q.value,size:"small",stripe:"",border:"","max-height":"58vh",class:"yeji-order-drawer__table","empty-text":J.value?"加载中…":"暂无数据"},{default:c(()=>[s(k,{type:"index",label:"#",width:"46",index:zt}),s(k,{prop:"order_no",label:"订单号","min-width":"152","show-overflow-tooltip":""}),s(k,{label:"金额",width:"108",align:"right"},{default:c(({row:n})=>[a("span",Sl,"¥"+i(n.amount??"—"),1)]),_:1}),s(k,{prop:"recipient_name",label:"收货人",width:"96","show-overflow-tooltip":""}),s(k,{label:"履约",width:"104","show-overflow-tooltip":""},{default:c(({row:n})=>[r(i(St(n.fulfillment_status)),1)]),_:1}),s(k,{label:"创建时间","min-width":"148"},{default:c(({row:n})=>[r(i(Ct(n.create_time)),1)]),_:1}),s(k,{prop:"doctor_name",label:"开方人",width:"88","show-overflow-tooltip":""}),s(k,{prop:"creator_name",label:"创建人",width:"88","show-overflow-tooltip":""})]),_:1},8,["data","empty-text"])):y("",!0),!J.value&&Q.value.length===0?(u(),z(f,{key:1,description:"暂无业务订单"})):y("",!0),a("div",zl,[s(ne,{"current-page":X.value,"page-size":_e.value,background:"",layout:"total, sizes, prev, pager, next, jumper",total:me.value,"page-sizes":[10,15,20,50],disabled:J.value,"hide-on-single-page":!1,onCurrentChange:Mt,onSizeChange:Pt},null,8,["current-page","page-size","total","disabled"])])])),[[T,J.value]])])]),_:1},8,["modelValue"])])}}}),go=$a(Cl,[["__scopeId","data-v-b646a81d"]]);export{go as default};