Files
wecom_it_smart_desk/frontend-agent/dist_old/assets/Workspace-Aoo9w7ld.js
T

3 lines
160 KiB
JavaScript
Raw Normal View History

import{u as Pe,g as Ut,i as Nt,r as jt,p as Wt,a as qt,b as Ft,s as nt,c as Ht}from"./conversation-BQKKYvcD.js";import{a as ht,u as ut,b as Kt,v as Xt,c as Yt}from"./agent-Dxg35leS.js";import{v as bt,r as h,x as O,d as be,i as le,b as a,c as l,y as se,f as e,t as v,e as A,F as ge,z as we,A as Ve,n as ye,p as $e,w as P,h as K,m as ke,o as Ke,a as Xe,u as L,g as C,B as qe,E as ie,C as Qt,D as Gt,G as Me,H as De,I as St,J as yt,K as He,L as Mt,M as Jt,s as Rt,N as kt,O as Zt,l as tt,T as At,P as en,Q as tn,R as nn,S as an}from"./index-CnIbBo4X.js";import{a as Be}from"./index-ra8jRslb.js";import{A as sn}from"./AiAssistantPanel-Ijo7E7oT.js";async function on(t){const n={};return await Be.get("/quick-replies",{params:n})}async function ln(t){return await Be.post("/quick-replies",t)}async function rn(t,n){return await Be.put(`/quick-replies/${t}`,n)}async function cn(t){await Be.delete(`/quick-replies/${t}`)}const wt=bt("quickReply",()=>{const t=h([]),n=h(!1),r=O(()=>{const _={};for(const y of t.value)_[y.category]||(_[y.category]=[]),_[y.category].push(y);return _}),d=O(()=>Object.keys(r.value));async function u(){try{n.value=!0;const _=await on();t.value=_.items}catch(_){console.error("获取快速回复模板失败:",_)}finally{n.value=!1}}async function c(_){try{const y=await ln(_);return await u(),y}catch(y){return console.error("创建快速回复模板失败:",y),null}}async function s(_,y){try{const z=await rn(_,y);return await u(),z}catch(z){return console.error("更新快速回复模板失败:",z),null}}async function o(_){try{await cn(_),await u()}catch(y){console.error("删除快速回复模板失败:",y)}}function i(_,y){let z=_;for(const[B,U]of Object.entries(y))z=z.replaceAll(`{${B}}`,U);return z}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=bt("theme",()=>{const t=h("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 Be.get("/todo-items",{params:t})}async function vn(t){return await Be.get("/todo-items",{params:{...t,_force:1}})}async function mn(t,n){return await Be.put(`/todo-items/${t}/status`,{status:n})}const $t=bt("todo",()=>{const t=h([]),n=h(null),r=h(!1),d=h("all"),u=O(()=>t.value.filter(B=>B.priority==="urgent").length),c=O(()=>t.value.filter(B=>B.priority==="high").length),s=O(()=>t.value.filter(B=>B.status==="pending"||B.status==="processing"));async function o(){try{r.value=!0;const B=d.value!=="all"?{type:d.value}:void 0,U=await dn(B);t.value=U.items}catch(B){console.error("获取待办列表失败:",B),t.value=[]}finally{r.value=!1}}async function i(){try{r.value=!0;const B=d.value!=="all"?{type:d.value}:void 0,U=await vn(B);t.value=U.items}catch(B){console.error("刷新待办列表失败:",B),t.value=[]}finally{r.value=!1}}async function _(B){d.value=B,await o()}function y(B){n.value=B}async function z(B,U){try{await mn(B,U),await o()}catch(k){console.error("更新待办状态失败:",k)}}return{todoList:t,currentTodoItem:n,loading:r,activeType:d,urgentCount:u,highCount:c,pendingTodos:s,fetchTodoList:o,refreshList:i,setActiveType:_,selectTodoItem:y,updateTodoItemStatus:z}}),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-ba
`)}const ee=["😀","😃","😄","😁","😆","😅","🤣","😂","🙂","😊","😇","🥰","😍","🤩","😘","😗","😚","😙","😋","😛","😜","🤪","😝","🤑","🤗","🤭","🤫","🤔","🤐","🤨","😐","😑","😶","😏","😒","🙄","😬","😮","🤯","😲","😳","🥺","😢","😭","😤","😠","😡","🤬","👍","👎","👏","🙌","🤝","💪","","🤞","","🧡","💛","💚","💙","💜","💯",""],W=O(()=>{const E=_.currentConversation;if(!E)return[];const w=[E.employee_id];return E.participants&&w.push(...E.participants.map(M=>M.id)),w}),g=O(()=>{const E=s.value;return E?E.selectionStart!==E.selectionEnd&&E.selectionEnd-E.selectionStart>=5:!1}),Y=O(()=>c.value.trim().length>0);function de(){_.fetchConversations()}function he(E){c.value+=E,R.value=!1,De(()=>{var w;(w=s.value)==null||w.focus()})}let Z=0,G=0,ce=0;Me(()=>_.pendingReplyText,E=>{E&&(c.value=E,_.pendingReplyText="",De(()=>{var w;(w=s.value)==null||w.focus()}))}),Me(c,()=>{var w;const E=(w=_.currentConversation)==null?void 0:w.id;E&&c.value.trim()&&y(E)}),Me(()=>H.finalText+"|"+H.interimText,()=>{if(H.isListening){const E=F.value,w=Q(E)?" ":"";c.value=E+w+H.finalText+H.interimText}}),Me(()=>H.isListening,(E,w)=>{if(w&&!E){const M=F.value,I=Q(M)?" ":"";c.value=M+I+H.finalText,J()}});function te(){if(!H.isSupported){ie.warning("当前浏览器不支持语音识别请使用 Chrome Edge");return}H.isListening?(b(),ie.success("语音识别已停止")):(F.value=c.value,V(),H.isListening?ie.info("正在聆听..."):H.error&&ie.error(H.error))}function ue(E){E.ctrlKey&&(E.key==="d"||E.key==="D")&&(E.preventDefault(),te())}function D(E){var w;E.preventDefault(),B.value=!0,Z=E.clientY,G=((w=i.value)==null?void 0:w.offsetHeight)||80,ce=z.value,document.addEventListener("mousemove",N),document.addEventListener("mouseup",oe),document.body.style.cursor="row-resize",document.body.style.userSelect="none"}function N(E){if(!B.value)return;const w=Z-E.clientY,I=Math.max(80,Math.min(400,G+w))-G,$=Math.max(60,Math.min(300,ce+I));z.value=$}function oe(){B.value=!1,document.removeEventListener("mousemove",N),document.removeEventListener("mouseup",oe),document.body.style.cursor="",document.body.style.userSelect=""}function q(E){if(x.ghostText.value){if(E.key==="Tab"&&!E.shiftKey){E.preventDefault(),x.acceptCompletion();return}if(E.key==="Tab"&&E.shiftKey){E.preventDefault(),x.acceptCompletionWord();return}if(E.key==="Escape"){E.preventDefault(),x.clearCompletion();return}}if(E.key==="Enter"&&E.ctrlKey&&!E.shiftKey){E.preventDefault(),E.stopPropagation(),X();return}E.key==="Enter"&&!E.shiftKey&&(E.preventDefault(),X())}async function X(){var $;const E=c.value.trim(),w=p.hasImages.value,M=E.length>0;if(!w&&!M)return;const I=($=_.currentConversation)==null?void 0:$.id;if(!I){ie.warning("请先选择一个会话");return}w&&await me(I),M&&u("send",E),c.value="",z.value=60}async function me(E){var $,m;ie.info("发送中...");const w=[...p.images.value];let M=0,I=0;for(const ae of w)try{const re=await at(ae.blob),ve=await nt(E,"[图片]","image",{media_url:re.url,file_name:re.filename,file_size:re.file_size});_.messages.push(ve),M++}catch(re){I++,console.error("[ReplyBox] 图片发送失败:",re);const ve=d((m=($=re==null?void 0:re.response)==null?void 0:$.data)==null?void 0:m.detail)||(re==null?void 0:re.message)||"未知错误";ie.error(`图片发送失败:${ve}`)}p.clearAll(),M>0&&I===0?ie.success("发送成功"):M>0&&I>0&&ie.warning(`${M} 张发送成功,${I} 张发送失败`)}async function _e(E){var M;const w=(M=E.clipboardData)==null?void 0:M.items;if(w)for(const I of Array.from(w)){if(I.kind==="file"){E.preventDefault();const $=I.getAsFile();if(!$)continue;$.type.startsWith("image/")||$.name.match(/\.(jpg|jpeg|png|gif|bmp|webp|svg|ico|tiff?)$/i)?await pe($):await ne($);return}if(I.type.startsWith("image/")&&I.kind==="string"){E.preventDefault();const $=I.getAsFile();if($){await pe($);return}}if(I.kind==="string"){E.preventDefault();const $=I.getAsFile();if($){$.type.startsWith("image/")||$.name.match(/\.(jpg|