import{p as Pe,q as ht,r as b,s as V,d as be,j as se,k as a,c as l,v as oe,a as e,t as v,e as M,F as ge,x as we,y as Ve,f as ye,g as $e,w as E,l as H,_ as ke,z as Be,A as Ut,o as Ke,B as Xe,C as A,b as C,D as qe,E as ie,G as Nt,H as jt,I as Me,J as De,K as St,L as yt,M as He,N as Mt,O as Wt,P as qt,m as At,Q as bt,R as Ft,S as Ht,T as Kt,U as Xt,V as Yt,W as kt,X as nt,Y as tt,Z as Rt,$ as Qt,u as ut,a0 as Gt,a1 as Jt,a2 as Zt,a3 as en,a4 as tn,a5 as nn,a6 as an}from"./index-BKZMRyW7.js";import{A as sn}from"./AiAssistantPanel-B0MZq-4C.js";async function on(t){const n={};return await Pe.get("/quick-replies",{params:n})}async function ln(t){return await Pe.post("/quick-replies",t)}async function rn(t,n){return await Pe.put(`/quick-replies/${t}`,n)}async function cn(t){await Pe.delete(`/quick-replies/${t}`)}const wt=ht("quickReply",()=>{const t=b([]),n=b(!1),r=V(()=>{const h={};for(const _ of t.value)h[_.category]||(h[_.category]=[]),h[_.category].push(_);return h}),d=V(()=>Object.keys(r.value));async function u(){try{n.value=!0;const h=await on();t.value=h.items}catch(h){console.error("获取快速回复模板失败:",h)}finally{n.value=!1}}async function c(h){try{const _=await ln(h);return await u(),_}catch(_){return console.error("创建快速回复模板失败:",_),null}}async function s(h,_){try{const O=await rn(h,_);return await u(),O}catch(O){return console.error("更新快速回复模板失败:",O),null}}async function o(h){try{await cn(h),await u()}catch(_){console.error("删除快速回复模板失败:",_)}}function i(h,_){let O=h;for(const[P,U]of Object.entries(_))O=O.replaceAll(`{${P}}`,U);return O}return{templates:t,loading:n,templatesByCategory:r,categories:d,fetchTemplates:u,addTemplate:c,editTemplate:s,removeTemplate:o,replaceVariables:i}}),Lt="it_desk_theme";function ct(t){document.documentElement.setAttribute("data-theme",t),localStorage.setItem(Lt,t)}function _t(){const t=localStorage.getItem(Lt);return t==="dark"||t==="light"?t:window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function un(){const t=_t();return ct(t),{applyTheme:ct,getInitialTheme:_t}}const Et=ht("theme",()=>{const t=b("light");function n(){const d=t.value==="light"?"dark":"light";t.value=d,ct(d)}function r(){const d=_t();t.value=d,ct(d)}return{currentTheme:t,toggleTheme:n,initTheme:r}});async function dn(t){return await Pe.get("/todo-items",{params:t})}async function vn(t){return await Pe.get("/todo-items",{params:{...t,_force:1}})}async function mn(t,n){return await Pe.put(`/todo-items/${t}/status`,{status:n})}const $t=ht("todo",()=>{const t=b([]),n=b(null),r=b(!1),d=b("all"),u=V(()=>t.value.filter(P=>P.priority==="urgent").length),c=V(()=>t.value.filter(P=>P.priority==="high").length),s=V(()=>t.value.filter(P=>P.status==="pending"||P.status==="processing"));async function o(){try{r.value=!0;const P=d.value!=="all"?{type:d.value}:void 0,U=await dn(P);t.value=U.items}catch(P){console.error("获取待办列表失败:",P),t.value=[]}finally{r.value=!1}}async function i(){try{r.value=!0;const P=d.value!=="all"?{type:d.value}:void 0,U=await vn(P);t.value=U.items}catch(P){console.error("刷新待办列表失败:",P),t.value=[]}finally{r.value=!1}}async function h(P){d.value=P,await o()}function _(P){n.value=P}async function O(P,U){try{await mn(P,U),await o()}catch(w){console.error("更新待办状态失败:",w)}}return{todoList:t,currentTodoItem:n,loading:r,activeType:d,urgentCount:u,highCount:c,pendingTodos:s,fetchTodoList:o,refreshList:i,setActiveType:h,selectTodoItem:_,updateTodoItemStatus:O}}),fn={class:"conv-avatar-wrap"},pn=["src"],gn=["title"],yn={class:"conversation-info"},_n={class:"conversation-name"},hn={key:0,title:"已置顶"},bn={key:1,title:"代办"},kn={class:"text-ellipsis"},wn={key:2,class:"tag-badge tag-badge-vip"},$n={key:3,class:"tag-badge tag-badge-hand-raise"},Cn={key:4,class:"tag-badge tag-badge-need-intervene"},xn={key:6,class:"tag-badge tag-badge-agent"},In={key:7,class:"tag-badge tag-badge-pending-close"},Tn={class:"priority-icons"},Sn=["title"],Mn={class:"conversation-summary-row"},An={class:"conversation-summary"},Rn={class:"conversation-time"},Ln={class:"conversation-meta"},En={class:"urgency-stars"},Dn=["title"],Pn=be({__name:"ConversationItem",props:{conversation:{},active:{type:Boolean},showGrab:{type:Boolean,default:!1},showLeave:{type:Boolean,default:!1},section:{default:"my"}},emits:["click","grab","leave"],setup(t){const n=[{key:"is_blocking",icon:"⛔",cssClass:"pi-blocked",bg:"var(--color-danger)",title:"阻断性问题"},{key:"impact_scope",icon:"👥",cssClass:"pi-impact",bg:"var(--color-warning)",highThreshold:5,title:"影响范围广"},{key:"role_level",icon:"⭐",cssClass:"pi-role",bg:"var(--purple)",title:"高角色等级"},{key:"is_repeat",icon:"🔁",cssClass:"pi-repeat",bg:"var(--color-warning)",title:"重复问题"}],r=["av-blue","av-green","av-orange","av-purple","av-red","av-teal","av-pink"],d=["ta-blue","ta-green","ta-orange","ta-purple","ta-red","ta-teal","ta-pink"];function u(B){let k=0;for(let Z=0;Z!!c.conversation.avatar),o=b(!1),i=V(()=>{const B=c.conversation.employee_name;return B?B.charAt(B.length-1):"?"}),h=V(()=>{const B=c.conversation.employee_name||"unknown";return r[u(B)]}),_=V(()=>{var B,k;return c.conversation.status==="queued"||(B=c.conversation.tags)!=null&&B.hand_raise||(k=c.conversation.tags)!=null&&k.need_intervene?!0:c.conversation.status==="resolved"?!1:c.conversation.status==="serving"}),O=V(()=>{var B,k,Z,I;return(B=c.conversation.tags)!=null&&B.hand_raise||c.conversation.is_blocking||(k=c.conversation.tags)!=null&&k.need_intervene||((Z=c.conversation.tags)==null?void 0:Z.emotion)==="angry"||((I=c.conversation.tags)==null?void 0:I.emotion)==="urgent"?"dot-urgent":c.conversation.status==="resolved"?"":(c.conversation.status==="queued","dot-normal")}),P=V(()=>O.value==="dot-urgent"?"紧急新消息":O.value==="dot-normal"?"有新消息":"新消息"),U=V(()=>c.section!=="history"),w=V(()=>{if(c.section==="colleague")return c.conversation.assigned_agent_name?c.conversation.assigned_agent_name.charAt(c.conversation.assigned_agent_name.length-1):"?";const B=c.conversation.employee_name;return B?B.charAt(B.length-1):"?"}),W=V(()=>{if(c.section==="colleague"){const k=c.conversation.assigned_agent_name||"unknown";return d[u(k)]}const B=c.conversation.employee_name||"unknown";return d[u(B)]}),z=V(()=>c.section==="colleague"?`坐席:${c.conversation.assigned_agent_name||"未知"}`:c.conversation.employee_name||"未知"),L=V(()=>{var k;const B=(k=c.conversation.tags)==null?void 0:k.emotion;return B==="urgent"?"tag-badge-emotion-urgent":B==="angry"?"tag-badge-emotion-angry":B==="worried"?"tag-badge-emotion-worried":""}),y=V(()=>{var k;return{urgent:"🔴紧急",angry:"😡愤怒",worried:"😟担忧"}[((k=c.conversation.tags)==null?void 0:k.emotion)||""]||""}),m=V(()=>{const B=c.conversation.last_message_at;if(!B)return"";const k=new Date(B),Z=new Date,I=Z.getTime()-k.getTime(),K=Math.floor(I/6e4);if(K<1)return"刚刚";if(K<60)return`${K}分钟前`;if(k.toDateString()===Z.toDateString())return`${String(k.getHours()).padStart(2,"0")}:${String(k.getMinutes()).padStart(2,"0")}`;const Y=new Date(Z);return Y.setDate(Y.getDate()-1),k.toDateString()===Y.toDateString()?"昨天":`${k.getMonth()+1}/${k.getDate()}`}),p=V(()=>{var Z;const B=[],k=c.conversation;for(const I of n){let K=!1,Y=I.title;switch(I.key){case"is_blocking":K=!!k.is_blocking;break;case"impact_scope":K=(k.impact_scope||0)>=(I.highThreshold||5),K&&(Y=`影响范围: ${k.impact_scope}人`);break;case"role_level":K=F(k);break;case"is_repeat":K=(((Z=k.tags)==null?void 0:Z.repeat_count)||0)>=3,K&&(Y=`重复追问: ${k.tags.repeat_count}次`);break}K&&B.push({...I,title:Y})}return B});function F(B){const k=["总监","VP","CIO","CTO","CFO","CEO","总裁","副总","高级总监"],Z=B.level||"";return k.some(I=>Z.includes(I))}return(B,k)=>{var I,K,Y;const Z=se("el-button");return a(),l("div",{class:oe(["conversation-item",{active:t.active,resolved:t.conversation.status==="resolved","pending-close":t.conversation.status==="pending_close","other-agent":!t.conversation.is_mine&&t.conversation.status==="serving"}]),onClick:k[3]||(k[3]=G=>B.$emit("click"))},[e("div",fn,[s.value&&!o.value?(a(),l("img",{key:0,src:t.conversation.avatar,class:"conversation-avatar-img",onError:k[0]||(k[0]=G=>o.value=!0)},null,40,pn)):(a(),l("div",{key:1,class:oe(["conversation-avatar",h.value])},v(i.value),3)),_.value?(a(),l("span",{key:2,class:oe(["new-msg-dot",O.value]),title:P.value},null,10,gn)):M("",!0)]),e("div",yn,[e("div",_n,[t.conversation.is_pinned?(a(),l("span",hn,"📌")):M("",!0),t.conversation.is_todo?(a(),l("span",bn,"📋")):M("",!0),e("span",kn,v(t.conversation.employee_name||"未知"),1),t.conversation.is_vip?(a(),l("span",wn,"VIP")):M("",!0),(I=t.conversation.tags)!=null&&I.hand_raise?(a(),l("span",$n,"招手")):M("",!0),(K=t.conversation.tags)!=null&&K.need_intervene?(a(),l("span",Cn,"🔔需介入")):M("",!0),(Y=t.conversation.tags)!=null&&Y.emotion&&t.conversation.tags.emotion!=="neutral"?(a(),l("span",{key:5,class:oe(["tag-badge",L.value])},v(y.value),3)):M("",!0),t.conversation.assigned_agent_name&&!t.conversation.is_mine&&t.conversation.status==="serving"?(a(),l("span",xn,v(t.conversation.assigned_agent_name),1)):M("",!0),t.conversation.status==="pending_close"?(a(),l("span",In," ⏳ 待确认 ")):M("",!0),e("span",Tn,[(a(!0),l(ge,null,we(p.value,G=>(a(),l("span",{key:G.key,class:oe(["priority-icon",G.cssClass]),title:G.title,style:Ve({backgroundColor:G.bg})},v(G.icon),15,Sn))),128))])]),e("div",Mn,[e("span",An,v(t.conversation.last_message_summary||"暂无消息"),1),e("span",Rn,v(m.value),1)]),e("div",Ln,[e("div",En,[(a(),l(ge,null,we(5,G=>e("span",{key:G,class:oe(["urgency-star",{empty:G>t.conversation.urgency_score}])},"★",2)),64))]),t.showGrab&&t.conversation.can_grab?(a(),ye(Z,{key:0,type:"primary",size:"small",link:"",class:"grab-btn",onClick:k[1]||(k[1]=$e(G=>B.$emit("grab"),["stop"]))},{default:E(()=>[...k[4]||(k[4]=[H(" 接手 ",-1)])]),_:1})):M("",!0),t.showLeave?(a(),ye(Z,{key:1,type:"danger",size:"small",link:"",class:"leave-btn",onClick:k[2]||(k[2]=$e(G=>B.$emit("leave"),["stop"]))},{default:E(()=>[...k[5]||(k[5]=[H(" 退出 ",-1)])]),_:1})):M("",!0)])]),U.value?(a(),l("div",{key:0,class:oe(["conv-target-avatar",W.value]),title:z.value},v(w.value),11,Dn)):M("",!0)],2)}}}),ft=ke(Pn,[["__scopeId","data-v-0f8e48ba"]]),Bn={class:"todo-panel"},Vn={class:"todo-header"},On={class:"todo-header-left"},zn={key:0,class:"todo-urgent-badge"},Un={class:"todo-header-right"},Nn={class:"todo-tabs"},jn=["disabled"],Wn={class:"todo-list"},qn={key:0,class:"todo-loading"},Fn=["onClick"],Hn={class:"todo-text text-ellipsis"},Kn={class:"todo-time"},Xn=["title"],Yn={key:1,class:"todo-empty"},Qn={class:"todo-footer"},Gn={class:"agent-stat"},Jn={class:"agent-stat"},Zn={class:"agent-stat"},ea=6e4,ta=be({__name:"TodoPanel",setup(t){const n=$t(),r=Be(),d=Ut(),u=b(d.onlineAgents),c=b(d.busyAgents),s=b(d.offlineAgents);let o=null;Ke(()=>{n.fetchTodoList(),o=setInterval(()=>{n.fetchTodoList()},ea)}),Xe(()=>{o&&(clearInterval(o),o=null)});function i(y){return{ticket:"工单",approval:"审批"}[y]||y}function h(y){if(!y)return"";const m=new Date(y),p=new Date,F=p.getTime()-m.getTime(),B=Math.floor(F/6e4);return B<1?"刚刚":B<60?`${B}分钟前`:m.toDateString()===p.toDateString()?`${String(m.getHours()).padStart(2,"0")}:${String(m.getMinutes()).padStart(2,"0")}`:`${m.getMonth()+1}/${m.getDate()}`}function _(y){n.selectTodoItem(y),r.workspaceView="task"}function O(y){n.setActiveType(y)}function P(){n.refreshList()}const U=["ka-blue","ka-green","ka-orange","ka-purple","ka-red"];function w(y){let m=0;for(let p=0;p=0){const F=m.substring(0,p).trim();return F.charAt(F.length-1)}return m.charAt(0)}function z(y){return U[w(y.title||"default")]}function L(y){const m=y.title||"",p=m.indexOf(" - ");return p>=0?m.substring(0,p).trim():m}return(y,m)=>(a(),l("div",Bn,[e("div",Vn,[e("div",On,[m[3]||(m[3]=e("span",{class:"todo-title"},"📋 待办事项",-1)),A(n).urgentCount>0?(a(),l("span",zn,v(A(n).urgentCount),1)):M("",!0)]),e("div",Un,[e("div",Nn,[e("button",{class:oe(["todo-tab",{"todo-tab-active":A(n).activeType==="all"}]),onClick:m[0]||(m[0]=p=>O("all"))},"全部",2),e("button",{class:oe(["todo-tab",{"todo-tab-active":A(n).activeType==="approval"}]),onClick:m[1]||(m[1]=p=>O("approval"))},"审批",2),e("button",{class:oe(["todo-tab",{"todo-tab-active":A(n).activeType==="ticket"}]),onClick:m[2]||(m[2]=p=>O("ticket"))},"工单",2)]),e("button",{class:oe(["todo-refresh-btn",{"todo-refreshing":A(n).loading}]),disabled:A(n).loading,title:"刷新待办列表",onClick:P},"🔄",10,jn)])]),e("div",Wn,[A(n).loading&&A(n).pendingTodos.length===0?(a(),l("div",qn," 加载中... ")):M("",!0),(a(!0),l(ge,null,we(A(n).pendingTodos,p=>{var F;return a(),l("div",{key:p.id,class:oe(["todo-item",{"todo-item-active":((F=A(n).currentTodoItem)==null?void 0:F.id)===p.id}]),onClick:B=>_(p)},[e("span",{class:oe(["todo-priority-dot",`priority-${p.priority}`])},null,2),e("span",Hn,v(p.title),1),e("span",{class:oe(["todo-type-tag",`type-${p.type}`])},v(i(p.type)),3),e("span",Kn,v(h(p.created_at)),1),e("div",{class:oe(["ki-avatar",z(p)]),title:L(p)},v(W(p)),11,Xn)],10,Fn)}),128)),A(n).pendingTodos.length===0&&!A(n).loading?(a(),l("div",Yn," 暂无待办 ")):M("",!0)]),e("div",Qn,[e("span",Gn,[m[4]||(m[4]=e("span",{class:"agent-dot dot-online"},null,-1)),e("span",null,v(u.value)+" 在线",1)]),e("span",Jn,[m[5]||(m[5]=e("span",{class:"agent-dot dot-busy"},null,-1)),e("span",null,v(c.value)+" 忙碌",1)]),e("span",Zn,[m[6]||(m[6]=e("span",{class:"agent-dot dot-offline"},null,-1)),e("span",null,v(s.value)+" 离线",1)])])]))}}),na=ke(ta,[["__scopeId","data-v-e790eb7c"]]),aa={class:"conversation-list-root"},sa={class:"sidebar-search"},oa={class:"filter-tags"},la=["onClick"],ia={class:"conversation-list-scroll"},ra={key:0,class:"loading-state"},ca={key:1,class:"empty-state"},ua=be({__name:"ConversationList",setup(t){const n=[{key:"all",label:"全部"},{key:"pending",label:"待处理"},{key:"active",label:"进行中"},{key:"done",label:"已完成"}],r=Be(),d=$t(),u=b(""),c=b("all");function s(P){let U=P;if(u.value.trim()){const w=u.value.trim().toLowerCase();U=U.filter(W=>W.employee_name.toLowerCase().includes(w)||W.department.toLowerCase().includes(w)||W.last_message_summary.toLowerCase().includes(w))}return c.value!=="all"&&(U=U.filter(w=>{switch(c.value){case"pending":return w.status==="queued";case"active":return w.status==="serving"||w.status==="ai_handling";case"done":return w.status==="resolved";default:return!0}})),U}const o=V(()=>s(r.myConversations)),i=V(()=>s(r.colleagueConversations)),h=V(()=>s(r.historyConversations));async function _(P){const U=P.assigned_agent_name||"其他坐席";try{await qe.confirm(`确定要接手 ${U} 的会话吗?接手后该会话将归您处理。`,"接手确认",{confirmButtonText:"确认接手",cancelButtonText:"取消",type:"warning"}),await r.grabConv(P.id),ie.success("接手成功")}catch(w){w!=="cancel"&&(w!=null&&w.message)&&ie.error(w.message||"接手失败")}}async function O(P){const U=P.assigned_agent_name||"主责坐席";try{await qe.confirm(`确定要退出 ${U} 的协作会话吗?`,"退出确认",{confirmButtonText:"确认退出",cancelButtonText:"取消",type:"warning"}),await r.leaveConvCollaboration(P.id),ie.success("已退出协作")}catch(w){w!=="cancel"&&(w!=null&&w.message)&&ie.error(w.message||"退出失败")}}return Ke(()=>{d.fetchTodoList()}),(P,U)=>{const w=se("el-input"),W=se("Loading"),z=se("el-icon"),L=se("el-empty");return a(),l("div",aa,[e("div",sa,[C(w,{modelValue:u.value,"onUpdate:modelValue":U[0]||(U[0]=y=>u.value=y),placeholder:"搜索用户、关键词...","prefix-icon":"Search",clearable:"",size:"default"},null,8,["modelValue"]),e("div",oa,[(a(),l(ge,null,we(n,y=>e("span",{key:y.key,class:oe(["filter-tag",{active:c.value===y.key}]),onClick:m=>c.value=y.key},v(y.label),11,la)),64))])]),e("div",ia,[A(r).loadingConversations?(a(),l("div",ra,[C(z,{class:"is-loading",size:20},{default:E(()=>[C(W)]),_:1}),U[1]||(U[1]=e("div",{class:"loading-text"},"加载中...",-1))])):M("",!0),(a(!0),l(ge,null,we(o.value,y=>(a(),ye(ft,{key:y.id,conversation:y,active:y.id===A(r).currentConversationId,"show-grab":y.status==="serving"&&!y.is_mine&&!y.is_collaborator,"show-leave":y.is_collaborator&&y.status==="serving",section:"my",onClick:m=>A(r).selectConversation(y.id),onGrab:m=>_(y),onLeave:m=>O(y)},null,8,["conversation","active","show-grab","show-leave","onClick","onGrab","onLeave"]))),128)),(a(!0),l(ge,null,we(i.value,y=>(a(),ye(ft,{key:y.id,conversation:y,active:y.id===A(r).currentConversationId,"show-grab":y.status==="serving"&&!y.is_mine,section:"colleague",onClick:m=>A(r).selectConversation(y.id),onGrab:m=>_(y)},null,8,["conversation","active","show-grab","onClick","onGrab"]))),128)),(a(!0),l(ge,null,we(h.value,y=>(a(),ye(ft,{key:y.id,conversation:y,active:y.id===A(r).currentConversationId,section:"history",onClick:m=>A(r).selectConversation(y.id)},null,8,["conversation","active","onClick"]))),128)),!A(r).loadingConversations&&A(r).conversations.length===0?(a(),l("div",ca,[C(L,{description:"暂无会话","image-size":80})])):M("",!0)]),C(na)])}}}),da=ke(ua,[["__scopeId","data-v-d0763629"]]),va="/itagent/duckula.webp",ma={class:"contact-card-inline"},fa={class:"contact-card-inline__header"},pa=["src"],ga={key:1},ya={class:"contact-card-inline__name-row"},_a={class:"contact-card-inline__name"},ha={class:"contact-card-inline__dept"},ba={class:"contact-card-inline__body"},ka={class:"contact-card-inline__info-item"},wa={class:"contact-card-inline__info-value contact-card-inline__info-value--highlight"},$a={key:0,class:"contact-card-inline__info-item"},Ca={class:"contact-card-inline__info-value"},xa={key:1,class:"contact-card-inline__info-item"},Ia={class:"contact-card-inline__info-label"},Ta={class:"contact-card-inline__info-value"},Sa={key:0,class:"contact-card-inline__reason"},Ma=be({__name:"ContactCardInline",props:{contact:{},routingReason:{}},setup(t){const n=t,r=V(()=>n.contact.name?n.contact.name.charAt(0):"?"),d=V(()=>{const o=["gradient-1","gradient-2","gradient-3","gradient-4","gradient-5"];if(!n.contact.name)return o[0];const i=n.contact.name.charCodeAt(0);return o[i%o.length]}),u=V(()=>n.contact.gender==="female"?"♀":"♂"),c=V(()=>n.contact.gender==="female"?"gender-female":"gender-male"),s=V(()=>n.contact.business_category==="行政-物业"?"办公地点":"服务区域");return(o,i)=>{const h=se("el-tag"),_=se("el-icon");return a(),l("div",ma,[e("div",fa,[e("div",{class:oe(["contact-card-inline__avatar",d.value])},[t.contact.avatar_url?(a(),l("img",{key:0,src:t.contact.avatar_url,alt:"",class:"contact-card-inline__avatar-img"},null,8,pa)):(a(),l("span",ga,v(r.value),1))],2),e("div",ya,[e("div",_a,[H(v(t.contact.name)+" ",1),e("span",{class:oe(["contact-card-inline__gender",c.value])},v(u.value),3)]),e("div",ha,v(t.contact.department)+" · "+v(t.contact.position),1)]),C(h,{size:"small",type:"info",effect:"plain",class:"contact-card-inline__badge"},{default:E(()=>[...i[0]||(i[0]=[H(" 员工名片 ",-1)])]),_:1})]),e("div",ba,[e("div",ka,[i[1]||(i[1]=e("span",{class:"contact-card-inline__info-label"},"负责业务",-1)),e("span",wa,v(t.contact.responsibility),1)]),t.contact.extension?(a(),l("div",$a,[i[2]||(i[2]=e("span",{class:"contact-card-inline__info-label"},"分机号",-1)),e("span",Ca,v(t.contact.extension),1)])):M("",!0),t.contact.service_area?(a(),l("div",xa,[e("span",Ia,v(s.value),1),e("span",Ta,v(t.contact.service_area),1)])):M("",!0)]),t.routingReason?(a(),l("div",Sa,[C(_,{size:12},{default:E(()=>[C(A(Nt))]),_:1}),e("span",null,v(t.routingReason),1)])):M("",!0)])}}}),Aa=ke(Ma,[["__scopeId","data-v-d533ed0f"]]),Ra={key:0,class:"message-bubble message-system"},La={class:"message-sender-name"},Ea={key:0,src:va,class:"duckula-avatar",alt:"Duckula"},Da={class:"reply-quote-text"},Pa={class:"reply-quote-sender"},Ba={key:1,style:{"white-space":"pre-wrap"}},Va=["src","alt"],Oa={key:1,class:"media-card"},za={class:"media-info"},Ua={key:0,class:"media-filename"},Na=["href"],ja={class:"media-info"},Wa={class:"media-type-label"},qa={key:0,class:"media-size"},Fa={key:1,class:"media-card"},Ha={class:"media-info"},Ka={class:"media-type-label"},Xa={key:0,class:"media-size"},Ya={style:{"white-space":"pre-wrap"}},Qa={key:0,class:"ai-structured-options"},Ga={key:1,class:"ai-structured-action"},Ja={class:"ai-structured-action__text"},Za={style:{"white-space":"pre-wrap"}},es={key:0,class:"byod-summary"},ts={key:0,class:"byod-summary__category"},ns={key:7,class:"media-card"},as={class:"media-icon"},ss={class:"media-info"},os={class:"media-type-label"},ls={key:0,class:"media-filename"},is={key:1,class:"media-size"},rs={key:8,class:"bubble-actions"},cs={class:"message-time"},us=be({__name:"MessageBubble",props:{message:{}},emits:["scrollToMessage","reply"],setup(t){const n=t,r=Be(),{copy:d}=jt(),u=b(!1),c=b(!1);async function s(){try{await d(n.message.content),c.value=!0,setTimeout(()=>{c.value=!1},1500)}catch(L){console.error("复制失败:",L)}}const o=V(()=>{var y;return{employee:n.message.sender_name||((y=r.currentConversation)==null?void 0:y.employee_name)||"未知",agent:n.message.sender_name||"我",ai:"Duckula(达寇拉)"}[n.message.sender_type]||"未知"}),i=V(()=>{if(!n.message.created_at)return"";const L=new Date(n.message.created_at),y=String(L.getHours()).padStart(2,"0"),m=String(L.getMinutes()).padStart(2,"0");return`${y}:${m}`}),h=V(()=>({image:"🖼️",voice:"🎤",video:"🎬",file:"📎",location:"📍"})[n.message.msg_type]||"📄"),_=V(()=>({image:"图片消息",voice:"语音消息",video:"视频消息",file:"文件消息",location:"位置消息"})[n.message.msg_type]||"媒体消息"),O=V(()=>{var m,p;const L=(p=(m=n.message.extra_data)==null?void 0:m.action)==null?void 0:p.type;return{approval_card:"审批卡片",action_card:"操作卡片",info_card:"信息卡片"}[L]||"推荐卡片"});function P(L){return L<1024?`${L} B`:L<1024*1024?`${(L/1024).toFixed(1)} KB`:`${(L/(1024*1024)).toFixed(1)} MB`}function U(){var y;const L=n.message.media_url||((y=n.message.extra_data)==null?void 0:y.pic_url);L&&window.open(L,"_blank")}function w(L){L&&window.open(L,"_blank")}const W=V(()=>{if(!n.message.reply_to_id)return"";const L=r.messages.find(m=>m.id===n.message.reply_to_id);if(!L)return"...";const y=L.content||"";return y.length>50?y.substring(0,50)+"...":y}),z=V(()=>{if(!n.message.reply_to_id)return"";const L=r.messages.find(y=>y.id===n.message.reply_to_id);return L?L.sender_name||"未知":""});return(L,y)=>{var p,F,B,k,Z,I,K,Y;const m=se("el-button");return a(),l("div",{class:oe(["message-row",`message-row-${t.message.sender_type}`])},[t.message.sender_type==="system"?(a(),l("div",Ra,v(t.message.content),1)):(a(),l(ge,{key:1},[e("div",La,[H(v(o.value)+" ",1),t.message.sender_type==="ai"?(a(),l("img",Ea)):M("",!0)]),e("div",{class:oe(["message-bubble",`message-${t.message.sender_type}`]),onMouseenter:y[3]||(y[3]=G=>u.value=!0),onMouseleave:y[4]||(y[4]=G=>u.value=!1)},[t.message.reply_to_id&&W.value?(a(),l("div",{key:0,class:"reply-quote",onClick:y[0]||(y[0]=$e(G=>L.$emit("scrollToMessage",t.message.reply_to_id),["stop"]))},[y[5]||(y[5]=e("div",{class:"reply-quote-bar"},null,-1)),e("div",Da,[e("span",Pa,v(z.value),1),H(" "+v(W.value),1)])])):M("",!0),t.message.msg_type==="text"?(a(),l("div",Ba,v(t.message.content),1)):t.message.msg_type==="image"?(a(),l("div",{key:2,class:"image-message",onClick:U},[t.message.media_url||(p=t.message.extra_data)!=null&&p.pic_url?(a(),l("img",{key:0,src:t.message.media_url||((F=t.message.extra_data)==null?void 0:F.pic_url),alt:t.message.file_name||"图片",class:"image-thumbnail",loading:"lazy"},null,8,Va)):(a(),l("div",Oa,[y[7]||(y[7]=e("div",{class:"media-icon"},"🖼️",-1)),e("div",za,[y[6]||(y[6]=e("span",{class:"media-type-label"},"图片消息",-1)),t.message.file_name?(a(),l("span",Ua,v(t.message.file_name),1)):M("",!0)])]))])):t.message.msg_type==="file"?(a(),l(ge,{key:3},[t.message.media_url?(a(),l("a",{key:0,href:t.message.media_url,target:"_blank",class:"media-card media-card-link"},[y[8]||(y[8]=e("div",{class:"media-icon"},"📎",-1)),e("div",ja,[e("span",Wa,v(t.message.file_name||"文件消息"),1),t.message.file_size?(a(),l("span",qa,v(P(t.message.file_size)),1)):M("",!0)])],8,Na)):(a(),l("div",Fa,[y[9]||(y[9]=e("div",{class:"media-icon"},"📎",-1)),e("div",Ha,[e("span",Ka,v(t.message.file_name||"文件消息"),1),t.message.file_size?(a(),l("span",Xa,v(P(t.message.file_size)),1)):M("",!0)])]))],64)):t.message.msg_type==="contact_card"?(a(),ye(Aa,{key:4,contact:((B=t.message.extra_data)==null?void 0:B.contact)??{},"routing-reason":((k=t.message.extra_data)==null?void 0:k.routing_reason)??""},null,8,["contact","routing-reason"])):t.message.msg_type==="ai_structured"?(a(),l(ge,{key:5},[e("div",Ya,v(t.message.content),1),(I=(Z=t.message.extra_data)==null?void 0:Z.options)!=null&&I.length?(a(),l("div",Qa,[y[10]||(y[10]=e("span",{class:"ai-structured-options__label"},"推荐选项:",-1)),(a(!0),l(ge,null,we(t.message.extra_data.options,(G,N)=>(a(),l("span",{key:N,class:"ai-structured-options__tag"},v(G.label||G.value),1))),128))])):M("",!0),(K=t.message.extra_data)!=null&&K.action?(a(),l("div",Ga,[y[11]||(y[11]=e("span",{class:"ai-structured-action__icon"},"📌",-1)),e("span",Ja," 已推送"+v(O.value)+":"+v(t.message.extra_data.action.title||"智能推荐"),1),t.message.extra_data.action.type==="approval_card"&&t.message.extra_data.action.url?(a(),ye(m,{key:0,type:"primary",size:"small",class:"ai-structured-action__jump-btn",onClick:y[1]||(y[1]=$e(G=>w(t.message.extra_data.action.url),["stop"]))},{default:E(()=>[H(" 打开"+v(t.message.extra_data.action.location||"运维平台"),1)]),_:1})):M("",!0)])):M("",!0)],64)):t.message.msg_type==="byod_card"?(a(),l(ge,{key:6},[e("div",Za,v(t.message.content),1),(Y=t.message.extra_data)!=null&&Y.byod_result?(a(),l("div",es,[e("span",{class:oe(["byod-summary__badge",{"byod-summary__badge--eligible":t.message.extra_data.byod_result.eligible}])},v(t.message.extra_data.byod_result.eligible?"符合补贴":"可登记"),3),t.message.extra_data.byod_result.matched_category?(a(),l("span",ts,v(t.message.extra_data.byod_result.matched_category),1)):M("",!0)])):M("",!0)],64)):(a(),l("div",ns,[e("div",as,v(h.value),1),e("div",ss,[e("span",os,v(_.value),1),t.message.file_name?(a(),l("span",ls,v(t.message.file_name),1)):M("",!0),t.message.file_size?(a(),l("span",is,v(P(t.message.file_size)),1)):M("",!0)])])),u.value?(a(),l("div",rs,[t.message.msg_type==="text"?(a(),l("button",{key:0,class:"action-btn",title:"复制消息",onClick:$e(s,["stop"])},v(c.value?"✓":"📋"),1)):M("",!0),e("button",{class:"action-btn",title:"回复",onClick:y[2]||(y[2]=$e(G=>L.$emit("reply",t.message),["stop"]))}," ↩ ")])):M("",!0)],34),e("div",cs,v(i.value),1)],64))],2)}}}),ds=ke(us,[["__scopeId","data-v-358c9040"]]);async function vs(t){return await Pe.get("/agent/employees/search",{params:{keyword:t}})}async function ms(){return await Pe.get("/agent/org/tree")}const fs={class:"search-area"},ps={key:0,class:"empty-hint"},gs={key:1,class:"empty-hint"},ys=["onClick"],_s={class:"person-avatar"},hs=["src","alt","onError"],bs={key:1,class:"avatar-letter"},ks={class:"person-info"},ws={class:"person-name"},$s={class:"person-dept"},Cs={key:2,class:"manual-add"},xs={class:"org-tree-area"},Is={class:"tree-node"},Ts={class:"tree-node-label"},Ss={key:0,class:"tree-node-dept"},Ms={key:1,class:"empty-hint"},As={key:0,class:"selected-area"},Rs={class:"selected-header"},Ls={class:"selected-tags"},Es={class:"history-mode"},Ds={class:"dialog-footer"},Ps=be({__name:"InviteParticipantDialog",props:{modelValue:{type:Boolean},conversationId:{},existingParticipantIds:{default:()=>[]}},emits:["update:modelValue","success"],setup(t,{emit:n}){const r=t,d=n,u=b(r.modelValue),c=b({}),s=b("search"),o=b(""),i=b([]),h=b(!1),_=b([]),O=b("recent10"),P=b(!1),U=b([]),w=b(!1),W=b(!1),z=b(null);let L=null;const y=V(()=>new Set(r.existingParticipantIds)),m=V(()=>U.value.map(ee=>ee.id)),p={label:"label",children:"children",disabled:ee=>ee.isLeaf===!0&&y.value.has(ee.id)};Me(()=>r.modelValue,ee=>{u.value=ee,ee&&(s.value="search",o.value="",i.value=[],_.value=[],O.value="recent10",c.value={},L&&(clearTimeout(L),L=null),De(()=>{z.value&&z.value.setCheckedKeys([])}))}),Me(u,ee=>{d("update:modelValue",ee)}),Me(o,()=>{L&&clearTimeout(L),L=setTimeout(()=>{B()},300)}),Me(s,ee=>{ee==="org"&&!w.value&&Z()});function F(ee){return ee?ee.charAt(ee.length-1):"?"}async function B(){const ee=o.value.trim();if(!ee){i.value=[];return}h.value=!0;try{const J=await vs(ee);i.value=J.filter(ce=>!y.value.has(ce.id)).map(ce=>({id:ce.id,name:ce.name,department:ce.department,type:"employee"}))}catch{i.value=[]}finally{h.value=!1}}function k(){L&&(clearTimeout(L),L=null),B()}async function Z(){W.value=!0;try{if(U.value=await ms(),w.value=!0,await De(),z.value){const ee=I(U.value),J=_.value.filter(ce=>ee.has(ce.id)).map(ce=>ce.id);z.value.setCheckedKeys(J)}}catch{U.value=[]}finally{W.value=!1}}function I(ee){const J=new Set;function ce(te){var ue;if(te.isLeaf){J.add(te.id);return}(ue=te.children)==null||ue.forEach(ce)}return ee.forEach(ce),J}function K(){if(!z.value)return;const ee=z.value.getCheckedNodes(!0,!1).filter(ue=>ue.isLeaf===!0),J=I(U.value),ce=_.value.filter(ue=>!J.has(ue.id)),te=ee.map(ue=>({id:ue.id,name:ue.label,department:ue.department||"",type:"employee"}));_.value=[...ce,...te]}function Y(ee){return _.value.some(J=>J.id===ee)}function G(ee){const J=_.value.findIndex(ce=>ce.id===ee.id);J>=0?_.value.splice(J,1):_.value.push(ee),w.value&&z.value&&Q()}function N(ee){const J=_.value.findIndex(ce=>ce.id===ee);J>=0&&_.value.splice(J,1),w.value&&z.value&&Q()}function g(){_.value=[],z.value&&z.value.setCheckedKeys([])}function Q(){if(!z.value)return;const ee=I(U.value),J=_.value.filter(ce=>ee.has(ce.id)).map(ce=>ce.id);z.value.setCheckedKeys(J)}function de(){const ee=o.value.trim();if(!ee)return;const J={id:`manual_${Date.now()}`,name:ee,department:"",type:"employee"};Y(J.id)||_.value.push(J),o.value="",i.value=[]}async function he(){var ee,J;if(_.value.length!==0){P.value=!0;try{const ce=await qt(r.conversationId,{participants:_.value.map(te=>({id:te.id,name:te.name,department:te.department,type:te.type})),history_mode:O.value});ie.success(`已邀请 ${_.value.length} 人加入会话`),d("success",ce),u.value=!1}catch(ce){const te=((J=(ee=ce==null?void 0:ce.response)==null?void 0:ee.data)==null?void 0:J.message)||(ce==null?void 0:ce.message)||"邀请失败";ie.error(te)}finally{P.value=!1}}}return(ee,J)=>{const ce=se("el-input"),te=se("el-icon"),ue=se("el-button"),D=se("el-tab-pane"),j=se("el-tree"),le=se("el-tabs"),q=se("el-tag"),X=se("el-radio-button"),me=se("el-radio-group"),_e=se("el-dialog"),pe=St("loading");return a(),ye(_e,{modelValue:u.value,"onUpdate:modelValue":J[4]||(J[4]=ne=>u.value=ne),title:"📋 邀请 — 邀请员工/部门加入会话",width:"520px","close-on-click-modal":!1,"destroy-on-close":""},{footer:E(()=>[e("div",Ds,[C(ue,{onClick:J[3]||(J[3]=ne=>u.value=!1)},{default:E(()=>[...J[10]||(J[10]=[H("取消",-1)])]),_:1}),C(ue,{type:"primary",disabled:_.value.length===0,loading:P.value,onClick:he},{default:E(()=>[H(" 确认邀请("+v(_.value.length)+"人) ",1)]),_:1},8,["disabled","loading"])])]),default:E(()=>[C(le,{modelValue:s.value,"onUpdate:modelValue":J[1]||(J[1]=ne=>s.value=ne),class:"invite-tabs"},{default:E(()=>[C(D,{label:"搜索",name:"search"},{default:E(()=>[C(ce,{modelValue:o.value,"onUpdate:modelValue":J[0]||(J[0]=ne=>o.value=ne),placeholder:"搜索员工姓名或工号...","prefix-icon":"Search",clearable:"",style:{"margin-bottom":"12px"},onKeyup:yt(k,["enter"])},null,8,["modelValue"]),He((a(),l("div",fs,[!h.value&&i.value.length===0&&o.value?(a(),l("div",ps," 未找到匹配的员工,可直接输入添加 ")):M("",!0),!h.value&&i.value.length===0&&!o.value?(a(),l("div",gs," 请输入姓名或工号搜索,或直接手动添加 ")):M("",!0),(a(!0),l(ge,null,we(i.value,ne=>(a(),l("div",{key:ne.id,class:oe(["person-item",{selected:Y(ne.id)}]),onClick:fe=>G(ne)},[e("div",_s,[ne.avatar&&!c.value[ne.id]?(a(),l("img",{key:0,src:ne.avatar,alt:ne.name,class:"avatar-img",onError:fe=>c.value[ne.id]=!0},null,40,hs)):(a(),l("span",bs,v(F(ne.name)),1))]),e("div",ks,[e("div",ws,v(ne.name),1),e("div",$s,v(ne.department||"未知部门"),1)]),Y(ne.id)?(a(),ye(te,{key:0,class:"check-icon",color:"var(--accent)"},{default:E(()=>[C(A(Mt))]),_:1})):M("",!0)],10,ys))),128)),o.value&&i.value.length===0&&!h.value?(a(),l("div",Cs,[C(ue,{type:"primary",link:"",onClick:de},{default:E(()=>[C(te,null,{default:E(()=>[C(A(Wt))]),_:1}),H(" 手动添加「"+v(o.value)+"」 ",1)]),_:1})])):M("",!0)])),[[pe,h.value]])]),_:1}),C(D,{label:"组织架构",name:"org"},{default:E(()=>[He((a(),l("div",xs,[U.value.length>0?(a(),ye(j,{key:0,ref_key:"treeRef",ref:z,data:U.value,props:p,"node-key":"id","show-checkbox":"","default-expanded-keys":m.value,"expand-on-click-node":!1,onCheck:K},{default:E(({data:ne})=>[e("span",Is,[e("span",Ts,v(ne.label),1),ne.isLeaf&&ne.department?(a(),l("span",Ss,v(ne.department),1)):M("",!0)])]),_:1},8,["data","default-expanded-keys"])):M("",!0),!W.value&&U.value.length===0?(a(),l("div",Ms," 暂无组织架构数据 ")):M("",!0)])),[[pe,W.value]])]),_:1})]),_:1},8,["modelValue"]),_.value.length>0?(a(),l("div",As,[e("div",Rs,[e("span",null,"已选 "+v(_.value.length)+" 人",1),C(ue,{type:"primary",link:"",size:"small",onClick:g},{default:E(()=>[...J[5]||(J[5]=[H("清空",-1)])]),_:1})]),e("div",Ls,[(a(!0),l(ge,null,we(_.value,ne=>(a(),ye(q,{key:ne.id,closable:"",effect:"plain",onClose:fe=>N(ne.id)},{default:E(()=>[H(v(ne.name)+v(ne.department?`(${ne.department})`:""),1)]),_:2},1032,["onClose"]))),128))])])):M("",!0),e("div",Es,[J[9]||(J[9]=e("span",{class:"history-label"},"历史消息共享:",-1)),C(me,{modelValue:O.value,"onUpdate:modelValue":J[2]||(J[2]=ne=>O.value=ne),size:"small"},{default:E(()=>[C(X,{value:"recent10"},{default:E(()=>[...J[6]||(J[6]=[H("最近10条",-1)])]),_:1}),C(X,{value:"all"},{default:E(()=>[...J[7]||(J[7]=[H("全部",-1)])]),_:1}),C(X,{value:"none"},{default:E(()=>[...J[8]||(J[8]=[H("不共享",-1)])]),_:1})]),_:1},8,["modelValue"])])]),_:1},8,["modelValue"])}}}),Dt=ke(Ps,[["__scopeId","data-v-629bd8a1"]]),Bs={class:"screenshot-editor"},Vs={key:0,class:"crop-mode"},Os={class:"crop-header"},zs=["src"],Us={class:"crop-footer"},Ns={key:1,class:"edit-mode"},js={class:"edit-toolbar"},Ws={class:"tool-group"},qs=["onClick","title"],Fs={class:"color-picker"},Hs=["onClick"],Ks={class:"action-group"},Xs={class:"edit-footer"},Ys=be({__name:"ScreenshotEditor",props:{screenshotCanvas:{default:null}},emits:["confirm","cancel"],setup(t,{emit:n}){const r=t,d=n,u=b("crop"),c=b(""),s=b(null),o=b(null),i=At({x:0,y:0,width:0,height:0,show:!1,startX:0,startY:0});let h=0;const _=[{name:"brush",icon:"✎",label:"画笔"},{name:"highlighter",icon:"🖍",label:"高亮"},{name:"rect",icon:"□",label:"矩形"},{name:"arrow",icon:"➜",label:"箭头"},{name:"text",icon:"T",label:"文字"}],O=["#f44336","#e91e63","#2196f3","#4caf50","#ffeb3b","#000000"],P=b("brush"),U=b("#f44336"),w=b(null),W=b(null);let z=null,L=0,y=0;const m=b(!1),p=b(0),F=b(0),B=b([]),k=b([]),Z=b(-1);Me(()=>r.screenshotCanvas,q=>{q&&(c.value=q.toDataURL("image/png"),De(()=>{s.value&&(s.value.onload=()=>{N()})}))},{immediate:!0});function I(){if(!s.value||!o.value)return;const q=s.value;q.naturalWidth,q.naturalHeight}function K(q){if(!s.value||!o.value)return;const X=s.value.getBoundingClientRect();i.startX=q.clientX-X.left,i.startY=q.clientY-X.top,i.show=!0}function Y(q){if(!i.show||!s.value)return;const X=s.value.getBoundingClientRect(),me=q.clientX-X.left,_e=q.clientY-X.top;i.x=Math.min(i.startX,me),i.y=Math.min(i.startY,_e),i.width=Math.abs(me-i.startX),i.height=Math.abs(_e-i.startY)}function G(){}function N(){!s.value||!o.value||(i.x=0,i.y=0,i.width=s.value.offsetWidth,i.height=s.value.offsetHeight,i.show=!0)}function g(q){h+=q,s.value&&(s.value.style.transform=`rotate(${h}deg)`)}function Q(){if(!s.value||!i.show)return;const q=s.value,X=q.naturalWidth/q.offsetWidth,me=q.naturalHeight/q.offsetHeight;i.x*X,i.y*me;const _e=i.width*X,pe=i.height*me,ne=document.createElement("canvas");ne.width=_e,ne.height=pe;const fe=ne.getContext("2d");fe&&(fe.translate(ne.width/2,ne.height/2),fe.rotate(h*Math.PI/180),fe.drawImage(q,-q.naturalWidth/2,-q.naturalHeight/2),c.value=ne.toDataURL("image/png"),u.value="edit",De(de))}function de(){const q=w.value,X=W.value;if(!q||!X||!c.value)return;const me=new Image;me.onload=()=>{const _e=X.clientWidth-40,pe=X.clientHeight-40;let ne=me.width,fe=me.height;ne>_e&&(fe=_e/ne*fe,ne=_e),fe>pe&&(ne=pe/fe*ne,fe=pe),L=ne,y=fe,q.width=ne,q.height=fe,z=q.getContext("2d"),z==null||z.drawImage(me,0,0,ne,fe),he()},me.src=c.value}function he(){if(!z||!L||!y)return;const q=z.getImageData(0,0,L,y);k.value=k.value.slice(0,Z.value+1),k.value.push(q),Z.value=k.value.length-1}function ee(){Z.value<=0||(Z.value--,z==null||z.putImageData(k.value[Z.value],0,0))}function J(){Z.value>=k.value.length-1||(Z.value++,z==null||z.putImageData(k.value[Z.value],0,0))}function ce(){!z||!L||!y||(z.clearRect(0,0,L,y),he())}function te(q){if(!w.value||!z)return;const X=w.value.getBoundingClientRect();if(m.value=!0,p.value=q.clientX-X.left,F.value=q.clientY-X.top,B.value=[{x:p.value,y:F.value}],P.value==="text"){const me=prompt("请输入文字:","");me&&(z.font="20px Microsoft YaHei",z.fillStyle=U.value,z.fillText(me,p.value,F.value),he()),m.value=!1}}function ue(q){if(!m.value||!z||!w.value)return;const X=w.value.getBoundingClientRect(),me=q.clientX-X.left,_e=q.clientY-X.top;if(P.value==="brush"||P.value==="highlighter"){z.lineCap="round",z.lineJoin="round",z.lineWidth=P.value==="highlighter"?20:4,z.strokeStyle=P.value==="highlighter"?"rgba(255,255,0,0.5)":U.value,z.beginPath();const pe=B.value[B.value.length-1];z.moveTo(pe.x,pe.y),z.lineTo(me,_e),z.stroke(),B.value.push({x:me,y:_e})}}function D(q){if(!m.value||!z||!w.value)return;const X=w.value.getBoundingClientRect(),me=q.clientX-X.left,_e=q.clientY-X.top;P.value==="rect"?(z.strokeStyle=U.value,z.lineWidth=3,z.strokeRect(p.value,F.value,me-p.value,_e-F.value)):P.value==="arrow"&&j(z,p.value,F.value,me,_e,U.value),m.value=!1,B.value=[],he()}function j(q,X,me,_e,pe,ne){const Re=Math.atan2(pe-me,_e-X);q.strokeStyle=ne,q.lineWidth=3,q.beginPath(),q.moveTo(X,me),q.lineTo(_e,pe),q.stroke(),q.fillStyle=ne,q.beginPath(),q.moveTo(_e,pe),q.lineTo(_e-15*Math.cos(Re-Math.PI/6),pe-15*Math.sin(Re-Math.PI/6)),q.lineTo(_e-15*Math.cos(Re+Math.PI/6),pe-15*Math.sin(Re+Math.PI/6)),q.closePath(),q.fill()}async function le(){w.value&&w.value.toBlob(q=>{q&&d("confirm",q)},"image/png")}return(q,X)=>{const me=se("el-button"),_e=se("el-button-group");return a(),l("div",Bs,[u.value==="crop"?(a(),l("div",Vs,[e("div",Os,[X[5]||(X[5]=e("span",null,"截图裁剪 - 拖拽选择区域",-1)),C(me,{text:"",onClick:X[0]||(X[0]=pe=>d("cancel"))},{default:E(()=>[...X[4]||(X[4]=[H("✕ 关闭",-1)])]),_:1})]),e("div",{class:"crop-content",ref_key:"cropContainerRef",ref:o},[e("img",{ref_key:"imgRef",ref:s,src:c.value,class:"crop-image",onLoad:I,onMousedown:K,onMousemove:Y,onMouseup:G,onMouseleave:G},null,40,zs),i.show?(a(),l("div",{key:0,class:"crop-box",style:Ve({left:i.x+"px",top:i.y+"px",width:i.width+"px",height:i.height+"px"})},null,4)):M("",!0)],512),e("div",Us,[C(_e,null,{default:E(()=>[C(me,{onClick:X[1]||(X[1]=pe=>g(-90))},{default:E(()=>[...X[6]||(X[6]=[H("↺ 逆时针",-1)])]),_:1}),C(me,{onClick:X[2]||(X[2]=pe=>g(90))},{default:E(()=>[...X[7]||(X[7]=[H("↻ 顺时针",-1)])]),_:1}),C(me,{onClick:N},{default:E(()=>[...X[8]||(X[8]=[H("重置选区",-1)])]),_:1})]),_:1}),C(me,{type:"primary",onClick:Q,disabled:!i.show},{default:E(()=>[...X[9]||(X[9]=[H(" 确认裁剪 ✓ ",-1)])]),_:1},8,["disabled"])])])):(a(),l("div",Ns,[e("div",js,[e("div",Ws,[(a(),l(ge,null,we(_,pe=>e("button",{key:pe.name,class:oe(["tool-btn",{active:P.value===pe.name}]),onClick:ne=>P.value=pe.name,title:pe.label},v(pe.icon),11,qs)),64))]),e("div",Fs,[(a(),l(ge,null,we(O,pe=>e("button",{key:pe,class:oe(["color-btn",{active:U.value===pe}]),style:Ve({backgroundColor:pe}),onClick:ne=>U.value=pe},null,14,Hs)),64))]),e("div",Ks,[C(me,{size:"small",onClick:ee,disabled:Z.value<=0},{default:E(()=>[...X[10]||(X[10]=[H("↩",-1)])]),_:1},8,["disabled"]),C(me,{size:"small",onClick:J,disabled:Z.value>=k.value.length-1},{default:E(()=>[...X[11]||(X[11]=[H("↪",-1)])]),_:1},8,["disabled"]),C(me,{size:"small",type:"danger",onClick:ce},{default:E(()=>[...X[12]||(X[12]=[H("🗑",-1)])]),_:1})])]),e("div",{class:"canvas-wrapper",ref_key:"wrapperRef",ref:W},[e("canvas",{ref_key:"canvasRef",ref:w,onMousedown:te,onMousemove:ue,onMouseup:D,onMouseleave:D},null,544)],512),e("div",Xs,[C(me,{onClick:X[3]||(X[3]=pe=>u.value="crop")},{default:E(()=>[...X[13]||(X[13]=[H("← 重裁",-1)])]),_:1}),C(me,{type:"primary",onClick:le},{default:E(()=>[...X[14]||(X[14]=[H("完成发送 ✓",-1)])]),_:1})])]))])}}}),Qs=ke(Ys,[["__scopeId","data-v-b86208d1"]]),Gs={class:"wechat-capture"},Js={class:"capture-bg"},Zs={class:"resize-handles"},eo={class:"toolbar-inner"},to={class:"tools"},no=["title","onClick"],ao={class:"colors"},so=["onClick"],oo={class:"actions"},lo=["disabled"],io={key:1,class:"hint"},ro=70,co=4,ot=2,uo=5,vo=33,mo=520,Ct=64,lt=8,fo=be({__name:"ScreenCapture",props:{screenshotCanvas:{}},emits:["confirm","cancel"],setup(t,{emit:n}){const r=t,d=n,u=b(null),c=b(null);let s=null,o=null;const i=b({x:0,y:0,w:0,h:0}),h=b(!1),_=b(!1),O=b(""),P=b({x:0,y:0,w:0,h:0}),U=b({x:0,y:0}),w=b("arrow"),W=b("#ff3b30"),z=[{name:"mosaic",icon:"▦",label:"马赛克"},{name:"text",icon:"T",label:"文字"},{name:"arrow",icon:"➜",label:"箭头"},{name:"rect",icon:"□",label:"矩形"}],L=["#ff3b30","#ff9500","#ffcc00","#4cd964","#5ac8fa","#007aff","#5856d6","#000000"],y=[],m=b(-1),p=b(!1),F=b({x:0,y:0});let B=null;const k=b(!1),Z=b(""),I=b({left:"0px",top:"0px"}),K=b(null);let Y={x:0,y:0},G=null,N=null;const g=b(null);let Q=null,de=!1,he=0;const ee=V(()=>({left:i.value.x+"px",top:i.value.y+"px",width:i.value.w+"px",height:i.value.h+"px"})),J=V(()=>{const S=window.innerWidth,x=window.innerHeight,T=i.value.y+i.value.h,f=i.value.x+i.value.w/2,re=T+Ct+lt+16<=x?T+lt:Math.max(lt,i.value.y-Ct-lt);let ve=f;const Ce=mo/2,Ie=Ce+12,Te=S-Ce-12;return veTe&&(ve=Te),{position:"fixed",top:`${re}px`,left:`${ve}px`,transform:"translateX(-50%)",marginTop:"0"}});Ke(()=>{ce(),document.addEventListener("keydown",$),document.addEventListener("mouseup",me)}),Xe(()=>{document.removeEventListener("keydown",$),document.removeEventListener("mouseup",me),G&&(clearTimeout(G),G=null),y.length=0,m.value=-1,N=null,g.value=null,Q=null,de=!1});function ce(){const S=u.value,x=c.value;if(!S||!x||!r.screenshotCanvas)return;const T=window.innerWidth,f=window.innerHeight,ae=r.screenshotCanvas.width,re=r.screenshotCanvas.height;S.width=T,S.height=f,s=S.getContext("2d"),s&&(s.drawImage(r.screenshotCanvas,0,0,ae,re,0,0,T,f),q(),N=s.getImageData(0,0,T,f)),x.width=T,x.height=f,o=x.getContext("2d"),te()}function te(){if(!o)return;const S=o.canvas.width,x=o.canvas.height;o.clearRect(0,0,S,x),o.fillStyle="rgba(0, 0, 0, 0.5)",o.fillRect(0,0,S,x),i.value.w>0&&o.clearRect(i.value.x,i.value.y,i.value.w,i.value.h)}function ue(S,x,T,f,ae,re){let ve=0,Ce=0,Ie=0,Te=0;const Se=Math.floor(re/2);for(let Ae=-Se;Ae<=Se;Ae++)for(let Ee=-Se;Ee<=Se;Ee++){const We=f+Ee,ze=ae+Ae;if(We>=0&&We=0&&ze=0&&Se=0&&Aero){if(Ie===0&&(Te=re!==0?Se:Ae),Ie++,Ie>=co)return Te}else Ie=0,Te=-1;Se+=re*ot,Ae+=ve*ot}return ve===-1?0:ve===1?T-1:re===-1?0:x-1}function j(S,x){if(!N)return null;const{data:T,width:f,height:ae}=N,re=Math.max(0,Math.min(Math.round(S),f-1)),ve=Math.max(0,Math.min(Math.round(x),ae-1)),Ce=ue(T,f,ae,re,ve,3),Ie=D(T,f,ae,re,ve,0,-1,Ce),Te=D(T,f,ae,re,ve,0,1,Ce),Se=D(T,f,ae,re,ve,-1,0,Ce),Ae=D(T,f,ae,re,ve,1,0,Ce),Ee=Se,We=Ie,ze=Ae-Se,Ue=Te-Ie;return ze<10||Ue<10||ze>f*.95&&Ue>ae*.95?null:{x:Ee,y:We,w:ze,h:Ue}}function le(){if(!o||!g.value)return;const{x:S,y:x,w:T,h:f}=g.value;o.clearRect(S,x,T,f),o.fillStyle="rgba(0, 0, 0, 0.2)",o.fillRect(S,x,T,f),o.strokeStyle="#07C160",o.lineWidth=2,o.setLineDash([6,4]),o.strokeRect(S+1,x+1,T-2,f-2),o.setLineDash([]);const ae=`${Math.round(T)} × ${Math.round(f)}`;o.font="12px sans-serif";const re=o.measureText(ae).width,ve=6,Ce=20,Ie=re+ve*2,Te=S+T-Ie,Se=x+f-Ce;Te>S&&Se>x&&(o.fillStyle="#07C160",o.fillRect(Te,Se,Ie,Ce),o.fillStyle="#fff",o.textBaseline="middle",o.textAlign="left",o.fillText(ae,Te+ve,Se+Ce/2))}function q(){if(!s)return;const S=s.canvas,x=s.getImageData(0,0,S.width,S.height);m.value50&&(y.shift(),m.value=y.length-1)}function X(){if(m.value<=0||!s)return;m.value--;const S=y[m.value];S&&s.putImageData(S.imageData,0,0)}function me(){h.value&&(h.value=!1,(i.value.w<20||i.value.h<20)&&(i.value={x:0,y:0,w:0,h:0},te())),de&&!h.value&&i.value.w===0&&(g.value&&(i.value={...g.value},g.value=null,te()),de=!1),p.value&&(p.value=!1,B=null)}function _e(S){const x=S.clientX,T=S.clientY;if(k.value&&Oe(),i.value.w===0){Q={x,y:T},de=!0;return}if(vt(x,T)){if(w.value==="text"){Je(x,T);return}if(p.value=!0,F.value={x,y:T},w.value==="mosaic"&&s){const f=s.canvas;B=s.getImageData(0,0,f.width,f.height)}}}function pe(S){if(h.value){const x=Math.min(i.value.x,S.clientX),T=Math.min(i.value.y,S.clientY),f=Math.abs(S.clientX-i.value.x),ae=Math.abs(S.clientY-i.value.y);i.value={x,y:T,w:f,h:ae},te()}else _.value?xe(S):p.value?Ne(S):i.value.w===0&&fe(S)}function ne(){h.value?(h.value=!1,(i.value.w<20||i.value.h<20)&&(i.value={x:0,y:0,w:0,h:0},te())):de&&i.value.w===0&&(g.value&&(i.value={...g.value},g.value=null,te()),de=!1),p.value&&(p.value=!1,q(),B=null)}function fe(S){const x=S.clientX,T=S.clientY;if(de&&Q){const re=x-Q.x,ve=T-Q.y;if(Math.sqrt(re*re+ve*ve)>=uo){h.value=!0,de=!1,g.value=null;const Ce=Math.min(Q.x,x),Ie=Math.min(Q.y,T),Te=Math.abs(x-Q.x),Se=Math.abs(T-Q.y);i.value={x:Ce,y:Ie,w:Te,h:Se},te()}return}const f=Date.now();if(f-he{var T,f;(T=K.value)==null||T.focus(),(f=K.value)==null||f.select()},0)}function Oe(){if(!k.value)return;G&&(clearTimeout(G),G=null);const S=Z.value.trim();S&&s&&(s.fillStyle=W.value,s.font="20px sans-serif",s.textBaseline="middle",s.fillText(S,Y.x,Y.y),q()),k.value=!1,Z.value=""}function Ze(){G=setTimeout(()=>{G=null,Oe()},150)}function et(){G&&(clearTimeout(G),G=null)}function je(){G&&(clearTimeout(G),G=null),k.value=!1,Z.value=""}function Le(S,x){x.preventDefault(),x.stopPropagation(),_.value=!0,O.value=S,P.value={...i.value},U.value={x:x.clientX,y:x.clientY},document.addEventListener("mousemove",pe),document.addEventListener("mouseup",st)}function xe(S){const x=S.clientX-U.value.x,T=S.clientY-U.value.y,f=P.value;let ae={...f};switch(O.value){case"nw":ae={x:f.x+x,y:f.y+T,w:f.w-x,h:f.h-T};break;case"n":ae={x:f.x,y:f.y+T,w:f.w,h:f.h-T};break;case"ne":ae={x:f.x,y:f.y+T,w:f.w+x,h:f.h-T};break;case"e":ae={x:f.x,y:f.y,w:f.w+x,h:f.h};break;case"se":ae={x:f.x,y:f.y,w:f.w+x,h:f.h+T};break;case"s":ae={x:f.x,y:f.y,w:f.w,h:f.h+T};break;case"sw":ae={x:f.x+x,y:f.y,w:f.w-x,h:f.h+T};break;case"w":ae={x:f.x+x,y:f.y,w:f.w-x,h:f.h};break}ae.w>20&&ae.h>20&&(i.value=ae,te())}function st(){_.value=!1,document.removeEventListener("mousemove",pe),document.removeEventListener("mouseup",st),te()}function vt(S,x){return S>=i.value.x&&S<=i.value.x+i.value.w&&x>=i.value.y&&x<=i.value.y+i.value.h}function mt(){i.value.w>0?(i.value={x:0,y:0,w:0,h:0},te()):d("cancel")}function R(){if(!s||i.value.w===0){ie.warning("请先框选区域");return}const S=s.canvas,x=document.createElement("canvas");x.width=i.value.w,x.height=i.value.h;const T=x.getContext("2d");T&&(T.drawImage(S,i.value.x,i.value.y,i.value.w,i.value.h,0,0,i.value.w,i.value.h),x.toBlob(f=>{f?d("confirm",f):ie.error("截图导出失败")},"image/png"))}function $(S){if(S.key==="Escape"){if(k.value){je();return}d("cancel")}}return Me(()=>r.screenshotCanvas,()=>{r.screenshotCanvas&&De(()=>ce())}),(S,x)=>(a(),l("div",Gs,[e("div",Js,[e("canvas",{ref_key:"baseCanvasRef",ref:u,class:"base-canvas"},null,512),e("canvas",{ref_key:"maskCanvasRef",ref:c,class:"mask-canvas",onMousedown:_e,onMousemove:pe,onMouseup:ne,onMouseleave:Re},null,544),He(e("input",{ref_key:"textInputRef",ref:K,"onUpdate:modelValue":x[0]||(x[0]=T=>Z.value=T),class:oe(["text-input-overlay",{"text-input-active":k.value}]),style:Ve(I.value),onKeydown:[yt(Oe,["enter"]),yt(je,["esc"])],onBlur:Ze,onFocus:et},null,38),[[bt,Z.value]]),i.value.w>0?(a(),l("div",{key:0,class:"selection-box",style:Ve(ee.value)},[e("div",Zs,[e("span",{class:"handle nw",onMousedown:x[1]||(x[1]=$e(T=>Le("nw",T),["stop"]))},null,32),e("span",{class:"handle n",onMousedown:x[2]||(x[2]=$e(T=>Le("n",T),["stop"]))},null,32),e("span",{class:"handle ne",onMousedown:x[3]||(x[3]=$e(T=>Le("ne",T),["stop"]))},null,32),e("span",{class:"handle e",onMousedown:x[4]||(x[4]=$e(T=>Le("e",T),["stop"]))},null,32),e("span",{class:"handle se",onMousedown:x[5]||(x[5]=$e(T=>Le("se",T),["stop"]))},null,32),e("span",{class:"handle s",onMousedown:x[6]||(x[6]=$e(T=>Le("s",T),["stop"]))},null,32),e("span",{class:"handle sw",onMousedown:x[7]||(x[7]=$e(T=>Le("sw",T),["stop"]))},null,32),e("span",{class:"handle w",onMousedown:x[8]||(x[8]=$e(T=>Le("w",T),["stop"]))},null,32)]),e("div",{class:"edit-toolbar",style:Ve(J.value),onMousedown:x[9]||(x[9]=$e(()=>{},["stop"]))},[e("div",eo,[e("div",to,[(a(),l(ge,null,we(z,T=>e("button",{key:T.name,class:oe(["tool-btn",{active:w.value===T.name}]),title:T.label,onClick:f=>w.value=T.name},v(T.icon),11,no)),64))]),e("div",ao,[(a(),l(ge,null,we(L,T=>e("span",{key:T,class:oe(["color-dot",{active:W.value===T}]),style:Ve({background:T}),onClick:f=>W.value=T},null,14,so)),64))]),e("div",oo,[e("button",{class:"action-btn undo-btn",disabled:m.value<=0,title:"撤销",onClick:X},"↶",8,lo),e("button",{class:"action-btn cancel-btn",title:"取消截图",onClick:mt},"取消"),e("button",{class:"action-btn confirm-btn",title:"确认截图",onClick:R},"✓ 确认")])])],36)],4)):M("",!0),i.value.w?M("",!0):(a(),l("div",io,"移动鼠标自动识别窗口,点击选窗口或拖拽框选区域,按 ESC 退出"))])]))}}),po=ke(fo,[["__scopeId","data-v-974c426c"]]),dt=b(!1),rt=b(null),Fe=b(null);let Pt="user";function go(t){return(t==null?void 0:t.name)==="NotAllowedError"||(t==null?void 0:t.name)==="SecurityError"?"permission-denied":(t==null?void 0:t.name)==="NotFoundError"||(t==null?void 0:t.name)==="DevicesNotFoundError"?"no-device":(t==null?void 0:t.name)==="NotReadableError"||(t==null?void 0:t.name)==="TrackStartError"?"in-use":"unknown"}function Bt(t){if(!t)return"";const n=navigator.userAgent,d=!/Mobile|Android|iPhone|iPad|iPod|Windows Phone/i.test(n)?"选择本地图片":"使用系统相机";return{"permission-denied":`摄像头权限被拒绝,请使用下方"${d}",或在浏览器设置中允许访问摄像头`,"no-device":`当前环境不支持直接访问摄像头,请使用下方"${d}"`,"in-use":`摄像头正在被其他应用使用,请关闭后重试或使用"${d}"`,unknown:`摄像头启动失败,请使用下方"${d}"或重试`}[t]}async function Vt(t="user"){if(rt.value=null,Fe.value&&Ot(),Pt=t,!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)return rt.value="no-device",console.warn("[useCamera] 浏览器不支持 getUserMedia"),!1;try{const n=await navigator.mediaDevices.getUserMedia({video:{facingMode:{ideal:t},width:{ideal:1280},height:{ideal:720}},audio:!1});return Fe.value=n,dt.value=!0,!0}catch(n){return rt.value=go(n),console.error("[useCamera] 启动摄像头失败:",n),!1}}function Ot(){Fe.value&&(Fe.value.getTracks().forEach(t=>t.stop()),Fe.value=null),dt.value=!1}async function yo(t){if(!dt.value||!Fe.value)return console.warn("[useCamera] 摄像头未启动,无法拍照"),null;if(!t.videoWidth||!t.videoHeight)return console.warn("[useCamera] 视频尚未就绪"),null;try{const n=document.createElement("canvas");n.width=t.videoWidth,n.height=t.videoHeight;const r=n.getContext("2d");return r?(r.drawImage(t,0,0,n.width,n.height),await new Promise(u=>{n.toBlob(c=>u(c),"image/png")})):null}catch(n){return console.error("[useCamera] 拍照失败:",n),null}}async function _o(){return await Vt(Pt==="user"?"environment":"user")}function ho(){return{isActive:dt,error:rt,stream:Fe,startCamera:Vt,stopCamera:Ot,captureFrame:yo,switchCamera:_o,getCameraErrorMessage:Bt}}const bo={class:"camera-preview"},ko=["src"],wo={key:1,class:"camera-error"},$o={class:"error-text"},Co={class:"error-hint"},xo={key:2,class:"camera-loading"},Io=["capture"],To={key:0,class:"footer-controls"},So={key:1,class:"footer-controls"},Mo={key:2,class:"footer-controls"},Ao=be({__name:"CameraCapture",props:{modelValue:{type:Boolean}},emits:["update:modelValue","confirm","cancel"],setup(t,{emit:n}){const r=t,d=n,u=V({get:()=>r.modelValue,set:g=>d("update:modelValue",g)}),c=b(null),s=b(null),o=b(null),i=b(!1),h=b(null),_=b(!1),{error:O,stream:P,startCamera:U,stopCamera:w,captureFrame:W}=ho(),z=V(()=>Bt(o.value)),L=V(()=>{const g=navigator.userAgent;return!/Mobile|Android|iPhone|iPad|iPod|Windows Phone/i.test(g)}),y=V(()=>L.value?"选择本地图片":"使用系统相机"),m=V(()=>L.value?'点击下方"选择本地图片"可从本地选择图片':'点击下方"使用系统相机"可通过系统相机拍照');function p(){var g;(g=h.value)==null||g.click()}function F(g){var ee;const Q=g.target,de=(ee=Q.files)==null?void 0:ee[0];if(!de)return;const he=new FileReader;he.onload=()=>{s.value=he.result,o.value=null,i.value=!0,_.value=!0},he.onerror=()=>{ie.error("图片读取失败,请重试")},he.readAsDataURL(de),Q.value=""}async function B(){if(o.value=null,i.value=!1,s.value=null,_.value=!1,ie.info("即将请求摄像头权限..."),!await U("user")){o.value=O.value||"unknown";return}await De(),c.value&&P.value&&(c.value.srcObject=P.value,c.value.onloadedmetadata=()=>{var Q;(Q=c.value)==null||Q.play().then(()=>{i.value=!0}).catch(de=>{console.error("[CameraCapture] 视频播放失败:",de),o.value="unknown"})})}async function k(){if(!c.value||!i.value)return;const g=await W(c.value);if(!g){ie.error("拍照失败,请重试");return}const Q=new FileReader;Q.onload=()=>{s.value=Q.result},Q.readAsDataURL(g)}function Z(){const g=_.value;s.value=null,_.value=!1,g&&p()}async function I(){let g=null;if(s.value?g=N(s.value):c.value&&i.value&&(g=await W(c.value)),!g){ie.error("拍照数据获取失败,请重试");return}w(),d("confirm",g),u.value=!1}function K(){d("cancel"),u.value=!1}function Y(){w(),s.value=null,o.value=null,i.value=!1,_.value=!1}async function G(){await B()}function N(g){const Q=g.split(","),de=Q[0],he=Q[1],ee=de.match(/:(.*?);/),J=ee?ee[1]:"image/png",ce=atob(he),te=ce.length,ue=new Uint8Array(te);for(let D=0;D{g?(await De(),await B()):w()}),Xe(()=>{w()}),(g,Q)=>{const de=se("el-button"),he=se("el-dialog");return a(),ye(he,{modelValue:u.value,"onUpdate:modelValue":Q[0]||(Q[0]=ee=>u.value=ee),title:"拍照",width:"640px","close-on-click-modal":!1,"close-on-press-escape":!0,onClose:Y},{footer:E(()=>[!s.value&&!o.value?(a(),l("div",To,[C(de,{onClick:K},{default:E(()=>[...Q[3]||(Q[3]=[H("取消",-1)])]),_:1}),C(de,{type:"primary",circle:"",size:"large",disabled:!i.value,title:"拍照",onClick:k},{default:E(()=>[...Q[4]||(Q[4]=[e("span",{class:"capture-icon"},"📷",-1)])]),_:1},8,["disabled"])])):s.value?(a(),l("div",So,[C(de,{onClick:Z},{default:E(()=>[...Q[5]||(Q[5]=[H("重拍",-1)])]),_:1}),C(de,{type:"primary",onClick:I},{default:E(()=>[...Q[6]||(Q[6]=[H(" 确认 ✓ ",-1)])]),_:1})])):(a(),l("div",Mo,[C(de,{onClick:K},{default:E(()=>[...Q[7]||(Q[7]=[H("关闭",-1)])]),_:1}),C(de,{type:"success",onClick:p},{default:E(()=>[H(v(y.value),1)]),_:1}),C(de,{type:"primary",onClick:G},{default:E(()=>[...Q[8]||(Q[8]=[H("重试",-1)])]),_:1})]))]),default:E(()=>[e("div",bo,[He(e("video",{ref_key:"videoRef",ref:c,autoplay:"",muted:"",playsinline:"",class:"camera-video"},null,512),[[Ft,!s.value&&!o.value]]),s.value?(a(),l("img",{key:0,src:s.value,class:"captured-photo",alt:"拍照结果"},null,8,ko)):M("",!0),o.value?(a(),l("div",wo,[Q[1]||(Q[1]=e("div",{class:"error-icon"},"📷",-1)),e("p",$o,v(z.value),1),e("p",Co,v(m.value),1)])):M("",!0),!s.value&&!o.value&&!i.value?(a(),l("div",xo,[...Q[2]||(Q[2]=[e("p",null,"正在启动摄像头...",-1)])])):M("",!0)]),e("input",{ref_key:"fileInputRef",ref:h,type:"file",accept:"image/*",capture:L.value?void 0:"user",style:{display:"none"},onChange:F},null,40,Io)]),_:1},8,["modelValue"])}}}),Ro=ke(Ao,[["__scopeId","data-v-8133b63c"]]),Lo={key:0,class:"pending-images-bar"},Eo=["src","alt"],Do=["title"],Po=["onClick"],Bo=be({__name:"PendingImagePreview",props:{images:{}},emits:["remove"],setup(t){return(n,r)=>t.images.length>0?(a(),l("div",Lo,[(a(!0),l(ge,null,we(t.images,d=>(a(),l("div",{class:"thumbnail",key:d.id},[e("img",{src:d.previewUrl,class:"thumb-img",alt:d.source==="screenshot"?"截图":"拍照"},null,8,Eo),e("span",{class:"thumb-source",title:d.source==="screenshot"?"截图":"拍照"},v(d.source==="screenshot"?"✂":"📷"),9,Do),e("button",{class:"thumb-remove",title:"删除",onClick:u=>n.$emit("remove",d.id)},"✕",8,Po)]))),128))])):M("",!0)}}),Vo=ke(Bo,[["__scopeId","data-v-86e08e43"]]),Oo={key:0,class:"completion-bar"},zo={key:0,class:"completion-thinking"},Uo={class:"completion-text"},No=be({__name:"CompletionBar",props:{ghostText:{default:""},loading:{type:Boolean,default:!1},confidence:{default:0},visible:{type:Boolean,default:!0}},emits:["accept","acceptWord","dismiss"],setup(t){return(n,r)=>t.visible&&(t.ghostText||t.loading)?(a(),l("div",Oo,[t.loading?(a(),l("span",zo,"AI 正在思考...")):(a(),l(ge,{key:1},[r[0]||(r[0]=e("span",{class:"completion-label"},"AI 建议:",-1)),e("span",Uo,v(t.ghostText),1),r[1]||(r[1]=e("span",{class:"completion-hint"},[e("kbd",null,"Tab"),H(" 接受 "),e("span",{class:"completion-hint__sub"},[H("| "),e("kbd",null,"Shift+Tab"),H(" 逐词")])],-1))],64))])):M("",!0)}}),jo=ke(No,[["__scopeId","data-v-ace47e74"]]),Wo={class:"toolbar-right"},qo=["disabled"],Fo=["disabled"],Ho=be({__name:"AiAssistToolbar",props:{autocompleteEnabled:{type:Boolean,default:!0},hasSelection:{type:Boolean,default:!1},hasText:{type:Boolean,default:!1}},emits:["toggleAutocomplete","toneAdjust","polish","rewrite"],setup(t){return(n,r)=>(a(),l("div",Wo,[e("button",{class:oe(["tb-btn tb-btn--ai",{"tb-btn--active":t.autocompleteEnabled}]),title:"AI自动补齐",onClick:r[0]||(r[0]=d=>n.$emit("toggleAutocomplete"))},[...r[4]||(r[4]=[H(" ✨ ",-1),e("span",{class:"tb-tip"},"自动补齐",-1)])],2),e("button",{class:oe(["tb-btn tb-btn--ai",{"tb-btn--disabled":!t.hasSelection}]),disabled:!t.hasSelection,title:"AI语气调整",onClick:r[1]||(r[1]=d=>n.$emit("toneAdjust"))},[...r[5]||(r[5]=[H(" 🎭 ",-1),e("span",{class:"tb-tip"},"语气",-1)])],10,qo),e("button",{class:oe(["tb-btn tb-btn--ai",{"tb-btn--disabled":!t.hasText}]),disabled:!t.hasText,title:"AI润色",onClick:r[2]||(r[2]=d=>n.$emit("polish"))},[...r[6]||(r[6]=[H(" ✏️ ",-1),e("span",{class:"tb-tip"},"润色",-1)])],10,Fo),e("button",{class:"tb-btn tb-btn--ai",title:"AI改写",onClick:r[3]||(r[3]=d=>n.$emit("rewrite"))},[...r[7]||(r[7]=[H(" 🔄 ",-1),e("span",{class:"tb-tip"},"改写",-1)])])]))}}),Ko=ke(Ho,[["__scopeId","data-v-8712714b"]]),pt={professional:"专业",friendly:"友好",concise:"简洁"},it={expand:"扩写",compress:"压缩",correct:"纠错"},Xo={class:"tone-header"},Yo={class:"tone-original"},Qo={class:"tone-text"},Go={key:0,class:"tone-select"},Jo={class:"tone-options"},Zo=["onClick"],el={class:"tone-option__icon"},tl={class:"tone-option__name"},nl={class:"tone-option__desc"},al={key:1,class:"tone-loading"},sl={key:2,class:"tone-result"},ol={class:"tone-text tone-text--highlight"},ll={key:0,class:"tone-summary"},il={class:"tone-actions"},rl=be({__name:"ToneAdjustPopover",props:{visible:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},result:{default:null},originalText:{default:""}},emits:["select","replace","cancel"],setup(t){const n=[{value:"professional",icon:"💼",label:pt.professional,desc:"技术术语,结构清晰"},{value:"friendly",icon:"😊",label:pt.friendly,desc:"亲和温暖,贴心关怀"},{value:"concise",icon:"⚡",label:pt.concise,desc:"开门见山,直奔主题"}];return(r,d)=>(a(),l(ge,null,[t.visible?(a(),l("div",{key:0,class:"tone-overlay",onClick:d[0]||(d[0]=u=>r.$emit("cancel"))})):M("",!0),t.visible?(a(),l("div",{key:1,class:"tone-popover",onClick:d[4]||(d[4]=$e(()=>{},["stop"]))},[e("div",Xo,[d[5]||(d[5]=e("span",{class:"tone-title"},"语气调整",-1)),e("button",{class:"tone-close",onClick:d[1]||(d[1]=u=>r.$emit("cancel"))},"✕")]),e("div",Yo,[d[6]||(d[6]=e("label",{class:"tone-label"},"原文",-1)),e("p",Qo,v(t.originalText),1)]),!t.loading&&!t.result?(a(),l("div",Go,[d[7]||(d[7]=e("label",{class:"tone-label"},"选择目标语气",-1)),e("div",Jo,[(a(),l(ge,null,we(n,u=>e("button",{key:u.value,class:"tone-option",onClick:c=>r.$emit("select",u.value)},[e("span",el,v(u.icon),1),e("span",tl,v(u.label),1),e("span",nl,v(u.desc),1)],8,Zo)),64))])])):M("",!0),t.loading?(a(),l("div",al,[...d[8]||(d[8]=[e("span",{class:"tone-loading__spinner"},null,-1),e("span",null,"AI 正在改写...",-1)])])):M("",!0),t.result?(a(),l("div",sl,[d[9]||(d[9]=e("label",{class:"tone-label"},"改写结果",-1)),e("p",ol,v(t.result.rewritten_text||"AI 暂不可用"),1),t.result.changes_summary?(a(),l("p",ll,v(t.result.changes_summary),1)):M("",!0),e("div",il,[e("button",{class:"tone-btn tone-btn--primary",onClick:d[2]||(d[2]=u=>r.$emit("replace",t.result.rewritten_text))}," 替换原文 "),e("button",{class:"tone-btn",onClick:d[3]||(d[3]=u=>r.$emit("cancel"))},"取消")])])):M("",!0)])):M("",!0)],64))}}),cl=ke(rl,[["__scopeId","data-v-741d3331"]]),ul={class:"polish-header"},dl={key:0,class:"polish-actions-select"},vl={class:"polish-action-tabs"},ml=["onClick"],fl={class:"polish-action-tab__icon"},pl={class:"polish-action-tab__name"},gl={class:"polish-action-tab__desc"},yl={key:1,class:"polish-loading"},_l={key:2,class:"polish-body"},hl={class:"polish-compare"},bl={class:"polish-side"},kl={class:"polish-text-box polish-text-box--original"},wl={class:"polish-side"},$l={class:"polish-label"},Cl={class:"polish-action-badge"},xl={key:0,class:"polish-summary"},Il={class:"polish-footer"},Tl=["disabled"],Sl=be({__name:"PolishPanel",props:{visible:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},result:{default:null},originalText:{default:""}},emits:["selectAction","replace","cancel"],setup(t){const n=[{value:"expand",icon:"📝",label:it.expand,desc:"补充细节,丰富内容"},{value:"compress",icon:"📋",label:it.compress,desc:"精简文字,删除冗余"},{value:"correct",icon:"✅",label:it.correct,desc:"纠正错别字和语法"}],r=t,d=b(null),u=b("");Me(()=>r.result,s=>{s&&(u.value=s.polished_text)}),Me(()=>r.visible,s=>{s||(u.value="")});const c=V(()=>r.result?it[r.result.action]||r.result.action:"");return(s,o)=>(a(),l(ge,null,[t.visible?(a(),l("div",{key:0,class:"polish-overlay",onClick:o[0]||(o[0]=i=>s.$emit("cancel"))})):M("",!0),t.visible?(a(),l("div",{key:1,class:"polish-panel",onClick:o[5]||(o[5]=$e(()=>{},["stop"]))},[e("div",ul,[o[6]||(o[6]=e("span",{class:"polish-title"},"✏️ 文字润色",-1)),e("button",{class:"polish-close",onClick:o[1]||(o[1]=i=>s.$emit("cancel"))},"✕")]),!t.loading&&!t.result?(a(),l("div",dl,[o[7]||(o[7]=e("label",{class:"polish-label"},"选择润色操作",-1)),e("div",vl,[(a(),l(ge,null,we(n,i=>e("button",{key:i.value,class:"polish-action-tab",onClick:h=>s.$emit("selectAction",i.value)},[e("span",fl,v(i.icon),1),e("span",pl,v(i.label),1),e("span",gl,v(i.desc),1)],8,ml)),64))])])):M("",!0),t.loading?(a(),l("div",yl,[...o[8]||(o[8]=[e("span",{class:"polish-loading__spinner"},null,-1),e("span",null,"AI 正在润色...",-1)])])):M("",!0),t.result?(a(),l("div",_l,[e("div",hl,[e("div",bl,[o[9]||(o[9]=e("label",{class:"polish-label"},"原文",-1)),e("div",kl,v(t.originalText),1)]),e("div",wl,[e("label",$l,[o[10]||(o[10]=H(" 润色结果 ",-1)),e("span",Cl,v(c.value),1)]),He(e("textarea",{ref_key:"editTextareaRef",ref:d,"onUpdate:modelValue":o[2]||(o[2]=i=>u.value=i),class:"polish-text-box polish-text-box--result",placeholder:"润色结果为空"},null,512),[[bt,u.value]])])]),t.result.changes_summary?(a(),l("p",xl," 💡 "+v(t.result.changes_summary),1)):M("",!0),e("div",Il,[e("button",{class:"polish-btn polish-btn--ghost",onClick:o[3]||(o[3]=i=>s.$emit("cancel"))}," 取消 "),e("button",{class:"polish-btn polish-btn--primary",disabled:!u.value,onClick:o[4]||(o[4]=i=>s.$emit("replace",u.value))}," 替换原文 ",8,Tl)])])):M("",!0)])):M("",!0)],64))}}),Ml=ke(Sl,[["__scopeId","data-v-090be9b9"]]),Al={class:"rewrite-header"},Rl={key:0,class:"rewrite-loading"},Ll={key:1,class:"rewrite-body"},El={class:"rewrite-version-list"},Dl={class:"rewrite-version-card__head"},Pl={class:"rewrite-version-card__index"},Bl={class:"rewrite-version-card__style"},Vl={key:0,class:"rewrite-version-card__source"},Ol={class:"rewrite-version-card__content"},zl={class:"rewrite-version-card__actions"},Ul=["onClick"],Nl=["onClick"],jl={key:2,class:"rewrite-empty"},Wl=be({__name:"RewritePanel",props:{visible:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},result:{default:null}},emits:["replace","append","cancel"],setup(t){const n=t,r=V(()=>{var d;return((d=n.result)==null?void 0:d.versions)??[]});return(d,u)=>(a(),l(ge,null,[t.visible?(a(),l("div",{key:0,class:"rewrite-overlay",onClick:u[0]||(u[0]=c=>d.$emit("cancel"))})):M("",!0),t.visible?(a(),l("div",{key:1,class:"rewrite-panel",onClick:u[2]||(u[2]=$e(()=>{},["stop"]))},[e("div",Al,[u[3]||(u[3]=e("span",{class:"rewrite-title"},"🔄 智能改写",-1)),e("button",{class:"rewrite-close",onClick:u[1]||(u[1]=c=>d.$emit("cancel"))},"✕")]),t.loading?(a(),l("div",Rl,[...u[4]||(u[4]=[e("span",{class:"rewrite-loading__spinner"},null,-1),e("div",{class:"rewrite-loading__info"},[e("p",{class:"rewrite-loading__title"},"正在生成改写版本"),e("p",{class:"rewrite-loading__sub"},"AI 将基于对话上下文和知识库,为你提供多个改写建议")],-1)])])):M("",!0),!t.loading&&r.value.length>0?(a(),l("div",Ll,[e("div",El,[(a(!0),l(ge,null,we(r.value,(c,s)=>(a(),l("div",{key:s,class:"rewrite-version-card"},[e("div",Dl,[e("span",Pl,"版本 "+v(s+1),1),e("span",Bl,v(c.style),1),c.source?(a(),l("span",Vl,v(c.source),1)):M("",!0)]),e("div",Ol,v(c.text),1),e("div",zl,[e("button",{class:"rewrite-action-btn rewrite-action-btn--primary",onClick:o=>d.$emit("replace",c.text)}," 替换 ",8,Ul),e("button",{class:"rewrite-action-btn",onClick:o=>d.$emit("append",c.text)}," 追加 ",8,Nl)])]))),128))])])):M("",!0),!t.loading&&t.result&&r.value.length===0?(a(),l("div",jl,[...u[5]||(u[5]=[e("span",{class:"rewrite-empty__icon"},"📭",-1),e("p",{class:"rewrite-empty__text"},"暂无改写建议",-1),e("p",{class:"rewrite-empty__hint"},"AI 未能生成合适的改写版本,请稍后重试",-1)])])):M("",!0)])):M("",!0)],64))}}),ql=ke(Wl,[["__scopeId","data-v-59717528"]]),Fl=/\s+|[,,。;;::!!??、()()]+/,Hl=800,Kl=1500,Xl=5,Yl=.5;function Ql(t){const{getConversationId:n,getInputText:r,setInputText:d}=t,u=b(""),c=b(!1),s=b(!0),o=b(0),i=b(!1),h=b(!1),_=b(null),O=b(""),P=b(!1),U=b(!1),w=b(null),W=b(""),z=b(!1),L=b(!1),y=b(null);let m=null,p=null,F=null,B=null,k=null;function Z(){if(!s.value)return;const te=r();if(te.length{m=new AbortController;const D=m.signal,j=setTimeout(()=>{m==null||m.abort()},Kl);c.value=!0;try{const le=await Yt(ue,te,0,80,D);!D.aborted&&le.confidence>=Yl&&(u.value=le.completion,o.value=le.confidence)}catch(le){(le==null?void 0:le.name)!=="AbortError"&&(le==null?void 0:le.code)!=="ERR_CANCELED"&&console.error("[useAiAssist] 自动补齐失败:",le)}finally{clearTimeout(j),c.value=!1,m=null}},Hl))}function I(){u.value&&(d(r()+u.value),u.value="",o.value=0)}function K(){if(!u.value)return;const te=u.value.split(Fl).filter(Boolean);if(te.length===0)return;const ue=r(),D=ue.length>0&&!ue.endsWith(" ");d(ue+(D?" ":"")+te[0]),u.value=te.length>1?te.slice(1).join(" "):""}function Y(){u.value="",o.value=0}function G(te,ue){!te||te.length<5||(O.value=te,_.value=null,i.value=!0)}async function N(te,ue,D){const j=n();if(j){F&&F.abort(),F=new AbortController,h.value=!0,_.value=null;try{const le=await Xt(j,te,ue,D,F.signal);_.value=le}catch(le){(le==null?void 0:le.name)!=="AbortError"&&(le==null?void 0:le.code)!=="ERR_CANCELED"&&(console.error("[useAiAssist] 语气调整失败:",le),_.value={rewritten_text:"",tone:D,changes_summary:"AI 服务暂不可用"})}finally{h.value=!1,F=null}}}function g(){i.value=!1,_.value=null,O.value=""}function Q(){const te=r();te&&(W.value=te,w.value=null,P.value=!0)}async function de(te){const ue=n();if(ue){B&&B.abort(),B=new AbortController,U.value=!0,w.value=null;try{const D=await Kt(ue,W.value,te,B.signal);w.value=D}catch(D){(D==null?void 0:D.name)!=="AbortError"&&(D==null?void 0:D.code)!=="ERR_CANCELED"&&(console.error("[useAiAssist] 文字润色失败:",D),w.value={polished_text:"",action:te,changes_summary:"AI 服务暂不可用"})}finally{U.value=!1,B=null}}}function he(){P.value=!1,w.value=null,W.value=""}async function ee(){const te=n();if(te){k&&k.abort(),k=new AbortController,z.value=!0,L.value=!0,y.value=null;try{const ue=await Ht(te,r(),k.signal);y.value=ue}catch(ue){(ue==null?void 0:ue.name)!=="AbortError"&&(ue==null?void 0:ue.code)!=="ERR_CANCELED"&&(console.error("[useAiAssist] 智能改写失败:",ue),y.value={versions:[]})}finally{L.value=!1,k=null}}}function J(){z.value=!1,y.value=null}function ce(){m&&(m.abort(),m=null),F&&(F.abort(),F=null),B&&(B.abort(),B=null),k&&(k.abort(),k=null),p&&(clearTimeout(p),p=null),u.value="",c.value=!1,o.value=0,i.value=!1,h.value=!1,_.value=null,P.value=!1,U.value=!1,w.value=null,z.value=!1,L.value=!1,y.value=null}return{ghostText:u,isCompletLoading:c,autocompleteEnabled:s,completionConfidence:o,triggerAutocomplete:Z,acceptCompletion:I,acceptCompletionWord:K,clearCompletion:Y,tonePopoverVisible:i,toneLoading:h,toneResult:_,toneOriginalText:O,openTonePopover:G,adjustTone:N,closeTonePopover:g,polishPanelVisible:P,polishLoading:U,polishResult:w,polishOriginalText:W,openPolishPanel:Q,polishText:de,closePolishPanel:he,rewritePanelVisible:z,rewriteLoading:L,rewriteResult:y,openRewritePanel:ee,closeRewritePanel:J,cleanup:ce}}const xt=b(!1);function Gl(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)}async function Jl(){if(!Gl())return console.warn("[useScreenCapture] 浏览器不支持 Screen Capture API"),null;xt.value=!0;try{const t=await navigator.mediaDevices.getDisplayMedia({video:{displaySurface:"monitor"},audio:!1}),n=t.getVideoTracks()[0];if(!n)return console.warn("[useScreenCapture] 没有获取到视频轨道"),t.getTracks().forEach(u=>u.stop()),null;const r=n.getSettings();if(r.displaySurface&&r.displaySurface!=="monitor")return t.getTracks().forEach(u=>u.stop()),console.warn("[useScreenCapture] 用户选择了非屏幕源:",r.displaySurface),null;let d=null;if("ImageCapture"in window)try{const c=await new ImageCapture(n).grabFrame();d=document.createElement("canvas"),d.width=c.width,d.height=c.height;const s=d.getContext("2d");s&&s.drawImage(c,0,0),c.close()}catch(u){console.warn("[useScreenCapture] ImageCapture 失败,回退到 Canvas 方案:",u)}if(!d){const u=document.createElement("video");u.srcObject=t,u.muted=!0,await new Promise((s,o)=>{u.onloadedmetadata=()=>s(),u.onerror=()=>o(new Error("视频加载失败")),u.play()}),await new Promise(s=>setTimeout(s,200)),d=document.createElement("canvas"),d.width=u.videoWidth,d.height=u.videoHeight;const c=d.getContext("2d");c&&c.drawImage(u,0,0),u.pause(),u.srcObject=null}return t.getTracks().forEach(u=>u.stop()),d}catch(t){return(t==null?void 0:t.name)==="NotAllowedError"||(t==null?void 0:t.name)==="AbortError"?(console.log("[useScreenCapture] 用户取消了屏幕选择"),null):(console.error("[useScreenCapture] 截图失败:",t),null)}finally{xt.value=!1}}function Zl(){const t=b([]),n=V(()=>t.value.length>0),r=V(()=>t.value.length);function d(){return`${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function u(o,i){const h=URL.createObjectURL(o),_={id:d(),blob:o,previewUrl:h,source:i,createdAt:Date.now()};t.value.push(_)}function c(o){const i=t.value.findIndex(h=>h.id===o);i!==-1&&(URL.revokeObjectURL(t.value[i].previewUrl),t.value.splice(i,1))}function s(){t.value.forEach(o=>{URL.revokeObjectURL(o.previewUrl)}),t.value=[]}return{images:t,hasImages:n,count:r,addImage:u,removeImage:c,clearAll:s}}async function at(t){const n=new FormData;if(t instanceof File)n.append("file",t);else{const r=`paste-image-${Date.now()}.png`;n.append("file",t,r)}return await ei(n)}async function ei(t,n=3){for(let r=0;r<=n;r++)try{return await Pe.post("/upload",t,{headers:{"Content-Type":void 0},timeout:6e4})}catch(d){if(r===n)throw d;const u=1e3*Math.pow(2,r);console.warn(`[Upload] 上传失败,${u/1e3}秒后重试(第 ${r+1}/${n} 次)`),await new Promise(c=>setTimeout(c,u))}throw new Error("上传失败:已达最大重试次数")}function ti(){const t=At({isListening:!1,interimText:"",finalText:"",error:null,isSupported:typeof window<"u"&&(!!window.SpeechRecognition||!!window.webkitSpeechRecognition)});let n=null,r=!1;function d(){const o=window.SpeechRecognition||window.webkitSpeechRecognition;if(!o){t.error="当前浏览器不支持语音识别,请使用 Chrome 或 Edge";return}n=new o,n.lang="zh-CN",n.continuous=!0,n.interimResults=!0,n.maxAlternatives=1,n.onresult=i=>{let h="";for(let _=i.resultIndex;_{switch(i.error){case"not-allowed":t.error="麦克风权限被拒绝,请在浏览器设置中允许使用麦克风",r=!1,t.isListening=!1;break;case"service-not-allowed":t.error="语音识别服务不可用,请检查浏览器设置",r=!1,t.isListening=!1;break;case"network":t.error="网络错误,语音识别服务不可用,请检查网络连接",r=!1,t.isListening=!1;break;case"no-speech":break;case"aborted":break;case"audio-capture":t.error="音频采集失败,请检查麦克风设备",r=!1,t.isListening=!1;break;default:t.error=`语音识别错误: ${i.error}`;break}},n.onend=()=>{if(t.interimText="",r)try{n.start()}catch{setTimeout(()=>{if(r&&n)try{n.start()}catch(i){console.error("[SpeechRecognition] 自动重启失败:",i),t.isListening=!1,t.error="语音识别自动恢复失败,请重新点击语音按钮"}},100)}else t.isListening=!1}}function u(){if(!t.isListening){if(!t.isSupported){t.error="当前浏览器不支持语音识别,请使用 Chrome 或 Edge";return}if(t.error=null,t.finalText="",t.interimText="",r=!0,n||d(),!n){t.error="语音识别器创建失败";return}try{n.start(),t.isListening=!0}catch{setTimeout(()=>{if(r&&n&&!t.isListening)try{n.start(),t.isListening=!0}catch(o){console.error("[SpeechRecognition] 启动失败:",o),t.error="语音识别启动失败,请重试",r=!1}},200)}}}function c(){if(r=!1,n)try{n.stop()}catch(o){console.warn("[SpeechRecognition] stop 警告:",o)}t.isListening=!1,t.interimText=""}function s(){t.finalText="",t.interimText="",t.error=null}return{state:t,start:u,stop:c,reset:s}}const ni={key:0,class:"reply-preview"},ai={class:"reply-preview-content"},si={class:"reply-preview-sender"},oi={class:"reply-preview-text"},li={class:"chat-toolbar"},ii={class:"toolbar-left"},ri={class:"emoji-wrapper"},ci={key:0,class:"emoji-picker-popup"},ui={class:"emoji-grid"},di=["onClick"],vi={class:"chat-input-card"},mi=["title"],fi=["disabled"],pi=be({__name:"ReplyBox",props:{replyToMessage:{default:null}},emits:["send","cancelReply"],setup(t,{expose:n,emit:r}){function d(R){return R?typeof R=="string"?R:Array.isArray(R)?R.map($=>$.loc&&$.msg?`${$.loc.slice(1).join(".")}: ${$.msg}`:$.msg?$.msg:JSON.stringify($)).join("; "):typeof R=="object"?JSON.stringify(R):String(R):""}const u=r,c=b(""),s=b(null),o=b(null),i=b(null),h=Be(),{sendTyping:_}=kt(),O=b(60),P=b(!1),U=b(!1),w=b(!1),W=b(!1);let z=null;const L=b(!1),y=b(null),m=b(!1),p=Zl(),{state:F,start:B,stop:k,reset:Z}=ti(),I=Ql({getConversationId:()=>h.currentConversationId,getInputText:()=>c.value,setInputText:R=>{c.value=R}}),K=b("");function Y(R){return R.length>0&&!R.endsWith(" ")&&!R.endsWith(` `)}const G=["😀","😃","😄","😁","😆","😅","🤣","😂","🙂","😊","😇","🥰","😍","🤩","😘","😗","😚","😙","😋","😛","😜","🤪","😝","🤑","🤗","🤭","🤫","🤔","🤐","🤨","😐","😑","😶","😏","😒","🙄","😬","😮","🤯","😲","😳","🥺","😢","😭","😤","😠","😡","🤬","👍","👎","👏","🙌","🤝","💪","✌️","🤞","❤️","🧡","💛","💚","💙","💜","💯","✅"],N=V(()=>{const R=h.currentConversation;if(!R)return[];const $=[R.employee_id];return R.participants&&$.push(...R.participants.map(S=>S.id)),$}),g=V(()=>{const R=s.value;return R?R.selectionStart!==R.selectionEnd&&R.selectionEnd-R.selectionStart>=5:!1}),Q=V(()=>c.value.trim().length>0);function de(){h.fetchConversations()}function he(R){c.value+=R,L.value=!1,De(()=>{var $;($=s.value)==null||$.focus()})}let ee=0,J=0,ce=0;Me(()=>h.pendingReplyText,R=>{R&&(c.value=R,h.pendingReplyText="",De(()=>{var $;($=s.value)==null||$.focus()}))}),Me(c,()=>{var $;const R=($=h.currentConversation)==null?void 0:$.id;R&&c.value.trim()&&_(R)}),Me(()=>F.finalText+"|"+F.interimText,()=>{if(F.isListening){const R=K.value,$=Y(R)?" ":"";c.value=R+$+F.finalText+F.interimText}}),Me(()=>F.isListening,(R,$)=>{if($&&!R){const S=K.value,x=Y(S)?" ":"";c.value=S+x+F.finalText,Z()}});function te(){if(!F.isSupported){ie.warning("当前浏览器不支持语音识别,请使用 Chrome 或 Edge");return}F.isListening?(k(),ie.success("语音识别已停止")):(K.value=c.value,B(),F.isListening?ie.info("正在聆听..."):F.error&&ie.error(F.error))}function ue(R){R.ctrlKey&&(R.key==="d"||R.key==="D")&&(R.preventDefault(),te())}function D(R){var $;R.preventDefault(),P.value=!0,ee=R.clientY,J=(($=i.value)==null?void 0:$.offsetHeight)||80,ce=O.value,document.addEventListener("mousemove",j),document.addEventListener("mouseup",le),document.body.style.cursor="row-resize",document.body.style.userSelect="none"}function j(R){if(!P.value)return;const $=ee-R.clientY,x=Math.max(80,Math.min(400,J+$))-J,T=Math.max(60,Math.min(300,ce+x));O.value=T}function le(){P.value=!1,document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",le),document.body.style.cursor="",document.body.style.userSelect=""}function q(R){if(I.ghostText.value){if(R.key==="Tab"&&!R.shiftKey){R.preventDefault(),I.acceptCompletion();return}if(R.key==="Tab"&&R.shiftKey){R.preventDefault(),I.acceptCompletionWord();return}if(R.key==="Escape"){R.preventDefault(),I.clearCompletion();return}}if(R.key==="Enter"&&R.ctrlKey&&!R.shiftKey){R.preventDefault(),R.stopPropagation(),X();return}R.key==="Enter"&&!R.shiftKey&&(R.preventDefault(),X())}async function X(){var T;const R=c.value.trim(),$=p.hasImages.value,S=R.length>0;if(!$&&!S)return;const x=(T=h.currentConversation)==null?void 0:T.id;if(!x){ie.warning("请先选择一个会话");return}$&&await me(x),S&&u("send",R),c.value="",O.value=60}async function me(R){var T,f;ie.info("发送中...");const $=[...p.images.value];let S=0,x=0;for(const ae of $)try{const re=await at(ae.blob),ve=await nt(R,"[图片]","image",{media_url:re.url,file_name:re.filename,file_size:re.file_size});h.messages.push(ve),S++}catch(re){x++,console.error("[ReplyBox] 图片发送失败:",re);const ve=d((f=(T=re==null?void 0:re.response)==null?void 0:T.data)==null?void 0:f.detail)||(re==null?void 0:re.message)||"未知错误";ie.error(`图片发送失败:${ve}`)}p.clearAll(),S>0&&x===0?ie.success("发送成功"):S>0&&x>0&&ie.warning(`${S} 张发送成功,${x} 张发送失败`)}async function _e(R){const $=R.clipboardData;if(!$)return;const S=$.items;if(!(!S||S.length===0))for(const x of Array.from(S)){if(x.kind==="file"){R.preventDefault();const T=x.getAsFile();if(!T)continue;T.type.startsWith("image/")||T.name.match(/\.(jpg|jpeg|png|gif|bmp|webp|svg|ico|tiff?)$/i)?await pe(T):await ne(T);return}if(x.type.startsWith("image/")&&x.kind==="string"){R.preventDefault();const T=x.getAsFile();if(T){await pe(T);return}}if(x.kind==="string"&&x.type.startsWith("image/")){R.preventDefault();const T=x.getAsFile();if(T){await pe(T);return}}}}async function pe(R){var S,x,T;const $=(S=h.currentConversation)==null?void 0:S.id;if(!$){ie.warning("请先选择一个会话");return}try{ie.info("图片上传中...");const f=await at(R),ae=await nt($,"[图片]","image",{media_url:f.url,file_name:f.filename,file_size:f.file_size});h.messages.push(ae),ie.success("图片发送成功")}catch(f){console.error("图片上传失败:",f),ie.error(d((T=(x=f==null?void 0:f.response)==null?void 0:x.data)==null?void 0:T.detail)||(f==null?void 0:f.message)||"图片上传失败,请重试")}}async function ne(R){var S,x,T;const $=(S=h.currentConversation)==null?void 0:S.id;if(!$){ie.warning("请先选择一个会话");return}try{const f=R instanceof File?R.name:"文件";ie.info(`正在上传: ${f}`);const ae=await at(R),re=await nt($,`[文件] ${ae.filename}`,"file",{media_url:ae.url,file_name:ae.filename,file_size:ae.file_size});h.messages.push(re),ie.success("文件发送成功")}catch(f){console.error("文件发送失败:",f),ie.error(d((T=(x=f==null?void 0:f.response)==null?void 0:x.data)==null?void 0:T.detail)||(f==null?void 0:f.message)||"文件发送失败,请重试")}}async function fe(R){var T,f,ae;const $=R.target,S=$.files;if(!S||S.length===0)return;const x=(T=h.currentConversation)==null?void 0:T.id;if(!x){ie.warning("请先选择一个会话");return}for(const re of Array.from(S))try{re===S[0]&&ie.info(`正在上传: ${re.name}`);const ve=await at(re),Ce=ve.msg_type==="image",Ie=await nt(x,Ce?"[图片]":`[文件] ${re.name}`,Ce?"image":"file",{media_url:ve.url,file_name:ve.filename,file_size:ve.file_size});h.messages.push(Ie),ie.success(`${re.name} 发送成功`)}catch(ve){console.error("文件上传失败:",ve),ie.error(`${re.name} 上传失败: ${d((ae=(f=ve==null?void 0:ve.response)==null?void 0:f.data)==null?void 0:ae.detail)||(ve==null?void 0:ve.message)||"请重试"}`)}$.value=""}function Re(){const R=s.value;if(!R)return;const $=R.value.substring(R.selectionStart,R.selectionEnd);if(!$||$.length<5){ie.info("请先选中至少 5 个字符再使用语气调整功能");return}I.openTonePopover($,c.value)}function Ne(R){const $=s.value;if(!$)return;const S=$.selectionStart,x=$.selectionEnd,T=c.value;c.value=T.substring(0,S)+R+T.substring(x),De(()=>{$&&($.selectionStart=S+R.length,$.selectionEnd=S+R.length,$.focus())})}function Ye(R){c.value=R,I.closePolishPanel()}function Qe(R){c.value=R,I.closeRewritePanel()}function Ge(R){const $=c.value,S=$.length>0&&!$.endsWith(" ")?" ":"";c.value=$+S+R,I.closeRewritePanel()}function Je(R){var $;switch(R){case"image":o.value&&(o.value.accept="image/*",o.value.multiple=!0,o.value.click());break;case"file":o.value&&(o.value.accept="",o.value.multiple=!0,o.value.click());break;case"quickReply":($=s.value)==null||$.focus();break;case"screenshot":Oe();break;default:const S={remote:"远程协助功能开发中"};ie.info(S[R]||"功能开发中")}}async function Oe(){var S;if(!((S=h.currentConversation)==null?void 0:S.id)){ie.warning("请先选择一个会话");return}try{ie.info("请在弹窗中选择「屏幕」以截取完整画面",3)}catch{}const $=await Jl();$&&(y.value=$,W.value=!0)}function Ze(R){W.value=!1,y.value=null,p.addImage(R,"screenshot")}function et(){W.value=!1,y.value=null}function je(){var $;if(!(($=h.currentConversation)==null?void 0:$.id)){ie.warning("请先选择一个会话");return}m.value=!0}function Le(R){m.value=!1,p.addImage(R,"camera")}function xe(){m.value=!1}async function st(R){var S,x,T;const $=(S=h.currentConversation)==null?void 0:S.id;if($)try{ie.info("截图上传中...");const f=await at(R),ae=await nt($,"[截图]","image",{media_url:f.url,file_name:f.filename,file_size:f.file_size});h.messages.push(ae),ie.success("截图发送成功")}catch(f){console.error("[ReplyBox] 截图发送失败:",f);const ae=d((T=(x=f==null?void 0:f.response)==null?void 0:x.data)==null?void 0:T.detail)||(f==null?void 0:f.message)||"未知错误";ie.error(`截图发送失败:${ae}`)}finally{w.value=!1,z=null}}function vt(){w.value=!1,z=null}Ke(()=>{document.addEventListener("keydown",ue)}),Xe(()=>{document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",le),document.removeEventListener("keydown",ue),F.isListening&&k(),p.clearAll(),I.cleanup()});function mt(){var R;c.value="",(R=s.value)==null||R.blur()}return n({handleSend:X,handleUndo:mt}),(R,$)=>{var S,x,T;return a(),l("div",{class:"reply-box",ref_key:"replyBoxRef",ref:i},[e("div",{class:oe(["input-resize-handle",{dragging:P.value}]),onMousedown:D,title:"拖拽调整输入框高度"},null,34),t.replyToMessage?(a(),l("div",ni,[$[24]||($[24]=e("div",{class:"reply-preview-bar"},null,-1)),e("div",ai,[e("span",si,v(t.replyToMessage.sender_name||"未知"),1),e("span",oi,v((S=t.replyToMessage.content)==null?void 0:S.substring(0,60))+v(((x=t.replyToMessage.content)==null?void 0:x.length)>60?"...":""),1)]),e("button",{class:"reply-preview-close",title:"取消回复",onClick:$[0]||($[0]=f=>R.$emit("cancelReply"))},"✕")])):M("",!0),C(Vo,{images:A(p).images.value,onRemove:A(p).removeImage},null,8,["images","onRemove"]),e("div",li,[e("div",ii,[e("button",{class:"tb-btn",title:"截图",onClick:Oe},[...$[25]||($[25]=[H(" ✂️ ",-1),e("span",{class:"tb-tip"},"截图",-1)])]),e("button",{class:"tb-btn",title:"拍照",onClick:je},[...$[26]||($[26]=[H(" 📷 ",-1),e("span",{class:"tb-tip"},"拍照",-1)])]),$[30]||($[30]=e("div",{class:"tb-sep"},null,-1)),e("div",ri,[e("button",{class:"tb-btn",title:"表情",onClick:$[1]||($[1]=f=>L.value=!L.value)},[...$[27]||($[27]=[H(" 😊 ",-1),e("span",{class:"tb-tip"},"表情",-1)])]),L.value?(a(),l("div",ci,[e("div",ui,[(a(),l(ge,null,we(G,f=>e("button",{key:f,class:"emoji-grid__item",onClick:ae=>he(f)},v(f),9,di)),64))])])):M("",!0),L.value?(a(),l("div",{key:1,class:"emoji-picker-overlay",onClick:$[2]||($[2]=f=>L.value=!1)})):M("",!0)]),e("button",{class:"tb-btn",title:"文件",onClick:$[3]||($[3]=f=>Je("file"))},[...$[28]||($[28]=[H(" 📎 ",-1),e("span",{class:"tb-tip"},"文件",-1)])]),$[31]||($[31]=e("div",{class:"tb-sep"},null,-1)),e("button",{class:"tb-btn",title:"邀请员工/部门",onClick:$[4]||($[4]=f=>U.value=!0)},[...$[29]||($[29]=[H(" 👥 ",-1),e("span",{class:"tb-tip"},"邀请",-1)])])]),C(Ko,{"autocomplete-enabled":A(I).autocompleteEnabled.value,"has-selection":g.value,"has-text":Q.value,onToggleAutocomplete:$[5]||($[5]=f=>A(I).autocompleteEnabled.value=!A(I).autocompleteEnabled.value),onToneAdjust:Re,onPolish:$[6]||($[6]=f=>A(I).openPolishPanel()),onRewrite:$[7]||($[7]=f=>A(I).openRewritePanel())},null,8,["autocomplete-enabled","has-selection","has-text"])]),e("div",vi,[He(e("textarea",{ref_key:"inputRef",ref:s,"onUpdate:modelValue":$[8]||($[8]=f=>c.value=f),class:oe(["chat-input",{"chat-input--listening":A(F).isListening}]),placeholder:"输入回复内容... (Enter或Ctrl+Enter发送,Shift+Enter换行)",style:Ve({height:O.value+"px"}),onKeydown:q,onInput:$[9]||($[9]=f=>A(I).triggerAutocomplete()),onPaste:_e},null,38),[[bt,c.value]]),A(F).isSupported?(a(),l("button",{key:0,class:oe(["btn-voice",{"btn-voice--listening":A(F).isListening}]),title:A(F).isListening?"点击停止识别":"语音输入 (Ctrl+D)",onClick:te},v(A(F).isListening?"⏹":"🎤"),11,mi)):M("",!0),e("button",{class:"btn-send",disabled:!c.value.trim()&&!A(p).hasImages.value,onClick:X}," 发 送 ",8,fi)]),C(jo,{"ghost-text":A(I).ghostText.value,loading:A(I).isCompletLoading.value,confidence:A(I).completionConfidence.value,visible:A(I).autocompleteEnabled.value,onAccept:$[10]||($[10]=f=>A(I).acceptCompletion()),onAcceptWord:$[11]||($[11]=f=>A(I).acceptCompletionWord()),onDismiss:$[12]||($[12]=f=>A(I).clearCompletion())},null,8,["ghost-text","loading","confidence","visible"]),C(Dt,{modelValue:U.value,"onUpdate:modelValue":$[13]||($[13]=f=>U.value=f),"conversation-id":((T=A(h).currentConversation)==null?void 0:T.id)||"","existing-participant-ids":N.value,onSuccess:de},null,8,["modelValue","conversation-id","existing-participant-ids"]),e("input",{ref_key:"fileInputRef",ref:o,type:"file",style:{display:"none"},onChange:fe},null,544),w.value?(a(),ye(Qs,{key:1,"screenshot-canvas":A(z),onConfirm:st,onCancel:vt},null,8,["screenshot-canvas"])):M("",!0),W.value&&y.value?(a(),ye(po,{key:2,"screenshot-canvas":y.value,onConfirm:Ze,onCancel:et},null,8,["screenshot-canvas"])):M("",!0),C(Ro,{modelValue:m.value,"onUpdate:modelValue":$[14]||($[14]=f=>m.value=f),onConfirm:Le,onCancel:xe},null,8,["modelValue"]),C(cl,{visible:A(I).tonePopoverVisible.value,loading:A(I).toneLoading.value,result:A(I).toneResult.value,"original-text":A(I).toneOriginalText.value,onSelect:$[15]||($[15]=f=>A(I).adjustTone(A(I).toneOriginalText.value,c.value,f)),onReplace:$[16]||($[16]=f=>{Ne(f),A(I).closeTonePopover()}),onCancel:$[17]||($[17]=f=>A(I).closeTonePopover())},null,8,["visible","loading","result","original-text"]),C(Ml,{visible:A(I).polishPanelVisible.value,loading:A(I).polishLoading.value,result:A(I).polishResult.value,"original-text":A(I).polishOriginalText.value,onSelectAction:$[18]||($[18]=f=>A(I).polishText(f)),onReplace:$[19]||($[19]=f=>Ye(f)),onCancel:$[20]||($[20]=f=>A(I).closePolishPanel())},null,8,["visible","loading","result","original-text"]),C(ql,{visible:A(I).rewritePanelVisible.value,loading:A(I).rewriteLoading.value,result:A(I).rewriteResult.value,onReplace:$[21]||($[21]=f=>Qe(f)),onAppend:$[22]||($[22]=f=>Ge(f)),onCancel:$[23]||($[23]=f=>A(I).closeRewritePanel())},null,8,["visible","loading","result"])],512)}}}),gi=ke(pi,[["__scopeId","data-v-10f12231"]]),yi={class:"ai-recommend-bar"},_i={key:0,class:"ai-recommend-bar__loading"},hi={key:1,class:"ai-recommend-bar__empty"},bi={key:2,class:"ai-recommend-bar__list"},ki=["onClick","title"],wi={class:"ai-recommend-bar__card-header"},$i={key:0,class:"ai-recommend-bar__shortcut"},Ci={class:"ai-recommend-bar__card-title"},xi={class:"ai-recommend-bar__card-content"},Ii=be({__name:"AiRecommendBar",props:{recommendations:{},loading:{type:Boolean}},emits:["select","refresh"],setup(t,{expose:n,emit:r}){const d=t,u=r,c=Be(),s=V(()=>d.recommendations.slice(0,6));function o(h){c.pendingReplyText=h,u("select",h)}function i(h){return h>=.85?"ai-recommend-bar__confidence--high":h>=.6?"ai-recommend-bar__confidence--medium":"ai-recommend-bar__confidence--low"}return n({selectByIndex(h){h{const O=se("el-icon");return a(),l("div",yi,[t.loading?(a(),l("div",_i,[C(O,{class:"is-loading",size:14},{default:E(()=>[C(A(tt))]),_:1}),_[2]||(_[2]=e("span",{class:"ai-recommend-bar__loading-text"},"AI 正在生成推荐...",-1))])):t.recommendations.length===0?(a(),l("div",hi,[_[3]||(_[3]=H(" 暂无 AI 推荐 ",-1)),e("button",{class:"ai-recommend-bar__refresh",onClick:_[0]||(_[0]=P=>h.$emit("refresh")),title:"刷新推荐"}," 🔄 ")])):(a(),l("div",bi,[(a(!0),l(ge,null,we(s.value,(P,U)=>(a(),l("div",{key:U,class:"ai-recommend-bar__card",onClick:w=>o(P.content),title:`按 ${U+1} 快速选用`},[e("div",wi,[U<6?(a(),l("span",$i,v(U+1),1)):M("",!0),e("span",Ci,v(P.title),1),e("span",{class:oe(["ai-recommend-bar__confidence",i(P.confidence)])},v((P.confidence*100).toFixed(0))+"% ",3)]),e("p",xi,v(P.content),1)],8,ki))),128)),e("button",{class:"ai-recommend-bar__refresh-btn",onClick:_[1]||(_[1]=P=>h.$emit("refresh")),title:"刷新推荐列表"}," 🔄 ")]))])}}}),Ti=ke(Ii,[["__scopeId","data-v-276ff3df"]]),Si={class:"quick-reply-bar"},Mi={class:"quick-reply-bar__chips"},Ai=["onClick","onMouseenter"],Ri={key:0,class:"quick-reply-bar__kbd"},Li={key:0,class:"quick-reply-bar__empty"},Ei={class:"quick-reply-bar__l2-header"},Di={class:"quick-reply-bar__l2-title"},Pi={class:"quick-reply-bar__l2-list"},Bi=["onClick"],Vi={key:0,class:"quick-reply-bar__l2-kbd"},Oi={class:"quick-reply-bar__l2-item-title"},zi={class:"quick-reply-bar__l2-item-content"},Ui={key:0,class:"quick-reply-bar__l2-empty"},Ni=be({__name:"QuickReplyBar",props:{templates:{}},emits:["select"],setup(t,{expose:n,emit:r}){const d=r,u=Be(),c=wt(),s=b({l1Index:-1,l2Index:-1}),o=b(!1),i=b(-1);let h=null;const _=V(()=>c.categories),O=V(()=>c.templatesByCategory),P=V(()=>s.value.l1Index<0||s.value.l1Index>=_.value.length?"":_.value[s.value.l1Index]),U=V(()=>{const Y=P.value;return Y?O.value[Y]||[]:[]});function w(Y){if(s.value.l1Index===Y&&o.value){m();return}s.value.l1Index=Y,s.value.l2Index=-1,o.value=!0,y()}function W(Y){o.value&&(s.value.l1Index=Y,s.value.l2Index=-1,y())}function z(Y){const G=u.currentConversation,N={};G!=null&&G.employee_name&&(N.employee_name=G.employee_name),G!=null&&G.department&&(N.department=G.department);const g=c.replaceVariables(Y.content,N);u.pendingReplyText=g,d("select",g),i.value=s.value.l1Index,m(),ie.success(`已选用: ${Y.title}`)}function L(){y(),h=setTimeout(()=>{o.value=!1},200)}function y(){h&&(clearTimeout(h),h=null)}function m(){o.value=!1,y()}const p=b(-1);function F(Y){Y<0||Y>=_.value.length||(p.value=Y,w(Y),setTimeout(()=>{p.value=-1},3e3))}function B(Y){if(!o.value)return;const G=U.value;Y<1||Y>G.length||z(G[Y-1])}function k(){if(!o.value)return;const Y=U.value;Y.length>0&&z(Y[0])}function Z(){m()}function I(){return o.value}function K(){i.value>=0&&w(i.value)}return n({selectL1ByIndex:F,selectL2ByDigit:B,confirmL2Selection:k,closeL2Panel:Z,isL2Open:I,undoSelection:K}),Xe(()=>{y()}),(Y,G)=>(a(),l("div",Si,[e("div",Mi,[(a(!0),l(ge,null,we(_.value,(N,g)=>(a(),l("button",{key:N,class:oe(["quick-reply-bar__chip",{"is-active":s.value.l1Index===g,"is-kb-selected":p.value===g}]),onClick:Q=>w(g),onMouseenter:Q=>W(g)},[H(v(N)+" ",1),g<6?(a(),l("kbd",Ri,v(g+1),1)):M("",!0)],42,Ai))),128)),_.value.length===0?(a(),l("span",Li," 暂无快速回复模板 ")):M("",!0)]),C(Rt,{name:"quick-reply-fade"},{default:E(()=>[o.value?(a(),l("div",{key:0,class:"quick-reply-bar__l2-panel",onMouseenter:y,onMouseleave:L},[e("div",Ei,[e("span",Di,v(P.value),1),e("button",{class:"quick-reply-bar__l2-close",onClick:m,title:"关闭"},"✕")]),e("div",Pi,[(a(!0),l(ge,null,we(U.value,(N,g)=>(a(),l("div",{key:N.id,class:"quick-reply-bar__l2-item",onClick:Q=>z(N)},[g<9?(a(),l("kbd",Vi,v(g+1),1)):M("",!0),e("span",Oi,v(N.title),1),e("span",zi,v(N.content),1)],8,Bi))),128)),U.value.length===0?(a(),l("div",Ui," 该分类下暂无模板 ")):M("",!0)])],32)):M("",!0)]),_:1})]))}}),ji=ke(Ni,[["__scopeId","data-v-803f630a"]]);function Wi(){var d,u,c,s;const t=document.activeElement;if(!t)return!1;const n=(d=t.tagName)==null?void 0:d.toLowerCase();if(n==="input"||n==="textarea"||n==="select"||t.isContentEditable)return!0;const r=(u=t.getAttribute)==null?void 0:u.call(t,"role");return!!(r==="textbox"||r==="combobox"||r==="searchbox"||(c=t.closest)!=null&&c.call(t,".el-input")||(s=t.closest)!=null&&s.call(t,".el-textarea"))}function qi(t={}){const n=[];function r(){if(t.onQuickReplyDigit)for(let u=1;u<=9;u++)n.push({key:String(u),handler:()=>t.onQuickReplyDigit(u)});t.onUndo&&n.push({key:"Escape",handler:()=>t.onUndo()}),t.onQuickReplyBack&&n.push({key:"Backspace",handler:()=>t.onQuickReplyBack()},{key:"ArrowLeft",handler:()=>t.onQuickReplyBack()}),t.onQuickReplyNavigate&&n.push({key:"ArrowUp",handler:()=>t.onQuickReplyNavigate("up")},{key:"ArrowDown",handler:()=>t.onQuickReplyNavigate("down")}),t.onQuickReplyConfirm&&n.push({key:"Enter",handler:()=>t.onQuickReplyConfirm()}),t.onFocusSearch&&n.push({key:"/",handler:()=>t.onFocusSearch()}),t.onScreenshot&&n.push({ctrl:!0,shift:!0,key:"a",handler:()=>t.onScreenshot()}),t.onTabSwitch&&n.push({key:"Tab",handler:()=>t.onTabSwitch()}),t.onSend&&(n.push({shift:!0,key:" ",code:"Space",handler:()=>t.onSend()}),n.push({shift:!0,key:"Space",handler:()=>t.onSend()}),n.push({shift:!0,key:" ",handler:()=>t.onSend()}))}function d(u){if(!(u.shiftKey&&(u.code==="Space"||u.key===" "||u.key==="Space"||u.keyCode===32))&&(u.isComposing||u.keyCode===229)||document.querySelector(".wechat-capture"))return;const s=Wi();for(const o of n){if(o.code){if(o.code!==u.code)continue}else if(o.key!==u.key)continue;const i=o.ctrl?u.ctrlKey||u.metaKey:!u.ctrlKey&&!u.metaKey,h=o.alt?u.altKey:!u.altKey,_=o.shift?u.shiftKey:!u.shiftKey;if(!(!i||!h||!_)){if(s){if(o.key==="Escape"){u.preventDefault(),o.handler(u);return}if(o.key==="Tab"){u.preventDefault(),o.handler(u);return}if(o.shift&&o.code==="Space"){u.preventDefault(),o.handler(u);return}if(o.key==="Enter"||o.key==="/"||o.key==="Backspace")continue;continue}u.preventDefault(),o.handler(u);return}}}r(),Ke(()=>{document.addEventListener("keydown",d)}),Xe(()=>{document.removeEventListener("keydown",d)})}const Fi={class:"reply-suggest-area__tabs"},Hi={key:0,class:"reply-suggest-area__badge"},Ki={class:"reply-suggest-area__content"},Xi=be({__name:"ReplySuggestArea",props:{conversationId:{}},emits:["select","send","undo"],setup(t,{emit:n}){const r=t,d=n,u=Be(),c=wt(),s=b("ai"),o=b([]),i=b(!1),h=b(null),_=b(null),O=V(()=>c.templates),P=V(()=>o.value.length),U=V(()=>s.value==="ai"?"var(--suggest-ai-bg)":"var(--suggest-quick-bg)");function w(I){u.pendingReplyText=I,d("select",I)}function W(I){var K;s.value==="quick"&&I==="ai"&&((K=_.value)==null||K.closeL2Panel()),s.value=I}function z(I){var K;s.value==="quick"&&((K=_.value)==null||K.selectL1ByIndex(I))}function L(I){var K,Y;s.value==="ai"?I>=1&&I<=o.value.length&&w(o.value[I-1].content):s.value==="quick"&&((K=_.value)!=null&&K.isL2Open()?(Y=_.value)==null||Y.selectL2ByDigit(I):I<=6&&z(I-1))}function y(){var I,K;s.value==="quick"&&(I=_.value)!=null&&I.isL2Open()&&((K=_.value)==null||K.confirmL2Selection())}function m(){var I;s.value==="quick"&&((I=_.value)==null||I.closeL2Panel())}function p(){var I,K,Y;if(s.value==="quick"&&((I=_.value)!=null&&I.isL2Open())){(K=_.value)==null||K.closeL2Panel();return}d("undo"),s.value==="quick"&&((Y=_.value)==null||Y.undoSelection())}function F(){d("send")}async function B(){await k(),ie.success("AI 推荐已刷新")}async function k(){if(r.conversationId){i.value=!0;try{const I=await Qt(r.conversationId);u.aiDrafts.has(r.conversationId)||u.aiDrafts.set(r.conversationId,new Map);const K=`draft_${Date.now()}`;u.aiDrafts.get(r.conversationId).set(K,I),Z()}catch(I){console.warn("自动刷新 AI 推荐失败:",(I==null?void 0:I.message)||I)}finally{i.value=!1}}}function Z(){const I=r.conversationId;if(!I){o.value=[];return}const K=u.aiDrafts.get(I);if(K&&K.size>0){const Y=[];K.forEach(G=>{Y.push({title:"AI 回复建议",content:G.content,confidence:G.confidence})}),o.value=Y.slice(0,6);return}o.value=[{title:"重置密码流程",content:"您好,密码重置可通过企业门户自助操作:访问 portal.company.com → 忘记密码 → 按提示完成重置。如无法自助,请提供工号,我帮您后台重置。",confidence:.92},{title:"VPN 连接故障排查",content:"VPN 连接问题常见原因:1) 网络切换后未重连;2) 证书过期。请先尝试:断开 VPN → 重启客户端 → 重新连接。如仍失败,请提供错误截图。",confidence:.85}]}return qi({onQuickReplyDigit:I=>L(I),onUndo:()=>p(),onQuickReplyConfirm:()=>y(),onQuickReplyBack:()=>m(),onTabSwitch:()=>W(s.value==="ai"?"quick":"ai"),onSend:()=>F()}),Me(()=>r.conversationId,()=>{Z()},{immediate:!0}),Me(()=>u.recommendRefreshSignal,(I,K)=>{I!==0&&r.conversationId&&k()}),(I,K)=>(a(),l("div",{class:"reply-suggest-area",style:Ve({background:U.value})},[e("div",Fi,[e("button",{class:oe(["reply-suggest-area__tab",{"is-active":s.value==="ai"}]),onClick:K[0]||(K[0]=Y=>W("ai"))},[K[2]||(K[2]=H(" 🤖 AI推荐 ",-1)),P.value>0?(a(),l("span",Hi,v(P.value),1)):M("",!0),K[3]||(K[3]=e("kbd",{class:"reply-suggest-area__kbd"},"Tab",-1))],2),e("button",{class:oe(["reply-suggest-area__tab",{"is-active":s.value==="quick"}]),onClick:K[1]||(K[1]=Y=>W("quick"))},[...K[4]||(K[4]=[H(" ⚡ 快速回复 ",-1),e("kbd",{class:"reply-suggest-area__kbd"},"Tab",-1)])],2)]),e("div",Ki,[s.value==="ai"?(a(),ye(Ti,{key:0,ref_key:"aiRecommendBarRef",ref:h,recommendations:o.value,loading:i.value,onSelect:w,onRefresh:B},null,8,["recommendations","loading"])):(a(),ye(ji,{key:1,ref_key:"quickReplyBarRef",ref:_,templates:O.value,onSelect:w},null,8,["templates"]))])],4))}}),Yi=ke(Xi,[["__scopeId","data-v-ffe31bf2"]]),Qi={class:"conversation-separator__text"},Gi={key:0,class:"conversation-separator__badge"},Ji=be({__name:"ConversationSeparator",props:{summary:{},isCurrent:{type:Boolean}},setup(t){return(n,r)=>(a(),l("div",{class:oe(["conversation-separator",{"is-current":t.isCurrent}])},[r[0]||(r[0]=e("span",{class:"conversation-separator__line"},null,-1)),e("span",Qi,[H(v(t.summary)+" ",1),t.isCurrent?(a(),l("span",Gi,"当前会话")):M("",!0)]),r[1]||(r[1]=e("span",{class:"conversation-separator__line"},null,-1))],2))}}),Zi=ke(Ji,[["__scopeId","data-v-e5e2722a"]]),er={class:"agent-list"},tr={key:0,class:"empty-hint"},nr=["onClick"],ar={class:"agent-avatar"},sr={class:"agent-info"},or={class:"agent-name"},lr={key:2,class:"load-text"},ir={key:0,class:"agent-sub"},rr={class:"dialog-footer"},cr={key:0,class:"selected-hint"},ur=be({__name:"InviteDialog",props:{modelValue:{type:Boolean},excludeAgentIds:{default:()=>[]}},emits:["update:modelValue","confirm"],setup(t,{emit:n}){const r=t,d=n,u=ut(),c=b(r.modelValue),s=b(""),o=b(null),i=b(!1);Me(()=>r.modelValue,w=>{c.value=w,w&&(s.value="",o.value=null,u.loadAvailableAgents())}),Me(c,w=>{d("update:modelValue",w)});const h=V(()=>o.value&&u.availableAgents.find(w=>w.user_id===o.value)||null),_=V(()=>{const w=new Set(r.excludeAgentIds);let W=u.availableAgents.filter(L=>!w.has(L.user_id)&&L.status==="online");const z=s.value.trim().toLowerCase();return z&&(W=W.filter(L=>L.name.toLowerCase().includes(z))),W.sort((L,y)=>L.current_load===0&&y.current_load>0?-1:y.current_load===0&&L.current_load>0?1:L.current_load-y.current_load)});function O(w){return w?w.charAt(w.length-1):"?"}function P(w){o.value=w.user_id}async function U(){o.value&&(i.value=!0,d("confirm",o.value))}return(w,W)=>{const z=se("el-input"),L=se("el-tag"),y=se("Star"),m=se("el-icon"),p=se("Check"),F=se("el-button"),B=se("el-dialog");return a(),ye(B,{modelValue:c.value,"onUpdate:modelValue":W[2]||(W[2]=k=>c.value=k),title:"🤝 摇人 — 邀请坐席协作",width:"450px","close-on-click-modal":!1,"destroy-on-close":""},{footer:E(()=>[e("div",rr,[h.value?(a(),l("div",cr," 已选:"+v(h.value.name),1)):M("",!0),e("div",null,[C(F,{onClick:W[1]||(W[1]=k=>c.value=!1)},{default:E(()=>[...W[6]||(W[6]=[H("取消",-1)])]),_:1}),C(F,{type:"primary",disabled:!o.value,loading:i.value,onClick:U},{default:E(()=>[...W[7]||(W[7]=[H(" 确认邀请 ",-1)])]),_:1},8,["disabled","loading"])])])]),default:E(()=>[C(z,{modelValue:s.value,"onUpdate:modelValue":W[0]||(W[0]=k=>s.value=k),placeholder:"搜索坐席姓名...","prefix-icon":"Search",clearable:"",style:{"margin-bottom":"12px"}},null,8,["modelValue"]),e("div",er,[_.value.length===0?(a(),l("div",tr," 暂无可邀请的在线坐席 ")):M("",!0),(a(!0),l(ge,null,we(_.value,k=>(a(),l("div",{key:k.user_id,class:oe(["agent-item",{selected:o.value===k.user_id,busy:k.current_load>=k.max_load}]),onClick:Z=>P(k)},[e("div",ar,v(O(k.name)),1),e("div",sr,[e("div",or,[H(v(k.name)+" ",1),k.current_load>=k.max_load?(a(),ye(L,{key:0,type:"danger",size:"small",effect:"plain"},{default:E(()=>[...W[3]||(W[3]=[H(" 忙碌 ",-1)])]),_:1})):k.current_load===0?(a(),ye(L,{key:1,type:"success",size:"small",effect:"plain"},{default:E(()=>[...W[4]||(W[4]=[H(" 空闲 ",-1)])]),_:1})):(a(),l("span",lr," 负载 "+v(k.current_load)+"/"+v(k.max_load),1))]),k.current_load<=k.max_load*.6?(a(),l("div",ir,[C(m,null,{default:E(()=>[C(y)]),_:1}),W[5]||(W[5]=H(" 推荐 ",-1))])):M("",!0)]),o.value===k.user_id?(a(),ye(m,{key:0,class:"check-icon",color:"var(--accent)"},{default:E(()=>[C(p)]),_:1})):M("",!0)],10,nr))),128))])]),_:1},8,["modelValue"])}}}),dr=ke(ur,[["__scopeId","data-v-b7f62250"]]),zt={primary_agent:"#3b82f6",collaborator:"#07C160",owner:"#FF9800",invitee:"transparent"};function vr(t){const n=V(()=>{const u=[];t.agentName&&u.push({id:t.agentId||"agent_primary",name:t.agentName,avatar:"",department:"IT坐席",role:"primary_agent",joined:!0,isSelf:t.agentId===t.currentAgentId}),t.employeeName&&u.push({id:t.employeeId,name:t.employeeName,avatar:"",department:"",role:"owner",joined:!0,isSelf:!1});for(const s of t.collaboratingAgentIds){const o=t.collaboratingAgentNames[s]||s;u.push({id:s,name:o,avatar:"",department:"IT坐席",role:"collaborator",joined:!0,isSelf:s===t.currentAgentId})}const c=(t.participants||[]).slice().sort((s,o)=>s.joined!==o.joined?s.joined?-1:1:s.joined_at&&o.joined_at?new Date(s.joined_at).getTime()-new Date(o.joined_at).getTime():0);for(const s of c)u.push({id:s.id,name:s.name,avatar:s.avatar||"",department:s.department||"",role:"invitee",joined:s.joined??!1,isSelf:!1,joinedAt:s.joined_at});return u}),r=V(()=>n.value.length),d=V(()=>n.value.some(u=>!u.joined));return{normalizedParticipants:n,totalCount:r,hasPending:d}}const mr={class:"expanded-panel"},fr={class:"expanded-panel__header"},pr={class:"expanded-panel__list"},gr=["onMouseenter"],yr=["src","alt","onError"],_r={key:1,class:"expanded-panel__avatar-letter"},hr={class:"expanded-panel__info"},br={key:0,class:"expanded-panel__role-tag expanded-panel__role-tag--primary"},kr={key:1,class:"expanded-panel__role-tag expanded-panel__role-tag--collab"},wr={key:2,class:"expanded-panel__role-tag expanded-panel__role-tag--owner"},$r={key:0,class:"expanded-panel__dept"},Cr=be({__name:"ParticipantExpandedPanel",props:{participants:{},isPrimaryAgent:{type:Boolean}},emits:["remove","collapse"],setup(t,{emit:n}){const r=n,d=b({});function u(h){const _=h||"?";return _.charAt(_.length-1)}const c={},s=b({});function o(h,_){c[h]=_}function i(h,_){De(()=>{const O=c[h];O&&(s.value[h]=O.scrollWidth>O.clientWidth)})}return(h,_)=>{const O=se("el-button"),P=se("el-tooltip"),U=se("el-icon");return a(),l("div",mr,[e("div",fr,[_[2]||(_[2]=e("span",{class:"expanded-panel__title"},"参与者详情",-1)),C(O,{type:"primary",link:"",size:"small",onClick:_[0]||(_[0]=w=>r("collapse"))},{default:E(()=>[..._[1]||(_[1]=[H(" 收起 ",-1)])]),_:1})]),e("div",pr,[(a(!0),l(ge,null,we(t.participants,w=>(a(),l("div",{key:w.id,class:oe(["expanded-panel__item",{"expanded-panel__item--self":w.isSelf}])},[C(P,{content:`${w.name}${w.department?" · "+w.department:""}`,disabled:!s.value[w.id],placement:"top"},{default:E(()=>[e("div",{class:oe(["expanded-panel__avatar",{"expanded-panel__avatar--self":w.isSelf}]),style:Ve({borderColor:A(zt)[w.role]}),onMouseenter:W=>i(w.id,W)},[w.avatar&&!d.value[w.id]?(a(),l("img",{key:0,src:w.avatar,alt:w.name,class:"expanded-panel__avatar-img",onError:W=>d.value[w.id]=!0},null,40,yr)):(a(),l("span",_r,v(u(w.name)),1))],46,gr)]),_:2},1032,["content","disabled"]),e("div",hr,[e("span",{class:"expanded-panel__name",ref_for:!0,ref:W=>o(w.id,W)},[H(v(w.name)+" ",1),w.role==="primary_agent"?(a(),l("span",br,"主责")):w.role==="collaborator"?(a(),l("span",kr,"协作")):w.role==="owner"?(a(),l("span",wr,"发起人")):M("",!0)],512),w.department?(a(),l("span",$r,v(w.department),1)):M("",!0)]),w.role==="invitee"?(a(),l("span",{key:0,class:oe(["expanded-panel__status",w.joined?"expanded-panel__status--joined":"expanded-panel__status--pending"])},v(w.joined?"已加入":"待加入"),3)):M("",!0),t.isPrimaryAgent&&w.role==="invitee"?(a(),ye(U,{key:1,class:"expanded-panel__remove-icon",onClick:$e(W=>r("remove",w.id),["stop"])},{default:E(()=>[C(A(Gt))]),_:1},8,["onClick"])):M("",!0)],2))),128))])])}}}),xr=ke(Cr,[["__scopeId","data-v-8d14fa82"]]),Ir={key:0,class:"participant-bar"},Tr={class:"participant-bar__label"},Sr={class:"participant-bar__avatars"},Mr=["src","alt","onError"],Ar={key:1,class:"participant-bar__avatar-letter"},Rr={key:0,class:"participant-bar__overflow"},Lr={key:0,class:"participant-bar__expanded-wrapper"},It=6,Er=be({__name:"ParticipantBar",props:{participants:{},agentName:{},agentId:{default:""},employeeName:{},employeeId:{},isPrimaryAgent:{type:Boolean},collaboratingAgentIds:{default:()=>[]},collaboratingAgentNames:{default:()=>({})},currentAgentId:{default:""},conversationId:{default:""}},emits:["invite","remove"],setup(t,{emit:n}){const r=t,d=n,u=b({}),c=b(!1),s=b(new Map),{normalizedParticipants:o,totalCount:i}=vr(r),h=V(()=>r.participants.length>0||r.collaboratingAgentIds.length>0),_=V(()=>o.value.slice(0,It)),O=V(()=>Math.max(0,o.value.length-It));function P(z){const L=z||"?";return L.charAt(L.length-1)}function U(){c.value=!c.value,r.conversationId&&s.value.set(r.conversationId,c.value)}function w(){c.value=!1,r.conversationId&&s.value.set(r.conversationId,!1)}function W(z){r.isPrimaryAgent&&d("remove",z)}return Me(()=>r.conversationId,z=>{if(z){const L=s.value.get(z);c.value=L??!1}else c.value=!1},{immediate:!0}),(z,L)=>{const y=se("el-button");return h.value?(a(),l("div",Ir,[e("div",{class:"participant-bar__main",onClick:U},[e("span",Tr,v(A(i))+"人参与: ",1),e("div",Sr,[(a(!0),l(ge,null,we(_.value,m=>(a(),l("div",{key:m.id,class:oe(["participant-bar__avatar",{"participant-bar__avatar--self":m.isSelf}]),style:Ve({borderColor:A(zt)[m.role]})},[m.avatar&&!u.value[m.id]?(a(),l("img",{key:0,src:m.avatar,alt:m.name,class:"participant-bar__avatar-img",onError:p=>u.value[m.id]=!0},null,40,Mr)):(a(),l("span",Ar,v(P(m.name)),1))],6))),128)),O.value>0?(a(),l("span",Rr," +"+v(O.value),1)):M("",!0)]),e("span",{class:oe(["participant-bar__arrow",{"participant-bar__arrow--open":c.value}])},"▼",2)]),e("div",{class:"participant-bar__actions",onClick:L[1]||(L[1]=$e(()=>{},["stop"]))},[t.isPrimaryAgent?(a(),ye(y,{key:0,size:"small",type:"primary",link:"",onClick:L[0]||(L[0]=$e(m=>z.$emit("invite"),["stop"]))},{default:E(()=>[...L[2]||(L[2]=[H(" + 邀请 ",-1)])]),_:1})):M("",!0)]),C(Rt,{name:"expand"},{default:E(()=>[c.value?(a(),l("div",Lr,[C(xr,{participants:A(o),"is-primary-agent":t.isPrimaryAgent,onRemove:W,onCollapse:w},null,8,["participants","is-primary-agent"])])):M("",!0)]),_:1})])):M("",!0)}}}),Dr=ke(Er,[["__scopeId","data-v-f55e8e66"]]),Pr=["title"],Br=be({__name:"ItLevelBadge",props:{level:{},size:{default:"md"}},setup(t){const n=t,r={bronze:{icon:"🛡️",name:"青铜",lv:1,title:"青铜 Lv.1 — IT基础薄弱,需要详细指导"},silver:{icon:"🥈",name:"白银",lv:2,title:"白银 Lv.2 — 能完成基本操作,需协助复杂问题"},gold:{icon:"🥇",name:"黄金",lv:3,title:"黄金 Lv.3 — 熟悉常见操作,可独立解决一般问题"},platinum:{icon:"⭐",name:"铂金",lv:4,title:"铂金 Lv.4 — 熟练使用办公软件,能自助排查常见故障"},diamond:{icon:"💎",name:"钻石",lv:5,title:"钻石 Lv.5 — 具备一定技术能力,能理解技术解释"},star:{icon:"🌟",name:"星耀",lv:6,title:"星耀 Lv.6 — IT能力较强,可自行解决大部分问题"},king:{icon:"👑",name:"王者",lv:7,title:"王者 Lv.7 — IT达人级别,仅少数问题需协助"}},d=V(()=>r[n.level]||r.silver);return(u,c)=>(a(),l("span",{class:oe(["it-badge",[t.level,`it-badge-${t.size}`]]),title:d.value.title},v(d.value.icon),11,Pr))}}),gt=ke(Br,[["__scopeId","data-v-da7a1629"]]);async function Vr(t){return await Pe.get("/troubleshooting-templates",{params:t})}async function Or(t,n){return await Pe.put(`/employees/${t}/it-level`,{it_level:n,source:"manual"})}const zr={class:"user-info-bar"},Ur={class:"user-info-bar__left"},Nr=["src"],jr={key:1,class:"user-info-bar__avatar"},Wr={class:"user-info-bar__name-group"},qr={class:"user-info-bar__name"},Fr={key:0,class:"user-info-bar__dept"},Hr={class:"info-chip info-chip--gray"},Kr={class:"info-chip info-chip--gray"},Xr={class:"info-chip info-chip--accent"},Yr={key:0,class:"info-chip info-chip--red"},Qr={key:1,class:"info-chip info-chip--purple"},Gr={key:1},Jr={class:"user-info-bar__detail-inner"},Zr={class:"detail-card"},ec={class:"detail-card__body"},tc={class:"detail-card__emotion"},nc={class:"detail-card__emotion-emoji"},ac={class:"detail-card__emotion-text"},sc={class:"detail-card__desc"},oc={class:"detail-card"},lc={class:"detail-card__body"},ic={class:"detail-card__stat"},rc={class:"detail-card__stat"},cc={class:"detail-card"},uc={class:"detail-card__body"},dc={class:"detail-card__stat"},vc={class:"detail-card__stat"},mc={class:"detail-card"},fc={class:"detail-card__body"},pc={class:"detail-card__level-row"},gc={class:"detail-card__level-name"},yc={class:"detail-card__level-desc"},_c=["onClick"],hc={key:0,class:"it-level-selector__check"},bc={class:"detail-card"},kc={class:"detail-card__body"},wc={class:"detail-card__stat"},$c={class:"detail-card__stat"},Cc={class:"detail-card"},xc={class:"detail-card__body"},Ic={key:0,class:"detail-card__notes"},Tc={key:1,class:"detail-card__notes detail-card__notes--empty"},Sc=be({__name:"UserInfoBar",props:{conversation:{},availableAgents:{default:()=>[]},canInviteCollaborator:{type:Boolean,default:!1},historyMode:{type:Boolean,default:!1},historyLoading:{type:Boolean,default:!1}},emits:["assign","resolve","toggle-pin","toggle-todo","transfer","invite","toggle-history"],setup(t,{expose:n}){const r=t,d=b(!1),u=b(!1),c=b("silver"),s=b({}),o={bronze:{name:"青铜",lv:1,desc:"IT基础薄弱,需要详细指导"},silver:{name:"白银",lv:2,desc:"能完成基本操作,需协助复杂问题"},gold:{name:"黄金",lv:3,desc:"熟悉常见操作,可独立解决一般问题"},platinum:{name:"铂金",lv:4,desc:"熟练使用办公软件,能自助排查常见故障"},diamond:{name:"钻石",lv:5,desc:"具备一定技术能力,能理解技术解释"},star:{name:"星耀",lv:6,desc:"IT能力较强,可自行解决大部分问题"},king:{name:"王者",lv:7,desc:"IT达人级别,仅少数问题需协助"}},i=V(()=>{var N;return!!((N=r.conversation)!=null&&N.avatar)}),h=b(!1),_=V(()=>{var g;return(((g=r.conversation)==null?void 0:g.employee_name)||"?").slice(0,2)}),O=V(()=>{var Q;const N=((Q=r.conversation)==null?void 0:Q.emotion_state)||"normal";return{normal:"正常",worried:"担忧",angry:"愤怒",urgent:"紧急"}[N]||"正常"}),P=V(()=>{var Q;const N=((Q=r.conversation)==null?void 0:Q.emotion_state)||"normal";return{normal:"😊",worried:"😟",angry:"😡",urgent:"🔴"}[N]||"😊"}),U=V(()=>{var Q;const N=((Q=r.conversation)==null?void 0:Q.emotion_state)||"normal";return{normal:"情绪平稳,正常沟通",worried:"语气急促,连续追问进度",angry:"措辞激烈,多次表达不满",urgent:"问题严重影响工作,要求立即处理"}[N]||"情绪平稳"}),w=V(()=>{var g;const N=((g=r.conversation)==null?void 0:g.emotion_state)||"normal";return N==="normal"?"info-chip--gray":N==="angry"||N==="urgent"?"info-chip--red":"info-chip--yellow"}),W=V(()=>{var ee;const N=(ee=r.conversation)==null?void 0:ee.created_at;if(!N)return"0分钟";const g=Date.now()-new Date(N).getTime(),Q=Math.floor(g/6e4);if(Q<60)return`${Q}分钟`;const de=Math.floor(Q/60),he=Q%60;return`${de}小时${he}分钟`}),z=V(()=>{var g;const N=(g=r.conversation)==null?void 0:g.tags;return((N==null?void 0:N.repeat_count)||0)+1}),L=V(()=>{var N,g;return((g=(N=r.conversation)==null?void 0:N.tags)==null?void 0:g.repeat_count)||0}),y=V(()=>Object.keys(s.value).length>0),m=V(()=>{const N=s.value,g=[];return N.pregnant&&g.push("孕妇"),N.disabled&&g.push("残疾/行动不便"),N.preference&&g.push(N.preference),N.custom&&g.push(N.custom),g.join(";")||""}),p=V(()=>{var N;return((N=o[c.value])==null?void 0:N.name)||"白银"}),F=V(()=>{var N;return((N=o[c.value])==null?void 0:N.lv)||2}),B=V(()=>{var N;return((N=o[c.value])==null?void 0:N.desc)||""}),k=V(()=>{var N,g;return((g=(N=r.conversation)==null?void 0:N.tags)==null?void 0:g.repeat_count)||0}),Z=V(()=>Math.floor(Math.random()*5)+1),I=V(()=>"VPN 2次,邮箱 1次");function K(){d.value=!d.value,d.value||(u.value=!1)}async function Y(N){var Q,de;const g=(Q=r.conversation)==null?void 0:Q.employee_id;if(!g){ie.warning("无法获取员工信息");return}try{await Or(g,N),c.value=N,u.value=!1,ie.success(`IT 等级已调整为 ${((de=o[N])==null?void 0:de.name)||N}`)}catch(he){console.error("更新 IT 等级失败:",he),c.value=N,u.value=!1}}function G(){d.value=!1,u.value=!1,r.conversation&&(c.value=r.conversation.level||"silver")}return n({resetForNewConversation:G}),(N,g)=>{var ce,te,ue,D,j,le,q,X,me,_e,pe,ne;const Q=se("el-icon"),de=se("el-button"),he=se("el-dropdown-item"),ee=se("el-dropdown-menu"),J=se("el-dropdown");return a(),l("div",zr,[e("div",{class:"user-info-bar__persistent",onClick:K},[e("div",Ur,[i.value&&!h.value?(a(),l("img",{key:0,src:(ce=t.conversation)==null?void 0:ce.avatar,class:"user-info-bar__avatar-img",onError:g[0]||(g[0]=fe=>h.value=!0)},null,40,Nr)):(a(),l("div",jr,v(_.value),1)),e("div",Wr,[e("span",qr,v(((te=t.conversation)==null?void 0:te.employee_name)||((ue=t.conversation)==null?void 0:ue.employee_id)||"未知"),1),(D=t.conversation)!=null&&D.department||(j=t.conversation)!=null&&j.position?(a(),l("span",Fr," · "+v(((le=t.conversation)==null?void 0:le.department)||"")+v((q=t.conversation)!=null&&q.position?" "+t.conversation.position:""),1)):M("",!0),C(gt,{level:c.value,size:"sm"},null,8,["level"])]),e("span",{class:oe(["user-info-bar__arrow",{"is-expanded":d.value}])},"▶",2)]),e("div",{class:"user-info-bar__chips",onClick:g[2]||(g[2]=$e(()=>{},["stop"]))},[e("span",{class:oe(["info-chip",w.value])}," 😟 "+v(O.value),3),e("span",Hr," ⏱ "+v(W.value),1),e("span",Kr," 💬 "+v(z.value)+"轮 ",1),e("span",Xr," 🖥 "+v(p.value)+" Lv."+v(F.value),1),L.value>0?(a(),l("span",Yr," 🔁 重复×"+v(L.value),1)):M("",!0),y.value?(a(),l("span",Qr," 📝 备注 ")):M("",!0),e("span",{class:oe(["info-chip info-chip--toggle",{"is-active":t.historyMode,"is-loading":t.historyLoading}]),onClick:g[1]||(g[1]=$e(fe=>N.$emit("toggle-history"),["stop"]))},[t.historyLoading?(a(),ye(Q,{key:0,class:"is-loading"},{default:E(()=>[C(A(tt))]),_:1})):(a(),l("span",Gr,v(t.historyMode?"🕐 返回当前":"🕐 历史会话"),1))],2)]),e("div",{class:"user-info-bar__actions",onClick:g[9]||(g[9]=$e(()=>{},["stop"]))},[((X=t.conversation)==null?void 0:X.status)==="queued"?(a(),ye(de,{key:0,type:"success",size:"small",onClick:g[3]||(g[3]=fe=>N.$emit("assign"))},{default:E(()=>[C(Q,null,{default:E(()=>[C(A(Mt))]),_:1}),g[12]||(g[12]=H(" 接单 ",-1))]),_:1})):M("",!0),C(de,{size:"small",type:(me=t.conversation)!=null&&me.is_pinned?"warning":"default",onClick:g[4]||(g[4]=fe=>N.$emit("toggle-pin"))},{default:E(()=>{var fe;return[H(v((fe=t.conversation)!=null&&fe.is_pinned?"取消置顶":"📌 置顶"),1)]}),_:1},8,["type"]),C(de,{size:"small",type:(_e=t.conversation)!=null&&_e.is_todo?"warning":"default",onClick:g[5]||(g[5]=fe=>N.$emit("toggle-todo"))},{default:E(()=>{var fe;return[H(v((fe=t.conversation)!=null&&fe.is_todo?"取消代办":"📋 代办"),1)]}),_:1},8,["type"]),C(J,{trigger:"click",onCommand:g[6]||(g[6]=fe=>N.$emit("transfer",fe))},{dropdown:E(()=>[C(ee,null,{default:E(()=>[(a(!0),l(ge,null,we(t.availableAgents,fe=>(a(),ye(he,{key:fe.user_id,command:fe.user_id},{default:E(()=>[H(v(fe.name)+" ("+v(fe.current_load)+"/"+v(fe.max_load)+") ",1)]),_:2},1032,["command"]))),128)),t.availableAgents.length===0?(a(),ye(he,{key:0,disabled:""},{default:E(()=>[...g[14]||(g[14]=[H(" 暂无可用坐席 ",-1)])]),_:1})):M("",!0)]),_:1})]),default:E(()=>[C(de,{size:"small",type:"info"},{default:E(()=>[C(Q,null,{default:E(()=>[C(A(Jt))]),_:1}),g[13]||(g[13]=H(" 转接 ",-1))]),_:1})]),_:1}),t.canInviteCollaborator?(a(),ye(de,{key:1,size:"small",type:"primary",onClick:g[7]||(g[7]=fe=>N.$emit("invite"))},{default:E(()=>[...g[15]||(g[15]=[H(" 🤝 摇人 ",-1)])]),_:1})):M("",!0),((pe=t.conversation)==null?void 0:pe.status)==="serving"?(a(),ye(de,{key:2,type:"danger",size:"small",onClick:g[8]||(g[8]=fe=>N.$emit("resolve"))},{default:E(()=>[C(Q,null,{default:E(()=>[C(A(Zt))]),_:1}),g[16]||(g[16]=H(" 结单 ",-1))]),_:1})):((ne=t.conversation)==null?void 0:ne.status)==="pending_close"?(a(),ye(de,{key:3,type:"warning",size:"small",disabled:""},{default:E(()=>[...g[17]||(g[17]=[H(" ⏳ 等待员工确认 ",-1)])]),_:1})):M("",!0)])]),e("div",{class:oe(["user-info-bar__detail",{"is-expanded":d.value}])},[e("div",Jr,[e("div",Zr,[g[18]||(g[18]=e("div",{class:"detail-card__header"},"情绪状态",-1)),e("div",ec,[e("div",tc,[e("span",nc,v(P.value),1),e("span",ac,v(O.value),1)]),e("div",sc,v(U.value),1)])]),e("div",oc,[g[23]||(g[23]=e("div",{class:"detail-card__header"},"会话详情",-1)),e("div",lc,[e("div",ic,[g[20]||(g[20]=e("span",{class:"detail-card__stat-icon"},"⏱",-1)),e("span",null,[g[19]||(g[19]=H("等待时长:",-1)),e("strong",null,v(W.value),1)])]),e("div",rc,[g[22]||(g[22]=e("span",{class:"detail-card__stat-icon"},"💬",-1)),e("span",null,[g[21]||(g[21]=H("对话轮次:",-1)),e("strong",null,v(z.value)+" 轮",1)])])])]),e("div",cc,[g[26]||(g[26]=e("div",{class:"detail-card__header"},"问题分析",-1)),e("div",uc,[e("div",dc,[g[24]||(g[24]=e("span",{class:"detail-card__stat-icon"},"🔁",-1)),e("span",null,v(L.value>0?"重复问题":"非重复问题"),1)]),e("div",vc,[e("span",null,[g[25]||(g[25]=H("7天内反馈:",-1)),e("strong",null,v(k.value)+" 次",1)])])])]),e("div",mc,[g[28]||(g[28]=e("div",{class:"detail-card__header"},"IT技能等级",-1)),e("div",fc,[e("div",pc,[C(gt,{level:c.value,size:"md"},null,8,["level"]),e("span",gc,v(p.value)+" Lv."+v(F.value),1),C(de,{size:"small",type:"primary",link:"",onClick:g[10]||(g[10]=$e(fe=>u.value=!u.value,["stop"]))},{default:E(()=>[...g[27]||(g[27]=[H(" 调整 ",-1)])]),_:1})]),e("div",yc,v(B.value),1),u.value?(a(),l("div",{key:0,class:"it-level-selector",onClick:g[11]||(g[11]=$e(()=>{},["stop"]))},[(a(),l(ge,null,we(o,(fe,Re)=>e("div",{key:Re,class:oe(["it-level-selector__item",{"is-active":c.value===Re}]),onClick:Ne=>Y(Re)},[C(gt,{level:Re,size:"sm"},null,8,["level"]),e("span",null,v(fe.name)+" Lv."+v(fe.lv),1),c.value===Re?(a(),l("span",hc,"✓")):M("",!0)],10,_c)),64))])):M("",!0)])]),e("div",bc,[g[30]||(g[30]=e("div",{class:"detail-card__header"},"历史工单",-1)),e("div",kc,[e("div",wc,[e("span",null,[g[29]||(g[29]=H("30天内工单:",-1)),e("strong",null,v(Z.value),1)])]),e("div",$c,[e("span",null,"类型分布:"+v(I.value),1)])])]),e("div",Cc,[g[31]||(g[31]=e("div",{class:"detail-card__header"},"其他备注",-1)),e("div",xc,[m.value?(a(),l("div",Ic,v(m.value),1)):(a(),l("div",Tc," 暂无备注 "))])])])],2)])}}}),Mc=ke(Sc,[["__scopeId","data-v-b675a057"]]),Ac={key:0,class:"flowchart-step"},Rc={class:"flowchart-step__number"},Lc={key:1,class:"flowchart-decision"},Ec={class:"flowchart-decision__box"},Dc={class:"flowchart-decision__text"},Pc={class:"flowchart-decision__branches"},Bc={key:0,class:"flowchart-branch flowchart-branch--yes"},Vc={class:"flowchart-branch__content"},Oc={key:1,class:"flowchart-branch flowchart-branch--no"},zc={class:"flowchart-branch__content"},Uc={key:2,class:"flowchart-node__children"},Nc=be({__name:"FlowchartNode",props:{node:{},baseIndex:{default:1}},setup(t){const n=t,r=V(()=>n.baseIndex),d=V(()=>`flowchart-status--${n.node.status||"pending"}`);return(u,c)=>{const s=se("FlowchartNode",!0);return a(),l("div",{class:oe(["flowchart-node",[`flowchart-node--${t.node.type}`,`flowchart-node--${t.node.status||"pending"}`]])},[t.node.type==="step"?(a(),l("div",Ac,[e("div",{class:oe(["flowchart-step__indicator",d.value])},[e("span",Rc,v(r.value),1)],2),e("div",{class:oe(["flowchart-step__connector",d.value])},null,2),e("div",{class:oe(["flowchart-step__label",d.value])},v(t.node.label),3)])):M("",!0),t.node.type==="decision"?(a(),l("div",Lc,[e("div",Ec,[c[0]||(c[0]=e("span",{class:"flowchart-decision__icon"},"❓",-1)),e("span",Dc,v(t.node.label),1)]),e("div",Pc,[t.node.yes_branch?(a(),l("div",Bc,[c[1]||(c[1]=e("div",{class:"flowchart-branch__label"},"是",-1)),c[2]||(c[2]=e("div",{class:"flowchart-branch__connector"},null,-1)),e("div",Vc,[C(s,{node:t.node.yes_branch,"base-index":r.value},null,8,["node","base-index"])])])):M("",!0),t.node.no_branch?(a(),l("div",Oc,[c[3]||(c[3]=e("div",{class:"flowchart-branch__label"},"否",-1)),c[4]||(c[4]=e("div",{class:"flowchart-branch__connector"},null,-1)),e("div",zc,[C(s,{node:t.node.no_branch,"base-index":r.value},null,8,["node","base-index"])])])):M("",!0)])])):M("",!0),t.node.type==="step"&&t.node.children&&t.node.children.length>0?(a(),l("div",Uc,[(a(!0),l(ge,null,we(t.node.children,(o,i)=>(a(),ye(s,{key:o.id,node:o,"base-index":r.value+i+1},null,8,["node","base-index"]))),128))])):M("",!0)],2)}}}),jc=ke(Nc,[["__scopeId","data-v-c80637ec"]]),Wc={class:"troubleshoot-bar"},qc={class:"troubleshoot-bar__icon-bar-label"},Fc=["onClick"],Hc={key:0,class:"path-arrow-inline"},Kc=["title"],Xc={class:"troubleshoot-bar__flowchart-inner"},Yc={key:1,class:"troubleshoot-bar__flowchart-empty"},Qc=be({__name:"TroubleshootBar",setup(t){const n=Be(),r=b(!1),d=b(!0),u=b([]),c=b(""),s=b([]),o=b(null),i=V(()=>s.value),h=V(()=>o.value),_=V(()=>{const m=s.value.findIndex(p=>p.status==="current");return m>=0?m+1:1});function O(){d.value=!d.value,d.value&&(r.value=!1)}function P(){d.value=!0,r.value=!1}function U(){r.value=!r.value}function w(m){const p=u.value.find(F=>F.id===m);p&&(s.value=[...p.path_steps],o.value=p.flowchart||null)}function W(m){const p=s.value;if(!p||m<0||m>=p.length)return;const F=p.map((B,k)=>({...B,status:k0&&(c.value=m.items[0].id,s.value=[...m.items[0].path_steps],o.value=m.items[0].flowchart||null)}catch(m){console.error("获取排查模板失败:",m),y()}}function y(){const m=[{id:"tpl-vpn",name:"VPN连接故障",category:"vpn",is_active:!0,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),path_steps:[{label:"确认VPN版本",status:"done"},{label:"清除缓存重连",status:"current"},{label:"远程排查",status:"pending"},{label:"升级客户端",status:"pending"},{label:"回访确认",status:"pending"}],flowchart:{id:"fc-vpn-1",type:"step",label:"确认VPN客户端版本",status:"done",children:[{id:"fc-vpn-2",type:"decision",label:"版本是否为最新?",status:"pending",yes_branch:{id:"fc-vpn-3",type:"step",label:"清除DNS缓存并重连",status:"current",children:[{id:"fc-vpn-4",type:"decision",label:"重连是否成功?",status:"pending",yes_branch:{id:"fc-vpn-5",type:"step",label:"回访确认",status:"pending"},no_branch:{id:"fc-vpn-6",type:"step",label:"发起远程协助",status:"pending",children:[{id:"fc-vpn-7",type:"decision",label:"远程能否解决?",status:"pending",yes_branch:{id:"fc-vpn-8",type:"step",label:"回访确认并结单",status:"pending"},no_branch:{id:"fc-vpn-9",type:"step",label:"升级至二线团队",status:"pending"}}]}}]},no_branch:{id:"fc-vpn-10",type:"step",label:"升级VPN客户端到最新版",status:"pending",children:[{id:"fc-vpn-11",type:"step",label:"重试连接",status:"pending"}]}}]}},{id:"tpl-email",name:"邮箱登录故障",category:"email",is_active:!0,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),path_steps:[{label:"确认邮箱状态",status:"done"},{label:"重置密码",status:"current"},{label:"检查配置",status:"pending"},{label:"清理缓存",status:"pending"},{label:"回访确认",status:"pending"}],flowchart:{id:"fc-email-1",type:"step",label:"确认邮箱账号状态",status:"done",children:[{id:"fc-email-2",type:"decision",label:"账号是否被锁定?",status:"pending",yes_branch:{id:"fc-email-3",type:"step",label:"解锁账号并重置密码",status:"current"},no_branch:{id:"fc-email-4",type:"step",label:"检查Outlook配置",status:"pending",children:[{id:"fc-email-5",type:"decision",label:"配置是否正确?",status:"pending",yes_branch:{id:"fc-email-6",type:"step",label:"清理Outlook缓存",status:"pending"},no_branch:{id:"fc-email-7",type:"step",label:"重新配置Outlook",status:"pending"}}]}}]}},{id:"tpl-system",name:"系统登录异常",category:"system",is_active:!0,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),path_steps:[{label:"确认系统状态",status:"current"},{label:"清除浏览器缓存",status:"pending"},{label:"更换浏览器",status:"pending"},{label:"检查网络权限",status:"pending"},{label:"回访确认",status:"pending"}],flowchart:{id:"fc-sys-1",type:"step",label:"确认系统服务是否正常",status:"current",children:[{id:"fc-sys-2",type:"decision",label:"系统服务是否正常?",status:"pending",yes_branch:{id:"fc-sys-3",type:"step",label:"清除浏览器缓存",status:"pending",children:[{id:"fc-sys-4",type:"decision",label:"清除后是否恢复?",status:"pending",yes_branch:{id:"fc-sys-5",type:"step",label:"回访确认并结单",status:"pending"},no_branch:{id:"fc-sys-6",type:"step",label:"更换浏览器重试",status:"pending"}}]},no_branch:{id:"fc-sys-7",type:"step",label:"联系运维检查服务端",status:"pending"}}]}},{id:"tpl-account",name:"账号权限问题",category:"account",is_active:!0,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),path_steps:[{label:"确认权限需求",status:"current"},{label:"提交审批",status:"pending"},{label:"配置权限",status:"pending"},{label:"验证权限",status:"pending"},{label:"回访确认",status:"pending"}],flowchart:{id:"fc-acc-1",type:"step",label:"确认权限需求与合规性",status:"current",children:[{id:"fc-acc-2",type:"decision",label:"权限是否符合策略?",status:"pending",yes_branch:{id:"fc-acc-3",type:"step",label:"提交权限审批流程",status:"pending",children:[{id:"fc-acc-4",type:"step",label:"审批通过后配置权限",status:"pending"}]},no_branch:{id:"fc-acc-5",type:"step",label:"建议替代方案或申请特批",status:"pending"}}]}}];u.value=m,m.length>0&&(c.value=m[0].id,s.value=[...m[0].path_steps],o.value=m[0].flowchart)}return Ke(()=>{L()}),Me(()=>n.currentConversationId,()=>{w(c.value),r.value=!1,d.value=!0}),(m,p)=>{const F=se("el-option"),B=se("el-select");return a(),l("div",Wc,[d.value?(a(),l("div",{key:0,class:"troubleshoot-bar__icon-bar",onClick:O,title:"点击展开排查步骤"},[p[3]||(p[3]=e("span",{class:"troubleshoot-bar__icon-bar-symbol"},"🔧",-1)),e("span",qc," 排查 · 第"+v(_.value)+"步 / "+v(i.value.length),1),p[4]||(p[4]=e("span",{class:"troubleshoot-bar__icon-bar-arrow"},"▶",-1))])):(a(),l(ge,{key:1},[e("div",{class:"troubleshoot-bar__header",onClick:O},[p[5]||(p[5]=e("span",{class:"troubleshoot-bar__title"},"🔧 排查步骤",-1)),C(B,{modelValue:c.value,"onUpdate:modelValue":p[0]||(p[0]=k=>c.value=k),size:"small",style:{width:"140px"},onClick:p[1]||(p[1]=$e(()=>{},["stop"])),onChange:w},{default:E(()=>[(a(!0),l(ge,null,we(u.value,k=>(a(),ye(F,{key:k.id,label:k.name,value:k.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e("div",{class:"troubleshoot-bar__path-inline",onClick:p[2]||(p[2]=$e(()=>{},["stop"]))},[(a(!0),l(ge,null,we(i.value,(k,Z)=>(a(),l(ge,{key:Z},[e("span",{class:oe(["path-step-inline",`path-step-inline--${k.status}`]),onClick:I=>W(Z)},v(Z+1)+" "+v(k.label),11,Fc),Zn.currentConversation),u=b(null),c=b(null),s=b(null),o=b(!1),i=b(!1),h=b(null),_=b(!1),O=b({problem:"",cause:"",solution:""}),P=V(()=>{const D=n.currentConversation;return!D||D.status!=="serving"?!1:D.is_mine||D.is_collaborator}),U=V(()=>{const D=n.currentConversation;return D?D.assigned_agent_id===r.userId:!1}),w=V(()=>{var j,le;const D=n.currentConversation;return D?(((j=D.participants)==null?void 0:j.length)||0)>0||(((le=D.collaborating_agent_ids)==null?void 0:le.length)||0)>0:!1}),W=V(()=>{const D=n.currentConversation;if(!D)return[];const j=new Set;D.assigned_agent_id&&j.add(D.assigned_agent_id);for(const le of D.collaborating_agent_ids||[])j.add(le);return j.add(r.userId),Array.from(j)}),z=V(()=>{const D=n.currentConversation;if(!D||D.status!=="serving")return"";const j=[];D.assigned_agent_name&&j.push(`主责:${D.assigned_agent_name}`);const le=D.collaborating_agent_ids||[];if(le.length>0){const q=le.map(X=>{var me;return((me=D.collaborating_agent_names)==null?void 0:me[X])||"未知"});j.push(`协作:${q.join("、")}`)}return j.join(" | ")}),L=V(()=>{const D=n.currentConversationId;return D?n.getTypingText(D):""}),y=V(()=>{const D=n.currentConversationId;return D?n.getAiThinkingText(D):""}),m=V(()=>{const D=n.displayMessages,j=[];let le="";for(const q of D)q.conversation_id!==le&&(j.push({type:"separator",key:`sep-${q.conversation_id}`,summary:n.historyConversationSummaries[q.conversation_id]||"未知会话",isCurrent:q.conversation_id===n.currentConversationId}),le=q.conversation_id),j.push({type:"message",key:q.id,data:q});return j});async function p(){if(n.currentConversation)try{await n.assignConv(n.currentConversation.id,r.userId),ie.success("接单成功")}catch(D){console.error("接单失败:",D)}}async function F(){if(n.currentConversation)try{await qe.confirm("确定要结单吗?结单后无法继续回复。","确认结单",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});const D=n.currentConversation.id;_.value=!0,await n.fetchSummary(D),n.currentSummary?(O.value.problem=n.currentSummary.problem,O.value.cause=n.currentSummary.cause,O.value.solution=n.currentSummary.solution):O.value={problem:"",cause:"",solution:""}}catch{}}async function B(){if(!n.currentConversation)return;const D=n.currentConversation.id,j=[];O.value.problem&&j.push(`【问题】${O.value.problem}`),O.value.cause&&j.push(`【根因】${O.value.cause}`),O.value.solution&&j.push(`【解决】${O.value.solution}`);const le=j.join(";")||"已处理完成";try{await n.resolveConv(D,le),_.value=!1,ie.success("结单请求已发送,等待员工确认(5分钟内未响应将自动关闭)")}catch(q){console.error("结单失败:",q),ie.error("结单失败,请重试")}}async function k(){if(n.currentConversation)try{await n.togglePinConv(n.currentConversation.id)}catch(D){console.error("切换置顶失败:",D)}}async function Z(){if(n.currentConversation)try{await n.toggleTodoConv(n.currentConversation.id)}catch(D){console.error("切换代办失败:",D)}}async function I(D){if(n.currentConversation)try{await qe.confirm("确定要转接给其他坐席吗?","确认转接",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),await n.transferConv(n.currentConversation.id,D),ie.success("转接成功")}catch{}}async function K(D){if(n.currentConversation)try{await n.inviteToConversation(n.currentConversation.id,D),o.value=!1,ie.success("已发送摇人邀请")}catch(j){ie.error((j==null?void 0:j.message)||"摇人失败")}}const Y=V(()=>{var le;const D=n.currentConversation;if(!D)return[];const j=[D.employee_id];return(le=D.participants)==null||le.forEach(q=>j.push(q.id)),j});function G(){n.fetchConversations()}async function N(D){if(n.currentConversation)try{await qe.confirm("确定移除该参与者?","移除确认",{type:"warning"}),await n.removeParticipantFromConv(n.currentConversation.id,D),ie.success("已移除参与者")}catch{}}function g(D){h.value=D}function Q(D){}function de(){var D;(D=s.value)==null||D.handleSend()}function he(){var D;(D=s.value)==null||D.handleUndo()}async function ee(D){var le;const j=((le=h.value)==null?void 0:le.id)||void 0;await n.sendReply(D,j),h.value=null}function J(D){const le=n.displayMessages.findIndex(q=>q.id===D);if(le>=0&&u.value){const X=u.value.querySelectorAll(".message-row")[le];X&&(X.scrollIntoView({behavior:"smooth",block:"center"}),X.style.transition="background 0.3s",X.style.background="var(--accent-soft)",setTimeout(()=>{X.style.background=""},1500))}}function ce(){De(()=>{u.value&&(u.value.scrollTop=u.value.scrollHeight)})}async function te(){n.historyMode?n.disableHistoryMode():(await n.enableHistoryMode(),ce())}function ue(D){if(!n.historyMode||!n.historyHasMore||n.historyLoading)return;D.target.scrollTop<50&&n.loadMoreHistory()}return Me(()=>n.messages.length,()=>{ce()}),Me(()=>n.currentConversationId,()=>{var D;ce(),r.loadAvailableAgents(),(D=c.value)==null||D.resetForNewConversation()}),(D,j)=>{var ne,fe,Re,Ne,Ye,Qe,Ge,Je,Oe,Ze,et,je,Le;const le=se("el-icon"),q=se("el-input"),X=se("el-form-item"),me=se("el-form"),_e=se("el-button"),pe=se("el-dialog");return a(),l("div",Jc,[C(Mc,{ref_key:"userInfoBarRef",ref:c,conversation:A(n).currentConversation,"available-agents":A(r).availableAgents,"can-invite-collaborator":P.value,"history-mode":A(n).historyMode,"history-loading":A(n).historyLoading,onAssign:p,onResolve:F,onTogglePin:k,onToggleTodo:Z,onTransfer:I,onInvite:j[0]||(j[0]=xe=>o.value=!0),onToggleHistory:te},null,8,["conversation","available-agents","can-invite-collaborator","history-mode","history-loading"]),C(Gc),w.value?(a(),ye(Dr,{key:0,participants:((ne=d.value)==null?void 0:ne.participants)||[],"agent-name":((fe=d.value)==null?void 0:fe.assigned_agent_name)||"坐席","agent-id":((Re=d.value)==null?void 0:Re.assigned_agent_id)||"","employee-name":((Ne=d.value)==null?void 0:Ne.employee_name)||"","employee-id":((Ye=d.value)==null?void 0:Ye.employee_id)||"","is-primary-agent":U.value,"collaborating-agent-ids":((Qe=d.value)==null?void 0:Qe.collaborating_agent_ids)||[],"collaborating-agent-names":((Ge=d.value)==null?void 0:Ge.collaborating_agent_names)||{},"current-agent-id":A(r).userId,"conversation-id":((Je=d.value)==null?void 0:Je.id)||"",onInvite:j[1]||(j[1]=xe=>i.value=!0),onRemove:N},null,8,["participants","agent-name","agent-id","employee-name","employee-id","is-primary-agent","collaborating-agent-ids","collaborating-agent-names","current-agent-id","conversation-id"])):M("",!0),z.value?(a(),l("div",Zc,v(z.value),1)):M("",!0),e("div",{ref_key:"messageListRef",ref:u,class:"message-list-scroll",onScroll:ue},[!A(n).historyMode&&A(n).loadingMessages?(a(),l("div",eu,[C(le,{class:"is-loading",size:20},{default:E(()=>[C(A(tt))]),_:1}),j[10]||(j[10]=e("div",{style:{"margin-top":"8px",color:"var(--text-tertiary)","font-size":"12px"}},"加载消息中...",-1))])):A(n).historyMode&&A(n).historyLoading&&A(n).historyMessages.length===0?(a(),l("div",tu,[C(le,{class:"is-loading",size:20},{default:E(()=>[C(A(tt))]),_:1}),j[11]||(j[11]=e("div",{style:{"margin-top":"8px",color:"var(--text-tertiary)","font-size":"12px"}},"加载历史消息中...",-1))])):A(n).historyMode&&A(n).historyMessages.length===0?(a(),l("div",nu," 暂无历史会话 ")):(a(),l(ge,{key:3},[A(n).historyMode&&A(n).historyLoading?(a(),l("div",au,[C(le,{class:"is-loading",size:16},{default:E(()=>[C(A(tt))]),_:1}),j[12]||(j[12]=e("span",{style:{"margin-left":"4px",color:"var(--text-tertiary)","font-size":"12px"}},"加载更多...",-1))])):M("",!0),(a(!0),l(ge,null,we(m.value,xe=>(a(),l(ge,{key:xe.key},[xe.type==="separator"?(a(),ye(Zi,{key:0,summary:xe.summary,"is-current":xe.isCurrent},null,8,["summary","is-current"])):(a(),ye(ds,{key:1,message:xe.data,onReply:g,onScrollToMessage:J},null,8,["message"]))],64))),128)),!A(n).historyMode&&A(n).displayMessages.length===0?(a(),l("div",su," 暂无消息 ")):M("",!0)],64))],544),L.value?(a(),l("div",ou,[j[13]||(j[13]=e("span",{class:"typing-dots"},[e("span",{class:"dot"}),e("span",{class:"dot"}),e("span",{class:"dot"})],-1)),e("span",lu,v(L.value),1)])):M("",!0),y.value?(a(),l("div",iu,[j[14]||(j[14]=e("span",{class:"ai-thinking-dots"},[e("span",{class:"dot"}),e("span",{class:"dot"}),e("span",{class:"dot"})],-1)),e("span",ru,v(y.value),1)])):M("",!0),!A(n).historyMode&&((Oe=A(n).currentConversation)==null?void 0:Oe.status)!=="resolved"&&((Ze=A(n).currentConversation)==null?void 0:Ze.status)!=="pending_close"&&A(n).currentConversationId?(a(),ye(Yi,{key:4,"conversation-id":A(n).currentConversationId,onSelect:Q,onSend:de,onUndo:he},null,8,["conversation-id"])):M("",!0),((et=A(n).currentConversation)==null?void 0:et.status)==="pending_close"?(a(),l("div",cu,[C(le,null,{default:E(()=>[C(A(en))]),_:1}),j[15]||(j[15]=e("span",null,"结单请求已发送,等待员工确认中(5分钟内未响应将自动关闭)",-1))])):M("",!0),!A(n).historyMode&&((je=A(n).currentConversation)==null?void 0:je.status)!=="resolved"?(a(),ye(gi,{key:6,ref_key:"replyBoxRef",ref:s,"reply-to-message":h.value,onSend:ee,onCancelReply:j[2]||(j[2]=xe=>h.value=null)},null,8,["reply-to-message"])):A(n).historyMode?(a(),l("div",uu," 🕐 查看历史会话中 · 消息只读 ")):(a(),l("div",du," 该会话已结单,无法发送消息 ")),C(dr,{modelValue:o.value,"onUpdate:modelValue":j[3]||(j[3]=xe=>o.value=xe),"exclude-agent-ids":W.value,onConfirm:K},null,8,["modelValue","exclude-agent-ids"]),C(Dt,{modelValue:i.value,"onUpdate:modelValue":j[4]||(j[4]=xe=>i.value=xe),"conversation-id":((Le=A(n).currentConversation)==null?void 0:Le.id)||"","existing-participant-ids":Y.value,onSuccess:G},null,8,["modelValue","conversation-id","existing-participant-ids"]),C(pe,{modelValue:_.value,"onUpdate:modelValue":j[9]||(j[9]=xe=>_.value=xe),title:"会话摘要确认",width:"480px","close-on-click-modal":!1},{footer:E(()=>[C(_e,{onClick:j[8]||(j[8]=xe=>_.value=!1)},{default:E(()=>[...j[18]||(j[18]=[H("取消结单",-1)])]),_:1}),C(_e,{type:"primary",onClick:B},{default:E(()=>[...j[19]||(j[19]=[H("确认结单",-1)])]),_:1})]),default:E(()=>[A(n).loadingSummary?(a(),l("div",vu,[C(le,{class:"is-loading",size:20},{default:E(()=>[C(A(tt))]),_:1}),j[16]||(j[16]=e("div",{style:{"margin-top":"8px",color:"var(--text-tertiary)"}},"正在生成 AI 摘要...",-1))])):(a(),l("div",mu,[j[17]||(j[17]=e("p",{style:{"font-size":"13px",color:"var(--text-secondary)","margin-bottom":"12px"}}," 以下为 AI 自动生成的会话摘要,请确认或修改后提交: ",-1)),C(me,{"label-position":"top",size:"small"},{default:E(()=>[C(X,{label:"问题"},{default:E(()=>[C(q,{modelValue:O.value.problem,"onUpdate:modelValue":j[5]||(j[5]=xe=>O.value.problem=xe),type:"textarea",rows:2},null,8,["modelValue"])]),_:1}),C(X,{label:"原因"},{default:E(()=>[C(q,{modelValue:O.value.cause,"onUpdate:modelValue":j[6]||(j[6]=xe=>O.value.cause=xe),type:"textarea",rows:2},null,8,["modelValue"])]),_:1}),C(X,{label:"解决方案"},{default:E(()=>[C(q,{modelValue:O.value.solution,"onUpdate:modelValue":j[7]||(j[7]=xe=>O.value.solution=xe),type:"textarea",rows:2},null,8,["modelValue"])]),_:1})]),_:1})]))]),_:1},8,["modelValue"])])}}}),pu=ke(fu,[["__scopeId","data-v-436fcc42"]]),gu={class:"ticket-detail"},yu={class:"tic-card"},_u={class:"tic-row"},hu={class:"tic-value"},bu={class:"tic-row"},ku={class:"tic-value"},wu={class:"tic-row"},$u={class:"tic-value"},Cu={key:0,class:"tic-priority urgent"},xu={key:1,class:"tic-priority high"},Iu={key:2,class:"tic-priority normal"},Tu={class:"tic-row"},Su={class:"tic-value"},Mu={class:"tic-row"},Au={class:"tic-value"},Ru={class:"tic-row"},Lu={class:"tic-value tic-desc"},Eu={class:"tic-card"},Du={class:"tic-row"},Pu={class:"tic-value"},Bu={class:"tic-row"},Vu={class:"tic-value"},Ou={class:"tic-actions"},zu=["href"],Tt="https://devops.dc.servyou-it.com/ITSM",Uu=be({__name:"TicketDetail",props:{todoItem:{}},emits:["action"],setup(t){const n=t,r={pending:"待处理",processing:"处理中",resolved:"已解决"},d=V(()=>{var s;const c=(s=n.todoItem.description)==null?void 0:s.process_instance_id;return c?`${Tt}/workflow/allTickets/detail?process_instance_id=${c}`:Tt});function u(c){if(!c)return"—";try{return new Date(c).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return c}}return(c,s)=>{var o,i,h,_;return a(),l("div",gu,[e("div",yu,[s[6]||(s[6]=e("div",{class:"tic-card-title"},"📋 工单描述",-1)),e("div",_u,[s[0]||(s[0]=e("span",{class:"tic-label"},"标题",-1)),e("span",hu,v(t.todoItem.title),1)]),e("div",bu,[s[1]||(s[1]=e("span",{class:"tic-label"},"工单号",-1)),e("span",ku,v(((o=t.todoItem.description)==null?void 0:o.process_instance_id)||"—"),1)]),e("div",wu,[s[2]||(s[2]=e("span",{class:"tic-label"},"优先级",-1)),e("span",$u,[t.todoItem.priority==="urgent"?(a(),l("span",Cu,"🔴 紧急")):t.todoItem.priority==="high"?(a(),l("span",xu,"🟡 高")):(a(),l("span",Iu,"🟢 普通"))])]),e("div",Tu,[s[3]||(s[3]=e("span",{class:"tic-label"},"创建人",-1)),e("span",Su,v(((i=t.todoItem.description)==null?void 0:i.creator)||"—"),1)]),e("div",Mu,[s[4]||(s[4]=e("span",{class:"tic-label"},"创建时间",-1)),e("span",Au,v(u(t.todoItem.created_at)),1)]),e("div",Ru,[s[5]||(s[5]=e("span",{class:"tic-label"},"描述",-1)),e("span",Lu,v(((h=t.todoItem.description)==null?void 0:h.title)||t.todoItem.title||"—"),1)])]),e("div",Eu,[s[9]||(s[9]=e("div",{class:"tic-card-title"},"📊 处理进度",-1)),e("div",Du,[s[7]||(s[7]=e("span",{class:"tic-label"},"状态",-1)),e("span",Pu,[e("span",{class:oe(["tic-status-badge",`tic-status-${t.todoItem.status}`])},v(r[t.todoItem.status]||t.todoItem.status),3)])]),e("div",Bu,[s[8]||(s[8]=e("span",{class:"tic-label"},"执行人",-1)),e("span",Vu,v(((_=t.todoItem.description)==null?void 0:_.executor)||t.todoItem.assigned_agent_id||"未分配"),1)])]),e("div",Ou,[e("a",{class:"tic-action-btn tic-action-primary",href:d.value,target:"_blank",rel:"noopener noreferrer"}," 🔗 在 ITSM 中打开 ",8,zu)])])}}}),Nu=ke(Uu,[["__scopeId","data-v-dda29e70"]]),ju={class:"approval-detail"},Wu={class:"tic-card"},qu={class:"tic-row"},Fu={class:"tic-value"},Hu={class:"tic-row"},Ku={class:"tic-value"},Xu={class:"tic-row"},Yu={class:"tic-value"},Qu={class:"tic-row"},Gu={class:"tic-value"},Ju={class:"tic-row"},Zu={class:"tic-value"},ed={class:"tic-row"},td={class:"tic-value"},nd={class:"tic-card"},ad={class:"tic-actions"},sd=["href"],od=be({__name:"ApprovalDetail",props:{todoItem:{}},emits:["action"],setup(t){const n=t,r=b(""),d=V(()=>{var _,O;const o=(_=n.todoItem.description)==null?void 0:_.sp_no,i=(O=n.todoItem.description)==null?void 0:O.template_id,h=new URLSearchParams;return i&&h.set("template_id",i),o&&h.set("sp_id",o),h.set("from","template_list"),`https://app.work.weixin.qq.com/wework_admin/approval_v3#/?${h.toString()}`}),u=V(()=>{var i;const o=(i=n.todoItem.description)==null?void 0:i.sp_status;return o===1?"apv-status-pending":o===2?"apv-status-approved":o===3?"apv-status-rejected":o===4||o===6?"apv-status-revoked":"apv-status-pending"}),c=V(()=>{var h;const o=(h=n.todoItem.description)==null?void 0:h.sp_status;return{1:"审批中",2:"已通过",3:"已驳回",4:"已撤销",6:"通过后撤销",7:"已删除",10:"已支付"}[o]||"审批中"});function s(o){if(!o)return"—";try{return typeof o=="number"?new Date(o*1e3).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):new Date(o).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return String(o)}}return(o,i)=>{var _,O,P,U,w;const h=se("el-input");return a(),l("div",ju,[e("div",Wu,[i[7]||(i[7]=e("div",{class:"tic-card-title"},"📝 审批内容",-1)),e("div",qu,[i[1]||(i[1]=e("span",{class:"tic-label"},"审批单号",-1)),e("span",Fu,v(((_=t.todoItem.description)==null?void 0:_.sp_no)||"—"),1)]),e("div",Hu,[i[2]||(i[2]=e("span",{class:"tic-label"},"审批类型",-1)),e("span",Ku,v(((O=t.todoItem.description)==null?void 0:O.template_name)||t.todoItem.title||"—"),1)]),e("div",Xu,[i[3]||(i[3]=e("span",{class:"tic-label"},"申请人",-1)),e("span",Yu,v(((P=t.todoItem.description)==null?void 0:P.applicant)||"—"),1)]),e("div",Qu,[i[4]||(i[4]=e("span",{class:"tic-label"},"申请时间",-1)),e("span",Gu,v(s((U=t.todoItem.description)==null?void 0:U.apply_time)),1)]),e("div",Ju,[i[5]||(i[5]=e("span",{class:"tic-label"},"当前审批人",-1)),e("span",Zu,v(((w=t.todoItem.description)==null?void 0:w.current_approver)||"—"),1)]),e("div",ed,[i[6]||(i[6]=e("span",{class:"tic-label"},"审批状态",-1)),e("span",td,[e("span",{class:oe(["apv-status-badge",u.value])},v(c.value),3)])])]),e("div",nd,[i[8]||(i[8]=e("div",{class:"tic-card-title"},"✏️ 审批意见",-1)),C(h,{modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=W=>r.value=W),type:"textarea",rows:4,placeholder:"请输入审批意见(实际审批需在企微审批中操作)...",resize:"none",class:"apv-textarea"},null,8,["modelValue"])]),e("div",ad,[e("a",{class:"tic-action-btn tic-action-primary",href:d.value,target:"_blank",rel:"noopener noreferrer"}," 🔗 在企微审批中打开 ",8,sd)])])}}}),ld=ke(od,[["__scopeId","data-v-21f6e7c0"]]),id={class:"task-detail-view"},rd={class:"tdv-header"},cd={class:"tdv-header-center"},ud={class:"tdv-title"},dd={class:"tdv-header-right"},vd={class:"tdv-content"},md={key:2,class:"tdv-unknown"},fd=be({__name:"TaskDetailView",props:{todoItem:{}},setup(t){const n=Be(),r={ticket:"📋 运维工单",approval:"📝 审批单"},d={urgent:"🔴 紧急",high:"🟡 高",normal:"🟢 普通"};function u(){n.workspaceView="chat"}function c(s){ie.success(`操作成功:${s}`)}return(s,o)=>(a(),l("div",id,[e("div",rd,[e("button",{class:"tdv-back-btn",onClick:u},[...o[0]||(o[0]=[e("span",{class:"tdv-back-arrow"},"←",-1),e("span",null,"返回会话",-1)])]),e("div",cd,[e("h2",ud,v(t.todoItem.title),1),e("span",{class:oe(["tdv-type-tag",`tdv-type-${t.todoItem.type}`])},v(r[t.todoItem.type]||t.todoItem.type),3)]),e("div",dd,[e("span",{class:oe(["tdv-priority",`tdv-priority-${t.todoItem.priority}`])},v(d[t.todoItem.priority]||t.todoItem.priority),3)])]),e("div",vd,[t.todoItem.type==="ticket"?(a(),ye(Nu,{key:0,"todo-item":t.todoItem,onAction:c},null,8,["todo-item"])):t.todoItem.type==="approval"?(a(),ye(ld,{key:1,"todo-item":t.todoItem,onAction:c},null,8,["todo-item"])):(a(),l("div",md,[e("p",null,"未知的任务类型:"+v(t.todoItem.type),1)]))])]))}}),pd=ke(fd,[["__scopeId","data-v-3caee2ec"]]),gd={class:"top-bar"},yd={class:"top-bar-main"},_d={class:"top-bar-right"},hd=["title"],bd={style:{cursor:"pointer",display:"flex","align-items":"center",gap:"4px"}},kd={class:"agent-name"},wd={key:0,style:{"min-height":"200px"}},$d={key:1},Cd={style:{color:"var(--text-tertiary)","font-size":"12px"}},xd={key:1,style:{"text-align":"center"}},Id=["src"],Td=be({__name:"TopBar",emits:["toggleAssistant"],setup(t){const n=ut(),r=Et(),d=Be(),{disconnect:u}=kt(),c=b(!1),s=b(null),o=b(""),i=b(!1),h=async m=>{try{await navigator.clipboard.writeText(m),ie.success("已复制到剪贴板")}catch{ie.error("复制失败,请手动复制")}},_=b(!1);async function O(){i.value=!0,c.value=!0,o.value="";try{const m=await tn();s.value=m,_.value=!!m.secret}catch(m){console.error("获取OTP绑定信息失败:",m),ie.error("获取OTP绑定信息失败")}finally{i.value=!1}}async function P(){if(!o.value||o.value.length<6){ie.warning("请输入6位OTP码");return}i.value=!0;try{await nn(n.userId,o.value),ie.success("OTP验证成功,已启用二次验证"),c.value=!1}catch(m){console.error("OTP验证失败:",m)}finally{i.value=!1}}async function U(){var m;try{await qe.confirm("确定要解绑OTP吗?解绑后将不再需要二次验证。","提示",{confirmButtonText:"确定解绑",cancelButtonText:"取消",type:"warning"}),i.value=!0,await an(),ie.success("OTP已解绑"),c.value=!1}catch(p){(m=p==null?void 0:p.message)!=null&&m.includes("cancel")||console.error("解绑OTP失败:",p)}finally{i.value=!1}}const w=V(()=>({online:"在线",busy:"忙碌",offline:"离线"})[n.agentStatus]||"离线"),W=V(()=>({online:"success",busy:"warning",offline:"info"})[n.agentStatus]||"info");function z(){r.toggleTheme()}async function L(m){if(m==="otp"){await O();return}try{await n.changeStatus(m),ie.success(`已切换为${w.value}`)}catch(p){console.error("切换状态失败:",p)}}async function y(){try{await qe.confirm("确定要退出登录吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),u(),d.stopAllPolling(),n.logout()}catch{}}return(m,p)=>{const F=se("el-tag"),B=se("ArrowDown"),k=se("el-icon"),Z=se("el-dropdown-item"),I=se("el-dropdown-menu"),K=se("el-dropdown"),Y=se("SwitchButton"),G=se("el-button"),N=se("Operation"),g=se("el-result"),Q=se("el-divider"),de=se("el-input"),he=se("el-dialog"),ee=St("loading");return a(),l(ge,null,[e("header",gd,[e("div",yd,[p[11]||(p[11]=e("div",{class:"top-bar-left"},[e("span",{class:"logo-block"},"IT"),e("span",{class:"title-gradient"},"智能IT服务台"),e("span",{class:"subtitle"},"· 坐席工作台 — AI驱动 · 多系统对接 · 一站式处理")],-1)),e("div",_d,[e("div",{class:"theme-switch",title:A(r).currentTheme==="light"?"切换到深色模式":"切换到浅色模式",onClick:z},[...p[5]||(p[5]=[e("span",{class:"switch-icon"},"☀️",-1),e("div",{class:"switch-track"},[e("div",{class:"switch-thumb"})],-1),e("span",{class:"switch-icon"},"🌙",-1)])],8,hd),C(K,{trigger:"click",onCommand:L},{dropdown:E(()=>[C(I,null,{default:E(()=>[C(Z,{command:"online"},{default:E(()=>[...p[6]||(p[6]=[H(" 🟢 在线 — 接收新会话 ",-1)])]),_:1}),C(Z,{command:"busy"},{default:E(()=>[...p[7]||(p[7]=[H(" 🟡 忙碌 — 不接新会话 ",-1)])]),_:1}),C(Z,{command:"offline"},{default:E(()=>[...p[8]||(p[8]=[H(" ⚪ 离线 — 不接收任何会话 ",-1)])]),_:1}),C(Z,{divided:"",command:"otp"},{default:E(()=>[...p[9]||(p[9]=[H(" 🔐 OTP二次验证 ",-1)])]),_:1})]),_:1})]),default:E(()=>[e("span",bd,[C(F,{type:W.value,size:"small",effect:"dark"},{default:E(()=>[H(v(w.value),1)]),_:1},8,["type"]),e("span",kd,v(A(n).agentName),1),C(k,null,{default:E(()=>[C(B)]),_:1})])]),_:1}),C(G,{text:"",type:"danger",onClick:y},{default:E(()=>[C(k,null,{default:E(()=>[C(Y)]),_:1}),p[10]||(p[10]=H(" 登出 ",-1))]),_:1}),C(G,{class:"assistant-toggle-btn",text:"",onClick:p[0]||(p[0]=J=>m.$emit("toggleAssistant"))},{default:E(()=>[C(k,null,{default:E(()=>[C(N)]),_:1})]),_:1})])])]),C(he,{modelValue:c.value,"onUpdate:modelValue":p[4]||(p[4]=J=>c.value=J),title:"OTP二次验证设置",width:"400px","close-on-click-modal":!1},{default:E(()=>[i.value?He((a(),l("div",wd,null,512)),[[ee,i.value]]):s.value?(a(),l("div",$d,[_.value?(a(),l(ge,{key:0},[C(g,{icon:"success",title:"OTP已绑定"},{"sub-title":E(()=>[p[12]||(p[12]=e("p",null,"当前账号已绑定OTP二次验证",-1)),e("p",Cd," 密钥:"+v(s.value.secret),1)]),_:1}),C(G,{type:"danger",onClick:U},{default:E(()=>[...p[13]||(p[13]=[H("解绑OTP",-1)])]),_:1})],64)):(a(),l("div",xd,[p[18]||(p[18]=e("p",{style:{"margin-bottom":"16px"}},"请使用身份验证器(如Google Authenticator)扫码绑定",-1)),e("img",{src:s.value.qr_code,alt:"OTP二维码",style:{width:"200px",height:"200px",margin:"0 auto"}},null,8,Id),C(Q,null,{default:E(()=>[...p[14]||(p[14]=[H("或手动输入密钥",-1)])]),_:1}),C(de,{modelValue:s.value.secret,"onUpdate:modelValue":p[2]||(p[2]=J=>s.value.secret=J),readonly:""},{append:E(()=>[C(G,{onClick:p[1]||(p[1]=J=>h(s.value.secret))},{default:E(()=>[...p[15]||(p[15]=[H("复制",-1)])]),_:1})]),_:1},8,["modelValue"]),C(Q,null,{default:E(()=>[...p[16]||(p[16]=[H("验证启用",-1)])]),_:1}),C(de,{modelValue:o.value,"onUpdate:modelValue":p[3]||(p[3]=J=>o.value=J),placeholder:"输入6位OTP码",maxlength:"6",style:{width:"200px"}},null,8,["modelValue"]),C(G,{type:"primary",style:{"margin-top":"12px"},onClick:P},{default:E(()=>[...p[17]||(p[17]=[H(" 验证并启用 ",-1)])]),_:1})]))])):M("",!0)]),_:1},8,["modelValue"])],64)}}}),Sd=ke(Td,[["__scopeId","data-v-156a0f91"]]),Md=["data-theme"],Ad={class:"workspace-body"},Rd={class:"workspace-main"},Ld={key:2,class:"empty-chat-area"},Ed=be({__name:"Workspace",setup(t){const n=Be(),r=ut(),d=wt(),u=Et(),c=$t();un();const{connect:s,disconnect:o}=kt(),i=b(null),h=b(!0),_=b(null),O=b(null),P=b(!1),U=b(!1);let w=0,W=0,z=0,L=0;function y(I){I.preventDefault(),_.value&&(P.value=!0,w=I.clientX,W=_.value.offsetWidth,document.addEventListener("mousemove",m),document.addEventListener("mouseup",p),document.body.style.cursor="col-resize",document.body.style.userSelect="none")}function m(I){if(!P.value||!_.value)return;const K=I.clientX-w,Y=Math.max(200,Math.min(560,W+K));_.value.style.width=Y+"px",_.value.style.minWidth=Y+"px"}function p(){P.value=!1,document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",p),document.body.style.cursor="",document.body.style.userSelect=""}function F(I){I.preventDefault(),O.value&&(U.value=!0,z=I.clientX,L=O.value.offsetWidth,document.addEventListener("mousemove",B),document.addEventListener("mouseup",k),document.body.style.cursor="col-resize",document.body.style.userSelect="none")}function B(I){if(!U.value||!O.value)return;const K=z-I.clientX,Y=Math.max(200,Math.min(560,L+K));O.value.style.width=Y+"px",O.value.style.minWidth=Y+"px"}function k(){U.value=!1,document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",k),document.body.style.cursor="",document.body.style.userSelect=""}function Z(){const I=n.panelMode==="normal"?"expanded":"normal";n.setPanelMode(I)}return Ke(async()=>{if(!localStorage.getItem("agent_token")){window.location.href="/login";return}u.initTheme(),await r.initAuth(),await d.fetchTemplates(),await n.fetchConversations(),n.conversations.length>0&&!n.currentConversationId&&await n.selectConversation(n.conversations[0].id),s()}),Xe(()=>{o(),n.stopAllPolling(),document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",p),document.removeEventListener("mousemove",B),document.removeEventListener("mouseup",k)}),(I,K)=>{const Y=se("el-empty");return a(),l("div",{class:"workspace-layout","data-theme":A(u).currentTheme},[C(Sd,{ref_key:"topBarRef",ref:i,onToggleAssistant:K[0]||(K[0]=G=>h.value=!h.value)},null,512),e("div",Ad,[e("aside",{class:"workspace-sidebar",ref_key:"leftSidebarRef",ref:_},[C(da)],512),e("div",{class:oe(["resize-handle",{dragging:P.value}]),onMousedown:y},null,34),e("main",Rd,[A(n).workspaceView==="chat"&&A(n).currentConversation?(a(),ye(pu,{key:0})):A(n).workspaceView==="task"&&A(c).currentTodoItem?(a(),ye(pd,{key:1,"todo-item":A(c).currentTodoItem},null,8,["todo-item"])):(a(),l("div",Ld,[C(Y,{description:"请从左侧选择一个会话开始服务"})]))]),h.value?(a(),l("div",{key:0,class:oe(["resize-handle",{dragging:U.value}]),onMousedown:F},null,34)):M("",!0),h.value?(a(),l("aside",{key:1,class:oe(["workspace-assistant",{"is-expanded":A(n).panelMode==="expanded"}]),ref_key:"rightSidebarRef",ref:O},[C(sn,{mode:A(n).panelMode,onToggle:Z},null,8,["mode"])],2)):M("",!0)])],8,Md)}}}),Vd=ke(Ed,[["__scopeId","data-v-a1481490"]]);export{Vd as default};