st-comp 0.0.251 → 0.0.252

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";const r=require("./index-5befc414.cjs");require("./base-ef747d02.cjs");require("vue");require("./el-button-974ff9e9.cjs");require("./index-33f80550.cjs");require("./index-f1c702f6.cjs");require("./use-global-config-c80f33a4.cjs");require("./use-form-common-props-d3ed62c6.cjs");require("./index-9780a537.cjs");require("./index-bb833443.cjs");require("./index-37b8d3c6.cjs");require("./index-eea0bcb3.cjs");require("./el-tag-6d8e653e.cjs");require("./index-28e03bad.cjs");require("./el-select-a11f33e8.cjs");require("./el-popper-2d3914e4.cjs");require("./index-e8eeea22.cjs");require("./el-scrollbar-bc3f790d.cjs");require("./index-6b99def3.cjs");require("./castArray-35947698.cjs");require("./index-7dce9f59.cjs");require("./scroll-b108dabd.cjs");require("./debounce-62f5b6e8.cjs");require("./vnode-b906ae6d.cjs");require("./el-input-fa18ef84.cjs");require("./typescript-b63f8e83.cjs");require("./el-tooltip-0ea8fbf8.cjs");require("./index-8901a38c.cjs");require("./VarietySelect-5c845562.cjs");require("./el-autocomplete-b59eb529.cjs");require("./_plugin-vue_export-helper-f246444f.cjs");require("./el-message-0ea8fbf8.cjs");require("./index-6ca95c8a.cjs");require("./config-provider-2ae47cc8.cjs");const i={install(e){e.component("st-monacoEditor",r.MonacoEditor)}};module.exports=i;
1
+ "use strict";const r=require("./index-40f05e2c.cjs");require("./base-ef747d02.cjs");require("vue");require("./el-button-974ff9e9.cjs");require("./index-33f80550.cjs");require("./index-f1c702f6.cjs");require("./use-global-config-c80f33a4.cjs");require("./use-form-common-props-d3ed62c6.cjs");require("./index-9780a537.cjs");require("./index-bb833443.cjs");require("./index-37b8d3c6.cjs");require("./index-eea0bcb3.cjs");require("./el-tag-6d8e653e.cjs");require("./index-28e03bad.cjs");require("./el-select-a11f33e8.cjs");require("./el-popper-2d3914e4.cjs");require("./index-e8eeea22.cjs");require("./el-scrollbar-bc3f790d.cjs");require("./index-6b99def3.cjs");require("./castArray-35947698.cjs");require("./index-7dce9f59.cjs");require("./scroll-b108dabd.cjs");require("./debounce-62f5b6e8.cjs");require("./vnode-b906ae6d.cjs");require("./el-input-fa18ef84.cjs");require("./typescript-b63f8e83.cjs");require("./el-tooltip-0ea8fbf8.cjs");require("./index-8901a38c.cjs");require("./VarietySelect-5c845562.cjs");require("./el-autocomplete-b59eb529.cjs");require("./_plugin-vue_export-helper-f246444f.cjs");require("./el-message-0ea8fbf8.cjs");require("./index-6ca95c8a.cjs");require("./config-provider-2ae47cc8.cjs");const i={install(e){e.component("st-monacoEditor",r.MonacoEditor)}};module.exports=i;
@@ -1,4 +1,4 @@
1
- import { M as t } from "./index-8f9d0d17.js";
1
+ import { M as t } from "./index-8a54ceeb.js";
2
2
  import "./base-29f73b05.js";
3
3
  import "vue";
4
4
  import "./el-button-e2c63c08.js";
