2 lines
14 KiB
JavaScript
2 lines
14 KiB
JavaScript
import{R as V,d as ce,r as F,a as Y,o as me,g as c,B as pe,c as O,k as w,e as t,C as j,w as l,b as i,t as m,l as f,N as fe,f as B,J as M,L as _e,s as ge,z as A,m as P,x as u,X as ve,H as be,G as Le,F as he,E as L,_ as De}from"./index-BsIaGxbR.js";function we(_){return V({url:"/admin/user/getList",method:"get",params:_})}function ye(_){return V({url:"/admin/user/getDetail",method:"get",params:{id:_}})}function Ve(_){return V({url:"/admin/user/updateStatus",method:"post",data:_})}function Te(_){return V({url:"/admin/user/updateLevel",method:"post",data:_})}function ke(_){return V({url:"/admin/user/export",method:"get",params:_,responseType:"blob"})}const xe={class:"user-container"},Se={class:"header-content"},Ue={class:"header-right"},Ce={class:"balance-text"},Ee={class:"pagination-wrapper"},Ie={class:"user-detail"},Re={class:"detail-section"},ze={class:"user-profile"},Ne={class:"profile-info"},Fe={class:"nickname"},Oe={class:"uid"},Be={class:"detail-section"},Me={class:"detail-section"},Ae={class:"money-text"},Pe={class:"money-text"},$e={class:"money-text"},Ke={class:"detail-section"},Ye={class:"stats-grid"},je={class:"stat-item"},qe={class:"stat-value"},Ge={class:"stat-item"},He={class:"stat-value"},Je={class:"stat-item"},Xe={class:"stat-value"},Qe=ce({__name:"index",setup(_){const h={NORMAL:0,VIP:1,DISTRIBUTOR:2},T={DISABLED:0,NORMAL:1},q=[{text:"最近一周",value:()=>{const n=new Date,e=new Date;return e.setTime(e.getTime()-3600*1e3*24*7),[e,n]}},{text:"最近一个月",value:()=>{const n=new Date,e=new Date;return e.setTime(e.getTime()-3600*1e3*24*30),[e,n]}},{text:"最近三个月",value:()=>{const n=new Date,e=new Date;return e.setTime(e.getTime()-3600*1e3*24*90),[e,n]}}],G=F(),U=F(),C=F(null),a=Y({pageIndex:1,pageSize:10,uid:"",phone:"",nickname:"",userLevel:void 0,status:void 0,createTimeStart:void 0,createTimeEnd:void 0}),s=Y({loading:!1,tableData:[],total:0,drawerVisible:!1,detailLoading:!1,userDetail:null,levelDialogVisible:!1,levelFormData:{id:0,currentLevel:0,userLevel:""},levelFormLoading:!1,exportLoading:!1}),H={userLevel:[{required:!0,message:"请选择新等级",trigger:"change"}]};function E(n){switch(n){case h.NORMAL:return"info";case h.VIP:return"success";case h.DISTRIBUTOR:return"warning";default:return"info"}}function I(n){switch(n){case h.NORMAL:return"普通用户";case h.VIP:return"VIP";case h.DISTRIBUTOR:return"分销商";default:return"未知"}}function k(n){return n==null?"0.00":n.toFixed(2)}async function D(){var n,e;s.loading=!0;try{const r={pageIndex:a.pageIndex,pageSize:a.pageSize};a.uid&&(r.uid=a.uid),a.phone&&(r.phone=a.phone),a.nickname&&(r.nickname=a.nickname),a.userLevel!==void 0&&a.userLevel!==""&&(r.userLevel=Number(a.userLevel)),a.status!==void 0&&a.status!==""&&(r.status=Number(a.status)),a.createTimeStart&&(r.createTimeStart=a.createTimeStart),a.createTimeEnd&&(r.createTimeEnd=a.createTimeEnd);const d=await we(r);if(d.code===0)s.tableData=(((n=d.data)==null?void 0:n.list)||[]).map(p=>({...p,statusLoading:!1})),s.total=((e=d.data)==null?void 0:e.total)||0;else throw new Error(d.message||"获取用户列表失败")}catch(r){const d=r instanceof Error?r.message:"获取用户列表失败";L.error(d)}finally{s.loading=!1}}async function J(n){s.detailLoading=!0;try{const e=await ye(n);if(e.code===0)s.userDetail=e.data;else throw new Error(e.message||"获取用户详情失败")}catch(e){const r=e instanceof Error?e.message:"获取用户详情失败";L.error(r)}finally{s.detailLoading=!1}}function x(){a.pageIndex=1,D()}function X(){a.uid="",a.phone="",a.nickname="",a.userLevel=void 0,a.status=void 0,a.createTimeStart=void 0,a.createTimeEnd=void 0,C.value=null,a.pageIndex=1,D()}function Q(n){n?(a.createTimeStart=n[0],a.createTimeEnd=n[1]):(a.createTimeStart=void 0,a.createTimeEnd=void 0)}function W(n){a.pageSize=n,a.pageIndex=1,D()}function Z(n){a.pageIndex=n,D()}function ee(n){s.drawerVisible=!0,s.userDetail=null,J(n.id)}async function te(n,e){n.statusLoading=!0;try{const r=await Ve({id:n.id,status:e});if(r.code===0)L.success(e===T.NORMAL?"已启用":"已禁用");else throw n.status=e===T.NORMAL?T.DISABLED:T.NORMAL,new Error(r.message||"状态更新失败")}catch(r){const d=r instanceof Error?r.message:"状态更新失败";L.error(d)}finally{n.statusLoading=!1}}function ae(n){s.levelFormData={id:n.id,currentLevel:n.userLevel,userLevel:""},s.levelDialogVisible=!0}async function le(){if(U.value){try{await U.value.validate()}catch{return}s.levelFormLoading=!0;try{const n=await Te({id:s.levelFormData.id,userLevel:Number(s.levelFormData.userLevel)});if(n.code===0)L.success("等级修改成功"),s.levelDialogVisible=!1,await D();else throw new Error(n.message||"等级修改失败")}catch(n){const e=n instanceof Error?n.message:"等级修改失败";L.error(e)}finally{s.levelFormLoading=!1}}}async function se(){s.exportLoading=!0;try{const n={pageIndex:1,pageSize:1e4};a.uid&&(n.uid=a.uid),a.phone&&(n.phone=a.phone),a.nickname&&(n.nickname=a.nickname),a.userLevel!==void 0&&a.userLevel!==""&&(n.userLevel=Number(a.userLevel)),a.status!==void 0&&a.status!==""&&(n.status=Number(a.status)),a.createTimeStart&&(n.createTimeStart=a.createTimeStart),a.createTimeEnd&&(n.createTimeEnd=a.createTimeEnd);const e=await ke(n),r=e.data instanceof Blob?e.data:new Blob([e.data]),d=window.URL.createObjectURL(r),p=document.createElement("a");p.href=d,p.download=`用户列表_${new Date().toISOString().slice(0,10)}.xlsx`,document.body.appendChild(p),p.click(),document.body.removeChild(p),window.URL.revokeObjectURL(d),L.success("导出成功")}catch(n){const e=n instanceof Error?n.message:"导出失败";L.error(e)}finally{s.exportLoading=!1}}return me(()=>{D()}),(n,e)=>{const r=c("el-icon"),d=c("el-button"),p=c("el-card"),R=c("el-input"),b=c("el-form-item"),ne=c("el-date-picker"),$=c("el-form"),g=c("el-table-column"),z=c("el-avatar"),S=c("el-tag"),oe=c("el-switch"),ie=c("el-table"),re=c("el-pagination"),v=c("el-descriptions-item"),N=c("el-descriptions"),de=c("el-drawer"),ue=c("el-dialog"),K=pe("loading");return w(),O("div",xe,[t(p,{class:"page-header"},{default:l(()=>[i("div",Se,[e[13]||(e[13]=i("div",{class:"header-left"},[i("h2",{class:"page-title"},"用户管理"),i("span",{class:"page-description"},"管理C端用户信息,支持搜索、查看详情、状态管理、等级修改、导出")],-1)),i("div",Ue,[t(d,{type:"success",onClick:se,loading:s.exportLoading},{default:l(()=>[t(r,null,{default:l(()=>[t(f(fe))]),_:1}),e[12]||(e[12]=m(" 导出Excel ",-1))]),_:1},8,["loading"])])])]),_:1}),t(p,{class:"search-card"},{default:l(()=>[t($,{model:a,inline:""},{default:l(()=>[t(b,{label:"UID"},{default:l(()=>[t(R,{modelValue:a.uid,"onUpdate:modelValue":e[0]||(e[0]=o=>a.uid=o),placeholder:"请输入UID",clearable:"",onKeyup:B(x,["enter"])},null,8,["modelValue"])]),_:1}),t(b,{label:"手机号"},{default:l(()=>[t(R,{modelValue:a.phone,"onUpdate:modelValue":e[1]||(e[1]=o=>a.phone=o),placeholder:"请输入手机号",clearable:"",onKeyup:B(x,["enter"])},null,8,["modelValue"])]),_:1}),t(b,{label:"昵称"},{default:l(()=>[t(R,{modelValue:a.nickname,"onUpdate:modelValue":e[2]||(e[2]=o=>a.nickname=o),placeholder:"请输入昵称",clearable:"",onKeyup:B(x,["enter"])},null,8,["modelValue"])]),_:1}),t(b,{label:"用户等级"},{default:l(()=>[t(f(M),{modelValue:a.userLevel,"onUpdate:modelValue":e[3]||(e[3]=o=>a.userLevel=o),type:"user_level",placeholder:"请选择等级",clearable:""},null,8,["modelValue"])]),_:1}),t(b,{label:"状态"},{default:l(()=>[t(f(M),{modelValue:a.status,"onUpdate:modelValue":e[4]||(e[4]=o=>a.status=o),type:"common_status",placeholder:"请选择状态",clearable:""},null,8,["modelValue"])]),_:1}),t(b,{label:"创建时间"},{default:l(()=>[t(ne,{modelValue:C.value,"onUpdate:modelValue":e[5]||(e[5]=o=>C.value=o),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",shortcuts:q,onChange:Q},null,8,["modelValue"])]),_:1}),t(b,null,{default:l(()=>[t(d,{type:"primary",onClick:x},{default:l(()=>[t(r,null,{default:l(()=>[t(f(_e))]),_:1}),e[14]||(e[14]=m(" 搜索 ",-1))]),_:1}),t(d,{onClick:X},{default:l(()=>[t(r,null,{default:l(()=>[t(f(ge))]),_:1}),e[15]||(e[15]=m(" 重置 ",-1))]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),j((w(),A(p,{class:"table-card"},{default:l(()=>[t(ie,{ref_key:"tableRef",ref:G,data:s.tableData,"row-key":"id",stripe:""},{default:l(()=>[t(g,{prop:"uid",label:"UID",width:"120","show-overflow-tooltip":""}),t(g,{prop:"phone",label:"手机号",width:"130","show-overflow-tooltip":""}),t(g,{prop:"nickname",label:"昵称","min-width":"120","show-overflow-tooltip":""}),t(g,{label:"头像",width:"80",align:"center"},{default:l(({row:o})=>[o.avatar?(w(),A(z,{key:0,src:o.avatar,size:40},{default:l(()=>[t(r,null,{default:l(()=>[t(f(P))]),_:1})]),_:1},8,["src"])):(w(),A(z,{key:1,size:40},{default:l(()=>[t(r,null,{default:l(()=>[t(f(P))]),_:1})]),_:1}))]),_:1}),t(g,{label:"用户等级",width:"100",align:"center"},{default:l(({row:o})=>[t(S,{type:E(o.userLevel)},{default:l(()=>[m(u(o.userLevelName||I(o.userLevel)),1)]),_:2},1032,["type"])]),_:1}),t(g,{prop:"balance",label:"余额",width:"100",align:"right"},{default:l(({row:o})=>[i("span",Ce,"¥"+u(k(o.balance)),1)]),_:1}),t(g,{label:"状态",width:"100",align:"center"},{default:l(({row:o})=>[t(oe,{modelValue:o.status,"onUpdate:modelValue":y=>o.status=y,"active-value":1,"inactive-value":0,loading:o.statusLoading,onChange:y=>te(o,y)},null,8,["modelValue","onUpdate:modelValue","loading","onChange"])]),_:1}),t(g,{prop:"createTime",label:"创建时间",width:"170",align:"center"}),t(g,{prop:"lastLoginTime",label:"最后登录时间",width:"170",align:"center"},{default:l(({row:o})=>[m(u(o.lastLoginTime||"-"),1)]),_:1}),t(g,{label:"操作",width:"150",fixed:"right",align:"center"},{default:l(({row:o})=>[t(d,{type:"primary",link:"",size:"small",onClick:y=>ee(o)},{default:l(()=>[t(r,null,{default:l(()=>[t(f(ve))]),_:1}),e[16]||(e[16]=m(" 详情 ",-1))]),_:1},8,["onClick"]),t(d,{type:"warning",link:"",size:"small",onClick:y=>ae(o)},{default:l(()=>[t(r,null,{default:l(()=>[t(f(be))]),_:1}),e[17]||(e[17]=m(" 等级 ",-1))]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),i("div",Ee,[t(re,{"current-page":a.pageIndex,"onUpdate:currentPage":e[6]||(e[6]=o=>a.pageIndex=o),"page-size":a.pageSize,"onUpdate:pageSize":e[7]||(e[7]=o=>a.pageSize=o),"page-sizes":[10,20,50,100],total:s.total,layout:"total, sizes, prev, pager, next, jumper",onSizeChange:W,onCurrentChange:Z},null,8,["current-page","page-size","total"])])]),_:1})),[[K,s.loading]]),t(de,{modelValue:s.drawerVisible,"onUpdate:modelValue":e[8]||(e[8]=o=>s.drawerVisible=o),title:"用户详情",size:"500px","close-on-click-modal":!0},{default:l(()=>[j((w(),O("div",Ie,[s.userDetail?(w(),O(he,{key:0},[i("div",Re,[e[18]||(e[18]=i("h4",{class:"section-title"},"基本信息",-1)),i("div",ze,[t(z,{src:s.userDetail.avatar,size:80},{default:l(()=>[t(r,{size:40},{default:l(()=>[t(f(P))]),_:1})]),_:1},8,["src"]),i("div",Ne,[i("div",Fe,u(s.userDetail.nickname),1),i("div",Oe,"UID: "+u(s.userDetail.uid),1)])]),t(N,{column:1,border:""},{default:l(()=>[t(v,{label:"手机号"},{default:l(()=>[m(u(s.userDetail.phone),1)]),_:1}),t(v,{label:"用户等级"},{default:l(()=>[t(S,{type:E(s.userDetail.userLevel)},{default:l(()=>[m(u(s.userDetail.userLevelName||I(s.userDetail.userLevel)),1)]),_:1},8,["type"])]),_:1}),t(v,{label:"状态"},{default:l(()=>[t(S,{type:s.userDetail.status===1?"success":"danger"},{default:l(()=>[m(u(s.userDetail.statusName||(s.userDetail.status===1?"正常":"禁用")),1)]),_:1},8,["type"])]),_:1}),t(v,{label:"创建时间"},{default:l(()=>[m(u(s.userDetail.createTime),1)]),_:1}),t(v,{label:"最后登录"},{default:l(()=>[m(u(s.userDetail.lastLoginTime||"-"),1)]),_:1})]),_:1})]),i("div",Be,[e[19]||(e[19]=i("h4",{class:"section-title"},"上级用户",-1)),t(N,{column:1,border:""},{default:l(()=>[t(v,{label:"上级UID"},{default:l(()=>[m(u(s.userDetail.parentUserUid||"-"),1)]),_:1}),t(v,{label:"上级昵称"},{default:l(()=>[m(u(s.userDetail.parentUserNickname||"-"),1)]),_:1})]),_:1})]),i("div",Me,[e[20]||(e[20]=i("h4",{class:"section-title"},"财务信息",-1)),t(N,{column:1,border:""},{default:l(()=>[t(v,{label:"账户余额"},{default:l(()=>[i("span",Ae,"¥"+u(k(s.userDetail.balance)),1)]),_:1}),t(v,{label:"累计收入"},{default:l(()=>[i("span",Pe,"¥"+u(k(s.userDetail.totalIncome)),1)]),_:1}),t(v,{label:"已提现金额"},{default:l(()=>[i("span",$e,"¥"+u(k(s.userDetail.withdrawnAmount)),1)]),_:1})]),_:1})]),i("div",Ke,[e[24]||(e[24]=i("h4",{class:"section-title"},"统计信息",-1)),i("div",Ye,[i("div",je,[i("div",qe,u(s.userDetail.orderCount),1),e[21]||(e[21]=i("div",{class:"stat-label"},"订单数",-1))]),i("div",Ge,[i("div",He,u(s.userDetail.assessmentCount),1),e[22]||(e[22]=i("div",{class:"stat-label"},"测评数",-1))]),i("div",Je,[i("div",Xe,u(s.userDetail.inviteCount),1),e[23]||(e[23]=i("div",{class:"stat-label"},"邀请人数",-1))])])])],64)):Le("",!0)])),[[K,s.detailLoading]])]),_:1},8,["modelValue"]),t(ue,{modelValue:s.levelDialogVisible,"onUpdate:modelValue":e[11]||(e[11]=o=>s.levelDialogVisible=o),title:"修改用户等级",width:"400px","close-on-click-modal":!1},{footer:l(()=>[t(d,{onClick:e[10]||(e[10]=o=>s.levelDialogVisible=!1)},{default:l(()=>[...e[25]||(e[25]=[m("取消",-1)])]),_:1}),t(d,{type:"primary",loading:s.levelFormLoading,onClick:le},{default:l(()=>[...e[26]||(e[26]=[m(" 确定 ",-1)])]),_:1},8,["loading"])]),default:l(()=>[t($,{ref_key:"levelFormRef",ref:U,model:s.levelFormData,rules:H,"label-width":"80px"},{default:l(()=>[t(b,{label:"当前等级"},{default:l(()=>[t(S,{type:E(s.levelFormData.currentLevel)},{default:l(()=>[m(u(I(s.levelFormData.currentLevel)),1)]),_:1},8,["type"])]),_:1}),t(b,{label:"新等级",prop:"userLevel"},{default:l(()=>[t(f(M),{modelValue:s.levelFormData.userLevel,"onUpdate:modelValue":e[9]||(e[9]=o=>s.levelFormData.userLevel=o),type:"user_level",placeholder:"请选择新等级",style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),Ze=De(Qe,[["__scopeId","data-v-d9947622"]]);export{Ze as default};
|