import{d as H,b as p,c as k,V as oe,n as $,w as t,i as f,a2 as se,f as l,e as w,a0 as re,t as b,g as r,T as B,U as F,h as W,Z as ue,r as T,S as N,o as de,j as D,v as M,E as y,Y as Z}from"./index-CcYCuTIa.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{d as ie,e as me,f as fe,h as pe,i as ge,r as ce}from"./admin-i6XhhI1Z.js";import{S as ve}from"./index-CQ6vhAxl.js";import"./index-CPDTx6RU.js";const _e={class:"table-wrapper"},ye={class:"agent-info"},be={class:"agent-name"},we={class:"agent-id"},ke={class:"tag-group"},Ve={key:0,class:"text-muted"},xe={key:2,class:"text-muted"},Te=H({__name:"AgentTable",props:{agents:{},loading:{type:Boolean}},emits:["edit","reset-password","delete"],setup(v){function i(d){switch(d){case"online":return"success";case"busy":return"warning";case"offline":return"info";default:return"info"}}function A(d){switch(d){case"online":return"在线";case"busy":return"忙碌";case"offline":return"离线";default:return d}}function S(d){return d.role==="admin"?"var(--accent-light)":"rgba(16, 185, 129, 0.12)"}return(d,u)=>{const s=f("el-table-column"),V=f("el-tag"),P=f("el-button"),U=f("el-table"),x=se("loading");return p(),k("div",_e,[oe((p(),$(U,{data:v.agents,style:{width:"100%"},"header-cell-style":{background:"var(--bg-tertiary)",color:"var(--text-secondary)",fontSize:"12px",fontWeight:"500"},"cell-style":{color:"var(--text-primary)",fontSize:"13px"},"row-class-name":"agent-table-row","element-loading-text":"正在加载坐席数据..."},{default:t(()=>[l(s,{label:"坐席","min-width":"180"},{default:t(({row:a})=>[w("div",ye,[w("div",{class:"agent-avatar",style:re({background:S(a)})},b(a.name.charAt(0)),5),w("div",null,[w("div",be,b(a.name),1),w("div",we,b(a.user_id),1)])])]),_:1}),l(s,{label:"状态",width:"90"},{default:t(({row:a})=>[l(V,{type:i(a.status),size:"small",effect:"dark"},{default:t(()=>[r(b(A(a.status)),1)]),_:2},1032,["type"])]),_:1}),l(s,{label:"技能标签","min-width":"180"},{default:t(({row:a})=>[w("div",ke,[(p(!0),k(B,null,F(a.skill_tags,o=>(p(),$(V,{key:o,size:"small",effect:"plain"},{default:t(()=>[r(b(o),1)]),_:2},1024))),128)),!a.skill_tags||a.skill_tags.length===0?(p(),k("span",Ve,"未设置")):W("",!0)])]),_:1}),l(s,{label:"角色",width:"80"},{default:t(({row:a})=>[l(V,{type:a.role==="admin"?"warning":"info",size:"small"},{default:t(()=>[r(b(a.role==="admin"?"组长":"坐席"),1)]),_:2},1032,["type"])]),_:1}),l(s,{label:"OTP",width:"80",align:"center"},{default:t(({row:a})=>[a.otp_enabled===1?(p(),$(V,{key:0,type:"success",size:"small"},{default:t(()=>[...u[0]||(u[0]=[r(" 已启用 ",-1)])]),_:1})):a.otp_secret?(p(),$(V,{key:1,type:"warning",size:"small"},{default:t(()=>[...u[1]||(u[1]=[r(" 未验证 ",-1)])]),_:1})):(p(),k("span",xe,"未绑定"))]),_:1}),l(s,{label:"当前/最大负载",width:"110",align:"center"},{default:t(({row:a})=>[w("span",null,b(a.current_load)+" / "+b(a.max_load),1)]),_:1}),l(s,{label:"今日结单",width:"90",align:"center"},{default:t(({row:a})=>[r(b(a.today_resolved??0),1)]),_:1}),l(s,{label:"操作",width:"180",align:"center",fixed:"right"},{default:t(({row:a})=>[l(P,{size:"small",text:"",type:"primary",onClick:o=>d.$emit("edit",a)},{default:t(()=>[...u[2]||(u[2]=[r(" 编辑 ",-1)])]),_:1},8,["onClick"]),l(P,{size:"small",text:"",type:"warning",onClick:o=>d.$emit("reset-password",a)},{default:t(()=>[...u[3]||(u[3]=[r(" 重置密码 ",-1)])]),_:1},8,["onClick"]),l(P,{size:"small",text:"",type:"danger",onClick:o=>d.$emit("delete",a)},{default:t(()=>[...u[4]||(u[4]=[r(" 移除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[x,v.loading]])])}}}),Ae=J(Te,[["__scopeId","data-v-a8c5783f"]]),Pe=ue("agent",()=>{const v=T([]),i=T("all"),A=T(!1),S=N(()=>v.value.length),d=N(()=>i.value==="all"?v.value:v.value.filter(a=>a.status===i.value)),u=N(()=>{const a={all:v.value.length,online:0,busy:0,offline:0};for(const o of v.value)o.status==="online"?a.online++:o.status==="busy"?a.busy++:a.offline++;return a});async function s(a){A.value=!0;try{const o=await ie(a);v.value=o.data.data.items}catch(o){console.error("加载坐席列表失败:",o)}finally{A.value=!1}}function V(a){i.value=a}async function P(a){try{return await me(a),await s(),!0}catch(o){return console.error("添加坐席失败:",o),!1}}async function U(a,o){try{return await fe(a,o),await s(),!0}catch(C){return console.error("编辑坐席失败:",C),!1}}async function x(a){try{return await pe(a),await s(),!0}catch(o){return console.error("移除坐席失败:",o),!1}}return{agents:v,filterStatus:i,loading:A,filteredAgents:d,statusCounts:u,totalCount:S,loadAgents:s,setFilter:V,addAgent:P,editAgent:U,removeAgent:x}}),Ce={class:"agents-page"},$e={class:"agents-toolbar"},Se={class:"category-tabs"},Ue={key:0},ze={key:1},Le=H({__name:"Agents",setup(v){const i=Pe(),A=[{label:"全部",value:"all"},{label:"在线",value:"online"},{label:"忙碌",value:"busy"},{label:"离线",value:"offline"}],S=[...ve],d=T(!1),u=T(null),s=M({role:"agent",skillTags:[],maxLoad:5});function V(m){u.value=m,s.role=m.role,s.skillTags=[...m.skill_tags],s.maxLoad=m.max_load,d.value=!0}async function P(){if(!u.value)return;await i.editAgent(u.value.id,{role:s.role,skill_tags:s.skillTags,max_load:s.maxLoad})?(y.success("坐席信息已更新"),d.value=!1):y.error("更新失败")}async function U(){var m;if(u.value)try{await Z.confirm(`确定要强制解绑 ${u.value.name} 的OTP吗?`,"提示",{confirmButtonText:"确定解绑",cancelButtonText:"取消",type:"warning"}),await ge(u.value.id),y.success("OTP已解绑"),await i.loadAgents(),d.value=!1}catch(e){(m=e==null?void 0:e.message)!=null&&m.includes("cancel")||(console.error("解绑OTP失败:",e),y.error("解绑OTP失败"))}}const x=T(!1),a=T(),o=M({userId:"",name:"",role:"agent",skillTags:[],maxLoad:5}),C=T(!1),L=T(null),_=M({newPassword:"",confirmPassword:""});function Q(m){L.value=m,_.newPassword="",_.confirmPassword="",C.value=!0}async function X(){if(L.value){if(!_.newPassword||_.newPassword.length<6){y.error("密码长度不能少于6位");return}if(_.newPassword!==_.confirmPassword){y.error("两次输入的密码不一致");return}try{await ce(L.value.id,_.newPassword),y.success("密码已重置"),C.value=!1}catch(m){console.error("重置密码失败:",m),y.error("重置密码失败")}}}const h={userId:[{required:!0,message:"请输入企微用户ID",trigger:"blur"}],name:[{required:!0,message:"请输入姓名",trigger:"blur"}]};function ee(){o.userId="",o.name="",o.role="agent",o.skillTags=[],o.maxLoad=5,x.value=!0}async function le(){var g;if(!await((g=a.value)==null?void 0:g.validate().catch(()=>!1)))return;await i.addAgent({user_id:o.userId.trim(),name:o.name.trim(),role:o.role,skill_tags:o.skillTags,max_load:o.maxLoad})?(y.success("坐席已添加"),x.value=!1):y.error("添加失败")}function te(m){Z.confirm(`确定要移除坐席「${m.name}」吗?`,"移除坐席",{confirmButtonText:"确定移除",cancelButtonText:"取消",type:"warning"}).then(async()=>{await i.removeAgent(m.id)&&y.success("坐席已移除")}).catch(()=>{})}return de(()=>{i.loadAgents()}),(m,e)=>{const g=f("el-button"),ae=f("Plus"),ne=f("el-icon"),z=f("el-input"),c=f("el-form-item"),I=f("el-radio"),j=f("el-radio-group"),G=f("el-checkbox"),K=f("el-checkbox-group"),Y=f("el-input-number"),O=f("el-tag"),E=f("el-form"),R=f("el-dialog");return p(),k("div",Ce,[e[32]||(e[32]=w("div",{class:"page-title"},"坐席人员管理",-1)),e[33]||(e[33]=w("div",{class:"page-desc"},"坐席状态、技能标签、权限分级管理。技能标签与快速回复7大类对齐。",-1)),w("div",$e,[w("div",Se,[(p(),k(B,null,F(A,n=>l(g,{key:n.value,type:D(i).filterStatus===n.value?"primary":"default",size:"small",onClick:q=>D(i).setFilter(n.value)},{default:t(()=>[r(b(n.label)+" ("+b(D(i).statusCounts[n.value])+") ",1)]),_:2},1032,["type","onClick"])),64))]),l(g,{type:"primary",onClick:ee},{default:t(()=>[l(ne,null,{default:t(()=>[l(ae)]),_:1}),e[16]||(e[16]=r(" 添加坐席 ",-1))]),_:1})]),l(Ae,{agents:D(i).filteredAgents,loading:D(i).loading,onEdit:V,onResetPassword:Q,onDelete:te},null,8,["agents","loading"]),l(R,{modelValue:d.value,"onUpdate:modelValue":e[4]||(e[4]=n=>d.value=n),title:"编辑坐席",width:"480px","destroy-on-close":""},{footer:t(()=>[l(g,{onClick:e[3]||(e[3]=n=>d.value=!1)},{default:t(()=>[...e[24]||(e[24]=[r("取消",-1)])]),_:1}),l(g,{type:"primary",onClick:P},{default:t(()=>[...e[25]||(e[25]=[r("保存",-1)])]),_:1})]),default:t(()=>[u.value?(p(),$(E,{key:0,"label-position":"top"},{default:t(()=>[l(c,{label:"姓名"},{default:t(()=>[l(z,{"model-value":u.value.name,disabled:""},null,8,["model-value"])]),_:1}),l(c,{label:"角色"},{default:t(()=>[l(j,{modelValue:s.role,"onUpdate:modelValue":e[0]||(e[0]=n=>s.role=n)},{default:t(()=>[l(I,{value:"agent"},{default:t(()=>[...e[17]||(e[17]=[r("坐席",-1)])]),_:1}),l(I,{value:"admin"},{default:t(()=>[...e[18]||(e[18]=[r("组长",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),l(c,{label:"技能标签"},{default:t(()=>[l(K,{modelValue:s.skillTags,"onUpdate:modelValue":e[1]||(e[1]=n=>s.skillTags=n)},{default:t(()=>[(p(),k(B,null,F(S,n=>l(G,{key:n,value:n,label:n},null,8,["value","label"])),64))]),_:1},8,["modelValue"])]),_:1}),l(c,{label:"最大负载"},{default:t(()=>[l(Y,{modelValue:s.maxLoad,"onUpdate:modelValue":e[2]||(e[2]=n=>s.maxLoad=n),min:1,max:20,"controls-position":"right"},null,8,["modelValue"])]),_:1}),l(c,{label:"OTP二次验证"},{default:t(()=>{var n,q;return[((n=u.value)==null?void 0:n.otp_enabled)===1?(p(),k("div",Ue,[l(O,{type:"success"},{default:t(()=>[...e[19]||(e[19]=[r("已启用",-1)])]),_:1}),l(g,{size:"small",type:"danger",style:{"margin-left":"12px"},onClick:U},{default:t(()=>[...e[20]||(e[20]=[r(" 强制解绑 ",-1)])]),_:1})])):(q=u.value)!=null&&q.otp_secret?(p(),k("div",ze,[l(O,{type:"warning"},{default:t(()=>[...e[21]||(e[21]=[r("已绑定(未验证)",-1)])]),_:1}),l(g,{size:"small",type:"danger",style:{"margin-left":"12px"},onClick:U},{default:t(()=>[...e[22]||(e[22]=[r(" 强制解绑 ",-1)])]),_:1})])):(p(),$(O,{key:2,type:"info"},{default:t(()=>[...e[23]||(e[23]=[r("未绑定",-1)])]),_:1}))]}),_:1})]),_:1})):W("",!0)]),_:1},8,["modelValue"]),l(R,{modelValue:x.value,"onUpdate:modelValue":e[11]||(e[11]=n=>x.value=n),title:"添加坐席",width:"480px","destroy-on-close":""},{footer:t(()=>[l(g,{onClick:e[10]||(e[10]=n=>x.value=!1)},{default:t(()=>[...e[28]||(e[28]=[r("取消",-1)])]),_:1}),l(g,{type:"primary",onClick:le},{default:t(()=>[...e[29]||(e[29]=[r("确认添加",-1)])]),_:1})]),default:t(()=>[l(E,{ref_key:"addFormRef",ref:a,model:o,rules:h,"label-position":"top"},{default:t(()=>[l(c,{label:"企微用户ID",prop:"userId"},{default:t(()=>[l(z,{modelValue:o.userId,"onUpdate:modelValue":e[5]||(e[5]=n=>o.userId=n),placeholder:"如 WangLi"},null,8,["modelValue"])]),_:1}),l(c,{label:"姓名",prop:"name"},{default:t(()=>[l(z,{modelValue:o.name,"onUpdate:modelValue":e[6]||(e[6]=n=>o.name=n),placeholder:"如 王丽"},null,8,["modelValue"])]),_:1}),l(c,{label:"角色"},{default:t(()=>[l(j,{modelValue:o.role,"onUpdate:modelValue":e[7]||(e[7]=n=>o.role=n)},{default:t(()=>[l(I,{value:"agent"},{default:t(()=>[...e[26]||(e[26]=[r("坐席",-1)])]),_:1}),l(I,{value:"admin"},{default:t(()=>[...e[27]||(e[27]=[r("组长",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),l(c,{label:"技能标签"},{default:t(()=>[l(K,{modelValue:o.skillTags,"onUpdate:modelValue":e[8]||(e[8]=n=>o.skillTags=n)},{default:t(()=>[(p(),k(B,null,F(S,n=>l(G,{key:n,value:n,label:n},null,8,["value","label"])),64))]),_:1},8,["modelValue"])]),_:1}),l(c,{label:"最大负载"},{default:t(()=>[l(Y,{modelValue:o.maxLoad,"onUpdate:modelValue":e[9]||(e[9]=n=>o.maxLoad=n),min:1,max:20,"controls-position":"right"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),l(R,{modelValue:C.value,"onUpdate:modelValue":e[15]||(e[15]=n=>C.value=n),title:"重置密码",width:"400px","destroy-on-close":""},{footer:t(()=>[l(g,{onClick:e[14]||(e[14]=n=>C.value=!1)},{default:t(()=>[...e[30]||(e[30]=[r("取消",-1)])]),_:1}),l(g,{type:"warning",onClick:X},{default:t(()=>[...e[31]||(e[31]=[r("确认重置",-1)])]),_:1})]),default:t(()=>[L.value?(p(),$(E,{key:0,"label-position":"top"},{default:t(()=>[l(c,{label:"坐席"},{default:t(()=>[l(z,{"model-value":L.value.name,disabled:""},null,8,["model-value"])]),_:1}),l(c,{label:"新密码",required:""},{default:t(()=>[l(z,{modelValue:_.newPassword,"onUpdate:modelValue":e[12]||(e[12]=n=>_.newPassword=n),type:"password",placeholder:"请输入新密码(6-128位)","show-password":""},null,8,["modelValue"])]),_:1}),l(c,{label:"确认密码",required:""},{default:t(()=>[l(z,{modelValue:_.confirmPassword,"onUpdate:modelValue":e[13]||(e[13]=n=>_.confirmPassword=n),type:"password",placeholder:"请再次输入新密码","show-password":""},null,8,["modelValue"])]),_:1})]),_:1})):W("",!0)]),_:1},8,["modelValue"])])}}}),Ee=J(Le,[["__scopeId","data-v-0e8504fe"]]);export{Ee as default};