邹方成 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
9.3 KiB
JavaScript

var e=Object.defineProperty,a=Object.getOwnPropertySymbols,l=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,t=(a,l,o)=>l in a?e(a,l,{enumerable:!0,configurable:!0,writable:!0,value:o}):a[l]=o,i=(e,a,l)=>new Promise((o,t)=>{var i=e=>{try{s(l.next(e))}catch(a){t(a)}},r=e=>{try{s(l.throw(e))}catch(a){t(a)}},s=e=>e.done?o(e.value):Promise.resolve(e.value).then(i,r);s((l=l.apply(e,a)).next())});import{d as r,a as s,r as n,x as u,c as p,o as d,e as m,f as c,p as v,h as j,y as g,k as f,u as y,z as _,l as b,I as h,F as x,G as w,m as k}from"./index-ip5gDR6L.js";/* empty css *//* empty css *//* empty css */import{E as V}from"./el-upload-aEd-w_6_.js";import"./el-progress-DSvqWOWu.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{_ as C}from"./index-C4WacTPc.js";import{_ as O}from"./index.vue_vue_type_script_setup_true_lang-CK7Y-5lS.js";import{_ as P}from"./index-BVNligJO.js";import{u as S}from"./useTable-BFClY0KQ.js";import{b as z,e as E,g as U,a as A,f as T}from"./product-ti2LZz-w.js";import D from"./product-search-DlXVj0cG.js";import{E as M}from"./index-opP5No9I.js";import{E as N}from"./index-D1xXI5gl.js";import{E as R,a as F}from"./index-CxGOZAw2.js";import{E as I}from"./index-DfrOVkw6.js";import{E as J,a as $}from"./index-Br3btmwp.js";import{E as K}from"./index-BpP4itD-.js";import{E as L}from"./index-ChjUsiLf.js";import"./index-fnD_mPvE.js";import"./use-form-common-props-BwBs_jod.js";import"./cloneDeep-D8SNDfdC.js";/* empty css */import"./el-tooltip-l0sNRNKZ.js";import"./index-DbRz3Zuu.js";import"./index-C9KXwj2c.js";import"./index-CHAf6FpU.js";import"./use-form-item-BDb3ZgPk.js";import"./_initCloneObject-DwsgJamq.js";import"./isArrayLikeObject-OMLaZ5Za.js";import"./index-D-10FtUD.js";import"./debounce-B9s63_mG.js";import"./index-KXWZe8V3.js";import"./index-D-iZIej9.js";import"./index-Jz5GfFad.js";import"./_plugin-vue_export-helper-BCo6x5W8.js";import"./index.vue_vue_type_script_setup_true_lang-CCGboj8m.js";/* empty css *//* empty css */import"./el-popover-Do33geGb.js";import"./el-dropdown-item-DEgPCg9g.js";import"./refs-Cw5r5QN8.js";/* empty css */import"./useTableColumns-C9X2IKmh.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index-Ca1H-sCf.js";import"./index-D5xppMej.js";import"./index-BY5Lb5w1.js";import"./vnode-6FKeug3R.js";import"./index-BBSYL4g8.js";import"./token-DWNpOE8r.js";import"./scroll-ChxXkPhM.js";import"./index-D17cYxP7.js";import"./use-dialog-Cj8YneNA.js";import"./index-D6zsJoyl.js";const X={class:"mb-3"},Y={class:"flex flex-wrap gap-1"},Z=["src","onClick"],q=r({__name:"index",setup(e){const r=s({name:void 0,category_id:void 0,status:void 0}),{data:q,loading:B,columns:G,pagination:Q,handleSizeChange:W,handleCurrentChange:H,getData:ee,getDataDebounced:ae,searchParams:le,resetSearchParams:oe}=S({core:{apiFn:e=>T({page:e.current,page_size:e.size,name:e.name,category_id:e.category_id,status:e.status}).then(e=>({records:e.list,total:e.total,current:e.page,size:e.page_size})),apiParams:{current:1,size:20},columnsFactory:()=>[{prop:"id",label:"ID",width:90,align:"center"},{prop:"name",label:"名称",minWidth:220,showOverflowTooltip:!0},{prop:"images",label:"图片",useSlot:!0,width:180,align:"center"},{prop:"category_id",label:"分类",useSlot:!0,width:160},{prop:"price",label:"价格(分)",width:140,align:"center"},{prop:"stock",label:"库存",width:120,align:"center"},{prop:"sales",label:"销量",width:120,align:"center"},{prop:"status",label:"状态",useSlot:!0,width:110,align:"center"},{prop:"actions",label:"操作",useSlot:!0,width:180}]}}),te=s(!1),ie=s("创建商品"),re=s(null),se=s(!1),ne=s(0),ue=s([]);function pe(e){try{const a=JSON.parse(e||"[]");return Array.isArray(a)?a:[]}catch(a){return[]}}const de=n({name:"",category_id:void 0,price:void 0,stock:void 0}),me=s([]),ce=n({}),ve=s([]),je=s([]),ge=u(),fe=p(()=>"/api/common/upload/wangeditor"),ye=p(()=>({Authorization:ge.accessToken})),_e=e=>{const i=((e,i)=>{for(var r in i||(i={}))l.call(i,r)&&t(e,r,i[r]);if(a)for(var r of a(i))o.call(i,r)&&t(e,r,i[r]);return e})({},le),s=e||r.value;Object.assign(i,s),ae(i)};function be(){ie.value="创建商品",re.value=null,Object.assign(de,{name:"",category_id:void 0,price:void 0,stock:void 0,status:1}),ve.value=[],je.value=[],te.value=!0}function he(){return i(this,null,function*(){de.name&&de.category_id&&de.price&&de.stock&&(de.images_json=JSON.stringify(ve.value),re.value?yield z(re.value,de):yield E(de),te.value=!1,yield ee())})}function xe(){return i(this,null,function*(){const e=yield A({page:1,page_size:100});me.value=e.list.map(e=>({id:e.id,name:e.name}));for(const a of e.list)ce[a.id]=a.name})}function we(e,a,l){var o,t;let i=(null==(o=null==e?void 0:e.data)?void 0:o.url)||(null==e?void 0:e.url)||"";if(!i&&"string"==typeof e)try{const a=JSON.parse(e);i=(null==(t=null==a?void 0:a.data)?void 0:t.url)||(null==a?void 0:a.url)||""}catch(r){}i&&(ve.value.push(i),je.value=ve.value.map((e,a)=>({name:`img_${a}`,url:e})))}function ke(e,a){const l=je.value.findIndex(a=>a.name===e.name||a.url===e.url);l>-1&&(ve.value.splice(l,1),je.value.splice(l,1))}return d(()=>i(this,null,function*(){yield xe(),yield ee()})),(e,a)=>{const l=M,o=N,t=I,s=F,n=$,u=J,p=V,d=R,S=K,z=L;return c(),m("div",null,[v(D,{modelValue:r.value,"onUpdate:modelValue":a[0]||(a[0]=e=>r.value=e),onSearch:_e,onReset:y(oe)},null,8,["modelValue","onReset"]),j("div",X,[v(l,{type:"primary",onClick:be},{default:_(()=>[...a[10]||(a[10]=[b("创建商品",-1)])]),_:1})]),v(P,{columns:y(G),"onUpdate:columns":a[1]||(a[1]=e=>h(G)?G.value=e:null),loading:y(B),onRefresh:y(ee)},null,8,["columns","loading","onRefresh"]),v(C,{loading:y(B),data:y(q),columns:y(G),tableLayout:"auto",pagination:y(Q),"onPagination:sizeChange":y(W),"onPagination:currentChange":y(H)},{status:_(({row:e})=>[v(o,{type:1===e.status?"success":"danger"},{default:_(()=>[b(k(1===e.status?"上架":"下架"),1)]),_:2},1032,["type"])]),category_id:_(({row:e})=>[v(o,{type:"primary"},{default:_(()=>[b(k(y(ce)[e.category_id]||e.category_id),1)]),_:2},1024)]),images:_(({row:e})=>[j("div",Y,[(c(!0),m(x,null,w(pe(e.images_json),(a,l)=>(c(),m("img",{key:l,src:a,class:"w-14 h-14 object-cover rounded cursor-pointer border",onClick:a=>function(e,a=0){ue.value=e,ne.value=a,se.value=!0}(pe(e.images_json),l)},null,8,Z))),128))])]),actions:_(({row:e})=>[v(O,{type:"edit",onClick:a=>function(e){ie.value="编辑商品",re.value=e.id,Object.assign(de,{name:e.name,category_id:e.category_id,price:e.price,stock:e.stock,status:e.status});try{const a=JSON.parse(e.images_json||"[]");ve.value=Array.isArray(a)?a:[],je.value=ve.value.map((e,a)=>({name:`img_${a}`,url:e}))}catch(a){ve.value=[],je.value=[]}te.value=!0}(e)},null,8,["onClick"]),v(O,{type:"delete",onClick:a=>function(e){return i(this,null,function*(){yield U(e),yield ee()})}(e.id)},null,8,["onClick"])]),_:1},8,["loading","data","columns","pagination","onPagination:sizeChange","onPagination:currentChange"]),v(S,{modelValue:te.value,"onUpdate:modelValue":a[8]||(a[8]=e=>te.value=e),title:ie.value,width:"640px"},{footer:_(()=>[v(l,{onClick:a[7]||(a[7]=e=>te.value=!1)},{default:_(()=>[...a[12]||(a[12]=[b("取消",-1)])]),_:1}),v(l,{type:"primary",onClick:he},{default:_(()=>[...a[13]||(a[13]=[b("提交",-1)])]),_:1})]),default:_(()=>[v(d,{model:y(de),"label-width":"110px"},{default:_(()=>[v(s,{label:"名称"},{default:_(()=>[v(t,{modelValue:y(de).name,"onUpdate:modelValue":a[2]||(a[2]=e=>y(de).name=e)},null,8,["modelValue"])]),_:1}),v(s,{label:"分类"},{default:_(()=>[v(u,{modelValue:y(de).category_id,"onUpdate:modelValue":a[3]||(a[3]=e=>y(de).category_id=e),modelModifiers:{number:!0},onVisibleChange:xe},{default:_(()=>[(c(!0),m(x,null,w(me.value,e=>(c(),g(n,{key:e.id,label:e.name,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),v(s,{label:"图片"},{default:_(()=>[v(p,{action:y(fe),name:"file",accept:"image/*","list-type":"picture-card",headers:y(ye),"on-success":we,"on-remove":ke,"file-list":je.value},{default:_(()=>[...a[11]||(a[11]=[j("i",{class:"el-icon"},[j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[j("path",{fill:"currentColor",d:"M480 512h64V256h-64zm32 288a32 32 0 1 0 0-64a32 32 0 0 0 0 64"})])],-1)])]),_:1},8,["action","headers","file-list"])]),_:1}),v(s,{label:"价格(分)"},{default:_(()=>[v(t,{modelValue:y(de).price,"onUpdate:modelValue":a[4]||(a[4]=e=>y(de).price=e),modelModifiers:{number:!0}},null,8,["modelValue"])]),_:1}),v(s,{label:"库存"},{default:_(()=>[v(t,{modelValue:y(de).stock,"onUpdate:modelValue":a[5]||(a[5]=e=>y(de).stock=e),modelModifiers:{number:!0}},null,8,["modelValue"])]),_:1}),v(s,{label:"状态"},{default:_(()=>[v(u,{modelValue:y(de).status,"onUpdate:modelValue":a[6]||(a[6]=e=>y(de).status=e),modelModifiers:{number:!0}},{default:_(()=>[v(n,{value:1,label:"上架"}),v(n,{value:2,label:"下架"})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),se.value?(c(),g(z,{key:0,"url-list":ue.value,"initial-index":ne.value,onClose:a[9]||(a[9]=e=>se.value=!1)},null,8,["url-list","initial-index"])):f("",!0)])}}});export{q as default};