| 123 |
- import{_ as $,o as c,d as p,e as i,l as oe,m as B,g as q,h as k,f as w,w as A,c as R,F as se,n as ae,p as E,r as y,q as j,s as K,k as ie,v as le,x as P,y as ce,u as re,i as ue}from"./index-BFXgsjcJ.js";import{L as de}from"./LayoutExperience-C5ABRhxw.js";import{C as _e}from"./ContentContainer-D4U8td07.js";import{C as fe}from"./ChatAsideMenu-kMR7j_Va.js";import{j as G,a as V}from"./utils-nRFFHnCp.js";import{u as ge}from"./use-all-agents-CAFU1GJ8.js";import"./Header-8WJ1gmsx.js";import"./Header.vue_vue_type_style_index_0_scoped_0b4b82f2_lang-CmyFc8-Z.js";import"./use-current-user-Ya97jiUb.js";/* empty css */const pe={},he={class:"dialog-aside-left"};function me(e,n){return c(),p("div",he,n[0]||(n[0]=[i("div",null,"对话左侧边栏",-1)]))}const ve=$(pe,[["render",me],["__scopeId","data-v-76fa4cd7"]]),ye={},we={class:"dialog-header"};function be(e,n){return c(),p("div",we,n[0]||(n[0]=[i("div",null,"对话顶部",-1)]))}const $e=$(ye,[["render",be],["__scopeId","data-v-6d289eea"]]),Ce={class:"dialog-welcome-content"},Se={__name:"DialogWelcome",props:{suggestion:Object},setup(e){return(n,t)=>(c(),p("div",Ce,t[0]||(t[0]=[i("div",null,"对话欢迎内容:欢迎内容应该按照agent进行配置,最好是从后端进行返回",-1)])))}},xe=$(Se,[["__scopeId","data-v-d67ff057"]]),qe={class:"dialog-item-select question-select"},ke={__name:"BtnSelectItem",props:{is_selected:Boolean},emits:["change"],setup(e,{emit:n}){return(t,s)=>(c(),p("div",qe))}},J=$(ke,[["__scopeId","data-v-b88b55f4"]]),Ie={class:"dialog-chat-answer-content"},De={__name:"DialogContent",props:{type:String,content:String},setup(e){return(n,t)=>(c(),p("div",Ie,[t[0]||(t[0]=i("div",null,"这是用户提问的内容区域这是用户提问的内容区域这是用户提问的内容区域",-1)),oe(n.$slots,"default",{},void 0,!0)]))}},X=$(De,[["__scopeId","data-v-5d086165"]]),Ae={class:"dialog-item dialog-question"},Be={class:"dialog-main question-main"},We={class:"dialog-content question-content"},Re={__name:"DialogQuestion",props:{show_select:!0,question:Object},setup(e){const n=e,t=B(()=>n.show_select===!0),s=()=>{};return(a,l)=>(c(),p("div",Ae,[t.value?(c(),q(J,{key:0,onChange:s})):k("",!0),i("div",Be,[i("div",We,[i("div",null,[w(X,{content:e.question.content},null,8,["content"])])]),l[0]||(l[0]=i("div",{class:"dialog-icon question-icon"},null,-1))])]))}},Fe=$(Re,[["__scopeId","data-v-725008a0"]]),Me={class:"dialog-actions-container"},Ee={__name:"DialogActions",emits:["copy","retry","share"],setup(e,{emit:n}){const t=n,s=()=>{t("copy")},a=()=>{t("retry")},l=()=>{t("share")},o=()=>{},r=()=>{};return(d,g)=>(c(),p("div",Me,[i("div",{class:"dialog-action-part dialog-action-left"},[i("div",{class:"action-btn-item",onClick:s},"复制"),i("div",{class:"action-btn-item",onClick:a},"再试一次"),i("div",{class:"action-btn-item",onClick:l},"分享")]),i("div",{class:"dialog-action-part dialog-action-right"},[i("div",{class:"action-btn-item",onClick:o},"赞"),i("div",{class:"action-btn-item",onClick:r},"踩")])]))}},Le=$(Ee,[["__scopeId","data-v-3e5fc44a"]]),Ue={__name:"BtnStopChat",emits:["stop"],setup(e,{emit:n}){const t=n,s=()=>{t("stop")};return(a,l)=>(c(),p("div",{onClick:s},"停止生成"))}},je={class:"dialog-item dialog-anwser"},ze={class:"dialog-main answer-main"},Ne={class:"dialog-content answer-content"},Te={__name:"DialogAnswer",props:{show_select:!0,answer:Object},emits:["stop","retry","select"],setup(e,{emit:n}){const t=e,s=n,a=B(()=>t.show_select===!0),l=()=>{s("select")},o=()=>{s("stop")},r=()=>{},d=()=>{},g=()=>{s("retry")};return(h,u)=>(c(),p("div",je,[a.value?(c(),q(J,{key:0,onChange:l})):k("",!0),i("div",ze,[u[0]||(u[0]=i("div",{class:"dialog-icon answer-icon"},null,-1)),i("div",Ne,[i("div",null,[w(X,null,{default:A(()=>[w(Le,{class:"answer-actions-btns",onCopy:r,onShare:d,onRetry:g})]),_:1}),w(Ue,{onStop:o})])])])]))}},Ve=$(Te,[["__scopeId","data-v-bab4f018"]]),Oe={class:"dialog-item-container"},Qe={__name:"DialogItem",props:{dialog:Object},emits:["stop","retry","select"],setup(e,{emit:n}){const t=e,s=n,a=B(()=>({content:t.dialog.question})),l=B(()=>{const g={};return t.dialog.answer&&(g.content=t.dialog.answer),g}),o=()=>{s("stop")},r=()=>{s("retry")},d=()=>{s("select")};return(g,h)=>(c(),p("div",Oe,[w(Fe,{question:a.value},null,8,["question"]),w(Ve,{answer:l.value,onStop:o,onRetry:r,onSelect:d},null,8,["answer"])]))}},He=$(Qe,[["__scopeId","data-v-8a4c6af6"]]),Ke={class:"dialog-suggestion"},Pe={__name:"DialogSuggestion",props:{suggestion:Object},setup(e){return(n,t)=>(c(),p("div",Ke,t[0]||(t[0]=[i("div",null,"对话推荐项,当一轮对话结束后,可能有其他推荐的内容项目,在对话结束处进行展示。",-1)])))}},Ge=$(Pe,[["__scopeId","data-v-c9a060e3"]]),Je={class:"dialog-list"},Xe={__name:"DialogList",props:{height:Number,agent_id:String,list:Array,suggestion:Array},setup(e){const n=e,t=B(()=>({height:n.height+"px",overflow:"auto"}));return(s,a)=>{const l=R("a-scrollbar");return c(),q(l,{type:"track",style:E(t.value)},{default:A(()=>[i("div",Je,[(c(!0),p(se,null,ae(e.list,(o,r)=>(c(),q(He,{dialog:o,index:r,key:o.id},null,8,["dialog","index"]))),128)),e.suggestion.length!==0?(c(),q(Ge,{key:0,suggestion:e.suggestion},null,8,["suggestion"])):k("",!0)])]),_:1},8,["style"])}}},Ye=$(Xe,[["__scopeId","data-v-f81c0e87"]]),Ze={class:"dialog-input-actions"},et={class:"dialog-input-action-right"},tt={__name:"InputActions",props:{disabled:{type:Boolean,default:!1,required:!1},enable_file_upload:{type:Boolean,default:!0,required:!1},enable_frequent_question:{type:Boolean,default:!0,required:!1},enable_voice_recognition:{type:Boolean,default:!1,required:!1},file_upload_type:{type:String,default:"*",required:!1},file_upload_limit:{type:Number,default:0,required:!1}},emits:["fileUpload","questionDefine","voiceRecognize","submit"],setup(e,{emit:n}){const t=n,s=()=>{t("questionDefine")},a=()=>{t("fileUpload")},l=()=>{t("voiceRecognize")},o=()=>{t("submit")};return(r,d)=>(c(),p("div",Ze,[d[0]||(d[0]=i("div",{class:"dialog-input-action-left"},[i("div",null,"联网查询")],-1)),i("div",et,[e.enable_frequent_question?(c(),p("div",{key:0,onClick:s},"常用问题定义")):k("",!0),e.enable_file_upload?(c(),p("div",{key:1,onClick:a},"文件上传")):k("",!0),e.enable_voice_recognition?(c(),p("div",{key:2,onClick:l},"语音识别")):k("",!0),i("div",{onClick:o},"发送")])]))}},nt=$(tt,[["__scopeId","data-v-26be9f9b"]]),ot={class:"dialog-input"},st={__name:"DialogInput",props:{disabled:{type:Boolean,default:!1,required:!1},enable_file_upload:{type:Boolean,default:!0,required:!1},enable_frequent_question:{type:Boolean,default:!0,required:!1},enable_voice_recognition:{type:Boolean,default:!1,required:!1},file_upload_type:{type:String,default:"*",required:!1},file_upload_limit:{type:Number,default:0,required:!1},text_placeholder:{type:String},text_limit:{type:Number,default:0,required:!1},show_text_count:{type:Boolean,default:!1,required:!1}},emits:["inputTextChange","inputFileChange","submit"],setup(e,{emit:n}){const t=e,s=y(""),a=n,l=()=>{t.disabled||a("submit")},o=()=>{},r=()=>{},d=()=>{},g=()=>{s.value=s.value.replace(/\n/,"")},h=(_,v)=>{t.disabled||(s.value=_,a("inputTextChange",s.value))},u=_=>{if(t.disabled){_.keyCode===13&&g();return}_.keyCode===13&&(_.ctrlKey||(g(),a("submit")))};return(_,v)=>{const S=R("a-textarea");return c(),p("div",ot,[i("div",null,[w(S,{placeholder:"输入文本内容","model-value":s.value,"allow-clear":"","auto-size":{minRows:1,maxRows:4},onInput:h,onKeyup:u},null,8,["model-value"])]),w(nt,{disabled:e.disabled,enable_file_upload:e.enable_file_upload,enable_frequent_question:e.enable_frequent_question,enable_voice_recognition:e.enable_voice_recognition,file_upload_type:e.file_upload_type,file_upload_limit:e.file_upload_limit,onFileUpload:o,onQuestionDefine:r,onVoiceRecognize:d,onSubmit:l},null,8,["disabled","enable_file_upload","enable_frequent_question","enable_voice_recognition","file_upload_type","file_upload_limit"]),v[0]||(v[0]=i("div",null,"文件上传预览区: 当点击文件上传,选择某个文件后,此处需要展示进行预览。",-1))])}}},at=$(st,[["__scopeId","data-v-a697767c"]]),it={},lt={class:"dialog-footer"};function ct(e,n){return c(),p("div",lt,n[0]||(n[0]=[i("div",null,"对话底部",-1)]))}const rt=$(it,[["render",ct],["__scopeId","data-v-1c6ae20a"]]),ut={},dt={class:"dialog-aside-right"};function _t(e,n){return c(),p("div",dt,n[0]||(n[0]=[i("div",null,"对话右侧边栏",-1)]))}const ft=$(ut,[["render",_t],["__scopeId","data-v-07f31c8f"]]);function gt(e){const n=y(0),t=y(0),{proxy:s}=ie(),a=()=>{const l=s.$refs[e];n.value=l.offsetHeight,t.value=l.offsetWidth};return j(()=>{a(),window.addEventListener("resize",a)}),K(()=>{window.removeEventListener("resize",a)}),{height:n,width:t}}function pt(e,n,t){const s=location.host,a=le.get();return e==="report"?`ws://${s}/api/${e}/ws/${n}/${t}?token=${a}`:e==="chat"?`ws://${s}/api/${e}/ws/${n}/${t}?token=${a}`:e==="excel"?`ws://${s}/api/document/ws/excel`:`ws://${s}/api/chat/ws/${n}/${t}?token=${a}`}function U(e){return typeof e=="function"?e:Function.prototype}function ht(e){let n=[];const t=U(e.onMessage),s=U(e.onClose),a=U(e.onError);y(-1);function l(r,d,g){const h=pt(g,r,d),u=new WebSocket(h);return u.onopen=function(_){n.forEach(v=>{u.send(v)}),n=[]},u.onclose=function(_){s(_)},u.onerror=function(_){a(_)},u.onmessage=_=>{t(_)},u}let o=null;return{initWSConnection(r,d,g){return o===null&&(o=l(r,d,g)),o},sendWSMessage(r){o===null?(console.log("websocket为空,还未创建,开始创建"),o=l()):console.log("websocket已创建"),o.readyState===0&&n.push(r),o.readyState===1&&o.send(r),o.readyState===2&&console.log("web socket正在关闭"),o.readyState===3&&(n.push(r),o=l())},getWSInstance(){return o},closeWSConnect(){o!==null&&o.close()}}}const mt=e=>P.get(`/api/agent/get-chat-id/${e}`),vt=(e,n)=>P.get(`/api/agent/${e}/${n}/session_log`);function yt(e){return{}}function wt(e){const n=[];return e.forEach(t=>{const s=yt();n.push(s)}),n}function bt(e,n){return G({message:e})}const $t=e=>`<pre><code class="hljs language-python">
- ${e}</code></pre>`,Ct=e=>`<pre><code class="hljs language-sql">
- ${e}</code></pre>`;function St(){return{client_custom_chat_type:2,client_custom_chat_status:0,question:"",answer:""}}function xt(e,n){const t=V(e);console.log("收到消息::"),console.log(t);const s=V(G(n)),a=t.type,l=t.message;t.reference,t.step_message;const o=t.files,r=t.message_files,d=t.download_url,g=t.file_url,h=t.file_name,u=t.image_url,_=t.excel_url,v=t.excel_name,S=t.code,F=t.sql,b={client_custom_chat_type:2,client_custom_chat_status:1,question:t.question};for(let f in s)f==="client_custom_chat_type"||f==="client_custom_chat_status"||(b[f]=s[f]);let I=0,L="";if(a==="message"){if(I=1,b.answer=l,u){const f=window.location.port?`:${window.location.port}`:"",C=`http://${window.location.hostname}${f}${u}`;b.image_url=C}if(_&&v){const f=window.location.port?`:${window.location.port}`:"",C={file_type:"excel",file_url:`http://${window.location.hostname}${f}${_}`,file_name:`${v}.xlsx`||"点击下载"};b.file=C}if(g&&h){const f=window.location.port?`:${window.location.port}`:"",C={file_type:"word",file_url:`http://${window.location.hostname}${f}${g}`,file_name:`${h}.docx`||"点击下载"};b.file=C}if(S){const f=$t(S);b.code=f}if(F){const f=Ct(F);b.sql=f}if(d){const f=decodeURIComponent(d).split("/"),C=f[f.length-1],W={file_type:"word",file_url:d,file_name:`${C}.docx`||"点击下载"};b.file=W}}if(a==="stream"&&(I=1,n&&n.answer?b.answer=n.answer+l:b.answer=l,o)){const C=o[0].file_name.split("."),W=C[C.length-1],M={file_name:o[0].file_name,file_url:o[0].file_url};W==="xlsx"&&(M.file_type="excel"),W==="docx"&&(M.file_type="word"),b.file=M}return a==="system"&&(I=1),a==="close"&&(I=2,b.client_custom_chat_status=2,b.client_custom_chat_type=1,r&&Array.isArray(r)&&r.forEach((f,C)=>{})),a==="error"&&(I=3),{status:I,message:L,data:b}}const qt={class:"conversation-chat-container"},kt={class:"conversation-chat-left"},It={class:"conversation-chat-main",ref:"chat_main"},Dt={class:"conversation-chat-content"},At={class:"conversation-chat-right"},O=30,Q=30,H=100,Bt={__name:"ConversationChatContainer",props:{agent_id:String,session_id:String,chat_type:String},setup(e){const n=e,{width:t,height:s}=gt("chat_main"),a=B(()=>s.value-O-Q-H),l=y([]),o=y([]),r=y({});y(0);const d=y(null),g=B(()=>[].concat(l.value,o.value)),h=y(!0),u=m=>{},_=m=>{},v=y(""),S=y([]),F=y(!1),b=m=>{v.value=m},I=m=>{S.value=m},L=async()=>{if(d.value===null)try{const x=await mt(n.agent_id);if(x.code/1===200){const D=x.data;d.value=D.chat_id}else return}catch(x){console.log(x);return}else console.log(d.value,"已创建");S.value.length;const m=bt(v.value,S.value);h.value=!1,Z(d.value,m)},f={onMessage:ee,onError:te,onClose:ne},{initWSConnection:C,sendWSMessage:W,getWSInstance:M,closeWSConnect:Y}=ht(f);function Z(m,x){const D=St();o.value.push(D),C(n.agent_id,m,n.chat_type),W(x),v.value="",S.value=[]}function ee(m){const x=m.data,D=o.value[o.value.length-1],z=xt(x,D),N=z.status,T=z.data;N===1&&(o.value.pop(),o.value.push(T)),N===2&&(o.value.pop(),o.value.push(T))}function te(m){}function ne(m){}return j(()=>{n.session_id&&vt(n.agent_id,n.session_id).then(m=>{if(m.code/1===200){const x=m.data,D=wt(x);l.value=D}}).catch(m=>{console.log(m)})}),K(()=>{Y()}),(m,x)=>(c(),p("div",qt,[i("div",kt,[w(ve)]),i("div",It,[w($e,{class:"conversation-chat-header",style:E({height:O+"px"})},null,8,["style"]),i("div",Dt,[h.value?(c(),q(xe,{key:0,class:"conversation-chat-area"})):k("",!0),h.value?k("",!0):(c(),q(Ye,{key:1,class:"conversation-chat-area",height:a.value,agent_id:e.agent_id,list:g.value,suggestion:r.value,onShare:u,onSubmit:_},null,8,["height","agent_id","list","suggestion"])),w(at,{class:"conversation-chat-input",style:E({height:H+"px"}),disabled:F.value,onInputTextChange:b,onInputFileChange:I,onSubmit:L},null,8,["style","disabled"])]),w(rt,{class:"conversation-chat-footer",style:E({height:Q+"px"})},null,8,["style"])],512),i("div",At,[w(ft)])]))}},Wt=$(Bt,[["__scopeId","data-v-1bba5205"]]),Vt={__name:"ConversationQA",setup(e){const n=ce(),t=re(),s=ge(),a=y(""),l=y(""),o=y(1),r=y(""),d=()=>{t.back()};async function g(h){if(!h)return!1;const u=s.getList();return u.length===0?!0:!!u.find(v=>v.id===h)}return j(async()=>{const h=n.query,u=h.agent,_=h.session;if(!u){o.value=3,r.value="非法操作:参数异常";return}if(!await g(u)){o.value=3,r.value="非法操作:参数异常";return}o.value=2,r.value="success",a.value=u,l.value=_}),(h,u)=>{const _=R("a-button"),v=R("a-space"),S=R("a-result");return c(),q(de,null,{default:A(()=>[w(_e,null,{default:A(()=>[w(fe),o.value===2?(c(),q(Wt,{key:0,agent_id:a.value,session_id:l.value},null,8,["agent_id","session_id"])):k("",!0),o.value===3?(c(),q(S,{key:1,status:"error",title:r.value},{extra:A(()=>[w(v,null,{default:A(()=>[w(_,{type:"primary",onClick:d},{default:A(()=>u[0]||(u[0]=[ue("返回")])),_:1})]),_:1})]),_:1},8,["title"])):k("",!0)]),_:1})]),_:1})}}};export{Vt as default};
|