邹方成 00452cba59 feat: 添加用户统计功能及相关API接口
feat(admin): 新增管理后台前端资源文件

feat(api): 实现获取用户统计数据的API接口
- 添加获取用户道具卡数量、优惠券数量和积分余额的接口
- 实现设置默认地址和删除地址的接口

feat(service): 新增用户统计服务方法
- 实现GetUserStats方法查询用户统计数据
- 添加地址管理相关服务方法

fix(core): 修复静态资源路由问题
- 调整静态资源路由配置
- 优化404路由处理逻辑

chore: 更新前端构建配置
- 添加Windows平台构建命令
- 更新README构建说明
2025-11-15 03:08:53 +08:00

2 lines
5.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var e=Object.defineProperty,a=Object.defineProperties,s=Object.getOwnPropertyDescriptors,t=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,l=(a,s,t)=>s in a?e(a,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[s]=t;import{d as o,c as n,aQ as m,a as d,o as c,aM as p,aH as u,E as v,e as f,f as x,p as g,z as j,h as b,i as y,u as w,m as h,ab as _,b4 as M,F as O,G as k,B as z,aG as C,I as E,J as V,dN as A,dO as P,y as B,l as D,n as I}from"./index-ip5gDR6L.js";/* empty css *//* empty css */import{_ as R}from"./index.vue_vue_type_script_setup_true_lang-CCGboj8m.js";/* empty css *//* empty css *//* empty css */import{m as T}from"./avatar6-6Evj8BB9.js";import{a as G}from"./avatar10-Dom60BwY.js";import{E as H}from"./index-CGPOeeHR.js";import{E as K}from"./index-DfrOVkw6.js";import{E as N}from"./index-opP5No9I.js";import{E as S}from"./index-DQ5yxWeA.js";import"./index-fnD_mPvE.js";import"./index-CHAf6FpU.js";import"./use-form-item-BDb3ZgPk.js";import"./use-form-common-props-BwBs_jod.js";import"./index-D-10FtUD.js";import"./index-D-iZIej9.js";import"./index-D17cYxP7.js";import"./vnode-6FKeug3R.js";import"./scroll-ChxXkPhM.js";import"./use-dialog-Cj8YneNA.js";const U={class:"mb-5 flex-cb"},F={class:"mt-1.5 flex-c gap-1"},J={class:"text-xs text-g-600"},L={class:"flex h-[calc(100%-70px)] flex-col"},Q={class:"font-medium"},W={class:"text-g-600"},Y={class:"px-4 pt-4"},q={class:"flex gap-2 py-2"},X={class:"mt-3 flex-cb"},Z={class:"flex-c"},$="Art Bot",ee="Ricky",ae=o((se=((e,a)=>{for(var s in a||(a={}))i.call(a,s)&&l(e,s,a[s]);if(t)for(var s of t(a))r.call(a,s)&&l(e,s,a[s]);return e})({},{name:"ArtChatWindow"}),a(se,s({__name:"index",setup(e){const{width:a}=m(),s=n(()=>a.value<640),t=d(!1),i=d(!0),r=d(""),l=d(10),o=d(null),ae=d([{id:1,sender:$,content:"你好我是你的AI助手有什么我可以帮你的吗",time:"10:00",isMe:!1,avatar:G},{id:2,sender:ee,content:"我想了解一下系统的使用方法。",time:"10:01",isMe:!0,avatar:T},{id:3,sender:$,content:"好的,我来为您介绍系统的主要功能。首先,您可以通过左侧菜单访问不同的功能模块...",time:"10:02",isMe:!1,avatar:G},{id:4,sender:ee,content:"听起来很不错,能具体讲讲数据分析部分吗?",time:"10:05",isMe:!0,avatar:T},{id:5,sender:$,content:"当然可以。数据分析模块可以帮助您实时监控关键指标,并生成详细的报表...",time:"10:06",isMe:!1,avatar:G},{id:6,sender:ee,content:"太好了,那我如何开始使用呢?",time:"10:08",isMe:!0,avatar:T},{id:7,sender:$,content:"您可以先创建一个项目,然后在项目中添加相关的数据源,系统会自动进行分析。",time:"10:09",isMe:!1,avatar:G},{id:8,sender:ee,content:"明白了,谢谢你的帮助!",time:"10:10",isMe:!0,avatar:T},{id:9,sender:$,content:"不客气,有任何问题随时联系我。",time:"10:11",isMe:!1,avatar:G}]),se=()=>{I(()=>{setTimeout(()=>{o.value&&(o.value.scrollTop=o.value.scrollHeight)},100)})},te=()=>{const e=r.value.trim();if(!e)return;const a={id:l.value++,sender:ee,content:e,time:(new Date).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),isMe:!0,avatar:T};ae.value.push(a),r.value="",se()},ie=()=>{t.value=!0,se()},re=()=>{t.value=!1};return c(()=>{se(),p.on("openChat",ie)}),u(()=>{p.off("openChat",ie)}),(e,a)=>{const l=_,n=H,m=N,d=K,c=R,p=S,u=v("ripple");return x(),f("div",null,[g(p,{modelValue:w(t),"onUpdate:modelValue":a[1]||(a[1]=e=>E(t)?t.value=e:null),size:w(s)?"100%":"480px","with-header":!1},{default:j(()=>[b("div",U,[b("div",null,[a[2]||(a[2]=b("span",{class:"text-base font-medium"},"Art Bot",-1)),b("div",F,[b("div",{class:y(["h-2 w-2 rounded-full",w(i)?"bg-success/100":"bg-danger/100"])},null,2),b("span",J,h(w(i)?"在线":"离线"),1)])]),b("div",null,[g(l,{class:"c-p",size:20,onClick:re},{default:j(()=>[g(w(M))]),_:1})])]),b("div",L,[b("div",{class:"flex-1 overflow-y-auto border-t-d px-4 py-7.5 [&::-webkit-scrollbar]:!w-1",ref_key:"messageContainer",ref:o},[(x(!0),f(O,null,k(w(ae),(e,a)=>(x(),f("div",{key:a,class:y(["mb-7.5 flex w-full items-start gap-2",e.isMe?"flex-row-reverse":"flex-row"])},[g(n,{size:32,src:e.avatar,class:"shrink-0"},null,8,["src"]),b("div",{class:y(["flex max-w-[70%] flex-col",e.isMe?"items-end":"items-start"])},[b("div",{class:y(["mb-1 flex gap-2 text-xs",e.isMe?"flex-row-reverse":"flex-row"])},[b("span",Q,h(e.sender),1),b("span",W,h(e.time),1)],2),b("div",{class:y(["rounded-md px-3.5 py-2.5 text-sm leading-[1.4] text-g-900",e.isMe?"message-right bg-theme/15":"message-left bg-g-300/50"])},h(e.content),3)],2)],2))),128))],512),b("div",Y,[g(d,{modelValue:w(r),"onUpdate:modelValue":a[0]||(a[0]=e=>E(r)?r.value=e:null),type:"textarea",rows:3,placeholder:"输入消息",resize:"none",onKeyup:z(C(te,["prevent"]),["enter"])},{append:j(()=>[b("div",q,[g(m,{icon:w(A),circle:"",plain:""},null,8,["icon"]),g(m,{icon:w(P),circle:"",plain:""},null,8,["icon"]),V((x(),B(m,{type:"primary",onClick:te},{default:j(()=>[...a[3]||(a[3]=[D("发送",-1)])]),_:1})),[[u]])])]),_:1},8,["modelValue","onKeyup"]),b("div",X,[b("div",Z,[g(c,{icon:"ri:image-line",class:"mr-5 c-p text-g-600 text-lg"}),g(c,{icon:"ri:emotion-happy-line",class:"mr-5 c-p text-g-600 text-lg"})]),V((x(),B(m,{type:"primary",onClick:te,class:"min-w-20"},{default:j(()=>[...a[4]||(a[4]=[D("发送",-1)])]),_:1})),[[u]])])])])]),_:1},8,["modelValue","size"])])}}}))));var se;export{ae as default};