chunk-ec55d346.b1edb4a7.js 10 KB

1
  1. (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-ec55d346"],{"383b":function(e,t,s){"use strict";s("536a")},"536a":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",domProps:{innerHTML:e._s(e.renderMarkdown(t.message))},on:{click:e.handleLinkClick}})])])})),0)]),s("div",{staticClass:"input-container"},[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("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=[],r=s("ade3"),i=s("c7eb"),c=s("1da1"),l=(s("99af"),s("fb6a"),s("b0c0"),s("e9c4"),s("b64b"),s("d3b7"),s("ac1f"),s("25f0"),s("5319"),s("498a"),s("159b"),s("c3b3")),u=s("ecd9"),d=s("d4cd"),h=s.n(d),g=s("4ec3"),m=s("db6a"),f=s("bc3a"),p=s.n(f),b=(new h.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:""}},mounted:function(){var e=this;if(localStorage.removeItem("AIData"),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(g["c"])().then((function(t){200===t.status&&(e.wsUrl=t.data.url,e.tweaks=t.data.tweaks)}));this.init()},methods:(n={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):"",o=encodeURIComponent(n),r=encodeURIComponent(a),i="#/preview?fileName=".concat(o,"&fileExtension=").concat(r);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(r["a"])(Object(r["a"])(Object(r["a"])(Object(r["a"])(Object(r["a"])(Object(r["a"])(Object(r["a"])(Object(r["a"])(Object(r["a"])(Object(r["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,o,r,c,l,u,d;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("http://183.195.216.54:8084","/chatbot/chat"),n=e.userInput.trim(),!n){t.next=45;break}return n=n.replace(/(\r\n|\r|\n)/g," \n"),e.messages.push({time:Date.now(),message:n,messageType:"TEXT",user:"user",done:!0}),e.userInput="",a={user:"bot",messageType:"TEXT",message:"",html:"",time:Date.now(),done:!1},e.messages.push(a),o=e.simulateThinking(a),t.prev=14,t.next=17,fetch("".concat(s),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:n,chat_config_id:"3",user_id:e.phone,session_id:e.session_id||""})});case 17:return r=t.sent,t.next=20,r.json();case 20:if(c=t.sent,e.session_id=c.data.session_id,console.log(c),200===c.code){t.next=28;break}return t.next=26,r.text();case 26:throw l=t.sent,new Error("HTTP error! status: ".concat(r.status,", message: ").concat(l));case 28:return t.next=30,o;case 30:if("ai"===e.$route.name){t.next=37;break}return u=c.data.milvus_ids,e.idArray=u,d={ids:e.idArray},console.log("ID Object:",d),t.next=37,e.getMinioUrls(d);case 37:e.handleResponse(c,a),t.next=45;break;case 40:t.prev=40,t.t0=t["catch"](14),console.error("Error sending message:",t.t0),a.done=!0,a.message="抱歉,发生了错误,请稍后再试。";case 45:case"end":return t.stop()}}),t,null,[[14,40]])})))()})),"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,p.a.post("http://58.246.234.210:8084/milvus/getMinioURl",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){var t=this;return Object(c["a"])(Object(i["a"])().mark((function s(){var n,a,o,r;return Object(i["a"])().wrap((function(s){while(1)switch(s.prev=s.next){case 0:return t.isThinking=!0,n=1e3*Math.random()+500,a=200,o=function(){t.thinkingDots+=".",t.thinkingDots.length>3&&(t.thinkingDots=""),e.message=t.thinkingDots},r=setInterval(o,a),s.next=7,new Promise((function(e){return setTimeout(e,n)}));case 7:clearInterval(r),t.isThinking=!1,t.thinkingDots="",e.message="";case 11:case"end":return s.stop()}}),s)})))()})),"handleResponse",(function(e,t){var s=this;return Object(c["a"])(Object(i["a"])().mark((function n(){var a,o,r;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="",o=a,r="","ai"!==s.$route.name&&s.minioUrls&&s.minioUrls.length>0&&(r="\n\n<div class='source-section'><h3>相关资料来源:</h3><ol>",s.minioUrls.forEach((function(e,t){r+='<li><a href="'.concat(e.url,'" target="_blank" class="source-link">').concat(e.object_name,"</a></li>")})),r+="</ol></div>"),n.next=8,s.typeMessage(t,o);case 8:r&&(t.message+=r,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,o=0,r=function r(){o<t.length?(e.message+=t[o],o++,setTimeout(r,a)):(e.done=!0,e.html=s.renderMarkdown(e.message),n())};r()}))})),"renderMarkdown",(function(e){var t=new h.a({html:!0,breaks:!0,linkify:!0});t.renderer.rules.link_open=function(e,t,s,n,a){var o=e[t],r=o.attrIndex("href"),i=o.attrs[r][1];return'<span class="custom-link" data-href="'.concat(i,'">')},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),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(r["a"])(Object(r["a"])(n,"beforeDestroy",(function(){this.websocket&&this.websocket.close()})),"init",(function(){var e=this;Object(m["B"])().then((function(t){200===t.status&&(e.currentChat_id=t.data.id)}))}))),updated:function(){var e=this.$el.querySelector(".messages");e.scrollTop=e.scrollHeight}}),v=b,w=(s("383b"),s("2877")),k=Object(w["a"])(v,a,o,!1,null,"8b517da6",null);t["default"]=k.exports}}]);