import{o as U,R as M,ap as Z,bp as ee,q as c,r,v as a,D as s,bd as te,bb as le,az as ae,bh as se,bi as ne,aA as oe,bc as ie,K as de,L as d,s as u,bj as _e,ac as A,O as E,T as i,P as T,bk as ce,u as k,bl as ue,bm as re,F as S,a1 as me,w as be,ci as pe,bn as fe,C as ge,M as h,aC as ve}from"./.pnpm-CyuAWpdG.js";import{_ as ke}from"./index.vue_vue_type_script_setup_true_lang-DHxCVAKu.js";import{t as he,u as ye}from"./stats-B9TgZYZ_.js";import{u as Ve}from"./usePaging-CghUEVfD.js";import{j as Y,_ as Ce}from"./index-Bkarz3gO.js";const Ne={class:"auto-assign-log-page"},xe={class:"toolbar mb-3"},Ee={key:0,class:"toolbar-tip"},Re={class:"cell-sub"},De={class:"cell-sub"},Le={key:0,class:"cell-sub"},Ae={key:2},Se={class:"cell-sub"},Ye={key:1},$e={class:"cell-sub"},ze={key:1,class:"cell-sub"},Be={class:"cell-sub"},Me={key:1,class:"cell-sub"},Te={class:"flex justify-end mt-4"},Ue=U({name:"statsAutoAssignLog"}),je=U({...Ue,setup(Fe){const y=h(null),V=h(null),R=h(),m=h([]),C=h(!1),n=ve({start_date:"",end_date:"",start_time:"",end_time:"",action:"",is_rollback:"",keyword:""});M(y,e=>{n.start_date=(e==null?void 0:e[0])??"",n.end_date=(e==null?void 0:e[1])??""}),M(V,e=>{n.start_time=(e==null?void 0:e[0])??"",n.end_time=(e==null?void 0:e[1])??""});const{pager:f,getLists:D,resetPage:j}=Ve({fetchFun:he,params:n}),b=()=>{var e,l;m.value=[],(l=(e=R.value)==null?void 0:e.clearSelection)==null||l.call(e),j()},F=()=>{y.value=null,V.value=null,n.start_date="",n.end_date="",n.start_time="",n.end_time="",n.action="",n.is_rollback="",n.keyword="",b()},L=e=>e==null?"—":`${e}%`,I=e=>(e==null?void 0:e.rate_version)==="v1"&&(e==null?void 0:e.visit2_rate_new_assign)!==null&&(e==null?void 0:e.visit2_rate_new_assign)!==void 0?e.visit2_rate_new_assign:e==null?void 0:e.visit2_rate,P=e=>Number(e.can_rollback)===1,w=e=>{m.value=e.filter(l=>Number(l.can_rollback)===1)},$=async e=>{var l,g;if(e.length!==0){await Y.confirm(`确认回退选中的 ${e.length} 条自动分配?将把诊单医助撤回到自动分配前的原医助,并写入指派日志。`),C.value=!0;try{const o=await ye({ids:e}),p=Number((o==null?void 0:o.success)??0),v=Number((o==null?void 0:o.failed)??0);v>0&&Array.isArray(o==null?void 0:o.messages)&&o.messages.length?Y.msgWarning(`回退成功 ${p} 条,跳过/失败 ${v} 条:${o.messages.slice(0,3).join(";")}`):Y.msgSuccess(`回退成功 ${p} 条`),m.value=[],(g=(l=R.value)==null?void 0:l.clearSelection)==null||g.call(l),await D()}finally{C.value=!1}}},K=()=>{const e=m.value.map(l=>Number(l.id)).filter(l=>l>0);return $(e)},q=e=>{const l=Number((e==null?void 0:e.id)??0);if(!(l<=0))return $([l])};return Z(()=>D()),(e,l)=>{const g=ae,o=le,p=ne,v=se,H=oe,N=de,O=te,z=_e,_=ue,x=re,W=be,G=me,J=ce,Q=ke,B=ee("perms"),X=fe;return c(),r("div",Ne,[a(z,{class:"!border-none",shadow:"never"},{default:s(()=>[a(O,{inline:!0,class:"log-filter-form"},{default:s(()=>[a(o,{label:"记录时间"},{default:s(()=>[a(g,{modelValue:V.value,"onUpdate:modelValue":l[0]||(l[0]=t=>V.value=t),type:"datetimerange","range-separator":"至","start-placeholder":"开始时间","end-placeholder":"结束时间","value-format":"YYYY-MM-DD HH:mm:ss",clearable:"",onChange:b},null,8,["modelValue"])]),_:1}),a(o,{label:"执行日期"},{default:s(()=>[a(g,{modelValue:y.value,"onUpdate:modelValue":l[1]||(l[1]=t=>y.value=t),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",clearable:"",onChange:b},null,8,["modelValue"])]),_:1}),a(o,{label:"结果"},{default:s(()=>[a(v,{modelValue:n.action,"onUpdate:modelValue":l[2]||(l[2]=t=>n.action=t),clearable:"",placeholder:"全部",class:"w-[120px]",onChange:b},{default:s(()=>[a(p,{label:"已分配",value:"1"}),a(p,{label:"未分配",value:"0"})]),_:1},8,["modelValue"])]),_:1}),a(o,{label:"回退"},{default:s(()=>[a(v,{modelValue:n.is_rollback,"onUpdate:modelValue":l[3]||(l[3]=t=>n.is_rollback=t),clearable:"",placeholder:"全部",class:"w-[120px]",onChange:b},{default:s(()=>[a(p,{label:"未回退",value:"0"}),a(p,{label:"已回退",value:"1"})]),_:1},8,["modelValue"])]),_:1}),a(o,{label:"关键词"},{default:s(()=>[a(H,{modelValue:n.keyword,"onUpdate:modelValue":l[4]||(l[4]=t=>n.keyword=t),placeholder:"患者/手机号/医助/诊单ID",clearable:"",class:"w-[220px]",onKeyup:ie(b,["enter"]),onClear:b},null,8,["modelValue"])]),_:1}),a(o,null,{default:s(()=>[a(N,{type:"primary",onClick:b},{default:s(()=>[...l[6]||(l[6]=[d("查询",-1)])]),_:1}),a(N,{onClick:F},{default:s(()=>[...l[7]||(l[7]=[d("重置",-1)])]),_:1})]),_:1})]),_:1}),l[8]||(l[8]=u("div",{class:"log-hint"},[d(" 由每日定时任务「待分配诊单自动指派」写入:按上月二诊复诊接诊率分档轮询分配(>70% 每人3条/日,60%~70% 每人2条/日,50%~60% 每人1条/日,<50% 不分)。「回退」可将已分配医助撤回到自动分配前的原医助(通常为一中心),并写入指派日志(原医助重新接手按「继承」记录)。 "),u("br"),d(" 口径版本:"),u("b",null,"v1 旧口径"),d(" = 分母仅新指派(visit2_rate_new_assign);"),u("b",null,"v2 新口径"),d(" = 每列独立分母,继承按继承时诊次计入(visit2_rate)。 每条日志同时记录两套率并标注本批次分档所用口径(配置 project.revisit_rate.auto_assign_tier_field);2026-10 前的历史行仅有旧口径率。 ")],-1))]),_:1}),a(z,{class:"!border-none mt-3",shadow:"never"},{default:s(()=>[u("div",xe,[A((c(),E(N,{type:"warning",disabled:m.value.length===0,loading:C.value,onClick:K},{default:s(()=>[d(" 回退选中("+i(m.value.length)+") ",1)]),_:1},8,["disabled","loading"])),[[B,["stats.autoAssignLog/rollback"]]]),m.value.length>0?(c(),r("span",Ee," 已选 "+i(m.value.length)+" 条可回退记录 ",1)):T("",!0)]),A((c(),E(J,{ref_key:"tableRef",ref:R,data:k(f).lists,size:"default",stripe:"","row-key":"id",onSelectionChange:w},{default:s(()=>[a(_,{type:"selection",width:"48",selectable:P,"reserve-selection":""}),a(_,{label:"记录时间",width:"160"},{default:s(({row:t})=>[d(i(t.create_time_text||"—"),1)]),_:1}),a(_,{label:"诊单",width:"90",prop:"diagnosis_id"}),a(_,{label:"患者","min-width":"110"},{default:s(({row:t})=>[u("div",null,i(t.patient_name||"—"),1),u("div",Re,i(t.patient_phone||""),1)]),_:1}),a(_,{label:"结果",width:"90",align:"center"},{default:s(({row:t})=>[a(x,{type:Number(t.action)===1?"success":"info",size:"small"},{default:s(()=>[d(i(t.action_text),1)]),_:2},1032,["type"])]),_:1}),a(_,{label:"回退状态",width:"140"},{default:s(({row:t})=>[Number(t.is_rollback)===1?(c(),r(S,{key:0},[a(x,{type:"warning",size:"small"},{default:s(()=>[...l[9]||(l[9]=[d("已回退",-1)])]),_:1}),u("div",De,i(t.rollback_time_text),1),t.rollback_admin_name?(c(),r("div",Le,i(t.rollback_admin_name),1)):T("",!0)],64)):Number(t.can_rollback)===1?(c(),E(x,{key:1,type:"success",size:"small"},{default:s(()=>[...l[10]||(l[10]=[d(" 可回退 ",-1)])]),_:1})):(c(),r("span",Ae,"—"))]),_:1}),a(_,{label:"医助","min-width":"110"},{default:s(({row:t})=>[Number(t.assistant_id)>0?(c(),r(S,{key:0},[u("div",null,i(t.assistant_name||"#"+t.assistant_id),1),u("div",Se,"上月二诊接诊率 "+i(L(I(t))),1)],64)):(c(),r("span",Ye,"—"))]),_:1}),a(_,{label:"档位",width:"100",align:"center"},{default:s(({row:t})=>[d(i(t.tier_text||"—"),1)]),_:1}),a(_,{label:"分档口径","min-width":"150"},{header:s(()=>[l[11]||(l[11]=u("span",null,"分档口径",-1)),a(G,{placement:"top",effect:"dark",content:"本批次分档所用口径;下方为两套口径的上月二诊接诊率(新口径 = 每列独立分母 / 旧口径 = 分母仅新指派)"},{default:s(()=>[a(W,{class:"col-hint"},{default:s(()=>[a(k(pe))]),_:1})]),_:1})]),default:s(({row:t})=>[Number(t.action)===1?(c(),r(S,{key:0},[a(x,{type:t.rate_version==="v2"?"primary":"info",size:"small"},{default:s(()=>[d(i(t.rate_version_text||t.rate_version||"v1"),1)]),_:2},1032,["type"]),u("div",$e," 新口径 "+i(L(t.visit2_rate))+" · 旧口径 "+i(L(t.visit2_rate_new_assign)),1)],64)):(c(),r("span",ze,"—"))]),_:1}),a(_,{label:"轮次",width:"70",align:"center"},{default:s(({row:t})=>[d(i(Number(t.round_no)>0?"第"+t.round_no+"轮":"—"),1)]),_:1}),a(_,{label:"原因","min-width":"280","show-overflow-tooltip":""},{default:s(({row:t})=>[d(i(t.reason),1)]),_:1}),a(_,{label:"统计月",width:"90",prop:"stat_month",align:"center"}),a(_,{label:"批次",width:"160"},{default:s(({row:t})=>[u("span",Be,i(t.batch_no),1)]),_:1}),a(_,{label:"操作",width:"90",fixed:"right",align:"center"},{default:s(({row:t})=>[Number(t.can_rollback)===1?A((c(),E(N,{key:0,link:"",type:"warning",loading:C.value,onClick:Ie=>q(t)},{default:s(()=>[...l[12]||(l[12]=[d(" 回退 ",-1)])]),_:1},8,["loading","onClick"])),[[B,["stats.autoAssignLog/rollback"]]]):(c(),r("span",Me,"—"))]),_:1})]),_:1},8,["data"])),[[X,k(f).loading]]),u("div",Te,[a(Q,{modelValue:k(f),"onUpdate:modelValue":l[5]||(l[5]=t=>ge(f)?f.value=t:null),onChange:k(D)},null,8,["modelValue","onChange"])])]),_:1})])}}}),Oe=Ce(je,[["__scopeId","data-v-c7a53d4f"]]);export{Oe as default};