@@ -1,5 +1,6 @@
1
- "use strict";const u=require("./base-ef747d02.cjs"),I=require("./el-dialog-1b185570.cjs");require("./el-overlay-ea65cb05.cjs");const C=require("./el-button-974ff9e9.cjs"),z=require("./el-input-fa18ef84.cjs"),e=require("vue"),N=require("./dayjs.min-2c20abe6.cjs"),S=require("./index-33f80550.cjs"),T=require("./_plugin-vue_export-helper-f246444f.cjs"),q=require("./index-6ca95c8a.cjs"),b=require("./use-form-common-props-d3ed62c6.cjs");require("./index-28e03bad.cjs");require("./index-9780a537.cjs");require("./index-bb833443.cjs");require("./index-f1c702f6.cjs");require("./vnode-b906ae6d.cjs");require("./scroll-b108dabd.cjs");require("./use-global-config-c80f33a4.cjs");require("./index-37b8d3c6.cjs");require("./index-eea0bcb3.cjs");require("./typescript-b63f8e83.cjs");require("./index-7dce9f59.cjs");require("./config-provider-2ae47cc8.cjs");const H=u.buildProps({size:{type:[Number,String],values:b.componentSizes,default:"",validator:s=>u.isNumber(s)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:b.iconPropType},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:u.definePropType(String),default:"cover"}}),M={error:s=>s instanceof Event},j=e.defineComponent({name:"ElAvatar"}),R=e.defineComponent({...j,props:H,emits:M,setup(s,{emit:g}){const d=s,a=u.useNamespace("avatar"),p=e.ref(!1),r=e.computed(()=>{const{size:t,icon:l,shape:o}=d,n=[a.b()];return u.isString(t)&&n.push(a.m(t)),l&&n.push(a.m("icon")),o&&n.push(a.m(o)),n}),i=e.computed(()=>{const{size:t}=d;return u.isNumber(t)?a.cssVarBlock({size:u.addUnit(t)||""}):void 0}),m=e.computed(()=>({objectFit:d.fit}));e.watch(()=>d.src,()=>p.value=!1);function f(t){p.value=!0,g("error",t)}return(t,l)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(r)),style:e.normalizeStyle(e.unref(i))},[(t.src||t.srcSet)&&!p.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.src,alt:t.alt,srcset:t.srcSet,style:e.normalizeStyle(e.unref(m)),onError:f},null,44,["src","alt","srcset"])):t.icon?(e.openBlock(),e.createBlock(e.unref(S.ElIcon),{key:1},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.icon)))]),_:1})):e.renderSlot(t.$slots,"default",{key:2})],6))}});var $=u._export_sfc(R,[["__file","avatar.vue"]]);const D=u.withInstall($);const L=async({appId:s,apiKey:g,value:d,callback:a})=>{var p;try{const r=await fetch(`https://dashscope.aliyuncs.com/api/v1/apps/${s}/completion`,{method:"POST",body:JSON.stringify({input:{prompt:d},parameters:{incremental_output:"true"},debug:{}}),headers:{Authorization:`Bearer ${g}`,"Content-Type":"application/json","X-DashScope-SSE":"enable"}});if(!r.ok||!r.body)throw new Error("请求失败");const i=r.body.getReader(),m=new TextDecoder;for(;;){const{done:f,value:t}=await i.read();if(f&&a){a("finish","");break}try{const l=m.decode(t,{stream:!0}),o=JSON.parse(l.split(`
2
- `)[3].substr(5)),n=(p=o==null?void 0:o.output)==null?void 0:p.text;n&&a&&a("message",n)}catch{}}}catch(r){console.error(r)}};const x=s=>(e.pushScopeId("data-v-46407344"),s=s(),e.popScopeId(),s),P={class:"chat-container"},K={class:"avatar"},F={class:"message-content"},O={class:"message-text"},J={class:"message-time"},U={key:0,class:"message-item assistant"},X={class:"avatar"},G=x(()=>e.createElementVNode("div",{class:"message-content"},[e.createElementVNode("div",{class:"typing-indicator"},[e.createElementVNode("span"),e.createElementVNode("span"),e.createElementVNode("span")])],-1)),Q={class:"input-area"},W={class:"input-actions"},Y=x(()=>e.createElementVNode("div",{class:"input-hint"},[e.createElementVNode("span",null,"Ctrl + Enter 发送")],-1)),Z={__name:"index",props:{defaultMessage:{type:String,default:`你好呀!我是你的品种池AI助手,会根据您的自然语言去进行品种的条件查询
1
+ "use strict";const v=require("./base-ef747d02.cjs"),A=require("./el-dialog-1b185570.cjs");require("./el-overlay-ea65cb05.cjs");const C=require("./el-button-974ff9e9.cjs"),z=require("./el-input-fa18ef84.cjs"),e=require("vue"),w=require("./dayjs.min-2c20abe6.cjs"),k=require("./index-33f80550.cjs"),T=require("./_plugin-vue_export-helper-f246444f.cjs"),b=require("./index-6ca95c8a.cjs"),q=require("./use-form-common-props-d3ed62c6.cjs");require("./index-28e03bad.cjs");require("./index-9780a537.cjs");require("./index-bb833443.cjs");require("./index-f1c702f6.cjs");require("./vnode-b906ae6d.cjs");require("./scroll-b108dabd.cjs");require("./use-global-config-c80f33a4.cjs");require("./index-37b8d3c6.cjs");require("./index-eea0bcb3.cjs");require("./typescript-b63f8e83.cjs");require("./index-7dce9f59.cjs");require("./config-provider-2ae47cc8.cjs");const H=v.buildProps({size:{type:[Number,String],values:q.componentSizes,default:"",validator:s=>v.isNumber(s)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:q.iconPropType},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:v.definePropType(String),default:"cover"}}),M={error:s=>s instanceof Event},D=e.defineComponent({name:"ElAvatar"}),j=e.defineComponent({...D,props:H,emits:M,setup(s,{emit:_}){const p=s,n=v.useNamespace("avatar"),c=e.ref(!1),a=e.computed(()=>{const{size:t,icon:f,shape:l}=p,i=[n.b()];return v.isString(t)&&i.push(n.m(t)),f&&i.push(n.m("icon")),l&&i.push(n.m(l)),i}),o=e.computed(()=>{const{size:t}=p;return v.isNumber(t)?n.cssVarBlock({size:v.addUnit(t)||""}):void 0}),u=e.computed(()=>({objectFit:p.fit}));e.watch(()=>p.src,()=>c.value=!1);function r(t){c.value=!0,_("error",t)}return(t,f)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(a)),style:e.normalizeStyle(e.unref(o))},[(t.src||t.srcSet)&&!c.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.src,alt:t.alt,srcset:t.srcSet,style:e.normalizeStyle(e.unref(u)),onError:r},null,44,["src","alt","srcset"])):t.icon?(e.openBlock(),e.createBlock(e.unref(k.ElIcon),{key:1},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.icon)))]),_:1})):e.renderSlot(t.$slots,"default",{key:2})],6))}});var O=v._export_sfc(j,[["__file","avatar.vue"]]);const P=v.withInstall(O);const $=async({appId:s,apiKey:_,value:p,callback:n})=>{var c;try{const a=await fetch(`https://dashscope.aliyuncs.com/api/v1/apps/${s}/completion`,{method:"POST",body:JSON.stringify({input:{prompt:p},parameters:{incremental_output:"true"},debug:{}}),headers:{Authorization:`Bearer ${_}`,"Content-Type":"application/json","X-DashScope-SSE":"enable"}});if(!a.ok)throw new Error(`HTTP ${a.status}`);const o=a.body.getReader(),u=new TextDecoder;let r="";for(;;){const{done:t,value:f}=await o.read();if(t){r.trim()&&R(r,n),n("finish","");break}r+=u.decode(f,{stream:!0});let l;for(;(l=r.indexOf(`
2
+ `))!==-1;){const i=r.substring(0,l).trim();if(r=r.substring(l+1),i.startsWith("data:")){const E=i.substring(5).trim();if(E&&E!=="[DONE]")try{const d=JSON.parse(E),g=(c=d==null?void 0:d.output)==null?void 0:c.text;g&&n&&n("message",g)}catch{console.debug("等待完整数据...")}}}}}catch(a){console.error("流式请求失败:",a),n("error",a.message)}};function R(s,_){var n;const p=s.split(`
3
+ `);for(const c of p)if(c.startsWith("data:")){const a=c.substring(5).trim();if(a&&a!=="[DONE]")try{const o=JSON.parse(a),u=(n=o==null?void 0:o.output)==null?void 0:n.text;u&&_&&_("message",u)}catch{}}}const x=s=>(e.pushScopeId("data-v-46407344"),s=s(),e.popScopeId(),s),L={class:"chat-container"},K={class:"avatar"},F={class:"message-content"},J={class:"message-text"},U={class:"message-time"},W={key:0,class:"message-item assistant"},X={class:"avatar"},G=x(()=>e.createElementVNode("div",{class:"message-content"},[e.createElementVNode("div",{class:"typing-indicator"},[e.createElementVNode("span"),e.createElementVNode("span"),e.createElementVNode("span")])],-1)),Q={class:"input-area"},Y={class:"input-actions"},Z=x(()=>e.createElementVNode("div",{class:"input-hint"},[e.createElementVNode("span",null,"Ctrl + Enter 发送")],-1)),ee={__name:"index",props:{defaultMessage:{type:String,default:`你好呀!我是你的品种池AI助手,会根据您的自然语言去进行品种的条件查询
3
4
 
4
5
  示例:
5
- 帮我查A股科创板下品种转价差上证50并且总市值大于1千万, 按照总市值升序进行排序`}},emits:["callBack"],setup(s,{expose:g,emit:d}){const a=d,p=s,r=e.ref(!1),i=e.ref(!1),m=e.ref(!1),f=e.ref(null),t=e.ref([]),l=e.ref(""),o=e.ref(null),n=e.ref(-1),w=async()=>{const E=l.value.trim();if(!E)return q.ElMessage.warning("请输入消息内容");if(i.value)return;t.value.push({role:"user",time:N.dayjs().format("HH:mm"),content:E}),l.value="",await y();const _={role:"assistant",time:N.dayjs().format("HH:mm"),content:""};t.value.push(_),n.value=t.value.length-1,o.value=_,await y(),i.value=!0,m.value=!0;let v="";try{await L({appId:"9e54d112acfe4531bd1fc4fee8827fef",apiKey:"sk-d995eb26a4334bdeb2ccb4cbfaf51de8",value:E,callback:(V,h)=>{if(V==="message")v+=h,o.value&&(o.value.content=v,y());else if(V==="finish"){m.value=!1,i.value=!1,console.log(v);try{const c=JSON.parse(v);a("callBack",c)}catch{a("callBack",v)}o.value=null,n.value=-1}}})}catch(k){q.ElMessage.error(`AI响应异常: ${k}`),console.error("AI响应异常:",k),n.value!==-1&&(t.value.splice(n.value,1),o.value=null,n.value=-1),t.value.push({role:"assistant",time:N.dayjs().format("HH:mm"),content:"抱歉,AI服务响应异常,请稍后重试。"}),await y(),i.value=!1,m.value=!1}},y=async()=>{await e.nextTick(),f.value&&(f.value.scrollTop=f.value.scrollHeight)};return e.onMounted(()=>{t.value.push({role:"assistant",time:N.dayjs().format("HH:mm"),content:p.defaultMessage})}),e.watch(()=>t.value,()=>{y()},{deep:!0}),g({open:E=>{r.value=!0,e.nextTick(()=>{y()})}}),(E,_)=>{const v=D,k=z.ElInput,B=C.ElButton,V=I.ElDialog;return e.openBlock(),e.createBlock(V,{class:"ai-dialog",modelValue:r.value,"onUpdate:modelValue":_[1]||(_[1]=h=>r.value=h),title:"✨ 品种池参数解析AI助手",width:"500px",center:"",draggable:"",overflow:"",modal:!1,"modal-penetrable":!0},{default:e.withCtx(()=>{var h;return[e.createElementVNode("div",P,[e.createElementVNode("div",{ref_key:"messageListRef",ref:f,class:"message-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,(c,A)=>(e.openBlock(),e.createElementBlock("div",{key:A,class:e.normalizeClass(["message-item",c.role])},[c.content?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",K,[e.createVNode(v,{size:32,icon:c.role==="user"?e.unref(S.user_filled_default):e.unref(S.service_default)},null,8,["icon"])]),e.createElementVNode("div",F,[e.createElementVNode("div",O,e.toDisplayString(c.content),1),e.createElementVNode("div",J,e.toDisplayString(c.time),1)])],64)):e.createCommentVNode("",!0)],2))),128)),m.value&&!((h=o.value)!=null&&h.content)?(e.openBlock(),e.createElementBlock("div",U,[e.createElementVNode("div",X,[e.createVNode(v,{size:32,icon:e.unref(S.service_default)},null,8,["icon"])]),G])):e.createCommentVNode("",!0)],512),e.createElementVNode("div",Q,[e.createVNode(k,{class:"message-input",modelValue:l.value,"onUpdate:modelValue":_[0]||(_[0]=c=>l.value=c),type:"textarea",rows:4,autosize:{minRows:2,maxRows:4},placeholder:"输入您想查询的品种条件...",onKeydown:e.withKeys(e.withModifiers(w,["ctrl"]),["enter"])},null,8,["modelValue","onKeydown"]),e.createElementVNode("div",W,[Y,e.createVNode(B,{class:"send-btn",type:"primary",icon:e.unref(S.promotion_default),loading:i.value,onClick:w,round:""},{default:e.withCtx(()=>[e.createTextVNode(" 发送 ")]),_:1},8,["icon","loading"])])])])]}),_:1},8,["modelValue"])}}},ee=T._export_sfc(Z,[["__scopeId","data-v-46407344"]]),te={install(s){s.component("st-varietyAiHelper",ee)}};module.exports=te;
6
+ 帮我查A股科创板下品种转价差上证50并且总市值大于1千万, 按照总市值升序进行排序`}},emits:["callBack"],setup(s,{expose:_,emit:p}){const n=p,c=s,a=e.ref(!1),o=e.ref(!1),u=e.ref(!1),r=e.ref(null),t=e.ref([]),f=e.ref(""),l=e.ref(null),i=e.ref(-1),E=async()=>{const g=f.value.trim();if(!g)return b.ElMessage.warning("请输入消息内容");if(o.value)return;t.value.push({role:"user",time:w.dayjs().format("HH:mm"),content:g}),f.value="",await d();const y={role:"assistant",time:w.dayjs().format("HH:mm"),content:""};t.value.push(y),i.value=t.value.length-1,l.value=y,await d(),o.value=!0,u.value=!0;let h="";try{await $({appId:"9e54d112acfe4531bd1fc4fee8827fef",apiKey:"sk-d995eb26a4334bdeb2ccb4cbfaf51de8",value:g,callback:(V,N)=>{if(V==="message")h+=N,l.value&&(l.value.content=h,d());else if(V==="finish"){u.value=!1,o.value=!1,console.log(h);try{const m=JSON.parse(h);n("callBack",m)}catch{n("callBack",h)}l.value=null,i.value=-1}}})}catch(S){b.ElMessage.error(`AI响应异常: ${S}`),console.error("AI响应异常:",S),i.value!==-1&&(t.value.splice(i.value,1),l.value=null,i.value=-1),t.value.push({role:"assistant",time:w.dayjs().format("HH:mm"),content:"抱歉,AI服务响应异常,请稍后重试。"}),await d(),o.value=!1,u.value=!1}},d=async()=>{await e.nextTick(),r.value&&(r.value.scrollTop=r.value.scrollHeight)};return e.onMounted(()=>{t.value.push({role:"assistant",time:w.dayjs().format("HH:mm"),content:c.defaultMessage})}),e.watch(()=>t.value,()=>{d()},{deep:!0}),_({open:g=>{a.value=!0,e.nextTick(()=>{d()})}}),(g,y)=>{const h=P,S=z.ElInput,B=C.ElButton,V=A.ElDialog;return e.openBlock(),e.createBlock(V,{class:"ai-dialog",modelValue:a.value,"onUpdate:modelValue":y[1]||(y[1]=N=>a.value=N),title:"✨ 品种池参数解析AI助手",width:"500px",center:"",draggable:"",overflow:"",modal:!1,"modal-penetrable":!0},{default:e.withCtx(()=>{var N;return[e.createElementVNode("div",L,[e.createElementVNode("div",{ref_key:"messageListRef",ref:r,class:"message-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,(m,I)=>(e.openBlock(),e.createElementBlock("div",{key:I,class:e.normalizeClass(["message-item",m.role])},[m.content?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",K,[e.createVNode(h,{size:32,icon:m.role==="user"?e.unref(k.user_filled_default):e.unref(k.service_default)},null,8,["icon"])]),e.createElementVNode("div",F,[e.createElementVNode("div",J,e.toDisplayString(m.content),1),e.createElementVNode("div",U,e.toDisplayString(m.time),1)])],64)):e.createCommentVNode("",!0)],2))),128)),u.value&&!((N=l.value)!=null&&N.content)?(e.openBlock(),e.createElementBlock("div",W,[e.createElementVNode("div",X,[e.createVNode(h,{size:32,icon:e.unref(k.service_default)},null,8,["icon"])]),G])):e.createCommentVNode("",!0)],512),e.createElementVNode("div",Q,[e.createVNode(S,{class:"message-input",modelValue:f.value,"onUpdate:modelValue":y[0]||(y[0]=m=>f.value=m),type:"textarea",rows:4,autosize:{minRows:2,maxRows:4},placeholder:"输入您想查询的品种条件...",onKeydown:e.withKeys(e.withModifiers(E,["ctrl"]),["enter"])},null,8,["modelValue","onKeydown"]),e.createElementVNode("div",Y,[Z,e.createVNode(B,{class:"send-btn",type:"primary",icon:e.unref(k.promotion_default),loading:o.value,onClick:E,round:""},{default:e.withCtx(()=>[e.createTextVNode(" 发送 ")]),_:1},8,["icon","loading"])])])])]}),_:1},8,["modelValue"])}}},te=T._export_sfc(ee,[["__scopeId","data-v-46407344"]]),se={install(s){s.component("st-varietyAiHelper",te)}};module.exports=se;
@@ -1,14 +1,14 @@
1
- import { b as F, p as P, e as q, u as X, c as G, n as Q, _ as W, w as Y } from "./base-29f73b05.js";
1
+ import { b as F, p as $, e as W, u as q, c as X, n as G, _ as Q, w as Y } from "./base-29f73b05.js";
2
2
  import { E as Z } from "./el-dialog-eedcfd3e.js";
