明树Git Lab

Commit 5d7b9c51 authored by yangyajing's avatar yangyajing

改为流式请求,监听滚动事件获取分页数据

parent 1f65507d
$(function () { $(function () {
// 判断是否已授权
let openId = ""; let openId = "";
let question = ""; let question = "";
let answer = ""; let answer = "";
let page = 1;
let pageSize = 10;
let havePage = true;
// 判断是否已授权
function checkCode () { function checkCode () {
let searchCode = new URLSearchParams(location.search).get("code"); let searchCode = new URLSearchParams(location.search).get("code");
if (searchCode) { if (searchCode) {
...@@ -19,7 +22,6 @@ $(function () { ...@@ -19,7 +22,6 @@ $(function () {
}) })
// 获取问答记录 // 获取问答记录
let page = 1;
function getList () { function getList () {
$.ajax({ $.ajax({
url: "http://deepseek.bridata.com/api/question/getQuesList", url: "http://deepseek.bridata.com/api/question/getQuesList",
...@@ -27,7 +29,7 @@ $(function () { ...@@ -27,7 +29,7 @@ $(function () {
contentType: "application/json", contentType: "application/json",
data: JSON.stringify({ data: JSON.stringify({
page: page, page: page,
pageSize: 5, pageSize: pageSize,
openid: openId openid: openId
}), }),
dataType: "json", dataType: "json",
...@@ -46,7 +48,11 @@ $(function () { ...@@ -46,7 +48,11 @@ $(function () {
}); });
$('.conversation-wrap').html(html + $('.conversation-wrap').html()); $('.conversation-wrap').html(html + $('.conversation-wrap').html());
scrollBottom(); scrollBottom();
havePage = conversationList.length === pageSize;
} }
},
error: function () {
alert("网络连接失败");
} }
}) })
} }
...@@ -65,6 +71,9 @@ $(function () { ...@@ -65,6 +71,9 @@ $(function () {
openId = res.data.openid; openId = res.data.openid;
getList(); getList();
} }
},
error: function () {
alert("网络连接失败");
} }
}) })
} }
...@@ -74,43 +83,122 @@ $(function () { ...@@ -74,43 +83,122 @@ $(function () {
event.preventDefault(); event.preventDefault();
question = $(this).val(); question = $(this).val();
if (question) { if (question) {
$('.conversation-loading').show(); async function handleAsk () {
$(this).attr("disabled", true); try {
$.ajax({ const response = await fetch("https://dashscope.aliyuncs.com/api/v1/apps/6de1065c75074ee1a11238ab90c1aa34/completion", {
url: "https://dashscope.aliyuncs.com/api/v1/apps/6de1065c75074ee1a11238ab90c1aa34/completion", body: JSON.stringify({
type: "post",
timeout: 1800000,
headers: {
"Authorization": "Bearer sk-0ff2fc43671f4ed28dd7c80289da04e7",
"Content-Type": "application/json"
},
contentType: "application/json",
data: JSON.stringify({
input: { input: {
prompt: question prompt: question,
stream: true
}, },
parameters: {}, parameters: {},
debug: {} debug: {}
}), }),
dataType: "json", method: "post",
success: (res) => { headers: {
answer = res.output.text; "Authorization": "Bearer sk-0ff2fc43671f4ed28dd7c80289da04e7",
"Content-Type": "application/json",
"X-DashScope-SSE": "enable"
},
credentials: "omit",
mode: "cors"
});
if (response.status == 200) {
const reader = response.body.getReader();
const decoder = new TextDecoder();
$("#question-input").val("").attr("disabled", false);
while (true) {
const { value, done } = await reader.read();
function transformValue (val) {
const string = decoder.decode(val);
const lines = string.split('\n');
const result = {};
lines.forEach(line => {
const [k, v] = line.split(':');
if (k && v) {
if (k === 'data') {
result[k] = JSON.parse(line.slice(line.indexOf(":") + 1));
} else {
result[k] = v;
}
}
});
return result;
}
const result = transformValue(value);
if (done) {
$('.conversation-loading').hide();
saveConversation();
break;
}
answer = "";
if (result.data && result.data.output && result.data.output.text) {
answer = result.data.output.text;
}
$(".conversation-item").eq($(".conversation-item").length - 1).find(".answer-data").html(answer);
scrollBottom();
}
} else {
$(".conversation-item").eq($(".conversation-item").length - 1).find(".answer-data").html("网络连接失败");
$("#question-input").val("").attr("disabled", false);
$('.conversation-loading').hide();
}
} catch (err) {
$(".conversation-item").eq($(".conversation-item").length - 1).find(".answer-data").html("网络连接失败");
$("#question-input").val("").attr("disabled", false);
$('.conversation-loading').hide();
}
}
// 创建对话框
let div = document.createElement("div"); let div = document.createElement("div");
div.className = "conversation-item"; div.className = "conversation-item";
div.innerHTML = `<div class="conversation-item"> div.innerHTML = `<div class="conversation-question">
<div class="conversation-question">
<div class="question-data">${question}</div> <div class="question-data">${question}</div>
</div> </div>
<div class="conversation-answer"> <div class="conversation-answer">
<div class="answer-data">${answer}</div> <div class="answer-data"></div>
</div>`; </div>`;
$('.conversation-wrap')[0].insertBefore(div, $('.conversation-loading')[0]); $('.conversation-wrap')[0].insertBefore(div, $('.conversation-loading')[0]);
$(this).val(""); $('.conversation-loading').show();
$('.conversation-loading').hide(); $(this).attr("disabled", true);
scrollBottom(); handleAsk();
saveConversation(); // $.ajax({
} // url: "https://dashscope.aliyuncs.com/api/v1/apps/6de1065c75074ee1a11238ab90c1aa34/completion",
}) // type: "post",
// timeout: 1800000,
// headers: {
// "Authorization": "Bearer sk-0ff2fc43671f4ed28dd7c80289da04e7",
// "Content-Type": "application/json",
// "X-DashScope-SSE": "enable"
// },
// contentType: "application/json",
// data: JSON.stringify({
// input: {
// prompt: question,
// stream: true
// },
// parameters: {},
// debug: {}
// }),
// dataType: "json",
// success: (res) => {
// answer = res.output.text;
// let div = document.createElement("div");
// div.className = "conversation-item";
// div.innerHTML = `<div class="conversation-item">
// <div class="conversation-question">
// <div class="question-data">${question}</div>
// </div>
// <div class="conversation-answer">
// <div class="answer-data">${answer}</div>
// </div>`;
// $('.conversation-wrap')[0].insertBefore(div, $('.conversation-loading')[0]);
// $(this).val("");
// $('.conversation-loading').hide();
// scrollBottom();
// // saveConversation();
// }
// })
} }
} }
}); });
...@@ -137,4 +225,11 @@ $(function () { ...@@ -137,4 +225,11 @@ $(function () {
let content = $(".conversation-wrap")[0]; let content = $(".conversation-wrap")[0];
content.scrollTo({ top: content.scrollHeight, behavior: "smooth" }); content.scrollTo({ top: content.scrollHeight, behavior: "smooth" });
} }
// 监听滚动事件,获取分页数据
$(".conversation-wrap").on("scroll", function () {
if ($(this)[0].scrollTop === 0 && havePage) {
page++;
getList();
}
})
}) })
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment