chunk-06f32f03.35488f7d.js 14 KB

1
  1. (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-06f32f03"],{"4f28":function(e,t,s){},"5cb5":function(e,t,s){"use strict";s.r(t);var n,a=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"chat-container"},[s("div",{staticClass:"content"},[s("div",{staticClass:"messages"},[s("ul",e._l(e.messages,(function(t){return s("li",{key:t.id,class:[t.user,"user"===t.user?"user-message":""]},[s("div",{staticClass:"message_name"},[s("div",{staticClass:"avatar",class:{"user-avatar":"user"===t.user,"bot-avatar":"bot"===t.user}}),s("div",{staticClass:"name"},["user"===t.user?s("span",{staticClass:"sender-name",staticStyle:{color:"#666666"}},[e._v("你")]):e._e(),"bot"===t.user?s("span",{staticClass:"sender-name"},[e._v("AI助理")]):e._e()])]),s("div",{staticClass:"message-content"},[s("div",{staticClass:"message-text"},[t.imageUrls&&t.imageUrls.length?s("div",{staticClass:"message-images"},e._l(t.imageUrls,(function(e,t){return s("img",{key:t,staticClass:"uploaded-image",attrs:{src:e,alt:"Uploaded content"}})})),0):e._e(),t.documentUrls&&t.documentUrls.length?s("div",{staticClass:"message-documents"},e._l(t.documentUrls,(function(t,n){return s("div",{key:n,staticClass:"document-preview-item"},[s("i",{staticClass:"el-icon-document"}),s("span",{staticClass:"document-name"},[e._v(e._s(e.getDocumentName(t)))]),s("a",{staticClass:"document-link",attrs:{href:t,target:"_blank"}},[e._v("查看文档")])])})),0):e._e(),s("div",{domProps:{innerHTML:e._s(e.renderMarkdown(t.message))},on:{click:e.handleLinkClick}})])])])})),0)]),s("div",{staticClass:"input-container"},[e.uploadFiles.length>0||e.documents.length>0?s("div",{staticClass:"upload-preview"},[e._l(e.uploadFiles,(function(t,n){return s("div",{key:"img-"+n,staticClass:"preview-item image-preview"},[s("div",{staticClass:"preview-content"},[t.type.startsWith("image/")?s("img",{staticClass:"preview-image",attrs:{src:t.preview,alt:"preview"}}):e._e()]),s("i",{staticClass:"el-icon-close remove-file",on:{click:function(t){return e.removeFile(n)}}})])})),e._l(e.documents,(function(t,n){return s("div",{key:"doc-"+n,staticClass:"preview-item document-preview"},[s("div",{staticClass:"preview-content"},[s("i",{staticClass:"el-icon-document"}),s("span",{staticClass:"doc-name"},[e._v(e._s(t.name))])]),s("i",{staticClass:"el-icon-close remove-file",on:{click:function(t){return e.removeDocument(n)}}})])}))],2):e._e(),s("div",{staticClass:"input-area"},[s("textarea",{directives:[{name:"model",rawName:"v-model",value:e.userInput,expression:"userInput"}],attrs:{rows:"4",placeholder:"发送消息..."},domProps:{value:e.userInput},on:{keydown:e.handleKeydown,input:function(t){t.target.composing||(e.userInput=t.target.value)}}}),s("div",{staticClass:"toolbar"},[s("div",{staticClass:"left-tools"},[s("input",{ref:"fileInput",staticStyle:{display:"none"},attrs:{type:"file",multiple:"",accept:"image/*,.pdf,.doc,.docx,.txt"},on:{change:e.handleFileUpload}}),s("button",{staticClass:"tool-btn",on:{click:function(t){return e.$refs.fileInput.click()}}},[s("i",{staticClass:"el-icon-upload2"})])]),s("button",{staticClass:"btn",on:{click:e.sendMessage}},[e._v("发送")])])])])]),s("LoginModal",{attrs:{visible:e.showLoginModal},on:{"update:visible":function(t){e.showLoginModal=t},close:function(t){e.showLoginModal=!1},"login-success":e.handleLoginSuccess}})],1)},r=[],o=s("ade3"),i=s("c7eb"),c=s("1da1"),l=(s("99af"),s("4de4"),s("a630"),s("d81d"),s("fb6a"),s("a434"),s("b0c0"),s("e9c4"),s("b64b"),s("d3b7"),s("ac1f"),s("25f0"),s("3ca3"),s("5319"),s("2ca0"),s("498a"),s("159b"),s("c3b3")),u=s("ecd9"),d=s("d4cd"),m=s.n(d),h=s("4ec3"),g=s("db6a"),p=s("bc3a"),f=s.n(p),v=(new m.a,{components:{ChatBox:l["default"],LoginModal:u["default"]},data:function(){return{showLoginModal:!1,isThinking:!1,thinkingDots:"",messages:[{user:"bot",messageType:"TEXT",message:"欢迎使用智能AI助理",html:"",time:"",done:!0}],generating:!1,userInput:"",websocket:null,wsUrl:"http://58.246.234.210:7860/api/v1/run/3ef7369e-b617-40d2-9e2e-54f3ee76ed2e?stream=false",tweaks:{},isLoggedIn:!1,idArray:[],minioUrls:[],AImodel:"1",AIknowledgeBase:"1",AIFile:"1",AIform:{modelLibrary:"ollama",modelType:"",modelName:"",knowledgeBase:"",documentDirectory:"",document:""},currentChat_id:"",phone:"",uploadFiles:[],documents:[],currentAudio:null}},mounted:function(){var e=this;if(this.checkAIData(),"ai"==this.$route.name){var t=localStorage.getItem("AIData");if(!t)return void(this.showLoginModal=!0);try{var s=JSON.parse(t);s&&s.data?(console.log(s),this.wsUrl=s.data.url||"",this.phone=s.data.phone||"",this.tweaks=s.data.tweaks||{}):(console.error("Invalid AIData structure"),this.showLoginModal=!0)}catch(n){console.error("Error parsing AIData:",n),this.showLoginModal=!0}}else Object(h["c"])().then((function(t){200===t.status&&(e.wsUrl=t.data.url,e.tweaks=t.data.tweaks)}));this.init()},methods:(n={playAudio:function(e){var t=this;this.currentAudio&&(this.currentAudio.pause(),this.currentAudio=null);var s=new Audio(e);this.currentAudio=s,s.play().catch((function(e){console.error("Error playing audio:",e),t.currentAudio=null}))},handleFileUpload:function(e){var t=this;return Object(c["a"])(Object(i["a"])().mark((function s(){var n,a,r,o,c,l,u,d;return Object(i["a"])().wrap((function(s){while(1)switch(s.prev=s.next){case 0:n=Array.from(e.target.files),a=0,r=n;case 2:if(!(a<r.length)){s.next=22;break}return o=r[a],s.prev=4,c=new FormData,c.append("file",o),s.next=9,f.a.post("".concat("https://qlaiapi.raycos.com.cn","/upload/file"),c,{headers:{"Content-Type":"multipart/form-data"}});case 9:l=s.sent,u=l.data.data.fileUrl,d={name:o.name,type:o.type,preview:u,url:u},o.type.startsWith("image/")?t.uploadFiles.push(d):t.documents.push(d),s.next=19;break;case 15:s.prev=15,s.t0=s["catch"](4),console.error("文件上传失败:",s.t0),t.$message.error("文件 ".concat(o.name," 上传失败"));case 19:a++,s.next=2;break;case 22:e.target.value="";case 23:case"end":return s.stop()}}),s,null,[[4,15]])})))()},removeFile:function(e){this.uploadFiles.splice(e,1)},removeDocument:function(e){this.documents.splice(e,1)},checkAIData:function(){var e=localStorage.getItem("AIData");this.showLoginModal=!e},handleLoginSuccess:function(){this.showLoginModal=!1},selectChat:function(e){this.currentChatIndex=e},newChat:function(){this.chatHistory.push({title:"聊天 ".concat(this.chatHistory.length+1),preview:"新的聊天..."}),this.currentChatIndex=this.chatHistory.length-1,this.messages=[]},handleLinkClick:function(e){if("a"===e.target.tagName.toLowerCase()){e.preventDefault();var t=e.target.textContent.trim(),s=t.lastIndexOf("."),n=s>-1?t.slice(0,s):t,a=s>-1?t.slice(s+1):"",r=encodeURIComponent(n),o=encodeURIComponent(a),i="#/preview?fileName=".concat(r,"&fileExtension=").concat(o);try{localStorage.setItem("href",e.target.href)}catch(l){console.warn("无法存储 URL 到 localStorage:",l)}var c=window.open(i,"_blank");c?c.focus():alert("弹出窗口被阻止,请允许此网站的弹出窗口。")}}},Object(o["a"])(Object(o["a"])(Object(o["a"])(Object(o["a"])(Object(o["a"])(Object(o["a"])(Object(o["a"])(Object(o["a"])(Object(o["a"])(Object(o["a"])(n,"handleLoginSuccess",(function(){this.showLoginModal=!1,this.isLoggedIn=!0,this.sendMessage()})),"getUuid",(function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0,s="x"==e?t:3&t|8;return s.toString(16)}))})),"connectWebSocket",(function(){var e=this,t="http://58.246.234.210:7860/api/v1/run/2f1faff2-99df-4821-87d6-43d693084c4b?stream=false";this.websocket=new WebSocket(t),this.websocket.onclose=function(e){console.log("WebSocket 连接关闭:",e)},this.websocket.onopen=function(e){console.log("WebSocket 连接已建立:",e)},this.websocket.onmessage=function(t){var s=JSON.parse(t.data);if(s.done)e.messages[e.messages.length-1].done=!0;else if(e.messages[e.messages.length-1].done)e.messages.push({time:Date.now(),message:s.content,messageType:"TEXT",user:"bot",done:!1});else{var n=e.messages[e.messages.length-1];n.message+=s.content,e.messages[e.messages.length-1]=n}}})),"sendMessage",(function(){var e=this;return Object(c["a"])(Object(i["a"])().mark((function t(){var s,n,a,r,o,c,l,u,d,m;return Object(i["a"])().wrap((function(t){while(1)switch(t.prev=t.next){case 0:if("ai"!=e.$route.name){t.next=4;break}if(localStorage.getItem("AIData")){t.next=4;break}return e.showLoginModal=!0,t.abrupt("return");case 4:if(e.getUuid(),s="".concat("https://qlaiapi.raycos.com.cn","/chatbot/multimodal"),n=e.userInput.trim(),a=e.uploadFiles.filter((function(e){return e.type.startsWith("image/")})).map((function(e){return e.url})),r=e.documents.map((function(e){return e.url})),!(n||a.length>0||r.length>0)){t.next=48;break}return n=n.replace(/(\r\n|\r|\n)/g," \n"),e.messages.push({time:Date.now(),message:n,messageType:"TEXT",user:"user",imageUrls:a,documentUrls:r,done:!0}),e.userInput="",e.uploadFiles=[],e.documents=[],o={user:"bot",messageType:"TEXT",message:"",html:"",time:Date.now(),done:!1},e.messages.push(o),c=new AbortController,l=e.simulateThinking(o,c.signal),t.prev=19,t.next=22,f()({method:"post",url:s,data:{message:n,chat_config_id:"2",user_id:e.phone,session_id:e.session_id||"",source:"pc",image_urls:a,documents:r}});case 22:if(u=t.sent,e.session_id=u.data.data.session_id,200===u.data.code){t.next=26;break}throw new Error("HTTP error! status: ".concat(u.status,", message: ").concat(u.data.message));case 26:return c.abort(),t.next=29,l;case 29:return d=u.data.data.document_ids,e.idArray=d,m={document_ids:e.idArray},console.log("ID Object:",m),t.next=35,e.getMinioUrls(m);case 35:u.data.data.audio_info&&u.data.data.audio_info.audio&&e.playAudio(u.data.data.audio_info.audio),e.handleResponse(u.data,o),t.next=48;break;case 39:return t.prev=39,t.t0=t["catch"](19),console.error("Error sending message:",t.t0),c.abort(),t.next=45,l;case 45:o.done=!0,o.message="抱歉,发生了错误,请稍后再试。",t.t0.response?(console.error("Response data:",t.t0.response.data),console.error("Response status:",t.t0.response.status)):t.t0.request?console.error("No response received:",t.t0.request):console.error("Error message:",t.t0.message);case 48:case"end":return t.stop()}}),t,null,[[19,39]])})))()})),"getMinioUrls",(function(e){var t=this;return Object(c["a"])(Object(i["a"])().mark((function s(){var n;return Object(i["a"])().wrap((function(s){while(1)switch(s.prev=s.next){case 0:return t.minioUrls=[],s.prev=1,console.log("Sending to backend:",JSON.stringify(e)),s.next=5,f.a.post("".concat("https://qlaiapi.raycos.com.cn","/milvus/getMinioURlbyDocid"),e,{headers:{"Content-Type":"application/json"}});case 5:n=s.sent,200===n.status&&n.data?(t.minioUrls=n.data.data,console.log("Received Minio URLs:",t.minioUrls)):console.error("Failed to get Minio URLs"),s.next=13;break;case 9:s.prev=9,s.t0=s["catch"](1),console.error("Error fetching Minio URLs:",s.t0),s.t0.response?(console.error("Response data:",s.t0.response.data),console.error("Response status:",s.t0.response.status),console.error("Response headers:",s.t0.response.headers)):s.t0.request?console.error("No response received:",s.t0.request):console.error("Error message:",s.t0.message);case 13:case"end":return s.stop()}}),s,null,[[1,9]])})))()})),"simulateThinking",(function(e,t){var s=this;return Object(c["a"])(Object(i["a"])().mark((function n(){var a;return Object(i["a"])().wrap((function(n){while(1)switch(n.prev=n.next){case 0:return s.isThinking=!0,a=200,n.abrupt("return",new Promise((function(n){var r=function(){if(t.aborted)return clearInterval(o),s.isThinking=!1,s.thinkingDots="",e.message="",void n();s.thinkingDots+=".",s.thinkingDots.length>3&&(s.thinkingDots=""),e.message="思考中"+s.thinkingDots},o=setInterval(r,a);t.addEventListener("abort",(function(){clearInterval(o),s.isThinking=!1,s.thinkingDots="",e.message="",n()}))})));case 3:case"end":return n.stop()}}),n)})))()})),"handleResponse",(function(e,t){var s=this;return Object(c["a"])(Object(i["a"])().mark((function n(){var a,r,o;return Object(i["a"])().wrap((function(n){while(1)switch(n.prev=n.next){case 0:return a=e.data.answer,t.messageType=a,t.message="",r=a,o="",s.minioUrls&&s.minioUrls.length>0&&(o="\n\n<div class='source-section'><h3>相关资料来源:</h3><ol>",s.minioUrls.forEach((function(e,t){o+='<li><a href="'.concat(e.url,'" target="_blank" class="source-link">').concat(e.object_name,"</a></li>")})),o+="</ol></div>"),n.next=8,s.typeMessage(t,r);case 8:o&&(t.message+=o,t.html=s.renderMarkdown(t.message));case 9:case"end":return n.stop()}}),n)})))()})),"typeMessage",(function(e,t){var s=this;return new Promise((function(n){var a=30,r=0,o=function o(){r<t.length?(e.message+=t[r],r++,setTimeout(o,a)):(e.done=!0,e.html=s.renderMarkdown(e.message),n())};o()}))})),"renderMarkdown",(function(e){var t=new m.a({html:!0,breaks:!0,linkify:!0,tables:!0}),s=function(e){return e.replace(/<think>([\s\S]*?)<\/think>/g,(function(e,t){return'\n<div class="divider"></div><div class="think-content">'.concat(t,'</div><div class="divider"></div>\n')}))};t.renderer.rules.link_open=function(e,t,s,n,a){var r=e[t],o=r.attrIndex("href"),i=r.attrs[o][1];return'<span class="custom-link" data-href="'.concat(i,'">')},t.renderer.rules.link_close=function(){return"</span>"};var n=s(e),a=t.render(n);return setTimeout((function(){var e=document.querySelectorAll(".custom-link");e.forEach((function(e){e.addEventListener("click",(function(t){t.preventDefault();var s=e.getAttribute("data-href");window.open(s,"_blank")}))}))}),0),a})),"handleKeydown",(function(e){if("Enter"!==e.key||e.shiftKey||e.altKey){if("Enter"===e.key&&e.altKey){var t=e.target.selectionStart,s=this.userInput.slice(0,t),n=this.userInput.slice(t);this.userInput=s+"\n"+n,this.$nextTick((function(){e.target.selectionStart=t+1,e.target.selectionEnd=t+1}))}}else e.preventDefault(),this.sendMessage()})),Object(o["a"])(Object(o["a"])(Object(o["a"])(n,"beforeDestroy",(function(){this.websocket&&this.websocket.close()})),"init",(function(){var e=this;Object(g["s"])().then((function(t){200===t.status&&(e.currentChat_id=t.data.id)}))})),"getDocumentName",(function(e){var t=e.split("/"),s=t[t.length-1];return decodeURIComponent(s)}))),updated:function(){var e=this.$el.querySelector(".messages");e.scrollTop=e.scrollHeight}}),b=v,w=(s("65ca"),s("2877")),k=Object(w["a"])(b,a,r,!1,null,"47ce367b",null);t["default"]=k.exports},"65ca":function(e,t,s){"use strict";s("4f28")}}]);