3
3
  import "./el-overlay-1ee0338d.js";
4
4
  import { E as ee } from "./el-button-e2c63c08.js";
5
5
  import { E as te } from "./el-input-d47281da.js";
6
- import { defineComponent as j, ref as u, computed as z, watch as D, openBlock as p, createElementBlock as w, normalizeClass as O, unref as h, normalizeStyle as N, createBlock as T, withCtx as V, resolveDynamicComponent as se, renderSlot as ae, onMounted as oe, nextTick as C, createElementVNode as t, Fragment as M, renderList as ne, createVNode as I, toDisplayString as R, createCommentVNode as L, withKeys as re, withModifiers as ie, createTextVNode as le, pushScopeId as ce, popScopeId as ue } from "vue";
7
- import { d as x } from "./dayjs.min-8313b006.js";
8
- import { E as pe, u as de, s as $, p as me } from "./index-c2b9bbfd.js";
9
- import { _ as ve } from "./_plugin-vue_export-helper-dad06003.js";
10
- import { E as K } from "./index-f30561d3.js";
11
- import { k as fe, i as _e } from "./use-form-common-props-cb0ca65c.js";
6
+ import { defineComponent as L, ref as v, computed as T, watch as K, openBlock as _, createElementBlock as k, normalizeClass as j, unref as S, normalizeStyle as V, createBlock as z, withCtx as B, resolveDynamicComponent as se, renderSlot as ae, onMounted as oe, nextTick as C, createElementVNode as o, Fragment as M, renderList as ne, createVNode as I, toDisplayString as O, createCommentVNode as D, withKeys as re, withModifiers as ie, createTextVNode as le, pushScopeId as ce, popScopeId as ue } from "vue";
7
+ import { d as N } from "./dayjs.min-8313b006.js";
8
+ import { E as pe, u as de, s as P, p as me } from "./index-c2b9bbfd.js";
9
+ import { _ as fe } from "./_plugin-vue_export-helper-dad06003.js";
10
+ import { E as R } from "./index-f30561d3.js";
11
+ import { k as ve, i as _e } from "./use-form-common-props-cb0ca65c.js";
12
12
  import "./index-0f79095c.js";
