|
@@ -368,6 +368,7 @@
|
|
|
try{
|
|
try{
|
|
|
var ctrl=streamAbort?streamAbort:new AbortController();
|
|
var ctrl=streamAbort?streamAbort:new AbortController();
|
|
|
var r=await fetch(endpoint,{method:'POST',headers:authHeaders(),body:body,signal:ctrl.signal});
|
|
var r=await fetch(endpoint,{method:'POST',headers:authHeaders(),body:body,signal:ctrl.signal});
|
|
|
|
|
+ if(r.status===401){showLoginModal();aiDiv.classList.remove('streaming');STREAMING=false;resetSendBtn();contentDiv.innerHTML=md2html('请先登录后再提问');return}
|
|
|
if(!r.ok){contentDiv.innerHTML=md2html('请求失败: HTTP '+r.status);aiDiv.classList.remove('streaming');STREAMING=false;resetSendBtn();return}
|
|
if(!r.ok){contentDiv.innerHTML=md2html('请求失败: HTTP '+r.status);aiDiv.classList.remove('streaming');STREAMING=false;resetSendBtn();return}
|
|
|
sourcesData=[];
|
|
sourcesData=[];
|
|
|
var reader=r.body.getReader(),decoder=new TextDecoder(),buffer='',fullText='',eventType='';
|
|
var reader=r.body.getReader(),decoder=new TextDecoder(),buffer='',fullText='',eventType='';
|
|
@@ -460,7 +461,6 @@
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
window.send=function(){
|
|
window.send=function(){
|
|
|
- if(!TOKEN){showLoginModal();return}
|
|
|
|
|
var input=document.getElementById('userInput'),text=input.value.trim();
|
|
var input=document.getElementById('userInput'),text=input.value.trim();
|
|
|
var hasMedia=!!pendingMedia;
|
|
var hasMedia=!!pendingMedia;
|
|
|
if(!text&&!hasMedia)return;input.value='';if(STREAMING)return;
|
|
if(!text&&!hasMedia)return;input.value='';if(STREAMING)return;
|
|
@@ -521,7 +521,8 @@
|
|
|
|
|
|
|
|
window.loadDrugDetailBySrc=async function(drugName){
|
|
window.loadDrugDetailBySrc=async function(drugName){
|
|
|
try{
|
|
try{
|
|
|
- var r=await fetch(API_BASE+'/api/v1/drug/search?keyword='+encodeURIComponent(drugName)+'&page_size=10',{headers:authHeaders()});
|
|
|
|
|
|
|
+ var r=await fetch(API_BASE+'/api/v1/drug/search?keyword='+encodeURIComponent(drugName)+'&pageSize=10',{headers:authHeaders()});
|
|
|
|
|
+ if(r.status===401){showLoginModal();return}
|
|
|
var d=await r.json();var items=d.items||d.data||[];
|
|
var d=await r.json();var items=d.items||d.data||[];
|
|
|
// 2025年版优先,再精确匹配
|
|
// 2025年版优先,再精确匹配
|
|
|
items.sort(function(a,b){
|
|
items.sort(function(a,b){
|
|
@@ -539,9 +540,11 @@
|
|
|
var ALL_DRUGS=[],drugPage=1,drugTotalPages=1,drugPageSize=20,drugKeyword='';
|
|
var ALL_DRUGS=[],drugPage=1,drugTotalPages=1,drugPageSize=20,drugKeyword='';
|
|
|
async function loadDrugList(page){
|
|
async function loadDrugList(page){
|
|
|
page=page||1;drugPage=page;
|
|
page=page||1;drugPage=page;
|
|
|
- var url=API_BASE+'/api/v1/drug/search?page='+page+'&page_size='+drugPageSize;
|
|
|
|
|
|
|
+ var url=API_BASE+'/api/v1/drug/search?page='+page+'&pageSize='+drugPageSize;
|
|
|
if(drugKeyword) url+='&keyword='+encodeURIComponent(drugKeyword);
|
|
if(drugKeyword) url+='&keyword='+encodeURIComponent(drugKeyword);
|
|
|
- try{var r=await fetch(url,{headers:authHeaders()});var d=await r.json();
|
|
|
|
|
|
|
+ try{var r=await fetch(url,{headers:authHeaders()});
|
|
|
|
|
+ if(r.status===401){showLoginModal();return}
|
|
|
|
|
+ var d=await r.json();
|
|
|
ALL_DRUGS=d.items||d.data||[];drugTotalPages=d.total_pages||1;
|
|
ALL_DRUGS=d.items||d.data||[];drugTotalPages=d.total_pages||1;
|
|
|
renderDrugCards(ALL_DRUGS);
|
|
renderDrugCards(ALL_DRUGS);
|
|
|
}catch(e){ALL_DRUGS=[];renderDrugCards([])}
|
|
}catch(e){ALL_DRUGS=[];renderDrugCards([])}
|
|
@@ -581,6 +584,7 @@
|
|
|
window.loadDrugDetail=async function(drugId){
|
|
window.loadDrugDetail=async function(drugId){
|
|
|
try{
|
|
try{
|
|
|
var r=await fetch(API_BASE+'/api/v1/drug/'+encodeURIComponent(drugId),{headers:authHeaders()});
|
|
var r=await fetch(API_BASE+'/api/v1/drug/'+encodeURIComponent(drugId),{headers:authHeaders()});
|
|
|
|
|
+ if(r.status===401){showLoginModal();return}
|
|
|
var d=await r.json();var drug=d.data||d;
|
|
var d=await r.json();var drug=d.data||d;
|
|
|
var dd=document.getElementById('tabDrugs');
|
|
var dd=document.getElementById('tabDrugs');
|
|
|
var topBar='<div style="display:flex;align-items:center;gap:10px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e0e0e0">';
|
|
var topBar='<div style="display:flex;align-items:center;gap:10px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e0e0e0">';
|