1 |
- (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-149c1dec"],{"54a6":function(e,t,s){"use strict";s("d945")},"5cb5":function(e,t,s){"use strict";s.r(t);var a,n=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"},[t.files?s("div",{staticClass:"message-media"},[t.files.images&&t.files.images.length>0?s("div",{staticClass:"image-previews"},e._l(t.media.images,(function(t,a){return s("img",{key:a,staticClass:"message-image",attrs:{src:t,alt:"uploaded image"},on:{click:function(s){return e.previewImage(t)}}})})),0):e._e(),t.media.documents&&t.media.documents.length>0?s("div",{staticClass:"document-previews"},e._l(t.media.documents,(function(t,a){return s("div",{key:a,staticClass:"document-preview",on:{click:function(s){return e.openDocument(t.url)}}},[s("i",{staticClass:"el-icon-document"}),s("span",{staticClass:"document-name"},[e._v(e._s(t.name))])])})),0):e._e()]):e._e(),s("div",{staticClass:"message-text",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,a){return s("div",{key:"img-"+a,staticClass:"preview-item"},[s("div",{staticClass:"preview-content"},[t.type.startsWith("image/")?s("img",{staticClass:"preview-image",attrs:{src:t.preview,alt:"preview"}}):s("div",{staticClass:"file-info"},[s("i",{staticClass:"el-icon-document"}),s("span",[e._v(e._s(t.name))])])]),s("i",{staticClass:"el-icon-close remove-file",on:{click:function(t){return e.removeFile(a)}}})])})),e._l(e.documents,(function(t,a){return s("div",{key:"doc-"+a,staticClass:"preview-item document-item"},[s("div",{staticClass:"preview-content"},[s("div",{staticClass:"file-info"},[s("i",{staticClass:"el-icon-document"}),s("span",[e._v(e._s(t.name))])])]),s("i",{staticClass:"el-icon-close remove-file",on:{click:function(t){return e.removeDocument(a)}}})])}))],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)},o=[],i=s("ade3"),r=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"),p=s("db6a"),g=s("bc3a"),f=s.n(g),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(a){console.error("Error parsing AIData:",a),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:(a={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(r["a"])().mark((function s(){var a,n,o,i,c,l,u,d;return Object(r["a"])().wrap((function(s){while(1)switch(s.prev=s.next){case 0:a=Array.from(e.target.files),n=0,o=a;case 2:if(!(n<o.length)){s.next=22;break}return i=o[n],s.prev=4,c=new FormData,c.append("file",i),s.next=9,f.a.post("".concat("https://ylaiapi.raycos.com.cn","/upload/file"),c,{headers:{"Content-Type":"multipart/form-data"}});case 9:l=s.sent,u=l.data.data.fileUrl,d={name:i.name,type:i.type,preview:u,url:u},i.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(i.name," 上传失败"));case 19:n++,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("."),a=s>-1?t.slice(0,s):t,n=s>-1?t.slice(s+1):"",o=encodeURIComponent(a),i=encodeURIComponent(n),r="#/preview?fileName=".concat(o,"&fileExtension=").concat(i);try{localStorage.setItem("href",e.target.href)}catch(l){console.warn("无法存储 URL 到 localStorage:",l)}var c=window.open(r,"_blank");c?c.focus():alert("弹出窗口被阻止,请允许此网站的弹出窗口。")}}},Object(i["a"])(Object(i["a"])(Object(i["a"])(Object(i["a"])(Object(i["a"])(Object(i["a"])(Object(i["a"])(Object(i["a"])(Object(i["a"])(Object(i["a"])(a,"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 a=e.messages[e.messages.length-1];a.message+=s.content,e.messages[e.messages.length-1]=a}}})),"sendMessage",(function(){var e=this;return Object(c["a"])(Object(r["a"])().mark((function t(){var s,a,n,o,i,c,l,u,d,m;return Object(r["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://ylaiapi.raycos.com.cn","/chatbot/multimodal"),a=e.userInput.trim(),n=e.uploadFiles.filter((function(e){return e.type.startsWith("image/")})).map((function(e){return e.url})),o=e.documents.map((function(e){return e.url})),!(a||n.length>0||o.length>0)){t.next=47;break}return a=a.replace(/(\r\n|\r|\n)/g," \n"),e.messages.push({time:Date.now(),message:a,messageType:"TEXT",user:"user",done:!0}),e.userInput="",e.uploadFiles=[],e.documents=[],i={user:"bot",messageType:"TEXT",message:"",html:"",time:Date.now(),done:!1},e.messages.push(i),c=new AbortController,l=e.simulateThinking(i,c.signal),t.prev=19,t.next=22,f()({method:"post",url:s,data:{message:a,chat_config_id:"17",user_id:e.phone,session_id:e.session_id||"",source:"pc",image_urls:n,documents:o}});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.milvus_ids,e.idArray=d,m={ids:e.idArray},t.next=34,e.getMinioUrls(m);case 34:u.data.data.audio_info&&u.data.data.audio_info.audio&&e.playAudio(u.data.data.audio_info.audio),e.handleResponse(u.data,i),t.next=47;break;case 38:return t.prev=38,t.t0=t["catch"](19),console.error("Error sending message:",t.t0),c.abort(),t.next=44,l;case 44:i.done=!0,i.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 47:case"end":return t.stop()}}),t,null,[[19,38]])})))()})),"getMinioUrls",(function(e){var t=this;return Object(c["a"])(Object(r["a"])().mark((function s(){var a;return Object(r["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://ylaiapi.raycos.com.cn","/milvus/getMinioURl"),e,{headers:{"Content-Type":"application/json"}});case 5:a=s.sent,200===a.status&&a.data?(t.minioUrls=a.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(r["a"])().mark((function a(){var n;return Object(r["a"])().wrap((function(a){while(1)switch(a.prev=a.next){case 0:return s.isThinking=!0,n=200,a.abrupt("return",new Promise((function(a){var o=function(){if(t.aborted)return clearInterval(i),s.isThinking=!1,s.thinkingDots="",e.message="",void a();s.thinkingDots+=".",s.thinkingDots.length>3&&(s.thinkingDots=""),e.message="思考中"+s.thinkingDots},i=setInterval(o,n);t.addEventListener("abort",(function(){clearInterval(i),s.isThinking=!1,s.thinkingDots="",e.message="",a()}))})));case 3:case"end":return a.stop()}}),a)})))()})),"handleResponse",(function(e,t){var s=this;return Object(c["a"])(Object(r["a"])().mark((function a(){var n,o,i;return Object(r["a"])().wrap((function(a){while(1)switch(a.prev=a.next){case 0:return n=e.data.answer,t.messageType=n,t.message="",o=n,i="",s.minioUrls&&s.minioUrls.length>0&&(i="\n\n<div class='source-section'><h3>相关资料来源:</h3><ol>",s.minioUrls.forEach((function(e,t){i+='<li><a href="'.concat(e.url,'" target="_blank" class="source-link">').concat(e.object_name,"</a></li>")})),i+="</ol></div>"),console.log(o),a.next=9,s.typeMessage(t,o);case 9:i&&(t.message+=i,t.html=s.renderMarkdown(t.message));case 10:case"end":return a.stop()}}),a)})))()})),"typeMessage",(function(e,t){var s=this;return new Promise((function(a){var n=30,o=0,i=function i(){o<t.length?(e.message+=t[o],o++,setTimeout(i,n)):(e.done=!0,e.html=s.renderMarkdown(e.message),a())};i()}))})),"renderMarkdown",(function(e){var t=new m.a({html:!0,breaks:!0,linkify:!0});t.renderer.rules.link_open=function(e,t,s,a,n){var o=e[t],i=o.attrIndex("href"),r=o.attrs[i][1];return'<span class="custom-link" data-href="'.concat(r,'">')},t.renderer.rules.link_close=function(){return"</span>"};var s=t.render(e);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),s})),"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),a=this.userInput.slice(t);this.userInput=s+"\n"+a,this.$nextTick((function(){e.target.selectionStart=t+1,e.target.selectionEnd=t+1}))}}else e.preventDefault(),this.sendMessage()})),Object(i["a"])(Object(i["a"])(a,"beforeDestroy",(function(){this.websocket&&this.websocket.close()})),"init",(function(){var e=this;Object(p["G"])().then((function(t){200===t.status&&(e.currentChat_id=t.data.id)}))}))),updated:function(){var e=this.$el.querySelector(".messages");e.scrollTop=e.scrollHeight}}),b=v,w=(s("54a6"),s("2877")),k=Object(w["a"])(b,n,o,!1,null,"06083303",null);t["default"]=k.exports},d945:function(e,t,s){}}]);
|