13
13
  import "./index-8391a3df.js";
14
14
  import "./index-de24705f.js";
@@ -21,12 +21,12 @@ import "./index-657047bb.js";
21
21
  import "./typescript-7ae59c4c.js";
22
22
  import "./index-c71e37dc.js";
23
23
  import "./config-provider-7860903c.js";
24
- const he = F({
24
+ const ge = F({
25
25
  size: {
26
26
  type: [Number, String],
27
- values: fe,
27
+ values: ve,
28
28
  default: "",
29
- validator: (s) => P(s)
29
+ validator: (t) => $(t)
30
30
  },
31
31
  shape: {
32
32
  type: String,
@@ -43,107 +43,129 @@ const he = F({
43
43
  alt: String,
44
44
  srcSet: String,
45
45
  fit: {
46
- type: q(String),
46
+ type: W(String),
47
47
  default: "cover"
48
48
  }
49
- }), ye = {
50
- error: (s) => s instanceof Event
51
- }, ge = j({
49
+ }), he = {
50
+ error: (t) => t instanceof Event
51
+ }, ye = L({
52
52
  name: "ElAvatar"
53
- }), Se = /* @__PURE__ */ j({
54
- ...ge,
55
- props: he,
56
- emits: ye,
57
- setup(s, { emit: b }) {
58
- const d = s, a = X("avatar"), m = u(!1), r = z(() => {
59
- const { size: e, icon: i, shape: o } = d, n = [a.b()];
60
- return G(e) && n.push(a.m(e)), i && n.push(a.m("icon")), o && n.push(a.m(o)), n;
61
- }), c = z(() => {
53
+ }), Se = /* @__PURE__ */ L({
54
+ ...ye,
55
+ props: ge,
56
+ emits: he,
57
+ setup(t, { emit: g }) {
58
+ const d = t, s = q("avatar"), c = v(!1), a = T(() => {
59
+ const { size: e, icon: f, shape: i } = d, l = [s.b()];
60
+ return X(e) && l.push(s.m(e)), f && l.push(s.m("icon")), i && l.push(s.m(i)), l;
61
+ }), n = T(() => {
62
62
  const { size: e } = d;
63
- return P(e) ? a.cssVarBlock({
64
- size: Q(e) || ""
63
+ return $(e) ? s.cssVarBlock({
64
+ size: G(e) || ""
65
65
  }) : void 0;
66
- }), v = z(() => ({
66
+ }), u = T(() => ({
67
67
  objectFit: d.fit
68
68
  }));
69
- D(() => d.src, () => m.value = !1);
70
- function f(e) {
71
- m.value = !0, b("error", e);
69
+ K(() => d.src, () => c.value = !1);
70
+ function r(e) {
71
+ c.value = !0, g("error", e);
72
72
  }
73
- return (e, i) => (p(), w("span", {
74
- class: O(h(r)),
75
- style: N(h(c))
73
+ return (e, f) => (_(), k("span", {
74
+ class: j(S(a)),
75
+ style: V(S(n))
76
76
  }, [
77
- (e.src || e.srcSet) && !m.value ? (p(), w("img", {
77
+ (e.src || e.srcSet) && !c.value ? (_(), k("img", {
78
78
  key: 0,
79
79
  src: e.src,
80
80
  alt: e.alt,
81
81
  srcset: e.srcSet,
82
- style: N(h(v)),
83
- onError: f
84
- }, null, 44, ["src", "alt", "srcset"])) : e.icon ? (p(), T(h(pe), { key: 1 }, {
85
- default: V(() => [
86
- (p(), T(se(e.icon)))
82
+ style: V(S(u)),
83
+ onError: r
84
+ }, null, 44, ["src", "alt", "srcset"])) : e.icon ? (_(), z(S(pe), { key: 1 }, {
85
+ default: B(() => [
86
+ (_(), z(se(e.icon)))
87
87
  ]),
88
88
  _: 1
89
89
  })) : ae(e.$slots, "default", { key: 2 })
90
90
  ], 6));
91
91
  }
92
92
  });
93
- var we = /* @__PURE__ */ W(Se, [["__file", "avatar.vue"]]);
93
+ var we = /* @__PURE__ */ Q(Se, [["__file", "avatar.vue"]]);
94
94
  const be = Y(we);
95
- const Ee = async ({ appId: s, apiKey: b, value: d, callback: a }) => {
96
- var m;
95
+ const Ee = async ({ appId: t, apiKey: g, value: d, callback: s }) => {
96
+ var c;
97
97
  try {
98
- const r = await fetch(`https://dashscope.aliyuncs.com/api/v1/apps/${s}/completion`, {
98
+ const a = await fetch(`https://dashscope.aliyuncs.com/api/v1/apps/${t}/completion`, {
99
99
  method: "POST",
100
100
  body: JSON.stringify({
101
101
  input: { prompt: d },
102
- parameters: {
103
- incremental_output: "true"
104
- // 流式返回
105
- },
102
+ parameters: { incremental_output: "true" },
106
103
  debug: {}
107
104
  }),
108
105
  headers: {
109
- Authorization: `Bearer ${b}`,
106
+ Authorization: `Bearer ${g}`,
110
107
  "Content-Type": "application/json",
111
108
  "X-DashScope-SSE": "enable"
112
- // 流式输出
113
109
  }
114
110
  });
115
- if (!r.ok || !r.body)
116
- throw new Error("请求失败");
117
- const c = r.body.getReader(), v = new TextDecoder();
111
+ if (!a.ok)
112
+ throw new Error(`HTTP ${a.status}`);
113
+ const n = a.body.getReader(), u = new TextDecoder();
114
+ let r = "";
118
115
  for (; ; ) {
119
- const { done: f, value: e } = await c.read();
120
- if (f && a) {
121
- a("finish", "");
116
+ const { done: e, value: f } = await n.read();
117
+ if (e) {
118
+ r.trim() && ke(r, s), s("finish", "");
122
119
  break;
123
120
  }
124
- try {
125
- const i = v.decode(e, { stream: !0 }), o = JSON.parse(i.split(`
126
- `)[3].substr(5)), n = (m = o == null ? void 0 : o.output) == null ? void 0 : m.text;
127
- n && a && a("message", n);
128
- } catch {
121
+ r += u.decode(f, { stream: !0 });
122
+ let i;
123
+ for (; (i = r.indexOf(`
124
+ `)) !== -1; ) {
125
+ const l = r.substring(0, i).trim();
126
+ if (r = r.substring(i + 1), l.startsWith("data:")) {
127
+ const b = l.substring(5).trim();
128
+ if (b && b !== "[DONE]")
129
+ try {
130
+ const p = JSON.parse(b), h = (c = p == null ? void 0 : p.output) == null ? void 0 : c.text;
131
+ h && s && s("message", h);
132
+ } catch {
133
+ console.debug("等待完整数据...");
134
+ }
135
+ }
129
136
  }
130
137
  }
131
- } catch (r) {
132
- console.error(r);
138
+ } catch (a) {
139
+ console.error("流式请求失败:", a), s("error", a.message);
133
140
  }
134
141
  };
135
- const J = (s) => (ce("data-v-46407344"), s = s(), ue(), s), ke = { class: "chat-container" }, Ae = { class: "avatar" }, Ie = { class: "message-content" }, xe = { class: "message-text" }, ze = { class: "message-time" }, Te = {
142
+ function ke(t, g) {
143
+ var s;
144
+ const d = t.split(`
145
+ `);
146
+ for (const c of d)
147
+ if (c.startsWith("data:")) {
148
+ const a = c.substring(5).trim();
149
+ if (a && a !== "[DONE]")
150
+ try {
151
+ const n = JSON.parse(a), u = (s = n == null ? void 0 : n.output) == null ? void 0 : s.text;
152
+ u && g && g("message", u);
153
+ } catch {
154
+ }
155
+ }
156
+ }
157
+ const J = (t) => (ce("data-v-46407344"), t = t(), ue(), t), xe = { class: "chat-container" }, Ae = { class: "avatar" }, Ie = { class: "message-content" }, Ne = { class: "message-text" }, Te = { class: "message-time" }, ze = {
136
158
  key: 0,
137
159
  class: "message-item assistant"
138
- }, Ve = { class: "avatar" }, Be = /* @__PURE__ */ J(() => /* @__PURE__ */ t("div", { class: "message-content" }, [
139
- /* @__PURE__ */ t("div", { class: "typing-indicator" }, [
140
- /* @__PURE__ */ t("span"),
141
- /* @__PURE__ */ t("span"),
142
- /* @__PURE__ */ t("span")
160
+ }, Be = { class: "avatar" }, He = /* @__PURE__ */ J(() => /* @__PURE__ */ o("div", { class: "message-content" }, [
161
+ /* @__PURE__ */ o("div", { class: "typing-indicator" }, [
162
+ /* @__PURE__ */ o("span"),
163
+ /* @__PURE__ */ o("span"),
164
+ /* @__PURE__ */ o("span")
143
165
  ])
144
- ], -1)), He = { class: "input-area" }, Ne = { class: "input-actions" }, Ce = /* @__PURE__ */ J(() => /* @__PURE__ */ t("div", { class: "input-hint" }, [
145
- /* @__PURE__ */ t("span", null, "Ctrl + Enter 发送")
146
- ], -1)), Me = {
166
+ ], -1)), Ve = { class: "input-area" }, Ce = { class: "input-actions" }, Me = /* @__PURE__ */ J(() => /* @__PURE__ */ o("div", { class: "input-hint" }, [
167
+ /* @__PURE__ */ o("span", null, "Ctrl + Enter 发送")
168
+ ], -1)), Oe = {
147
169
  __name: "index",
148
170
  props: {
149
171
  defaultMessage: {
@@ -155,79 +177,79 @@ const J = (s) => (ce("data-v-46407344"), s = s(), ue(), s), ke = { class: "chat-
155
177
  }
156
178
  },
157
179
  emits: ["callBack"],
158
- setup(s, { expose: b, emit: d }) {
159
- const a = d, m = s, r = u(!1), c = u(!1), v = u(!1), f = u(null), e = u([]), i = u(""), o = u(null), n = u(-1), B = async () => {
160
- const E = i.value.trim();
161
- if (!E)
162
- return K.warning("请输入消息内容");
163
- if (c.value)
180
+ setup(t, { expose: g, emit: d }) {
181
+ const s = d, c = t, a = v(!1), n = v(!1), u = v(!1), r = v(null), e = v([]), f = v(""), i = v(null), l = v(-1), b = async () => {
182
+ const h = f.value.trim();
183
+ if (!h)
184
+ return R.warning("请输入消息内容");
185
+ if (n.value)
164
186
  return;
165
187
  e.value.push({
166
188
  role: "user",
167
- time: x().format("HH:mm"),
168
- content: E
169
- }), i.value = "", await g();
170
- const y = {
189
+ time: N().format("HH:mm"),
190
+ content: h
191
+ }), f.value = "", await p();
192
+ const w = {
171
193
  role: "assistant",
172
- time: x().format("HH:mm"),
194
+ time: N().format("HH:mm"),
173
195
  content: ""
174
196
  };
175
- e.value.push(y), n.value = e.value.length - 1, o.value = y, await g(), c.value = !0, v.value = !0;
176
- let _ = "";
197
+ e.value.push(w), l.value = e.value.length - 1, i.value = w, await p(), n.value = !0, u.value = !0;
198
+ let y = "";
177
199
  try {
178
200
  await Ee({
179
201
  appId: "9e54d112acfe4531bd1fc4fee8827fef",
180
202
  apiKey: "sk-d995eb26a4334bdeb2ccb4cbfaf51de8",
181
- value: E,
182
- callback: (A, S) => {
203
+ value: h,
204
+ callback: (A, E) => {
183
205
  if (A === "message")
184
- _ += S, o.value && (o.value.content = _, g());
206
+ y += E, i.value && (i.value.content = y, p());
185
207
  else if (A === "finish") {
186
- v.value = !1, c.value = !1, console.log(_);
208
+ u.value = !1, n.value = !1, console.log(y);
187
209
  try {
188
- const l = JSON.parse(_);
189
- a("callBack", l);
210
+ const m = JSON.parse(y);
211
+ s("callBack", m);
190
212
  } catch {
191
- a("callBack", _);
213
+ s("callBack", y);
192
214
  }
193
- o.value = null, n.value = -1;
215
+ i.value = null, l.value = -1;
194
216
  }
195
217
  }
196
218
  });
197
- } catch (k) {
198
- K.error(`AI响应异常: ${k}`), console.error("AI响应异常:", k), n.value !== -1 && (e.value.splice(n.value, 1), o.value = null, n.value = -1), e.value.push({
219
+ } catch (x) {
220
+ R.error(`AI响应异常: ${x}`), console.error("AI响应异常:", x), l.value !== -1 && (e.value.splice(l.value, 1), i.value = null, l.value = -1), e.value.push({
199
221
  role: "assistant",
200
- time: x().format("HH:mm"),
222
+ time: N().format("HH:mm"),
201
223
  content: "抱歉,AI服务响应异常,请稍后重试。"
202
- }), await g(), c.value = !1, v.value = !1;
224
+ }), await p(), n.value = !1, u.value = !1;
203
225
  }
204
- }, g = async () => {
205
- await C(), f.value && (f.value.scrollTop = f.value.scrollHeight);
226
+ }, p = async () => {
227
+ await C(), r.value && (r.value.scrollTop = r.value.scrollHeight);
206
228
  };
207
229
  return oe(() => {
208
230
  e.value.push({
209
231
  role: "assistant",
210
- time: x().format("HH:mm"),
211
- content: m.defaultMessage
232
+ time: N().format("HH:mm"),
233
+ content: c.defaultMessage
212
234
  });
213
- }), D(
235
+ }), K(
214
236
  () => e.value,
215
237
  () => {
216
- g();
238
+ p();
217
239
  },
218
240
  { deep: !0 }
219
- ), b({
220
- open: (E) => {
221
- r.value = !0, C(() => {
222
- g();
241
+ ), g({
242
+ open: (h) => {
243
+ a.value = !0, C(() => {
244
+ p();
223
245
  });
224
246
  }
225
- }), (E, y) => {
226
- const _ = be, k = te, H = ee, A = Z;
227
- return p(), T(A, {
247
+ }), (h, w) => {
248
+ const y = be, x = te, H = ee, A = Z;
249
+ return _(), z(A, {
228
250
  class: "ai-dialog",
229
- modelValue: r.value,
230
- "onUpdate:modelValue": y[1] || (y[1] = (S) => r.value = S),
251
+ modelValue: a.value,
252
+ "onUpdate:modelValue": w[1] || (w[1] = (E) => a.value = E),
231
253
  title: "✨ 品种池参数解析AI助手",
232
254
  width: "500px",
233
255
  center: "",
@@ -236,64 +258,64 @@ const J = (s) => (ce("data-v-46407344"), s = s(), ue(), s), ke = { class: "chat-
236
258
  modal: !1,
237
259
  "modal-penetrable": !0
238
260
  }, {
239
- default: V(() => {
240
- var S;
261
+ default: B(() => {
262
+ var E;
241
263
  return [
242
- t("div", ke, [
243
- t("div", {
264
+ o("div", xe, [
265
+ o("div", {
244
266
  ref_key: "messageListRef",
245
- ref: f,
267
+ ref: r,
246
268
  class: "message-list"
247
269
  }, [
248
- (p(!0), w(M, null, ne(e.value, (l, U) => (p(), w("div", {
270
+ (_(!0), k(M, null, ne(e.value, (m, U) => (_(), k("div", {
249
271
  key: U,
250
- class: O(["message-item", l.role])
272
+ class: j(["message-item", m.role])
251
273
  }, [
252
- l.content ? (p(), w(M, { key: 0 }, [
253
- t("div", Ae, [
254
- I(_, {
274
+ m.content ? (_(), k(M, { key: 0 }, [
275
+ o("div", Ae, [
276
+ I(y, {
255
277
  size: 32,
256
- icon: l.role === "user" ? h(de) : h($)
278
+ icon: m.role === "user" ? S(de) : S(P)
257
279
  }, null, 8, ["icon"])
258
280
  ]),
259
- t("div", Ie, [
260
- t("div", xe, R(l.content), 1),
261
- t("div", ze, R(l.time), 1)
281
+ o("div", Ie, [
282
+ o("div", Ne, O(m.content), 1),
283
+ o("div", Te, O(m.time), 1)
262
284
  ])
263
- ], 64)) : L("", !0)
285
+ ], 64)) : D("", !0)
264
286
  ], 2))), 128)),
265
- v.value && !((S = o.value) != null && S.content) ? (p(), w("div", Te, [
266
- t("div", Ve, [
267
- I(_, {
287
+ u.value && !((E = i.value) != null && E.content) ? (_(), k("div", ze, [
288
+ o("div", Be, [
289
+ I(y, {
268
290
  size: 32,
269
- icon: h($)
291
+ icon: S(P)
270
292
  }, null, 8, ["icon"])
271
293
  ]),
272
- Be
273
- ])) : L("", !0)
294
+ He
295
+ ])) : D("", !0)
274
296
  ], 512),
275
- t("div", He, [
276
- I(k, {
297
+ o("div", Ve, [
298
+ I(x, {
277
299
  class: "message-input",
278
- modelValue: i.value,
279
- "onUpdate:modelValue": y[0] || (y[0] = (l) => i.value = l),
300
+ modelValue: f.value,
301
+ "onUpdate:modelValue": w[0] || (w[0] = (m) => f.value = m),
280
302
  type: "textarea",
281
303
  rows: 4,
282
304
  autosize: { minRows: 2, maxRows: 4 },
283
305
  placeholder: "输入您想查询的品种条件...",
284
- onKeydown: re(ie(B, ["ctrl"]), ["enter"])
306
+ onKeydown: re(ie(b, ["ctrl"]), ["enter"])
285
307
  }, null, 8, ["modelValue", "onKeydown"]),
286
- t("div", Ne, [
287
- Ce,
308
+ o("div", Ce, [
309
+ Me,
288
310
  I(H, {
289
311
  class: "send-btn",
290
312
  type: "primary",
291
- icon: h(me),
292
- loading: c.value,
293
- onClick: B,
313
+ icon: S(me),
314
+ loading: n.value,
315
+ onClick: b,
294
316
  round: ""
295
317
  }, {
296
- default: V(() => [
318
+ default: B(() => [
297
319
  le(" 发送 ")
298
320
  ]),
299
321
  _: 1
@@ -307,11 +329,11 @@ const J = (s) => (ce("data-v-46407344"), s = s(), ue(), s), ke = { class: "chat-
307
329
  }, 8, ["modelValue"]);
308
330
  };
309
331
  }
310
- }, Re = /* @__PURE__ */ ve(Me, [["__scopeId", "data-v-46407344"]]), rt = {
311
- install(s) {
312
- s.component("st-varietyAiHelper", Re);
332
+ }, De = /* @__PURE__ */ fe(Oe, [["__scopeId", "data-v-46407344"]]), it = {
333
+ install(t) {
334
+ t.component("st-varietyAiHelper", De);
313
335
  }
314
336
  };
315
337
  export {
316
- rt as default
338
+ it as default
317
339
  };