Files
AIGC/demo/deploy_baota/frontend/static/MemberManagement-2273dd7e.js
AIGC Developer dbd06435cb feat: 完成管理员密码登录修复和项目清理
- 修复BCryptPasswordEncoder密码验证问题
- 实现密码设置提示弹窗功能(仅对无密码用户显示一次)
- 优化修改密码逻辑和验证流程
- 更新Welcome页面背景样式
- 清理临时SQL文件和测试代码
- 移动数据库备份文件到database/backups目录
- 删除不必要的MD文档和临时文件
2025-11-21 16:10:00 +08:00

2 lines
11 KiB
JavaScript

import{_ as ye}from"./logo-admin-5be797ff.js";import{_ as ke}from"./avatar-default-20a1956c.js";import{aA as $e,r as p,c as B,m as we,al as c,z as b,A as y,B as l,R as t,J as n,u as _,P as o,O as h,M as N,Q as I,a4 as O,D}from"./vue-vendor-164775a6.js";import{E as g,a as j,g as Me,u as Ce,s as Ve,f as H,h as De,j as xe,k as Se,e as Le,l as Te,m as Ue}from"./element-plus-83a396df.js";import{u as Pe,d as Ae,a as Be,b as Ie}from"./members-14b4bd02.js";import{_ as Ye,L as Ee}from"./index-467ea2ad.js";import"./utils-edfcd65b.js";const ze={class:"member-management"},Fe={class:"sidebar"},Re={class:"nav-menu"},qe={class:"nav-item active"},Ne={class:"sidebar-footer"},Oe={class:"online-users"},je={class:"highlight"},He={class:"system-uptime"},Je={class:"highlight"},Qe={class:"main-content"},Ge={class:"top-header"},Ke={class:"search-bar"},We=["placeholder"],Xe={class:"header-actions"},Ze={class:"user-avatar"},el={class:"member-content"},ll={class:"content-header"},al={key:0,class:"selection-info"},tl={class:"table-toolbar"},sl={class:"toolbar-left"},nl={class:"toolbar-right"},ol={class:"table-container"},il={class:"member-table"},rl={class:"checkbox-col"},ul=["checked"],dl={class:"checkbox-col"},cl=["checked","onChange"],vl={class:"pagination-container"},ml={class:"pagination"},pl=["onClick"],_l={class:"dialog-footer"},gl={__name:"MemberManagement",setup(fl){const k=$e(),d=p([]),x=p("all"),v=p(1),Y=p(10),S=p(50),T=p("0/500"),U=p("加载中..."),$=p(!1),L=p(),P=p(!1),r=p({id:"",username:"",level:"",points:0,expiryDate:""}),J={username:[{required:!0,message:"请输入用户名",trigger:"blur"},{min:2,max:20,message:"用户名长度在 2 到 20 个字符",trigger:"blur"}],level:[{required:!0,message:"请选择会员等级",trigger:"change"}],points:[{required:!0,message:"请输入资源点",trigger:"blur"},{type:"number",min:0,message:"资源点不能小于0",trigger:"blur"}],expiryDate:[{required:!0,message:"请选择到期时间",trigger:"change"}]},m=p([]),Q=()=>{k.push("/admin/dashboard")},G=()=>{k.push("/admin/orders")},K=()=>{k.push("/api-management")},W=()=>{k.push("/generate-task-record")},X=()=>{k.push("/system-settings")},Z=e=>{e==="exitAdmin"&&k.push("/profile")},E=B(()=>m.value.length>0&&d.value.length===m.value.length),f=B(()=>Math.ceil(S.value/Y.value)),ee=B(()=>{const e=[],a=f.value,i=v.value;if(a<=7)for(let u=1;u<=a;u++)e.push(u);else if(i<=3)for(let u=1;u<=5;u++)e.push(u);else if(i>=a-2)for(let u=a-4;u<=a;u++)e.push(u);else for(let u=i-2;u<=i+2;u++)e.push(u);return e}),le=()=>{E.value?d.value=[]:d.value=[...m.value]},ae=e=>{const a=d.value.findIndex(i=>i.id===e.id);a>-1?d.value.splice(a,1):d.value.push(e)},te=()=>{v.value>1&&(v.value--,w())},se=()=>{v.value<f.value&&(v.value++,w())},z=e=>{v.value=e,w()},ne=e=>{r.value={id:e.id,username:e.username,level:e.level,points:e.points,expiryDate:e.expiryDate},$.value=!0},oe=()=>{var e;$.value=!1,(e=L.value)==null||e.resetFields()},ie=async()=>{if(L.value)try{await L.value.validate(),P.value=!0,await Pe(r.value.id,{username:r.value.username,level:r.value.level,points:r.value.points,expiryDate:r.value.expiryDate});const e=m.value.findIndex(a=>a.id===r.value.id);e>-1&&(m.value[e]={...r.value}),g.success("会员信息更新成功"),$.value=!1}catch(e){console.error("保存失败:",e),g.error("保存失败,请检查输入信息")}finally{P.value=!1}},re=async e=>{try{await j.confirm(`确定要删除用户 ${e.username} 吗?`,"确认删除",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),await Ie(e.id);const a=m.value.findIndex(i=>i.id===e.id);a>-1&&(m.value.splice(a,1),S.value--),g.success("删除成功")}catch(a){a!=="cancel"&&(console.error("删除失败:",a),g.error("删除失败"))}},ue=async()=>{if(d.value.length===0){g.warning("请先选择要删除的会员");return}try{await j.confirm(`确定要删除选中的 ${d.value.length} 个会员吗?`,"批量删除",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});const e=d.value.map(a=>a.id);await Ae(e),m.value=m.value.filter(a=>!e.includes(a.id)),S.value-=e.length,d.value=[],g.success("批量删除成功")}catch(e){e!=="cancel"&&(console.error("批量删除失败:",e),g.error("批量删除失败"))}},de=()=>{v.value=1,w()},w=async()=>{try{const e=await Be({page:v.value,pageSize:Y.value,level:x.value==="all"?"":x.value});console.log("获取会员列表响应:",e);const a=(e==null?void 0:e.data)||e||{};console.log("解析后的数据:",a),a&&a.list?(m.value=a.list.map(i=>({id:i.id,username:i.username,level:ce(i.membership),points:i.points||0,expiryDate:ve(i.membership)})),S.value=a.total||0,console.log("设置后的会员列表:",m.value)):(console.error("API返回数据格式错误:",a),g.error("API返回数据格式错误"))}catch(e){console.error("加载会员数据失败:",e),g.error("加载会员数据失败: "+(e.message||"未知错误"))}},ce=e=>e&&e.display_name||"标准会员",ve=e=>e&&e.end_date?e.end_date.split(" ")[0]:"2025-12-31";we(()=>{w(),me()});const me=async()=>{try{const e=Math.floor(Math.random()*50)+10;T.value=`${e}/500`;const a=new Date().getHours(),i=new Date().getMinutes();U.value=`${a}小时${i}`}catch(e){console.error("获取系统统计失败:",e),T.value="0/500",U.value="未知"}};return(e,a)=>{const i=c("el-icon"),u=c("el-dropdown-item"),pe=c("el-dropdown-menu"),_e=c("el-dropdown"),M=c("el-option"),F=c("el-select"),A=c("el-button"),R=c("el-link"),q=c("el-input"),C=c("el-form-item"),ge=c("el-input-number"),fe=c("el-date-picker"),he=c("el-form"),be=c("el-dialog");return b(),y("div",ze,[l("aside",Fe,[a[9]||(a[9]=l("div",{class:"logo"},[l("img",{src:ye,alt:"Logo"})],-1)),l("nav",Re,[l("div",{class:"nav-item",onClick:Q},[t(i,null,{default:n(()=>[t(_(Me))]),_:1}),l("span",null,o(e.$t("nav.dashboard")),1)]),l("div",qe,[t(i,null,{default:n(()=>[t(_(Ce))]),_:1}),l("span",null,o(e.$t("nav.members")),1)]),l("div",{class:"nav-item",onClick:G},[t(i,null,{default:n(()=>[t(_(Ve))]),_:1}),l("span",null,o(e.$t("nav.orders")),1)]),l("div",{class:"nav-item",onClick:K},[t(i,null,{default:n(()=>[t(_(H))]),_:1}),l("span",null,o(e.$t("nav.apiManagement")),1)]),l("div",{class:"nav-item",onClick:W},[t(i,null,{default:n(()=>[t(_(H))]),_:1}),l("span",null,o(e.$t("nav.tasks")),1)]),l("div",{class:"nav-item",onClick:X},[t(i,null,{default:n(()=>[t(_(De))]),_:1}),l("span",null,o(e.$t("nav.systemSettings")),1)])]),l("div",Ne,[l("div",Oe,[h(o(e.$t("nav.onlineUsers"))+": ",1),l("span",je,o(T.value),1)]),l("div",He,[h(o(e.$t("nav.systemUptime"))+": ",1),l("span",Je,o(U.value),1)])])]),l("main",Qe,[l("header",Ge,[l("div",Ke,[t(i,{class:"search-icon"},{default:n(()=>[t(_(xe))]),_:1}),l("input",{type:"text",placeholder:e.$t("common.searchPlaceholder"),class:"search-input"},null,8,We)]),l("div",Xe,[t(Ee),t(_e,{onCommand:Z},{dropdown:n(()=>[t(pe,null,{default:n(()=>[t(u,{command:"exitAdmin"},{default:n(()=>[h(o(e.$t("admin.exitAdmin")),1)]),_:1})]),_:1})]),default:n(()=>[l("div",Ze,[a[10]||(a[10]=l("img",{src:ke,alt:"用户头像"},null,-1)),t(i,{class:"arrow-down"},{default:n(()=>[t(_(Se))]),_:1})])]),_:1})])]),l("section",el,[l("div",ll,[l("h2",null,o(e.$t("members.title")),1),d.value.length>0?(b(),y("div",al,o(e.$t("orders.selected",{count:d.value.length})),1)):N("",!0)]),l("div",tl,[l("div",sl,[t(F,{modelValue:x.value,"onUpdate:modelValue":a[0]||(a[0]=s=>x.value=s),placeholder:e.$t("members.allLevels"),size:"small",onChange:de},{default:n(()=>[t(M,{label:e.$t("members.allLevels"),value:"all"},null,8,["label"]),t(M,{label:e.$t("members.professional"),value:"professional"},null,8,["label"]),t(M,{label:e.$t("members.standard"),value:"standard"},null,8,["label"])]),_:1},8,["modelValue","placeholder"])]),l("div",nl,[t(A,{type:"danger",size:"small",onClick:ue,disabled:d.value.length===0},{default:n(()=>[t(i,null,{default:n(()=>[t(_(Le))]),_:1}),h(" "+o(e.$t("common.delete")),1)]),_:1},8,["disabled"])])]),l("div",ol,[l("table",il,[l("thead",null,[l("tr",null,[l("th",rl,[l("input",{type:"checkbox",onChange:le,checked:E.value},null,40,ul)]),l("th",null,o(e.$t("members.userId")),1),l("th",null,o(e.$t("members.username")),1),l("th",null,o(e.$t("members.level")),1),l("th",null,o(e.$t("members.points")),1),l("th",null,o(e.$t("members.expiryDate")),1),l("th",null,o(e.$t("members.operation")),1)])]),l("tbody",null,[(b(!0),y(I,null,O(m.value,s=>(b(),y("tr",{key:s.id,class:"table-row"},[l("td",dl,[l("input",{type:"checkbox",checked:d.value.some(V=>V.id===s.id),onChange:V=>ae(s)},null,40,cl)]),l("td",null,o(s.id),1),l("td",null,o(s.username),1),l("td",null,[l("span",{class:D(["level-tag",s.level==="专业会员"?"professional":"standard"])},o(s.level),3)]),l("td",null,o(s.points.toLocaleString()),1),l("td",null,o(s.expiryDate),1),l("td",null,[t(R,{type:"primary",class:"action-link",onClick:V=>ne(s)},{default:n(()=>[h(o(e.$t("common.edit")),1)]),_:1},8,["onClick"]),t(R,{type:"danger",class:"action-link",onClick:V=>re(s)},{default:n(()=>[h(o(e.$t("common.delete")),1)]),_:1},8,["onClick"])])]))),128))])])]),l("div",vl,[l("div",ml,[t(i,{class:D(["page-arrow",{disabled:v.value===1}]),onClick:te},{default:n(()=>[t(_(Te))]),_:1},8,["class"]),(b(!0),y(I,null,O(ee.value,s=>(b(),y("button",{key:s,class:D(["page-btn",{active:s===v.value}]),onClick:V=>z(s)},o(s),11,pl))),128)),f.value>7&&v.value<f.value-2?(b(),y(I,{key:0},[a[11]||(a[11]=l("span",{class:"page-ellipsis"},"...",-1)),l("button",{class:D(["page-btn",{active:f.value===v.value}]),onClick:a[1]||(a[1]=s=>z(f.value))},o(f.value),3)],64)):N("",!0),t(i,{class:D(["page-arrow",{disabled:v.value===f.value}]),onClick:se},{default:n(()=>[t(_(Ue))]),_:1},8,["class"])])])])]),t(be,{modelValue:$.value,"onUpdate:modelValue":a[8]||(a[8]=s=>$.value=s),title:"编辑会员信息",width:"500px","before-close":oe},{footer:n(()=>[l("span",_l,[t(A,{onClick:a[7]||(a[7]=s=>$.value=!1)},{default:n(()=>[...a[12]||(a[12]=[h("取消",-1)])]),_:1}),t(A,{type:"primary",onClick:ie,loading:P.value},{default:n(()=>[...a[13]||(a[13]=[h("保存",-1)])]),_:1},8,["loading"])])]),default:n(()=>[t(he,{ref_key:"editFormRef",ref:L,model:r.value,rules:J,"label-width":"100px"},{default:n(()=>[t(C,{label:"用户ID",prop:"id"},{default:n(()=>[t(q,{modelValue:r.value.id,"onUpdate:modelValue":a[2]||(a[2]=s=>r.value.id=s),disabled:""},null,8,["modelValue"])]),_:1}),t(C,{label:"用户名",prop:"username"},{default:n(()=>[t(q,{modelValue:r.value.username,"onUpdate:modelValue":a[3]||(a[3]=s=>r.value.username=s),placeholder:"请输入用户名"},null,8,["modelValue"])]),_:1}),t(C,{label:"会员等级",prop:"level"},{default:n(()=>[t(F,{modelValue:r.value.level,"onUpdate:modelValue":a[4]||(a[4]=s=>r.value.level=s),placeholder:"请选择会员等级"},{default:n(()=>[t(M,{label:"专业会员",value:"专业会员"}),t(M,{label:"标准会员",value:"标准会员"})]),_:1},8,["modelValue"])]),_:1}),t(C,{label:"剩余资源点",prop:"points"},{default:n(()=>[t(ge,{modelValue:r.value.points,"onUpdate:modelValue":a[5]||(a[5]=s=>r.value.points=s),min:0,max:99999,placeholder:"请输入资源点"},null,8,["modelValue"])]),_:1}),t(C,{label:"到期时间",prop:"expiryDate"},{default:n(()=>[t(fe,{modelValue:r.value.expiryDate,"onUpdate:modelValue":a[6]||(a[6]=s=>r.value.expiryDate=s),type:"date",placeholder:"选择到期时间",format:"YYYY-MM-DD","value-format":"YYYY-MM-DD"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}},Cl=Ye(gl,[["__scopeId","data-v-7edf8266"]]);export{Cl as default};