{const _=q,x=ee,i=A,f=Z,g=Y,N=O,I=X,P=Q,S=W,T=R,L=H;return V(),v(J,null,[e(_,{shadow:"never",class:"!border-none flex"},{default:t(()=>[...l[3]||(l[3]=[s("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(" 底部导航设置 "),s("span",{class:"form-tips ml-[10px] !mt-0"}," 至少添加2个导航,最多添加5个导航 ")],-1)])]),_:1}),e(L,{"label-width":"70px"},{default:t(()=>[e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[l[4]||(l[4]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),e(i,{label:"默认颜色"},{default:t(()=>[e(x,{class:"max-w-[400px]",modelValue:m(n).style.default_color,"onUpdate:modelValue":l[0]||(l[0]=u=>m(n).style.default_color=u),"default-color":"#999999"},null,8,["modelValue"])]),_:1}),e(i,{label:"选中颜色",style:{"margin-bottom":"0"}},{default:t(()=>[e(x,{class:"max-w-[400px]",modelValue:m(n).style.selected_color,"onUpdate:modelValue":l[1]||(l[1]=u=>m(n).style.selected_color=u),"default-color":"#4173ff"},null,8,["modelValue"])]),_:1})]),_:1}),e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>{var u;return[l[7]||(l[7]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"菜单设置"),s("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),s("div",le,[e(m(K),{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:r})=>[e(S,{onClose:d=>B(r),class:M(["max-w-[400px]",{draggable:r!=0}]),"show-close":r!==0},{default:t(()=>[s("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(()=>[s("div",te,[e(f,{name:"el-icon-Plus",size:16}),l[5]||(l[5]=s("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(()=>[s("div",se,[e(f,{name:"el-icon-Plus",size:16}),l[6]||(l[6]=s("span",{class:"text-xs leading-5"}," 选中 ",-1))])]),_:1},8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"导航名称"},{default:t(()=>[e(N,{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:r===0,modelValue:o.link,"onUpdate:modelValue":d=>o.link=d},null,8,["disabled","modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"是否显示"},{default:t(()=>[s("div",ae,[e(P,{disabled:r==0,modelValue:o.is_show,"onUpdate:modelValue":d=>o.is_show=d,"active-value":1,"inactive-value":0,onChange:d=>F(o)},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"]),s("div",ne,[e(f,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])]),_:2},1032,["onClose","show-close","class"])]),_:1},8,["modelValue"])]),((u=m(n).list)==null?void 0:u.length) {const _=q,x=ee,i=A,f=Z,g=Y,N=O,I=X,P=Q,S=W,T=R,L=H;return V(),v(J,null,[e(_,{shadow:"never",class:"!border-none flex"},{default:t(()=>[...l[3]||(l[3]=[s("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(" 底部导航设置 "),s("span",{class:"form-tips ml-[10px] !mt-0"}," 至少添加2个导航,最多添加5个导航 ")],-1)])]),_:1}),e(L,{"label-width":"70px"},{default:t(()=>[e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[l[4]||(l[4]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),e(i,{label:"默认颜色"},{default:t(()=>[e(x,{class:"max-w-[400px]",modelValue:m(n).style.default_color,"onUpdate:modelValue":l[0]||(l[0]=u=>m(n).style.default_color=u),"default-color":"#999999"},null,8,["modelValue"])]),_:1}),e(i,{label:"选中颜色",style:{"margin-bottom":"0"}},{default:t(()=>[e(x,{class:"max-w-[400px]",modelValue:m(n).style.selected_color,"onUpdate:modelValue":l[1]||(l[1]=u=>m(n).style.selected_color=u),"default-color":"#4173ff"},null,8,["modelValue"])]),_:1})]),_:1}),e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>{var u;return[l[7]||(l[7]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"菜单设置"),s("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),s("div",le,[e(m(K),{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:r})=>[e(S,{onClose:d=>B(r),class:M(["max-w-[400px]",{draggable:r!=0}]),"show-close":r!==0},{default:t(()=>[s("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(()=>[s("div",te,[e(f,{name:"el-icon-Plus",size:16}),l[5]||(l[5]=s("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(()=>[s("div",se,[e(f,{name:"el-icon-Plus",size:16}),l[6]||(l[6]=s("span",{class:"text-xs leading-5"}," 选中 ",-1))])]),_:1},8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"导航名称"},{default:t(()=>[e(N,{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:r===0,modelValue:o.link,"onUpdate:modelValue":d=>o.link=d},null,8,["disabled","modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"是否显示"},{default:t(()=>[s("div",ae,[e(P,{disabled:r==0,modelValue:o.is_show,"onUpdate:modelValue":d=>o.is_show=d,"active-value":1,"inactive-value":0,onChange:d=>F(o)},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"]),s("div",ne,[e(f,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])]),_:2},1032,["onClose","show-close","class"])]),_:1},8,["modelValue"])]),((u=m(n).list)==null?void 0:u.length) {var d;if(((d=c.content.data)==null?void 0:d.length)<=1)return v.msgError("最少保留一张图片");const e=b(c.content);e.data.splice(a,1),m("update:content",e)};return(a,e)=>{const d=H,y=z,_=q,E=G,U=A,C=T,B=S,D=K,N=O,$=Q;return i(),g("div",null,[t($,{"label-width":"70px"},{default:l(()=>[t(N,{shadow:"never",class:"!border-none flex mt-2"},{default:l(()=>{var x;return[e[2]||(e[2]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"菜单"),s("div",{class:"text-xs text-tx-secondary ml-2"}," 最多添加5张,建议图片尺寸:750px*200px ")],-1)),t(u(j),{class:"draggable",modelValue:u(f).data,"onUpdate:modelValue":e[0]||(e[0]=o=>u(f).data=o),animation:"300",handle:".drag-move","item-key":"index"},{item:l(({element:o,index:V})=>[(i(),F(B,{key:V,onClose:n=>w(V),class:"w-[467px]"},{default:l(()=>[s("div",J,[t(d,{modelValue:o.image,"onUpdate:modelValue":n=>o.image=n,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),s("div",M,[t(_,{label:"图片名称"},{default:l(()=>[t(y,{modelValue:o.name,"onUpdate:modelValue":n=>o.name=n,placeholder:"请输入名称"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),t(_,{class:"mt-[18px]",label:"图片链接"},{default:l(()=>[t(E,{modelValue:o.link,"onUpdate:modelValue":n=>o.link=n},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),t(_,{label:"是否显示",class:"mt-[18px]"},{default:l(()=>[s("div",W,[t(U,{modelValue:o.is_show,"onUpdate:modelValue":n=>o.is_show=n,"active-value":"1","inactive-value":"0"},null,8,["modelValue","onUpdate:modelValue"]),s("div",X,[t(C,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"]),((x=r.content.data)==null?void 0:x.length) [...e[1]||(e[1]=[L("添加图片",-1)])]),_:1})])):P("",!0)]}),_:1})]),_:1})])}}});export{le as _};
+import{o as I,q as i,r as g,v as t,D as l,bg as O,s,u,bQ as j,O as F,b6 as q,b7 as z,I as A,K,L,P,b9 as Q,p as R,cm as b}from"./.pnpm-Dwh6tNxD.js";import{_ as S}from"./index-BD5KfpL_.js";import{c as T,i as v}from"./index-B6PfZ7nj.js";import{_ as G}from"./picker-CPoSMZpH.js";import{_ as H}from"./picker-DnJfa6L1.js";const J={class:"bg-fill-light flex items-center w-full p-4 mt-4"},M={class:"ml-3 flex-1"},W={class:"flex-1 flex items-center"},X={class:"drag-move cursor-move ml-auto"},Y={key:0,class:"mt-4"},p=5,le=I({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(r,{emit:h}){const m=h,c=r,f=R({get:()=>c.content,set:a=>{m("update:content",a)}}),k=()=>{var a;if(((a=c.content.data)==null?void 0:a.length) {var d;if(((d=c.content.data)==null?void 0:d.length)<=1)return v.msgError("最少保留一张图片");const e=b(c.content);e.data.splice(a,1),m("update:content",e)};return(a,e)=>{const d=H,y=z,_=q,E=G,U=A,C=T,B=S,D=K,N=O,$=Q;return i(),g("div",null,[t($,{"label-width":"70px"},{default:l(()=>[t(N,{shadow:"never",class:"!border-none flex mt-2"},{default:l(()=>{var x;return[e[2]||(e[2]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"菜单"),s("div",{class:"text-xs text-tx-secondary ml-2"}," 最多添加5张,建议图片尺寸:750px*200px ")],-1)),t(u(j),{class:"draggable",modelValue:u(f).data,"onUpdate:modelValue":e[0]||(e[0]=o=>u(f).data=o),animation:"300",handle:".drag-move","item-key":"index"},{item:l(({element:o,index:V})=>[(i(),F(B,{key:V,onClose:n=>w(V),class:"w-[467px]"},{default:l(()=>[s("div",J,[t(d,{modelValue:o.image,"onUpdate:modelValue":n=>o.image=n,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),s("div",M,[t(_,{label:"图片名称"},{default:l(()=>[t(y,{modelValue:o.name,"onUpdate:modelValue":n=>o.name=n,placeholder:"请输入名称"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),t(_,{class:"mt-[18px]",label:"图片链接"},{default:l(()=>[t(E,{modelValue:o.link,"onUpdate:modelValue":n=>o.link=n},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),t(_,{label:"是否显示",class:"mt-[18px]"},{default:l(()=>[s("div",W,[t(U,{modelValue:o.is_show,"onUpdate:modelValue":n=>o.is_show=n,"active-value":"1","inactive-value":"0"},null,8,["modelValue","onUpdate:modelValue"]),s("div",X,[t(C,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"]),((x=r.content.data)==null?void 0:x.length) [...e[1]||(e[1]=[L("添加图片",-1)])]),_:1})])):P("",!0)]}),_:1})]),_:1})])}}});export{le as _};
diff --git a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-B6uHrbrS.js b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-XpQPGZLy.js
similarity index 96%
rename from server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-B6uHrbrS.js
rename to server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-XpQPGZLy.js
index 324343b7f..961e61d22 100644
--- a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-B6uHrbrS.js
+++ b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-XpQPGZLy.js
@@ -1 +1 @@
-import{o as k,q as d,r as u,v as l,D as o,bg as F,s,bc as U,u as n,bf as B,L as x,b6 as C,bm as N,F as b,G as c,bn as O,b9 as j,p as D}from"./.pnpm-Dwh6tNxD.js";import{_ as G}from"./add-nav.vue_vue_type_script_setup_true_lang-CH8U6Lyn.js";const L={class:"flex-1 mt-4"},I=k({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(v,{emit:V}){const y=V,w=v,a=D({get:()=>w.content,set:m=>{y("update:content",m)}});return(m,e)=>{const r=B,E=U,p=O,_=N,i=C,f=F,g=j;return d(),u("div",null,[l(g,{"label-width":"70px"},{default:o(()=>[l(f,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[6]||(e[6]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),l(E,{modelValue:n(a).style,"onUpdate:modelValue":e[0]||(e[0]=t=>n(a).style=t)},{default:o(()=>[l(r,{value:1},{default:o(()=>[...e[4]||(e[4]=[x("固定显示",-1)])]),_:1}),l(r,{value:2},{default:o(()=>[...e[5]||(e[5]=[x("分页滑动",-1)])]),_:1})]),_:1},8,["modelValue"]),l(i,{label:"每行数量",class:"mt-4"},{default:o(()=>[l(_,{modelValue:n(a).per_line,"onUpdate:modelValue":e[1]||(e[1]=t=>n(a).per_line=t),style:{width:"300px"}},{default:o(()=>[(d(),u(b,null,c(5,t=>l(p,{key:t,label:t+"个",value:t},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1}),l(i,{label:"显示行数"},{default:o(()=>[l(_,{modelValue:n(a).show_line,"onUpdate:modelValue":e[2]||(e[2]=t=>n(a).show_line=t),style:{width:"300px"}},{default:o(()=>[(d(),u(b,null,c(2,t=>l(p,{key:t,label:t+"行",value:t},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1})]),_:1}),l(f,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[7]||(e[7]=s("div",{class:"flex items-end"},[s("div",{class:"text-base text-[#101010] font-medium"},"菜单设置"),s("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),s("div",L,[l(G,{modelValue:n(a).data,"onUpdate:modelValue":e[3]||(e[3]=t=>n(a).data=t)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{I as _};
+import{o as k,q as d,r as u,v as l,D as o,bg as F,s,bc as U,u as n,bf as B,L as x,b6 as C,bm as N,F as b,G as c,bn as O,b9 as j,p as D}from"./.pnpm-Dwh6tNxD.js";import{_ as G}from"./add-nav.vue_vue_type_script_setup_true_lang-CZZ2jPnk.js";const L={class:"flex-1 mt-4"},I=k({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(v,{emit:V}){const y=V,w=v,a=D({get:()=>w.content,set:m=>{y("update:content",m)}});return(m,e)=>{const r=B,E=U,p=O,_=N,i=C,f=F,g=j;return d(),u("div",null,[l(g,{"label-width":"70px"},{default:o(()=>[l(f,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[6]||(e[6]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),l(E,{modelValue:n(a).style,"onUpdate:modelValue":e[0]||(e[0]=t=>n(a).style=t)},{default:o(()=>[l(r,{value:1},{default:o(()=>[...e[4]||(e[4]=[x("固定显示",-1)])]),_:1}),l(r,{value:2},{default:o(()=>[...e[5]||(e[5]=[x("分页滑动",-1)])]),_:1})]),_:1},8,["modelValue"]),l(i,{label:"每行数量",class:"mt-4"},{default:o(()=>[l(_,{modelValue:n(a).per_line,"onUpdate:modelValue":e[1]||(e[1]=t=>n(a).per_line=t),style:{width:"300px"}},{default:o(()=>[(d(),u(b,null,c(5,t=>l(p,{key:t,label:t+"个",value:t},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1}),l(i,{label:"显示行数"},{default:o(()=>[l(_,{modelValue:n(a).show_line,"onUpdate:modelValue":e[2]||(e[2]=t=>n(a).show_line=t),style:{width:"300px"}},{default:o(()=>[(d(),u(b,null,c(2,t=>l(p,{key:t,label:t+"行",value:t},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1})]),_:1}),l(f,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[7]||(e[7]=s("div",{class:"flex items-end"},[s("div",{class:"text-base text-[#101010] font-medium"},"菜单设置"),s("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),s("div",L,[l(G,{modelValue:n(a).data,"onUpdate:modelValue":e[3]||(e[3]=t=>n(a).data=t)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{I as _};
diff --git a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-2Q5vVd2y.js b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-imfWX4fi.js
similarity index 91%
rename from server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-2Q5vVd2y.js
rename to server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-imfWX4fi.js
index 2a8811e52..8c59c13f7 100644
--- a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-2Q5vVd2y.js
+++ b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-imfWX4fi.js
@@ -1 +1 @@
-import{o as j,q as d,r as b,v as o,D as s,bg as F,s as n,u as p,bQ as S,O as _,b6 as q,P as r,b7 as z,I as A,K,L,b9 as P,p as Q,cm as v}from"./.pnpm-Dwh6tNxD.js";import{_ as R}from"./index-39SS-XKl.js";import{c as T,i as k}from"./index-C0Q8AuuZ.js";import{_ as G}from"./picker-D3OnL1mV.js";import{_ as H}from"./picker-2bpe8Dva.js";const J={class:"flex-1"},M={class:"bg-fill-light w-full p-4 mt-4"},W={class:"flex-1"},X={class:"flex-1 flex items-center"},Y={class:"drag-move cursor-move ml-auto"},Z={key:0,class:"mt-4"},f=5,ae=j({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},type:{type:String,default:"mobile"}},emits:["update:content"],setup(m,{emit:y}){const u=y,c=m,g=Q({get:()=>c.content,set:a=>{u("update:content",a)}}),w=()=>{var a;if(((a=c.content.data)==null?void 0:a.length) 订单池默认与处方订单列表同源:创建时间 start_time~end_time + fulfillment_status(默认完成态 3),账号列表可见性/数据域一并生效。 选结算月仍可套用「物流签收与尾款支付均须在结算月 7 日 24 点前」拆分「本期提成 / 顺延下期」 (仅有签收在范围内、尾款晚于截止仍会顺延); 展示部门/渠道下拉与列表不同,勾选后会与列表计数不同。 订单池默认与处方订单列表同源:创建时间 start_time~end_time + fulfillment_status(默认完成态 3),账号列表可见性/数据域一并生效。 选结算月仍可套用「物流签收与尾款支付均须在结算月 7 日 24 点前」拆分「本期提成 / 顺延下期」 (仅有签收在范围内、尾款晚于截止仍会顺延); 展示部门/渠道下拉与列表不同,勾选后会与列表计数不同。 提成结算业绩
提成结算业绩
{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{o as K,R as rt,ba as U,ap as dt,q as l,r as c,s as t,v as a,D as n,L as O,u as w,by as I,K as ct,cT as pt,w as ut,T as r,bn as bt,bm as mt,c8 as _t,F as C,G as A,c7 as ht,O as v,cJ as D,bB as yt,P as W,d3 as wt,cL as vt,p as S,M as J}from"./.pnpm-Dwh6tNxD.js";import{l as ft,O as V,Q as gt,_ as kt}from"./index-B6PfZ7nj.js";import{aF as xt}from"./tcm-6fAzOljO.js";import{u as St}from"./order-DKOEj1O5.js";import{u as j}from"./getExposeType-DJc9Mp7l.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"},Lt={class:"wb-toolbar"},Et={class:"wb-section-body"},Vt={class:"wb-kpi wb-kpi--violet"},Rt={class:"wb-kpi-value"},Ft={class:"wb-kpi wb-kpi--amber"},Pt={class:"wb-kpi-value wb-kpi-value--sm"},Bt={class:"wb-rank-strip wb-rank-strip--compact"},Wt={key:0,class:"wb-rank-chips"},Tt={key:1,class:"wb-rank-empty"},Ht={class:"wb-chart-card"},Mt={class:"wb-chart-card"},Ut={class:"wb-chart-card"},It={class:"wb-chart-card wb-ranking-card"},jt={key:0,class:"wb-ranking-list"},qt={class:"wb-ranking-rank"},Gt={class:"wb-ranking-name"},Jt={class:"wb-ranking-meta"},Kt={class:"wb-ranking-money"},Qt={key:0,class:"wb-dept-block"},Yt={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"},ne={class:"wb-section-icon wb-section-icon--blue"},ie={class:"wb-section-sub"},re={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"},ve={class:"wb-dept-card-head"},fe={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=K({name:"workbench"}),Le=K({...ze,setup(Ee){const g=ft(),T=j(),H=j(),Q=j(),M=["#5b7cfa","#36cfc9","#ffc53d","#ff7a45","#b37feb","#597ef7","#73d13d","#ff85c0"];function q(s){if(s==null)return 0;const e=parseFloat(String(s).replace(/,/g,""));return Number.isFinite(e)?e:0}const p=U({days:0,departments:[],today_ranking:[],ranking:[],chart:{xAxis:[],series:[]}}),Y=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:M,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=()=>{xt({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(()=>{})},F=J(-1),P=J(0),_=U({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=>q(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:M,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:q(e.amount)})).filter(e=>e.value>0);return{color:M,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=P.value,h=new Date,b=new Date;return e===0?(b.setHours(0,0,0,0),`${B(b)} 至 ${B(h)}`):(b.setDate(b.getDate()-(e||7)),`${B(b)} 至 ${B(h)}`)});function B(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=()=>{St({order_type:F.value,days:P.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(()=>{})},nt=()=>{G(),R(),N()};rt(()=>g.theme,()=>{it()});const u=U({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=()=>{gt().then(s=>{var e,h,b,i,k,m,f,x,$,z,L,E;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=(f=s.sale)==null?void 0:f.date)==null||x.reverse().forEach(o=>{u.saleOption.xAxis.data.push(o)}),(E=(L=(z=($=s.sale)==null?void 0:$.list)==null?void 0:z[0])==null?void 0:L.data)==null||E.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=T.value)==null||e.clear(),(h=H.value)==null||h.clear(),(b=T.value)==null||b.setOption(u.saleOption),(i=H.value)==null||i.setOption(u.visitorOption)};return dt(()=>{G(),R(),N()}),(s,e)=>{var $,z,L,E;const h=ct,b=ut,i=bt,k=mt,m=_t,f=ht,x=yt;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:w(I),round:"",class:"wb-refresh-btn",onClick:nt},{default:n(()=>[...e[3]||(e[3]=[O(" 刷新全部 ",-1)])]),_:1},8,["icon"])]),t("section",At,[t("div",Dt,[t("div",Nt,[t("span",$t,[a(b,null,{default:n(()=>[a(w(pt))]),_:1})]),t("div",null,[e[5]||(e[5]=t("div",{class:"wb-section-name"},"订单统计",-1)),t("div",zt,r(ot.value)+" · "+r(_.order_type_name||"—"),1)])]),t("div",Lt,[a(k,{modelValue:F.value,"onUpdate:modelValue":e[0]||(e[0]=o=>F.value=o),class:"wb-select wb-select--wide",onChange:N},{default:n(()=>[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:P.value,"onUpdate:modelValue":e[1]||(e[1]=o=>P.value=o),class:"wb-select",onChange:N},{default:n(()=>[a(i,{label:"今天",value:0}),a(i,{label:"最近7天",value:7}),a(i,{label:"最近30天",value:30})]),_:1},8,["modelValue"]),a(h,{icon:w(I),circle:"",onClick:N},null,8,["icon"])])]),t("div",Et,[a(f,{gutter:16,class:"wb-kpi-row"},{default:n(()=>[a(m,{xs:24,sm:8},{default:n(()=>[t("div",Vt,[e[6]||(e[6]=t("div",{class:"wb-kpi-label"},"今日单数",-1)),t("div",Rt,r(_.today_total??0),1)])]),_:1}),a(m,{xs:24,sm:8},{default:n(()=>[t("div",Ft,[e[7]||(e[7]=t("div",{class:"wb-kpi-label"},"今日金额",-1)),t("div",Pt,"¥"+r(_.today_amount??"0.00"),1)])]),_:1}),a(m,{xs:24,sm:8},{default:n(()=>{var o;return[t("div",Bt,[e[8]||(e[8]=t("span",{class:"wb-rank-strip-label"},"今日 TOP",-1)),(o=_.today_ranking)!=null&&o.length?(l(),c("div",Wt,[(l(!0),c(C,null,A(_.today_ranking.slice(0,4),(d,y)=>(l(),c("span",{key:d.id,class:"wb-rank-chip wb-rank-chip--dense"},[t("em",null,r(Number(y)+1),1),O(" "+r(d.name)+" ",1),t("strong",null,r(d.count),1),t("small",null,"¥"+r(d.amount),1)]))),128))])):(l(),c("span",Tt,"暂无"))])]}),_:1})]),_:1}),a(f,{gutter:20,class:"wb-chart-row"},{default:n(()=>[a(m,{xs:24,lg:10},{default:n(()=>[t("div",Ht,[e[9]||(e[9]=t("div",{class:"wb-chart-card-head"},[t("span",{class:"wb-chart-title"},"部门单数占比")],-1)),tt.value?(l(),v(w(D),{key:0,class:"wb-chart",style:{height:"300px"},option:st.value,autoresize:!0},null,8,["option"])):(l(),v(x,{key:1,class:"wb-chart-empty",description:"暂无数据"}))])]),_:1}),a(m,{xs:24,lg:14},{default:n(()=>{var o,d;return[t("div",Mt,[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(),v(w(D),{key:"order-bar-"+F.value,class:"wb-chart",style:{height:"300px"},option:lt.value,autoresize:!0},null,8,["option"])):(l(),v(x,{key:1,class:"wb-chart-empty",description:"暂无图表数据"}))])]}),_:1})]),_:1}),a(f,{gutter:20,class:"wb-chart-row"},{default:n(()=>[a(m,{xs:24,lg:10},{default:n(()=>[t("div",Ut,[e[11]||(e[11]=t("div",{class:"wb-chart-card-head"},[t("span",{class:"wb-chart-title"},"部门金额占比")],-1)),et.value?(l(),v(w(D),{key:0,class:"wb-chart",style:{height:"300px"},option:at.value,autoresize:!0},null,8,["option"])):(l(),v(x,{key:1,class:"wb-chart-empty",description:"暂无数据"}))])]),_:1}),a(m,{xs:24,lg:14},{default:n(()=>{var o;return[t("div",It,[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",jt,[(l(!0),c(C,null,A(_.ranking,(d,y)=>(l(),c("div",{key:d.id,class:"wb-ranking-item"},[t("span",qt,r(Number(y)+1),1),t("span",Gt,r(d.name),1),t("span",Jt,[t("b",null,r(d.count),1),e[12]||(e[12]=O(" 单 ",-1)),t("span",Kt,"¥"+r(d.amount),1)])]))),128))])):(l(),v(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(f,{gutter:16},{default:n(()=>[(l(!0),c(C,null,A(_.departments,o=>(l(),v(m,{key:o.dept_id,xs:24,sm:12,lg:8},{default:n(()=>{var d;return[t("div",Yt,[t("div",Xt,[O(r(o.dept_name)+" ",1),t("span",Zt,r(o.total)+" 单 · ¥"+r(o.amount),1)]),t("div",te,[(l(!0),c(C,null,A(o.members,y=>(l(),c("div",{key:`${o.dept_id}-${y.id}`,class:"wb-dept-row"},[t("span",null,r(y.name),1),t("span",ee,[O(r(y.count)+" ",1),t("small",null,"¥"+r(y.amount),1)])]))),128)),(d=o.members)!=null&&d.length?W("",!0):(l(),c("div",se,"暂无"))])])]}),_:2},1024))),128))]),_:1})])):W("",!0)])]),t("section",ae,[t("div",oe,[t("div",le,[t("span",ne,[a(b,null,{default:n(()=>[a(w(wt))]),_:1})]),t("div",null,[e[15]||(e[15]=t("div",{class:"wb-section-name"},"医助理诊单统计",-1)),t("div",ie,r((z=p.date_range)==null?void 0:z[0])+" 至 "+r((L=p.date_range)==null?void 0:L[1]),1)])]),t("div",re,[a(k,{modelValue:p.days,"onUpdate:modelValue":e[2]||(e[2]=o=>p.days=o),class:"wb-select",onChange:R},{default:n(()=>[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:w(I),circle:"",onClick:R},null,8,["icon"])])]),t("div",de,[a(f,{gutter:16,class:"wb-kpi-row"},{default:n(()=>[a(m,{xs:24,sm:8,lg:6},{default:n(()=>[t("div",ce,[e[16]||(e[16]=t("div",{class:"wb-kpi-label"},"今日创建诊单",-1)),t("div",pe,r(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:n(()=>{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(C,null,A(p.today_ranking.slice(0,6),(d,y)=>(l(),c("span",{key:d.id,class:"wb-rank-chip"},[t("em",null,r(y+1),1),O(" "+r(d.name)+" ",1),t("strong",null,r(d.count),1)]))),128))])):(l(),c("span",me,"暂无排行数据"))])]}),_:1})]),_:1}),a(f,{gutter:20,class:"wb-chart-row"},{default:n(()=>[a(m,{xs:24,lg:15},{default:n(()=>{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(),v(w(D),{key:0,ref_key:"assistantChart",ref:Q,class:"wb-chart",style:{height:"340px"},option:Z.value,autoresize:!0},null,8,["option"])):(l(),v(x,{key:1,class:"wb-chart-empty",description:"暂无图表数据"}))])]}),_:1}),a(m,{xs:24,lg:9},{default:n(()=>[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)),Y.value?(l(),v(w(D),{key:0,class:"wb-chart",style:{height:"340px"},option:X.value,autoresize:!0},null,8,["option"])):(l(),v(x,{key:1,class:"wb-chart-empty",description:"暂无部门数据"}))])]),_:1})]),_:1}),(E=p.departments)!=null&&E.length?(l(),c("div",ye,[e[21]||(e[21]=t("div",{class:"wb-dept-title"},"按部门明细",-1)),a(f,{gutter:16},{default:n(()=>[(l(!0),c(C,null,A(p.departments,o=>(l(),v(m,{key:o.dept_id,xs:24,sm:12,lg:8},{default:n(()=>{var d;return[t("div",we,[t("div",ve,[O(r(o.dept_name)+" ",1),t("span",fe,"共 "+r(o.total),1)]),t("div",ge,[(l(!0),c(C,null,A(o.assistants,y=>(l(),c("div",{key:`${o.dept_id}-${y.id}`,class:"wb-dept-row"},[t("span",null,r(y.name),1),t("span",ke,r(y.count),1)]))),128)),(d=o.assistants)!=null&&d.length?W("",!0):(l(),c("div",xe,"暂无医助"))])])]}),_:2},1024))),128))]),_:1})])):W("",!0)])]),t("section",Se,[t("div",Oe,[t("div",Ce,[t("span",Ae,[a(b,null,{default:n(()=>[a(w(vt))]),_: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(f,{gutter:20},{default:n(()=>[a(m,{xs:24,lg:14},{default:n(()=>[t("div",Ne,[e[23]||(e[23]=t("div",{class:"wb-chart-card-head"},[t("span",{class:"wb-chart-title"},"访问量趋势")],-1)),a(w(D),{ref_key:"visitorChart",ref:H,class:"wb-chart",style:{height:"320px"},option:u.visitorOption,autoresize:!0},null,8,["option"])])]),_:1}),a(m,{xs:24,lg:10},{default:n(()=>[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(w(D),{ref_key:"saleChart",ref:T,class:"wb-chart",style:{height:"320px"},option:u.saleOption,autoresize:!0},null,8,["option"])])]),_:1})]),_:1})])])])}}}),We=kt(Le,[["__scopeId","data-v-2f6eaa33"]]);export{We as default};
diff --git a/server/public/admin/assets/index-Bpo3Cxqg.js b/server/public/admin/assets/index-ByqRutlV.js
similarity index 99%
rename from server/public/admin/assets/index-Bpo3Cxqg.js
rename to server/public/admin/assets/index-ByqRutlV.js
index 6a0dd6152..0ee6833a3 100644
--- a/server/public/admin/assets/index-Bpo3Cxqg.js
+++ b/server/public/admin/assets/index-ByqRutlV.js
@@ -1 +1 @@
-import{o as q,ap as ue,bo as fe,bx as ge,ac as ve,bi as ye,q as o,r,s as t,v as i,D as c,u as m,cL as ke,w as he,cO as be,L as d,T as s,P as g,by as we,K as xe,O as p,bh as $e,bZ as Ne,F as u,ae as h,db as F,dc as z,cg as K,a1 as De,G as L,dd as Ce,bK as Se,t as W,bB as Me,cP as Fe,cJ as ze,bX as Le,ba as Ee,M as x,p as v}from"./.pnpm-Dwh6tNxD.js";import{v as Ie}from"./stats-D88mctKe.js";import{_ as Ve}from"./index-C0Q8AuuZ.js";const Te={class:"performance-dashboard","element-loading-text":"正在汇总权限范围内的数据"},Pe={class:"dashboard-header"},Re={class:"dashboard-heading"},Be={class:"dashboard-heading__icon"},Oe={class:"dashboard-title-row"},Ae={class:"scope-badge"},je={key:0},Ue={class:"dashboard-actions"},Ge={key:0,class:"updated-at"},Ke={key:1,class:"dashboard-skeleton"},We={class:"performance-strip","aria-label":"业绩概览"},qe={class:"metric-card metric-card--primary"},He={class:"metric-value metric-value--money"},Je={class:"metric-card"},Xe={class:"metric-value metric-value--money"},Ze={class:"metric-card"},Qe={class:"metric-value metric-value--money"},Ye={key:0,class:"metric-card"},et={class:"metric-label-row"},tt={class:"metric-value metric-value--money"},at={class:"metric-card metric-card--clock"},nt={class:"metric-value metric-value--time"},ot={class:"metric-foot"},st={class:"operating-grid","aria-label":"今日运营指标"},rt={class:"metric-label"},lt={class:"metric-comparisons"},it={class:"metric-hint"},ct={class:"dashboard-grid dashboard-grid--rankings"},dt={class:"dashboard-panel ranking-panel"},_t={class:"panel-header"},mt={key:0},pt={class:"panel-header-actions"},ut={key:0,class:"ranking-list"},ft={class:"ranking-main"},gt={class:"ranking-copy"},vt={key:0,class:"ranking-self-tag"},yt={class:"ranking-meter","aria-hidden":"true"},kt={class:"ranking-value"},ht={class:"dashboard-panel ranking-panel"},bt={class:"panel-header"},wt={key:0,class:"ranking-list"},xt={class:"ranking-main"},$t={class:"ranking-copy"},Nt={key:0,class:"ranking-self-tag"},Dt={class:"ranking-meter","aria-hidden":"true"},Ct={class:"ranking-value ranking-value--money"},St={class:"dashboard-grid dashboard-grid--bottom"},Mt={class:"dashboard-panel trend-panel"},Ft={class:"panel-header panel-header--stack-mobile"},zt={class:"dashboard-panel target-panel"},Lt={class:"panel-header"},Et={class:"panel-meta"},It={class:"target-block"},Vt={class:"target-copy"},Tt={key:0},Pt={key:1},Rt={class:"target-block target-block--secondary"},Bt={class:"target-copy"},Ot={key:0,class:"target-empty-note"},At={class:"dashboard-notes"},jt={key:3,class:"dashboard-empty"},Ut=q({name:"performanceDashboardPage"}),Gt=q({...Ut,setup(Kt){const b=()=>({direction:"flat",rate:null,previous:0}),B=()=>({scope:{key:"",kind:"",scope_value:4,label:"",is_limited:!0,viewer_name:"",viewer_id:0,role_ids:[],role_names:[],department_names:[],visible_member_count:0},performance:{month_amount:0,month_compare_rate:null,month_compare_label:"",today_amount:0,today_compare_rate:null,today_compare_label:"",yesterday_amount:0,yesterday_compare_rate:null,yesterday_compare_label:"",personal_month_amount:0},today:{add_fans_count:0,appointment_total_count:0,low_amount_payment_count:0,interview_count:0,completed_order_count:0,completed_order_amount:0,paid_appointment_count:0,paid_appointment_rate:0,interview_receive_rate:0,comparisons:{add_fans_count:b(),appointment_total_count:b(),low_amount_payment_count:b(),interview_count:b(),completed_order_count:b(),completed_order_amount:b(),paid_appointment_rate:b(),interview_receive_rate:b()}},rankings:{appointments:{title:"实时挂号排行",kind:"assistant",metric:"registration",scope_label:"",items:[]},performance:{title:"今日部门业绩排行",kind:"dept",scope_label:"",items:[]}},filters:{ranking_departments:[],ranking_dept_id:0,ranking_selectable:!0},trend:{date_range:[],dates:[],registrations:[],appointments:[],leads:[],orders:[]},target:{year_month:"",target_amount:0,completed_amount:0,completion_rate:null,personal_amount:0,personal_contribution_rate:null,department_count:0},meta:{generated_at:"",timezone:"",commission_note:"",rate_note:""}}),e=Ee(B()),$=x(!1),N=x(!1),D=x(""),E=x("registrations"),C=x(),I=x(new Date);let V;const H={value:"id",label:"name",children:"children"},J=[{label:"挂号",value:"registrations"},{label:"预约",value:"appointments"},{label:"进线",value:"leads"},{label:"诊单",value:"orders"}],X=v(()=>{const n=e.scope.role_names.length?e.scope.role_names.join("、"):"管理员",a=e.scope.department_names.length?e.scope.department_names.join("、"):"未绑定部门";return`${e.scope.viewer_name||"当前账号"},${n},${a}`}),Z=v(()=>[{key:"fans",label:"今日加粉",value:y(e.today.add_fans_count),hint:"按企微新增客户事件统计",comparisons:[e.today.comparisons.add_fans_count]},{key:"appointments",label:"今日预约",value:y(e.today.appointment_total_count),hint:"状态为已预约、已完成或改期,排除已取消",comparisons:[e.today.comparisons.appointment_total_count]},{key:"lowAmountPayments",label:"今日挂号",value:`${y(e.today.low_amount_payment_count)} `,hint:"已支付且实收金额大于 0、低于 10 元的订单",comparisons:[e.today.comparisons.low_amount_payment_count]},{key:"orders",label:"今日接诊 / 诊单金额",value:"",hint:"按业务订单统计,排除取消、拒收和退款",comparisons:[{...e.today.comparisons.completed_order_count,label:"诊单"},{...e.today.comparisons.completed_order_amount,label:"金额"}]},{key:"appointmentRate",label:"挂号率",value:S(e.today.paid_appointment_rate),hint:`挂号 ${y(e.today.paid_appointment_count)} / 加粉数`,comparisons:[e.today.comparisons.paid_appointment_rate]},{key:"receiveRate",label:"接诊率",value:S(e.today.interview_receive_rate),hint:"诊单数 / 面诊数",comparisons:[e.today.comparisons.interview_receive_rate]},{key:"interviews",label:"今日面诊",value:y(e.today.interview_count),hint:"状态为已完成的预约",comparisons:[e.today.comparisons.interview_count]}]),Q=v(()=>new Intl.DateTimeFormat("zh-CN",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(I.value)),Y=v(()=>new Intl.DateTimeFormat("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",weekday:"short"}).format(I.value)),ee=v(()=>e.filters.ranking_selectable!==!1&&e.scope.kind!=="group_leader"&&e.rankings.appointments.kind!=="doctor"&&e.filters.ranking_departments.length>0),O=v(()=>e.rankings.appointments.metric==="appointment"?"预约":"挂号"),A=v(()=>{if(e.rankings.appointments.metric==="appointment")return"";const n=e.rankings.appointments.kind==="doctor"?"医生":"成员";return`${e.rankings.appointments.scope_label||"当前部门"}内${n}已支付且实收低于 10 元的订单数`}),te=v(()=>{const n=e.rankings.performance.scope_label||"当前部门";return e.rankings.performance.kind==="person"?e.scope.kind==="group_leader"?"本小组内今日计入业绩的个人订单":`${n}内今日计入业绩的个人订单`:`${n}内今日计入业绩的业务订单`}),ae=v(()=>Math.max(0,...e.rankings.appointments.items.map(n=>Number(n.count||0)))),ne=v(()=>Math.max(0,...e.rankings.performance.items.map(n=>Number(n.amount||0)))),oe=v(()=>{const a={registrations:{label:"挂号",data:e.trend.registrations},appointments:{label:"预约",data:e.trend.appointments},leads:{label:"进线",data:e.trend.leads},orders:{label:"诊单",data:e.trend.orders}}[E.value];return{animationDuration:320,tooltip:{trigger:"axis",valueFormatter:_=>`${y(_)} 条`},grid:{left:42,right:18,top:24,bottom:30,containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:e.trend.dates,axisLine:{lineStyle:{color:"#d9e0e7"}},axisLabel:{color:"#7d8996"}},yAxis:{type:"value",minInterval:1,splitLine:{lineStyle:{color:"#edf1f4"}},axisLabel:{color:"#7d8996"}},series:[{name:a.label,type:"line",smooth:.35,showSymbol:!0,symbolSize:7,data:a.data,lineStyle:{color:"#0f8f83",width:3},itemStyle:{color:"#0f8f83",borderColor:"#ffffff",borderWidth:2},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(15, 143, 131, 0.20)"},{offset:1,color:"rgba(15, 143, 131, 0.01)"}]}}}]}}),k=(n,a=2)=>`¥${new Intl.NumberFormat("zh-CN",{minimumFractionDigits:a,maximumFractionDigits:a}).format(Number(n||0))}`,y=n=>new Intl.NumberFormat("zh-CN",{maximumFractionDigits:0}).format(Number(n||0)),S=n=>n===null?"暂无":`${Number(n||0).toFixed(1)}%`,T=n=>`${n>=0?"+":""}${Number(n).toFixed(1)}%`,P=n=>n===null||n===0?"":n>0?"is-positive":"is-negative",se=n=>n==="up"?"is-positive":n==="down"?"is-negative":"is-flat",re=n=>{const a=n.label?`${n.label} `:"";if(n.direction==="flat")return`${a}较昨日持平`;const _=n.direction==="up"?"上升":"下降";return n.rate===null?`${a}较昨日${_}(昨日为 0)`:`${a}较昨日${_} ${Math.abs(Number(n.rate)).toFixed(1)}%`},j=(n,a)=>a<=0||n<=0?"0%":`${Math.max(6,Math.min(100,Number(n)/a*100))}%`,U=n=>n===null||!Number.isFinite(Number(n))?0:Math.max(0,Math.min(100,Number(n))),w=async()=>{$.value=!0,D.value="";try{const n=await Ie({ranking_dept_id:N.value?C.value||0:void 0,_t:Date.now()});Object.assign(e,B(),n||{}),C.value=Number(e.filters.ranking_dept_id||0)||void 0,N.value=!0}catch(n){D.value=(n==null?void 0:n.msg)||(n==null?void 0:n.message)||"驾驶舱数据加载失败,请稍后重试"}finally{$.value=!1}},le=()=>{w()};return ue(()=>{w(),V=setInterval(()=>{I.value=new Date},1e3)}),fe(()=>{N.value&&w()}),ge(()=>{V&&clearInterval(V)}),(n,a)=>{const _=he,R=xe,ie=$e,ce=Ne,de=De,_e=Se,M=Me,me=Fe,G=Le,pe=ye;return ve((o(),r("div",Te,[t("header",Pe,[t("div",Re,[t("div",Be,[i(_,null,{default:c(()=>[i(m(ke))]),_:1})]),t("div",null,[t("div",Oe,[a[2]||(a[2]=t("h1",null,"我的首页",-1)),t("span",Ae,[i(_,null,{default:c(()=>[i(m(be))]),_:1}),d(" "+s(e.scope.label||"数据范围"),1)])]),t("p",null,[d(s(X.value)+" ",1),e.scope.visible_member_count>0?(o(),r("span",je," ,当前可见 "+s(e.scope.visible_member_count)+" 位成员 ",1)):g("",!0)])])]),t("div",Ue,[e.meta.generated_at?(o(),r("div",Ge," 数据更新于 "+s(e.meta.generated_at),1)):g("",!0),i(R,{icon:m(we),loading:$.value,onClick:w},{default:c(()=>[...a[3]||(a[3]=[d("刷新数据",-1)])]),_:1},8,["icon","loading"])])]),D.value?(o(),p(ie,{key:0,class:"dashboard-error",type:"error",closable:!1,"show-icon":"",title:D.value},{default:c(()=>[i(R,{size:"small",onClick:w},{default:c(()=>[...a[4]||(a[4]=[d("重新加载",-1)])]),_:1})]),_:1},8,["title"])):g("",!0),!N.value&&$.value?(o(),r("div",Ke,[i(ce,{rows:12,animated:""})])):N.value?(o(),r(u,{key:2},[t("section",We,[t("article",qe,[a[5]||(a[5]=t("div",{class:"metric-label"},"本月实时业绩",-1)),t("div",He,s(k(e.performance.month_amount)),1),t("div",{class:h(["metric-foot",P(e.performance.month_compare_rate)])},[e.performance.month_compare_rate!==null?(o(),r(u,{key:0},[e.performance.month_compare_rate>=0?(o(),p(_,{key:0},{default:c(()=>[i(m(F))]),_:1})):(o(),p(_,{key:1},{default:c(()=>[i(m(z))]),_:1})),d(" "+s(e.performance.month_compare_label)+" "+s(T(e.performance.month_compare_rate)),1)],64)):(o(),r(u,{key:1},[d("上月同期暂无可比数据")],64))],2)]),t("article",Je,[a[6]||(a[6]=t("div",{class:"metric-label"},"今日新增业绩",-1)),t("div",Xe,s(k(e.performance.today_amount)),1),t("div",{class:h(["metric-foot",P(e.performance.today_compare_rate)])},[e.performance.today_compare_rate!==null?(o(),r(u,{key:0},[e.performance.today_compare_rate>=0?(o(),p(_,{key:0},{default:c(()=>[i(m(F))]),_:1})):(o(),p(_,{key:1},{default:c(()=>[i(m(z))]),_:1})),d(" "+s(e.performance.today_compare_label)+" "+s(T(e.performance.today_compare_rate)),1)],64)):(o(),r(u,{key:1},[d("昨日暂无可比数据")],64))],2)]),t("article",Ze,[a[7]||(a[7]=t("div",{class:"metric-label"},"昨日新增业绩",-1)),t("div",Qe,s(k(e.performance.yesterday_amount)),1),t("div",{class:h(["metric-foot",P(e.performance.yesterday_compare_rate)])},[e.performance.yesterday_compare_rate!==null?(o(),r(u,{key:0},[e.performance.yesterday_compare_rate>=0?(o(),p(_,{key:0},{default:c(()=>[i(m(F))]),_:1})):(o(),p(_,{key:1},{default:c(()=>[i(m(z))]),_:1})),d(" "+s(e.performance.yesterday_compare_label)+" "+s(T(e.performance.yesterday_compare_rate)),1)],64)):(o(),r(u,{key:1},[d("前一日暂无可比数据")],64))],2)]),e.scope.kind!=="assistant"?(o(),r("article",Ye,[t("div",et,[a[8]||(a[8]=t("span",null,"本人本月业绩",-1)),i(de,{content:e.meta.commission_note,placement:"top"},{default:c(()=>[i(_,{class:"metric-help"},{default:c(()=>[i(m(K))]),_:1})]),_:1},8,["content"])]),t("div",tt,s(k(e.performance.personal_month_amount)),1),a[9]||(a[9]=t("div",{class:"metric-foot"},"仅统计当前登录账号",-1))])):g("",!0),t("article",at,[a[10]||(a[10]=t("div",{class:"metric-label"},"当前时间",-1)),t("div",nt,s(Q.value),1),t("div",ot,s(Y.value),1)])]),t("section",st,[(o(!0),r(u,null,L(Z.value,l=>(o(),r("article",{key:l.key,class:"metric-card metric-card--compact"},[t("div",rt,s(l.label),1),t("div",{class:h(["metric-value",{"metric-value--pair":l.key==="orders"}])},[l.key==="orders"?(o(),r(u,{key:0},[d(s(y(e.today.completed_order_count))+" ",1),a[11]||(a[11]=t("span",null,"/",-1)),d(" "+s(k(e.today.completed_order_amount)),1)],64)):(o(),r(u,{key:1},[d(s(l.value),1)],64))],2),t("div",lt,[(o(!0),r(u,null,L(l.comparisons,f=>(o(),r("div",{key:`${l.key}-${f.label||"total"}`,class:h(["metric-foot",se(f.direction)])},[f.direction==="up"?(o(),p(_,{key:0},{default:c(()=>[i(m(F))]),_:1})):f.direction==="down"?(o(),p(_,{key:1},{default:c(()=>[i(m(z))]),_:1})):(o(),p(_,{key:2},{default:c(()=>[i(m(Ce))]),_:1})),d(" "+s(re(f)),1)],2))),128))]),t("div",it,s(l.hint),1)]))),128))]),t("section",ct,[t("article",dt,[t("div",_t,[t("div",null,[t("h2",null,s(e.rankings.appointments.title),1),A.value?(o(),r("p",mt,s(A.value),1)):g("",!0)]),t("div",pt,[ee.value?(o(),p(_e,{key:0,modelValue:C.value,"onUpdate:modelValue":a[0]||(a[0]=l=>C.value=l),data:e.filters.ranking_departments,props:H,"node-key":"id","check-strictly":"",clearable:"",filterable:"","default-expand-all":"",placeholder:"全部部门",class:"ranking-dept-select",onChange:le},null,8,["modelValue","data"])):g("",!0),a[12]||(a[12]=t("span",{class:"panel-meta"},"实时",-1))])]),e.rankings.appointments.items.length?(o(),r("div",ut,[(o(!0),r(u,null,L(e.rankings.appointments.items,(l,f)=>(o(),r("div",{key:`appointment-${l.id}-${f}`,class:h(["ranking-row",{"is-self":l.is_self}])},[t("span",{class:h(["ranking-index",{"is-top":f<2,"is-self":l.is_self}])},s(f+1),3),t("div",ft,[t("div",gt,[t("strong",null,[d(s(l.name||"未命名成员")+" ",1),l.is_self?(o(),r("i",vt,"我")):g("",!0)]),t("span",null,s(y(l.count))+" "+s(O.value),1)]),t("div",yt,[t("span",{style:W({width:j(l.count,ae.value)})},null,4)])]),t("b",kt,s(y(l.count)),1)],2))),128))])):(o(),p(M,{key:1,"image-size":72,description:`当前数据范围内暂无${O.value}排行`},null,8,["description"]))]),t("article",ht,[t("div",bt,[t("div",null,[t("h2",null,s(e.rankings.performance.title),1),t("p",null,s(te.value),1)]),a[13]||(a[13]=t("span",{class:"panel-meta"},"今日",-1))]),e.rankings.performance.items.length?(o(),r("div",wt,[(o(!0),r(u,null,L(e.rankings.performance.items,(l,f)=>(o(),r("div",{key:`performance-${l.id}-${f}`,class:h(["ranking-row",{"is-self":l.is_self}])},[t("span",{class:h(["ranking-index",{"is-top":f<2,"is-self":l.is_self}])},s(f+1),3),t("div",xt,[t("div",$t,[t("strong",null,[d(s(l.name||(e.rankings.performance.kind==="person"?"未命名成员":"未命名部门"))+" ",1),l.is_self?(o(),r("i",Nt,"我")):g("",!0)]),t("span",null,s(y(l.count))+" 个诊单",1)]),t("div",Dt,[t("span",{style:W({width:j(l.amount,ne.value)})},null,4)])]),t("b",Ct,s(k(l.amount)),1)],2))),128))])):(o(),p(M,{key:1,"image-size":72,description:"当前数据范围内暂无业务订单业绩"}))])]),t("section",St,[t("article",Mt,[t("div",Ft,[t("div",null,[a[14]||(a[14]=t("h2",null,"近 7 天数据趋势",-1)),t("p",null,s(e.trend.date_range.join(" 至 ")),1)]),i(me,{modelValue:E.value,"onUpdate:modelValue":a[1]||(a[1]=l=>E.value=l),options:J},null,8,["modelValue"])]),e.trend.dates.length?(o(),p(m(ze),{key:0,class:"trend-chart",option:oe.value,autoresize:""},null,8,["option"])):(o(),p(M,{key:1,"image-size":72,description:"暂无趋势数据"}))]),t("article",zt,[t("div",Lt,[t("div",null,[a[15]||(a[15]=t("h2",null,"进度目标",-1)),t("p",null,s(e.target.year_month)+",按当前角色数据范围计算",1)]),t("span",Et,s(e.target.department_count)+" 个目标部门",1)]),t("div",It,[t("div",Vt,[t("div",null,[a[16]||(a[16]=t("span",null,"范围目标进度",-1)),e.target.target_amount>0?(o(),r("strong",Tt,s(S(e.target.completion_rate)),1)):(o(),r("strong",Pt,"未设置"))]),t("p",null,[d(" 已完成 "+s(k(e.target.completed_amount))+" ",1),e.target.target_amount>0?(o(),r(u,{key:0},[d(" ,目标 "+s(k(e.target.target_amount)),1)],64)):g("",!0)])]),i(G,{percentage:U(e.target.completion_rate),"show-text":!1,"stroke-width":12,color:"#0f8f83"},null,8,["percentage"])]),t("div",Rt,[t("div",Bt,[t("div",null,[a[17]||(a[17]=t("span",null,"本人业绩贡献",-1)),t("strong",null,s(S(e.target.personal_contribution_rate)),1)]),t("p",null," 本人 "+s(k(e.target.personal_amount))+",占当前范围已完成业绩 ",1)]),i(G,{percentage:U(e.target.personal_contribution_rate),"show-text":!1,"stroke-width":12,color:"#738196"},null,8,["percentage"])]),e.target.target_amount<=0?(o(),r("div",Ot," 当前范围尚未设置本月部门目标,已完成业绩仍会正常统计。 ")):g("",!0)])]),t("footer",At,[i(_,null,{default:c(()=>[i(m(K))]),_:1}),t("span",null,s(e.meta.rate_note),1)])],64)):D.value?(o(),r("div",jt,[i(M,{description:"驾驶舱数据加载失败"},{default:c(()=>[i(R,{type:"primary",onClick:w},{default:c(()=>[...a[18]||(a[18]=[d("重新加载",-1)])]),_:1})]),_:1})])):g("",!0)])),[[pe,$.value]])}}}),Jt=Ve(Gt,[["__scopeId","data-v-8a87b9f7"]]);export{Jt as default};
+import{o as q,ap as ue,bo as fe,bx as ge,ac as ve,bi as ye,q as o,r,s as t,v as i,D as c,u as m,cL as ke,w as he,cO as be,L as d,T as s,P as g,by as we,K as xe,O as p,bh as $e,bZ as Ne,F as u,ae as h,db as F,dc as z,cg as K,a1 as De,G as L,dd as Ce,bK as Se,t as W,bB as Me,cP as Fe,cJ as ze,bX as Le,ba as Ee,M as x,p as v}from"./.pnpm-Dwh6tNxD.js";import{v as Ie}from"./stats-DhDVOVF5.js";import{_ as Ve}from"./index-B6PfZ7nj.js";const Te={class:"performance-dashboard","element-loading-text":"正在汇总权限范围内的数据"},Pe={class:"dashboard-header"},Re={class:"dashboard-heading"},Be={class:"dashboard-heading__icon"},Oe={class:"dashboard-title-row"},Ae={class:"scope-badge"},je={key:0},Ue={class:"dashboard-actions"},Ge={key:0,class:"updated-at"},Ke={key:1,class:"dashboard-skeleton"},We={class:"performance-strip","aria-label":"业绩概览"},qe={class:"metric-card metric-card--primary"},He={class:"metric-value metric-value--money"},Je={class:"metric-card"},Xe={class:"metric-value metric-value--money"},Ze={class:"metric-card"},Qe={class:"metric-value metric-value--money"},Ye={key:0,class:"metric-card"},et={class:"metric-label-row"},tt={class:"metric-value metric-value--money"},at={class:"metric-card metric-card--clock"},nt={class:"metric-value metric-value--time"},ot={class:"metric-foot"},st={class:"operating-grid","aria-label":"今日运营指标"},rt={class:"metric-label"},lt={class:"metric-comparisons"},it={class:"metric-hint"},ct={class:"dashboard-grid dashboard-grid--rankings"},dt={class:"dashboard-panel ranking-panel"},_t={class:"panel-header"},mt={key:0},pt={class:"panel-header-actions"},ut={key:0,class:"ranking-list"},ft={class:"ranking-main"},gt={class:"ranking-copy"},vt={key:0,class:"ranking-self-tag"},yt={class:"ranking-meter","aria-hidden":"true"},kt={class:"ranking-value"},ht={class:"dashboard-panel ranking-panel"},bt={class:"panel-header"},wt={key:0,class:"ranking-list"},xt={class:"ranking-main"},$t={class:"ranking-copy"},Nt={key:0,class:"ranking-self-tag"},Dt={class:"ranking-meter","aria-hidden":"true"},Ct={class:"ranking-value ranking-value--money"},St={class:"dashboard-grid dashboard-grid--bottom"},Mt={class:"dashboard-panel trend-panel"},Ft={class:"panel-header panel-header--stack-mobile"},zt={class:"dashboard-panel target-panel"},Lt={class:"panel-header"},Et={class:"panel-meta"},It={class:"target-block"},Vt={class:"target-copy"},Tt={key:0},Pt={key:1},Rt={class:"target-block target-block--secondary"},Bt={class:"target-copy"},Ot={key:0,class:"target-empty-note"},At={class:"dashboard-notes"},jt={key:3,class:"dashboard-empty"},Ut=q({name:"performanceDashboardPage"}),Gt=q({...Ut,setup(Kt){const b=()=>({direction:"flat",rate:null,previous:0}),B=()=>({scope:{key:"",kind:"",scope_value:4,label:"",is_limited:!0,viewer_name:"",viewer_id:0,role_ids:[],role_names:[],department_names:[],visible_member_count:0},performance:{month_amount:0,month_compare_rate:null,month_compare_label:"",today_amount:0,today_compare_rate:null,today_compare_label:"",yesterday_amount:0,yesterday_compare_rate:null,yesterday_compare_label:"",personal_month_amount:0},today:{add_fans_count:0,appointment_total_count:0,low_amount_payment_count:0,interview_count:0,completed_order_count:0,completed_order_amount:0,paid_appointment_count:0,paid_appointment_rate:0,interview_receive_rate:0,comparisons:{add_fans_count:b(),appointment_total_count:b(),low_amount_payment_count:b(),interview_count:b(),completed_order_count:b(),completed_order_amount:b(),paid_appointment_rate:b(),interview_receive_rate:b()}},rankings:{appointments:{title:"实时挂号排行",kind:"assistant",metric:"registration",scope_label:"",items:[]},performance:{title:"今日部门业绩排行",kind:"dept",scope_label:"",items:[]}},filters:{ranking_departments:[],ranking_dept_id:0,ranking_selectable:!0},trend:{date_range:[],dates:[],registrations:[],appointments:[],leads:[],orders:[]},target:{year_month:"",target_amount:0,completed_amount:0,completion_rate:null,personal_amount:0,personal_contribution_rate:null,department_count:0},meta:{generated_at:"",timezone:"",commission_note:"",rate_note:""}}),e=Ee(B()),$=x(!1),N=x(!1),D=x(""),E=x("registrations"),C=x(),I=x(new Date);let V;const H={value:"id",label:"name",children:"children"},J=[{label:"挂号",value:"registrations"},{label:"预约",value:"appointments"},{label:"进线",value:"leads"},{label:"诊单",value:"orders"}],X=v(()=>{const n=e.scope.role_names.length?e.scope.role_names.join("、"):"管理员",a=e.scope.department_names.length?e.scope.department_names.join("、"):"未绑定部门";return`${e.scope.viewer_name||"当前账号"},${n},${a}`}),Z=v(()=>[{key:"fans",label:"今日加粉",value:y(e.today.add_fans_count),hint:"按企微新增客户事件统计",comparisons:[e.today.comparisons.add_fans_count]},{key:"appointments",label:"今日预约",value:y(e.today.appointment_total_count),hint:"状态为已预约、已完成或改期,排除已取消",comparisons:[e.today.comparisons.appointment_total_count]},{key:"lowAmountPayments",label:"今日挂号",value:`${y(e.today.low_amount_payment_count)} `,hint:"已支付且实收金额大于 0、低于 10 元的订单",comparisons:[e.today.comparisons.low_amount_payment_count]},{key:"orders",label:"今日接诊 / 诊单金额",value:"",hint:"按业务订单统计,排除取消、拒收和退款",comparisons:[{...e.today.comparisons.completed_order_count,label:"诊单"},{...e.today.comparisons.completed_order_amount,label:"金额"}]},{key:"appointmentRate",label:"挂号率",value:S(e.today.paid_appointment_rate),hint:`挂号 ${y(e.today.paid_appointment_count)} / 加粉数`,comparisons:[e.today.comparisons.paid_appointment_rate]},{key:"receiveRate",label:"接诊率",value:S(e.today.interview_receive_rate),hint:"诊单数 / 面诊数",comparisons:[e.today.comparisons.interview_receive_rate]},{key:"interviews",label:"今日面诊",value:y(e.today.interview_count),hint:"状态为已完成的预约",comparisons:[e.today.comparisons.interview_count]}]),Q=v(()=>new Intl.DateTimeFormat("zh-CN",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(I.value)),Y=v(()=>new Intl.DateTimeFormat("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",weekday:"short"}).format(I.value)),ee=v(()=>e.filters.ranking_selectable!==!1&&e.scope.kind!=="group_leader"&&e.rankings.appointments.kind!=="doctor"&&e.filters.ranking_departments.length>0),O=v(()=>e.rankings.appointments.metric==="appointment"?"预约":"挂号"),A=v(()=>{if(e.rankings.appointments.metric==="appointment")return"";const n=e.rankings.appointments.kind==="doctor"?"医生":"成员";return`${e.rankings.appointments.scope_label||"当前部门"}内${n}已支付且实收低于 10 元的订单数`}),te=v(()=>{const n=e.rankings.performance.scope_label||"当前部门";return e.rankings.performance.kind==="person"?e.scope.kind==="group_leader"?"本小组内今日计入业绩的个人订单":`${n}内今日计入业绩的个人订单`:`${n}内今日计入业绩的业务订单`}),ae=v(()=>Math.max(0,...e.rankings.appointments.items.map(n=>Number(n.count||0)))),ne=v(()=>Math.max(0,...e.rankings.performance.items.map(n=>Number(n.amount||0)))),oe=v(()=>{const a={registrations:{label:"挂号",data:e.trend.registrations},appointments:{label:"预约",data:e.trend.appointments},leads:{label:"进线",data:e.trend.leads},orders:{label:"诊单",data:e.trend.orders}}[E.value];return{animationDuration:320,tooltip:{trigger:"axis",valueFormatter:_=>`${y(_)} 条`},grid:{left:42,right:18,top:24,bottom:30,containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:e.trend.dates,axisLine:{lineStyle:{color:"#d9e0e7"}},axisLabel:{color:"#7d8996"}},yAxis:{type:"value",minInterval:1,splitLine:{lineStyle:{color:"#edf1f4"}},axisLabel:{color:"#7d8996"}},series:[{name:a.label,type:"line",smooth:.35,showSymbol:!0,symbolSize:7,data:a.data,lineStyle:{color:"#0f8f83",width:3},itemStyle:{color:"#0f8f83",borderColor:"#ffffff",borderWidth:2},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(15, 143, 131, 0.20)"},{offset:1,color:"rgba(15, 143, 131, 0.01)"}]}}}]}}),k=(n,a=2)=>`¥${new Intl.NumberFormat("zh-CN",{minimumFractionDigits:a,maximumFractionDigits:a}).format(Number(n||0))}`,y=n=>new Intl.NumberFormat("zh-CN",{maximumFractionDigits:0}).format(Number(n||0)),S=n=>n===null?"暂无":`${Number(n||0).toFixed(1)}%`,T=n=>`${n>=0?"+":""}${Number(n).toFixed(1)}%`,P=n=>n===null||n===0?"":n>0?"is-positive":"is-negative",se=n=>n==="up"?"is-positive":n==="down"?"is-negative":"is-flat",re=n=>{const a=n.label?`${n.label} `:"";if(n.direction==="flat")return`${a}较昨日持平`;const _=n.direction==="up"?"上升":"下降";return n.rate===null?`${a}较昨日${_}(昨日为 0)`:`${a}较昨日${_} ${Math.abs(Number(n.rate)).toFixed(1)}%`},j=(n,a)=>a<=0||n<=0?"0%":`${Math.max(6,Math.min(100,Number(n)/a*100))}%`,U=n=>n===null||!Number.isFinite(Number(n))?0:Math.max(0,Math.min(100,Number(n))),w=async()=>{$.value=!0,D.value="";try{const n=await Ie({ranking_dept_id:N.value?C.value||0:void 0,_t:Date.now()});Object.assign(e,B(),n||{}),C.value=Number(e.filters.ranking_dept_id||0)||void 0,N.value=!0}catch(n){D.value=(n==null?void 0:n.msg)||(n==null?void 0:n.message)||"驾驶舱数据加载失败,请稍后重试"}finally{$.value=!1}},le=()=>{w()};return ue(()=>{w(),V=setInterval(()=>{I.value=new Date},1e3)}),fe(()=>{N.value&&w()}),ge(()=>{V&&clearInterval(V)}),(n,a)=>{const _=he,R=xe,ie=$e,ce=Ne,de=De,_e=Se,M=Me,me=Fe,G=Le,pe=ye;return ve((o(),r("div",Te,[t("header",Pe,[t("div",Re,[t("div",Be,[i(_,null,{default:c(()=>[i(m(ke))]),_:1})]),t("div",null,[t("div",Oe,[a[2]||(a[2]=t("h1",null,"我的首页",-1)),t("span",Ae,[i(_,null,{default:c(()=>[i(m(be))]),_:1}),d(" "+s(e.scope.label||"数据范围"),1)])]),t("p",null,[d(s(X.value)+" ",1),e.scope.visible_member_count>0?(o(),r("span",je," ,当前可见 "+s(e.scope.visible_member_count)+" 位成员 ",1)):g("",!0)])])]),t("div",Ue,[e.meta.generated_at?(o(),r("div",Ge," 数据更新于 "+s(e.meta.generated_at),1)):g("",!0),i(R,{icon:m(we),loading:$.value,onClick:w},{default:c(()=>[...a[3]||(a[3]=[d("刷新数据",-1)])]),_:1},8,["icon","loading"])])]),D.value?(o(),p(ie,{key:0,class:"dashboard-error",type:"error",closable:!1,"show-icon":"",title:D.value},{default:c(()=>[i(R,{size:"small",onClick:w},{default:c(()=>[...a[4]||(a[4]=[d("重新加载",-1)])]),_:1})]),_:1},8,["title"])):g("",!0),!N.value&&$.value?(o(),r("div",Ke,[i(ce,{rows:12,animated:""})])):N.value?(o(),r(u,{key:2},[t("section",We,[t("article",qe,[a[5]||(a[5]=t("div",{class:"metric-label"},"本月实时业绩",-1)),t("div",He,s(k(e.performance.month_amount)),1),t("div",{class:h(["metric-foot",P(e.performance.month_compare_rate)])},[e.performance.month_compare_rate!==null?(o(),r(u,{key:0},[e.performance.month_compare_rate>=0?(o(),p(_,{key:0},{default:c(()=>[i(m(F))]),_:1})):(o(),p(_,{key:1},{default:c(()=>[i(m(z))]),_:1})),d(" "+s(e.performance.month_compare_label)+" "+s(T(e.performance.month_compare_rate)),1)],64)):(o(),r(u,{key:1},[d("上月同期暂无可比数据")],64))],2)]),t("article",Je,[a[6]||(a[6]=t("div",{class:"metric-label"},"今日新增业绩",-1)),t("div",Xe,s(k(e.performance.today_amount)),1),t("div",{class:h(["metric-foot",P(e.performance.today_compare_rate)])},[e.performance.today_compare_rate!==null?(o(),r(u,{key:0},[e.performance.today_compare_rate>=0?(o(),p(_,{key:0},{default:c(()=>[i(m(F))]),_:1})):(o(),p(_,{key:1},{default:c(()=>[i(m(z))]),_:1})),d(" "+s(e.performance.today_compare_label)+" "+s(T(e.performance.today_compare_rate)),1)],64)):(o(),r(u,{key:1},[d("昨日暂无可比数据")],64))],2)]),t("article",Ze,[a[7]||(a[7]=t("div",{class:"metric-label"},"昨日新增业绩",-1)),t("div",Qe,s(k(e.performance.yesterday_amount)),1),t("div",{class:h(["metric-foot",P(e.performance.yesterday_compare_rate)])},[e.performance.yesterday_compare_rate!==null?(o(),r(u,{key:0},[e.performance.yesterday_compare_rate>=0?(o(),p(_,{key:0},{default:c(()=>[i(m(F))]),_:1})):(o(),p(_,{key:1},{default:c(()=>[i(m(z))]),_:1})),d(" "+s(e.performance.yesterday_compare_label)+" "+s(T(e.performance.yesterday_compare_rate)),1)],64)):(o(),r(u,{key:1},[d("前一日暂无可比数据")],64))],2)]),e.scope.kind!=="assistant"?(o(),r("article",Ye,[t("div",et,[a[8]||(a[8]=t("span",null,"本人本月业绩",-1)),i(de,{content:e.meta.commission_note,placement:"top"},{default:c(()=>[i(_,{class:"metric-help"},{default:c(()=>[i(m(K))]),_:1})]),_:1},8,["content"])]),t("div",tt,s(k(e.performance.personal_month_amount)),1),a[9]||(a[9]=t("div",{class:"metric-foot"},"仅统计当前登录账号",-1))])):g("",!0),t("article",at,[a[10]||(a[10]=t("div",{class:"metric-label"},"当前时间",-1)),t("div",nt,s(Q.value),1),t("div",ot,s(Y.value),1)])]),t("section",st,[(o(!0),r(u,null,L(Z.value,l=>(o(),r("article",{key:l.key,class:"metric-card metric-card--compact"},[t("div",rt,s(l.label),1),t("div",{class:h(["metric-value",{"metric-value--pair":l.key==="orders"}])},[l.key==="orders"?(o(),r(u,{key:0},[d(s(y(e.today.completed_order_count))+" ",1),a[11]||(a[11]=t("span",null,"/",-1)),d(" "+s(k(e.today.completed_order_amount)),1)],64)):(o(),r(u,{key:1},[d(s(l.value),1)],64))],2),t("div",lt,[(o(!0),r(u,null,L(l.comparisons,f=>(o(),r("div",{key:`${l.key}-${f.label||"total"}`,class:h(["metric-foot",se(f.direction)])},[f.direction==="up"?(o(),p(_,{key:0},{default:c(()=>[i(m(F))]),_:1})):f.direction==="down"?(o(),p(_,{key:1},{default:c(()=>[i(m(z))]),_:1})):(o(),p(_,{key:2},{default:c(()=>[i(m(Ce))]),_:1})),d(" "+s(re(f)),1)],2))),128))]),t("div",it,s(l.hint),1)]))),128))]),t("section",ct,[t("article",dt,[t("div",_t,[t("div",null,[t("h2",null,s(e.rankings.appointments.title),1),A.value?(o(),r("p",mt,s(A.value),1)):g("",!0)]),t("div",pt,[ee.value?(o(),p(_e,{key:0,modelValue:C.value,"onUpdate:modelValue":a[0]||(a[0]=l=>C.value=l),data:e.filters.ranking_departments,props:H,"node-key":"id","check-strictly":"",clearable:"",filterable:"","default-expand-all":"",placeholder:"全部部门",class:"ranking-dept-select",onChange:le},null,8,["modelValue","data"])):g("",!0),a[12]||(a[12]=t("span",{class:"panel-meta"},"实时",-1))])]),e.rankings.appointments.items.length?(o(),r("div",ut,[(o(!0),r(u,null,L(e.rankings.appointments.items,(l,f)=>(o(),r("div",{key:`appointment-${l.id}-${f}`,class:h(["ranking-row",{"is-self":l.is_self}])},[t("span",{class:h(["ranking-index",{"is-top":f<2,"is-self":l.is_self}])},s(f+1),3),t("div",ft,[t("div",gt,[t("strong",null,[d(s(l.name||"未命名成员")+" ",1),l.is_self?(o(),r("i",vt,"我")):g("",!0)]),t("span",null,s(y(l.count))+" "+s(O.value),1)]),t("div",yt,[t("span",{style:W({width:j(l.count,ae.value)})},null,4)])]),t("b",kt,s(y(l.count)),1)],2))),128))])):(o(),p(M,{key:1,"image-size":72,description:`当前数据范围内暂无${O.value}排行`},null,8,["description"]))]),t("article",ht,[t("div",bt,[t("div",null,[t("h2",null,s(e.rankings.performance.title),1),t("p",null,s(te.value),1)]),a[13]||(a[13]=t("span",{class:"panel-meta"},"今日",-1))]),e.rankings.performance.items.length?(o(),r("div",wt,[(o(!0),r(u,null,L(e.rankings.performance.items,(l,f)=>(o(),r("div",{key:`performance-${l.id}-${f}`,class:h(["ranking-row",{"is-self":l.is_self}])},[t("span",{class:h(["ranking-index",{"is-top":f<2,"is-self":l.is_self}])},s(f+1),3),t("div",xt,[t("div",$t,[t("strong",null,[d(s(l.name||(e.rankings.performance.kind==="person"?"未命名成员":"未命名部门"))+" ",1),l.is_self?(o(),r("i",Nt,"我")):g("",!0)]),t("span",null,s(y(l.count))+" 个诊单",1)]),t("div",Dt,[t("span",{style:W({width:j(l.amount,ne.value)})},null,4)])]),t("b",Ct,s(k(l.amount)),1)],2))),128))])):(o(),p(M,{key:1,"image-size":72,description:"当前数据范围内暂无业务订单业绩"}))])]),t("section",St,[t("article",Mt,[t("div",Ft,[t("div",null,[a[14]||(a[14]=t("h2",null,"近 7 天数据趋势",-1)),t("p",null,s(e.trend.date_range.join(" 至 ")),1)]),i(me,{modelValue:E.value,"onUpdate:modelValue":a[1]||(a[1]=l=>E.value=l),options:J},null,8,["modelValue"])]),e.trend.dates.length?(o(),p(m(ze),{key:0,class:"trend-chart",option:oe.value,autoresize:""},null,8,["option"])):(o(),p(M,{key:1,"image-size":72,description:"暂无趋势数据"}))]),t("article",zt,[t("div",Lt,[t("div",null,[a[15]||(a[15]=t("h2",null,"进度目标",-1)),t("p",null,s(e.target.year_month)+",按当前角色数据范围计算",1)]),t("span",Et,s(e.target.department_count)+" 个目标部门",1)]),t("div",It,[t("div",Vt,[t("div",null,[a[16]||(a[16]=t("span",null,"范围目标进度",-1)),e.target.target_amount>0?(o(),r("strong",Tt,s(S(e.target.completion_rate)),1)):(o(),r("strong",Pt,"未设置"))]),t("p",null,[d(" 已完成 "+s(k(e.target.completed_amount))+" ",1),e.target.target_amount>0?(o(),r(u,{key:0},[d(" ,目标 "+s(k(e.target.target_amount)),1)],64)):g("",!0)])]),i(G,{percentage:U(e.target.completion_rate),"show-text":!1,"stroke-width":12,color:"#0f8f83"},null,8,["percentage"])]),t("div",Rt,[t("div",Bt,[t("div",null,[a[17]||(a[17]=t("span",null,"本人业绩贡献",-1)),t("strong",null,s(S(e.target.personal_contribution_rate)),1)]),t("p",null," 本人 "+s(k(e.target.personal_amount))+",占当前范围已完成业绩 ",1)]),i(G,{percentage:U(e.target.personal_contribution_rate),"show-text":!1,"stroke-width":12,color:"#738196"},null,8,["percentage"])]),e.target.target_amount<=0?(o(),r("div",Ot," 当前范围尚未设置本月部门目标,已完成业绩仍会正常统计。 ")):g("",!0)])]),t("footer",At,[i(_,null,{default:c(()=>[i(m(K))]),_:1}),t("span",null,s(e.meta.rate_note),1)])],64)):D.value?(o(),r("div",jt,[i(M,{description:"驾驶舱数据加载失败"},{default:c(()=>[i(R,{type:"primary",onClick:w},{default:c(()=>[...a[18]||(a[18]=[d("重新加载",-1)])]),_:1})]),_:1})])):g("",!0)])),[[pe,$.value]])}}}),Jt=Ve(Gt,[["__scopeId","data-v-8a87b9f7"]]);export{Jt as default};
diff --git a/server/public/admin/assets/index-C1U7YxtQ.js b/server/public/admin/assets/index-C-Qpmqp1.js
similarity index 92%
rename from server/public/admin/assets/index-C1U7YxtQ.js
rename to server/public/admin/assets/index-C-Qpmqp1.js
index bd21ee48e..ed9e49ecc 100644
--- a/server/public/admin/assets/index-C1U7YxtQ.js
+++ b/server/public/admin/assets/index-C-Qpmqp1.js
@@ -1 +1 @@
-import{o as j,be as q,q as r,r as I,v as e,D as l,b9 as O,u as a,b6 as A,b7 as M,b8 as V,bm as G,bn as H,K as J,L as m,bg as Q,s as E,ac as y,O as c,bj as W,bk as X,br as Y,T as Z,bi as ee,C as te,P as ae,a8 as le,M as oe,ba as se,n as x}from"./.pnpm-Dwh6tNxD.js";import{_ as ne}from"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import{c as ie,i as de}from"./index-C0Q8AuuZ.js";import{_ as re}from"./index.vue_vue_type_script_setup_true_lang-CnxC4rS8.js";import{d as $,e as me}from"./post-CAy5jLyZ.js";import{u as pe}from"./usePaging-DOuAwzL9.js";import{_ as ue}from"./edit.vue_vue_type_script_setup_true_lang-BagfIDpE.js";import"./index-CfJcNX3X.js";const ce={class:"post-lists"},_e={class:"flex justify-end mt-4"},fe=j({name:"post"}),xe=j({...fe,setup(be){const _=le(),f=oe(!1),s=se({code:"",name:"",status:""}),{pager:d,getLists:b,resetPage:g,resetParams:D}=pe({fetchFun:$,params:s}),h=async()=>{var n;f.value=!0,await x(),(n=_.value)==null||n.open("add")},K=async n=>{var t,p;f.value=!0,await x(),(t=_.value)==null||t.open("edit"),(p=_.value)==null||p.getDetail(n)},P=async n=>{await de.confirm("确定要删除?"),await me({id:n}),b()};return b(),(n,t)=>{const p=M,v=A,w=H,T=G,u=J,B=re,R=O,C=Q,z=ie,i=X,L=Y,N=W,S=ne,k=q("perms"),U=ee;return r(),I("div",ce,[e(C,{class:"!border-none",shadow:"never"},{default:l(()=>[e(R,{ref:"formRef",class:"mb-[-16px]",model:a(s),inline:!0},{default:l(()=>[e(v,{class:"w-[280px]",label:"岗位编码"},{default:l(()=>[e(p,{modelValue:a(s).code,"onUpdate:modelValue":t[0]||(t[0]=o=>a(s).code=o),placeholder:"请输入岗位编码",clearable:"",onKeyup:V(a(g),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(v,{class:"w-[280px]",label:"岗位名称"},{default:l(()=>[e(p,{modelValue:a(s).name,"onUpdate:modelValue":t[1]||(t[1]=o=>a(s).name=o),clearable:"",onKeyup:V(a(g),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(v,{class:"w-[280px]",label:"岗位状态"},{default:l(()=>[e(T,{modelValue:a(s).status,"onUpdate:modelValue":t[2]||(t[2]=o=>a(s).status=o)},{default:l(()=>[e(w,{label:"全部",value:""}),e(w,{label:"正常",value:1}),e(w,{label:"停用",value:0})]),_:1},8,["modelValue"])]),_:1}),e(v,null,{default:l(()=>[e(u,{type:"primary",onClick:a(g)},{default:l(()=>[...t[6]||(t[6]=[m("查询",-1)])]),_:1},8,["onClick"]),e(u,{onClick:a(D)},{default:l(()=>[...t[7]||(t[7]=[m("重置",-1)])]),_:1},8,["onClick"]),e(B,{class:"ml-2.5","fetch-fun":a($),params:a(s),"page-size":a(d).size},null,8,["fetch-fun","params","page-size"])]),_:1})]),_:1},8,["model"])]),_:1}),e(C,{class:"!border-none mt-4",shadow:"never"},{default:l(()=>[E("div",null,[y((r(),c(u,{type:"primary",onClick:t[3]||(t[3]=o=>h())},{icon:l(()=>[e(z,{name:"el-icon-Plus"})]),default:l(()=>[t[8]||(t[8]=m(" 新增 ",-1))]),_:1})),[[k,["dept.jobs/add"]]])]),y((r(),c(N,{class:"mt-4",size:"large",data:a(d).lists},{default:l(()=>[e(i,{label:"岗位编码",prop:"code","min-width":"100"}),e(i,{label:"岗位名称",prop:"name","min-width":"100"}),e(i,{label:"排序",prop:"sort","min-width":"100"}),e(i,{label:"备注",prop:"remark","min-width":"100","show-overflow-tooltip":""}),e(i,{label:"添加时间",prop:"create_time","min-width":"180"}),e(i,{label:"状态",prop:"status","min-width":"100"},{default:l(({row:o})=>[e(L,{class:"ml-2",type:o.status?"primary":"danger"},{default:l(()=>[m(Z(o.status_desc),1)]),_:2},1032,["type"])]),_:1}),e(i,{label:"操作",width:"120",fixed:"right"},{default:l(({row:o})=>[y((r(),c(u,{type:"primary",link:"",onClick:F=>K(o)},{default:l(()=>[...t[9]||(t[9]=[m(" 编辑 ",-1)])]),_:1},8,["onClick"])),[[k,["dept.jobs/edit"]]]),y((r(),c(u,{type:"danger",link:"",onClick:F=>P(o.id)},{default:l(()=>[...t[10]||(t[10]=[m(" 删除 ",-1)])]),_:1},8,["onClick"])),[[k,["dept.jobs/delete"]]])]),_:1})]),_:1},8,["data"])),[[U,a(d).loading]]),E("div",_e,[e(S,{modelValue:a(d),"onUpdate:modelValue":t[4]||(t[4]=o=>te(d)?d.value=o:null),onChange:a(b)},null,8,["modelValue","onChange"])])]),_:1}),a(f)?(r(),c(ue,{key:0,ref_key:"editRef",ref:_,onSuccess:a(b),onClose:t[5]||(t[5]=o=>f.value=!1)},null,8,["onSuccess"])):ae("",!0)])}}});export{xe as default};
+import{o as j,be as q,q as r,r as I,v as e,D as l,b9 as O,u as a,b6 as A,b7 as M,b8 as V,bm as G,bn as H,K as J,L as m,bg as Q,s as E,ac as y,O as c,bj as W,bk as X,br as Y,T as Z,bi as ee,C as te,P as ae,a8 as le,M as oe,ba as se,n as x}from"./.pnpm-Dwh6tNxD.js";import{_ as ne}from"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import{c as ie,i as de}from"./index-B6PfZ7nj.js";import{_ as re}from"./index.vue_vue_type_script_setup_true_lang-DWX84I_7.js";import{d as $,e as me}from"./post-CU-McK6u.js";import{u as pe}from"./usePaging-DOuAwzL9.js";import{_ as ue}from"./edit.vue_vue_type_script_setup_true_lang-ieBTkiOd.js";import"./index-IUalmyB9.js";const ce={class:"post-lists"},_e={class:"flex justify-end mt-4"},fe=j({name:"post"}),xe=j({...fe,setup(be){const _=le(),f=oe(!1),s=se({code:"",name:"",status:""}),{pager:d,getLists:b,resetPage:g,resetParams:D}=pe({fetchFun:$,params:s}),h=async()=>{var n;f.value=!0,await x(),(n=_.value)==null||n.open("add")},K=async n=>{var t,p;f.value=!0,await x(),(t=_.value)==null||t.open("edit"),(p=_.value)==null||p.getDetail(n)},P=async n=>{await de.confirm("确定要删除?"),await me({id:n}),b()};return b(),(n,t)=>{const p=M,v=A,w=H,T=G,u=J,B=re,R=O,C=Q,z=ie,i=X,L=Y,N=W,S=ne,k=q("perms"),U=ee;return r(),I("div",ce,[e(C,{class:"!border-none",shadow:"never"},{default:l(()=>[e(R,{ref:"formRef",class:"mb-[-16px]",model:a(s),inline:!0},{default:l(()=>[e(v,{class:"w-[280px]",label:"岗位编码"},{default:l(()=>[e(p,{modelValue:a(s).code,"onUpdate:modelValue":t[0]||(t[0]=o=>a(s).code=o),placeholder:"请输入岗位编码",clearable:"",onKeyup:V(a(g),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(v,{class:"w-[280px]",label:"岗位名称"},{default:l(()=>[e(p,{modelValue:a(s).name,"onUpdate:modelValue":t[1]||(t[1]=o=>a(s).name=o),clearable:"",onKeyup:V(a(g),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(v,{class:"w-[280px]",label:"岗位状态"},{default:l(()=>[e(T,{modelValue:a(s).status,"onUpdate:modelValue":t[2]||(t[2]=o=>a(s).status=o)},{default:l(()=>[e(w,{label:"全部",value:""}),e(w,{label:"正常",value:1}),e(w,{label:"停用",value:0})]),_:1},8,["modelValue"])]),_:1}),e(v,null,{default:l(()=>[e(u,{type:"primary",onClick:a(g)},{default:l(()=>[...t[6]||(t[6]=[m("查询",-1)])]),_:1},8,["onClick"]),e(u,{onClick:a(D)},{default:l(()=>[...t[7]||(t[7]=[m("重置",-1)])]),_:1},8,["onClick"]),e(B,{class:"ml-2.5","fetch-fun":a($),params:a(s),"page-size":a(d).size},null,8,["fetch-fun","params","page-size"])]),_:1})]),_:1},8,["model"])]),_:1}),e(C,{class:"!border-none mt-4",shadow:"never"},{default:l(()=>[E("div",null,[y((r(),c(u,{type:"primary",onClick:t[3]||(t[3]=o=>h())},{icon:l(()=>[e(z,{name:"el-icon-Plus"})]),default:l(()=>[t[8]||(t[8]=m(" 新增 ",-1))]),_:1})),[[k,["dept.jobs/add"]]])]),y((r(),c(N,{class:"mt-4",size:"large",data:a(d).lists},{default:l(()=>[e(i,{label:"岗位编码",prop:"code","min-width":"100"}),e(i,{label:"岗位名称",prop:"name","min-width":"100"}),e(i,{label:"排序",prop:"sort","min-width":"100"}),e(i,{label:"备注",prop:"remark","min-width":"100","show-overflow-tooltip":""}),e(i,{label:"添加时间",prop:"create_time","min-width":"180"}),e(i,{label:"状态",prop:"status","min-width":"100"},{default:l(({row:o})=>[e(L,{class:"ml-2",type:o.status?"primary":"danger"},{default:l(()=>[m(Z(o.status_desc),1)]),_:2},1032,["type"])]),_:1}),e(i,{label:"操作",width:"120",fixed:"right"},{default:l(({row:o})=>[y((r(),c(u,{type:"primary",link:"",onClick:F=>K(o)},{default:l(()=>[...t[9]||(t[9]=[m(" 编辑 ",-1)])]),_:1},8,["onClick"])),[[k,["dept.jobs/edit"]]]),y((r(),c(u,{type:"danger",link:"",onClick:F=>P(o.id)},{default:l(()=>[...t[10]||(t[10]=[m(" 删除 ",-1)])]),_:1},8,["onClick"])),[[k,["dept.jobs/delete"]]])]),_:1})]),_:1},8,["data"])),[[U,a(d).loading]]),E("div",_e,[e(S,{modelValue:a(d),"onUpdate:modelValue":t[4]||(t[4]=o=>te(d)?d.value=o:null),onChange:a(b)},null,8,["modelValue","onChange"])])]),_:1}),a(f)?(r(),c(ue,{key:0,ref_key:"editRef",ref:_,onSuccess:a(b),onClose:t[5]||(t[5]=o=>f.value=!1)},null,8,["onSuccess"])):ae("",!0)])}}});export{xe as default};
diff --git a/server/public/admin/assets/index-JGRsDzkG.js b/server/public/admin/assets/index-C2vNG1vE.js
similarity index 99%
rename from server/public/admin/assets/index-JGRsDzkG.js
rename to server/public/admin/assets/index-C2vNG1vE.js
index 64a001f3d..f33fe9162 100644
--- a/server/public/admin/assets/index-JGRsDzkG.js
+++ b/server/public/admin/assets/index-C2vNG1vE.js
@@ -1 +1 @@
-var en=Object.defineProperty;var nn=(s,n,a)=>n in s?en(s,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):s[n]=a;var L=(s,n,a)=>nn(s,typeof n!="symbol"?n+"":n,a);import{o as we,du as on,q as R,r as H,T as F,P as B,s as A,O as q,u as E,dv as an,a7 as sn,p as G,dw as rn,ap as ln,aq as cn,R as un,ac as Pt,ad as Vt,aw as dt,v as S,D as b,w as dn,av as ue,K as fn,a1 as mn,dx as hn,dy as gn,b5 as pn,bh as vn,dz as yn,dA as _n,dB as wn,dC as Sn,dD as Cn,dE as Tn,dF as En,dG as An,L as In,dH as kn,dI as bn,dJ as Rn,dn as Mn,t as de,ae as Ln,ar as Dn,M as y,dK as xn,dm as x,n as Ht,dL as Un,dp as $,dq as z,dr as N,dM as Pn}from"./.pnpm-Dwh6tNxD.js";import{u as Vn,l as Hn}from"./file-BUuEowhq.js";import{a as Nn}from"./patient-SxYcZ8aN.js";import{X as Nt,ak as On,aG as Kn,aH as $n,aI as zn}from"./tcm-WWBqr2Vo.js";import{_ as Se,u as Bn,i as M}from"./index-C0Q8AuuZ.js";import{p as jn}from"./im-business-message-parse-CVnz1EnV.js";import{T as Z}from"./@tencentcloud/chat-BVcoXjFo.js";import{X as fe}from"./@tencentcloud/chat-uikit-engine-DMWQjlY3.js";import{c as ft}from"./@tencentcloud/call-engine-js-CipqHTHk.js";import"./dayjs-Cbxn44tS.js";import"./tim-upload-plugin-DhGO84pK.js";import"./tim-profanity-filter-plugin-B2c46mgl.js";import"./rtc-detect-DyJ4vVvn.js";function Wn(){const s=["video/webm;codecs=vp9,opus","video/webm;codecs=vp8,opus","video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"];for(const n of s)if(MediaRecorder.isTypeSupported(n))return n;return""}function qn(){const s=window;return s.AudioContext||s.webkitAudioContext||null}function me(s,n,a,i,r,u){const f=n.videoWidth||n.clientWidth||1,d=n.videoHeight||n.clientHeight||1,g=Math.max(r/f,u/d),c=f*g,m=d*g,_=a+(r-c)/2,D=i+(u-m)/2;try{s.drawImage(n,_,D,c,m)}catch{}}function Fn(s,n,a,i){s.fillStyle="#0b0b0b",s.fillRect(0,0,a,i);const r=n.filter(c=>c.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA);if(r.length===0)return;if(r.length===1){me(s,r[0],0,0,a,i);return}const u=Math.ceil(Math.sqrt(r.length)),f=Math.ceil(r.length/u),d=a/u,g=i/f;r.forEach((c,m)=>{const _=m%u,D=Math.floor(m/u);me(s,c,_*d,D*g,d,g)})}function Gn(s){const n=new Set,a=[];for(const i of s){const r=i.srcObject;if(r instanceof MediaStream)for(const u of r.getAudioTracks())u.kind!=="audio"||u.readyState==="ended"||!u.enabled||n.has(u.id)||(n.add(u.id),a.push(u))}return a}function Xn(s){var i;const n=new Set,a=[];for(const r of s){if(r.readyState
${e.marker}${e.seriesName}: ¥${Number(e.value).toFixed(2)}`}},grid:{left:60,right:24,top:36,bottom:36},xAxis:{type:"category",data:s.chart.dates,axisLabel:{interval:s.chart.dates.length>15?"auto":0,rotate:s.chart.dates.length>10?30:0}},yAxis:{type:"value",name:"金额(元)",axisLabel:{formatter:t=>t>=1e4?(t/1e4).toFixed(1)+"万":String(t)}},series:[{name:"业绩",type:"line",smooth:!0,showSymbol:!0,symbolSize:6,lineStyle:{width:3,color:"#4a78ff"},itemStyle:{color:"#4a78ff"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(74, 120, 255, 0.25)"},{offset:1,color:"rgba(74, 120, 255, 0.02)"}]}},data:s.chart.amounts}]})),F=(t,e)=>{var p;const l=((p=s.summary)==null?void 0:p[t])??0;return e==="money"?`¥${Number(l).toFixed(2)}`:String(l)},u=async()=>{_.value=!0;try{const t={time_type:d.time_type};d.time_type==="custom"&&(t.start_date=r.value[0]||"",t.end_date=r.value[1]||"");const e=await X(t);Object.assign(s,e||{})}catch(t){console.error("获取业绩数据失败:",t),W.error((t==null?void 0:t.msg)||"获取业绩数据失败")}finally{_.value=!1}},N=()=>{d.time_type!=="custom"&&(r.value=[],u())},$=()=>{var t;((t=r.value)==null?void 0:t.length)===2&&u()},P=()=>{d.time_type="month",r.value=[],u()};return L(()=>{u()}),(t,e)=>{const l=q,p=z,y=Y,M=A,v=H,R=O,h=I,T=Q;return c(),k("div",ee,[o(h,{class:"!border-none",shadow:"never"},{default:a(()=>[o(R,{inline:!0,class:"stats-filter-form"},{default:a(()=>[o(y,{label:"时间范围"},{default:a(()=>[o(p,{modelValue:d.time_type,"onUpdate:modelValue":e[0]||(e[0]=n=>d.time_type=n),onChange:N},{default:a(()=>[o(l,{label:"today"},{default:a(()=>[...e[2]||(e[2]=[i("今天",-1)])]),_:1}),o(l,{label:"yesterday"},{default:a(()=>[...e[3]||(e[3]=[i("昨天",-1)])]),_:1}),o(l,{label:"week"},{default:a(()=>[...e[4]||(e[4]=[i("最近7天",-1)])]),_:1}),o(l,{label:"month"},{default:a(()=>[...e[5]||(e[5]=[i("最近30天",-1)])]),_:1}),o(l,{label:"custom"},{default:a(()=>[...e[6]||(e[6]=[i("自定义",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),d.time_type==="custom"?(c(),f(y,{key:0},{default:a(()=>[o(M,{modelValue:r.value,"onUpdate:modelValue":e[1]||(e[1]=n=>r.value=n),type:"daterange","value-format":"YYYY-MM-DD","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",style:{width:"260px"},onChange:$},null,8,["modelValue"])]),_:1})):G("",!0),o(y,null,{default:a(()=>[o(v,{type:"primary",loading:_.value,onClick:u},{default:a(()=>[...e[7]||(e[7]=[i("查询",-1)])]),_:1},8,["loading"]),o(v,{onClick:P},{default:a(()=>[...e[8]||(e[8]=[i("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),m("div",te,[(c(),k(U,null,j(w,n=>m("div",{key:n.key,class:x(["stats-kpi-card",n.cardClass])},[m("div",ae,g(n.label),1),m("div",{class:x(["stats-kpi-value",{"is-money":n.type==="money"}])},g(F(n.key,n.type)),3)],2)),64))]),o(h,{class:"!border-none mt-4",shadow:"never"},{header:a(()=>[m("div",oe,[e[9]||(e[9]=m("span",{class:"card-title"},"业绩趋势",-1)),m("span",se,g(S.value)+" · 履约完成业绩",1)])]),default:a(()=>[D.value?(c(),f(J(K),{key:0,class:"stats-chart",option:B.value,autoresize:""},null,8,["option"])):(c(),f(T,{key:1,description:"暂无数据"}))]),_:1})])}}}),ue=Z(le,[["__scopeId","data-v-297158c8"]]);export{ue as default};
+import{o as V,ap as L,q as c,r as k,v as o,D as a,b9 as O,b6 as Y,bc as z,bb as q,L as i,O as f,bp as A,P as G,K as H,bg as I,s as m,F as U,G as j,ae as x,T as g,u as J,cJ as K,bB as Q,M as C,ba as E,p as b,E as W}from"./.pnpm-Dwh6tNxD.js";import{r as X}from"./stats-DhDVOVF5.js";import{_ as Z}from"./index-B6PfZ7nj.js";const ee={class:"assistant-performance-page"},te={class:"stats-kpi-grid"},ae={class:"stats-kpi-label"},oe={class:"card-header"},se={class:"card-hint"},ne=V({name:"assistantPerformancePage"}),le=V({...ne,setup(re){const _=C(!1),r=C([]),d=E({time_type:"month",start_date:"",end_date:""}),s=E({date_range:[],summary:{total_amount:0,total_count:0},chart:{dates:[],amounts:[],counts:[]}}),w=[{key:"total_amount",label:"业绩",type:"money",cardClass:""},{key:"total_count",label:"有效订单数",type:"count",cardClass:""}],S=b(()=>{var t;return(t=s.date_range)!=null&&t.length?`${s.date_range[0]} 至 ${s.date_range[1]}`:"未选择"}),D=b(()=>s.chart.dates.length>0&&s.chart.amounts.some(t=>t>0)),B=b(()=>({tooltip:{trigger:"axis",formatter:t=>{const e=t[0];return`${e.axisValue}
${e.marker}${e.seriesName}: ¥${Number(e.value).toFixed(2)}`}},grid:{left:60,right:24,top:36,bottom:36},xAxis:{type:"category",data:s.chart.dates,axisLabel:{interval:s.chart.dates.length>15?"auto":0,rotate:s.chart.dates.length>10?30:0}},yAxis:{type:"value",name:"金额(元)",axisLabel:{formatter:t=>t>=1e4?(t/1e4).toFixed(1)+"万":String(t)}},series:[{name:"业绩",type:"line",smooth:!0,showSymbol:!0,symbolSize:6,lineStyle:{width:3,color:"#4a78ff"},itemStyle:{color:"#4a78ff"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(74, 120, 255, 0.25)"},{offset:1,color:"rgba(74, 120, 255, 0.02)"}]}},data:s.chart.amounts}]})),F=(t,e)=>{var p;const l=((p=s.summary)==null?void 0:p[t])??0;return e==="money"?`¥${Number(l).toFixed(2)}`:String(l)},u=async()=>{_.value=!0;try{const t={time_type:d.time_type};d.time_type==="custom"&&(t.start_date=r.value[0]||"",t.end_date=r.value[1]||"");const e=await X(t);Object.assign(s,e||{})}catch(t){console.error("获取业绩数据失败:",t),W.error((t==null?void 0:t.msg)||"获取业绩数据失败")}finally{_.value=!1}},N=()=>{d.time_type!=="custom"&&(r.value=[],u())},$=()=>{var t;((t=r.value)==null?void 0:t.length)===2&&u()},P=()=>{d.time_type="month",r.value=[],u()};return L(()=>{u()}),(t,e)=>{const l=q,p=z,y=Y,M=A,v=H,R=O,h=I,T=Q;return c(),k("div",ee,[o(h,{class:"!border-none",shadow:"never"},{default:a(()=>[o(R,{inline:!0,class:"stats-filter-form"},{default:a(()=>[o(y,{label:"时间范围"},{default:a(()=>[o(p,{modelValue:d.time_type,"onUpdate:modelValue":e[0]||(e[0]=n=>d.time_type=n),onChange:N},{default:a(()=>[o(l,{label:"today"},{default:a(()=>[...e[2]||(e[2]=[i("今天",-1)])]),_:1}),o(l,{label:"yesterday"},{default:a(()=>[...e[3]||(e[3]=[i("昨天",-1)])]),_:1}),o(l,{label:"week"},{default:a(()=>[...e[4]||(e[4]=[i("最近7天",-1)])]),_:1}),o(l,{label:"month"},{default:a(()=>[...e[5]||(e[5]=[i("最近30天",-1)])]),_:1}),o(l,{label:"custom"},{default:a(()=>[...e[6]||(e[6]=[i("自定义",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),d.time_type==="custom"?(c(),f(y,{key:0},{default:a(()=>[o(M,{modelValue:r.value,"onUpdate:modelValue":e[1]||(e[1]=n=>r.value=n),type:"daterange","value-format":"YYYY-MM-DD","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",style:{width:"260px"},onChange:$},null,8,["modelValue"])]),_:1})):G("",!0),o(y,null,{default:a(()=>[o(v,{type:"primary",loading:_.value,onClick:u},{default:a(()=>[...e[7]||(e[7]=[i("查询",-1)])]),_:1},8,["loading"]),o(v,{onClick:P},{default:a(()=>[...e[8]||(e[8]=[i("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),m("div",te,[(c(),k(U,null,j(w,n=>m("div",{key:n.key,class:x(["stats-kpi-card",n.cardClass])},[m("div",ae,g(n.label),1),m("div",{class:x(["stats-kpi-value",{"is-money":n.type==="money"}])},g(F(n.key,n.type)),3)],2)),64))]),o(h,{class:"!border-none mt-4",shadow:"never"},{header:a(()=>[m("div",oe,[e[9]||(e[9]=m("span",{class:"card-title"},"业绩趋势",-1)),m("span",se,g(S.value)+" · 履约完成业绩",1)])]),default:a(()=>[D.value?(c(),f(J(K),{key:0,class:"stats-chart",option:B.value,autoresize:""},null,8,["option"])):(c(),f(T,{key:1,description:"暂无数据"}))]),_:1})])}}}),ue=Z(le,[["__scopeId","data-v-297158c8"]]);export{ue as default};
diff --git a/server/public/admin/assets/index.vue_vue_type_script_setup_true_lang-CnxC4rS8.js b/server/public/admin/assets/index.vue_vue_type_script_setup_true_lang-DWX84I_7.js
similarity index 98%
rename from server/public/admin/assets/index.vue_vue_type_script_setup_true_lang-CnxC4rS8.js
rename to server/public/admin/assets/index.vue_vue_type_script_setup_true_lang-DWX84I_7.js
index f9fa44b24..b6276c754 100644
--- a/server/public/admin/assets/index.vue_vue_type_script_setup_true_lang-CnxC4rS8.js
+++ b/server/public/admin/assets/index.vue_vue_type_script_setup_true_lang-DWX84I_7.js
@@ -1 +1 @@
-import{o as C,q as f,r as v,v as t,D as l,s as g,T as m,P as w,b9 as D,u as a,b6 as N,L as i,bc as S,bf as O,O as U,b7 as H,K as L,a8 as z,ba as E}from"./.pnpm-Dwh6tNxD.js";import{_ as h}from"./index-CfJcNX3X.js";import{i as c}from"./index-C0Q8AuuZ.js";const j={class:"export-data"},I={key:0,class:"text-sm text-gray-500 mb-3 leading-relaxed"},M={class:"flex"},P=C({__name:"index",props:{params:{type:Object,default:()=>({})},pageSize:{type:Number,default:25},fetchFun:{type:Function,required:!0},exportHint:{type:String,default:""}},setup(R){const x=z(),n=R,y=z(),o=E({page_type:0,page_start:1,page_end:200,file_name:""}),k={page_start:[{required:!0,message:"请输入起始页码"},{type:"number",message:"页码必须是整数"},{validator:(r,e,s)=>{if(e<=0)return s(new Error("页码必须大于0"));s()}}],page_end:[{required:!0,message:"请输入结束页码"},{type:"number",message:"页码必须是整数"},{validator:(r,e,s)=>{if(e<=0)return s(new Error("页码必须大于0"));s()}}]},d=E({count:0,sum_page:0,page_size:0,max_page:0,all_max_size:0}),b=async()=>{const r=await n.fetchFun({...n.params,page_size:n.pageSize,export:1});Object.assign(d,r),o.file_name=r.file_name,o.page_end=r.page_end,o.page_start=r.page_start},F=async()=>{var r,e;await((r=x.value)==null?void 0:r.validate()),c.loading("正在导出中...");try{await n.fetchFun({...n.params,...o,page_size:n.pageSize,export:2}),(e=y.value)==null||e.close(),c.closeLoading()}catch{c.closeLoading()}};return b(),(r,e)=>{const s=L,p=N,V=O,q=S,_=H,B=D;return f(),v("div",j,[t(h,{ref_key:"popupRef",ref:y,title:"导出设置",width:"500px","confirm-button-text":"确认导出",onConfirm:F,async:!0,onOpen:b},{trigger:l(()=>[t(s,null,{default:l(()=>[...e[4]||(e[4]=[i("导出",-1)])]),_:1})]),default:l(()=>[g("div",null,[n.exportHint?(f(),v("p",I,m(n.exportHint),1)):w("",!0),t(B,{ref_key:"formRef",ref:x,model:a(o),"label-width":"120px",rules:k},{default:l(()=>[t(p,{label:"数据量:"},{default:l(()=>[i(" 预计导出"+m(a(d).count)+"条数据, 共"+m(a(d).sum_page)+"页,每页"+m(a(d).page_size)+"条数据 ",1)]),_:1}),t(p,{label:"导出限制:"},{default:l(()=>[i(" 每次导出最大允许"+m(a(d).max_page)+"页,共"+m(a(d).all_max_size)+"条数据 ",1)]),_:1}),t(p,{prop:"page_type",label:"导出范围:",required:""},{default:l(()=>[t(q,{modelValue:a(o).page_type,"onUpdate:modelValue":e[0]||(e[0]=u=>a(o).page_type=u)},{default:l(()=>[t(V,{value:0},{default:l(()=>[...e[5]||(e[5]=[i("全部导出",-1)])]),_:1}),t(V,{value:1},{default:l(()=>[...e[6]||(e[6]=[i("分页导出",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(o).page_type==1?(f(),U(p,{key:0,label:"分页范围:"},{default:l(()=>[g("div",M,[t(p,{prop:"page_start"},{default:l(()=>[t(_,{style:{width:"140px"},modelValue:a(o).page_start,"onUpdate:modelValue":e[1]||(e[1]=u=>a(o).page_start=u),modelModifiers:{number:!0},placeholder:""},null,8,["modelValue"])]),_:1}),e[7]||(e[7]=g("span",{class:"flex-none ml-2 mr-2"},"页,至",-1)),t(p,{prop:"page_end"},{default:l(()=>[t(_,{style:{width:"140px"},modelValue:a(o).page_end,"onUpdate:modelValue":e[2]||(e[2]=u=>a(o).page_end=u),modelModifiers:{number:!0},placeholder:""},null,8,["modelValue"])]),_:1})])]),_:1})):w("",!0),t(p,{label:"导出文件名称:",prop:"file_name"},{default:l(()=>[t(_,{modelValue:a(o).file_name,"onUpdate:modelValue":e[3]||(e[3]=u=>a(o).file_name=u),placeholder:"请输入导出文件名称"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},512)])}}});export{P as _};
+import{o as C,q as f,r as v,v as t,D as l,s as g,T as m,P as w,b9 as D,u as a,b6 as N,L as i,bc as S,bf as O,O as U,b7 as H,K as L,a8 as z,ba as E}from"./.pnpm-Dwh6tNxD.js";import{_ as h}from"./index-IUalmyB9.js";import{i as c}from"./index-B6PfZ7nj.js";const j={class:"export-data"},I={key:0,class:"text-sm text-gray-500 mb-3 leading-relaxed"},M={class:"flex"},P=C({__name:"index",props:{params:{type:Object,default:()=>({})},pageSize:{type:Number,default:25},fetchFun:{type:Function,required:!0},exportHint:{type:String,default:""}},setup(R){const x=z(),n=R,y=z(),o=E({page_type:0,page_start:1,page_end:200,file_name:""}),k={page_start:[{required:!0,message:"请输入起始页码"},{type:"number",message:"页码必须是整数"},{validator:(r,e,s)=>{if(e<=0)return s(new Error("页码必须大于0"));s()}}],page_end:[{required:!0,message:"请输入结束页码"},{type:"number",message:"页码必须是整数"},{validator:(r,e,s)=>{if(e<=0)return s(new Error("页码必须大于0"));s()}}]},d=E({count:0,sum_page:0,page_size:0,max_page:0,all_max_size:0}),b=async()=>{const r=await n.fetchFun({...n.params,page_size:n.pageSize,export:1});Object.assign(d,r),o.file_name=r.file_name,o.page_end=r.page_end,o.page_start=r.page_start},F=async()=>{var r,e;await((r=x.value)==null?void 0:r.validate()),c.loading("正在导出中...");try{await n.fetchFun({...n.params,...o,page_size:n.pageSize,export:2}),(e=y.value)==null||e.close(),c.closeLoading()}catch{c.closeLoading()}};return b(),(r,e)=>{const s=L,p=N,V=O,q=S,_=H,B=D;return f(),v("div",j,[t(h,{ref_key:"popupRef",ref:y,title:"导出设置",width:"500px","confirm-button-text":"确认导出",onConfirm:F,async:!0,onOpen:b},{trigger:l(()=>[t(s,null,{default:l(()=>[...e[4]||(e[4]=[i("导出",-1)])]),_:1})]),default:l(()=>[g("div",null,[n.exportHint?(f(),v("p",I,m(n.exportHint),1)):w("",!0),t(B,{ref_key:"formRef",ref:x,model:a(o),"label-width":"120px",rules:k},{default:l(()=>[t(p,{label:"数据量:"},{default:l(()=>[i(" 预计导出"+m(a(d).count)+"条数据, 共"+m(a(d).sum_page)+"页,每页"+m(a(d).page_size)+"条数据 ",1)]),_:1}),t(p,{label:"导出限制:"},{default:l(()=>[i(" 每次导出最大允许"+m(a(d).max_page)+"页,共"+m(a(d).all_max_size)+"条数据 ",1)]),_:1}),t(p,{prop:"page_type",label:"导出范围:",required:""},{default:l(()=>[t(q,{modelValue:a(o).page_type,"onUpdate:modelValue":e[0]||(e[0]=u=>a(o).page_type=u)},{default:l(()=>[t(V,{value:0},{default:l(()=>[...e[5]||(e[5]=[i("全部导出",-1)])]),_:1}),t(V,{value:1},{default:l(()=>[...e[6]||(e[6]=[i("分页导出",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(o).page_type==1?(f(),U(p,{key:0,label:"分页范围:"},{default:l(()=>[g("div",M,[t(p,{prop:"page_start"},{default:l(()=>[t(_,{style:{width:"140px"},modelValue:a(o).page_start,"onUpdate:modelValue":e[1]||(e[1]=u=>a(o).page_start=u),modelModifiers:{number:!0},placeholder:""},null,8,["modelValue"])]),_:1}),e[7]||(e[7]=g("span",{class:"flex-none ml-2 mr-2"},"页,至",-1)),t(p,{prop:"page_end"},{default:l(()=>[t(_,{style:{width:"140px"},modelValue:a(o).page_end,"onUpdate:modelValue":e[2]||(e[2]=u=>a(o).page_end=u),modelModifiers:{number:!0},placeholder:""},null,8,["modelValue"])]),_:1})])]),_:1})):w("",!0),t(p,{label:"导出文件名称:",prop:"file_name"},{default:l(()=>[t(_,{modelValue:a(o).file_name,"onUpdate:modelValue":e[3]||(e[3]=u=>a(o).file_name=u),placeholder:"请输入导出文件名称"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},512)])}}});export{P as _};
diff --git a/server/public/admin/assets/index.vue_vue_type_style_index_0_lang-BdS_4L37.js b/server/public/admin/assets/index.vue_vue_type_style_index_0_lang-Cd929wD5.js
similarity index 91%
rename from server/public/admin/assets/index.vue_vue_type_style_index_0_lang-BdS_4L37.js
rename to server/public/admin/assets/index.vue_vue_type_style_index_0_lang-Cd929wD5.js
index 94aa21fdb..96aa1cf9e 100644
--- a/server/public/admin/assets/index.vue_vue_type_style_index_0_lang-BdS_4L37.js
+++ b/server/public/admin/assets/index.vue_vue_type_style_index_0_lang-Cd929wD5.js
@@ -1 +1 @@
-import{o as x,bx as k,q as R,r as U,t as _,u as t,v as i,bO as B,bP as P,C as E,a8 as m,M as c,p,n as N}from"./.pnpm-Dwh6tNxD.js";import{_ as O}from"./picker-2bpe8Dva.js";import{n as h}from"./index-C0Q8AuuZ.js";const M=x({__name:"index",props:{modelValue:{default:""},mode:{default:"default"},height:{default:"100%"},width:{default:"auto"},toolbarConfig:{default:()=>({})}},emits:["update:modelValue"],setup(a,{emit:g}){const l=a,v=g,d=m(),n=m(),r=c(""),f=c(!1);let s;const b={MENU_CONF:{uploadImage:{customBrowseAndUpload(e){var o;r.value="image",(o=n.value)==null||o.showPopup(-1),s=e}},uploadVideo:{customBrowseAndUpload(e){var o;r.value="video",(o=n.value)==null||o.showPopup(-1),s=e}}}},C=p(()=>({height:h(l.height),width:h(l.width)})),u=p({get(){return l.modelValue},set(e){f.value&&v("update:modelValue",e)}}),w=e=>{e.forEach(o=>{s(o)})};k(()=>{const e=d.value;e!=null&&e.destroy()});const y=e=>{d.value=e,N(()=>{f.value=!0})};return(e,o)=>(R(),U("div",{class:"border border-br flex flex-col",style:_(t(C))},[i(t(B),{class:"border-b border-br",editor:t(d),defaultConfig:a.toolbarConfig,mode:a.mode},null,8,["editor","defaultConfig","mode"]),i(t(P),{class:"flex-1 overflow-hidden",modelValue:t(u),"onUpdate:modelValue":o[0]||(o[0]=V=>E(u)?u.value=V:null),defaultConfig:b,mode:a.mode,onOnCreated:y},null,8,["modelValue","mode"]),i(O,{ref_key:"materialPickerRef",ref:n,type:t(r),limit:-1,"hidden-upload":"",onChange:w},null,8,["type"])],4))}});export{M as _};
+import{o as x,bx as k,q as R,r as U,t as _,u as t,v as i,bO as B,bP as P,C as E,a8 as m,M as c,p,n as N}from"./.pnpm-Dwh6tNxD.js";import{_ as O}from"./picker-DnJfa6L1.js";import{n as h}from"./index-B6PfZ7nj.js";const M=x({__name:"index",props:{modelValue:{default:""},mode:{default:"default"},height:{default:"100%"},width:{default:"auto"},toolbarConfig:{default:()=>({})}},emits:["update:modelValue"],setup(a,{emit:g}){const l=a,v=g,d=m(),n=m(),r=c(""),f=c(!1);let s;const b={MENU_CONF:{uploadImage:{customBrowseAndUpload(e){var o;r.value="image",(o=n.value)==null||o.showPopup(-1),s=e}},uploadVideo:{customBrowseAndUpload(e){var o;r.value="video",(o=n.value)==null||o.showPopup(-1),s=e}}}},C=p(()=>({height:h(l.height),width:h(l.width)})),u=p({get(){return l.modelValue},set(e){f.value&&v("update:modelValue",e)}}),w=e=>{e.forEach(o=>{s(o)})};k(()=>{const e=d.value;e!=null&&e.destroy()});const y=e=>{d.value=e,N(()=>{f.value=!0})};return(e,o)=>(R(),U("div",{class:"border border-br flex flex-col",style:_(t(C))},[i(t(B),{class:"border-b border-br",editor:t(d),defaultConfig:a.toolbarConfig,mode:a.mode},null,8,["editor","defaultConfig","mode"]),i(t(P),{class:"flex-1 overflow-hidden",modelValue:t(u),"onUpdate:modelValue":o[0]||(o[0]=V=>E(u)?u.value=V:null),defaultConfig:b,mode:a.mode,onOnCreated:y},null,8,["modelValue","mode"]),i(O,{ref_key:"materialPickerRef",ref:n,type:t(r),limit:-1,"hidden-upload":"",onChange:w},null,8,["type"])],4))}});export{M as _};
diff --git a/server/public/admin/assets/index_h5-Bz4K-tKp.js b/server/public/admin/assets/index_h5-Ckke-ULf.js
similarity index 93%
rename from server/public/admin/assets/index_h5-Bz4K-tKp.js
rename to server/public/admin/assets/index_h5-Ckke-ULf.js
index a7760e5ad..04aec701e 100644
--- a/server/public/admin/assets/index_h5-Bz4K-tKp.js
+++ b/server/public/admin/assets/index_h5-Ckke-ULf.js
@@ -1,2 +1,2 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/edit-DtpVv_IC.js","assets/.pnpm-Dwh6tNxD.js","assets/.pnpm-B3v8nGpq.css","assets/tcm-WWBqr2Vo.js","assets/index-C0Q8AuuZ.js","assets/index-D2fz263J.css","assets/perm-B_zXG10L.js","assets/DailyMatrix-OBl7IlVj.js","assets/picker-2bpe8Dva.js","assets/index-CfJcNX3X.js","assets/index-B3imPWFk.css","assets/index-B-j4AceK.js","assets/index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js","assets/index-39SS-XKl.js","assets/index-D0f1Mn00.css","assets/index-4SRyrKER.js","assets/file-BUuEowhq.js","assets/index.vue_vue_type_script_setup_true_lang-Cxx3Fcm2.js","assets/usePaging-DOuAwzL9.js","assets/index-BYOmK9R5.css","assets/picker-XZbUgFct.css","assets/DiagnosisTodoList-DP_5xrZz.js","assets/DiagnosisTodoList-D0SBmTHG.css","assets/blood-thresholds-CJ1fqMjh.js","assets/DailyMatrix-DCZnxI8i.css","assets/CaseRecordList-n3NQoLCn.js","assets/CaseRecordList-Cl-c3q7S.css","assets/CallRecordPanel-D8BzARP3.js","assets/RecordingPlaybackBlock-BeEg3fMj.js","assets/RecordingVideoPlayer-xuuHPLFC.js","assets/RecordingVideoPlayer-4DegHAwm.css","assets/RecordingPlaybackBlock-B3KYFgvg.css","assets/CallRecordPanel-TsjZtTO8.css","assets/ImChatRecordPanel-DdtFx6Pz.js","assets/dayjs-Cbxn44tS.js","assets/im-business-message-parse-CVnz1EnV.js","assets/ImChatRecordPanel-aX8zpWRQ.css","assets/AssignLogPanel-BWQv40ee.js","assets/AssignLogPanel-DkQMoEkX.css","assets/AppointmentRecordPanel-CmKKoW16.js","assets/doctor-CTRg8la2.js","assets/AppointmentRecordPanel-DC22GDgn.css","assets/NoteTimeline-Dd4bO4Jk.js","assets/patient-SxYcZ8aN.js","assets/NoteTimeline-I2FSxX4s.css","assets/PatientOrderList-DubjJEri.js","assets/PrescriptionOrderDetailDrawer-DKaawwtX.js","assets/prescription-order-utils-B0fYlULc.js","assets/PrescriptionOrderDetailDrawer-DnrTcbh_.css","assets/PatientOrderList-D8-uh2iu.css","assets/index-BWq-Ie-e.js","assets/index-BYUFCj9H.js","assets/medicine-BOlGkY3u.js","assets/index-C_LxAEkS.css","assets/diabetes-discovery-display-B_wmGXQJ.js","assets/index-Lo-gKnHb.js","assets/index-AnyUcdTT.css","assets/index-DV5JwFnL.css","assets/edit-DOd7Lhrw.css","assets/TrackingNoteTimeline-B9T8pFso.css","assets/detail-DBAFHW1_.js","assets/appointment-KnlWyKil.js","assets/first_visit-Brv7qtBn.js","assets/appointment-JDceTxKO.css","assets/AssistantWatchCallDialog-h5vAPufV.js","assets/AssistantWatchCallDialog-BIPZRgaH.css"])))=>i.map(i=>d[i]);
-import{o as ut,ap as ga,aq as fa,q as l,r as o,s,v as n,b8 as ha,u as m,bA as ya,b7 as ka,D as i,L as g,K as ba,F as V,G as S,ae as w,T as p,P as _,w as Ca,ck as nt,ac as Le,ad as Va,O as E,bn as xa,bm as Da,bi as Ea,bB as $a,cv as Ra,cl as za,bE as st,d7 as Aa,dl as Ia,bH as Sa,as as wa,d5 as qa,B as Pa,b9 as La,b6 as Na,bd as Ta,J as Fa,bt as Wa,b5 as Ua,br as Ma,aa as Oa,cb as se,p as Y,ba as Ne,M as c,bF as Ya,al as le}from"./.pnpm-Dwh6tNxD.js";import{av as $,m as Ba,aw as Qa,W as Ha,ay as Ka,V as lt,az as it,aD as ja,aA as Ga,aB as Ja,aC as Xa}from"./tcm-WWBqr2Vo.js";import{i as Za}from"./order-C2H4s0Zj.js";import{m as en}from"./doctor-CTRg8la2.js";import{u as tn,m as ot,i as f,_ as an}from"./index-C0Q8AuuZ.js";import{g as dt}from"./weapp-CdqJJPp-.js";import{u as nn}from"./usePaging-DOuAwzL9.js";import{h as x}from"./perm-B_zXG10L.js";import{d as rt}from"./dayjs-Cbxn44tS.js";const sn={class:"dh5"},ln={class:"dh5-topbar"},on={class:"dh5-search"},dn={class:"dh5-chips dh5-chips--scroll"},rn=["onClick"],un={key:0},pn={key:0},cn={key:0},mn={key:0},_n={class:"dh5-quick"},vn={class:"dh5-quick-group"},gn=["onClick"],fn={class:"dh5-quick-group"},hn=["onClick"],yn={class:"dh5-more-filter"},kn={class:"dh5-list"},bn={key:0,class:"dh5-empty"},Cn=["onClick"],Vn={class:"dh5-card-avatar"},xn={class:"dh5-card-id-name"},Dn={class:"dh5-card-name"},En={key:0,class:"dh5-meta-gender"},$n={key:1,class:"dh5-meta-age"},Rn={class:"dh5-card-sub"},zn={key:0,class:"dh5-tag-new"},An={class:"dh5-card-tags"},In={key:0,class:"dh5-tag dh5-tag--ok"},Sn={key:1,class:"dh5-tag dh5-tag--warn"},wn={key:2,class:"dh5-tag dh5-tag--info"},qn=["onClick"],Pn={class:"dh5-row-val"},Ln={class:"dh5-apt-status"},Nn={class:"dh5-apt-doctor"},Tn={class:"dh5-apt-time"},Fn={class:"dh5-apt-status"},Wn={class:"dh5-apt-doctor"},Un={class:"dh5-apt-time"},Mn={key:1,class:"dh5-apt-none"},On={key:0,class:"dh5-row dh5-row--followup"},Yn={class:"dh5-row-val"},Bn={class:"dh5-meta-doctor"},Qn={key:0,class:"dh5-tag dh5-tag--gray"},Hn={class:"dh5-row"},Kn={class:"dh5-row-val"},jn={key:1,class:"dh5-row"},Gn={class:"dh5-row-val"},Jn={key:0,class:"dh5-meta-mute"},Xn={key:1},Zn={key:0,class:"dh5-card-watch"},es={class:"dh5-watch-tip"},ts={key:1,class:"dh5-watch-mute"},as={class:"dh5-card-foot"},ns={key:2,class:"dh5-no-more"},ss={key:0,class:"dh5-actions"},ls={class:"dh5-form-tip"},is={class:"font-medium"},os={class:"dh5-qr"},ds={key:0,class:"dh5-qr-loading"},rs={key:1},us=["src"],ps={class:"dh5-qr-meta"},cs={key:2,class:"dh5-qr-fail"},ms={key:0,class:"dh5-wx-contact"},_s={class:"dh5-wx-contact-row"},vs={class:"dh5-wx-val"},gs={class:"dh5-wx-contact-row"},fs={class:"dh5-wx-val"},hs={key:0},ys={class:"dh5-wx-contact-row"},ks={class:"dh5-wx-val"},bs={class:"dh5-wx-add"},Cs={class:"dh5-wx-list-wrap"},Vs={key:0,class:"dh5-wx-empty"},xs={key:1,class:"dh5-wx-list"},Ds={class:"dh5-wx-head"},Es={class:"dh5-wx-head-left"},$s={class:"dh5-wx-name"},Rs={class:"dh5-wx-head-right"},zs={class:"dh5-wx-time"},As={class:"dh5-wx-content"},Is={key:0,class:"dh5-wx-media"},Ss=ut({name:"tcmDiagnosisH5"}),ws=ut({...Ss,setup(qs){const pt=se(()=>le(()=>import("./edit-DtpVv_IC.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59]))),ct=se(()=>le(()=>import("./detail-DBAFHW1_.js"),__vite__mapDeps([60,9,1,2,4,5,10,3]))),mt=se(()=>le(()=>import("./index-BWq-Ie-e.js"),__vite__mapDeps([50,1,2,51,52,4,5,53,54,3,55,56,57]))),_t=se(()=>le(()=>import("./appointment-KnlWyKil.js"),__vite__mapDeps([61,1,2,34,3,4,5,40,62,63]))),vt=se(()=>le(()=>import("./AssistantWatchCallDialog-h5vAPufV.js"),__vite__mapDeps([64,1,2,3,4,5,65]))),ie=tn(),gt=t=>{if(!t)return"-";const e=String(t).length===10?Number(t)*1e3:Number(t);return rt(e).format("YYYY-MM-DD HH:mm")},ft=t=>{if(!t)return"-";const e=String(t).length===10?t*1e3:t;return rt(e).format("YYYY-MM-DD HH:mm")},Te=t=>!t||t.length<11?t:t.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"),R=t=>String(t).padStart(2,"0"),ve=Y(()=>{const t=new Date;return t.setDate(t.getDate()-1),`${t.getFullYear()}-${R(t.getMonth()+1)}-${R(t.getDate())}`}),ge=Y(()=>{const t=new Date;return t.setDate(t.getDate()-2),`${t.getFullYear()}-${R(t.getMonth()+1)}-${R(t.getDate())}`}),K=Y(()=>{const t=new Date;return`${t.getFullYear()}-${R(t.getMonth()+1)}-${R(t.getDate())}`}),fe=Y(()=>{const t=new Date;return t.setDate(t.getDate()+1),`${t.getFullYear()}-${R(t.getMonth()+1)}-${R(t.getDate())}`}),he=Y(()=>{const t=new Date;return t.setDate(t.getDate()+2),`${t.getFullYear()}-${R(t.getMonth()+1)}-${R(t.getDate())}`}),d=Ne({keyword:"",diagnosis_type:"",syndrome_type:"",assistant_id:"",diagnosis_confirmed:"",appointment_date:"",has_appointment:"",pending_assign:"",pending_booking:"",completed_appointment:""}),j=c(!1),ht=[{label:"全部",value:""},{label:"已挂号",value:"1"},{label:"未挂号",value:"0"}],yt=[{label:"全部",value:""},{label:"已确认",value:"1"},{label:"未确认",value:"0"}],kt=Y(()=>[{label:"昨天挂号",value:ve.value},{label:"前天挂号",value:ge.value},{label:"当天挂号",value:K.value},{label:"明天挂号",value:fe.value},{label:"后天挂号",value:he.value},{label:"全部",value:""}]),ye=c({}),ke=c(void 0),be=c(void 0),Ce=c(void 0),{pager:h,getLists:b}=nn({fetchFun:$,params:d}),Ve=Y(()=>h.lists.length<(h.count||0)),Fe=()=>b({silent:!0}),Q=()=>{h.page=1,b(),D()},bt=()=>{d.keyword="",d.diagnosis_type="",d.syndrome_type="",d.assistant_id="",d.diagnosis_confirmed="",d.appointment_date=K.value,d.has_appointment="",d.pending_assign="",d.pending_booking="",d.completed_appointment="",h.page=1,b(),D()},Ct=t=>{d.has_appointment=t,d.pending_booking="",d.completed_appointment="",h.page=1,b(),D()},Vt=t=>{d.diagnosis_confirmed=t,d.pending_booking="",d.completed_appointment="",h.page=1,b(),D()},xt=async t=>{d.pending_assign="",d.pending_booking="",d.completed_appointment="",d.has_appointment="",d.appointment_date=t,h.page=1,await b(),D()},Dt=async()=>{d.pending_assign="",d.pending_booking="1",d.completed_appointment="",d.appointment_date="",d.has_appointment="0",h.page=1,await b(),D()},Et=async()=>{d.pending_assign="",d.pending_booking="",d.completed_appointment="1",d.has_appointment="",d.appointment_date="",h.page=1,await b(),D()},$t=async()=>{d.pending_assign="1",d.pending_booking="",d.completed_appointment="",d.has_appointment="",d.appointment_date="",h.page=1,await b(),D()},D=async()=>{try{const[t,e,r,u,k,C,q,ae,O]=await Promise.all([$({appointment_date:ve.value,page_no:1,page_size:1}),$({appointment_date:ge.value,page_no:1,page_size:1}),$({appointment_date:K.value,page_no:1,page_size:1}),$({appointment_date:fe.value,page_no:1,page_size:1}),$({appointment_date:he.value,page_no:1,page_size:1}),$({page_no:1,page_size:1}),$({has_appointment:0,page_no:1,page_size:1}),$({completed_appointment:1,page_no:1,page_size:1}),$({pending_assign:1,page_no:1,page_size:1})]);ye.value={[ve.value]:(t==null?void 0:t.count)??0,[ge.value]:(e==null?void 0:e.count)??0,[K.value]:(r==null?void 0:r.count)??0,[fe.value]:(u==null?void 0:u.count)??0,[he.value]:(k==null?void 0:k.count)??0,"":(C==null?void 0:C.count)??0},ke.value=(q==null?void 0:q.count)??0,be.value=(ae==null?void 0:ae.count)??0,Ce.value=(O==null?void 0:O.count)??0}catch(t){console.error("获取日期数量失败",t)}},Rt=async()=>{if(h.loading||!Ve.value)return;const t=(h.page||1)+1;h.loading=!0;try{const e=await $({page_no:t,page_size:h.size,...d});h.page=t,h.lists.push(...(e==null?void 0:e.lists)||[]),h.count=(e==null?void 0:e.count)??h.count}catch(e){console.error("加载更多失败:",e)}finally{h.loading=!1}},xe=c([]),De=c([]),G=c([]),zt=async()=>{try{const[t,e,r]=await Promise.all([ot({type:"diagnosis_type"}),ot({type:"syndrome_type"}),Ba()]);xe.value=(t==null?void 0:t.diagnosis_type)||[],De.value=(e==null?void 0:e.syndrome_type)||[],G.value=r||[]}catch(t){console.error("获取字典数据失败:",t)}},We=(t,e)=>{const r=t.find(u=>u.value===e);return r?r.name:e||"-"},At=t=>{if(!t&&t!==0)return"-";const e=typeof t=="string"?parseInt(t):t;if(G.value.length===0)return"...";const r=G.value.find(u=>(typeof u.id=="string"?parseInt(u.id):u.id)===e);return r?r.name:"-"},Ue=t=>{const e=t.DiagnosisViewRecord||[];return e.length>0&&e.some(r=>r.is_confirmed==1)},It=t=>Ue(t)?t.has_appointment?"":"dh5-card--noapt":"dh5-card--unconfirmed",St=t=>{const e=Number(t.appointment_status);return e===3?"已完成":e===4?"已过号":"已挂号"},wt=t=>{const e=Number(t);return e===3?"已完成":e===4?"已过号":"已挂号"},Me=t=>{const e=Array.isArray(t.appointments)?t.appointments:[];return e.length>0?e:t.has_appointment?[{id:t.appointment_id,status:t.appointment_status,doctor_id:t.appointment_doctor_id,doctor_name:t.appointment_doctor_name,time_text:t.appointment_time_text}]:[]},qt=t=>{const e=Number(t==null?void 0:t.status);return{"dh5-apt-item--done":e===3,"dh5-apt-item--missed":e===4,"dh5-apt-item--active":e===1}},Pt=t=>{const e=Number(t.appointment_status);return{"has-apt":t.has_appointment,"apt-row-done":t.has_appointment&&e===3,"apt-row-missed":t.has_appointment&&e===4}},J=t=>t.has_appointment&&Number(t.appointment_status)===1,Oe=t=>{const e=Number(t.appointment_status);return!!(t.has_appointment&&t.appointment_id&&(e===1||e===4))},Lt=t=>{var r;const e=t.assistant_id??t.assistant;return e==null||e===""?!1:Number(e)===Number((r=ie.userInfo)==null?void 0:r.id)},Ee=t=>Lt(t)&&x(["tcm.diagnosis/watchCall"]),X=t=>{var e;return((e=t.video_call_hint)==null?void 0:e.state)||"none"},Nt=t=>{const e=X(t);return e==="live"||e==="pending_room"},Tt=t=>X(t)==="pending_room"?"医生未接通或未同步房间":"点击进入实时房间",Ft=t=>{const e=t.video_call_hint;return e!=null&&e.label?e.label:"暂无可旁观通话"},Wt=t=>{const e=X(t);if(e==="none")return"";if(e==="live")return"通话中";if(e==="pending_room")return"接通中";const r=t.video_call_hint;return(r==null?void 0:r.label)||""},Ut=t=>{if(Ee(t))return!0;const e=X(t);return e==="live"||e==="pending_room"},$e=c(!1),Ye=c(0),Mt=t=>{if(X(t)!=="live"){f.msgWarning("医生未接通或未同步房间号,请稍后再试");return}Ye.value=Number(t.id)||0,$e.value=!0},oe=c(),Be=c(),Qe=c(),He=c(),Ot=()=>{var t;return(t=oe.value)==null?void 0:t.open("add")},Yt=t=>{var e;return(e=oe.value)==null?void 0:e.open("edit",t)},Ke=t=>{var e;return(e=Be.value)==null?void 0:e.open(t)},je=t=>(t==null?void 0:t.prescription_audit_status)===1&&Number(t==null?void 0:t.prescription_void_status)!==1?"查看":"开方",Bt=t=>{var e;if(!(t!=null&&t.id)){f.msgWarning("诊单信息不完整");return}(e=Qe.value)==null||e.open({...t,diagnosis_id:t.id,id:t.appointment_id||0})},Qt=()=>{var t,e;b(),(e=(t=oe.value)==null?void 0:t.refreshCaseList)==null||e.call(t)},Ht=t=>{var e;if(!t.patient_id){f.msgWarning("患者信息不完整");return}(e=He.value)==null||e.open(t)},Kt=async t=>{await f.confirm("确定要删除该诊单吗?"),await Xa({id:t}),b()},de=c(!1),L=c(null),jt=t=>{L.value=t,de.value=!0},N=t=>{const e=L.value;if(de.value=!1,!!e)switch(t){case"assign":Gt(e);break;case"videoQr":if(!J(e)){f.msgWarning("仅「已预约」状态可生成视频二维码");return}Je(e);break;case"confirmQr":Xe(e);break;case"cancelApt":oa(e);break;case"fillIdCard":na(e);break;case"order":Zt(e);break;case"wechat":Ze(e);break;case"delete":Kt(e.id);break}},Z=c(!1),Re=c(!1),re=c(null),z=c({assistant_id:null,is_inherit:!1}),Gt=t=>{re.value=t,z.value.assistant_id=t.assistant_id?Number(t.assistant_id):null,z.value.is_inherit=!1,Z.value=!0},Jt=async()=>{if(!z.value.assistant_id){f.msgWarning("请选择医助");return}Re.value=!0;try{await Qa({id:re.value.id,assistant_id:z.value.assistant_id,is_inherit:z.value.is_inherit?1:0}),Z.value=!1,b()}catch(t){console.error("指派失败:",t)}finally{Re.value=!1}},ee=c(!1),ue=c(),ze=c(!1),v=Ne({patient_id:"",patient_name:"",phone:"",order_type:"",amount:0,remark:"",has_appointment:!1,appointment_time_text:""}),Xt={order_type:[{required:!0,message:"请选择订单类型",trigger:"change"}],amount:[{required:!0,message:"请输入订单金额",trigger:"blur"}]},Zt=t=>{var e;v.patient_id=t.patient_id||t.id,v.patient_name=t.patient_name,v.phone=t.phone||"",v.order_type="",v.amount=0,v.remark="",v.has_appointment=!!t.has_appointment,v.appointment_time_text=t.appointment_time_text||"",(e=ue.value)==null||e.clearValidate(),ee.value=!0},ea=()=>{var t;v.patient_id="",v.patient_name="",v.phone="",v.order_type="",v.amount=0,v.remark="",v.has_appointment=!1,v.appointment_time_text="",(t=ue.value)==null||t.clearValidate()},ta=async()=>{var t;try{await((t=ue.value)==null?void 0:t.validate()),ze.value=!0;const e=await Za({patient_id:v.patient_id,order_type:v.order_type,amount:v.amount,remark:v.remark});ee.value=!1,b();const r=e==null?void 0:e.order_no;if(r){T.value=!0,F.value=!0,W.value="",pe.value="收款二维码",U.value={patient_name:v.patient_name,has_appointment:v.has_appointment,appointment_time_text:v.appointment_time_text};try{const u=await Ha({order_no:r});u!=null&&u.qrcode_url?W.value=u.qrcode_url:f.msgError("二维码生成失败")}catch(u){f.msgError((u==null?void 0:u.msg)||"生成二维码失败")}finally{F.value=!1}}}catch(e){console.error("创建订单失败:",e)}finally{ze.value=!1}},te=c(!1),Ae=c(!1),Ge=c(),A=Ne({id:0,patient_name:"",id_card:""}),aa={id_card:[{required:!0,validator:(t,e,r)=>{if(!e){r(new Error("请输入身份证号"));return}const u=/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(e),k=/^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}$/.test(e);u||k?r():r(new Error("请输入15或18位有效身份证号"))},trigger:"blur"}]},na=t=>{A.id=t.id,A.patient_name=t.patient_name||"-",A.id_card=t.id_card||"",te.value=!0},sa=async()=>{var t;await((t=Ge.value)==null?void 0:t.validate()),Ae.value=!0;try{await Ka({id:A.id,id_card:A.id_card}),f.msgSuccess("补全成功,年龄已自动更新"),te.value=!1,b()}catch(e){f.msgError((e==null?void 0:e.msg)||"补全失败")}finally{Ae.value=!1}},T=c(!1),F=c(!1),W=c(""),U=c(null),pe=c("小程序二维码"),Ie=c("confirm"),la=Y(()=>{const t=U.value;return t?t.has_appointment?t.appointment_time_text||"—":"未挂号":"—"}),Je=async t=>{var e;if(!J(t)){f.msgWarning("仅「已预约」状态可生成视频二维码");return}if(!t.patient_id){f.msgWarning("患者信息不完整");return}Ie.value="video",U.value=t,T.value=!0,F.value=!0,W.value="",pe.value="视频二维码";try{const r=await dt();if(!(r!=null&&r.app_id)){f.msgError("小程序未配置"),T.value=!1;return}const u=await lt({doctor_id:t.appointment_doctor_id,diagnosis_id:t.appointment_doctor_id,patient_id:t.patient_id,share_user_id:((e=ie.userInfo)==null?void 0:e.id)||"",mini_program_path:"pages/login/login"});u!=null&&u.qrcode_url?W.value=u.qrcode_url:f.msgError("二维码生成失败")}catch(r){f.msgError((r==null?void 0:r.msg)||"生成二维码失败")}finally{F.value=!1}},Xe=async t=>{var e;if(!J(t)){f.msgWarning("仅「已预约」状态可使用诊单二维码");return}if(!t.patient_id){f.msgWarning("患者信息不完整");return}Ie.value="confirm",U.value=t,T.value=!0,F.value=!0,W.value="",pe.value="诊单二维码";try{const r=await dt();if(!(r!=null&&r.app_id)){f.msgError("小程序未配置"),T.value=!1;return}const u=await lt({diagnosis_id:t.id,doctor_id:t.appointment_doctor_id,patient_id:t.patient_id,share_user_id:((e=ie.userInfo)==null?void 0:e.id)||""});u!=null&&u.qrcode_url?W.value=u.qrcode_url:f.msgError("二维码生成失败")}catch(r){f.msgError((r==null?void 0:r.msg)||"生成二维码失败")}finally{F.value=!1}},ia=()=>{U.value&&(Ie.value==="video"?Je(U.value):Xe(U.value))},oa=async t=>{if(!Oe(t)){const e=Number(t.appointment_status);t.has_appointment&&e===3?f.msgWarning("已完成就诊,无法取消挂号"):f.msgWarning("该诊单未挂号或挂号信息异常");return}try{await f.confirm(`确定要取消患者「${t.patient_name}」的挂号吗?`),await en({id:t.appointment_id}),f.msgSuccess("取消挂号成功"),b(),D()}catch(e){e!=="cancel"&&f.msgError((e==null?void 0:e.msg)||"取消挂号失败")}},Se=c(!1),I=c(null),M=c([]),ce=c(0),me=c(!1),B=c(null),H=c(""),we=c(!1),qe=c(1),Ze=async t=>{I.value=t,Se.value=!0,M.value=[],ce.value=0,B.value=null,H.value="",qe.value=1,me.value=!0;try{const[e,r]=await Promise.all([it({diagnosis_id:t.id,patient_id:t.patient_id,page_no:1,page_size:20}),ja({patient_id:t.patient_id||t.id}).catch(()=>null)]);M.value=(e==null?void 0:e.lists)||[],ce.value=(e==null?void 0:e.count)||0,B.value=r}catch(e){console.error(e)}finally{me.value=!1}},da=async()=>{if(I.value){qe.value++;try{const t=await it({diagnosis_id:I.value.id,patient_id:I.value.patient_id,page_no:qe.value,page_size:20});M.value.push(...(t==null?void 0:t.lists)||[])}catch(t){console.error(t)}}},ra=async()=>{var t;if(!H.value.trim()){f.msgWarning("请输入内容");return}we.value=!0;try{await Ga({diagnosis_id:I.value.id,patient_id:I.value.patient_id,content:H.value.trim(),msg_type:"note",staff_name:((t=ie.userInfo)==null?void 0:t.name)||"",external_name:I.value.patient_name||""}),H.value="",Ze(I.value)}catch(e){f.msgError((e==null?void 0:e.msg)||"添加失败")}finally{we.value=!1}},ua=async t=>{await f.confirm("确定删除该记录吗?");try{await Ja({id:t}),M.value=M.value.filter(e=>e.id!==t),ce.value--}catch(e){f.msgError((e==null?void 0:e.msg)||"删除失败")}},pa=15e3;let _e=null;const ca=()=>{typeof document<"u"&&document.hidden||(b({silent:!0}).catch(()=>{}),D())};return ga(async()=>{document.body.classList.add("h5-mode"),d.appointment_date=K.value,zt(),b(),typeof requestIdleCallback=="function"?requestIdleCallback(()=>D(),{timeout:2500}):setTimeout(D,200),_e=setInterval(ca,pa)}),fa(()=>{document.body.classList.remove("h5-mode"),_e&&(clearInterval(_e),_e=null)}),(t,e)=>{var at;const r=ka,u=ba,k=Ca,C=xa,q=Da,ae=$a,O=Pa,P=Na,ma=Ta,Pe=La,_a=Fa,et=Wa,ne=Ma,va=Oa,tt=Ea;return l(),o("div",sn,[s("header",ln,[s("div",on,[n(r,{modelValue:d.keyword,"onUpdate:modelValue":e[0]||(e[0]=a=>d.keyword=a),placeholder:"患者姓名 / 手机号",clearable:"","prefix-icon":m(ya),onKeyup:ha(Q,["enter"]),onClear:Q},null,8,["modelValue","prefix-icon"]),n(u,{class:"dh5-search-btn",type:"primary",onClick:Q},{default:i(()=>[...e[32]||(e[32]=[g("查询",-1)])]),_:1})]),s("div",dn,[(l(!0),o(V,null,S(kt.value,a=>(l(),o("span",{key:a.value||"all",class:w(["dh5-chip",{active:d.pending_assign!=="1"&&d.pending_booking!=="1"&&d.completed_appointment!=="1"&&d.appointment_date===a.value}]),onClick:y=>xt(a.value)},[g(p(a.label)+" ",1),ye.value[a.value]!==void 0?(l(),o("em",un,p(ye.value[a.value]),1)):_("",!0)],10,rn))),128)),s("span",{class:w(["dh5-chip","dh5-chip--booking",{active:d.pending_booking==="1"}]),onClick:Dt},[e[33]||(e[33]=g(" 待预约 ",-1)),ke.value!==void 0?(l(),o("em",pn,p(ke.value),1)):_("",!0)],2),s("span",{class:w(["dh5-chip","dh5-chip--done",{active:d.completed_appointment==="1"}]),onClick:Et},[e[34]||(e[34]=g(" 已完成 ",-1)),be.value!==void 0?(l(),o("em",cn,p(be.value),1)):_("",!0)],2),m(x)(["tcm.diagnosis/assign"])?(l(),o("span",{key:0,class:w(["dh5-chip","dh5-chip--pending",{active:d.pending_assign==="1"}]),onClick:$t},[e[35]||(e[35]=g(" 待分配医助 ",-1)),Ce.value!==void 0?(l(),o("em",mn,p(Ce.value),1)):_("",!0)],2)):_("",!0)]),s("div",_n,[s("div",vn,[e[36]||(e[36]=s("span",{class:"dh5-quick-label"},"挂号",-1)),(l(),o(V,null,S(ht,a=>s("span",{key:"a"+a.value,class:w(["dh5-pill",{active:d.has_appointment===a.value}]),onClick:y=>Ct(a.value)},p(a.label),11,gn)),64))]),s("div",fn,[e[37]||(e[37]=s("span",{class:"dh5-quick-label"},"确认",-1)),(l(),o(V,null,S(yt,a=>s("span",{key:"c"+a.value,class:w(["dh5-pill",{active:d.diagnosis_confirmed===a.value}]),onClick:y=>Vt(a.value)},p(a.label),11,hn)),64))]),n(u,{link:"",type:"primary",size:"small",class:"dh5-more-toggle",onClick:e[1]||(e[1]=a=>j.value=!j.value)},{default:i(()=>[g(p(j.value?"收起":"更多")+" ",1),n(k,{class:w({"rotate-180":j.value})},{default:i(()=>[n(m(nt))]),_:1},8,["class"])]),_:1})]),Le(s("div",yn,[n(q,{modelValue:d.diagnosis_type,"onUpdate:modelValue":e[2]||(e[2]=a=>d.diagnosis_type=a),placeholder:"诊断类型",clearable:"",size:"small",onChange:Q},{default:i(()=>[(l(!0),o(V,null,S(xe.value,a=>(l(),E(C,{key:a.value,label:a.name,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),n(q,{modelValue:d.syndrome_type,"onUpdate:modelValue":e[3]||(e[3]=a=>d.syndrome_type=a),placeholder:"证型",clearable:"",size:"small",onChange:Q},{default:i(()=>[(l(!0),o(V,null,S(De.value,a=>(l(),E(C,{key:a.value,label:a.name,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),n(q,{modelValue:d.assistant_id,"onUpdate:modelValue":e[4]||(e[4]=a=>d.assistant_id=a),placeholder:"医助",clearable:"",filterable:"",size:"small",onChange:Q},{default:i(()=>[(l(!0),o(V,null,S(G.value,a=>(l(),E(C,{key:a.id,label:a.name,value:Number(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),n(u,{size:"small",onClick:bt},{default:i(()=>[...e[38]||(e[38]=[g("重置",-1)])]),_:1})],512),[[Va,j.value]])]),Le((l(),o("main",kn,[m(h).lists.length===0&&!m(h).loading?(l(),o("div",bn,[n(ae,{description:"暂无诊单","image-size":120})])):_("",!0),(l(!0),o(V,null,S(m(h).lists,a=>(l(),o("article",{key:a.id,class:w(["dh5-card",It(a)])},[s("header",{class:"dh5-card-head",onClick:y=>Ke(a.id)},[s("div",Vn,p((a.patient_name||"患").charAt(0)),1),s("div",xn,[s("div",Dn,[g(p(a.patient_name||"-")+" ",1),a.gender_desc?(l(),o("span",En,p(a.gender_desc),1)):_("",!0),a.age!=null?(l(),o("span",$n,p(a.age)+"岁",1)):_("",!0)]),s("div",Rn,[g(" #"+p(a.id)+" · "+p(a.diagnosis_date_text||gt(a.create_time))+" ",1),a.assign_read_at===null&&a.assistant_id>0?(l(),o("span",zn,"NEW")):_("",!0)])]),s("div",An,[Ue(a)?(l(),o("span",In,"已确认")):(l(),o("span",Sn,"未确认")),a.has_prescription?(l(),o("span",wn,"已开方")):_("",!0)])],8,Cn),s("section",{class:"dh5-card-body",onClick:y=>Ke(a.id)},[s("div",{class:w(["dh5-row","dh5-row--apt",Pt(a)])},[e[39]||(e[39]=s("span",{class:"dh5-row-key"},"挂号",-1)),s("div",Pn,[a.has_appointment?(l(),o(V,{key:0},[Me(a).length?(l(!0),o(V,{key:0},S(Me(a),y=>(l(),o("div",{key:y.id||`${y.doctor_id}-${y.time_text}`,class:w(["dh5-apt-item",qt(y)])},[s("span",Ln,p(wt(y.status)),1),s("span",Nn,p(y.doctor_name||"-"),1),s("span",Tn,p(y.time_text||"-"),1)],2))),128)):(l(),o(V,{key:1},[s("span",Fn,p(St(a)),1),s("span",Wn,p(a.appointment_doctor_name||"-"),1),s("span",Un,p(a.appointment_time_text||"-"),1)],64))],64)):(l(),o("span",Mn,"未挂号"))])],2),a.has_prescription?(l(),o("div",On,[e[40]||(e[40]=s("span",{class:"dh5-row-key"},"复诊",-1)),s("div",Yn,[s("span",null,p(a.followup_time_text||"—"),1),s("span",Bn,p(a.followup_doctor_name||"—"),1),a.followup_rx_voided?(l(),o("span",Qn,"处方作废")):_("",!0)])])):_("",!0),s("div",Hn,[e[41]||(e[41]=s("span",{class:"dh5-row-key"},"助理",-1)),s("span",Kn,p(At(a.assistant_id||a.assistant)),1)]),a.diagnosis_type?(l(),o("div",jn,[e[42]||(e[42]=s("span",{class:"dh5-row-key"},"诊断",-1)),s("span",Gn,[g(p(We(xe.value,a.diagnosis_type))+" ",1),a.syndrome_type?(l(),o("span",Jn,"·")):_("",!0),a.syndrome_type?(l(),o("span",Xn,p(We(De.value,a.syndrome_type)),1)):_("",!0)])])):_("",!0)],8,qn),Ut(a)?(l(),o("div",Zn,[Ee(a)&&Nt(a)?(l(),o(V,{key:0},[n(u,{type:"primary",size:"small",icon:m(Ya),onClick:y=>Mt(a)},{default:i(()=>[...e[43]||(e[43]=[g(" 进入旁观 ",-1)])]),_:1},8,["icon","onClick"]),s("span",es,p(Tt(a)),1)],64)):(l(),o("span",ts,p(Ee(a)?Ft(a):Wt(a)),1))])):_("",!0),s("footer",as,[m(x)(["tcm.diagnosis/edit"])?(l(),E(u,{key:0,type:"primary",size:"small",plain:"",onClick:y=>Yt(a.id)},{default:i(()=>[...e[44]||(e[44]=[g(" 诊单 ",-1)])]),_:1},8,["onClick"])):_("",!0),m(x)(["tcm.diagnosis/kaifang"])?(l(),E(u,{key:1,type:je(a)==="查看"?"success":"primary",size:"small",onClick:y=>Bt(a)},{default:i(()=>[g(p(je(a)),1)]),_:2},1032,["type","onClick"])):_("",!0),m(x)(["tcm.diagnosis/guahao"])?(l(),E(u,{key:2,type:"success",size:"small",plain:"",onClick:y=>Ht(a)},{default:i(()=>[...e[45]||(e[45]=[g(" 预约 ",-1)])]),_:1},8,["onClick"])):_("",!0),n(u,{size:"small",class:"dh5-more-btn",onClick:y=>jt(a)},{default:i(()=>[e[46]||(e[46]=g(" 更多",-1)),n(k,{class:"el-icon--right"},{default:i(()=>[n(m(nt))]),_:1})]),_:1},8,["onClick"])])],2))),128)),Ve.value?(l(),o("div",{key:1,class:"dh5-load-more",onClick:Rt},p(m(h).loading?"加载中…":"加载更多"),1)):_("",!0),!Ve.value&&m(h).lists.length>0?(l(),o("div",ns,"— 没有更多了 —")):_("",!0)])),[[tt,m(h).loading]]),m(x)(["tcm.diagnosis/add"])?(l(),o("button",{key:0,class:"dh5-fab",type:"button","aria-label":"新增诊单",onClick:Ot},[n(k,{size:22},{default:i(()=>[n(m(Ra))]),_:1})])):_("",!0),n(m(pt),{ref_key:"editRef",ref:oe,onSuccess:Fe},null,512),n(m(ct),{ref_key:"detailRef",ref:Be},null,512),n(m(mt),{ref_key:"prescriptionRef",ref:Qe,onSuccess:Qt},null,512),n(m(_t),{ref_key:"appointmentRef",ref:He,onSuccess:Fe},null,512),n(m(vt),{modelValue:$e.value,"onUpdate:modelValue":e[5]||(e[5]=a=>$e.value=a),"diagnosis-id":Ye.value,onClosed:m(b)},null,8,["modelValue","diagnosis-id","onClosed"]),n(O,{modelValue:de.value,"onUpdate:modelValue":e[14]||(e[14]=a=>de.value=a),title:L.value?`${L.value.patient_name||"诊单"} · 更多操作`:"更多操作",direction:"btt",size:"auto","with-header":!0,"destroy-on-close":!0},{default:i(()=>[L.value?(l(),o("div",ss,[m(x)(["tcm.diagnosis/assign"])?(l(),o("button",{key:0,class:"dh5-action",onClick:e[6]||(e[6]=a=>N("assign"))},[n(k,null,{default:i(()=>[n(m(za))]),_:1}),e[47]||(e[47]=s("span",null,"指派医助",-1))])):_("",!0),J(L.value)&&m(x)(["tcm.diagnosis/videoQr"])?(l(),o("button",{key:1,class:"dh5-action",onClick:e[7]||(e[7]=a=>N("videoQr"))},[n(k,null,{default:i(()=>[n(m(st))]),_:1}),e[48]||(e[48]=s("span",null,"视频二维码",-1))])):_("",!0),J(L.value)&&m(x)(["tcm.diagnosis/guahao"])?(l(),o("button",{key:2,class:"dh5-action",onClick:e[8]||(e[8]=a=>N("confirmQr"))},[n(k,null,{default:i(()=>[n(m(st))]),_:1}),e[49]||(e[49]=s("span",null,"诊单二维码",-1))])):_("",!0),Oe(L.value)&&m(x)(["tcm.diagnosis/guahao"])?(l(),o("button",{key:3,class:"dh5-action",onClick:e[9]||(e[9]=a=>N("cancelApt"))},[n(k,null,{default:i(()=>[n(m(Aa))]),_:1}),e[50]||(e[50]=s("span",null,"取消挂号",-1))])):_("",!0),m(x)(["tcm.diagnosis/edit"])?(l(),o("button",{key:4,class:"dh5-action",onClick:e[10]||(e[10]=a=>N("fillIdCard"))},[n(k,null,{default:i(()=>[n(m(Ia))]),_:1}),e[51]||(e[51]=s("span",null,"补全身份证",-1))])):_("",!0),m(x)(["tcm.diagnosis/order"])?(l(),o("button",{key:5,class:"dh5-action",onClick:e[11]||(e[11]=a=>N("order"))},[n(k,null,{default:i(()=>[n(m(Sa))]),_:1}),e[52]||(e[52]=s("span",null,"创建订单",-1))])):_("",!0),s("button",{class:"dh5-action",onClick:e[12]||(e[12]=a=>N("wechat"))},[n(k,null,{default:i(()=>[n(m(wa))]),_:1}),e[53]||(e[53]=s("span",null,"企微记录",-1))]),m(x)(["tcm.diagnosis/delete"])?(l(),o("button",{key:6,class:"dh5-action dh5-action--danger",onClick:e[13]||(e[13]=a=>N("delete"))},[n(k,null,{default:i(()=>[n(m(qa))]),_:1}),e[54]||(e[54]=s("span",null,"删除诊单",-1))])):_("",!0)])):_("",!0)]),_:1},8,["modelValue","title"]),n(O,{modelValue:Z.value,"onUpdate:modelValue":e[18]||(e[18]=a=>Z.value=a),title:"指派医助",direction:"btt",size:"46%"},{footer:i(()=>[n(u,{class:"dh5-flex1",onClick:e[17]||(e[17]=a=>Z.value=!1)},{default:i(()=>[...e[57]||(e[57]=[g("取消",-1)])]),_:1}),n(u,{class:"dh5-flex1",type:"primary",loading:Re.value,onClick:Jt},{default:i(()=>[...e[58]||(e[58]=[g(" 确定指派 ",-1)])]),_:1},8,["loading"])]),default:i(()=>[n(Pe,{model:z.value,"label-position":"top",class:"dh5-form"},{default:i(()=>[n(P,{label:"选择医助",required:""},{default:i(()=>[n(q,{modelValue:z.value.assistant_id,"onUpdate:modelValue":e[15]||(e[15]=a=>z.value.assistant_id=a),placeholder:"请选择医助",class:"!w-full",filterable:"",clearable:""},{default:i(()=>[(l(!0),o(V,null,S(G.value,a=>(l(),E(C,{key:a.id,label:a.name,value:Number(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),n(P,{label:"继承"},{default:i(()=>[n(ma,{modelValue:z.value.is_inherit,"onUpdate:modelValue":e[16]||(e[16]=a=>z.value.is_inherit=a)},{default:i(()=>[...e[55]||(e[55]=[g("继承",-1)])]),_:1},8,["modelValue"]),e[56]||(e[56]=s("span",{class:"text-gray-400 text-xs ml-2"},"勾选后写入指派记录",-1))]),_:1}),n(P,{label:"诊单信息"},{default:i(()=>{var a,y;return[s("div",ls,[s("div",null,"患者:"+p((a=re.value)==null?void 0:a.patient_name),1),s("div",null,"诊断日期:"+p(((y=re.value)==null?void 0:y.diagnosis_date_text)||"—"),1)])]}),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),n(O,{modelValue:ee.value,"onUpdate:modelValue":e[23]||(e[23]=a=>ee.value=a),title:"创建订单",direction:"btt",size:"64%",onClose:ea},{footer:i(()=>[n(u,{class:"dh5-flex1",onClick:e[22]||(e[22]=a=>ee.value=!1)},{default:i(()=>[...e[59]||(e[59]=[g("取消",-1)])]),_:1}),n(u,{class:"dh5-flex1",type:"primary",loading:ze.value,onClick:ta},{default:i(()=>[...e[60]||(e[60]=[g(" 创建订单 ",-1)])]),_:1},8,["loading"])]),default:i(()=>[n(Pe,{ref_key:"orderFormRef",ref:ue,model:v,rules:Xt,"label-position":"top",class:"dh5-form"},{default:i(()=>[n(P,{label:"患者"},{default:i(()=>[s("span",null,p(v.patient_name)+" ("+p(Te(v.phone))+")",1)]),_:1}),n(P,{label:"订单类型",prop:"order_type"},{default:i(()=>[n(q,{modelValue:v.order_type,"onUpdate:modelValue":e[19]||(e[19]=a=>v.order_type=a),placeholder:"请选择",class:"!w-full"},{default:i(()=>[n(C,{label:"挂号费",value:1}),n(C,{label:"问诊费",value:2}),n(C,{label:"药品费用",value:3}),n(C,{label:"首付费用",value:4}),n(C,{label:"尾款费用",value:5}),n(C,{label:"其他费用",value:6}),n(C,{label:"全部费用",value:7}),n(C,{label:"驼奶费用",value:8})]),_:1},8,["modelValue"])]),_:1}),n(P,{label:"订单金额",prop:"amount"},{default:i(()=>[n(_a,{modelValue:v.amount,"onUpdate:modelValue":e[20]||(e[20]=a=>v.amount=a),min:0,step:.01,precision:2,placeholder:"请输入金额",class:"!w-full"},null,8,["modelValue"])]),_:1}),n(P,{label:"备注",prop:"remark"},{default:i(()=>[n(r,{modelValue:v.remark,"onUpdate:modelValue":e[21]||(e[21]=a=>v.remark=a),type:"textarea",rows:3,placeholder:"请输入备注(可选)"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),n(et,{modelValue:te.value,"onUpdate:modelValue":e[26]||(e[26]=a=>te.value=a),title:"补全身份证号","close-on-click-modal":!1,onClose:e[27]||(e[27]=a=>A.id_card="")},{footer:i(()=>[n(u,{onClick:e[25]||(e[25]=a=>te.value=!1)},{default:i(()=>[...e[61]||(e[61]=[g("取消",-1)])]),_:1}),n(u,{type:"primary",loading:Ae.value,onClick:sa},{default:i(()=>[...e[62]||(e[62]=[g(" 提交 ",-1)])]),_:1},8,["loading"])]),default:i(()=>[n(Pe,{ref_key:"fillIdCardFormRef",ref:Ge,model:A,rules:aa,"label-position":"top",class:"dh5-form"},{default:i(()=>[n(P,{label:"患者"},{default:i(()=>[s("span",is,p(A.patient_name),1)]),_:1}),n(P,{label:"身份证号",prop:"id_card"},{default:i(()=>[n(r,{modelValue:A.id_card,"onUpdate:modelValue":e[24]||(e[24]=a=>A.id_card=a),placeholder:"请输入15或18位身份证号",maxlength:"18","show-word-limit":"",clearable:""},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),n(et,{modelValue:T.value,"onUpdate:modelValue":e[29]||(e[29]=a=>T.value=a),title:pe.value,"close-on-click-modal":!1},{footer:i(()=>[n(u,{onClick:e[28]||(e[28]=a=>T.value=!1)},{default:i(()=>[...e[65]||(e[65]=[g("关闭",-1)])]),_:1}),F.value?_("",!0):(l(),E(u,{key:0,type:"primary",onClick:ia},{default:i(()=>[...e[66]||(e[66]=[g("重新生成",-1)])]),_:1}))]),default:i(()=>{var a;return[s("div",os,[F.value?(l(),o("div",ds,[n(k,{class:"is-loading",size:36},{default:i(()=>[n(m(Ua))]),_:1}),e[63]||(e[63]=s("div",{class:"dh5-qr-tip"},"生成中...",-1))])):W.value?(l(),o("div",rs,[s("img",{src:W.value,alt:"小程序二维码",class:"dh5-qr-img"},null,8,us),s("div",ps,[s("div",null,"患者:"+p((a=U.value)==null?void 0:a.patient_name),1),s("div",null,"挂号时间:"+p(la.value),1),e[64]||(e[64]=s("div",{class:"dh5-qr-hint"},"请使用企业微信扫描二维码,然后转发给患者",-1))])])):(l(),o("div",cs,"生成失败,请重试"))])]}),_:1},8,["modelValue","title"]),n(O,{modelValue:Se.value,"onUpdate:modelValue":e[31]||(e[31]=a=>Se.value=a),title:`企微记录 - ${((at=I.value)==null?void 0:at.patient_name)||""}`,direction:"rtl",size:"100%","destroy-on-close":!0},{default:i(()=>[B.value?(l(),o("div",ms,[s("div",_s,[e[67]||(e[67]=s("span",{class:"dh5-wx-key"},"手机号",-1)),s("span",vs,p(Te(B.value.phone)||"-"),1)]),s("div",gs,[e[69]||(e[69]=s("span",{class:"dh5-wx-key"},"企微 ID",-1)),s("span",fs,[B.value.external_userid?(l(),o("span",hs,p(B.value.external_userid),1)):(l(),E(ne,{key:1,type:"info",size:"small"},{default:i(()=>[...e[68]||(e[68]=[g("未关联",-1)])]),_:1}))])]),s("div",ys,[e[72]||(e[72]=s("span",{class:"dh5-wx-key"},"会话存档",-1)),s("span",ks,[B.value.msgaudit_enabled?(l(),E(ne,{key:0,type:"success",size:"small"},{default:i(()=>[...e[70]||(e[70]=[g("已开通",-1)])]),_:1})):(l(),E(ne,{key:1,type:"info",size:"small"},{default:i(()=>[...e[71]||(e[71]=[g("未配置",-1)])]),_:1}))])])])):_("",!0),s("div",bs,[n(r,{modelValue:H.value,"onUpdate:modelValue":e[30]||(e[30]=a=>H.value=a),type:"textarea",rows:2,placeholder:"添加沟通记录..."},null,8,["modelValue"]),n(u,{type:"primary",loading:we.value,size:"small",onClick:ra},{default:i(()=>[...e[73]||(e[73]=[g(" 添加 ",-1)])]),_:1},8,["loading"])]),Le((l(),o("div",Cs,[M.value.length===0&&!me.value?(l(),o("div",Vs," 暂无聊天记录 ")):(l(),o("div",xs,[(l(!0),o(V,null,S(M.value,a=>{var y;return l(),o("div",{key:a.id,class:"dh5-wx-item"},[s("div",Ds,[s("div",Es,[n(ne,{type:a.direction===0?"primary":"success",size:"small"},{default:i(()=>[g(p(a.direction===0?"员工":"客户"),1)]),_:2},1032,["type"]),s("span",$s,p(a.direction===0?a.staff_name:a.external_name||((y=I.value)==null?void 0:y.patient_name)),1),a.msg_type==="note"?(l(),E(ne,{key:0,type:"warning",size:"small"},{default:i(()=>[...e[74]||(e[74]=[g("备注",-1)])]),_:1})):_("",!0)]),s("div",Rs,[s("span",zs,p(ft(a.chat_time)),1),n(u,{type:"danger",link:"",size:"small",onClick:Ls=>ua(a.id)},{default:i(()=>[...e[75]||(e[75]=[g(" 删除 ",-1)])]),_:1},8,["onClick"])])]),s("div",As,p(a.content),1),a.media_url?(l(),o("div",Is,[n(va,{src:a.media_url,style:{"max-width":"200px"},fit:"contain","preview-src-list":[a.media_url]},null,8,["src","preview-src-list"])])):_("",!0)])}),128))])),ce.value>M.value.length?(l(),o("div",{key:2,class:"dh5-load-more",onClick:da}," 加载更多 ")):_("",!0)])),[[tt,me.value]])]),_:1},8,["modelValue","title"])])}}}),Qs=an(ws,[["__scopeId","data-v-d44354f3"]]);export{Qs as default};
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/edit-7yAXrCs0.js","assets/.pnpm-Dwh6tNxD.js","assets/.pnpm-B3v8nGpq.css","assets/tcm-6fAzOljO.js","assets/index-B6PfZ7nj.js","assets/index-D2fz263J.css","assets/perm-D4QN0w4j.js","assets/DailyMatrix-CBWmklky.js","assets/picker-DnJfa6L1.js","assets/index-IUalmyB9.js","assets/index-B3imPWFk.css","assets/index-DWSqwKES.js","assets/index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js","assets/index-BD5KfpL_.js","assets/index-D0f1Mn00.css","assets/index-DHHP-bSQ.js","assets/file-dB19Jn7n.js","assets/index.vue_vue_type_script_setup_true_lang-Cxx3Fcm2.js","assets/usePaging-DOuAwzL9.js","assets/index-BYOmK9R5.css","assets/picker-XZbUgFct.css","assets/DiagnosisTodoList-B9l_di8T.js","assets/DiagnosisTodoList-D0SBmTHG.css","assets/blood-thresholds-CJ1fqMjh.js","assets/DailyMatrix-DCZnxI8i.css","assets/CaseRecordList-BqojP-Ic.js","assets/CaseRecordList-Cl-c3q7S.css","assets/CallRecordPanel-C47BrVhc.js","assets/RecordingPlaybackBlock-CShApbnW.js","assets/RecordingVideoPlayer-CYPs94hy.js","assets/RecordingVideoPlayer-4DegHAwm.css","assets/RecordingPlaybackBlock-B3KYFgvg.css","assets/CallRecordPanel-TsjZtTO8.css","assets/ImChatRecordPanel-B7A93R-e.js","assets/dayjs-Cbxn44tS.js","assets/im-business-message-parse-CVnz1EnV.js","assets/ImChatRecordPanel-aX8zpWRQ.css","assets/AssignLogPanel-muRUYEDj.js","assets/AssignLogPanel-DkQMoEkX.css","assets/AppointmentRecordPanel-qKhg66ZY.js","assets/doctor-CdQ6l6Nd.js","assets/AppointmentRecordPanel-DC22GDgn.css","assets/NoteTimeline-zuYmxPWs.js","assets/patient-DZqWRuZT.js","assets/NoteTimeline-I2FSxX4s.css","assets/PatientOrderList-BkZTghSw.js","assets/PrescriptionOrderDetailDrawer-Cushmzx-.js","assets/prescription-order-utils-B0fYlULc.js","assets/PrescriptionOrderDetailDrawer-DnrTcbh_.css","assets/PatientOrderList-D8-uh2iu.css","assets/index-Hv7I1l6n.js","assets/index-D7PA59Jd.js","assets/medicine-Mk8hvDsN.js","assets/index-C_LxAEkS.css","assets/diabetes-discovery-display-B_wmGXQJ.js","assets/index-BlTTijFU.js","assets/index-AnyUcdTT.css","assets/index-DV5JwFnL.css","assets/edit-DOd7Lhrw.css","assets/TrackingNoteTimeline-B9T8pFso.css","assets/detail-DHDfXZTY.js","assets/appointment-bV4sf0C1.js","assets/first_visit-C01y4a_p.js","assets/appointment-JDceTxKO.css","assets/AssistantWatchCallDialog-Cli2Pcp2.js","assets/AssistantWatchCallDialog-BIPZRgaH.css"])))=>i.map(i=>d[i]);
+import{o as ut,ap as ga,aq as fa,q as l,r as o,s,v as n,b8 as ha,u as m,bA as ya,b7 as ka,D as i,L as g,K as ba,F as V,G as S,ae as w,T as p,P as _,w as Ca,ck as nt,ac as Le,ad as Va,O as E,bn as xa,bm as Da,bi as Ea,bB as $a,cv as Ra,cl as za,bE as st,d7 as Aa,dl as Ia,bH as Sa,as as wa,d5 as qa,B as Pa,b9 as La,b6 as Na,bd as Ta,J as Fa,bt as Wa,b5 as Ua,br as Ma,aa as Oa,cb as se,p as Y,ba as Ne,M as c,bF as Ya,al as le}from"./.pnpm-Dwh6tNxD.js";import{av as $,m as Ba,aw as Qa,W as Ha,ay as Ka,V as lt,az as it,aD as ja,aA as Ga,aB as Ja,aC as Xa}from"./tcm-6fAzOljO.js";import{i as Za}from"./order-DKOEj1O5.js";import{m as en}from"./doctor-CdQ6l6Nd.js";import{u as tn,m as ot,i as f,_ as an}from"./index-B6PfZ7nj.js";import{g as dt}from"./weapp-CWHrEa32.js";import{u as nn}from"./usePaging-DOuAwzL9.js";import{h as x}from"./perm-D4QN0w4j.js";import{d as rt}from"./dayjs-Cbxn44tS.js";const sn={class:"dh5"},ln={class:"dh5-topbar"},on={class:"dh5-search"},dn={class:"dh5-chips dh5-chips--scroll"},rn=["onClick"],un={key:0},pn={key:0},cn={key:0},mn={key:0},_n={class:"dh5-quick"},vn={class:"dh5-quick-group"},gn=["onClick"],fn={class:"dh5-quick-group"},hn=["onClick"],yn={class:"dh5-more-filter"},kn={class:"dh5-list"},bn={key:0,class:"dh5-empty"},Cn=["onClick"],Vn={class:"dh5-card-avatar"},xn={class:"dh5-card-id-name"},Dn={class:"dh5-card-name"},En={key:0,class:"dh5-meta-gender"},$n={key:1,class:"dh5-meta-age"},Rn={class:"dh5-card-sub"},zn={key:0,class:"dh5-tag-new"},An={class:"dh5-card-tags"},In={key:0,class:"dh5-tag dh5-tag--ok"},Sn={key:1,class:"dh5-tag dh5-tag--warn"},wn={key:2,class:"dh5-tag dh5-tag--info"},qn=["onClick"],Pn={class:"dh5-row-val"},Ln={class:"dh5-apt-status"},Nn={class:"dh5-apt-doctor"},Tn={class:"dh5-apt-time"},Fn={class:"dh5-apt-status"},Wn={class:"dh5-apt-doctor"},Un={class:"dh5-apt-time"},Mn={key:1,class:"dh5-apt-none"},On={key:0,class:"dh5-row dh5-row--followup"},Yn={class:"dh5-row-val"},Bn={class:"dh5-meta-doctor"},Qn={key:0,class:"dh5-tag dh5-tag--gray"},Hn={class:"dh5-row"},Kn={class:"dh5-row-val"},jn={key:1,class:"dh5-row"},Gn={class:"dh5-row-val"},Jn={key:0,class:"dh5-meta-mute"},Xn={key:1},Zn={key:0,class:"dh5-card-watch"},es={class:"dh5-watch-tip"},ts={key:1,class:"dh5-watch-mute"},as={class:"dh5-card-foot"},ns={key:2,class:"dh5-no-more"},ss={key:0,class:"dh5-actions"},ls={class:"dh5-form-tip"},is={class:"font-medium"},os={class:"dh5-qr"},ds={key:0,class:"dh5-qr-loading"},rs={key:1},us=["src"],ps={class:"dh5-qr-meta"},cs={key:2,class:"dh5-qr-fail"},ms={key:0,class:"dh5-wx-contact"},_s={class:"dh5-wx-contact-row"},vs={class:"dh5-wx-val"},gs={class:"dh5-wx-contact-row"},fs={class:"dh5-wx-val"},hs={key:0},ys={class:"dh5-wx-contact-row"},ks={class:"dh5-wx-val"},bs={class:"dh5-wx-add"},Cs={class:"dh5-wx-list-wrap"},Vs={key:0,class:"dh5-wx-empty"},xs={key:1,class:"dh5-wx-list"},Ds={class:"dh5-wx-head"},Es={class:"dh5-wx-head-left"},$s={class:"dh5-wx-name"},Rs={class:"dh5-wx-head-right"},zs={class:"dh5-wx-time"},As={class:"dh5-wx-content"},Is={key:0,class:"dh5-wx-media"},Ss=ut({name:"tcmDiagnosisH5"}),ws=ut({...Ss,setup(qs){const pt=se(()=>le(()=>import("./edit-7yAXrCs0.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59]))),ct=se(()=>le(()=>import("./detail-DHDfXZTY.js"),__vite__mapDeps([60,9,1,2,4,5,10,3]))),mt=se(()=>le(()=>import("./index-Hv7I1l6n.js"),__vite__mapDeps([50,1,2,51,52,4,5,53,54,3,55,56,57]))),_t=se(()=>le(()=>import("./appointment-bV4sf0C1.js"),__vite__mapDeps([61,1,2,34,3,4,5,40,62,63]))),vt=se(()=>le(()=>import("./AssistantWatchCallDialog-Cli2Pcp2.js"),__vite__mapDeps([64,1,2,3,4,5,65]))),ie=tn(),gt=t=>{if(!t)return"-";const e=String(t).length===10?Number(t)*1e3:Number(t);return rt(e).format("YYYY-MM-DD HH:mm")},ft=t=>{if(!t)return"-";const e=String(t).length===10?t*1e3:t;return rt(e).format("YYYY-MM-DD HH:mm")},Te=t=>!t||t.length<11?t:t.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"),R=t=>String(t).padStart(2,"0"),ve=Y(()=>{const t=new Date;return t.setDate(t.getDate()-1),`${t.getFullYear()}-${R(t.getMonth()+1)}-${R(t.getDate())}`}),ge=Y(()=>{const t=new Date;return t.setDate(t.getDate()-2),`${t.getFullYear()}-${R(t.getMonth()+1)}-${R(t.getDate())}`}),K=Y(()=>{const t=new Date;return`${t.getFullYear()}-${R(t.getMonth()+1)}-${R(t.getDate())}`}),fe=Y(()=>{const t=new Date;return t.setDate(t.getDate()+1),`${t.getFullYear()}-${R(t.getMonth()+1)}-${R(t.getDate())}`}),he=Y(()=>{const t=new Date;return t.setDate(t.getDate()+2),`${t.getFullYear()}-${R(t.getMonth()+1)}-${R(t.getDate())}`}),d=Ne({keyword:"",diagnosis_type:"",syndrome_type:"",assistant_id:"",diagnosis_confirmed:"",appointment_date:"",has_appointment:"",pending_assign:"",pending_booking:"",completed_appointment:""}),j=c(!1),ht=[{label:"全部",value:""},{label:"已挂号",value:"1"},{label:"未挂号",value:"0"}],yt=[{label:"全部",value:""},{label:"已确认",value:"1"},{label:"未确认",value:"0"}],kt=Y(()=>[{label:"昨天挂号",value:ve.value},{label:"前天挂号",value:ge.value},{label:"当天挂号",value:K.value},{label:"明天挂号",value:fe.value},{label:"后天挂号",value:he.value},{label:"全部",value:""}]),ye=c({}),ke=c(void 0),be=c(void 0),Ce=c(void 0),{pager:h,getLists:b}=nn({fetchFun:$,params:d}),Ve=Y(()=>h.lists.length<(h.count||0)),Fe=()=>b({silent:!0}),Q=()=>{h.page=1,b(),D()},bt=()=>{d.keyword="",d.diagnosis_type="",d.syndrome_type="",d.assistant_id="",d.diagnosis_confirmed="",d.appointment_date=K.value,d.has_appointment="",d.pending_assign="",d.pending_booking="",d.completed_appointment="",h.page=1,b(),D()},Ct=t=>{d.has_appointment=t,d.pending_booking="",d.completed_appointment="",h.page=1,b(),D()},Vt=t=>{d.diagnosis_confirmed=t,d.pending_booking="",d.completed_appointment="",h.page=1,b(),D()},xt=async t=>{d.pending_assign="",d.pending_booking="",d.completed_appointment="",d.has_appointment="",d.appointment_date=t,h.page=1,await b(),D()},Dt=async()=>{d.pending_assign="",d.pending_booking="1",d.completed_appointment="",d.appointment_date="",d.has_appointment="0",h.page=1,await b(),D()},Et=async()=>{d.pending_assign="",d.pending_booking="",d.completed_appointment="1",d.has_appointment="",d.appointment_date="",h.page=1,await b(),D()},$t=async()=>{d.pending_assign="1",d.pending_booking="",d.completed_appointment="",d.has_appointment="",d.appointment_date="",h.page=1,await b(),D()},D=async()=>{try{const[t,e,r,u,k,C,q,ae,O]=await Promise.all([$({appointment_date:ve.value,page_no:1,page_size:1}),$({appointment_date:ge.value,page_no:1,page_size:1}),$({appointment_date:K.value,page_no:1,page_size:1}),$({appointment_date:fe.value,page_no:1,page_size:1}),$({appointment_date:he.value,page_no:1,page_size:1}),$({page_no:1,page_size:1}),$({has_appointment:0,page_no:1,page_size:1}),$({completed_appointment:1,page_no:1,page_size:1}),$({pending_assign:1,page_no:1,page_size:1})]);ye.value={[ve.value]:(t==null?void 0:t.count)??0,[ge.value]:(e==null?void 0:e.count)??0,[K.value]:(r==null?void 0:r.count)??0,[fe.value]:(u==null?void 0:u.count)??0,[he.value]:(k==null?void 0:k.count)??0,"":(C==null?void 0:C.count)??0},ke.value=(q==null?void 0:q.count)??0,be.value=(ae==null?void 0:ae.count)??0,Ce.value=(O==null?void 0:O.count)??0}catch(t){console.error("获取日期数量失败",t)}},Rt=async()=>{if(h.loading||!Ve.value)return;const t=(h.page||1)+1;h.loading=!0;try{const e=await $({page_no:t,page_size:h.size,...d});h.page=t,h.lists.push(...(e==null?void 0:e.lists)||[]),h.count=(e==null?void 0:e.count)??h.count}catch(e){console.error("加载更多失败:",e)}finally{h.loading=!1}},xe=c([]),De=c([]),G=c([]),zt=async()=>{try{const[t,e,r]=await Promise.all([ot({type:"diagnosis_type"}),ot({type:"syndrome_type"}),Ba()]);xe.value=(t==null?void 0:t.diagnosis_type)||[],De.value=(e==null?void 0:e.syndrome_type)||[],G.value=r||[]}catch(t){console.error("获取字典数据失败:",t)}},We=(t,e)=>{const r=t.find(u=>u.value===e);return r?r.name:e||"-"},At=t=>{if(!t&&t!==0)return"-";const e=typeof t=="string"?parseInt(t):t;if(G.value.length===0)return"...";const r=G.value.find(u=>(typeof u.id=="string"?parseInt(u.id):u.id)===e);return r?r.name:"-"},Ue=t=>{const e=t.DiagnosisViewRecord||[];return e.length>0&&e.some(r=>r.is_confirmed==1)},It=t=>Ue(t)?t.has_appointment?"":"dh5-card--noapt":"dh5-card--unconfirmed",St=t=>{const e=Number(t.appointment_status);return e===3?"已完成":e===4?"已过号":"已挂号"},wt=t=>{const e=Number(t);return e===3?"已完成":e===4?"已过号":"已挂号"},Me=t=>{const e=Array.isArray(t.appointments)?t.appointments:[];return e.length>0?e:t.has_appointment?[{id:t.appointment_id,status:t.appointment_status,doctor_id:t.appointment_doctor_id,doctor_name:t.appointment_doctor_name,time_text:t.appointment_time_text}]:[]},qt=t=>{const e=Number(t==null?void 0:t.status);return{"dh5-apt-item--done":e===3,"dh5-apt-item--missed":e===4,"dh5-apt-item--active":e===1}},Pt=t=>{const e=Number(t.appointment_status);return{"has-apt":t.has_appointment,"apt-row-done":t.has_appointment&&e===3,"apt-row-missed":t.has_appointment&&e===4}},J=t=>t.has_appointment&&Number(t.appointment_status)===1,Oe=t=>{const e=Number(t.appointment_status);return!!(t.has_appointment&&t.appointment_id&&(e===1||e===4))},Lt=t=>{var r;const e=t.assistant_id??t.assistant;return e==null||e===""?!1:Number(e)===Number((r=ie.userInfo)==null?void 0:r.id)},Ee=t=>Lt(t)&&x(["tcm.diagnosis/watchCall"]),X=t=>{var e;return((e=t.video_call_hint)==null?void 0:e.state)||"none"},Nt=t=>{const e=X(t);return e==="live"||e==="pending_room"},Tt=t=>X(t)==="pending_room"?"医生未接通或未同步房间":"点击进入实时房间",Ft=t=>{const e=t.video_call_hint;return e!=null&&e.label?e.label:"暂无可旁观通话"},Wt=t=>{const e=X(t);if(e==="none")return"";if(e==="live")return"通话中";if(e==="pending_room")return"接通中";const r=t.video_call_hint;return(r==null?void 0:r.label)||""},Ut=t=>{if(Ee(t))return!0;const e=X(t);return e==="live"||e==="pending_room"},$e=c(!1),Ye=c(0),Mt=t=>{if(X(t)!=="live"){f.msgWarning("医生未接通或未同步房间号,请稍后再试");return}Ye.value=Number(t.id)||0,$e.value=!0},oe=c(),Be=c(),Qe=c(),He=c(),Ot=()=>{var t;return(t=oe.value)==null?void 0:t.open("add")},Yt=t=>{var e;return(e=oe.value)==null?void 0:e.open("edit",t)},Ke=t=>{var e;return(e=Be.value)==null?void 0:e.open(t)},je=t=>(t==null?void 0:t.prescription_audit_status)===1&&Number(t==null?void 0:t.prescription_void_status)!==1?"查看":"开方",Bt=t=>{var e;if(!(t!=null&&t.id)){f.msgWarning("诊单信息不完整");return}(e=Qe.value)==null||e.open({...t,diagnosis_id:t.id,id:t.appointment_id||0})},Qt=()=>{var t,e;b(),(e=(t=oe.value)==null?void 0:t.refreshCaseList)==null||e.call(t)},Ht=t=>{var e;if(!t.patient_id){f.msgWarning("患者信息不完整");return}(e=He.value)==null||e.open(t)},Kt=async t=>{await f.confirm("确定要删除该诊单吗?"),await Xa({id:t}),b()},de=c(!1),L=c(null),jt=t=>{L.value=t,de.value=!0},N=t=>{const e=L.value;if(de.value=!1,!!e)switch(t){case"assign":Gt(e);break;case"videoQr":if(!J(e)){f.msgWarning("仅「已预约」状态可生成视频二维码");return}Je(e);break;case"confirmQr":Xe(e);break;case"cancelApt":oa(e);break;case"fillIdCard":na(e);break;case"order":Zt(e);break;case"wechat":Ze(e);break;case"delete":Kt(e.id);break}},Z=c(!1),Re=c(!1),re=c(null),z=c({assistant_id:null,is_inherit:!1}),Gt=t=>{re.value=t,z.value.assistant_id=t.assistant_id?Number(t.assistant_id):null,z.value.is_inherit=!1,Z.value=!0},Jt=async()=>{if(!z.value.assistant_id){f.msgWarning("请选择医助");return}Re.value=!0;try{await Qa({id:re.value.id,assistant_id:z.value.assistant_id,is_inherit:z.value.is_inherit?1:0}),Z.value=!1,b()}catch(t){console.error("指派失败:",t)}finally{Re.value=!1}},ee=c(!1),ue=c(),ze=c(!1),v=Ne({patient_id:"",patient_name:"",phone:"",order_type:"",amount:0,remark:"",has_appointment:!1,appointment_time_text:""}),Xt={order_type:[{required:!0,message:"请选择订单类型",trigger:"change"}],amount:[{required:!0,message:"请输入订单金额",trigger:"blur"}]},Zt=t=>{var e;v.patient_id=t.patient_id||t.id,v.patient_name=t.patient_name,v.phone=t.phone||"",v.order_type="",v.amount=0,v.remark="",v.has_appointment=!!t.has_appointment,v.appointment_time_text=t.appointment_time_text||"",(e=ue.value)==null||e.clearValidate(),ee.value=!0},ea=()=>{var t;v.patient_id="",v.patient_name="",v.phone="",v.order_type="",v.amount=0,v.remark="",v.has_appointment=!1,v.appointment_time_text="",(t=ue.value)==null||t.clearValidate()},ta=async()=>{var t;try{await((t=ue.value)==null?void 0:t.validate()),ze.value=!0;const e=await Za({patient_id:v.patient_id,order_type:v.order_type,amount:v.amount,remark:v.remark});ee.value=!1,b();const r=e==null?void 0:e.order_no;if(r){T.value=!0,F.value=!0,W.value="",pe.value="收款二维码",U.value={patient_name:v.patient_name,has_appointment:v.has_appointment,appointment_time_text:v.appointment_time_text};try{const u=await Ha({order_no:r});u!=null&&u.qrcode_url?W.value=u.qrcode_url:f.msgError("二维码生成失败")}catch(u){f.msgError((u==null?void 0:u.msg)||"生成二维码失败")}finally{F.value=!1}}}catch(e){console.error("创建订单失败:",e)}finally{ze.value=!1}},te=c(!1),Ae=c(!1),Ge=c(),A=Ne({id:0,patient_name:"",id_card:""}),aa={id_card:[{required:!0,validator:(t,e,r)=>{if(!e){r(new Error("请输入身份证号"));return}const u=/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(e),k=/^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}$/.test(e);u||k?r():r(new Error("请输入15或18位有效身份证号"))},trigger:"blur"}]},na=t=>{A.id=t.id,A.patient_name=t.patient_name||"-",A.id_card=t.id_card||"",te.value=!0},sa=async()=>{var t;await((t=Ge.value)==null?void 0:t.validate()),Ae.value=!0;try{await Ka({id:A.id,id_card:A.id_card}),f.msgSuccess("补全成功,年龄已自动更新"),te.value=!1,b()}catch(e){f.msgError((e==null?void 0:e.msg)||"补全失败")}finally{Ae.value=!1}},T=c(!1),F=c(!1),W=c(""),U=c(null),pe=c("小程序二维码"),Ie=c("confirm"),la=Y(()=>{const t=U.value;return t?t.has_appointment?t.appointment_time_text||"—":"未挂号":"—"}),Je=async t=>{var e;if(!J(t)){f.msgWarning("仅「已预约」状态可生成视频二维码");return}if(!t.patient_id){f.msgWarning("患者信息不完整");return}Ie.value="video",U.value=t,T.value=!0,F.value=!0,W.value="",pe.value="视频二维码";try{const r=await dt();if(!(r!=null&&r.app_id)){f.msgError("小程序未配置"),T.value=!1;return}const u=await lt({doctor_id:t.appointment_doctor_id,diagnosis_id:t.appointment_doctor_id,patient_id:t.patient_id,share_user_id:((e=ie.userInfo)==null?void 0:e.id)||"",mini_program_path:"pages/login/login"});u!=null&&u.qrcode_url?W.value=u.qrcode_url:f.msgError("二维码生成失败")}catch(r){f.msgError((r==null?void 0:r.msg)||"生成二维码失败")}finally{F.value=!1}},Xe=async t=>{var e;if(!J(t)){f.msgWarning("仅「已预约」状态可使用诊单二维码");return}if(!t.patient_id){f.msgWarning("患者信息不完整");return}Ie.value="confirm",U.value=t,T.value=!0,F.value=!0,W.value="",pe.value="诊单二维码";try{const r=await dt();if(!(r!=null&&r.app_id)){f.msgError("小程序未配置"),T.value=!1;return}const u=await lt({diagnosis_id:t.id,doctor_id:t.appointment_doctor_id,patient_id:t.patient_id,share_user_id:((e=ie.userInfo)==null?void 0:e.id)||""});u!=null&&u.qrcode_url?W.value=u.qrcode_url:f.msgError("二维码生成失败")}catch(r){f.msgError((r==null?void 0:r.msg)||"生成二维码失败")}finally{F.value=!1}},ia=()=>{U.value&&(Ie.value==="video"?Je(U.value):Xe(U.value))},oa=async t=>{if(!Oe(t)){const e=Number(t.appointment_status);t.has_appointment&&e===3?f.msgWarning("已完成就诊,无法取消挂号"):f.msgWarning("该诊单未挂号或挂号信息异常");return}try{await f.confirm(`确定要取消患者「${t.patient_name}」的挂号吗?`),await en({id:t.appointment_id}),f.msgSuccess("取消挂号成功"),b(),D()}catch(e){e!=="cancel"&&f.msgError((e==null?void 0:e.msg)||"取消挂号失败")}},Se=c(!1),I=c(null),M=c([]),ce=c(0),me=c(!1),B=c(null),H=c(""),we=c(!1),qe=c(1),Ze=async t=>{I.value=t,Se.value=!0,M.value=[],ce.value=0,B.value=null,H.value="",qe.value=1,me.value=!0;try{const[e,r]=await Promise.all([it({diagnosis_id:t.id,patient_id:t.patient_id,page_no:1,page_size:20}),ja({patient_id:t.patient_id||t.id}).catch(()=>null)]);M.value=(e==null?void 0:e.lists)||[],ce.value=(e==null?void 0:e.count)||0,B.value=r}catch(e){console.error(e)}finally{me.value=!1}},da=async()=>{if(I.value){qe.value++;try{const t=await it({diagnosis_id:I.value.id,patient_id:I.value.patient_id,page_no:qe.value,page_size:20});M.value.push(...(t==null?void 0:t.lists)||[])}catch(t){console.error(t)}}},ra=async()=>{var t;if(!H.value.trim()){f.msgWarning("请输入内容");return}we.value=!0;try{await Ga({diagnosis_id:I.value.id,patient_id:I.value.patient_id,content:H.value.trim(),msg_type:"note",staff_name:((t=ie.userInfo)==null?void 0:t.name)||"",external_name:I.value.patient_name||""}),H.value="",Ze(I.value)}catch(e){f.msgError((e==null?void 0:e.msg)||"添加失败")}finally{we.value=!1}},ua=async t=>{await f.confirm("确定删除该记录吗?");try{await Ja({id:t}),M.value=M.value.filter(e=>e.id!==t),ce.value--}catch(e){f.msgError((e==null?void 0:e.msg)||"删除失败")}},pa=15e3;let _e=null;const ca=()=>{typeof document<"u"&&document.hidden||(b({silent:!0}).catch(()=>{}),D())};return ga(async()=>{document.body.classList.add("h5-mode"),d.appointment_date=K.value,zt(),b(),typeof requestIdleCallback=="function"?requestIdleCallback(()=>D(),{timeout:2500}):setTimeout(D,200),_e=setInterval(ca,pa)}),fa(()=>{document.body.classList.remove("h5-mode"),_e&&(clearInterval(_e),_e=null)}),(t,e)=>{var at;const r=ka,u=ba,k=Ca,C=xa,q=Da,ae=$a,O=Pa,P=Na,ma=Ta,Pe=La,_a=Fa,et=Wa,ne=Ma,va=Oa,tt=Ea;return l(),o("div",sn,[s("header",ln,[s("div",on,[n(r,{modelValue:d.keyword,"onUpdate:modelValue":e[0]||(e[0]=a=>d.keyword=a),placeholder:"患者姓名 / 手机号",clearable:"","prefix-icon":m(ya),onKeyup:ha(Q,["enter"]),onClear:Q},null,8,["modelValue","prefix-icon"]),n(u,{class:"dh5-search-btn",type:"primary",onClick:Q},{default:i(()=>[...e[32]||(e[32]=[g("查询",-1)])]),_:1})]),s("div",dn,[(l(!0),o(V,null,S(kt.value,a=>(l(),o("span",{key:a.value||"all",class:w(["dh5-chip",{active:d.pending_assign!=="1"&&d.pending_booking!=="1"&&d.completed_appointment!=="1"&&d.appointment_date===a.value}]),onClick:y=>xt(a.value)},[g(p(a.label)+" ",1),ye.value[a.value]!==void 0?(l(),o("em",un,p(ye.value[a.value]),1)):_("",!0)],10,rn))),128)),s("span",{class:w(["dh5-chip","dh5-chip--booking",{active:d.pending_booking==="1"}]),onClick:Dt},[e[33]||(e[33]=g(" 待预约 ",-1)),ke.value!==void 0?(l(),o("em",pn,p(ke.value),1)):_("",!0)],2),s("span",{class:w(["dh5-chip","dh5-chip--done",{active:d.completed_appointment==="1"}]),onClick:Et},[e[34]||(e[34]=g(" 已完成 ",-1)),be.value!==void 0?(l(),o("em",cn,p(be.value),1)):_("",!0)],2),m(x)(["tcm.diagnosis/assign"])?(l(),o("span",{key:0,class:w(["dh5-chip","dh5-chip--pending",{active:d.pending_assign==="1"}]),onClick:$t},[e[35]||(e[35]=g(" 待分配医助 ",-1)),Ce.value!==void 0?(l(),o("em",mn,p(Ce.value),1)):_("",!0)],2)):_("",!0)]),s("div",_n,[s("div",vn,[e[36]||(e[36]=s("span",{class:"dh5-quick-label"},"挂号",-1)),(l(),o(V,null,S(ht,a=>s("span",{key:"a"+a.value,class:w(["dh5-pill",{active:d.has_appointment===a.value}]),onClick:y=>Ct(a.value)},p(a.label),11,gn)),64))]),s("div",fn,[e[37]||(e[37]=s("span",{class:"dh5-quick-label"},"确认",-1)),(l(),o(V,null,S(yt,a=>s("span",{key:"c"+a.value,class:w(["dh5-pill",{active:d.diagnosis_confirmed===a.value}]),onClick:y=>Vt(a.value)},p(a.label),11,hn)),64))]),n(u,{link:"",type:"primary",size:"small",class:"dh5-more-toggle",onClick:e[1]||(e[1]=a=>j.value=!j.value)},{default:i(()=>[g(p(j.value?"收起":"更多")+" ",1),n(k,{class:w({"rotate-180":j.value})},{default:i(()=>[n(m(nt))]),_:1},8,["class"])]),_:1})]),Le(s("div",yn,[n(q,{modelValue:d.diagnosis_type,"onUpdate:modelValue":e[2]||(e[2]=a=>d.diagnosis_type=a),placeholder:"诊断类型",clearable:"",size:"small",onChange:Q},{default:i(()=>[(l(!0),o(V,null,S(xe.value,a=>(l(),E(C,{key:a.value,label:a.name,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),n(q,{modelValue:d.syndrome_type,"onUpdate:modelValue":e[3]||(e[3]=a=>d.syndrome_type=a),placeholder:"证型",clearable:"",size:"small",onChange:Q},{default:i(()=>[(l(!0),o(V,null,S(De.value,a=>(l(),E(C,{key:a.value,label:a.name,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),n(q,{modelValue:d.assistant_id,"onUpdate:modelValue":e[4]||(e[4]=a=>d.assistant_id=a),placeholder:"医助",clearable:"",filterable:"",size:"small",onChange:Q},{default:i(()=>[(l(!0),o(V,null,S(G.value,a=>(l(),E(C,{key:a.id,label:a.name,value:Number(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),n(u,{size:"small",onClick:bt},{default:i(()=>[...e[38]||(e[38]=[g("重置",-1)])]),_:1})],512),[[Va,j.value]])]),Le((l(),o("main",kn,[m(h).lists.length===0&&!m(h).loading?(l(),o("div",bn,[n(ae,{description:"暂无诊单","image-size":120})])):_("",!0),(l(!0),o(V,null,S(m(h).lists,a=>(l(),o("article",{key:a.id,class:w(["dh5-card",It(a)])},[s("header",{class:"dh5-card-head",onClick:y=>Ke(a.id)},[s("div",Vn,p((a.patient_name||"患").charAt(0)),1),s("div",xn,[s("div",Dn,[g(p(a.patient_name||"-")+" ",1),a.gender_desc?(l(),o("span",En,p(a.gender_desc),1)):_("",!0),a.age!=null?(l(),o("span",$n,p(a.age)+"岁",1)):_("",!0)]),s("div",Rn,[g(" #"+p(a.id)+" · "+p(a.diagnosis_date_text||gt(a.create_time))+" ",1),a.assign_read_at===null&&a.assistant_id>0?(l(),o("span",zn,"NEW")):_("",!0)])]),s("div",An,[Ue(a)?(l(),o("span",In,"已确认")):(l(),o("span",Sn,"未确认")),a.has_prescription?(l(),o("span",wn,"已开方")):_("",!0)])],8,Cn),s("section",{class:"dh5-card-body",onClick:y=>Ke(a.id)},[s("div",{class:w(["dh5-row","dh5-row--apt",Pt(a)])},[e[39]||(e[39]=s("span",{class:"dh5-row-key"},"挂号",-1)),s("div",Pn,[a.has_appointment?(l(),o(V,{key:0},[Me(a).length?(l(!0),o(V,{key:0},S(Me(a),y=>(l(),o("div",{key:y.id||`${y.doctor_id}-${y.time_text}`,class:w(["dh5-apt-item",qt(y)])},[s("span",Ln,p(wt(y.status)),1),s("span",Nn,p(y.doctor_name||"-"),1),s("span",Tn,p(y.time_text||"-"),1)],2))),128)):(l(),o(V,{key:1},[s("span",Fn,p(St(a)),1),s("span",Wn,p(a.appointment_doctor_name||"-"),1),s("span",Un,p(a.appointment_time_text||"-"),1)],64))],64)):(l(),o("span",Mn,"未挂号"))])],2),a.has_prescription?(l(),o("div",On,[e[40]||(e[40]=s("span",{class:"dh5-row-key"},"复诊",-1)),s("div",Yn,[s("span",null,p(a.followup_time_text||"—"),1),s("span",Bn,p(a.followup_doctor_name||"—"),1),a.followup_rx_voided?(l(),o("span",Qn,"处方作废")):_("",!0)])])):_("",!0),s("div",Hn,[e[41]||(e[41]=s("span",{class:"dh5-row-key"},"助理",-1)),s("span",Kn,p(At(a.assistant_id||a.assistant)),1)]),a.diagnosis_type?(l(),o("div",jn,[e[42]||(e[42]=s("span",{class:"dh5-row-key"},"诊断",-1)),s("span",Gn,[g(p(We(xe.value,a.diagnosis_type))+" ",1),a.syndrome_type?(l(),o("span",Jn,"·")):_("",!0),a.syndrome_type?(l(),o("span",Xn,p(We(De.value,a.syndrome_type)),1)):_("",!0)])])):_("",!0)],8,qn),Ut(a)?(l(),o("div",Zn,[Ee(a)&&Nt(a)?(l(),o(V,{key:0},[n(u,{type:"primary",size:"small",icon:m(Ya),onClick:y=>Mt(a)},{default:i(()=>[...e[43]||(e[43]=[g(" 进入旁观 ",-1)])]),_:1},8,["icon","onClick"]),s("span",es,p(Tt(a)),1)],64)):(l(),o("span",ts,p(Ee(a)?Ft(a):Wt(a)),1))])):_("",!0),s("footer",as,[m(x)(["tcm.diagnosis/edit"])?(l(),E(u,{key:0,type:"primary",size:"small",plain:"",onClick:y=>Yt(a.id)},{default:i(()=>[...e[44]||(e[44]=[g(" 诊单 ",-1)])]),_:1},8,["onClick"])):_("",!0),m(x)(["tcm.diagnosis/kaifang"])?(l(),E(u,{key:1,type:je(a)==="查看"?"success":"primary",size:"small",onClick:y=>Bt(a)},{default:i(()=>[g(p(je(a)),1)]),_:2},1032,["type","onClick"])):_("",!0),m(x)(["tcm.diagnosis/guahao"])?(l(),E(u,{key:2,type:"success",size:"small",plain:"",onClick:y=>Ht(a)},{default:i(()=>[...e[45]||(e[45]=[g(" 预约 ",-1)])]),_:1},8,["onClick"])):_("",!0),n(u,{size:"small",class:"dh5-more-btn",onClick:y=>jt(a)},{default:i(()=>[e[46]||(e[46]=g(" 更多",-1)),n(k,{class:"el-icon--right"},{default:i(()=>[n(m(nt))]),_:1})]),_:1},8,["onClick"])])],2))),128)),Ve.value?(l(),o("div",{key:1,class:"dh5-load-more",onClick:Rt},p(m(h).loading?"加载中…":"加载更多"),1)):_("",!0),!Ve.value&&m(h).lists.length>0?(l(),o("div",ns,"— 没有更多了 —")):_("",!0)])),[[tt,m(h).loading]]),m(x)(["tcm.diagnosis/add"])?(l(),o("button",{key:0,class:"dh5-fab",type:"button","aria-label":"新增诊单",onClick:Ot},[n(k,{size:22},{default:i(()=>[n(m(Ra))]),_:1})])):_("",!0),n(m(pt),{ref_key:"editRef",ref:oe,onSuccess:Fe},null,512),n(m(ct),{ref_key:"detailRef",ref:Be},null,512),n(m(mt),{ref_key:"prescriptionRef",ref:Qe,onSuccess:Qt},null,512),n(m(_t),{ref_key:"appointmentRef",ref:He,onSuccess:Fe},null,512),n(m(vt),{modelValue:$e.value,"onUpdate:modelValue":e[5]||(e[5]=a=>$e.value=a),"diagnosis-id":Ye.value,onClosed:m(b)},null,8,["modelValue","diagnosis-id","onClosed"]),n(O,{modelValue:de.value,"onUpdate:modelValue":e[14]||(e[14]=a=>de.value=a),title:L.value?`${L.value.patient_name||"诊单"} · 更多操作`:"更多操作",direction:"btt",size:"auto","with-header":!0,"destroy-on-close":!0},{default:i(()=>[L.value?(l(),o("div",ss,[m(x)(["tcm.diagnosis/assign"])?(l(),o("button",{key:0,class:"dh5-action",onClick:e[6]||(e[6]=a=>N("assign"))},[n(k,null,{default:i(()=>[n(m(za))]),_:1}),e[47]||(e[47]=s("span",null,"指派医助",-1))])):_("",!0),J(L.value)&&m(x)(["tcm.diagnosis/videoQr"])?(l(),o("button",{key:1,class:"dh5-action",onClick:e[7]||(e[7]=a=>N("videoQr"))},[n(k,null,{default:i(()=>[n(m(st))]),_:1}),e[48]||(e[48]=s("span",null,"视频二维码",-1))])):_("",!0),J(L.value)&&m(x)(["tcm.diagnosis/guahao"])?(l(),o("button",{key:2,class:"dh5-action",onClick:e[8]||(e[8]=a=>N("confirmQr"))},[n(k,null,{default:i(()=>[n(m(st))]),_:1}),e[49]||(e[49]=s("span",null,"诊单二维码",-1))])):_("",!0),Oe(L.value)&&m(x)(["tcm.diagnosis/guahao"])?(l(),o("button",{key:3,class:"dh5-action",onClick:e[9]||(e[9]=a=>N("cancelApt"))},[n(k,null,{default:i(()=>[n(m(Aa))]),_:1}),e[50]||(e[50]=s("span",null,"取消挂号",-1))])):_("",!0),m(x)(["tcm.diagnosis/edit"])?(l(),o("button",{key:4,class:"dh5-action",onClick:e[10]||(e[10]=a=>N("fillIdCard"))},[n(k,null,{default:i(()=>[n(m(Ia))]),_:1}),e[51]||(e[51]=s("span",null,"补全身份证",-1))])):_("",!0),m(x)(["tcm.diagnosis/order"])?(l(),o("button",{key:5,class:"dh5-action",onClick:e[11]||(e[11]=a=>N("order"))},[n(k,null,{default:i(()=>[n(m(Sa))]),_:1}),e[52]||(e[52]=s("span",null,"创建订单",-1))])):_("",!0),s("button",{class:"dh5-action",onClick:e[12]||(e[12]=a=>N("wechat"))},[n(k,null,{default:i(()=>[n(m(wa))]),_:1}),e[53]||(e[53]=s("span",null,"企微记录",-1))]),m(x)(["tcm.diagnosis/delete"])?(l(),o("button",{key:6,class:"dh5-action dh5-action--danger",onClick:e[13]||(e[13]=a=>N("delete"))},[n(k,null,{default:i(()=>[n(m(qa))]),_:1}),e[54]||(e[54]=s("span",null,"删除诊单",-1))])):_("",!0)])):_("",!0)]),_:1},8,["modelValue","title"]),n(O,{modelValue:Z.value,"onUpdate:modelValue":e[18]||(e[18]=a=>Z.value=a),title:"指派医助",direction:"btt",size:"46%"},{footer:i(()=>[n(u,{class:"dh5-flex1",onClick:e[17]||(e[17]=a=>Z.value=!1)},{default:i(()=>[...e[57]||(e[57]=[g("取消",-1)])]),_:1}),n(u,{class:"dh5-flex1",type:"primary",loading:Re.value,onClick:Jt},{default:i(()=>[...e[58]||(e[58]=[g(" 确定指派 ",-1)])]),_:1},8,["loading"])]),default:i(()=>[n(Pe,{model:z.value,"label-position":"top",class:"dh5-form"},{default:i(()=>[n(P,{label:"选择医助",required:""},{default:i(()=>[n(q,{modelValue:z.value.assistant_id,"onUpdate:modelValue":e[15]||(e[15]=a=>z.value.assistant_id=a),placeholder:"请选择医助",class:"!w-full",filterable:"",clearable:""},{default:i(()=>[(l(!0),o(V,null,S(G.value,a=>(l(),E(C,{key:a.id,label:a.name,value:Number(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),n(P,{label:"继承"},{default:i(()=>[n(ma,{modelValue:z.value.is_inherit,"onUpdate:modelValue":e[16]||(e[16]=a=>z.value.is_inherit=a)},{default:i(()=>[...e[55]||(e[55]=[g("继承",-1)])]),_:1},8,["modelValue"]),e[56]||(e[56]=s("span",{class:"text-gray-400 text-xs ml-2"},"勾选后写入指派记录",-1))]),_:1}),n(P,{label:"诊单信息"},{default:i(()=>{var a,y;return[s("div",ls,[s("div",null,"患者:"+p((a=re.value)==null?void 0:a.patient_name),1),s("div",null,"诊断日期:"+p(((y=re.value)==null?void 0:y.diagnosis_date_text)||"—"),1)])]}),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),n(O,{modelValue:ee.value,"onUpdate:modelValue":e[23]||(e[23]=a=>ee.value=a),title:"创建订单",direction:"btt",size:"64%",onClose:ea},{footer:i(()=>[n(u,{class:"dh5-flex1",onClick:e[22]||(e[22]=a=>ee.value=!1)},{default:i(()=>[...e[59]||(e[59]=[g("取消",-1)])]),_:1}),n(u,{class:"dh5-flex1",type:"primary",loading:ze.value,onClick:ta},{default:i(()=>[...e[60]||(e[60]=[g(" 创建订单 ",-1)])]),_:1},8,["loading"])]),default:i(()=>[n(Pe,{ref_key:"orderFormRef",ref:ue,model:v,rules:Xt,"label-position":"top",class:"dh5-form"},{default:i(()=>[n(P,{label:"患者"},{default:i(()=>[s("span",null,p(v.patient_name)+" ("+p(Te(v.phone))+")",1)]),_:1}),n(P,{label:"订单类型",prop:"order_type"},{default:i(()=>[n(q,{modelValue:v.order_type,"onUpdate:modelValue":e[19]||(e[19]=a=>v.order_type=a),placeholder:"请选择",class:"!w-full"},{default:i(()=>[n(C,{label:"挂号费",value:1}),n(C,{label:"问诊费",value:2}),n(C,{label:"药品费用",value:3}),n(C,{label:"首付费用",value:4}),n(C,{label:"尾款费用",value:5}),n(C,{label:"其他费用",value:6}),n(C,{label:"全部费用",value:7}),n(C,{label:"驼奶费用",value:8})]),_:1},8,["modelValue"])]),_:1}),n(P,{label:"订单金额",prop:"amount"},{default:i(()=>[n(_a,{modelValue:v.amount,"onUpdate:modelValue":e[20]||(e[20]=a=>v.amount=a),min:0,step:.01,precision:2,placeholder:"请输入金额",class:"!w-full"},null,8,["modelValue"])]),_:1}),n(P,{label:"备注",prop:"remark"},{default:i(()=>[n(r,{modelValue:v.remark,"onUpdate:modelValue":e[21]||(e[21]=a=>v.remark=a),type:"textarea",rows:3,placeholder:"请输入备注(可选)"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),n(et,{modelValue:te.value,"onUpdate:modelValue":e[26]||(e[26]=a=>te.value=a),title:"补全身份证号","close-on-click-modal":!1,onClose:e[27]||(e[27]=a=>A.id_card="")},{footer:i(()=>[n(u,{onClick:e[25]||(e[25]=a=>te.value=!1)},{default:i(()=>[...e[61]||(e[61]=[g("取消",-1)])]),_:1}),n(u,{type:"primary",loading:Ae.value,onClick:sa},{default:i(()=>[...e[62]||(e[62]=[g(" 提交 ",-1)])]),_:1},8,["loading"])]),default:i(()=>[n(Pe,{ref_key:"fillIdCardFormRef",ref:Ge,model:A,rules:aa,"label-position":"top",class:"dh5-form"},{default:i(()=>[n(P,{label:"患者"},{default:i(()=>[s("span",is,p(A.patient_name),1)]),_:1}),n(P,{label:"身份证号",prop:"id_card"},{default:i(()=>[n(r,{modelValue:A.id_card,"onUpdate:modelValue":e[24]||(e[24]=a=>A.id_card=a),placeholder:"请输入15或18位身份证号",maxlength:"18","show-word-limit":"",clearable:""},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),n(et,{modelValue:T.value,"onUpdate:modelValue":e[29]||(e[29]=a=>T.value=a),title:pe.value,"close-on-click-modal":!1},{footer:i(()=>[n(u,{onClick:e[28]||(e[28]=a=>T.value=!1)},{default:i(()=>[...e[65]||(e[65]=[g("关闭",-1)])]),_:1}),F.value?_("",!0):(l(),E(u,{key:0,type:"primary",onClick:ia},{default:i(()=>[...e[66]||(e[66]=[g("重新生成",-1)])]),_:1}))]),default:i(()=>{var a;return[s("div",os,[F.value?(l(),o("div",ds,[n(k,{class:"is-loading",size:36},{default:i(()=>[n(m(Ua))]),_:1}),e[63]||(e[63]=s("div",{class:"dh5-qr-tip"},"生成中...",-1))])):W.value?(l(),o("div",rs,[s("img",{src:W.value,alt:"小程序二维码",class:"dh5-qr-img"},null,8,us),s("div",ps,[s("div",null,"患者:"+p((a=U.value)==null?void 0:a.patient_name),1),s("div",null,"挂号时间:"+p(la.value),1),e[64]||(e[64]=s("div",{class:"dh5-qr-hint"},"请使用企业微信扫描二维码,然后转发给患者",-1))])])):(l(),o("div",cs,"生成失败,请重试"))])]}),_:1},8,["modelValue","title"]),n(O,{modelValue:Se.value,"onUpdate:modelValue":e[31]||(e[31]=a=>Se.value=a),title:`企微记录 - ${((at=I.value)==null?void 0:at.patient_name)||""}`,direction:"rtl",size:"100%","destroy-on-close":!0},{default:i(()=>[B.value?(l(),o("div",ms,[s("div",_s,[e[67]||(e[67]=s("span",{class:"dh5-wx-key"},"手机号",-1)),s("span",vs,p(Te(B.value.phone)||"-"),1)]),s("div",gs,[e[69]||(e[69]=s("span",{class:"dh5-wx-key"},"企微 ID",-1)),s("span",fs,[B.value.external_userid?(l(),o("span",hs,p(B.value.external_userid),1)):(l(),E(ne,{key:1,type:"info",size:"small"},{default:i(()=>[...e[68]||(e[68]=[g("未关联",-1)])]),_:1}))])]),s("div",ys,[e[72]||(e[72]=s("span",{class:"dh5-wx-key"},"会话存档",-1)),s("span",ks,[B.value.msgaudit_enabled?(l(),E(ne,{key:0,type:"success",size:"small"},{default:i(()=>[...e[70]||(e[70]=[g("已开通",-1)])]),_:1})):(l(),E(ne,{key:1,type:"info",size:"small"},{default:i(()=>[...e[71]||(e[71]=[g("未配置",-1)])]),_:1}))])])])):_("",!0),s("div",bs,[n(r,{modelValue:H.value,"onUpdate:modelValue":e[30]||(e[30]=a=>H.value=a),type:"textarea",rows:2,placeholder:"添加沟通记录..."},null,8,["modelValue"]),n(u,{type:"primary",loading:we.value,size:"small",onClick:ra},{default:i(()=>[...e[73]||(e[73]=[g(" 添加 ",-1)])]),_:1},8,["loading"])]),Le((l(),o("div",Cs,[M.value.length===0&&!me.value?(l(),o("div",Vs," 暂无聊天记录 ")):(l(),o("div",xs,[(l(!0),o(V,null,S(M.value,a=>{var y;return l(),o("div",{key:a.id,class:"dh5-wx-item"},[s("div",Ds,[s("div",Es,[n(ne,{type:a.direction===0?"primary":"success",size:"small"},{default:i(()=>[g(p(a.direction===0?"员工":"客户"),1)]),_:2},1032,["type"]),s("span",$s,p(a.direction===0?a.staff_name:a.external_name||((y=I.value)==null?void 0:y.patient_name)),1),a.msg_type==="note"?(l(),E(ne,{key:0,type:"warning",size:"small"},{default:i(()=>[...e[74]||(e[74]=[g("备注",-1)])]),_:1})):_("",!0)]),s("div",Rs,[s("span",zs,p(ft(a.chat_time)),1),n(u,{type:"danger",link:"",size:"small",onClick:Ls=>ua(a.id)},{default:i(()=>[...e[75]||(e[75]=[g(" 删除 ",-1)])]),_:1},8,["onClick"])])]),s("div",As,p(a.content),1),a.media_url?(l(),o("div",Is,[n(va,{src:a.media_url,style:{"max-width":"200px"},fit:"contain","preview-src-list":[a.media_url]},null,8,["src","preview-src-list"])])):_("",!0)])}),128))])),ce.value>M.value.length?(l(),o("div",{key:2,class:"dh5-load-more",onClick:da}," 加载更多 ")):_("",!0)])),[[tt,me.value]])]),_:1},8,["modelValue","title"])])}}}),Qs=an(ws,[["__scopeId","data-v-d44354f3"]]);export{Qs as default};
diff --git a/server/public/admin/assets/information-ZG9MMgMQ.js b/server/public/admin/assets/information-0aWydQGi.js
similarity index 92%
rename from server/public/admin/assets/information-ZG9MMgMQ.js
rename to server/public/admin/assets/information-0aWydQGi.js
index 1884e810e..80e9f8316 100644
--- a/server/public/admin/assets/information-ZG9MMgMQ.js
+++ b/server/public/admin/assets/information-0aWydQGi.js
@@ -1 +1 @@
-import{_ as q}from"./index-ZhzRA6qF.js";import{o as f,be as C,q as _,r as U,v as o,D as s,bg as k,s as i,b6 as O,b7 as y,u as t,b9 as M,ac as P,O as E,K as L,L as B,M as D,ba as G}from"./.pnpm-Dwh6tNxD.js";import{_ as I}from"./picker-2bpe8Dva.js";import{a as N,b as S}from"./website-BLb5k92F.js";import{e as W}from"./index-C0Q8AuuZ.js";import"./index-CfJcNX3X.js";import"./index-B-j4AceK.js";import"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import"./index-39SS-XKl.js";import"./index-4SRyrKER.js";import"./file-BUuEowhq.js";import"./index.vue_vue_type_script_setup_true_lang-Cxx3Fcm2.js";import"./usePaging-DOuAwzL9.js";const F={class:"website-information"},R={class:"w-80"},A={class:"w-80"},K={class:"w-80"},T={class:"w-80"},z={class:"w-80"},H=f({name:"webInformation"}),ae=f({...H,setup(J){const u=D(),b=W(),l=G({name:"",web_favicon:"",web_logo:"",login_image:"",h5_favicon:"",shop_name:"",shop_logo:"",pc_logo:"",pc_title:"",pc_desc:"",pc_ico:"",pc_keywords:""}),v={name:[{required:!0,message:"请输入网站名称",trigger:["blur"]}],web_favicon:[{required:!0,message:"请选择网站图标",trigger:["change"]}],web_logo:[{required:!0,message:"请选择网站logo",trigger:["change"]}],login_image:[{required:!0,message:"请选择登录页广告图",trigger:["change"]}],shop_name:[{required:!0,message:"请输入店铺/商城名称",trigger:["blur"]}],shop_logo:[{required:!0,message:"请选择商城LOGO",trigger:["change"]}],pc_logo:[{required:!0,message:"请选择PC端LOGO",trigger:["change"]}],pc_title:[{required:!0,message:"请输入PC端网站标题",trigger:["blur"]}],pc_ico:[{required:!0,message:"请选择PC端网站图标",trigger:["change"]}]},g=async()=>{const n=await N();for(const e in l)l[e]=n[e]},w=async()=>{var n;await((n=u.value)==null?void 0:n.validate()),await S(l),b.getConfig(),g()};return g(),(n,e)=>{const m=y,a=O,d=I,p=k,V=M,c=L,x=q,j=C("perms");return _(),U("div",F,[o(V,{ref_key:"formRef",ref:u,rules:v,class:"ls-form",model:t(l),"label-width":"120px","scroll-to-error":""},{default:s(()=>[o(p,{shadow:"never",class:"!border-none"},{default:s(()=>[e[15]||(e[15]=i("div",{class:"text-xl font-medium mb-[20px]"},"后台设置",-1)),o(a,{label:"网站名称",prop:"name"},{default:s(()=>[i("div",R,[o(m,{modelValue:t(l).name,"onUpdate:modelValue":e[0]||(e[0]=r=>t(l).name=r),modelModifiers:{trim:!0},placeholder:"请输入网站名称",maxlength:"30","show-word-limit":""},null,8,["modelValue"])])]),_:1}),o(a,{label:"网站图标",prop:"web_favicon",required:""},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).web_favicon,"onUpdate:modelValue":e[1]||(e[1]=r=>t(l).web_favicon=r),limit:1},null,8,["modelValue"]),e[12]||(e[12]=i("div",{class:"form-tips"},"建议尺寸:100*100像素,支持jpg,jpeg,png格式",-1))])]),_:1}),o(a,{label:"网站LOGO",prop:"web_logo",required:""},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).web_logo,"onUpdate:modelValue":e[2]||(e[2]=r=>t(l).web_logo=r),modelModifiers:{trim:!0},limit:1},null,8,["modelValue"]),e[13]||(e[13]=i("div",{class:"form-tips"},"建议尺寸:100*100像素,支持jpg,jpeg,png格式",-1))])]),_:1}),o(a,{label:"登录页广告图",prop:"login_image",required:""},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).login_image,"onUpdate:modelValue":e[3]||(e[3]=r=>t(l).login_image=r),modelModifiers:{trim:!0},limit:1},null,8,["modelValue"]),e[14]||(e[14]=i("div",{class:"form-tips"},"建议尺寸:100*100像素,支持jpg,jpeg,png格式",-1))])]),_:1})]),_:1}),o(p,{shadow:"never",class:"!border-none mt-4"},{default:s(()=>[e[18]||(e[18]=i("div",{class:"text-xl font-medium mb-[20px]"},"前台设置",-1)),o(a,{label:"前台名称",prop:"shop_name"},{default:s(()=>[i("div",A,[o(m,{modelValue:t(l).shop_name,"onUpdate:modelValue":e[4]||(e[4]=r=>t(l).shop_name=r),modelModifiers:{trim:!0},placeholder:"请输入前台名称",maxlength:"30","show-word-limit":""},null,8,["modelValue"])])]),_:1}),o(a,{label:"网站图标",prop:"web_favicon",required:""},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).h5_favicon,"onUpdate:modelValue":e[5]||(e[5]=r=>t(l).h5_favicon=r),limit:1},null,8,["modelValue"]),e[16]||(e[16]=i("div",{class:"form-tips"},"建议尺寸:100*100像素,支持jpg,jpeg,png格式",-1))])]),_:1}),o(a,{label:"前台LOGO",prop:"shop_logo"},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).shop_logo,"onUpdate:modelValue":e[6]||(e[6]=r=>t(l).shop_logo=r),limit:1},null,8,["modelValue"]),e[17]||(e[17]=i("div",{class:"form-tips"},"建议尺寸:100*100px,支持jpg,jpeg,png格式",-1))])]),_:1})]),_:1}),o(p,{shadow:"never",class:"!border-none mt-4"},{default:s(()=>[e[21]||(e[21]=i("div",{class:"text-xl font-medium mb-[20px]"},"PC端设置",-1)),o(a,{label:"PC端LOGO",prop:"pc_logo"},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).pc_logo,"onUpdate:modelValue":e[7]||(e[7]=r=>t(l).pc_logo=r),limit:1},null,8,["modelValue"]),e[19]||(e[19]=i("div",{class:"form-tips"},"建议尺寸:120*28px,支持jpg,jpeg,png格式",-1))])]),_:1}),o(a,{label:"网站标题",prop:"pc_title"},{default:s(()=>[i("div",K,[o(m,{modelValue:t(l).pc_title,"onUpdate:modelValue":e[8]||(e[8]=r=>t(l).pc_title=r),modelModifiers:{trim:!0},placeholder:"请输入PC端网站标题",maxlength:"30","show-word-limit":""},null,8,["modelValue"])])]),_:1}),o(a,{label:"网站图标",prop:"pc_ico"},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).pc_ico,"onUpdate:modelValue":e[9]||(e[9]=r=>t(l).pc_ico=r),limit:1},null,8,["modelValue"]),e[20]||(e[20]=i("div",{class:"form-tips"},"建议尺寸:100*100像素,支持jpg,jpeg,png格式",-1))])]),_:1}),o(a,{label:"网站描述",prop:"pc_desc"},{default:s(()=>[i("div",T,[o(m,{modelValue:t(l).pc_desc,"onUpdate:modelValue":e[10]||(e[10]=r=>t(l).pc_desc=r),modelModifiers:{trim:!0},placeholder:"请输入PC端网站描述"},null,8,["modelValue"])])]),_:1}),o(a,{label:"网站关键词",prop:"pc_keywords"},{default:s(()=>[i("div",z,[o(m,{modelValue:t(l).pc_keywords,"onUpdate:modelValue":e[11]||(e[11]=r=>t(l).pc_keywords=r),modelModifiers:{trim:!0},placeholder:"请输入PC端网站关键词"},null,8,["modelValue"])])]),_:1})]),_:1})]),_:1},8,["model"]),P((_(),E(x,null,{default:s(()=>[o(c,{type:"primary",onClick:w},{default:s(()=>[...e[22]||(e[22]=[B("保存",-1)])]),_:1})]),_:1})),[[j,["setting.web.web_setting/setWebsite"]]])])}}});export{ae as default};
+import{_ as q}from"./index-A_TCbB3t.js";import{o as f,be as C,q as _,r as U,v as o,D as s,bg as k,s as i,b6 as O,b7 as y,u as t,b9 as M,ac as P,O as E,K as L,L as B,M as D,ba as G}from"./.pnpm-Dwh6tNxD.js";import{_ as I}from"./picker-DnJfa6L1.js";import{a as N,b as S}from"./website-DrOlwtWM.js";import{e as W}from"./index-B6PfZ7nj.js";import"./index-IUalmyB9.js";import"./index-DWSqwKES.js";import"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import"./index-BD5KfpL_.js";import"./index-DHHP-bSQ.js";import"./file-dB19Jn7n.js";import"./index.vue_vue_type_script_setup_true_lang-Cxx3Fcm2.js";import"./usePaging-DOuAwzL9.js";const F={class:"website-information"},R={class:"w-80"},A={class:"w-80"},K={class:"w-80"},T={class:"w-80"},z={class:"w-80"},H=f({name:"webInformation"}),ae=f({...H,setup(J){const u=D(),b=W(),l=G({name:"",web_favicon:"",web_logo:"",login_image:"",h5_favicon:"",shop_name:"",shop_logo:"",pc_logo:"",pc_title:"",pc_desc:"",pc_ico:"",pc_keywords:""}),v={name:[{required:!0,message:"请输入网站名称",trigger:["blur"]}],web_favicon:[{required:!0,message:"请选择网站图标",trigger:["change"]}],web_logo:[{required:!0,message:"请选择网站logo",trigger:["change"]}],login_image:[{required:!0,message:"请选择登录页广告图",trigger:["change"]}],shop_name:[{required:!0,message:"请输入店铺/商城名称",trigger:["blur"]}],shop_logo:[{required:!0,message:"请选择商城LOGO",trigger:["change"]}],pc_logo:[{required:!0,message:"请选择PC端LOGO",trigger:["change"]}],pc_title:[{required:!0,message:"请输入PC端网站标题",trigger:["blur"]}],pc_ico:[{required:!0,message:"请选择PC端网站图标",trigger:["change"]}]},g=async()=>{const n=await N();for(const e in l)l[e]=n[e]},w=async()=>{var n;await((n=u.value)==null?void 0:n.validate()),await S(l),b.getConfig(),g()};return g(),(n,e)=>{const m=y,a=O,d=I,p=k,V=M,c=L,x=q,j=C("perms");return _(),U("div",F,[o(V,{ref_key:"formRef",ref:u,rules:v,class:"ls-form",model:t(l),"label-width":"120px","scroll-to-error":""},{default:s(()=>[o(p,{shadow:"never",class:"!border-none"},{default:s(()=>[e[15]||(e[15]=i("div",{class:"text-xl font-medium mb-[20px]"},"后台设置",-1)),o(a,{label:"网站名称",prop:"name"},{default:s(()=>[i("div",R,[o(m,{modelValue:t(l).name,"onUpdate:modelValue":e[0]||(e[0]=r=>t(l).name=r),modelModifiers:{trim:!0},placeholder:"请输入网站名称",maxlength:"30","show-word-limit":""},null,8,["modelValue"])])]),_:1}),o(a,{label:"网站图标",prop:"web_favicon",required:""},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).web_favicon,"onUpdate:modelValue":e[1]||(e[1]=r=>t(l).web_favicon=r),limit:1},null,8,["modelValue"]),e[12]||(e[12]=i("div",{class:"form-tips"},"建议尺寸:100*100像素,支持jpg,jpeg,png格式",-1))])]),_:1}),o(a,{label:"网站LOGO",prop:"web_logo",required:""},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).web_logo,"onUpdate:modelValue":e[2]||(e[2]=r=>t(l).web_logo=r),modelModifiers:{trim:!0},limit:1},null,8,["modelValue"]),e[13]||(e[13]=i("div",{class:"form-tips"},"建议尺寸:100*100像素,支持jpg,jpeg,png格式",-1))])]),_:1}),o(a,{label:"登录页广告图",prop:"login_image",required:""},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).login_image,"onUpdate:modelValue":e[3]||(e[3]=r=>t(l).login_image=r),modelModifiers:{trim:!0},limit:1},null,8,["modelValue"]),e[14]||(e[14]=i("div",{class:"form-tips"},"建议尺寸:100*100像素,支持jpg,jpeg,png格式",-1))])]),_:1})]),_:1}),o(p,{shadow:"never",class:"!border-none mt-4"},{default:s(()=>[e[18]||(e[18]=i("div",{class:"text-xl font-medium mb-[20px]"},"前台设置",-1)),o(a,{label:"前台名称",prop:"shop_name"},{default:s(()=>[i("div",A,[o(m,{modelValue:t(l).shop_name,"onUpdate:modelValue":e[4]||(e[4]=r=>t(l).shop_name=r),modelModifiers:{trim:!0},placeholder:"请输入前台名称",maxlength:"30","show-word-limit":""},null,8,["modelValue"])])]),_:1}),o(a,{label:"网站图标",prop:"web_favicon",required:""},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).h5_favicon,"onUpdate:modelValue":e[5]||(e[5]=r=>t(l).h5_favicon=r),limit:1},null,8,["modelValue"]),e[16]||(e[16]=i("div",{class:"form-tips"},"建议尺寸:100*100像素,支持jpg,jpeg,png格式",-1))])]),_:1}),o(a,{label:"前台LOGO",prop:"shop_logo"},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).shop_logo,"onUpdate:modelValue":e[6]||(e[6]=r=>t(l).shop_logo=r),limit:1},null,8,["modelValue"]),e[17]||(e[17]=i("div",{class:"form-tips"},"建议尺寸:100*100px,支持jpg,jpeg,png格式",-1))])]),_:1})]),_:1}),o(p,{shadow:"never",class:"!border-none mt-4"},{default:s(()=>[e[21]||(e[21]=i("div",{class:"text-xl font-medium mb-[20px]"},"PC端设置",-1)),o(a,{label:"PC端LOGO",prop:"pc_logo"},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).pc_logo,"onUpdate:modelValue":e[7]||(e[7]=r=>t(l).pc_logo=r),limit:1},null,8,["modelValue"]),e[19]||(e[19]=i("div",{class:"form-tips"},"建议尺寸:120*28px,支持jpg,jpeg,png格式",-1))])]),_:1}),o(a,{label:"网站标题",prop:"pc_title"},{default:s(()=>[i("div",K,[o(m,{modelValue:t(l).pc_title,"onUpdate:modelValue":e[8]||(e[8]=r=>t(l).pc_title=r),modelModifiers:{trim:!0},placeholder:"请输入PC端网站标题",maxlength:"30","show-word-limit":""},null,8,["modelValue"])])]),_:1}),o(a,{label:"网站图标",prop:"pc_ico"},{default:s(()=>[i("div",null,[o(d,{modelValue:t(l).pc_ico,"onUpdate:modelValue":e[9]||(e[9]=r=>t(l).pc_ico=r),limit:1},null,8,["modelValue"]),e[20]||(e[20]=i("div",{class:"form-tips"},"建议尺寸:100*100像素,支持jpg,jpeg,png格式",-1))])]),_:1}),o(a,{label:"网站描述",prop:"pc_desc"},{default:s(()=>[i("div",T,[o(m,{modelValue:t(l).pc_desc,"onUpdate:modelValue":e[10]||(e[10]=r=>t(l).pc_desc=r),modelModifiers:{trim:!0},placeholder:"请输入PC端网站描述"},null,8,["modelValue"])])]),_:1}),o(a,{label:"网站关键词",prop:"pc_keywords"},{default:s(()=>[i("div",z,[o(m,{modelValue:t(l).pc_keywords,"onUpdate:modelValue":e[11]||(e[11]=r=>t(l).pc_keywords=r),modelModifiers:{trim:!0},placeholder:"请输入PC端网站关键词"},null,8,["modelValue"])])]),_:1})]),_:1})]),_:1},8,["model"]),P((_(),E(x,null,{default:s(()=>[o(c,{type:"primary",onClick:w},{default:s(()=>[...e[22]||(e[22]=[B("保存",-1)])]),_:1})]),_:1})),[[j,["setting.web.web_setting/setWebsite"]]])])}}});export{ae as default};
diff --git a/server/public/admin/assets/journal-D-irioYe.js b/server/public/admin/assets/journal-BpE896rY.js
similarity index 94%
rename from server/public/admin/assets/journal-D-irioYe.js
rename to server/public/admin/assets/journal-BpE896rY.js
index 268d1b301..6094e97e2 100644
--- a/server/public/admin/assets/journal-D-irioYe.js
+++ b/server/public/admin/assets/journal-BpE896rY.js
@@ -1 +1 @@
-import{o as C,ap as F,q as r,r as f,v as e,D as n,b9 as P,u as l,b6 as j,b7 as z,b8 as u,bm as N,F as $,G as M,O as v,bn as O,K as q,L as g,bg as G,ac as R,bi as S,s as V,bj as A,bk as H,C as J,M as y}from"./.pnpm-Dwh6tNxD.js";import{_ as Q}from"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import{_ as W}from"./index.vue_vue_type_script_setup_true_lang-CnxC4rS8.js";import{_ as X}from"./index.vue_vue_type_script_setup_true_lang-C9hPqHM6.js";import{E as w}from"./index-C0Q8AuuZ.js";import{u as Y}from"./usePaging-DOuAwzL9.js";import"./index-CfJcNX3X.js";const Z={class:"journal"},ee={class:"flex mt-4 justify-end"},le=C({name:"journal"}),de=C({...le,setup(ae){const o=y({admin_name:"",url:"",ip:"",type:"",start_time:"",end_time:""}),E=y([{label:"全部",value:""},{label:"get",value:"get"},{label:"post",value:"post"},{label:"put",value:"put"},{label:"delete",value:"delete"},{label:"option",value:"option"}]),{pager:m,getLists:_,resetParams:k,resetPage:i}=Y({fetchFun:w,params:o.value});return F(()=>{_()}),(te,a)=>{const d=z,p=j,x=O,T=N,K=X,c=q,U=W,h=P,b=G,s=H,I=A,L=Q,B=S;return r(),f("div",Z,[e(b,{class:"!border-none",shadow:"never"},{default:n(()=>[e(h,{class:"ls-form",model:l(o),inline:""},{default:n(()=>[e(p,{class:"w-[280px]",label:"管理员"},{default:n(()=>[e(d,{placeholder:"请输入",modelValue:l(o).admin_name,"onUpdate:modelValue":a[0]||(a[0]=t=>l(o).admin_name=t),clearable:"",onKeyup:u(l(i),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(p,{class:"w-[280px]",label:"访问方式"},{default:n(()=>[e(T,{modelValue:l(o).type,"onUpdate:modelValue":a[1]||(a[1]=t=>l(o).type=t),placeholder:"请选择"},{default:n(()=>[(r(!0),f($,null,M(l(E),(t,D)=>(r(),v(x,{key:D,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(p,{class:"w-[280px]",label:"来源IP"},{default:n(()=>[e(d,{placeholder:"请输入",modelValue:l(o).ip,"onUpdate:modelValue":a[2]||(a[2]=t=>l(o).ip=t),clearable:"",onKeyup:u(l(i),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(p,{label:"访问时间"},{default:n(()=>[e(K,{startTime:l(o).start_time,"onUpdate:startTime":a[3]||(a[3]=t=>l(o).start_time=t),endTime:l(o).end_time,"onUpdate:endTime":a[4]||(a[4]=t=>l(o).end_time=t)},null,8,["startTime","endTime"])]),_:1}),e(p,{class:"w-[280px]",label:"访问链接"},{default:n(()=>[e(d,{placeholder:"请输入",modelValue:l(o).url,"onUpdate:modelValue":a[5]||(a[5]=t=>l(o).url=t),clearable:"",onKeyup:u(l(i),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(p,null,{default:n(()=>[e(c,{type:"primary",onClick:l(i)},{default:n(()=>[...a[7]||(a[7]=[g("查询",-1)])]),_:1},8,["onClick"]),e(c,{onClick:l(k)},{default:n(()=>[...a[8]||(a[8]=[g("重置",-1)])]),_:1},8,["onClick"]),e(U,{class:"ml-2.5","fetch-fun":l(w),params:l(o),"page-size":l(m).size},null,8,["fetch-fun","params","page-size"])]),_:1})]),_:1},8,["model"])]),_:1}),R((r(),v(b,{class:"!border-none mt-4",shadow:"never"},{default:n(()=>[V("div",null,[e(I,{data:l(m).lists,size:"large"},{default:n(()=>[e(s,{label:"记录ID",prop:"id"}),e(s,{label:"操作",prop:"action","min-width":"120"}),e(s,{label:"管理员",prop:"admin_name","min-width":"120"}),e(s,{label:"管理员ID",prop:"admin_id","min-width":"120"}),e(s,{label:"访问链接",prop:"url","min-width":"160"}),e(s,{label:"访问方式",prop:"type"}),e(s,{label:"访问参数",prop:"params","min-width":"160"}),e(s,{label:"来源IP",prop:"ip","min-width":"160"}),e(s,{label:"日志时间",prop:"create_time","min-width":"180"})]),_:1},8,["data"])]),V("div",ee,[e(L,{modelValue:l(m),"onUpdate:modelValue":a[6]||(a[6]=t=>J(m)?m.value=t:null),onChange:l(_)},null,8,["modelValue","onChange"])])]),_:1})),[[B,l(m).loading]])])}}});export{de as default};
+import{o as C,ap as F,q as r,r as f,v as e,D as n,b9 as P,u as l,b6 as j,b7 as z,b8 as u,bm as N,F as $,G as M,O as v,bn as O,K as q,L as g,bg as G,ac as R,bi as S,s as V,bj as A,bk as H,C as J,M as y}from"./.pnpm-Dwh6tNxD.js";import{_ as Q}from"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import{_ as W}from"./index.vue_vue_type_script_setup_true_lang-DWX84I_7.js";import{_ as X}from"./index.vue_vue_type_script_setup_true_lang-C9hPqHM6.js";import{E as w}from"./index-B6PfZ7nj.js";import{u as Y}from"./usePaging-DOuAwzL9.js";import"./index-IUalmyB9.js";const Z={class:"journal"},ee={class:"flex mt-4 justify-end"},le=C({name:"journal"}),de=C({...le,setup(ae){const o=y({admin_name:"",url:"",ip:"",type:"",start_time:"",end_time:""}),E=y([{label:"全部",value:""},{label:"get",value:"get"},{label:"post",value:"post"},{label:"put",value:"put"},{label:"delete",value:"delete"},{label:"option",value:"option"}]),{pager:m,getLists:_,resetParams:k,resetPage:i}=Y({fetchFun:w,params:o.value});return F(()=>{_()}),(te,a)=>{const d=z,p=j,x=O,T=N,K=X,c=q,U=W,h=P,b=G,s=H,I=A,L=Q,B=S;return r(),f("div",Z,[e(b,{class:"!border-none",shadow:"never"},{default:n(()=>[e(h,{class:"ls-form",model:l(o),inline:""},{default:n(()=>[e(p,{class:"w-[280px]",label:"管理员"},{default:n(()=>[e(d,{placeholder:"请输入",modelValue:l(o).admin_name,"onUpdate:modelValue":a[0]||(a[0]=t=>l(o).admin_name=t),clearable:"",onKeyup:u(l(i),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(p,{class:"w-[280px]",label:"访问方式"},{default:n(()=>[e(T,{modelValue:l(o).type,"onUpdate:modelValue":a[1]||(a[1]=t=>l(o).type=t),placeholder:"请选择"},{default:n(()=>[(r(!0),f($,null,M(l(E),(t,D)=>(r(),v(x,{key:D,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(p,{class:"w-[280px]",label:"来源IP"},{default:n(()=>[e(d,{placeholder:"请输入",modelValue:l(o).ip,"onUpdate:modelValue":a[2]||(a[2]=t=>l(o).ip=t),clearable:"",onKeyup:u(l(i),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(p,{label:"访问时间"},{default:n(()=>[e(K,{startTime:l(o).start_time,"onUpdate:startTime":a[3]||(a[3]=t=>l(o).start_time=t),endTime:l(o).end_time,"onUpdate:endTime":a[4]||(a[4]=t=>l(o).end_time=t)},null,8,["startTime","endTime"])]),_:1}),e(p,{class:"w-[280px]",label:"访问链接"},{default:n(()=>[e(d,{placeholder:"请输入",modelValue:l(o).url,"onUpdate:modelValue":a[5]||(a[5]=t=>l(o).url=t),clearable:"",onKeyup:u(l(i),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(p,null,{default:n(()=>[e(c,{type:"primary",onClick:l(i)},{default:n(()=>[...a[7]||(a[7]=[g("查询",-1)])]),_:1},8,["onClick"]),e(c,{onClick:l(k)},{default:n(()=>[...a[8]||(a[8]=[g("重置",-1)])]),_:1},8,["onClick"]),e(U,{class:"ml-2.5","fetch-fun":l(w),params:l(o),"page-size":l(m).size},null,8,["fetch-fun","params","page-size"])]),_:1})]),_:1},8,["model"])]),_:1}),R((r(),v(b,{class:"!border-none mt-4",shadow:"never"},{default:n(()=>[V("div",null,[e(I,{data:l(m).lists,size:"large"},{default:n(()=>[e(s,{label:"记录ID",prop:"id"}),e(s,{label:"操作",prop:"action","min-width":"120"}),e(s,{label:"管理员",prop:"admin_name","min-width":"120"}),e(s,{label:"管理员ID",prop:"admin_id","min-width":"120"}),e(s,{label:"访问链接",prop:"url","min-width":"160"}),e(s,{label:"访问方式",prop:"type"}),e(s,{label:"访问参数",prop:"params","min-width":"160"}),e(s,{label:"来源IP",prop:"ip","min-width":"160"}),e(s,{label:"日志时间",prop:"create_time","min-width":"180"})]),_:1},8,["data"])]),V("div",ee,[e(L,{modelValue:l(m),"onUpdate:modelValue":a[6]||(a[6]=t=>J(m)?m.value=t:null),onChange:l(_)},null,8,["modelValue","onChange"])])]),_:1})),[[B,l(m).loading]])])}}});export{de as default};
diff --git a/server/public/admin/assets/keyword_reply-Byu2SpON.js b/server/public/admin/assets/keyword_reply-Dncnjoks.js
similarity index 91%
rename from server/public/admin/assets/keyword_reply-Byu2SpON.js
rename to server/public/admin/assets/keyword_reply-Dncnjoks.js
index d86f76830..e5bbb4935 100644
--- a/server/public/admin/assets/keyword_reply-Byu2SpON.js
+++ b/server/public/admin/assets/keyword_reply-Dncnjoks.js
@@ -1 +1 @@
-import{o as L,q as f,r as N,v as t,D as l,bh as O,bg as P,s as g,K as U,L as d,ac as j,O as v,bj as A,u as o,bk as M,T as h,I as q,bi as z,C as F,P as I,a8 as K,M as G,p as w,n as b}from"./.pnpm-Dwh6tNxD.js";import{_ as H}from"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import{c as J,i as Q}from"./index-C0Q8AuuZ.js";import{d as W,o as X,e as Y}from"./wx_oa-BSpTe72K.js";import{u as Z}from"./usePaging-DOuAwzL9.js";import{_ as ee}from"./edit.vue_vue_type_script_setup_true_lang-BmjxVCdX.js";import"./index-CfJcNX3X.js";const te={class:"flex justify-end mt-4"},ce=L({__name:"keyword_reply",setup(ae){const c=K(),u=G(!1),k=w(()=>n=>{switch(n){case 1:return"全匹配";case 2:return"模糊匹配"}}),C=w(()=>n=>{switch(n){case 1:return"文本"}}),{pager:r,getLists:i}=Z({fetchFun:W,params:{reply_type:2}}),V=async()=>{var n;u.value=!0,await b(),(n=c.value)==null||n.open("add",2)},E=async n=>{var e,m;u.value=!0,await b(),(e=c.value)==null||e.open("edit",2),(m=c.value)==null||m.getDetail(n)},$=async n=>{await Q.confirm("确定要删除?"),await X({id:n}),i()},x=async n=>{try{await Y({id:n}),i()}catch{i()}};return i(),(n,e)=>{const m=O,y=P,R=J,_=U,s=M,T=q,D=A,S=H,B=z;return f(),N("div",null,[t(y,{class:"!border-none",shadow:"never"},{default:l(()=>[t(m,{type:"warning",title:"温馨提示:1.粉丝在公众号发送内容时,通过关键词可触发关键词回复;2.同时可启用多个关键词回复,有多条关键词匹配时优选选择排序靠前的一条",closable:!1,"show-icon":""})]),_:1}),t(y,{class:"!border-none mt-4",shadow:"never"},{default:l(()=>[g("div",null,[t(_,{class:"mb-4",type:"primary",onClick:e[0]||(e[0]=a=>V())},{icon:l(()=>[t(R,{name:"el-icon-Plus"})]),default:l(()=>[e[3]||(e[3]=d(" 新增 ",-1))]),_:1})]),j((f(),v(D,{size:"large",data:o(r).lists},{default:l(()=>[t(s,{label:"规则名称",prop:"name","min-width":"120"}),t(s,{label:"关键词",prop:"keyword","min-width":"120"}),t(s,{label:"匹配方式","min-width":"120"},{default:l(({row:a})=>[d(h(o(k)(a.matching_type)),1)]),_:1}),t(s,{label:"回复类型","min-width":"120"},{default:l(({row:a})=>[d(h(o(C)(a.content_type)),1)]),_:1}),t(s,{label:"状态","min-width":"120"},{default:l(({row:a})=>[t(T,{modelValue:a.status,"onUpdate:modelValue":p=>a.status=p,"active-value":1,"inactive-value":0,onChange:p=>x(a.id)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),t(s,{label:"排序",prop:"sort","min-width":"120"}),t(s,{label:"操作",width:"120",fixed:"right"},{default:l(({row:a})=>[t(_,{type:"primary",link:"",onClick:p=>E(a)},{default:l(()=>[...e[4]||(e[4]=[d(" 编辑 ",-1)])]),_:1},8,["onClick"]),t(_,{type:"danger",link:"",onClick:p=>$(a.id)},{default:l(()=>[...e[5]||(e[5]=[d(" 删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[B,o(r).loading]]),g("div",te,[t(S,{modelValue:o(r),"onUpdate:modelValue":e[1]||(e[1]=a=>F(r)?r.value=a:null),onChange:o(i)},null,8,["modelValue","onChange"])])]),_:1}),o(u)?(f(),v(ee,{key:0,ref_key:"editRef",ref:c,onSuccess:o(i),onClose:e[2]||(e[2]=a=>u.value=!1)},null,8,["onSuccess"])):I("",!0)])}}});export{ce as default};
+import{o as L,q as f,r as N,v as t,D as l,bh as O,bg as P,s as g,K as U,L as d,ac as j,O as v,bj as A,u as o,bk as M,T as h,I as q,bi as z,C as F,P as I,a8 as K,M as G,p as w,n as b}from"./.pnpm-Dwh6tNxD.js";import{_ as H}from"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import{c as J,i as Q}from"./index-B6PfZ7nj.js";import{d as W,o as X,e as Y}from"./wx_oa-DOmQrF5o.js";import{u as Z}from"./usePaging-DOuAwzL9.js";import{_ as ee}from"./edit.vue_vue_type_script_setup_true_lang-BhiOwZ-T.js";import"./index-IUalmyB9.js";const te={class:"flex justify-end mt-4"},ce=L({__name:"keyword_reply",setup(ae){const c=K(),u=G(!1),k=w(()=>n=>{switch(n){case 1:return"全匹配";case 2:return"模糊匹配"}}),C=w(()=>n=>{switch(n){case 1:return"文本"}}),{pager:r,getLists:i}=Z({fetchFun:W,params:{reply_type:2}}),V=async()=>{var n;u.value=!0,await b(),(n=c.value)==null||n.open("add",2)},E=async n=>{var e,m;u.value=!0,await b(),(e=c.value)==null||e.open("edit",2),(m=c.value)==null||m.getDetail(n)},$=async n=>{await Q.confirm("确定要删除?"),await X({id:n}),i()},x=async n=>{try{await Y({id:n}),i()}catch{i()}};return i(),(n,e)=>{const m=O,y=P,R=J,_=U,s=M,T=q,D=A,S=H,B=z;return f(),N("div",null,[t(y,{class:"!border-none",shadow:"never"},{default:l(()=>[t(m,{type:"warning",title:"温馨提示:1.粉丝在公众号发送内容时,通过关键词可触发关键词回复;2.同时可启用多个关键词回复,有多条关键词匹配时优选选择排序靠前的一条",closable:!1,"show-icon":""})]),_:1}),t(y,{class:"!border-none mt-4",shadow:"never"},{default:l(()=>[g("div",null,[t(_,{class:"mb-4",type:"primary",onClick:e[0]||(e[0]=a=>V())},{icon:l(()=>[t(R,{name:"el-icon-Plus"})]),default:l(()=>[e[3]||(e[3]=d(" 新增 ",-1))]),_:1})]),j((f(),v(D,{size:"large",data:o(r).lists},{default:l(()=>[t(s,{label:"规则名称",prop:"name","min-width":"120"}),t(s,{label:"关键词",prop:"keyword","min-width":"120"}),t(s,{label:"匹配方式","min-width":"120"},{default:l(({row:a})=>[d(h(o(k)(a.matching_type)),1)]),_:1}),t(s,{label:"回复类型","min-width":"120"},{default:l(({row:a})=>[d(h(o(C)(a.content_type)),1)]),_:1}),t(s,{label:"状态","min-width":"120"},{default:l(({row:a})=>[t(T,{modelValue:a.status,"onUpdate:modelValue":p=>a.status=p,"active-value":1,"inactive-value":0,onChange:p=>x(a.id)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),t(s,{label:"排序",prop:"sort","min-width":"120"}),t(s,{label:"操作",width:"120",fixed:"right"},{default:l(({row:a})=>[t(_,{type:"primary",link:"",onClick:p=>E(a)},{default:l(()=>[...e[4]||(e[4]=[d(" 编辑 ",-1)])]),_:1},8,["onClick"]),t(_,{type:"danger",link:"",onClick:p=>$(a.id)},{default:l(()=>[...e[5]||(e[5]=[d(" 删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[B,o(r).loading]]),g("div",te,[t(S,{modelValue:o(r),"onUpdate:modelValue":e[1]||(e[1]=a=>F(r)?r.value=a:null),onChange:o(i)},null,8,["modelValue","onChange"])])]),_:1}),o(u)?(f(),v(ee,{key:0,ref_key:"editRef",ref:c,onSuccess:o(i),onClose:e[2]||(e[2]=a=>u.value=!1)},null,8,["onSuccess"])):I("",!0)])}}});export{ce as default};
diff --git a/server/public/admin/assets/link-BCHOD525.js b/server/public/admin/assets/link-BFWI_gQ9.js
similarity index 70%
rename from server/public/admin/assets/link-BCHOD525.js
rename to server/public/admin/assets/link-BFWI_gQ9.js
index b2f7203e7..174afa5b4 100644
--- a/server/public/admin/assets/link-BCHOD525.js
+++ b/server/public/admin/assets/link-BFWI_gQ9.js
@@ -1 +1 @@
-import{o as s,q as m,r as p,v as t,D as _,u as a,bg as u,ba as i}from"./.pnpm-Dwh6tNxD.js";import{_ as c}from"./picker-D3OnL1mV.js";import"./index-C0Q8AuuZ.js";import"./index-CfJcNX3X.js";import"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import"./article-B7li-XJN.js";import"./usePaging-DOuAwzL9.js";const h=s({__name:"link",setup(d){const e=i({value1:{}});return(f,o)=>{const n=c,r=u;return m(),p("div",null,[t(r,{header:"基础使用",shadow:"never",class:"!border-none"},{default:_(()=>[t(n,{modelValue:a(e).value1,"onUpdate:modelValue":o[0]||(o[0]=l=>a(e).value1=l)},null,8,["modelValue"])]),_:1})])}}});export{h as default};
+import{o as s,q as m,r as p,v as t,D as _,u as a,bg as u,ba as i}from"./.pnpm-Dwh6tNxD.js";import{_ as c}from"./picker-CPoSMZpH.js";import"./index-B6PfZ7nj.js";import"./index-IUalmyB9.js";import"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import"./article-CnqwS3Uz.js";import"./usePaging-DOuAwzL9.js";const h=s({__name:"link",setup(d){const e=i({value1:{}});return(f,o)=>{const n=c,r=u;return m(),p("div",null,[t(r,{header:"基础使用",shadow:"never",class:"!border-none"},{default:_(()=>[t(n,{modelValue:a(e).value1,"onUpdate:modelValue":o[0]||(o[0]=l=>a(e).value1=l)},null,8,["modelValue"])]),_:1})])}}});export{h as default};
diff --git a/server/public/admin/assets/list-DcwgbC_X.js b/server/public/admin/assets/list-CfvnqH6D.js
similarity index 93%
rename from server/public/admin/assets/list-DcwgbC_X.js
rename to server/public/admin/assets/list-CfvnqH6D.js
index d520b8b66..67c13f784 100644
--- a/server/public/admin/assets/list-DcwgbC_X.js
+++ b/server/public/admin/assets/list-CfvnqH6D.js
@@ -1,2 +1,2 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/edit-DtpVv_IC.js","assets/.pnpm-Dwh6tNxD.js","assets/.pnpm-B3v8nGpq.css","assets/tcm-WWBqr2Vo.js","assets/index-C0Q8AuuZ.js","assets/index-D2fz263J.css","assets/perm-B_zXG10L.js","assets/DailyMatrix-OBl7IlVj.js","assets/picker-2bpe8Dva.js","assets/index-CfJcNX3X.js","assets/index-B3imPWFk.css","assets/index-B-j4AceK.js","assets/index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js","assets/index-39SS-XKl.js","assets/index-D0f1Mn00.css","assets/index-4SRyrKER.js","assets/file-BUuEowhq.js","assets/index.vue_vue_type_script_setup_true_lang-Cxx3Fcm2.js","assets/usePaging-DOuAwzL9.js","assets/index-BYOmK9R5.css","assets/picker-XZbUgFct.css","assets/DiagnosisTodoList-DP_5xrZz.js","assets/DiagnosisTodoList-D0SBmTHG.css","assets/blood-thresholds-CJ1fqMjh.js","assets/DailyMatrix-DCZnxI8i.css","assets/CaseRecordList-n3NQoLCn.js","assets/CaseRecordList-Cl-c3q7S.css","assets/CallRecordPanel-D8BzARP3.js","assets/RecordingPlaybackBlock-BeEg3fMj.js","assets/RecordingVideoPlayer-xuuHPLFC.js","assets/RecordingVideoPlayer-4DegHAwm.css","assets/RecordingPlaybackBlock-B3KYFgvg.css","assets/CallRecordPanel-TsjZtTO8.css","assets/ImChatRecordPanel-DdtFx6Pz.js","assets/dayjs-Cbxn44tS.js","assets/im-business-message-parse-CVnz1EnV.js","assets/ImChatRecordPanel-aX8zpWRQ.css","assets/AssignLogPanel-BWQv40ee.js","assets/AssignLogPanel-DkQMoEkX.css","assets/AppointmentRecordPanel-CmKKoW16.js","assets/doctor-CTRg8la2.js","assets/AppointmentRecordPanel-DC22GDgn.css","assets/NoteTimeline-Dd4bO4Jk.js","assets/patient-SxYcZ8aN.js","assets/NoteTimeline-I2FSxX4s.css","assets/PatientOrderList-DubjJEri.js","assets/PrescriptionOrderDetailDrawer-DKaawwtX.js","assets/prescription-order-utils-B0fYlULc.js","assets/PrescriptionOrderDetailDrawer-DnrTcbh_.css","assets/PatientOrderList-D8-uh2iu.css","assets/index-BWq-Ie-e.js","assets/index-BYUFCj9H.js","assets/medicine-BOlGkY3u.js","assets/index-C_LxAEkS.css","assets/diabetes-discovery-display-B_wmGXQJ.js","assets/index-Lo-gKnHb.js","assets/index-AnyUcdTT.css","assets/index-DV5JwFnL.css","assets/edit-DOd7Lhrw.css","assets/TrackingNoteTimeline-B9T8pFso.css","assets/index-JGRsDzkG.js","assets/@tencentcloud/chat-BVcoXjFo.js","assets/@tencentcloud/chat-uikit-engine-DMWQjlY3.js","assets/tim-upload-plugin-DhGO84pK.js","assets/tim-profanity-filter-plugin-B2c46mgl.js","assets/@tencentcloud/call-engine-js-CipqHTHk.js","assets/rtc-detect-DyJ4vVvn.js","assets/index-CWwH04oR.css"])))=>i.map(i=>d[i]);
-import{o as ae,R as le,ap as ie,aq as ne,be as oe,q as m,r as k,v as a,D as i,s as e,Y as de,C as I,u as s,X as re,w as ue,cS as pe,L as u,O as v,bC as _e,P as f,de as me,d6 as yt,d7 as bt,at as ce,b7 as fe,b8 as ge,K as ve,$ as ye,ck as kt,Z as be,_ as ke,aw as Dt,ce as Ct,cx as De,bc as Ce,bb as Ve,bK as we,bt as Ee,ac as $,bj as Se,bk as Te,T as p,br as he,F as Pe,bE as $e,bH as it,bi as ze,bg as Ie,cl as xe,b5 as Re,cb as nt,al as ot,p as dt,ba as qe,M as g}from"./.pnpm-Dwh6tNxD.js";import{_ as Ae}from"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import{_ as Le}from"./index.vue_vue_type_script_setup_true_lang-C9hPqHM6.js";import{u as Ue}from"./usePaging-DOuAwzL9.js";import{a as Me,m as Ne,l as Vt}from"./doctor-CTRg8la2.js";import{d as Be}from"./department-CqN10tfY.js";import{X as Oe,V as Fe,a8 as We}from"./tcm-WWBqr2Vo.js";import{u as He,i as y,_ as Qe}from"./index-C0Q8AuuZ.js";import{a as Ye}from"./patient-SxYcZ8aN.js";import{h as je}from"./perm-B_zXG10L.js";import{i as Ke,f as Ge}from"./diabetes-discovery-display-B_wmGXQJ.js";import{g as Xe}from"./weapp-CdqJJPp-.js";const Ze={class:"appointment-list"},Je={class:"list-toolbar"},ts={class:"tab-label tab-priority"},es={class:"tab-label"},ss={class:"tab-label"},as={class:"tab-label"},ls={class:"tab-label"},is={class:"toolbar-actions"},ns={class:"filter-bar"},os={class:"filter-group"},ds={class:"filter-group"},rs={class:"filter-group"},us={class:"table-wrap"},ps={class:"patient-cell"},_s={class:"patient-info"},ms={class:"patient-name"},cs={class:"patient-phone"},fs={class:"patient-extra"},gs={class:"datetime-cell"},vs={class:"date-text"},ys={class:"time-text"},bs={class:"prescription-tags"},ks={class:"action-btns"},Ds={class:"flex justify-end py-4 px-4"},Cs={key:0,class:"detail-content"},Vs={class:"detail-section"},ws={class:"detail-section-title"},Es={class:"detail-grid"},Ss={class:"detail-item"},Ts={class:"detail-value"},hs={class:"detail-item"},Ps={class:"detail-item"},$s={class:"detail-value"},zs={class:"detail-item"},Is={class:"detail-value"},xs={class:"detail-item"},Rs={class:"detail-value"},qs={class:"detail-item"},As={class:"detail-value"},Ls={class:"detail-section"},Us={class:"detail-section-title"},Ms={class:"detail-grid"},Ns={class:"detail-item"},Bs={class:"detail-value"},Os={class:"detail-item"},Fs={class:"detail-value"},Ws={class:"detail-item"},Hs={class:"detail-value"},Qs={class:"detail-item"},Ys={class:"detail-value"},js={class:"detail-item"},Ks={class:"detail-value"},Gs={class:"detail-item"},Xs={class:"detail-value"},Zs={class:"detail-item"},Js={class:"detail-value"},ta={class:"detail-item"},ea={class:"detail-value"},sa={class:"detail-item"},aa={class:"detail-value"},la={class:"detail-item"},ia={class:"detail-value"},na={class:"detail-item"},oa={class:"detail-value"},da={class:"detail-item"},ra={class:"detail-value"},ua={class:"detail-item"},pa={class:"detail-value"},_a={class:"detail-item"},ma={class:"detail-value"},ca={class:"detail-item"},fa={class:"detail-value"},ga={class:"detail-item"},va={class:"detail-value"},ya={key:0,class:"detail-section"},ba={class:"detail-section-title"},ka={class:"detail-grid"},Da={key:0,class:"detail-item"},Ca={class:"detail-value"},Va={key:1,class:"detail-item"},wa={class:"detail-value"},Ea={key:2,class:"detail-item detail-item-full"},Sa={class:"detail-value"},Ta={key:3,class:"detail-item detail-item-full"},ha={class:"detail-value"},Pa={key:1,class:"detail-section"},$a={class:"detail-section-title"},za={class:"detail-grid"},Ia={key:0,class:"detail-item"},xa={class:"detail-value"},Ra={key:1,class:"detail-item"},qa={class:"detail-value"},Aa={key:2,class:"detail-item detail-item-full"},La={class:"detail-value"},Ua={key:3,class:"detail-item detail-item-full"},Ma={class:"detail-value"},Na={class:"detail-section"},Ba={class:"detail-remark"},Oa={class:"qrcode-content"},Fa={key:0,class:"qrcode-loading"},Wa={key:1,class:"qrcode-success"},Ha={class:"qrcode-image-wrap"},Qa=["src"],Ya={class:"qrcode-info"},ja={class:"qrcode-patient"},Ka={key:2,class:"qrcode-error"},Ga={class:"complete-dialog"},Xa=2e4,Za=ae({__name:"list",setup(Ja){const wt=nt(()=>ot(()=>import("./edit-DtpVv_IC.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59]))),Et=nt(()=>ot(()=>import("./index-BWq-Ie-e.js"),__vite__mapDeps([50,1,2,51,52,4,5,53,54,3,55,56,57]))),St=nt(()=>ot(()=>import("./index-JGRsDzkG.js"),__vite__mapDeps([60,1,2,16,4,5,43,3,35,34,61,62,63,64,65,66,67]))),rt=He(),Tt=dt(()=>rt.userInfo),ht=l=>!l||l.length<11?l:l.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"),Pt=dt(()=>{const l=Tt.value.role_id;return Array.isArray(l)?!l.includes(1)&&!l.includes(2):l!==1&&l!==2}),r=qe({patient_name:"",doctor_name:"",status:"",start_date:"",end_date:"",date_preset:"today",diagnosis_confirmed:"",assistant_dept_id:"",include_status_counts:0}),G=g([]),$t={value:"id",label:"name",children:"children"},O=g("1"),x=g(!1),S=g({1:0,2:0,3:0,4:0}),{pager:V,getLists:ut,resetPage:zt}=Ue({fetchFun:Me,params:r,firstLoading:!0});le(()=>[r.start_date,r.end_date],([l,t])=>{if(!r.date_preset)return;const o=new Date,c=C=>String(C).padStart(2,"0"),_=C=>`${C.getFullYear()}-${c(C.getMonth()+1)}-${c(C.getDate())}`,T=_(o),h=new Date(o);h.setDate(h.getDate()-1);const b=_(h),P=new Date(o);P.setDate(P.getDate()-2);const K=_(P),L=new Date(o);L.setDate(L.getDate()+1);const w=_(L),U=new Date(o);U.setDate(U.getDate()+2);const lt=_(U),M=r.date_preset,N=M==="yesterday"?b:M==="day_before"?K:M==="today"?T:M==="tomorrow"?w:lt;(l||"").split(" ")[0]!==N&&(r.date_preset="")});const It=l=>{l==="all"?r.status="":r.status=Number(l),zt()};let F=null;const D=async l=>{const t=(l==null?void 0:l.silent)===!0;r.include_status_counts=1;try{await ut({silent:t});const o=V.extend,c=o==null?void 0:o.status_count;if(c)for(const _ of[1,2,3,4]){const T=c[_]??c[String(_)];typeof T=="number"&&(S.value[_]=T)}}catch(o){if(!t)throw o}finally{r.include_status_counts=0}},xt=l=>{l==="customDate"?x.value=!0:l==="reset"&&Ut()},Rt=()=>{r.date_preset="",x.value=!1,V.page=1,D()},qt=()=>{V.page=1,D()},At=()=>{V.page=1,D()},Lt=l=>{const t=String(l||"");if(!t){r.date_preset="",r.start_date="",r.end_date="",D();return}const o=new Date,c=h=>String(h).padStart(2,"0");let _;t==="yesterday"?(_=new Date(o),_.setDate(_.getDate()-1)):t==="day_before"?(_=new Date(o),_.setDate(_.getDate()-2)):t==="today"?_=o:t==="tomorrow"?(_=new Date(o),_.setDate(_.getDate()+1)):(_=new Date(o),_.setDate(_.getDate()+2));const T=`${_.getFullYear()}-${c(_.getMonth()+1)}-${c(_.getDate())}`;r.date_preset=t,r.start_date=T,r.end_date=T,V.page=1,D()},pt=()=>{V.page=1,D()},Ut=()=>{O.value="1",r.patient_name="",r.doctor_name="",r.date_preset="today",r.diagnosis_confirmed="",r.assistant_dept_id="";const l=new Date,t=o=>String(o).padStart(2,"0");r.start_date=`${l.getFullYear()}-${t(l.getMonth()+1)}-${t(l.getDate())}`,r.end_date=r.start_date,r.status=1,V.page=1,D()},X=g(!1),d=g(null),Mt=g([]),Nt=g([]),Bt=g([]),Ot=g([]),W=(l,t)=>{if(!t)return"-";const o=l.find(c=>c.value===t);return o?o.name:t},Ft=l=>(Array.isArray(l)?l:typeof l=="string"?l.split(/[,,、]/):[]).map(o=>W(Ot.value,o.trim())).filter(Boolean).join("、")||"-",Z=g(),J=g(),_t=g(),Wt=["doctor.appointment/addDoctorNote"],R=g(!1),H=g(!1),q=g(""),tt=g(null),et=dt(()=>je(Wt)),A=g(!1),Q=g(!1),Y=g(""),j=g(null),Ht=(l,t)=>{switch(l){case"edit":ct(t);break;case"viewCase":Xt(t);break;case"complete":mt(t);break;case"chat":ft(t);break;case"qrcode":st(t);break;case"prescription":gt(t);break;case"cancel":Qt(t);break}},Qt=async l=>{try{await y.confirm("确定要取消该挂号吗?"),await Ne({id:l.id}),y.msgSuccess("取消成功"),D()}catch{}},mt=async l=>{if(tt.value=l,q.value="",et.value){R.value=!0;return}try{await y.confirm("是否添加医生备注?"),await Vt({id:l.id}),y.msgSuccess("操作成功"),D()}catch{}},Yt=async()=>{const l=tt.value;if(!(!(l!=null&&l.id)||H.value)){H.value=!0;try{const t=q.value.trim();await Vt({id:l.id});let o="";if(et.value&&t){const c=l.patient_id||l.diagnosis_id;if(c)try{await Ye({diagnosis_id:Number(c),content:t})}catch{o="问诊已完成,但备注未保存"}else o="问诊已完成,但该预约没有关联诊单,备注未保存"}o?y.msgWarning(o):y.msgSuccess("操作成功"),R.value=!1,q.value="",tt.value=null,D()}catch(t){y.msgError((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"操作失败")}finally{H.value=!1}}},ct=l=>{var t;if(!l.patient_id){y.msgWarning("该预约没有关联诊单信息");return}(t=Z.value)==null||t.open("edit",l.patient_id)},jt=l=>{ct(l)},ft=async l=>{var c;const t=Number(l.source_patient_id||0),o=Number(l.diagnosis_id||0);if(!t){y.msgWarning("患者信息不完整");return}if(!o){y.msgWarning("预约信息不完整,无法发起聊天");return}try{const _=await Oe({patient_id:t,diagnosis_id:o});console.log("获取聊天签名成功:",_),(c=_t.value)==null||c.open({patientId:t,patientName:l.patient_name,diagnosisId:o,signatureData:_})}catch(_){console.error("获取聊天签名失败:",_),y.msgError(_.message||"获取聊天签名失败")}},st=async l=>{if(!l.patient_id){y.msgWarning("患者信息不完整");return}j.value=l,A.value=!0,Q.value=!0,Y.value="";try{const t=await Xe();if(!(t!=null&&t.app_id)){y.msgError("小程序未配置,请先配置小程序信息"),A.value=!1;return}const o=rt.userInfo,c=await Fe({doctor_id:l.doctor_id||"",patient_id:l.patient_id,share_user_id:(o==null?void 0:o.id)||"",mini_program_path:"pages/login/login"});c!=null&&c.qrcode_url?Y.value=c.qrcode_url:y.msgError("二维码生成失败")}catch(t){console.error("生成小程序二维码失败:",t),y.msgError((t==null?void 0:t.msg)||"生成二维码失败,请重试")}finally{Q.value=!1}},Kt=()=>{var l,t;D(),(t=(l=Z.value)==null?void 0:l.refreshCaseList)==null||t.call(l)};function Gt(l){return(l==null?void 0:l.prescription_audit_status)===1&&Number(l==null?void 0:l.prescription_void_status)!==1?"查看":"开方"}const gt=l=>{var t;if(!l.diagnosis_id&&!l.patient_id){y.msgWarning("该预约缺少诊单信息,请先编辑患者");return}(t=J.value)==null||t.open(l)},Xt=async l=>{var t;if(!l.id){y.msgWarning("预约信息不完整");return}try{const o=await We({appointment_id:l.id});o!=null&&o.id?(t=J.value)==null||t.openById(o.id):y.msgWarning("该预约暂无病历记录,请先开方")}catch(o){y.msgError((o==null?void 0:o.msg)||"获取病历失败")}},Zt=()=>{j.value&&st(j.value)},at=new Date,vt=l=>String(l).padStart(2,"0");return r.start_date=`${at.getFullYear()}-${vt(at.getMonth()+1)}-${vt(at.getDate())}`,r.end_date=r.start_date,r.status=1,ie(async()=>{try{const l=await Be();G.value=Array.isArray(l)?l:[]}catch{G.value=[]}D(),F=setInterval(()=>{D({silent:!0})},Xa)}),ne(()=>{F!==null&&(clearInterval(F),F=null)}),(l,t)=>{const o=ue,c=_e,_=re,T=de,h=fe,b=ve,P=ke,K=be,L=ye,w=Ve,U=Ce,lt=we,M=Le,N=Ee,E=Te,C=he,Jt=Se,te=Ae,ee=Ie,z=oe("perms"),se=ze;return m(),k("div",Ze,[a(ee,{class:"list-card !border-none",shadow:"never"},{default:i(()=>[e("div",Je,[a(T,{modelValue:s(O),"onUpdate:modelValue":t[0]||(t[0]=n=>I(O)?O.value=n:null),onTabChange:It,class:"list-tabs"},{default:i(()=>[a(_,{name:"1"},{label:i(()=>[e("span",ts,[a(o,null,{default:i(()=>[a(s(pe))]),_:1}),t[20]||(t[20]=u("待接诊",-1)),s(S)[1]?(m(),v(c,{key:0,value:s(S)[1],class:"tab-badge tab-badge-success"},null,8,["value"])):f("",!0)])]),_:1}),a(_,{name:"all"},{label:i(()=>[e("span",es,[a(o,null,{default:i(()=>[a(s(me))]),_:1}),t[21]||(t[21]=u("全部",-1))])]),_:1}),a(_,{name:"4"},{label:i(()=>[e("span",ss,[a(o,null,{default:i(()=>[a(s(yt))]),_:1}),t[22]||(t[22]=u("已过号",-1)),s(S)[4]?(m(),v(c,{key:0,value:s(S)[4],class:"tab-badge tab-badge-danger"},null,8,["value"])):f("",!0)])]),_:1}),a(_,{name:"2"},{label:i(()=>[e("span",as,[a(o,null,{default:i(()=>[a(s(bt))]),_:1}),t[23]||(t[23]=u("已取消",-1)),s(S)[2]?(m(),v(c,{key:0,value:s(S)[2],class:"tab-badge tab-badge-info"},null,8,["value"])):f("",!0)])]),_:1}),a(_,{name:"3"},{label:i(()=>[e("span",ls,[a(o,null,{default:i(()=>[a(s(ce))]),_:1}),t[24]||(t[24]=u("已完成",-1)),s(S)[3]?(m(),v(c,{key:0,value:s(S)[3],class:"tab-badge tab-badge-primary"},null,8,["value"])):f("",!0)])]),_:1})]),_:1},8,["modelValue"]),e("div",is,[a(h,{modelValue:s(r).patient_name,"onUpdate:modelValue":t[1]||(t[1]=n=>s(r).patient_name=n),placeholder:"患者姓名",clearable:"",size:"small",class:"action-input",onKeyup:ge(pt,["enter"])},null,8,["modelValue"]),a(b,{type:"primary",size:"small",onClick:pt},{default:i(()=>[...t[25]||(t[25]=[u("查询",-1)])]),_:1}),a(L,{trigger:"click",onCommand:xt},{dropdown:i(()=>[a(K,null,{default:i(()=>[s(Pt)?(m(),v(P,{key:0,class:"dropdown-item-with-input",onClick:t[4]||(t[4]=Dt(()=>{},["stop"]))},{default:i(()=>[t[27]||(t[27]=e("span",{class:"dropdown-label"},"医生",-1)),a(h,{modelValue:s(r).doctor_name,"onUpdate:modelValue":t[2]||(t[2]=n=>s(r).doctor_name=n),placeholder:"医生",size:"small",class:"dropdown-input",onClick:t[3]||(t[3]=Dt(()=>{},["stop"]))},null,8,["modelValue"])]),_:1})):f("",!0),a(P,{command:"customDate",divided:""},{default:i(()=>[a(o,null,{default:i(()=>[a(s(Ct))]),_:1}),t[28]||(t[28]=u(" 自定义日期 ",-1))]),_:1}),a(P,{command:"reset"},{default:i(()=>[a(o,null,{default:i(()=>[a(s(De))]),_:1}),t[29]||(t[29]=u(" 重置 ",-1))]),_:1})]),_:1})]),default:i(()=>[a(b,{size:"small"},{default:i(()=>[t[26]||(t[26]=u("更多",-1)),a(o,{class:"el-icon--right"},{default:i(()=>[a(s(kt))]),_:1})]),_:1})]),_:1})])]),e("div",ns,[e("div",os,[t[36]||(t[36]=e("span",{class:"filter-label"},"日期",-1)),a(U,{modelValue:s(r).date_preset,"onUpdate:modelValue":t[5]||(t[5]=n=>s(r).date_preset=n),size:"small",onChange:Lt,class:"filter-radio"},{default:i(()=>[a(w,{value:"yesterday"},{default:i(()=>[...t[30]||(t[30]=[u("昨天挂号",-1)])]),_:1}),a(w,{value:"day_before"},{default:i(()=>[...t[31]||(t[31]=[u("前天挂号",-1)])]),_:1}),a(w,{value:"today"},{default:i(()=>[...t[32]||(t[32]=[u("当天挂号",-1)])]),_:1}),a(w,{value:"tomorrow"},{default:i(()=>[...t[33]||(t[33]=[u("明天挂号",-1)])]),_:1}),a(w,{value:"day_after"},{default:i(()=>[...t[34]||(t[34]=[u("后天挂号",-1)])]),_:1}),a(w,{value:""},{default:i(()=>[...t[35]||(t[35]=[u("不限",-1)])]),_:1})]),_:1},8,["modelValue"])]),e("div",ds,[t[40]||(t[40]=e("span",{class:"filter-label"},"确认诊单",-1)),a(U,{modelValue:s(r).diagnosis_confirmed,"onUpdate:modelValue":t[6]||(t[6]=n=>s(r).diagnosis_confirmed=n),size:"small",onChange:qt,class:"filter-radio"},{default:i(()=>[a(w,{value:""},{default:i(()=>[...t[37]||(t[37]=[u("全部",-1)])]),_:1}),a(w,{value:"1"},{default:i(()=>[...t[38]||(t[38]=[u("已确认",-1)])]),_:1}),a(w,{value:"0"},{default:i(()=>[...t[39]||(t[39]=[u("未确认",-1)])]),_:1})]),_:1},8,["modelValue"])]),e("div",rs,[t[41]||(t[41]=e("span",{class:"filter-label"},"部门",-1)),a(lt,{modelValue:s(r).assistant_dept_id,"onUpdate:modelValue":t[7]||(t[7]=n=>s(r).assistant_dept_id=n),data:s(G),class:"filter-dept-select",clearable:"",filterable:"","check-strictly":"","default-expand-all":!0,"node-key":"id",size:"small",props:$t,placeholder:"选父级含子级",onChange:At},null,8,["modelValue","data"])])]),a(N,{modelValue:s(x),"onUpdate:modelValue":t[11]||(t[11]=n=>I(x)?x.value=n:null),title:"自定义日期",width:"400px","append-to-body":"","close-on-click-modal":!0},{footer:i(()=>[a(b,{onClick:t[10]||(t[10]=n=>x.value=!1)},{default:i(()=>[...t[42]||(t[42]=[u("取消",-1)])]),_:1}),a(b,{type:"primary",onClick:Rt},{default:i(()=>[...t[43]||(t[43]=[u("确定",-1)])]),_:1})]),default:i(()=>[a(M,{startTime:s(r).start_date,"onUpdate:startTime":t[8]||(t[8]=n=>s(r).start_date=n),endTime:s(r).end_date,"onUpdate:endTime":t[9]||(t[9]=n=>s(r).end_date=n)},null,8,["startTime","endTime"])]),_:1},8,["modelValue"]),e("div",us,[$((m(),v(Jt,{data:s(V).lists,size:"default",class:"appointment-table"},{default:i(()=>[a(E,{label:"ID",prop:"id",width:"72",align:"center"}),a(E,{label:"患者信息","min-width":"140"},{default:i(({row:n})=>[e("div",ps,[e("div",_s,[e("div",ms,p(n.patient_name),1),e("div",cs,p(ht(n.patient_phone)),1),e("div",fs,p([n.gender===1?"男":n.gender===0?"女":"",n.age!=null?n.age+"岁":"",n.height!=null?n.height+"cm":"",n.weight!=null?n.weight+"kg":""].filter(Boolean).join(" ")||"-"),1)])])]),_:1}),a(E,{label:"医生",prop:"doctor_name",width:"90","show-overflow-tooltip":""}),a(E,{label:"预约时间","min-width":"120"},{default:i(({row:n})=>[e("div",gs,[e("div",vs,p(n.appointment_date),1),e("div",ys,p(n.appointment_time),1)])]),_:1}),a(E,{label:"助理",prop:"assistant_name",width:"100","show-overflow-tooltip":""},{default:i(({row:n})=>[u(p(n.assistant_name||"—"),1)]),_:1}),a(E,{label:"确认诊单",width:"90",align:"center"},{default:i(({row:n})=>[n.diagnosis_confirmed?(m(),v(C,{key:0,type:"success",size:"small",effect:"plain"},{default:i(()=>[...t[44]||(t[44]=[u("已确认",-1)])]),_:1})):(m(),v(C,{key:1,type:"warning",size:"small",effect:"plain"},{default:i(()=>[...t[45]||(t[45]=[u("未确认",-1)])]),_:1}))]),_:1}),a(E,{label:"开方",width:"120",align:"center"},{default:i(({row:n})=>[e("div",bs,[n.has_prescription?(m(),v(C,{key:0,type:"success",size:"small",effect:"plain"},{default:i(()=>[...t[46]||(t[46]=[u("已开方",-1)])]),_:1})):(m(),v(C,{key:1,type:"info",size:"small",effect:"plain"},{default:i(()=>[...t[47]||(t[47]=[u("未开方",-1)])]),_:1})),n.has_prescription&&n.prescription_is_system_auto===1?(m(),v(C,{key:2,type:"warning",size:"small",effect:"plain"},{default:i(()=>[...t[48]||(t[48]=[u(" 系统代开 ",-1)])]),_:1})):f("",!0)])]),_:1}),a(E,{label:"状态",width:"90",align:"center"},{default:i(({row:n})=>[a(C,{type:n.status===1?"success":n.status===2?"info":n.status===3?"primary":"danger",size:"small",effect:"light",round:""},{default:i(()=>[u(p(n.status_desc),1)]),_:2},1032,["type"])]),_:1}),a(E,{label:"备注",prop:"remark","min-width":"120","show-overflow-tooltip":""}),a(E,{label:"操作",width:"380",fixed:"right",align:"left"},{default:i(({row:n})=>[e("div",ks,[$((m(),v(b,{type:"primary",link:"",size:"small",onClick:B=>jt(n)},{default:i(()=>[...t[49]||(t[49]=[u(" 编辑患者 ",-1)])]),_:1},8,["onClick"])),[[z,["tcm.diagnosis/edit"]]]),n.status!==3?(m(),k(Pe,{key:0},[$((m(),v(b,{type:"warning",link:"",size:"small",onClick:B=>st(n),class:"action-qrcode"},{default:i(()=>[a(o,null,{default:i(()=>[a(s($e))]),_:1}),t[50]||(t[50]=u(" 视频二维码 ",-1))]),_:1},8,["onClick"])),[[z,["tcm.diagnosis/videoQr"]]]),$((m(),v(b,{type:"primary",link:"",size:"small",onClick:B=>ft(n)},{default:i(()=>[...t[51]||(t[51]=[u(" 通话 ",-1)])]),_:1},8,["onClick"])),[[z,["doctor.appointment/prescription"]]]),$((m(),v(b,{type:"success",link:"",size:"small",onClick:B=>mt(n)},{default:i(()=>[...t[52]||(t[52]=[u(" 完成 ",-1)])]),_:1},8,["onClick"])),[[z,["doctor.appointment/complete"]]])],64)):f("",!0),$((m(),v(b,{type:"primary",link:"",size:"small",onClick:B=>gt(n)},{default:i(()=>[u(p(Gt(n)),1)]),_:2},1032,["onClick"])),[[z,["tcm.diagnosis/kaifang"]]]),a(L,{trigger:"click",onCommand:B=>Ht(B,n),placement:"bottom-end"},{dropdown:i(()=>[a(K,null,{default:i(()=>[$((m(),v(P,{command:"viewCase"},{default:i(()=>[a(o,null,{default:i(()=>[a(s(it))]),_:1}),t[54]||(t[54]=u(" 病历 ",-1))]),_:1})),[[z,["tcm.diagnosis/kaifang"]]]),n.status===1?$((m(),v(P,{key:0,command:"cancel",divided:""},{default:i(()=>[a(o,null,{default:i(()=>[a(s(bt))]),_:1}),t[55]||(t[55]=e("span",{class:"text-danger"},"取消挂号",-1))]),_:1})),[[z,["doctor.appointment/cancel"]]]):f("",!0)]),_:2},1024)]),default:i(()=>[a(b,{type:"info",link:"",size:"small"},{default:i(()=>[t[53]||(t[53]=u(" 更多 ",-1)),a(o,{class:"el-icon--right"},{default:i(()=>[a(s(kt))]),_:1})]),_:1})]),_:2},1032,["onCommand"])])]),_:1})]),_:1},8,["data"])),[[se,s(V).loading]]),e("div",Ds,[a(te,{modelValue:s(V),"onUpdate:modelValue":t[12]||(t[12]=n=>I(V)?V.value=n:null),onChange:s(ut)},null,8,["modelValue","onChange"])])])]),_:1}),a(N,{modelValue:s(X),"onUpdate:modelValue":t[13]||(t[13]=n=>I(X)?X.value=n:null),title:"挂号详情",width:"720px",class:"detail-dialog","destroy-on-close":""},{default:i(()=>[s(d)?(m(),k("div",Cs,[e("div",Vs,[e("div",ws,[a(o,null,{default:i(()=>[a(s(Ct))]),_:1}),t[56]||(t[56]=u(" 预约信息 ",-1))]),e("div",Es,[e("div",Ss,[t[57]||(t[57]=e("span",{class:"detail-label"},"挂号ID",-1)),e("span",Ts,p(s(d).id),1)]),e("div",hs,[t[58]||(t[58]=e("span",{class:"detail-label"},"状态",-1)),a(C,{type:s(d).status===1?"success":s(d).status===2?"info":s(d).status===3?"primary":"danger",size:"small",effect:"light"},{default:i(()=>[u(p(s(d).status_desc),1)]),_:1},8,["type"])]),e("div",Ps,[t[59]||(t[59]=e("span",{class:"detail-label"},"医生",-1)),e("span",$s,p(s(d).doctor_name),1)]),e("div",zs,[t[60]||(t[60]=e("span",{class:"detail-label"},"预约时间",-1)),e("span",Is,p(s(d).appointment_date)+" "+p(s(d).appointment_time),1)]),e("div",xs,[t[61]||(t[61]=e("span",{class:"detail-label"},"时段",-1)),e("span",Rs,p(s(d).period==="morning"?"上午":"下午"),1)]),e("div",qs,[t[62]||(t[62]=e("span",{class:"detail-label"},"预约类型",-1)),e("span",As,p(s(d).appointment_type_desc),1)])])]),e("div",Ls,[e("div",Us,[a(o,null,{default:i(()=>[a(s(xe))]),_:1}),t[63]||(t[63]=u(" 患者信息 ",-1))]),e("div",Ms,[e("div",Ns,[t[64]||(t[64]=e("span",{class:"detail-label"},"姓名",-1)),e("span",Bs,p(s(d).patient_name||"-"),1)]),e("div",Os,[t[65]||(t[65]=e("span",{class:"detail-label"},"手机号",-1)),e("span",Fs,p(s(d).phone||s(d).patient_phone||"-"),1)]),e("div",Ws,[t[66]||(t[66]=e("span",{class:"detail-label"},"身份证号",-1)),e("span",Hs,p(s(d).id_card||"-"),1)]),e("div",Qs,[t[67]||(t[67]=e("span",{class:"detail-label"},"性别",-1)),e("span",Ys,p(s(d).gender===1?"男":s(d).gender===0?"女":"-"),1)]),e("div",js,[t[68]||(t[68]=e("span",{class:"detail-label"},"年龄",-1)),e("span",Ks,p(s(d).age!=null?s(d).age+"岁":"-"),1)]),e("div",Gs,[t[69]||(t[69]=e("span",{class:"detail-label"},"诊断日期",-1)),e("span",Xs,p(s(d).diagnosis_date||"-"),1)]),e("div",Zs,[t[70]||(t[70]=e("span",{class:"detail-label"},"婚姻状态",-1)),e("span",Js,p(s(d).marital_status===0?"未婚":s(d).marital_status===1?"已婚":s(d).marital_status===2?"离异":"-"),1)]),e("div",ta,[t[71]||(t[71]=e("span",{class:"detail-label"},"身高(cm)",-1)),e("span",ea,p(s(d).height??"-"),1)]),e("div",sa,[t[72]||(t[72]=e("span",{class:"detail-label"},"体重(kg)",-1)),e("span",aa,p(s(d).weight??"-"),1)]),e("div",la,[t[73]||(t[73]=e("span",{class:"detail-label"},"地区",-1)),e("span",ia,p(s(d).region||"-"),1)]),e("div",na,[t[74]||(t[74]=e("span",{class:"detail-label"},"收缩压(mmHg)",-1)),e("span",oa,p(s(d).systolic_pressure??"-"),1)]),e("div",da,[t[75]||(t[75]=e("span",{class:"detail-label"},"舒张压(mmHg)",-1)),e("span",ra,p(s(d).diastolic_pressure??"-"),1)]),e("div",ua,[t[76]||(t[76]=e("span",{class:"detail-label"},"空腹血糖(mmol/L)",-1)),e("span",pa,p(s(d).fasting_blood_sugar??"-"),1)]),e("div",_a,[t[77]||(t[77]=e("span",{class:"detail-label"},"诊断类型",-1)),e("span",ma,p(W(s(Mt),s(d).diagnosis_type)||"-"),1)]),e("div",ca,[t[78]||(t[78]=e("span",{class:"detail-label"},"证型",-1)),e("span",fa,p(W(s(Nt),s(d).syndrome_type)||"-"),1)]),e("div",ga,[t[79]||(t[79]=e("span",{class:"detail-label"},"糖尿病期数",-1)),e("span",va,p(W(s(Bt),s(d).diabetes_type)||"-"),1)])])]),s(d).symptoms||s(d).local_hospital_name||s(d).past_history&&s(d).past_history.length?(m(),k("div",ya,[e("div",ba,[a(o,null,{default:i(()=>[a(s(it))]),_:1}),t[80]||(t[80]=u(" 病史信息 ",-1))]),e("div",ka,[s(Ke)(s(d).diabetes_discovery_year)?(m(),k("div",Da,[t[81]||(t[81]=e("span",{class:"detail-label"},"发现糖尿病病史",-1)),e("span",Ca,p(s(Ge)(s(d).diabetes_discovery_year)),1)])):f("",!0),s(d).local_hospital_name?(m(),k("div",Va,[t[82]||(t[82]=e("span",{class:"detail-label"},"当地就诊医院",-1)),e("span",wa,p(s(d).local_hospital_name),1)])):f("",!0),s(d).symptoms?(m(),k("div",Ea,[t[83]||(t[83]=e("span",{class:"detail-label"},"症状补充",-1)),e("span",Sa,p(s(d).symptoms),1)])):f("",!0),s(d).past_history&&s(d).past_history.length?(m(),k("div",Ta,[t[84]||(t[84]=e("span",{class:"detail-label"},"既往史",-1)),e("span",ha,p(Ft(s(d).past_history)),1)])):f("",!0)])])):f("",!0),s(d).tongue_coating||s(d).pulse||s(d).treatment_principle||s(d).prescription?(m(),k("div",Pa,[e("div",$a,[a(o,null,{default:i(()=>[a(s(it))]),_:1}),t[85]||(t[85]=u(" 诊断信息 ",-1))]),e("div",za,[s(d).tongue_coating?(m(),k("div",Ia,[t[86]||(t[86]=e("span",{class:"detail-label"},"舌苔",-1)),e("span",xa,p(s(d).tongue_coating),1)])):f("",!0),s(d).pulse?(m(),k("div",Ra,[t[87]||(t[87]=e("span",{class:"detail-label"},"脉象",-1)),e("span",qa,p(s(d).pulse),1)])):f("",!0),s(d).treatment_principle?(m(),k("div",Aa,[t[88]||(t[88]=e("span",{class:"detail-label"},"治则",-1)),e("span",La,p(s(d).treatment_principle),1)])):f("",!0),s(d).prescription?(m(),k("div",Ua,[t[89]||(t[89]=e("span",{class:"detail-label"},"处方",-1)),e("span",Ma,p(s(d).prescription),1)])):f("",!0)])])):f("",!0),e("div",Na,[t[90]||(t[90]=e("div",{class:"detail-section-title"},"备注",-1)),e("p",Ba,p(s(d).remark||"无"),1)])])):f("",!0)]),_:1},8,["modelValue"]),a(s(wt),{ref_key:"editRef",ref:Z,onSuccess:t[14]||(t[14]=()=>D({silent:!0}))},null,512),a(s(Et),{ref_key:"prescriptionRef",ref:J,onSuccess:Kt},null,512),a(s(St),{ref_key:"chatDialogRef",ref:_t},null,512),a(N,{modelValue:s(A),"onUpdate:modelValue":t[16]||(t[16]=n=>I(A)?A.value=n:null),title:"小程序二维码",width:"380px","close-on-click-modal":!1,class:"qrcode-dialog"},{footer:i(()=>[a(b,{onClick:t[15]||(t[15]=n=>A.value=!1)},{default:i(()=>[...t[95]||(t[95]=[u("关闭",-1)])]),_:1}),s(Q)?f("",!0):(m(),v(b,{key:0,type:"primary",onClick:Zt},{default:i(()=>[...t[96]||(t[96]=[u(" 重新生成 ",-1)])]),_:1}))]),default:i(()=>{var n;return[e("div",Oa,[s(Q)?(m(),k("div",Fa,[a(o,{class:"is-loading",size:48},{default:i(()=>[a(s(Re))]),_:1}),t[91]||(t[91]=e("div",{class:"qrcode-loading-text"},"生成中...",-1))])):s(Y)?(m(),k("div",Wa,[e("div",Ha,[e("img",{src:s(Y),alt:"小程序二维码",class:"qrcode-image"},null,8,Qa)]),e("div",Ya,[e("div",ja,"患者:"+p((n=s(j))==null?void 0:n.patient_name),1),t[92]||(t[92]=e("div",{class:"qrcode-tip"},"请使用微信扫描二维码",-1)),t[93]||(t[93]=e("div",{class:"qrcode-path"},"pages/login/login",-1))])])):(m(),k("div",Ka,[a(o,{size:40},{default:i(()=>[a(s(yt))]),_:1}),t[94]||(t[94]=e("div",null,"生成失败,请重试",-1))]))])]}),_:1},8,["modelValue"]),a(N,{modelValue:s(R),"onUpdate:modelValue":t[19]||(t[19]=n=>I(R)?R.value=n:null),title:"完成问诊",width:"420px","append-to-body":"","close-on-click-modal":!1,"destroy-on-close":""},{footer:i(()=>[a(b,{onClick:t[18]||(t[18]=n=>R.value=!1)},{default:i(()=>[...t[98]||(t[98]=[u("取消",-1)])]),_:1}),a(b,{type:"primary",loading:s(H),onClick:Yt},{default:i(()=>[...t[99]||(t[99]=[u("确认完成",-1)])]),_:1},8,["loading"])]),default:i(()=>[e("div",Ga,[t[97]||(t[97]=e("p",{class:"complete-dialog-tip"},"是否添加医生备注?",-1)),s(et)?(m(),v(h,{key:0,modelValue:s(q),"onUpdate:modelValue":t[17]||(t[17]=n=>I(q)?q.value=n:null),type:"textarea",rows:4,maxlength:"500","show-word-limit":"",placeholder:"填写完成备注,将追加到医生备注时间轴"},null,8,["modelValue"])):f("",!0)])]),_:1},8,["modelValue"])])}}}),_l=Qe(Za,[["__scopeId","data-v-525f0117"]]);export{_l as default};
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/edit-7yAXrCs0.js","assets/.pnpm-Dwh6tNxD.js","assets/.pnpm-B3v8nGpq.css","assets/tcm-6fAzOljO.js","assets/index-B6PfZ7nj.js","assets/index-D2fz263J.css","assets/perm-D4QN0w4j.js","assets/DailyMatrix-CBWmklky.js","assets/picker-DnJfa6L1.js","assets/index-IUalmyB9.js","assets/index-B3imPWFk.css","assets/index-DWSqwKES.js","assets/index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js","assets/index-BD5KfpL_.js","assets/index-D0f1Mn00.css","assets/index-DHHP-bSQ.js","assets/file-dB19Jn7n.js","assets/index.vue_vue_type_script_setup_true_lang-Cxx3Fcm2.js","assets/usePaging-DOuAwzL9.js","assets/index-BYOmK9R5.css","assets/picker-XZbUgFct.css","assets/DiagnosisTodoList-B9l_di8T.js","assets/DiagnosisTodoList-D0SBmTHG.css","assets/blood-thresholds-CJ1fqMjh.js","assets/DailyMatrix-DCZnxI8i.css","assets/CaseRecordList-BqojP-Ic.js","assets/CaseRecordList-Cl-c3q7S.css","assets/CallRecordPanel-C47BrVhc.js","assets/RecordingPlaybackBlock-CShApbnW.js","assets/RecordingVideoPlayer-CYPs94hy.js","assets/RecordingVideoPlayer-4DegHAwm.css","assets/RecordingPlaybackBlock-B3KYFgvg.css","assets/CallRecordPanel-TsjZtTO8.css","assets/ImChatRecordPanel-B7A93R-e.js","assets/dayjs-Cbxn44tS.js","assets/im-business-message-parse-CVnz1EnV.js","assets/ImChatRecordPanel-aX8zpWRQ.css","assets/AssignLogPanel-muRUYEDj.js","assets/AssignLogPanel-DkQMoEkX.css","assets/AppointmentRecordPanel-qKhg66ZY.js","assets/doctor-CdQ6l6Nd.js","assets/AppointmentRecordPanel-DC22GDgn.css","assets/NoteTimeline-zuYmxPWs.js","assets/patient-DZqWRuZT.js","assets/NoteTimeline-I2FSxX4s.css","assets/PatientOrderList-BkZTghSw.js","assets/PrescriptionOrderDetailDrawer-Cushmzx-.js","assets/prescription-order-utils-B0fYlULc.js","assets/PrescriptionOrderDetailDrawer-DnrTcbh_.css","assets/PatientOrderList-D8-uh2iu.css","assets/index-Hv7I1l6n.js","assets/index-D7PA59Jd.js","assets/medicine-Mk8hvDsN.js","assets/index-C_LxAEkS.css","assets/diabetes-discovery-display-B_wmGXQJ.js","assets/index-BlTTijFU.js","assets/index-AnyUcdTT.css","assets/index-DV5JwFnL.css","assets/edit-DOd7Lhrw.css","assets/TrackingNoteTimeline-B9T8pFso.css","assets/index-C2vNG1vE.js","assets/@tencentcloud/chat-BVcoXjFo.js","assets/@tencentcloud/chat-uikit-engine-DMWQjlY3.js","assets/tim-upload-plugin-DhGO84pK.js","assets/tim-profanity-filter-plugin-B2c46mgl.js","assets/@tencentcloud/call-engine-js-CipqHTHk.js","assets/rtc-detect-DyJ4vVvn.js","assets/index-CWwH04oR.css"])))=>i.map(i=>d[i]);
+import{o as ae,R as le,ap as ie,aq as ne,be as oe,q as m,r as k,v as a,D as i,s as e,Y as de,C as I,u as s,X as re,w as ue,cS as pe,L as u,O as v,bC as _e,P as f,de as me,d6 as yt,d7 as bt,at as ce,b7 as fe,b8 as ge,K as ve,$ as ye,ck as kt,Z as be,_ as ke,aw as Dt,ce as Ct,cx as De,bc as Ce,bb as Ve,bK as we,bt as Ee,ac as $,bj as Se,bk as Te,T as p,br as he,F as Pe,bE as $e,bH as it,bi as ze,bg as Ie,cl as xe,b5 as Re,cb as nt,al as ot,p as dt,ba as qe,M as g}from"./.pnpm-Dwh6tNxD.js";import{_ as Ae}from"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import{_ as Le}from"./index.vue_vue_type_script_setup_true_lang-C9hPqHM6.js";import{u as Ue}from"./usePaging-DOuAwzL9.js";import{a as Me,m as Ne,l as Vt}from"./doctor-CdQ6l6Nd.js";import{d as Be}from"./department-CePhZ6vc.js";import{X as Oe,V as Fe,a8 as We}from"./tcm-6fAzOljO.js";import{u as He,i as y,_ as Qe}from"./index-B6PfZ7nj.js";import{a as Ye}from"./patient-DZqWRuZT.js";import{h as je}from"./perm-D4QN0w4j.js";import{i as Ke,f as Ge}from"./diabetes-discovery-display-B_wmGXQJ.js";import{g as Xe}from"./weapp-CWHrEa32.js";const Ze={class:"appointment-list"},Je={class:"list-toolbar"},ts={class:"tab-label tab-priority"},es={class:"tab-label"},ss={class:"tab-label"},as={class:"tab-label"},ls={class:"tab-label"},is={class:"toolbar-actions"},ns={class:"filter-bar"},os={class:"filter-group"},ds={class:"filter-group"},rs={class:"filter-group"},us={class:"table-wrap"},ps={class:"patient-cell"},_s={class:"patient-info"},ms={class:"patient-name"},cs={class:"patient-phone"},fs={class:"patient-extra"},gs={class:"datetime-cell"},vs={class:"date-text"},ys={class:"time-text"},bs={class:"prescription-tags"},ks={class:"action-btns"},Ds={class:"flex justify-end py-4 px-4"},Cs={key:0,class:"detail-content"},Vs={class:"detail-section"},ws={class:"detail-section-title"},Es={class:"detail-grid"},Ss={class:"detail-item"},Ts={class:"detail-value"},hs={class:"detail-item"},Ps={class:"detail-item"},$s={class:"detail-value"},zs={class:"detail-item"},Is={class:"detail-value"},xs={class:"detail-item"},Rs={class:"detail-value"},qs={class:"detail-item"},As={class:"detail-value"},Ls={class:"detail-section"},Us={class:"detail-section-title"},Ms={class:"detail-grid"},Ns={class:"detail-item"},Bs={class:"detail-value"},Os={class:"detail-item"},Fs={class:"detail-value"},Ws={class:"detail-item"},Hs={class:"detail-value"},Qs={class:"detail-item"},Ys={class:"detail-value"},js={class:"detail-item"},Ks={class:"detail-value"},Gs={class:"detail-item"},Xs={class:"detail-value"},Zs={class:"detail-item"},Js={class:"detail-value"},ta={class:"detail-item"},ea={class:"detail-value"},sa={class:"detail-item"},aa={class:"detail-value"},la={class:"detail-item"},ia={class:"detail-value"},na={class:"detail-item"},oa={class:"detail-value"},da={class:"detail-item"},ra={class:"detail-value"},ua={class:"detail-item"},pa={class:"detail-value"},_a={class:"detail-item"},ma={class:"detail-value"},ca={class:"detail-item"},fa={class:"detail-value"},ga={class:"detail-item"},va={class:"detail-value"},ya={key:0,class:"detail-section"},ba={class:"detail-section-title"},ka={class:"detail-grid"},Da={key:0,class:"detail-item"},Ca={class:"detail-value"},Va={key:1,class:"detail-item"},wa={class:"detail-value"},Ea={key:2,class:"detail-item detail-item-full"},Sa={class:"detail-value"},Ta={key:3,class:"detail-item detail-item-full"},ha={class:"detail-value"},Pa={key:1,class:"detail-section"},$a={class:"detail-section-title"},za={class:"detail-grid"},Ia={key:0,class:"detail-item"},xa={class:"detail-value"},Ra={key:1,class:"detail-item"},qa={class:"detail-value"},Aa={key:2,class:"detail-item detail-item-full"},La={class:"detail-value"},Ua={key:3,class:"detail-item detail-item-full"},Ma={class:"detail-value"},Na={class:"detail-section"},Ba={class:"detail-remark"},Oa={class:"qrcode-content"},Fa={key:0,class:"qrcode-loading"},Wa={key:1,class:"qrcode-success"},Ha={class:"qrcode-image-wrap"},Qa=["src"],Ya={class:"qrcode-info"},ja={class:"qrcode-patient"},Ka={key:2,class:"qrcode-error"},Ga={class:"complete-dialog"},Xa=2e4,Za=ae({__name:"list",setup(Ja){const wt=nt(()=>ot(()=>import("./edit-7yAXrCs0.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59]))),Et=nt(()=>ot(()=>import("./index-Hv7I1l6n.js"),__vite__mapDeps([50,1,2,51,52,4,5,53,54,3,55,56,57]))),St=nt(()=>ot(()=>import("./index-C2vNG1vE.js"),__vite__mapDeps([60,1,2,16,4,5,43,3,35,34,61,62,63,64,65,66,67]))),rt=He(),Tt=dt(()=>rt.userInfo),ht=l=>!l||l.length<11?l:l.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"),Pt=dt(()=>{const l=Tt.value.role_id;return Array.isArray(l)?!l.includes(1)&&!l.includes(2):l!==1&&l!==2}),r=qe({patient_name:"",doctor_name:"",status:"",start_date:"",end_date:"",date_preset:"today",diagnosis_confirmed:"",assistant_dept_id:"",include_status_counts:0}),G=g([]),$t={value:"id",label:"name",children:"children"},O=g("1"),x=g(!1),S=g({1:0,2:0,3:0,4:0}),{pager:V,getLists:ut,resetPage:zt}=Ue({fetchFun:Me,params:r,firstLoading:!0});le(()=>[r.start_date,r.end_date],([l,t])=>{if(!r.date_preset)return;const o=new Date,c=C=>String(C).padStart(2,"0"),_=C=>`${C.getFullYear()}-${c(C.getMonth()+1)}-${c(C.getDate())}`,T=_(o),h=new Date(o);h.setDate(h.getDate()-1);const b=_(h),P=new Date(o);P.setDate(P.getDate()-2);const K=_(P),L=new Date(o);L.setDate(L.getDate()+1);const w=_(L),U=new Date(o);U.setDate(U.getDate()+2);const lt=_(U),M=r.date_preset,N=M==="yesterday"?b:M==="day_before"?K:M==="today"?T:M==="tomorrow"?w:lt;(l||"").split(" ")[0]!==N&&(r.date_preset="")});const It=l=>{l==="all"?r.status="":r.status=Number(l),zt()};let F=null;const D=async l=>{const t=(l==null?void 0:l.silent)===!0;r.include_status_counts=1;try{await ut({silent:t});const o=V.extend,c=o==null?void 0:o.status_count;if(c)for(const _ of[1,2,3,4]){const T=c[_]??c[String(_)];typeof T=="number"&&(S.value[_]=T)}}catch(o){if(!t)throw o}finally{r.include_status_counts=0}},xt=l=>{l==="customDate"?x.value=!0:l==="reset"&&Ut()},Rt=()=>{r.date_preset="",x.value=!1,V.page=1,D()},qt=()=>{V.page=1,D()},At=()=>{V.page=1,D()},Lt=l=>{const t=String(l||"");if(!t){r.date_preset="",r.start_date="",r.end_date="",D();return}const o=new Date,c=h=>String(h).padStart(2,"0");let _;t==="yesterday"?(_=new Date(o),_.setDate(_.getDate()-1)):t==="day_before"?(_=new Date(o),_.setDate(_.getDate()-2)):t==="today"?_=o:t==="tomorrow"?(_=new Date(o),_.setDate(_.getDate()+1)):(_=new Date(o),_.setDate(_.getDate()+2));const T=`${_.getFullYear()}-${c(_.getMonth()+1)}-${c(_.getDate())}`;r.date_preset=t,r.start_date=T,r.end_date=T,V.page=1,D()},pt=()=>{V.page=1,D()},Ut=()=>{O.value="1",r.patient_name="",r.doctor_name="",r.date_preset="today",r.diagnosis_confirmed="",r.assistant_dept_id="";const l=new Date,t=o=>String(o).padStart(2,"0");r.start_date=`${l.getFullYear()}-${t(l.getMonth()+1)}-${t(l.getDate())}`,r.end_date=r.start_date,r.status=1,V.page=1,D()},X=g(!1),d=g(null),Mt=g([]),Nt=g([]),Bt=g([]),Ot=g([]),W=(l,t)=>{if(!t)return"-";const o=l.find(c=>c.value===t);return o?o.name:t},Ft=l=>(Array.isArray(l)?l:typeof l=="string"?l.split(/[,,、]/):[]).map(o=>W(Ot.value,o.trim())).filter(Boolean).join("、")||"-",Z=g(),J=g(),_t=g(),Wt=["doctor.appointment/addDoctorNote"],R=g(!1),H=g(!1),q=g(""),tt=g(null),et=dt(()=>je(Wt)),A=g(!1),Q=g(!1),Y=g(""),j=g(null),Ht=(l,t)=>{switch(l){case"edit":ct(t);break;case"viewCase":Xt(t);break;case"complete":mt(t);break;case"chat":ft(t);break;case"qrcode":st(t);break;case"prescription":gt(t);break;case"cancel":Qt(t);break}},Qt=async l=>{try{await y.confirm("确定要取消该挂号吗?"),await Ne({id:l.id}),y.msgSuccess("取消成功"),D()}catch{}},mt=async l=>{if(tt.value=l,q.value="",et.value){R.value=!0;return}try{await y.confirm("是否添加医生备注?"),await Vt({id:l.id}),y.msgSuccess("操作成功"),D()}catch{}},Yt=async()=>{const l=tt.value;if(!(!(l!=null&&l.id)||H.value)){H.value=!0;try{const t=q.value.trim();await Vt({id:l.id});let o="";if(et.value&&t){const c=l.patient_id||l.diagnosis_id;if(c)try{await Ye({diagnosis_id:Number(c),content:t})}catch{o="问诊已完成,但备注未保存"}else o="问诊已完成,但该预约没有关联诊单,备注未保存"}o?y.msgWarning(o):y.msgSuccess("操作成功"),R.value=!1,q.value="",tt.value=null,D()}catch(t){y.msgError((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"操作失败")}finally{H.value=!1}}},ct=l=>{var t;if(!l.patient_id){y.msgWarning("该预约没有关联诊单信息");return}(t=Z.value)==null||t.open("edit",l.patient_id)},jt=l=>{ct(l)},ft=async l=>{var c;const t=Number(l.source_patient_id||0),o=Number(l.diagnosis_id||0);if(!t){y.msgWarning("患者信息不完整");return}if(!o){y.msgWarning("预约信息不完整,无法发起聊天");return}try{const _=await Oe({patient_id:t,diagnosis_id:o});console.log("获取聊天签名成功:",_),(c=_t.value)==null||c.open({patientId:t,patientName:l.patient_name,diagnosisId:o,signatureData:_})}catch(_){console.error("获取聊天签名失败:",_),y.msgError(_.message||"获取聊天签名失败")}},st=async l=>{if(!l.patient_id){y.msgWarning("患者信息不完整");return}j.value=l,A.value=!0,Q.value=!0,Y.value="";try{const t=await Xe();if(!(t!=null&&t.app_id)){y.msgError("小程序未配置,请先配置小程序信息"),A.value=!1;return}const o=rt.userInfo,c=await Fe({doctor_id:l.doctor_id||"",patient_id:l.patient_id,share_user_id:(o==null?void 0:o.id)||"",mini_program_path:"pages/login/login"});c!=null&&c.qrcode_url?Y.value=c.qrcode_url:y.msgError("二维码生成失败")}catch(t){console.error("生成小程序二维码失败:",t),y.msgError((t==null?void 0:t.msg)||"生成二维码失败,请重试")}finally{Q.value=!1}},Kt=()=>{var l,t;D(),(t=(l=Z.value)==null?void 0:l.refreshCaseList)==null||t.call(l)};function Gt(l){return(l==null?void 0:l.prescription_audit_status)===1&&Number(l==null?void 0:l.prescription_void_status)!==1?"查看":"开方"}const gt=l=>{var t;if(!l.diagnosis_id&&!l.patient_id){y.msgWarning("该预约缺少诊单信息,请先编辑患者");return}(t=J.value)==null||t.open(l)},Xt=async l=>{var t;if(!l.id){y.msgWarning("预约信息不完整");return}try{const o=await We({appointment_id:l.id});o!=null&&o.id?(t=J.value)==null||t.openById(o.id):y.msgWarning("该预约暂无病历记录,请先开方")}catch(o){y.msgError((o==null?void 0:o.msg)||"获取病历失败")}},Zt=()=>{j.value&&st(j.value)},at=new Date,vt=l=>String(l).padStart(2,"0");return r.start_date=`${at.getFullYear()}-${vt(at.getMonth()+1)}-${vt(at.getDate())}`,r.end_date=r.start_date,r.status=1,ie(async()=>{try{const l=await Be();G.value=Array.isArray(l)?l:[]}catch{G.value=[]}D(),F=setInterval(()=>{D({silent:!0})},Xa)}),ne(()=>{F!==null&&(clearInterval(F),F=null)}),(l,t)=>{const o=ue,c=_e,_=re,T=de,h=fe,b=ve,P=ke,K=be,L=ye,w=Ve,U=Ce,lt=we,M=Le,N=Ee,E=Te,C=he,Jt=Se,te=Ae,ee=Ie,z=oe("perms"),se=ze;return m(),k("div",Ze,[a(ee,{class:"list-card !border-none",shadow:"never"},{default:i(()=>[e("div",Je,[a(T,{modelValue:s(O),"onUpdate:modelValue":t[0]||(t[0]=n=>I(O)?O.value=n:null),onTabChange:It,class:"list-tabs"},{default:i(()=>[a(_,{name:"1"},{label:i(()=>[e("span",ts,[a(o,null,{default:i(()=>[a(s(pe))]),_:1}),t[20]||(t[20]=u("待接诊",-1)),s(S)[1]?(m(),v(c,{key:0,value:s(S)[1],class:"tab-badge tab-badge-success"},null,8,["value"])):f("",!0)])]),_:1}),a(_,{name:"all"},{label:i(()=>[e("span",es,[a(o,null,{default:i(()=>[a(s(me))]),_:1}),t[21]||(t[21]=u("全部",-1))])]),_:1}),a(_,{name:"4"},{label:i(()=>[e("span",ss,[a(o,null,{default:i(()=>[a(s(yt))]),_:1}),t[22]||(t[22]=u("已过号",-1)),s(S)[4]?(m(),v(c,{key:0,value:s(S)[4],class:"tab-badge tab-badge-danger"},null,8,["value"])):f("",!0)])]),_:1}),a(_,{name:"2"},{label:i(()=>[e("span",as,[a(o,null,{default:i(()=>[a(s(bt))]),_:1}),t[23]||(t[23]=u("已取消",-1)),s(S)[2]?(m(),v(c,{key:0,value:s(S)[2],class:"tab-badge tab-badge-info"},null,8,["value"])):f("",!0)])]),_:1}),a(_,{name:"3"},{label:i(()=>[e("span",ls,[a(o,null,{default:i(()=>[a(s(ce))]),_:1}),t[24]||(t[24]=u("已完成",-1)),s(S)[3]?(m(),v(c,{key:0,value:s(S)[3],class:"tab-badge tab-badge-primary"},null,8,["value"])):f("",!0)])]),_:1})]),_:1},8,["modelValue"]),e("div",is,[a(h,{modelValue:s(r).patient_name,"onUpdate:modelValue":t[1]||(t[1]=n=>s(r).patient_name=n),placeholder:"患者姓名",clearable:"",size:"small",class:"action-input",onKeyup:ge(pt,["enter"])},null,8,["modelValue"]),a(b,{type:"primary",size:"small",onClick:pt},{default:i(()=>[...t[25]||(t[25]=[u("查询",-1)])]),_:1}),a(L,{trigger:"click",onCommand:xt},{dropdown:i(()=>[a(K,null,{default:i(()=>[s(Pt)?(m(),v(P,{key:0,class:"dropdown-item-with-input",onClick:t[4]||(t[4]=Dt(()=>{},["stop"]))},{default:i(()=>[t[27]||(t[27]=e("span",{class:"dropdown-label"},"医生",-1)),a(h,{modelValue:s(r).doctor_name,"onUpdate:modelValue":t[2]||(t[2]=n=>s(r).doctor_name=n),placeholder:"医生",size:"small",class:"dropdown-input",onClick:t[3]||(t[3]=Dt(()=>{},["stop"]))},null,8,["modelValue"])]),_:1})):f("",!0),a(P,{command:"customDate",divided:""},{default:i(()=>[a(o,null,{default:i(()=>[a(s(Ct))]),_:1}),t[28]||(t[28]=u(" 自定义日期 ",-1))]),_:1}),a(P,{command:"reset"},{default:i(()=>[a(o,null,{default:i(()=>[a(s(De))]),_:1}),t[29]||(t[29]=u(" 重置 ",-1))]),_:1})]),_:1})]),default:i(()=>[a(b,{size:"small"},{default:i(()=>[t[26]||(t[26]=u("更多",-1)),a(o,{class:"el-icon--right"},{default:i(()=>[a(s(kt))]),_:1})]),_:1})]),_:1})])]),e("div",ns,[e("div",os,[t[36]||(t[36]=e("span",{class:"filter-label"},"日期",-1)),a(U,{modelValue:s(r).date_preset,"onUpdate:modelValue":t[5]||(t[5]=n=>s(r).date_preset=n),size:"small",onChange:Lt,class:"filter-radio"},{default:i(()=>[a(w,{value:"yesterday"},{default:i(()=>[...t[30]||(t[30]=[u("昨天挂号",-1)])]),_:1}),a(w,{value:"day_before"},{default:i(()=>[...t[31]||(t[31]=[u("前天挂号",-1)])]),_:1}),a(w,{value:"today"},{default:i(()=>[...t[32]||(t[32]=[u("当天挂号",-1)])]),_:1}),a(w,{value:"tomorrow"},{default:i(()=>[...t[33]||(t[33]=[u("明天挂号",-1)])]),_:1}),a(w,{value:"day_after"},{default:i(()=>[...t[34]||(t[34]=[u("后天挂号",-1)])]),_:1}),a(w,{value:""},{default:i(()=>[...t[35]||(t[35]=[u("不限",-1)])]),_:1})]),_:1},8,["modelValue"])]),e("div",ds,[t[40]||(t[40]=e("span",{class:"filter-label"},"确认诊单",-1)),a(U,{modelValue:s(r).diagnosis_confirmed,"onUpdate:modelValue":t[6]||(t[6]=n=>s(r).diagnosis_confirmed=n),size:"small",onChange:qt,class:"filter-radio"},{default:i(()=>[a(w,{value:""},{default:i(()=>[...t[37]||(t[37]=[u("全部",-1)])]),_:1}),a(w,{value:"1"},{default:i(()=>[...t[38]||(t[38]=[u("已确认",-1)])]),_:1}),a(w,{value:"0"},{default:i(()=>[...t[39]||(t[39]=[u("未确认",-1)])]),_:1})]),_:1},8,["modelValue"])]),e("div",rs,[t[41]||(t[41]=e("span",{class:"filter-label"},"部门",-1)),a(lt,{modelValue:s(r).assistant_dept_id,"onUpdate:modelValue":t[7]||(t[7]=n=>s(r).assistant_dept_id=n),data:s(G),class:"filter-dept-select",clearable:"",filterable:"","check-strictly":"","default-expand-all":!0,"node-key":"id",size:"small",props:$t,placeholder:"选父级含子级",onChange:At},null,8,["modelValue","data"])])]),a(N,{modelValue:s(x),"onUpdate:modelValue":t[11]||(t[11]=n=>I(x)?x.value=n:null),title:"自定义日期",width:"400px","append-to-body":"","close-on-click-modal":!0},{footer:i(()=>[a(b,{onClick:t[10]||(t[10]=n=>x.value=!1)},{default:i(()=>[...t[42]||(t[42]=[u("取消",-1)])]),_:1}),a(b,{type:"primary",onClick:Rt},{default:i(()=>[...t[43]||(t[43]=[u("确定",-1)])]),_:1})]),default:i(()=>[a(M,{startTime:s(r).start_date,"onUpdate:startTime":t[8]||(t[8]=n=>s(r).start_date=n),endTime:s(r).end_date,"onUpdate:endTime":t[9]||(t[9]=n=>s(r).end_date=n)},null,8,["startTime","endTime"])]),_:1},8,["modelValue"]),e("div",us,[$((m(),v(Jt,{data:s(V).lists,size:"default",class:"appointment-table"},{default:i(()=>[a(E,{label:"ID",prop:"id",width:"72",align:"center"}),a(E,{label:"患者信息","min-width":"140"},{default:i(({row:n})=>[e("div",ps,[e("div",_s,[e("div",ms,p(n.patient_name),1),e("div",cs,p(ht(n.patient_phone)),1),e("div",fs,p([n.gender===1?"男":n.gender===0?"女":"",n.age!=null?n.age+"岁":"",n.height!=null?n.height+"cm":"",n.weight!=null?n.weight+"kg":""].filter(Boolean).join(" ")||"-"),1)])])]),_:1}),a(E,{label:"医生",prop:"doctor_name",width:"90","show-overflow-tooltip":""}),a(E,{label:"预约时间","min-width":"120"},{default:i(({row:n})=>[e("div",gs,[e("div",vs,p(n.appointment_date),1),e("div",ys,p(n.appointment_time),1)])]),_:1}),a(E,{label:"助理",prop:"assistant_name",width:"100","show-overflow-tooltip":""},{default:i(({row:n})=>[u(p(n.assistant_name||"—"),1)]),_:1}),a(E,{label:"确认诊单",width:"90",align:"center"},{default:i(({row:n})=>[n.diagnosis_confirmed?(m(),v(C,{key:0,type:"success",size:"small",effect:"plain"},{default:i(()=>[...t[44]||(t[44]=[u("已确认",-1)])]),_:1})):(m(),v(C,{key:1,type:"warning",size:"small",effect:"plain"},{default:i(()=>[...t[45]||(t[45]=[u("未确认",-1)])]),_:1}))]),_:1}),a(E,{label:"开方",width:"120",align:"center"},{default:i(({row:n})=>[e("div",bs,[n.has_prescription?(m(),v(C,{key:0,type:"success",size:"small",effect:"plain"},{default:i(()=>[...t[46]||(t[46]=[u("已开方",-1)])]),_:1})):(m(),v(C,{key:1,type:"info",size:"small",effect:"plain"},{default:i(()=>[...t[47]||(t[47]=[u("未开方",-1)])]),_:1})),n.has_prescription&&n.prescription_is_system_auto===1?(m(),v(C,{key:2,type:"warning",size:"small",effect:"plain"},{default:i(()=>[...t[48]||(t[48]=[u(" 系统代开 ",-1)])]),_:1})):f("",!0)])]),_:1}),a(E,{label:"状态",width:"90",align:"center"},{default:i(({row:n})=>[a(C,{type:n.status===1?"success":n.status===2?"info":n.status===3?"primary":"danger",size:"small",effect:"light",round:""},{default:i(()=>[u(p(n.status_desc),1)]),_:2},1032,["type"])]),_:1}),a(E,{label:"备注",prop:"remark","min-width":"120","show-overflow-tooltip":""}),a(E,{label:"操作",width:"380",fixed:"right",align:"left"},{default:i(({row:n})=>[e("div",ks,[$((m(),v(b,{type:"primary",link:"",size:"small",onClick:B=>jt(n)},{default:i(()=>[...t[49]||(t[49]=[u(" 编辑患者 ",-1)])]),_:1},8,["onClick"])),[[z,["tcm.diagnosis/edit"]]]),n.status!==3?(m(),k(Pe,{key:0},[$((m(),v(b,{type:"warning",link:"",size:"small",onClick:B=>st(n),class:"action-qrcode"},{default:i(()=>[a(o,null,{default:i(()=>[a(s($e))]),_:1}),t[50]||(t[50]=u(" 视频二维码 ",-1))]),_:1},8,["onClick"])),[[z,["tcm.diagnosis/videoQr"]]]),$((m(),v(b,{type:"primary",link:"",size:"small",onClick:B=>ft(n)},{default:i(()=>[...t[51]||(t[51]=[u(" 通话 ",-1)])]),_:1},8,["onClick"])),[[z,["doctor.appointment/prescription"]]]),$((m(),v(b,{type:"success",link:"",size:"small",onClick:B=>mt(n)},{default:i(()=>[...t[52]||(t[52]=[u(" 完成 ",-1)])]),_:1},8,["onClick"])),[[z,["doctor.appointment/complete"]]])],64)):f("",!0),$((m(),v(b,{type:"primary",link:"",size:"small",onClick:B=>gt(n)},{default:i(()=>[u(p(Gt(n)),1)]),_:2},1032,["onClick"])),[[z,["tcm.diagnosis/kaifang"]]]),a(L,{trigger:"click",onCommand:B=>Ht(B,n),placement:"bottom-end"},{dropdown:i(()=>[a(K,null,{default:i(()=>[$((m(),v(P,{command:"viewCase"},{default:i(()=>[a(o,null,{default:i(()=>[a(s(it))]),_:1}),t[54]||(t[54]=u(" 病历 ",-1))]),_:1})),[[z,["tcm.diagnosis/kaifang"]]]),n.status===1?$((m(),v(P,{key:0,command:"cancel",divided:""},{default:i(()=>[a(o,null,{default:i(()=>[a(s(bt))]),_:1}),t[55]||(t[55]=e("span",{class:"text-danger"},"取消挂号",-1))]),_:1})),[[z,["doctor.appointment/cancel"]]]):f("",!0)]),_:2},1024)]),default:i(()=>[a(b,{type:"info",link:"",size:"small"},{default:i(()=>[t[53]||(t[53]=u(" 更多 ",-1)),a(o,{class:"el-icon--right"},{default:i(()=>[a(s(kt))]),_:1})]),_:1})]),_:2},1032,["onCommand"])])]),_:1})]),_:1},8,["data"])),[[se,s(V).loading]]),e("div",Ds,[a(te,{modelValue:s(V),"onUpdate:modelValue":t[12]||(t[12]=n=>I(V)?V.value=n:null),onChange:s(ut)},null,8,["modelValue","onChange"])])])]),_:1}),a(N,{modelValue:s(X),"onUpdate:modelValue":t[13]||(t[13]=n=>I(X)?X.value=n:null),title:"挂号详情",width:"720px",class:"detail-dialog","destroy-on-close":""},{default:i(()=>[s(d)?(m(),k("div",Cs,[e("div",Vs,[e("div",ws,[a(o,null,{default:i(()=>[a(s(Ct))]),_:1}),t[56]||(t[56]=u(" 预约信息 ",-1))]),e("div",Es,[e("div",Ss,[t[57]||(t[57]=e("span",{class:"detail-label"},"挂号ID",-1)),e("span",Ts,p(s(d).id),1)]),e("div",hs,[t[58]||(t[58]=e("span",{class:"detail-label"},"状态",-1)),a(C,{type:s(d).status===1?"success":s(d).status===2?"info":s(d).status===3?"primary":"danger",size:"small",effect:"light"},{default:i(()=>[u(p(s(d).status_desc),1)]),_:1},8,["type"])]),e("div",Ps,[t[59]||(t[59]=e("span",{class:"detail-label"},"医生",-1)),e("span",$s,p(s(d).doctor_name),1)]),e("div",zs,[t[60]||(t[60]=e("span",{class:"detail-label"},"预约时间",-1)),e("span",Is,p(s(d).appointment_date)+" "+p(s(d).appointment_time),1)]),e("div",xs,[t[61]||(t[61]=e("span",{class:"detail-label"},"时段",-1)),e("span",Rs,p(s(d).period==="morning"?"上午":"下午"),1)]),e("div",qs,[t[62]||(t[62]=e("span",{class:"detail-label"},"预约类型",-1)),e("span",As,p(s(d).appointment_type_desc),1)])])]),e("div",Ls,[e("div",Us,[a(o,null,{default:i(()=>[a(s(xe))]),_:1}),t[63]||(t[63]=u(" 患者信息 ",-1))]),e("div",Ms,[e("div",Ns,[t[64]||(t[64]=e("span",{class:"detail-label"},"姓名",-1)),e("span",Bs,p(s(d).patient_name||"-"),1)]),e("div",Os,[t[65]||(t[65]=e("span",{class:"detail-label"},"手机号",-1)),e("span",Fs,p(s(d).phone||s(d).patient_phone||"-"),1)]),e("div",Ws,[t[66]||(t[66]=e("span",{class:"detail-label"},"身份证号",-1)),e("span",Hs,p(s(d).id_card||"-"),1)]),e("div",Qs,[t[67]||(t[67]=e("span",{class:"detail-label"},"性别",-1)),e("span",Ys,p(s(d).gender===1?"男":s(d).gender===0?"女":"-"),1)]),e("div",js,[t[68]||(t[68]=e("span",{class:"detail-label"},"年龄",-1)),e("span",Ks,p(s(d).age!=null?s(d).age+"岁":"-"),1)]),e("div",Gs,[t[69]||(t[69]=e("span",{class:"detail-label"},"诊断日期",-1)),e("span",Xs,p(s(d).diagnosis_date||"-"),1)]),e("div",Zs,[t[70]||(t[70]=e("span",{class:"detail-label"},"婚姻状态",-1)),e("span",Js,p(s(d).marital_status===0?"未婚":s(d).marital_status===1?"已婚":s(d).marital_status===2?"离异":"-"),1)]),e("div",ta,[t[71]||(t[71]=e("span",{class:"detail-label"},"身高(cm)",-1)),e("span",ea,p(s(d).height??"-"),1)]),e("div",sa,[t[72]||(t[72]=e("span",{class:"detail-label"},"体重(kg)",-1)),e("span",aa,p(s(d).weight??"-"),1)]),e("div",la,[t[73]||(t[73]=e("span",{class:"detail-label"},"地区",-1)),e("span",ia,p(s(d).region||"-"),1)]),e("div",na,[t[74]||(t[74]=e("span",{class:"detail-label"},"收缩压(mmHg)",-1)),e("span",oa,p(s(d).systolic_pressure??"-"),1)]),e("div",da,[t[75]||(t[75]=e("span",{class:"detail-label"},"舒张压(mmHg)",-1)),e("span",ra,p(s(d).diastolic_pressure??"-"),1)]),e("div",ua,[t[76]||(t[76]=e("span",{class:"detail-label"},"空腹血糖(mmol/L)",-1)),e("span",pa,p(s(d).fasting_blood_sugar??"-"),1)]),e("div",_a,[t[77]||(t[77]=e("span",{class:"detail-label"},"诊断类型",-1)),e("span",ma,p(W(s(Mt),s(d).diagnosis_type)||"-"),1)]),e("div",ca,[t[78]||(t[78]=e("span",{class:"detail-label"},"证型",-1)),e("span",fa,p(W(s(Nt),s(d).syndrome_type)||"-"),1)]),e("div",ga,[t[79]||(t[79]=e("span",{class:"detail-label"},"糖尿病期数",-1)),e("span",va,p(W(s(Bt),s(d).diabetes_type)||"-"),1)])])]),s(d).symptoms||s(d).local_hospital_name||s(d).past_history&&s(d).past_history.length?(m(),k("div",ya,[e("div",ba,[a(o,null,{default:i(()=>[a(s(it))]),_:1}),t[80]||(t[80]=u(" 病史信息 ",-1))]),e("div",ka,[s(Ke)(s(d).diabetes_discovery_year)?(m(),k("div",Da,[t[81]||(t[81]=e("span",{class:"detail-label"},"发现糖尿病病史",-1)),e("span",Ca,p(s(Ge)(s(d).diabetes_discovery_year)),1)])):f("",!0),s(d).local_hospital_name?(m(),k("div",Va,[t[82]||(t[82]=e("span",{class:"detail-label"},"当地就诊医院",-1)),e("span",wa,p(s(d).local_hospital_name),1)])):f("",!0),s(d).symptoms?(m(),k("div",Ea,[t[83]||(t[83]=e("span",{class:"detail-label"},"症状补充",-1)),e("span",Sa,p(s(d).symptoms),1)])):f("",!0),s(d).past_history&&s(d).past_history.length?(m(),k("div",Ta,[t[84]||(t[84]=e("span",{class:"detail-label"},"既往史",-1)),e("span",ha,p(Ft(s(d).past_history)),1)])):f("",!0)])])):f("",!0),s(d).tongue_coating||s(d).pulse||s(d).treatment_principle||s(d).prescription?(m(),k("div",Pa,[e("div",$a,[a(o,null,{default:i(()=>[a(s(it))]),_:1}),t[85]||(t[85]=u(" 诊断信息 ",-1))]),e("div",za,[s(d).tongue_coating?(m(),k("div",Ia,[t[86]||(t[86]=e("span",{class:"detail-label"},"舌苔",-1)),e("span",xa,p(s(d).tongue_coating),1)])):f("",!0),s(d).pulse?(m(),k("div",Ra,[t[87]||(t[87]=e("span",{class:"detail-label"},"脉象",-1)),e("span",qa,p(s(d).pulse),1)])):f("",!0),s(d).treatment_principle?(m(),k("div",Aa,[t[88]||(t[88]=e("span",{class:"detail-label"},"治则",-1)),e("span",La,p(s(d).treatment_principle),1)])):f("",!0),s(d).prescription?(m(),k("div",Ua,[t[89]||(t[89]=e("span",{class:"detail-label"},"处方",-1)),e("span",Ma,p(s(d).prescription),1)])):f("",!0)])])):f("",!0),e("div",Na,[t[90]||(t[90]=e("div",{class:"detail-section-title"},"备注",-1)),e("p",Ba,p(s(d).remark||"无"),1)])])):f("",!0)]),_:1},8,["modelValue"]),a(s(wt),{ref_key:"editRef",ref:Z,onSuccess:t[14]||(t[14]=()=>D({silent:!0}))},null,512),a(s(Et),{ref_key:"prescriptionRef",ref:J,onSuccess:Kt},null,512),a(s(St),{ref_key:"chatDialogRef",ref:_t},null,512),a(N,{modelValue:s(A),"onUpdate:modelValue":t[16]||(t[16]=n=>I(A)?A.value=n:null),title:"小程序二维码",width:"380px","close-on-click-modal":!1,class:"qrcode-dialog"},{footer:i(()=>[a(b,{onClick:t[15]||(t[15]=n=>A.value=!1)},{default:i(()=>[...t[95]||(t[95]=[u("关闭",-1)])]),_:1}),s(Q)?f("",!0):(m(),v(b,{key:0,type:"primary",onClick:Zt},{default:i(()=>[...t[96]||(t[96]=[u(" 重新生成 ",-1)])]),_:1}))]),default:i(()=>{var n;return[e("div",Oa,[s(Q)?(m(),k("div",Fa,[a(o,{class:"is-loading",size:48},{default:i(()=>[a(s(Re))]),_:1}),t[91]||(t[91]=e("div",{class:"qrcode-loading-text"},"生成中...",-1))])):s(Y)?(m(),k("div",Wa,[e("div",Ha,[e("img",{src:s(Y),alt:"小程序二维码",class:"qrcode-image"},null,8,Qa)]),e("div",Ya,[e("div",ja,"患者:"+p((n=s(j))==null?void 0:n.patient_name),1),t[92]||(t[92]=e("div",{class:"qrcode-tip"},"请使用微信扫描二维码",-1)),t[93]||(t[93]=e("div",{class:"qrcode-path"},"pages/login/login",-1))])])):(m(),k("div",Ka,[a(o,{size:40},{default:i(()=>[a(s(yt))]),_:1}),t[94]||(t[94]=e("div",null,"生成失败,请重试",-1))]))])]}),_:1},8,["modelValue"]),a(N,{modelValue:s(R),"onUpdate:modelValue":t[19]||(t[19]=n=>I(R)?R.value=n:null),title:"完成问诊",width:"420px","append-to-body":"","close-on-click-modal":!1,"destroy-on-close":""},{footer:i(()=>[a(b,{onClick:t[18]||(t[18]=n=>R.value=!1)},{default:i(()=>[...t[98]||(t[98]=[u("取消",-1)])]),_:1}),a(b,{type:"primary",loading:s(H),onClick:Yt},{default:i(()=>[...t[99]||(t[99]=[u("确认完成",-1)])]),_:1},8,["loading"])]),default:i(()=>[e("div",Ga,[t[97]||(t[97]=e("p",{class:"complete-dialog-tip"},"是否添加医生备注?",-1)),s(et)?(m(),v(h,{key:0,modelValue:s(q),"onUpdate:modelValue":t[17]||(t[17]=n=>I(q)?q.value=n:null),type:"textarea",rows:4,maxlength:"500","show-word-limit":"",placeholder:"填写完成备注,将追加到医生备注时间轴"},null,8,["modelValue"])):f("",!0)])]),_:1},8,["modelValue"])])}}}),_l=Qe(Za,[["__scopeId","data-v-525f0117"]]);export{_l as default};
diff --git a/server/public/admin/assets/list-D8TpTa5J.js b/server/public/admin/assets/list-QEhyfwD9.js
similarity index 96%
rename from server/public/admin/assets/list-D8TpTa5J.js
rename to server/public/admin/assets/list-QEhyfwD9.js
index f6379799f..ac6426a2c 100644
--- a/server/public/admin/assets/list-D8TpTa5J.js
+++ b/server/public/admin/assets/list-QEhyfwD9.js
@@ -1 +1 @@
-import{o as K,ap as fe,be,q as m,r as N,v as l,D as i,b9 as ye,u as o,b6 as ve,b7 as ge,b8 as ke,bm as Ve,bn as he,K as Ce,L as s,bg as xe,ac as k,bi as we,O as b,P as R,s as V,bj as Ee,bk as Re,br as Ae,T as E,C as J,bM as De,bc as Se,bf as Le,J as Ne,I as Ue,bt as Ie,ba as z,M as h,p as Pe}from"./.pnpm-Dwh6tNxD.js";import{_ as $e}from"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import{u as Be,c as Oe,i as y,_ as Me}from"./index-C0Q8AuuZ.js";import{t as Ge,y as Te,z as Fe,A as Je}from"./tcm-WWBqr2Vo.js";import{u as ze}from"./usePaging-DOuAwzL9.js";import{M as Ke}from"./index-BYUFCj9H.js";import je from"./PrescriptionAiBatchGenerateDialog-74yVNbl2.js";import qe from"./PrescriptionAiReportDialog-ClF5VJla.js";import"./medicine-BOlGkY3u.js";const He={class:"prescription-library"},Qe={class:"mt-4"},We={key:0},Xe={key:1,class:"text-gray-400"},Ye={class:"flex mt-4 justify-end"},Ze={class:"w-full"},el={class:"flex flex-col gap-1 leading-none"},ll=K({name:"prescriptionLibrary"}),tl=K({...ll,setup(al){const _=z({prescription_name:"",formula_type:"",is_public:""}),f=h(!1),p=h("add"),A=h(!1),D=h(),U=h(),I=h(),n=z({id:0,prescription_name:"",formula_type:"主方",herbs:[],is_public:0,disable_edit:0}),j={prescription_name:[{required:!0,message:"请输入处方名称",trigger:"blur"}]},S=Be(),q=Pe(()=>{const a=S.perms||[];return a.includes("*")||a.includes("tcm.prescriptionLibrary/missingAiReports")&&a.includes("tcm.prescriptionLibrary/generateAiReports")}),H=[0,3],{pager:C,getLists:x,resetParams:Q,resetPage:P}=ze({fetchFun:Ge,params:_}),W=a=>{var e;return Number(a.creator_id)===Number((e=S.userInfo)==null?void 0:e.id)},X=()=>{const a=S.userInfo;if(!a)return!1;if(Number(a.root)===1)return!0;const e=Array.isArray(a.role_ids)?a.role_ids.map(v=>Number(v)):[];return H.some(v=>e.includes(v))},$=a=>X()||W(a),Y=$,Z=a=>{var e;(e=U.value)==null||e.open(a)},ee=()=>{var a;(a=I.value)==null||a.open()},le=()=>{n.herbs.push({name:"",dosage:0})},te=a=>{n.herbs.splice(a,1)},ae=()=>{n.id=0,n.prescription_name="",n.formula_type="主方",n.herbs=[],n.is_public=0,n.disable_edit=0},ie=()=>{ae(),p.value="add",f.value=!0},oe=a=>{p.value="view",n.id=a.id,n.prescription_name=a.prescription_name||"",n.formula_type=a.formula_type||"主方",n.herbs=a.herbs?JSON.parse(JSON.stringify(a.herbs)):[],n.is_public=a.is_public??0,n.disable_edit=a.disable_edit??0,f.value=!0},ne=a=>{p.value="edit",n.id=a.id,n.prescription_name=a.prescription_name||"",n.formula_type=a.formula_type||"主方",n.herbs=a.herbs?JSON.parse(JSON.stringify(a.herbs)):[],n.is_public=a.is_public??0,n.disable_edit=a.disable_edit??0,f.value=!0},se=async()=>{if(D.value){if(await D.value.validate(),!n.herbs||n.herbs.length===0){y.msgError("请至少添加一味药材");return}for(let a=0;a{var t;return((t=B.value)==null?void 0:t.detail)??null}),os=R(()=>{var e;const t=(e=T.value)==null?void 0:e.prescription;return t&&typeof t=="object"?t:null}),Ra=R(()=>`${c.dose_unit||"剂"}数`),Fe=f(!1),It=f(!1),it=f(),de=me({id:0,amount:void 0}),us={amount:[{required:!0,message:"请输入订单金额",trigger:"blur"},{validator:(t,e,s)=>{const i=Number(e);if(!Number.isFinite(i)||i<0){s(new Error("订单金额不能为负数"));return}s()},trigger:"blur"}]},Ve=f(null),ot=f(!1),Le=R(()=>Sr(Ve.value)),Ie=f(!1),qt=f(!1),zt=f(),ae=me({patient_name:"",phone:""}),ds={patient_name:[{required:!0,message:"请输入患者姓名",trigger:"blur"}],phone:[{required:!0,message:"请输入手机号",trigger:"blur"}]};function ps(){const t=os.value,e=T.value;if(!t||!(e!=null&&e.id)||!e.prescription_id){w.msgWarning("无处方数据");return}ae.patient_name=String(t.patient_name??"").trim(),ae.phone=String(t.phone??"").trim(),Ie.value=!0,et(()=>{var s;return(s=zt.value)==null?void 0:s.clearValidate()})}function cs(){ae.patient_name="",ae.phone=""}function ms(){var t;de.id=0,de.amount=void 0,(t=it.value)==null||t.clearValidate()}function _s(){const t=T.value;if(!sl(t)){w.msgWarning("当前订单状态不允许修改金额");return}de.id=Number(t==null?void 0:t.id)||0;const e=Number(t==null?void 0:t.amount);de.amount=Number.isFinite(e)?e:void 0,Fe.value=!0,et(()=>{var s;return(s=it.value)==null?void 0:s.clearValidate()})}async function ut(){var t;await((t=B.value)==null?void 0:t.refresh())}async function fs(){var s;const t=zt.value;if(!t)return;try{await t.validate()}catch{return}const e=(s=T.value)==null?void 0:s.id;if(e){qt.value=!0;try{await Fr({id:e,patient_name:ae.patient_name.trim(),phone:ae.phone.trim()}),Ie.value=!1,await ut()}catch(i){console.error(i)}finally{qt.value=!1}}}async function Ea(){const t=it.value;if(!t)return;try{await t.validate()}catch{return}if(!sl(T.value)){w.msgWarning("当前订单状态不允许修改金额");return}const e=de.id;It.value=!0;try{await Lr({id:e,amount:Number(de.amount)}),w.msgSuccess("修改成功"),Fe.value=!1,await ut(),U()}catch{}finally{It.value=!1}}async function vs(t){var e;await((e=B.value)==null?void 0:e.open(t))}const be=f(!1),jt=f(!1),Mt=f(!1),F=f(0),le=f(null),se=f(!1),dt=f(""),ys=R(()=>["请核对收货信息,便于发货与物流联系。","按需填写服务与物流,并选择本诊单下需要关联的支付单。","确认费用类别与订单金额;保存前请对照定金门槛是否已满足。"][F.value]??""),Ta=R(()=>{const t=le.value,e=Cr(t==null?void 0:t.herbs);if(!e.length)return"暂无药材明细";const s=e.map(i=>`${i.name} ${i.dosage}g`).join("、");return s.length>120?`${s.slice(0,120)}…`:s}),gs=["recipient_name","recipient_phone","region","shipping_address"],xe=f(),c=me({id:0,prescription_id:0,diagnosis_id:0,recipient_name:"",recipient_phone:"",region:[],shipping_address:"",is_follow_up:0,medication_days:void 0,dose_count:1,dose_unit:"剂",prev_staff:"",service_channel:"",service_package:[],express_company:"auto",tracking_number:"",fee_type:3,amount:0,remark_extra:"",remark_assistant:"",pay_order_ids:[],internal_cost:void 0,assistant_id:0,diagnosis_creator_id:0,diagnosis_creator_name:"",diagnosis_creator_dept_path:""}),bs=R(()=>Nr(Et.value,c.service_package)),Da=R(()=>{const t=String(c.diagnosis_creator_dept_path||"").trim();return t?t.split(";").map(e=>e.trim()).filter(Boolean).map(e=>e.includes(" / ")?e.split(" / ").map(s=>s.trim()).filter(Boolean):e.split("/").map(s=>s.trim()).filter(Boolean)).filter(e=>e.length>0):[]}),qe=f([]),Bt=f(!1),I=f(0);function pt(t){return{1:"挂号费",2:"问诊费",3:"药品费用",4:"首付",5:"尾款",6:"其他"}[Number(t)]||"未知"}const Ht=R(()=>{const t=new Set(c.pay_order_ids.map(s=>Number(s)));let e=0;for(const s of qe.value)t.has(Number(s.id))&&(e+=Number(s.amount)||0);return Math.round(e*100)/100}),xs=R(()=>{const t=I.value;return t>0?Math.round(t*100)/100:0});async function ks(t,e){var s,i;if(!t){qe.value=[];return}try{Bt.value=!0;const o=await ol({diagnosis_id:t,...e?{prescription_order_id:e}:{}}),d=(o==null?void 0:o.lists)??((s=o==null?void 0:o.data)==null?void 0:s.lists)??[];qe.value=Array.isArray(d)?d:[];const p=Number((o==null?void 0:o.deposit_min_amount)??((i=o==null?void 0:o.data)==null?void 0:i.deposit_min_amount));!Number.isNaN(p)&&p>=0&&(I.value=p)}catch{qe.value=[]}finally{Bt.value=!1}}const hs=R(()=>{const t={recipient_name:[{required:!0,message:"请输入收货人",trigger:"blur"}],recipient_phone:[{required:!0,message:"请输入收货手机",trigger:"blur"}],region:[{required:!0,message:"请选择省/市/区",trigger:"change",type:"array"}],shipping_address:[{required:!0,message:"请输入收货地址",trigger:"blur"}],fee_type:[{required:!0,message:"请选择费用类别",trigger:"change"}],amount:[{required:!0,message:"请输入订单金额",trigger:"blur"},{validator:(e,s,i)=>{const o=I.value,d=Number(s);if(o>0&&(!Number.isFinite(d)||d{var t;return((t=B.value)==null?void 0:t.detail)??null}),os=R(()=>{var e;const t=(e=T.value)==null?void 0:e.prescription;return t&&typeof t=="object"?t:null}),Ra=R(()=>`${c.dose_unit||"剂"}数`),Fe=f(!1),It=f(!1),it=f(),de=me({id:0,amount:void 0}),us={amount:[{required:!0,message:"请输入订单金额",trigger:"blur"},{validator:(t,e,s)=>{const i=Number(e);if(!Number.isFinite(i)||i<0){s(new Error("订单金额不能为负数"));return}s()},trigger:"blur"}]},Ve=f(null),ot=f(!1),Le=R(()=>Sr(Ve.value)),Ie=f(!1),qt=f(!1),zt=f(),ae=me({patient_name:"",phone:""}),ds={patient_name:[{required:!0,message:"请输入患者姓名",trigger:"blur"}],phone:[{required:!0,message:"请输入手机号",trigger:"blur"}]};function ps(){const t=os.value,e=T.value;if(!t||!(e!=null&&e.id)||!e.prescription_id){w.msgWarning("无处方数据");return}ae.patient_name=String(t.patient_name??"").trim(),ae.phone=String(t.phone??"").trim(),Ie.value=!0,et(()=>{var s;return(s=zt.value)==null?void 0:s.clearValidate()})}function cs(){ae.patient_name="",ae.phone=""}function ms(){var t;de.id=0,de.amount=void 0,(t=it.value)==null||t.clearValidate()}function _s(){const t=T.value;if(!sl(t)){w.msgWarning("当前订单状态不允许修改金额");return}de.id=Number(t==null?void 0:t.id)||0;const e=Number(t==null?void 0:t.amount);de.amount=Number.isFinite(e)?e:void 0,Fe.value=!0,et(()=>{var s;return(s=it.value)==null?void 0:s.clearValidate()})}async function ut(){var t;await((t=B.value)==null?void 0:t.refresh())}async function fs(){var s;const t=zt.value;if(!t)return;try{await t.validate()}catch{return}const e=(s=T.value)==null?void 0:s.id;if(e){qt.value=!0;try{await Fr({id:e,patient_name:ae.patient_name.trim(),phone:ae.phone.trim()}),Ie.value=!1,await ut()}catch(i){console.error(i)}finally{qt.value=!1}}}async function Ea(){const t=it.value;if(!t)return;try{await t.validate()}catch{return}if(!sl(T.value)){w.msgWarning("当前订单状态不允许修改金额");return}const e=de.id;It.value=!0;try{await Lr({id:e,amount:Number(de.amount)}),w.msgSuccess("修改成功"),Fe.value=!1,await ut(),U()}catch{}finally{It.value=!1}}async function vs(t){var e;await((e=B.value)==null?void 0:e.open(t))}const be=f(!1),jt=f(!1),Mt=f(!1),F=f(0),le=f(null),se=f(!1),dt=f(""),ys=R(()=>["请核对收货信息,便于发货与物流联系。","按需填写服务与物流,并选择本诊单下需要关联的支付单。","确认费用类别与订单金额;保存前请对照定金门槛是否已满足。"][F.value]??""),Ta=R(()=>{const t=le.value,e=Cr(t==null?void 0:t.herbs);if(!e.length)return"暂无药材明细";const s=e.map(i=>`${i.name} ${i.dosage}g`).join("、");return s.length>120?`${s.slice(0,120)}…`:s}),gs=["recipient_name","recipient_phone","region","shipping_address"],xe=f(),c=me({id:0,prescription_id:0,diagnosis_id:0,recipient_name:"",recipient_phone:"",region:[],shipping_address:"",is_follow_up:0,medication_days:void 0,dose_count:1,dose_unit:"剂",prev_staff:"",service_channel:"",service_package:[],express_company:"auto",tracking_number:"",fee_type:3,amount:0,remark_extra:"",remark_assistant:"",pay_order_ids:[],internal_cost:void 0,assistant_id:0,diagnosis_creator_id:0,diagnosis_creator_name:"",diagnosis_creator_dept_path:""}),bs=R(()=>Nr(Et.value,c.service_package)),Da=R(()=>{const t=String(c.diagnosis_creator_dept_path||"").trim();return t?t.split(";").map(e=>e.trim()).filter(Boolean).map(e=>e.includes(" / ")?e.split(" / ").map(s=>s.trim()).filter(Boolean):e.split("/").map(s=>s.trim()).filter(Boolean)).filter(e=>e.length>0):[]}),qe=f([]),Bt=f(!1),I=f(0);function pt(t){return{1:"挂号费",2:"问诊费",3:"药品费用",4:"首付",5:"尾款",6:"其他"}[Number(t)]||"未知"}const Ht=R(()=>{const t=new Set(c.pay_order_ids.map(s=>Number(s)));let e=0;for(const s of qe.value)t.has(Number(s.id))&&(e+=Number(s.amount)||0);return Math.round(e*100)/100}),xs=R(()=>{const t=I.value;return t>0?Math.round(t*100)/100:0});async function ks(t,e){var s,i;if(!t){qe.value=[];return}try{Bt.value=!0;const o=await ol({diagnosis_id:t,...e?{prescription_order_id:e}:{}}),d=(o==null?void 0:o.lists)??((s=o==null?void 0:o.data)==null?void 0:s.lists)??[];qe.value=Array.isArray(d)?d:[];const p=Number((o==null?void 0:o.deposit_min_amount)??((i=o==null?void 0:o.data)==null?void 0:i.deposit_min_amount));!Number.isNaN(p)&&p>=0&&(I.value=p)}catch{qe.value=[]}finally{Bt.value=!1}}const hs=R(()=>{const t={recipient_name:[{required:!0,message:"请输入收货人",trigger:"blur"}],recipient_phone:[{required:!0,message:"请输入收货手机",trigger:"blur"}],region:[{required:!0,message:"请选择省/市/区",trigger:"change",type:"array"}],shipping_address:[{required:!0,message:"请输入收货地址",trigger:"blur"}],fee_type:[{required:!0,message:"请选择费用类别",trigger:"change"}],amount:[{required:!0,message:"请输入订单金额",trigger:"blur"},{validator:(e,s,i)=>{const o=I.value,d=Number(s);if(o>0&&(!Number.isFinite(d)||d
接诊诊单:${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}]}}),It=C(()=>B.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),Ha=C(()=>{const t=[...B.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,L)=>Number(L.deal_amount)-Number(p.deal_amount)).slice(0,5);if(t.length<2)return{radar:{indicator:[]},series:[{type:"radar",data:[]}]};const e=p=>{const L=String(p.doctor_name||"—");return L.length>7?`${L.slice(0,7)}…`:L},n=p=>Number(p.system_prescription_count??0)+Number(p.manual_prescription_count??0),s=p=>{const L=Number(p.avg_deal_amount);if(Number.isFinite(L)&&L>0)return L;const Y=Number(p.deal_order_count);return Y>0?Number(p.deal_amount)/Y:0},d=Math.max(...t.map(p=>Number(p.deal_amount)),1e-9),g=Math.max(...t.map(p=>Number(p.deal_order_count)),1e-9),b=Math.max(...t.map(n),1e-9),w=Math.max(...t.map(p=>Number(p.appointment_completed??0)),1e-9),I=Math.max(...t.map(s),1e-9),E=t.map(p=>({name:e(p),value:[Number(p.deal_amount)/d*100,Number(p.deal_order_count)/g*100,n(p)/b*100,Number(p.appointment_completed??0)/w*100,s(p)/I*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:E,emphasis:{lineStyle:{width:3}}}]}}),Wa=C(()=>{const t=[...B.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]}}]}}),qa=C(()=>{const t=[...B.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(x.value&&(t.channel_code=x.value),z.value.length>0&&(t.dept_ids=z.value.join(",")),(e=H.value)!=null&&e[0]&&((n=H.value)!=null&&n[1]))t.start_date=H.value[0],t.end_date=H.value[1];else{const s=gt(new Date);t.start_date=s,t.end_date=s}return t}function ta(t){return Number(t??0).toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})}function aa(t){if(t==null||t==="")return"—";const e=Number(t);return Number.isFinite(e)?`${e.toFixed(2)}%`:"—"}function Ja(t){const e=pe.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]=`¥ ${ta(e.deal_amount)}`;break;case"deal_order_count":n[d]=String(e.deal_order_count??0);break;case"appointment_total":n[d]=String(e.appointment_total??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;case"appointment_conversion_rate":n[d]=aa(e.appointment_conversion_rate);break;default:n[d]=""}}),n}async function Mt(){if(!W.value){B.value=[],pe.value={},Be.value=null;return}Ve.value=!0;try{const t=await Pl(Ga());B.value=(t==null?void 0:t.rows)??[],pe.value=(t==null?void 0:t.total)??{},t!=null&&t.start_date&&(t!=null&&t.end_date)&&(Be.value={start:t.start_date,end:t.end_date})}catch(t){if(te.isCancel(t))return;B.value=[],pe.value={},Be.value=null}finally{Ve.value=!1}}const se=v(!1),we=v(!1),et=v(""),tt=v(""),ke=v([]),_t=v(0),Z=v(1),pt=v(15),X=v("channel"),q=v(null),at=v(null),ie=v(null),na=C(()=>{const t=ie.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}),la=C(()=>{const t=ie.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}),Ka=C(()=>ke.value.reduce((t,e)=>t+Number(e.amount??0),0)),oa=C(()=>!!x.value&&se.value),Ot=C(()=>{var e;const t=x.value;if(!t)return"";for(const n of st.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}),Xa=C(()=>{const t=q.value;return t&&X.value==="total"?Number.isFinite(t.channelAmount)?t.channelAmount:null:na.value}),Ye=v(null),mt=v(!1);function Za(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function Qa(t){const[e,n]=t.split("-").map(Number);return new Date(e,n,0).getDate()}async function en(){var t,e,n,s;if(!Ze.value){Ye.value=null;return}mt.value=!0,Ye.value=null;try{let d=function(y,$=0){const A=[];for(const R of y??[])A.push({node:R,depth:$}),A.push(...d(R.children??[],$+1));return A},g=function(y){const $=Ce.value.find(J=>Number(J.id)===y);if(!$)return"";const A=Number($.pid);if(!A)return"";const R=Ce.value.find(J=>Number(J.id)===A);return R!=null&&R.name?String(R.name):""},b=function(y){const $=[],A=[y];for(;A.length;){const R=A.shift();for(const J of Ce.value)Number(J.pid)===R&&($.push(J.id),A.push(J.id))}return $},w=function(y,$){const A=new Map;for(const R of(y==null?void 0:y.rows)??[])A.set(Number(R.dept_id),Number(R[$]??0));return A};const I=Za(),E=await Yl({year_month:I}),p=(E==null?void 0:E.rows)??[];if(!p.length)return;const Y=d(p).filter(y=>y.depth>=1&&Number(y.node.target_amount)>0).map(y=>y.node);if(!Y.length)return;const P=new Set,me=Y.map(y=>{const $=Number(y.dept_id),A=b($),R=A.length?A:[$];return R.forEach(J=>P.add(J)),{dept_id:$,dept_name:String(y.dept_name),target_amount:Number(y.target_amount),totalIds:R}});if(!P.size)return;const He=st.value.flatMap(y=>y.channels),G=(t=He.find(y=>y.channel_name.includes("自媒体1")))==null?void 0:t.channel_code,Se=(e=He.find(y=>y.channel_name.includes("自媒体3")))==null?void 0:e.channel_code,Ne=(n=He.find(y=>y.channel_name.includes("自媒体4")))==null?void 0:n.channel_code,We=Array.from(P).join(","),[ve,F,l,h]=await Promise.all([lt({dept_ids:We}),G?lt({dept_ids:We,channel_code:G}):Promise.resolve(null),Se?lt({dept_ids:We,channel_code:Se}):Promise.resolve(null),Ne?lt({dept_ids:We,channel_code:Ne}):Promise.resolve(null)]),m=y=>{var $;return((y==null?void 0:y.tables)??[]).find(A=>String(A.label).includes("月"))??(($=y==null?void 0:y.tables)==null?void 0:$[0])},T=y=>{var $,A;return((y==null?void 0:y.tables)??[]).find(R=>String(R.label).includes("昨"))??((A=y==null?void 0:y.tables)==null?void 0:A[(($=y==null?void 0:y.tables)==null?void 0:$.length)-1])},Ca=w(m(ve),"performance_amount"),Qn=w(T(ve),"performance_amount"),Da=F?w(m(F),"completed_performance_amount"):null,La=l?w(m(l),"completed_performance_amount"):null,za=h?w(m(h),"completed_performance_amount"):null,nt=(y,$)=>$.reduce((A,R)=>A+(y.get(R)??0),0),Ht=new Date,el=Qa(I),tl=Ht.getDate(),al=me.map(y=>{const $=nt(Ca,y.totalIds),A=nt(Qn,y.totalIds),R=Da?nt(Da,y.totalIds):null,J=La?nt(La,y.totalIds):null,$a=za?nt(za,y.totalIds):null,Wt=J!==null||$a!==null?(J??0)+($a??0):null,sl=Math.round(y.target_amount*(tl/el)*100)/100,il=y.target_amount>0?$/y.target_amount:null;return{dept_id:y.dept_id,dept_name:y.dept_name,parent_dept_name:g(y.dept_id),target_amount:y.target_amount,total_amount:$,yesterday_amount:A,douyin_amount:R&&R>0?R:null,tuifen_amount:Wt&&Wt>0?Wt:null,target_progress:sl,completion_rate:il}}),nl=((s=p[0])==null?void 0:s.dept_name)??"",ll=Ht.getMonth()+1,ol=Ht.getDate();Ye.value={title:`${nl}诊金-${ll}.${ol}`,sections:al}}catch{}finally{mt.value=!1}}const tn=C(()=>{var e;const t=(e=S.value)==null?void 0:e.leaderboards;return t?t.filter(n=>n.rows.length>0).length:0}),sa=[{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 an(t){const e=t.value();H.value=[gt(e[0]),gt(e[1])],Ue()}async function nn(){ht.value=!0;try{const t=await Tl();Ce.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{ht.value=!1}}async function ln(){wt.value=!0;try{const t=await Il(),e=(t==null?void 0:t.groups)||[];st.value=e}catch{}finally{wt.value=!1}}async function ia(t){if(!oe.value){S.value=null;return}de.value=!0;try{const e={start_date:t.start,end_date:t.end};z.value.length>0&&(e.dept_ids=z.value.join(",")),x.value&&(e.channel_code=x.value);const n=await El(e);S.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(e){if(te.isCancel(e))return;S.value=null}finally{de.value=!1}}async function Ue(){if(ne.value=!0,S.value=null,!Fe.value){re.value=[],ne.value=!1,W.value?Mt():(B.value=[],pe.value={},Be.value=null);return}try{const t={};if(z.value.length>0&&(t.dept_ids=z.value.join(",")),x.value&&(t.channel_code=x.value),H.value&&H.value[0]&&H.value[1]){const[s,d]=H.value,g={...t,start_date:s,end_date:d},b=await Ml(g);re.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 ia({start:b.start_date,end:b.end_date});return}const e=await lt(t);re.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=gt(new Date);await ia({start:n,end:n})}catch(t){if(te.isCancel(t))return;const e=t;ae.error((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"加载失败")}finally{ne.value=!1,W.value?Mt():(B.value=[],pe.value={},Be.value=null)}}function on(){z.value=[],H.value=null,x.value="",Ue()}function sn(t){return t<=0?!1:Ce.value.some(e=>Number(e.pid)===t)}function rn(t){return{1:"待双审通过",2:"待发货",3:"已完成",4:"已取消",5:"已发货",6:"已签收",7:"进行中",8:"暂不制药",9:"拒收",10:"退款",11:"保留药方",12:"制药缓发"}[Number(t)]??"—"}function vt(t){return t==null||!Number.isFinite(Number(t))?"—":Number(t).toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})}function dn(t){return(Z.value-1)*pt.value+t+1}function un(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 ra(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 cn(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 g=d.getFullYear(),b=String(d.getMonth()+1).padStart(2,"0"),w=String(d.getDate()).padStart(2,"0"),I=String(d.getHours()).padStart(2,"0"),E=String(d.getMinutes()).padStart(2,"0");return`${g}-${b}-${w} ${I}:${E}`}}const n=String(t);return n.length>=16?n.slice(0,16):n}function da(){const t=at.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,z.value.length>0&&(e.dept_ids=z.value.join(",")),t.yejiTableRowDeptIds&&t.yejiTableRowDeptIds.length>0&&(e.yeji_table_row_dept_ids=t.yejiTableRowDeptIds.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&&se.value&&X.value==="channel"&&(e.channel_code=x.value),e}async function _n(){const t=da();if(!t||!x.value)return;const e={...t,channel_code:x.value,page_no:1,page_size:1};try{const n=await Aa(e),s=n!=null&&n.extend&&typeof n.extend=="object"?n.extend:null;s&&s.stats_yeji_drawer_total_performance_amount!=null&&(q.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 je(){const t=da();if(t){x.value&&X.value==="total"&&(q.value=null),we.value=!0;try{const e={...t,page_no:Z.value,page_size:pt.value},n=await Aa(e);ke.value=Array.isArray(n==null?void 0:n.lists)?n.lists:[],_t.value=Number((n==null?void 0:n.count)??0),ie.value=n!=null&&n.extend&&typeof n.extend=="object"?n.extend:null,x.value&&X.value==="channel"&&ie.value&&ie.value.stats_yeji_drawer_total_performance_amount!=null&&(q.value={totalAmount:Number(ie.value.stats_yeji_drawer_total_performance_amount),totalOrderCount:Number(ie.value.stats_yeji_drawer_total_performance_order_count??0),channelAmount:Number(ie.value.stats_order_amount_performance??0),channelOrderCount:Number((n==null?void 0:n.count)??0)}),x.value&&se.value&&X.value==="total"&&await _n()}catch(e){if(te.isCancel(e))return;const n=e;ae.error((n==null?void 0:n.msg)||(n==null?void 0:n.message)||"加载业务订单失败"),ke.value=[],_t.value=0,ie.value=null}finally{we.value=!1}}}function ua(t,e,n){const s=!!(x.value&&t.channel_name);X.value=s?(n==null?void 0:n.listTab)??"channel":"channel",q.value=null,at.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)},et.value=`业务订单 · ${e.dept_name}`,tt.value=`创建时间:${t.start_date} ~ ${t.end_date} · 与「合计业绩 / 接诊诊单」同口径:订单创建人人事部门 ∈ 本部门子树 · 不含履约 4/9/10`,Z.value=1,se.value=!0,je()}function pn(t,e,n){const s=!!(x.value&&t.channel_name);X.value=s?n:"channel",q.value=null,at.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)},et.value="业务订单 · 当前展示合计",tt.value=`创建时间:${t.start_date} ~ ${t.end_date} · 已选展示部门 1 个根节点(含其下全部展示行)· 不含履约 4/9/10`,Z.value=1,se.value=!0,je()}function Et(t,e,n){return!(xe(e)||e.dept_id<=0||n==="channel"&&!t.channel_name)}function Ft(t,e){return!(z.value.length!==1||e==="channel"&&!t.channel_name)}function ca(t,e,n){if(!Et(t,e,n))return;ua(t,e,{listTab:n==="total"?"total":"channel"})}function _a(t,e){if(!Ft(t,e))return;const n=z.value[0];if(!n)return;pn(t,n,e==="total"?"total":"channel")}function mn(t,e,n){X.value="channel",q.value=null,at.value={mode:"assistant",assistantId:t.admin_id,assistantName:t.name,start:e,end:n},et.value=`业务订单 · ${t.name}`,tt.value=`创建时间:${e} ~ ${n} · 创建人=${t.name}(与排行榜诊金同口径)· 不含履约 4/9/10`,Z.value=1,se.value=!0,je()}function Vt(t,e,n,s){X.value="channel",q.value=null,at.value={mode:"assistant",assistantId:t.admin_id,assistantName:t.name,start:e,end:n,erCenterRevisitSlot:s};const d=s===0?"复诊合计":it(s);et.value=`业务订单 · ${t.name} · ${d}`,tt.value=`创建时间:${e} ~ ${n} · 创建人=${t.name}(与部门表 / 排行榜复诊同口径)· 仅二中心复诊口径 · ${d} · 不含履约 4/9/10`,Z.value=1,se.value=!0,je()}function vn(t){if(!t||t.admin_id<=0||!S.value||Number(t.revisit_count??0)<=0)return;const{start_date:e,end_date:n}=S.value;Vt({admin_id:t.admin_id,name:t.name},e,n,0)}function fn(t,e){if(!t||t.admin_id<=0||!S.value||le(t,e)<=0)return;const{start_date:n,end_date:s}=S.value;Vt({admin_id:t.admin_id,name:t.name},n,s,e)}function yn(){Z.value=1,je()}function gn(t){Z.value=t,je()}function bn(t){pt.value=t,Z.value=1,je()}function xe(t){return t.dept_id<=0&&t.dept_name==="未归属中心"}function hn(t,e){e.dept_id<=0||xe(e)||Number(e.revisit_count??0)<=0||ma(t,e,0)}function wn(t,e,n){e.dept_id<=0||xe(e)||le(e,n)<=0||ma(t,e,n)}function pa(t){const e=Xt.value;!e||Number(t.order_count)<=0||Vt({admin_id:t.admin_id,name:t.name},e.start,e.end,e.revisitSlot)}async function ma(t,e,n){const s=n===0?"复诊合计":it(n);Kt.value=`${e.dept_name} · ${s} · ${t.start_date} ~ ${t.end_date}`,Xt.value={start:t.start_date,end:t.end_date,revisitSlot:n},Ge.value="",$e.value=[],St.value=!0,ze.value=!0;try{const d={start_date:t.start_date,end_date:t.end_date,dept_id:e.dept_id,revisit_slot:n};z.value.length>0&&(d.dept_ids=z.value.join(",")),x.value&&(d.channel_code=x.value);const g=await Ol(d);$e.value=Array.isArray(g==null?void 0:g.rows)?g.rows:[],Ge.value=typeof(g==null?void 0:g.note)=="string"?g.note:""}catch(d){if(te.isCancel(d))return;const g=d;ae.error((g==null?void 0:g.msg)||(g==null?void 0:g.message)||"加载复诊拆解失败"),$e.value=[],Ge.value=""}finally{ze.value=!1}}function va(t){const e=[`区间:${t.start_date} ~ ${t.end_date}`];return x.value&&e.push(`渠道:${t.channel_name||x.value}`),z.value.length>0&&e.push(`已选展示部门 ${z.value.length} 个`),e.join(" · ")}async function kn(t){Jt.value=va(t),qe.value="",Le.value=[],xt.value=!0,De.value=!0;try{const e={start_date:t.start_date,end_date:t.end_date};z.value.length>0&&(e.dept_ids=z.value.join(",")),x.value&&(e.channel_code=x.value);const n=await Fl(e);Le.value=Array.isArray(n==null?void 0:n.rows)?n.rows:[],qe.value=typeof(n==null?void 0:n.note)=="string"?n.note:""}catch(e){if(te.isCancel(e))return;const n=e;ae.error((n==null?void 0:n.msg)||(n==null?void 0:n.message)||"加载未归属拆解失败"),Le.value=[],qe.value=""}finally{De.value=!1}}function jn(t,e,n){n.dept_id<=0||Number(n.lead_count)<=0||(t.stopPropagation(),Pn(e,n))}function fa(t){return t.dept_id>0&&Number(t.assign_count??0)>0}function xn(t,e,n){fa(n)&&(t.stopPropagation(),Cn(e,n))}function Sn(t){return(he.value-1)*Ee.value+t+1}function Nn(t,e){const n=$t.value;if(!n)return null;const s={start_date:n.start_date,end_date:n.end_date,page:t,page_size:e};return n.mode==="dept"?s.dept_id=n.dept_id:s.assistant_id=n.assistant_id,z.value.length>0&&(s.dept_ids=z.value.join(",")),x.value&&(s.channel_code=x.value),s}async function ft(){const t=Nn(he.value,Ee.value);if(t){ge.value=!0;try{const e=await Vl(t);be.value=Array.isArray(e==null?void 0:e.lists)?e.lists:[],Oe.value=Number((e==null?void 0:e.count)??0),Me.value=typeof(e==null?void 0:e.note)=="string"?e.note:""}catch(e){if(te.isCancel(e))return;const n=e;ae.error((n==null?void 0:n.msg)||(n==null?void 0:n.message)||"加载被指派明细失败"),be.value=[],Oe.value=0,Me.value=""}finally{ge.value=!1}}}async function Cn(t,e){$t.value={mode:"dept",dept_id:e.dept_id,dept_name:e.dept_name,start_date:t.start_date,end_date:t.end_date},zt.value=`${e.dept_name} · ${t.start_date} ~ ${t.end_date}`,Me.value="",be.value=[],Oe.value=0,he.value=1,Ee.value=20,ut.value=!0,await ft()}function Dn(t){if(!t||t.admin_id<=0||!S.value||Number(t.assign_count??0)<=0)return;const e=S.value;$t.value={mode:"assistant",assistant_id:t.admin_id,name:t.name,start_date:e.start_date,end_date:e.end_date},zt.value=`${t.name} · 医助 · ${e.start_date} ~ ${e.end_date}`,Me.value="",be.value=[],Oe.value=0,he.value=1,Ee.value=20,ut.value=!0,ft()}function Ln(t){he.value=t,ft()}function zn(t){Ee.value=t,he.value=1,ft()}const ya=[{key:"event_time_text",label:"进线时间"},{key:"reception_admin_name",label:"接待"},{key:"external_contact_name",label:"客户"},{key:"external_userid",label:"外部联系人ID"},{key:"user_id",label:"企微成员ID"},{key:"state",label:"渠道参数"}];function Bt(t,e,n){const{tb:s,row:d}=t,g={start_date:s.start_date,end_date:s.end_date,dept_id:d.dept_id,page:e,page_size:n};return z.value.length>0&&(g.dept_ids=z.value.join(",")),x.value&&(g.channel_code=x.value),g}function ga(t){const e=t==null?"":String(t);return/[",\n\r]/.test(e)?`"${e.replace(/"/g,'""')}"`:e}function $n(t){const e=ya.map(s=>ga(s.label)).join(","),n=t.map(s=>ya.map(d=>ga(s[d.key])).join(",")).join(`
`);return`\uFEFF${e}
${n}`}function An(t,e){const n=new Blob([e],{type:"text/csv;charset=utf-8;"}),s=URL.createObjectURL(n),d=document.createElement("a");d.href=s,d.download=t,d.click(),URL.revokeObjectURL(s)}function Rn(t){const{tb:e,row:n}=t;return`进线数据明细_${(n.dept_name||`dept${n.dept_id}`).replace(/[\\/:*?"<>|]/g,"_")}_${e.start_date}_${e.end_date}.csv`}async function Yt(){const t=Ct.value;if(t){ue.value=!0;try{const e=await qt(Bt(t,Xe.value,rt.value));Ae.value=Array.isArray(e==null?void 0:e.lists)?e.lists:[],Re.value=Number((e==null?void 0:e.count)??0),Ke.value=typeof(e==null?void 0:e.note)=="string"?e.note:""}catch(e){if(te.isCancel(e))return;const n=e;ae.error((n==null?void 0:n.msg)||(n==null?void 0:n.message)||"加载进线明细失败"),Ae.value=[],Re.value=0,Ke.value=""}finally{ue.value=!1}}}async function Pn(t,e){Ct.value={tb:t,row:e},Zt.value=`${e.dept_name} · ${va(t)}`,Ke.value="",Ae.value=[],Re.value=0,Xe.value=1,rt.value=20,Nt.value=!0,await Yt()}function Tn(t){Xe.value=t,Yt()}function In(t){rt.value=t,Xe.value=1,Yt()}async function Mn(){const t=Ct.value;if(!(!t||Je.value)){Je.value=!0;try{const n=await qt(Bt(t,1,100)),s=Number((n==null?void 0:n.count)??0);if(s<=0){ae.warning("暂无进线明细可导出");return}const d=Array.isArray(n==null?void 0:n.lists)?[...n.lists]:[],g=Math.ceil(s/100);for(let b=2;b<=g;b++){const w=await qt(Bt(t,b,100)),I=Array.isArray(w==null?void 0:w.lists)?w.lists:[];d.push(...I)}An(Rn(t),$n(d)),ae.success(`已导出 ${d.length} 条进线明细`)}catch(e){if(te.isCancel(e))return;const n=e;ae.error((n==null?void 0:n.msg)||(n==null?void 0:n.message)||"导出进线明细失败")}finally{Je.value=!1}}}function On(t){return(ye.value-1)*Ie.value+t+1}function ba(t){return xe(t)?!0:t.dept_id>0}async function yt(){const t=Lt.value;if(t){fe.value=!0;try{const e={start_date:t.start_date,end_date:t.end_date,page:ye.value,page_size:Ie.value};t.mode==="dept"?e.dept_id=t.dept_id:e.assistant_id=t.assistant_id,z.value.length>0&&(e.dept_ids=z.value.join(",")),x.value&&(e.channel_code=x.value);const n=await Bl(e);ce.value=Array.isArray(n==null?void 0:n.lists)?n.lists:[],Te.value=Number((n==null?void 0:n.count)??0),Pe.value=typeof(n==null?void 0:n.note)=="string"?n.note:""}catch(e){if(te.isCancel(e))return;const n=e;ae.error((n==null?void 0:n.msg)||(n==null?void 0:n.message)||"加载挂号明细失败"),ce.value=[],Te.value=0,Pe.value=""}finally{fe.value=!1}}}function En(t){if(!t||t.admin_id<=0||!S.value||Number(t.appointment_count??0)<=0)return;const e=S.value;Lt.value={mode:"assistant",assistant_id:t.admin_id,name:t.name,start_date:e.start_date,end_date:e.end_date},Dt.value=`${t.name} · 医助 · ${e.start_date} ~ ${e.end_date}`,Pe.value="",ce.value=[],Te.value=0,ye.value=1,Ie.value=20,dt.value=!0,yt()}function Fn(t,e){!ba(e)||Number(e.appointment_booked_count??0)<=0||(Lt.value={mode:"dept",dept_id:e.dept_id,dept_name:e.dept_name,start_date:t.start_date,end_date:t.end_date},Dt.value=`${e.dept_name} · ${t.start_date} ~ ${t.end_date}`,Pe.value="",ce.value=[],Te.value=0,ye.value=1,Ie.value=20,dt.value=!0,yt())}function Vn(t){ye.value=t,yt()}function Bn(t){Ie.value=t,ye.value=1,yt()}function Yn(t,e){if(xe(e)){kn(t);return}if(!(e.dept_id<=0)){if(sn(e.dept_id)){z.value=[e.dept_id],Ue();return}ua(t,e)}}function Un(t){if(!t||t.admin_id<=0||!S.value)return;const{start_date:e,end_date:n}=S.value;mn(t,e,n)}function ha(t){const e=t.channel_name?` · ${t.channel_name}`:"";return`${t.label}${e}`}function Hn(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 g=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:g?56:28,containLabel:!1},dataZoom:g?[{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 Wn(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 wa(t){return t.rows.some(e=>Number(e.fee_amount)>0)}function qn(t,e){const s=[...t.rows].filter(d=>Number(d.fee_amount)>0).sort((d,g)=>Number(g.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}
diff --git a/server/public/admin/assets/yeji-edit-C5cZhZMm.js b/server/public/admin/assets/yeji-edit-C5cZhZMm.js
deleted file mode 100644
index 3997821a3..000000000
--- a/server/public/admin/assets/yeji-edit-C5cZhZMm.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as o}from"./yeji-edit.vue_vue_type_script_setup_true_lang-LK6BxgyX.js";import"./.pnpm-Dwh6tNxD.js";import"./self_input_stats-DH_iKZzH.js";import"./index-C0Q8AuuZ.js";import"./index-CfJcNX3X.js";import"./MediaSourceSelect.vue_vue_type_script_setup_true_lang-B_HCfW5z.js";export{o as default};
diff --git a/server/public/admin/assets/yeji-edit-Dyfw1iyh.js b/server/public/admin/assets/yeji-edit-Dyfw1iyh.js
new file mode 100644
index 000000000..4382a8439
--- /dev/null
+++ b/server/public/admin/assets/yeji-edit-Dyfw1iyh.js
@@ -0,0 +1 @@
+import{_ as o}from"./yeji-edit.vue_vue_type_script_setup_true_lang-CtxAqCzP.js";import"./.pnpm-Dwh6tNxD.js";import"./self_input_stats-BENtI0s5.js";import"./index-B6PfZ7nj.js";import"./index-IUalmyB9.js";import"./MediaSourceSelect.vue_vue_type_script_setup_true_lang-B_HCfW5z.js";export{o as default};
diff --git a/server/public/admin/assets/yeji-edit.vue_vue_type_script_setup_true_lang-LK6BxgyX.js b/server/public/admin/assets/yeji-edit.vue_vue_type_script_setup_true_lang-CtxAqCzP.js
similarity index 98%
rename from server/public/admin/assets/yeji-edit.vue_vue_type_script_setup_true_lang-LK6BxgyX.js
rename to server/public/admin/assets/yeji-edit.vue_vue_type_script_setup_true_lang-CtxAqCzP.js
index 5d4aa0a1f..4ca350d64 100644
--- a/server/public/admin/assets/yeji-edit.vue_vue_type_script_setup_true_lang-LK6BxgyX.js
+++ b/server/public/admin/assets/yeji-edit.vue_vue_type_script_setup_true_lang-CtxAqCzP.js
@@ -1 +1 @@
-import{o as C,q as D,r as Y,v as o,D as n,b9 as S,u as l,b6 as q,bp as F,c7 as B,c8 as I,J as M,b7 as L,a8 as f,M as O,p as z,ba as A}from"./.pnpm-Dwh6tNxD.js";import{f as J,h as P}from"./self_input_stats-DH_iKZzH.js";import{_ as T}from"./index-CfJcNX3X.js";import{_ as $}from"./MediaSourceSelect.vue_vue_type_script_setup_true_lang-B_HCfW5z.js";const G={class:"edit-popup"},X=C({__name:"yeji-edit",props:{mediaSourceOptions:{default:()=>[]},mediaSourceLoading:{type:Boolean,default:!1}},emits:["success","close"],setup(s,{expose:b,emit:V}){const i=V,c=f(),m=f(),_=O("add"),w=z(()=>_.value==="edit"?"编辑业绩":"新增业绩"),e=A({id:"",yeji_date:"",media_source:"",add_fans_count:0,total_open_count:0,unreplied_count:0,paid_appointment_count:0,free_appointment_count:0,interview_count:0,order_amount:0,completed_order_count:0,remark:""}),g={yeji_date:[{required:!0,message:"请选择业绩日期",trigger:["change"]}],media_source:[{required:!0,message:"请填写自媒体来源",trigger:["blur"]}],add_fans_count:[{required:!0,message:"请填写加粉数",trigger:["blur","change"]}]},v=()=>{e.id="",e.yeji_date="",e.media_source="",e.add_fans_count=0,e.total_open_count=0,e.unreplied_count=0,e.paid_appointment_count=0,e.free_appointment_count=0,e.interview_count=0,e.order_amount=0,e.completed_order_count=0,e.remark=""},y=async()=>{var u,t;await((u=c.value)==null?void 0:u.validate()),_.value==="edit"?await J(e):await P(e),(t=m.value)==null||t.close(),i("success")},k=(u="add")=>{var t;_.value=u,v(),(t=m.value)==null||t.open()},j=u=>{e.id=u.id??"",e.yeji_date=u.yeji_date??"",e.media_source=u.media_source??"",e.add_fans_count=Number(u.add_fans_count??0),e.total_open_count=Number(u.total_open_count??0),e.unreplied_count=Number(u.unreplied_count??0),e.paid_appointment_count=Number(u.paid_appointment_count??0),e.free_appointment_count=Number(u.free_appointment_count??0),e.interview_count=Number(u.interview_count??0),e.order_amount=Number(u.order_amount??0),e.completed_order_count=Number(u.completed_order_count??0),e.remark=u.remark??""},U=()=>{i("close")};return b({open:k,setFormData:j}),(u,t)=>{const N=F,d=q,r=M,p=I,x=B,E=L,R=S;return D(),Y("div",G,[o(T,{ref_key:"popupRef",ref:m,title:l(w),async:!0,width:"640px",onConfirm:y,onClose:U},{default:n(()=>[o(R,{ref_key:"formRef",ref:c,model:l(e),"label-width":"110px",rules:g},{default:n(()=>[o(d,{label:"业绩日期",prop:"yeji_date"},{default:n(()=>[o(N,{modelValue:l(e).yeji_date,"onUpdate:modelValue":t[0]||(t[0]=a=>l(e).yeji_date=a),type:"date","value-format":"YYYY-MM-DD",placeholder:"请选择日期",disabled:l(_)==="edit",class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),o(d,{label:"自媒体来源",prop:"media_source"},{default:n(()=>[o($,{modelValue:l(e).media_source,"onUpdate:modelValue":t[1]||(t[1]=a=>l(e).media_source=a),options:s.mediaSourceOptions,loading:s.mediaSourceLoading,placeholder:"请选择自媒体来源","allow-create":!1,disabled:l(_)==="edit","select-class":"w-full"},null,8,["modelValue","options","loading","disabled"])]),_:1}),o(x,{gutter:16},{default:n(()=>[o(p,{span:12},{default:n(()=>[o(d,{label:"加粉数",prop:"add_fans_count"},{default:n(()=>[o(r,{modelValue:l(e).add_fans_count,"onUpdate:modelValue":t[2]||(t[2]=a=>l(e).add_fans_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"总开口",prop:"total_open_count"},{default:n(()=>[o(r,{modelValue:l(e).total_open_count,"onUpdate:modelValue":t[3]||(t[3]=a=>l(e).total_open_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"未回复",prop:"unreplied_count"},{default:n(()=>[o(r,{modelValue:l(e).unreplied_count,"onUpdate:modelValue":t[4]||(t[4]=a=>l(e).unreplied_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"付费挂号",prop:"paid_appointment_count"},{default:n(()=>[o(r,{modelValue:l(e).paid_appointment_count,"onUpdate:modelValue":t[5]||(t[5]=a=>l(e).paid_appointment_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"免费挂号",prop:"free_appointment_count"},{default:n(()=>[o(r,{modelValue:l(e).free_appointment_count,"onUpdate:modelValue":t[6]||(t[6]=a=>l(e).free_appointment_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"面诊",prop:"interview_count"},{default:n(()=>[o(r,{modelValue:l(e).interview_count,"onUpdate:modelValue":t[7]||(t[7]=a=>l(e).interview_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"订单金额",prop:"order_amount"},{default:n(()=>[o(r,{modelValue:l(e).order_amount,"onUpdate:modelValue":t[8]||(t[8]=a=>l(e).order_amount=a),min:0,step:.01,precision:2,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"接诊诊单",prop:"completed_order_count"},{default:n(()=>[o(r,{modelValue:l(e).completed_order_count,"onUpdate:modelValue":t[9]||(t[9]=a=>l(e).completed_order_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(d,{label:"备注",prop:"remark"},{default:n(()=>[o(E,{modelValue:l(e).remark,"onUpdate:modelValue":t[10]||(t[10]=a=>l(e).remark=a),type:"textarea",autosize:{minRows:3,maxRows:5},maxlength:"255","show-word-limit":"",placeholder:"选填"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{X as _};
+import{o as C,q as D,r as Y,v as o,D as n,b9 as S,u as l,b6 as q,bp as F,c7 as B,c8 as I,J as M,b7 as L,a8 as f,M as O,p as z,ba as A}from"./.pnpm-Dwh6tNxD.js";import{f as J,h as P}from"./self_input_stats-BENtI0s5.js";import{_ as T}from"./index-IUalmyB9.js";import{_ as $}from"./MediaSourceSelect.vue_vue_type_script_setup_true_lang-B_HCfW5z.js";const G={class:"edit-popup"},X=C({__name:"yeji-edit",props:{mediaSourceOptions:{default:()=>[]},mediaSourceLoading:{type:Boolean,default:!1}},emits:["success","close"],setup(s,{expose:b,emit:V}){const i=V,c=f(),m=f(),_=O("add"),w=z(()=>_.value==="edit"?"编辑业绩":"新增业绩"),e=A({id:"",yeji_date:"",media_source:"",add_fans_count:0,total_open_count:0,unreplied_count:0,paid_appointment_count:0,free_appointment_count:0,interview_count:0,order_amount:0,completed_order_count:0,remark:""}),g={yeji_date:[{required:!0,message:"请选择业绩日期",trigger:["change"]}],media_source:[{required:!0,message:"请填写自媒体来源",trigger:["blur"]}],add_fans_count:[{required:!0,message:"请填写加粉数",trigger:["blur","change"]}]},v=()=>{e.id="",e.yeji_date="",e.media_source="",e.add_fans_count=0,e.total_open_count=0,e.unreplied_count=0,e.paid_appointment_count=0,e.free_appointment_count=0,e.interview_count=0,e.order_amount=0,e.completed_order_count=0,e.remark=""},y=async()=>{var u,t;await((u=c.value)==null?void 0:u.validate()),_.value==="edit"?await J(e):await P(e),(t=m.value)==null||t.close(),i("success")},k=(u="add")=>{var t;_.value=u,v(),(t=m.value)==null||t.open()},j=u=>{e.id=u.id??"",e.yeji_date=u.yeji_date??"",e.media_source=u.media_source??"",e.add_fans_count=Number(u.add_fans_count??0),e.total_open_count=Number(u.total_open_count??0),e.unreplied_count=Number(u.unreplied_count??0),e.paid_appointment_count=Number(u.paid_appointment_count??0),e.free_appointment_count=Number(u.free_appointment_count??0),e.interview_count=Number(u.interview_count??0),e.order_amount=Number(u.order_amount??0),e.completed_order_count=Number(u.completed_order_count??0),e.remark=u.remark??""},U=()=>{i("close")};return b({open:k,setFormData:j}),(u,t)=>{const N=F,d=q,r=M,p=I,x=B,E=L,R=S;return D(),Y("div",G,[o(T,{ref_key:"popupRef",ref:m,title:l(w),async:!0,width:"640px",onConfirm:y,onClose:U},{default:n(()=>[o(R,{ref_key:"formRef",ref:c,model:l(e),"label-width":"110px",rules:g},{default:n(()=>[o(d,{label:"业绩日期",prop:"yeji_date"},{default:n(()=>[o(N,{modelValue:l(e).yeji_date,"onUpdate:modelValue":t[0]||(t[0]=a=>l(e).yeji_date=a),type:"date","value-format":"YYYY-MM-DD",placeholder:"请选择日期",disabled:l(_)==="edit",class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),o(d,{label:"自媒体来源",prop:"media_source"},{default:n(()=>[o($,{modelValue:l(e).media_source,"onUpdate:modelValue":t[1]||(t[1]=a=>l(e).media_source=a),options:s.mediaSourceOptions,loading:s.mediaSourceLoading,placeholder:"请选择自媒体来源","allow-create":!1,disabled:l(_)==="edit","select-class":"w-full"},null,8,["modelValue","options","loading","disabled"])]),_:1}),o(x,{gutter:16},{default:n(()=>[o(p,{span:12},{default:n(()=>[o(d,{label:"加粉数",prop:"add_fans_count"},{default:n(()=>[o(r,{modelValue:l(e).add_fans_count,"onUpdate:modelValue":t[2]||(t[2]=a=>l(e).add_fans_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"总开口",prop:"total_open_count"},{default:n(()=>[o(r,{modelValue:l(e).total_open_count,"onUpdate:modelValue":t[3]||(t[3]=a=>l(e).total_open_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"未回复",prop:"unreplied_count"},{default:n(()=>[o(r,{modelValue:l(e).unreplied_count,"onUpdate:modelValue":t[4]||(t[4]=a=>l(e).unreplied_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"付费挂号",prop:"paid_appointment_count"},{default:n(()=>[o(r,{modelValue:l(e).paid_appointment_count,"onUpdate:modelValue":t[5]||(t[5]=a=>l(e).paid_appointment_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"免费挂号",prop:"free_appointment_count"},{default:n(()=>[o(r,{modelValue:l(e).free_appointment_count,"onUpdate:modelValue":t[6]||(t[6]=a=>l(e).free_appointment_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"面诊",prop:"interview_count"},{default:n(()=>[o(r,{modelValue:l(e).interview_count,"onUpdate:modelValue":t[7]||(t[7]=a=>l(e).interview_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"订单金额",prop:"order_amount"},{default:n(()=>[o(r,{modelValue:l(e).order_amount,"onUpdate:modelValue":t[8]||(t[8]=a=>l(e).order_amount=a),min:0,step:.01,precision:2,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(p,{span:12},{default:n(()=>[o(d,{label:"接诊诊单",prop:"completed_order_count"},{default:n(()=>[o(r,{modelValue:l(e).completed_order_count,"onUpdate:modelValue":t[9]||(t[9]=a=>l(e).completed_order_count=a),min:0,step:1,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(d,{label:"备注",prop:"remark"},{default:n(()=>[o(E,{modelValue:l(e).remark,"onUpdate:modelValue":t[10]||(t[10]=a=>l(e).remark=a),type:"textarea",autosize:{minRows:3,maxRows:5},maxlength:"255","show-word-limit":"",placeholder:"选填"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{X as _};
diff --git a/server/public/admin/index.html b/server/public/admin/index.html
index a0f32f4f3..a75b4964f 100644
--- a/server/public/admin/index.html
+++ b/server/public/admin/index.html
@@ -163,7 +163,7 @@
z-index: 2147483641;
}
-
+
diff --git a/server/tests/ConversionFanEventRuleTest.php b/server/tests/ConversionFanEventRuleTest.php
index f5ac5372b..514b3b288 100644
--- a/server/tests/ConversionFanEventRuleTest.php
+++ b/server/tests/ConversionFanEventRuleTest.php
@@ -13,7 +13,7 @@ function conversionFanRuleExpect(bool $condition, string $message): void
}
}
-$method = new ReflectionMethod(ConversionLogic::class, 'loadFanRows');
+$method = new ReflectionMethod(ConversionLogic::class, 'loadFanDetailRows');
$sourceLines = file($method->getFileName());
if ($sourceLines === false) {
throw new RuntimeException('无法读取加粉统计源码');
@@ -33,7 +33,8 @@ conversionFanRuleExpect(
'会话存档同意是独立能力,不能再次成为加粉统计的硬性条件'
);
conversionFanRuleExpect(
- str_contains($methodSource, "['del_external_contact', \$endTimestamp]"),
+ str_contains($methodSource, "'del_external_contact'")
+ && str_contains($methodSource, 'surviving_del.event_time >= surviving_e.event_time'),
'加粉统计必须继续识别区间内已删除客户'
);
conversionFanRuleExpect(
diff --git a/server/tests/FirstVisitConversionFanDetailSmokeTest.php b/server/tests/FirstVisitConversionFanDetailSmokeTest.php
new file mode 100644
index 000000000..45827e39a
--- /dev/null
+++ b/server/tests/FirstVisitConversionFanDetailSmokeTest.php
@@ -0,0 +1,183 @@
+initialize();
+
+$admin = Db::name('admin')->where('root', 1)->whereNull('delete_time')->find();
+if (!$admin) {
+ echo "FAN_DETAIL_DB_SMOKE_SKIP no_root\n";
+ exit(0);
+}
+
+$params = [
+ 'time_type' => 'custom',
+ 'start_date' => '2026-08-01',
+ 'end_date' => '2026-08-25',
+];
+$overviewStartedAt = microtime(true);
+$overview = FirstVisitConversionLogic::overview($params, (int) $admin['id'], $admin);
+$overviewElapsedMs = (microtime(true) - $overviewStartedAt) * 1000;
+$candidates = [];
+$collect = static function (array $rows, array $path = []) use (&$collect, &$candidates): void {
+ foreach ($rows as $row) {
+ if (!is_array($row)) {
+ continue;
+ }
+ $rowPath = array_merge($path, [(string) ($row['name'] ?? $row['id'] ?? '')]);
+ if ((int) ($row['add_fans_count'] ?? 0) > 0) {
+ $row['_smoke_path'] = implode('/', $rowPath);
+ $candidates[] = $row;
+ }
+ $collect(is_array($row['children'] ?? null) ? $row['children'] : [], $rowPath);
+ }
+};
+$collect(is_array($overview['rows'] ?? null) ? $overview['rows'] : []);
+if ($candidates === []) {
+ echo "FAN_DETAIL_DB_SMOKE_SKIP no_fans\n";
+ exit(0);
+}
+
+usort($candidates, static function (array $left, array $right): int {
+ $leftCenter = str_contains((string) ($left['_smoke_path'] ?? ''), '郑州二中心') ? 0 : 1;
+ $rightCenter = str_contains((string) ($right['_smoke_path'] ?? ''), '郑州二中心') ? 0 : 1;
+ $leftMember = in_array((string) ($left['type'] ?? ''), ['member', 'unbound'], true) ? 0 : 1;
+ $rightMember = in_array((string) ($right['type'] ?? ''), ['member', 'unbound'], true) ? 0 : 1;
+
+ return ($leftCenter <=> $rightCenter)
+ ?: ($leftMember <=> $rightMember)
+ ?: ((int) ($left['add_fans_count'] ?? 0) <=> (int) ($right['add_fans_count'] ?? 0));
+});
+
+$row = $candidates[0];
+$entityType = in_array((string) ($row['type'] ?? ''), ['member', 'unbound'], true)
+ ? 'member'
+ : 'dept';
+$detailStartedAt = microtime(true);
+$detail = FirstVisitConversionLogic::fansDetail($params + [
+ 'entity_type' => $entityType,
+ 'entity_id' => (string) ($row['id'] ?? ''),
+ 'admin_id' => (int) ($row['admin_id'] ?? 0),
+ 'page_no' => 1,
+ 'page_size' => 100,
+], (int) $admin['id'], $admin);
+$detailElapsedMs = (microtime(true) - $detailStartedAt) * 1000;
+
+if ((int) ($detail['count'] ?? -1) !== (int) ($row['add_fans_count'] ?? 0)) {
+ throw new RuntimeException('Fan detail count does not match the clicked add_fans_count row');
+}
+if ((int) ($detail['entity']['deleted_fans_count'] ?? -1) !== (int) ($row['deleted_fans_count'] ?? 0)) {
+ throw new RuntimeException('Fan detail entity metadata lost deleted_fans_count');
+}
+
+foreach ($detail['lists'] ?? [] as $fan) {
+ foreach (['external_userid', 'customer_name', 'wecom_userid', 'wecom_staff_name', 'add_time', 'is_deleted', 'delete_time'] as $field) {
+ if (!array_key_exists($field, $fan)) {
+ throw new RuntimeException("Fan detail row is missing {$field}");
+ }
+ }
+}
+
+$forgedDetail = FirstVisitConversionLogic::fansDetail($params + [
+ 'entity_type' => 'member',
+ 'entity_id' => 'M999999_-2',
+ 'admin_id' => 999999,
+ 'page_no' => 1,
+ 'page_size' => 1,
+], (int) $admin['id'], $admin);
+if ((int) ($forgedDetail['count'] ?? -1) !== 0 || ($forgedDetail['entity'] ?? null) !== null) {
+ throw new RuntimeException('Forged fan-detail entity did not fail closed');
+}
+
+$centerDetailElapsedMs = 0.0;
+$centerDetailCount = -1;
+$centerRows = array_values(array_filter($candidates, static fn (array $candidate): bool =>
+ !in_array((string) ($candidate['type'] ?? ''), ['member', 'unbound'], true)
+ && str_contains((string) ($candidate['name'] ?? ''), '郑州二中心')
+));
+if ($centerRows !== []) {
+ $centerRow = $centerRows[0];
+ $centerStartedAt = microtime(true);
+ $centerDetail = FirstVisitConversionLogic::fansDetail($params + [
+ 'entity_type' => 'dept',
+ 'entity_id' => (string) ($centerRow['id'] ?? ''),
+ 'page_no' => 1,
+ 'page_size' => 100,
+ ], (int) $admin['id'], $admin);
+ $centerDetailElapsedMs = (microtime(true) - $centerStartedAt) * 1000;
+ $centerDetailCount = (int) ($centerDetail['count'] ?? -1);
+ if ($centerDetailCount !== (int) ($centerRow['add_fans_count'] ?? 0)
+ || (int) ($centerDetail['entity']['deleted_fans_count'] ?? -1)
+ !== (int) ($centerRow['deleted_fans_count'] ?? 0)
+ ) {
+ throw new RuntimeException('郑州二中心 detail count does not match overview');
+ }
+}
+
+$parentCandidates = array_values(array_filter($candidates, static function (array $candidate): bool {
+ foreach (is_array($candidate['children'] ?? null) ? $candidate['children'] : [] as $child) {
+ if (is_array($child) && !in_array((string) ($child['type'] ?? ''), ['member', 'unbound'], true)) {
+ return true;
+ }
+ }
+
+ return false;
+}));
+$parentChecked = false;
+if ($parentCandidates !== []) {
+ usort(
+ $parentCandidates,
+ static fn (array $left, array $right): int => ((int) ($left['add_fans_count'] ?? 0))
+ <=> ((int) ($right['add_fans_count'] ?? 0))
+ );
+ $parentRow = $parentCandidates[0];
+ $parentDeptIds = [];
+ $collectDeptIds = static function (array $node) use (&$collectDeptIds, &$parentDeptIds): void {
+ if (in_array((string) ($node['type'] ?? ''), ['member', 'unbound'], true)) {
+ return;
+ }
+ $parentDeptIds[(int) ($node['id'] ?? 0)] = true;
+ foreach (is_array($node['children'] ?? null) ? $node['children'] : [] as $child) {
+ if (is_array($child)) {
+ $collectDeptIds($child);
+ }
+ }
+ };
+ $collectDeptIds($parentRow);
+ $parentDetail = ConversionLogic::fanDetails([
+ 'dimension' => 'dept',
+ 'time_type' => 'custom',
+ 'start_date' => (string) ($overview['meta']['start_date'] ?? ''),
+ 'end_date' => (string) ($overview['meta']['end_date'] ?? ''),
+ 'page_no' => 1,
+ 'page_size' => 1,
+ ], [
+ 'type' => 'dept',
+ 'dept_ids' => array_keys($parentDeptIds),
+ ], (int) $admin['id'], $admin);
+ if ((int) ($parentDetail['count'] ?? -1) !== (int) ($parentRow['add_fans_count'] ?? 0)) {
+ throw new RuntimeException('Parent department fan detail does not include the same descendant total as overview');
+ }
+ $parentChecked = true;
+}
+
+echo sprintf(
+ "FAN_DETAIL_DB_SMOKE_OK range=2026-08-01..2026-08-25 type=%s entity=%s path=%s count=%d deleted=%d parent=%d overview_ms=%.1f detail_ms=%.1f center_count=%d center_detail_ms=%.1f forged=0\n",
+ $entityType,
+ (string) ($row['name'] ?? $row['id'] ?? ''),
+ (string) ($row['_smoke_path'] ?? ''),
+ (int) $detail['count'],
+ (int) ($detail['entity']['deleted_fans_count'] ?? 0),
+ $parentChecked ? 1 : 0,
+ $overviewElapsedMs,
+ $detailElapsedMs,
+ $centerDetailCount,
+ $centerDetailElapsedMs
+);
diff --git a/server/tests/FirstVisitConversionFanDetailTest.php b/server/tests/FirstVisitConversionFanDetailTest.php
new file mode 100644
index 000000000..b38bb82ec
--- /dev/null
+++ b/server/tests/FirstVisitConversionFanDetailTest.php
@@ -0,0 +1,83 @@
+getFileName());
+conversionFanDetailExpect(is_string($conversionSource), 'Unable to read ConversionLogic source');
+$buildDetailRows = (new ReflectionClass(ConversionLogic::class))->getMethod('buildFanDetailRows');
+$buildDetailRows->setAccessible(true);
+$detailRows = $buildDetailRows->invoke(null, [
+ ['user_id' => 'staff-a', 'external_userid' => 'readded', 'add_time' => 100],
+ ['user_id' => 'staff-a', 'external_userid' => 'readded', 'add_time' => 200],
+ ['user_id' => 'staff-b', 'external_userid' => 'deleted', 'add_time' => 300],
+], [
+ ['user_id' => 'staff-a', 'external_userid' => 'readded', 'add_time' => 200],
+]);
+conversionFanDetailExpect(
+ count($detailRows) === 2
+ && (int) ($detailRows[0]['add_time'] ?? 0) === 100
+ && empty($detailRows[0]['is_deleted'])
+ && !empty($detailRows[1]['is_deleted']),
+ 'Delete/re-add details must retain the first counted add time and final deletion state'
+);
+conversionFanDetailExpect(
+ str_contains($conversionSource, 'self::loadFanDetailRows($startTimestamp, $endTimestamp, $mediaChannel, $adminIds)')
+ && str_contains($conversionSource, 'MIN(e.event_time) AS add_time')
+ && str_contains($conversionSource, "->where('e.event_time', 'between', [\$startTimestamp, \$endTimestamp])")
+ && str_contains($conversionSource, 'EXISTS (SELECT 1 FROM `')
+ && str_contains($conversionSource, 'MAX(event_time) AS delete_time'),
+ 'Aggregate and detail results must share the same distinct fan-pair loader and expose event times'
+);
+conversionFanDetailExpect(
+ str_contains($conversionSource, "'external_userid' => \$externalUserId")
+ && str_contains($conversionSource, "'customer_name'")
+ && str_contains($conversionSource, "'wecom_staff_name'")
+ && str_contains($conversionSource, "'is_deleted'")
+ && str_contains($conversionSource, "'delete_time'"),
+ 'Fan detail response must expose customer, employee, add and deletion fields'
+);
+
+$firstVisitSource = file_get_contents($firstVisitReflection->getFileName());
+conversionFanDetailExpect(
+ is_string($firstVisitSource)
+ && !str_contains($firstVisitSource, '$dashboard = self::overview($params, $adminId, $adminInfo);')
+ && str_contains($firstVisitSource, 'resolveFanDetailEntity(')
+ && str_contains($firstVisitSource, 'resolveFanDetailMemberDeptId(')
+ && str_contains($firstVisitSource, "['channel_dept_ids']")
+ && str_contains($firstVisitSource, "preg_match('/^M([1-9]\\d*)_(-?\\d+)$/', \$entityId")
+ && str_contains($firstVisitSource, "MediaChannelService::getCurrentTagChannelByCode"),
+ 'Fan detail must authorize the exact structural entity without recomputing overview and retain current-tag channel scope'
+);
+conversionFanDetailExpect(
+ str_contains($conversionSource, '$targetWorkWechatUserIds')
+ && str_contains($conversionSource, 'fanDetailChannelDeptIds($mediaChannel)')
+ && str_contains($conversionSource, 'filterEntitiesByChannelDeptScope(')
+ && str_contains($conversionSource, 'NOT EXISTS (SELECT 1 FROM `')
+ && str_contains($conversionSource, "':wecom:'")
+ && str_contains($conversionSource, '$matched = $pairs;'),
+ 'Fan detail must narrow the event query to the clicked employees/WeCom user before sorting and pagination'
+);
+
+$controllerSource = file_get_contents(dirname(__DIR__) . '/app/adminapi/controller/firstvisit/ConversionController.php');
+conversionFanDetailExpect(
+ is_string($controllerSource)
+ && str_contains($controllerSource, 'public function fansDetail()')
+ && str_contains($controllerSource, 'FirstVisitConversionLogic::fansDetail('),
+ 'First-visit conversion controller must expose the fansDetail endpoint'
+);
+
+echo "FirstVisitConversionFanDetailTest passed\n";
diff --git a/server/tests/QywxPromotionMemberRangeTest.php b/server/tests/QywxPromotionMemberRangeTest.php
new file mode 100644
index 000000000..c5799c4d8
--- /dev/null
+++ b/server/tests/QywxPromotionMemberRangeTest.php
@@ -0,0 +1,40 @@
+ 1, 'userid' => 'A', 'enabled' => 1, 'weight' => 100, 'current_weight' => 9, 'daily_limit' => 0, 'today_count' => 0, 'today_date' => $today],
+ ['id' => 2, 'userid' => 'B', 'enabled' => 0, 'weight' => 1, 'current_weight' => -3, 'daily_limit' => 0, 'today_count' => 0, 'today_date' => $today],
+ ['id' => 3, 'userid' => 'C', 'enabled' => 1, 'weight' => 1, 'current_weight' => 4, 'daily_limit' => 3, 'today_count' => 3, 'today_date' => $today],
+ ['id' => 4, 'userid' => 'D', 'enabled' => 1, 'weight' => 1, 'current_weight' => 1, 'daily_limit' => 1, 'today_count' => 1, 'today_date' => '2026-08-24'],
+ ['id' => 5, 'userid' => 'E', 'enabled' => 1, 'weight' => 1, 'current_weight' => 0, 'daily_limit' => 0, 'today_count' => 0, 'today_date' => $today, 'active_start' => $now + 1],
+ ['id' => 6, 'userid' => 'F', 'enabled' => 1, 'weight' => 1, 'current_weight' => 0, 'daily_limit' => 0, 'today_count' => 0, 'today_date' => $today, 'active_end' => $now - 1],
+], $today, $now);
+$assert($range['userids'] === ['A', 'D'], '官方多人路由范围没有正确排除禁用或达到上限的成员');
+$assert($range['userids'] === ['A', 'D'], '逐成员权重不得改变企业微信原生多人范围');
+$assert($range['eligible_count'] === 2, '可用成员数量错误');
+$assert($range['members'][3]['today_count'] === 0, '跨日数量没有自动重置');
+$assert(array_column($range['members'], 'current_weight') === [0, 0, 0, 0, 0, 0], '旧版调度游标没有归零');
+$assert(QywxPromotionMemberRange::same(['B', 'A', 'A'], ['A', 'B']), '成员范围比较不应受顺序和重复值影响');
+$assert(!QywxPromotionMemberRange::same(['A'], ['A', 'B']), '不同成员范围被错误判定为相同');
+$assert(QywxPromotionMemberSchedulerService::poolIdFromState('zyt_pool:123') === 123, 'customer_channel 方案 ID 解析失败');
+$assert(QywxPromotionMemberSchedulerService::poolIdFromState('qywx_ca:123') === 0, '不应接管其他系统的 customer_channel');
+$empty = QywxPromotionMemberRange::evaluate([
+ ['id' => 7, 'userid' => 'G', 'enabled' => 0, 'today_date' => $today],
+], $today, $now);
+$assert($empty['userids'] === [] && $empty['eligible_count'] === 0, '零可用成员必须返回空范围并交由同步层阻止远端更新');
+
+echo "QYWX_PROMOTION_MEMBER_RANGE_OK\n";
diff --git a/server/tests/WecomPromotionDeletePoolBehaviorTest.php b/server/tests/WecomPromotionDeletePoolBehaviorTest.php
new file mode 100644
index 000000000..864af7080
--- /dev/null
+++ b/server/tests/WecomPromotionDeletePoolBehaviorTest.php
@@ -0,0 +1,123 @@
+initialize();
+
+final class PromotionDeleteApiFake extends QywxCustomerAcquisitionApiService
+{
+ /** @var list