1 |
- import{_ as e,B as l,r as a,o as t,a as o,N as d,b as u,d as i,j as s,f as r,F as n,g as c,l as p,i as m,W as v,h as f,n as g,y as h,k as _,aM as b,m as w,aN as y,p as V,T as k,J as x,t as U,a8 as C,Y as z,K as j,z as O}from"./index.e57f2c47.1728219882564.js";import{_ as I}from"./defavatar.6cebf928.1728219882564.js";import{_ as S}from"./el-input-upload.51ad76d8.1728219882564.js";import{S as Y}from"./sortable.esm.3c354c6c.1728219882564.js";const D={class:"userManager"},G={class:"flex flex-col flex-shrink-0 bg-white w-52 px-2 py-4 rounded-lg",style:{height:"calc(100vh - 30px)"}},M={class:"h-full relative overflow-y-scroll leftScrollBackground"},q={class:"space-y-1 mb-4",id:"list"},B=["onClick","data-id"],P={class:"flex items-center pr-1"},T={key:0,class:"flex items-center gap-2"},A={class:"sticky bottom-0 flex justify-center"},E={class:"w-full"},K={class:"p-4 bg-white rounded-lg overflow-hidden flex flex-wrap gap-4"},L={class:"mt-2 w-full"},N={class:"bg-white p-4 rounded-lg overflow-hidden w-full"},Q=["src"],F={key:1,class:"rounded-full m-auto",src:I,style:{width:"40px",height:"40px"}},J={class:"grid grid-cols-2 grid-rows-subgrid gap-y-2 gap-x-2"},R={class:"flex mt-6 mb-2"};var W=e({__name:"user",setup(e){let I=null;const W=l({load:!0,data:[]}),$=a({name:"",sort:0,id:""}),H=a(!1),X=()=>{W.load=!0,v({url:"/User/UserGroup"}).then((e=>{1===e.code&&(W.data=e.data)})).finally((e=>{W.load=!1,W.data.unshift({name:"未分组用户",id:0}),W.data.unshift({name:"全部用户",id:""})}))};X();const Z=a(""),ee={mail:"",password:"",manager:0,nickname:"",status:0,group_id:0},le={id:"",name:"",sort:0},ae=(e={})=>{$.value=0===e?Object.assign({},le):Object.assign({},e),H.value=!0,setTimeout((()=>{document.querySelector(".autofocus input").click()}),200)},te=a(!1),oe=a(Object.assign({},ee)),de=a(!1),ue=a([]),ie=a({mail:"",nickname:"",status:""}),se=()=>{v({url:"/User/createGroup",method:"post",data:{type:"edit",info:$.value}}).then((e=>{j.success(e.msg),1===e.code&&(X(),H.value=!1)}))},re=e=>{if(e===O().format("YYYY-MM-DD"))return!0};t((()=>{let e=document.getElementById("list");if(e){const l={animation:200,delay:500,delayOnTouchOnly:!0,draggable:".item",onUpdate:function(e){let l=I.toArray(),a=[],t=l.length;l.forEach(((e,l)=>{a.push({id:parseInt(e),sort:t-l})})),v({url:"/User/sortGroup",method:"post",data:a}).then((e=>{e.code}))}};I=Y.create(e,l)}}));const ne=()=>{oe.value=Object.assign({},ee),de.value=!0},ce=()=>{v({url:"/admin/userUpdate",method:"post",data:oe.value}).then((e=>{1===e.code&&(de.value=!1,ge()),j.success(e.msg)}))},pe=a({current_page:1,per_page:50,total:0,refresh(e){pe.value.current_page=e,ge()},sizes(e){pe.value.per_page=e,ge()}}),me=a([]),ve={order:"desc",prop:"id"},fe=a(!0),ge=()=>{fe.value=!0,v({url:"/admin/UserList",method:"post",data:{search:{...ie.value,group_id:Z.value},page:pe.value.current_page,limit:pe.value.per_page,sort:ve}}).then((e=>{let l=e.data;me.value=l.data,Object.assign(pe.value,l)})).finally((e=>{fe.value=!1}))},he=({column:e,prop:l,order:a})=>{let t="asc";"descending"===a&&(t="desc"),ve.order=t,ve.prop=l,ge()};return ge(),(e,l)=>{const a=o("el-icon"),t=o("el-button"),O=o("el-input"),I=o("el-option"),Y=o("el-select"),le=o("el-table-column"),ve=o("el-text"),_e=o("el-table"),be=o("el-pagination"),we=o("el-dialog"),ye=o("el-form-item"),Ve=o("el-form"),ke=o("el-link"),xe=o("el-drawer"),Ue=d("loading");return u(),i("div",D,[s((u(),i("div",G,[r("div",M,[r("div",q,[(u(!0),i(n,null,c(W.data,(e=>(u(),f(k,null,{default:m((()=>[r("div",{onClick:l=>(e=>{Z.value=e.id,ge()})(e),"data-id":null==e?void 0:e.id,class:g(["relative item px-3 py-1.5 text-sm rounded-sm cursor-pointer flex overflow-hidden justify-between items-center",{"bg-slate-200 text-blue-400":Z.value===e.id}])},[r("div",P,[r("span",null,h(e.name),1)]),e.id?(u(),i("div",T,[p(a,{class:"hover:text-blue-600",onClick:w((l=>ae(e)),["stop"])},{default:m((()=>[p(_(b))])),_:2},1032,["onClick"]),p(a,{class:"cursor-move"},{default:m((()=>[p(_(y))])),_:1})])):V("",!0)],10,B)])),_:2},1024)))),256))]),r("div",A,[p(t,{class:"w-11/12",type:"primary",onClick:l[0]||(l[0]=e=>ae(0))},{default:m((()=>l[21]||(l[21]=[x("创建用户分组")]))),_:1})])])])),[[Ue,W.load]]),r("div",E,[r("div",K,[p(O,{modelValue:ie.value.mail,"onUpdate:modelValue":l[1]||(l[1]=e=>ie.value.mail=e),style:{width:"200px"},placeholder:"邮箱",clearable:""},null,8,["modelValue"]),p(O,{modelValue:ie.value.nickname,"onUpdate:modelValue":l[2]||(l[2]=e=>ie.value.nickname=e),style:{width:"200px"},placeholder:"昵称",clearable:""},null,8,["modelValue"]),p(Y,{modelValue:ie.value.status,"onUpdate:modelValue":l[3]||(l[3]=e=>ie.value.status=e),class:"w-60",placeholder:"账号状态",clearable:""},{default:m((()=>[p(I,{value:"",label:"全部"}),p(I,{value:1,label:"冻结"}),p(I,{value:0,label:"正常"})])),_:1},8,["modelValue"]),p(t,{onClick:ge,type:"primary"},{default:m((()=>l[22]||(l[22]=[x("搜索")]))),_:1}),p(t,{type:"danger",onClick:ne},{default:m((()=>l[23]||(l[23]=[x("添加新用户")]))),_:1})]),s((u(),i("div",L,[r("div",N,[p(_e,{stripe:"",onSortChange:he,data:me.value,height:"calc(100vh - 190px)"},{default:m((()=>[p(le,{prop:"id",sortable:"custom",label:"用户ID",align:"center","min-width":"100"}),p(le,{prop:"avatar",label:"头像",align:"center","min-width":"70"},{default:m((e=>[e.row.avatar?(u(),i("img",{key:0,class:"rounded-full m-auto",src:_(U)(e.row.avatar),style:{width:"40px",height:"40px"}},null,8,Q)):(u(),i("img",F))])),_:1}),p(le,{prop:"nickname","show-overflow-tooltip":"",label:"昵称","min-width":"200"}),p(le,{prop:"mail",label:"邮箱","min-width":"200"}),p(le,{prop:"login_ip",label:"登录IP","min-width":"200"}),p(le,{prop:"active",sortable:"custom",label:"今日是否活跃",align:"center","min-width":"140"},{default:m((e=>[re(e.row.active)?(u(),f(ve,{key:0,type:"primary",size:"small"},{default:m((()=>l[24]||(l[24]=[x("活跃")]))),_:1})):(u(),f(ve,{key:1,type:"info",size:"small"},{default:m((()=>l[25]||(l[25]=[x("非活跃")]))),_:1}))])),_:1}),p(le,{prop:"group_id",sortable:"custom",label:"分组",align:"center","min-width":"140"},{default:m((e=>[p(ve,{type:"primary"},{default:m((()=>{var l;return[x(h((null==(l=W.data.find((l=>l.id===e.row.group_id)))?void 0:l.name)||""),1)]})),_:2},1024)])),_:1}),p(le,{prop:"login_time",sortable:"custom",label:"上次登录时间","min-width":"200"}),p(le,{prop:"manager",label:"账号状态",align:"center","min-width":"100"},{default:m((e=>[0===e.row.status?(u(),f(ve,{key:0,type:"info",size:"large"},{default:m((()=>l[26]||(l[26]=[x("正常")]))),_:1})):V("",!0),1===e.row.status?(u(),f(ve,{key:1,type:"danger",size:"large"},{default:m((()=>l[27]||(l[27]=[x("冻结封锁")]))),_:1})):V("",!0)])),_:1}),p(le,{prop:"register_ip",label:"注册IP",align:"center","min-width":"200"}),p(le,{prop:"qq_open_id","show-overflow-tooltip":"",label:"QQ OpenId",align:"center","min-width":"200"}),p(le,{prop:"create_time",sortable:"custom",label:"注册时间",align:"center","min-width":"200"}),p(le,{prop:"login_fail_count",sortable:"custom",label:"登录失败次数",align:"center","min-width":"150"}),p(le,{prop:"manager",label:"权限",align:"center","min-width":"100"},{default:m((e=>[0===e.row.manager?(u(),f(ve,{key:0,type:"info",size:"small"},{default:m((()=>l[28]||(l[28]=[x("用户")]))),_:1})):V("",!0),1===e.row.manager?(u(),f(ve,{key:1,type:"danger",size:"small"},{default:m((()=>l[29]||(l[29]=[x("管理员")]))),_:1})):V("",!0)])),_:1}),p(le,{fixed:"right",label:"操作","min-width":"120",align:"center"},{default:m((e=>[r("div",J,[p(t,{text:"",type:"primary",onClick:l=>{return a=e.row,oe.value=Object.assign({},ee,a),void(de.value=!0);var a},style:{"margin-left":"0"},size:"small"},{default:m((()=>l[30]||(l[30]=[x(" 操作 ")]))),_:2},1032,["onClick"]),p(t,{text:"",type:"info",onClick:l=>{return a=e.row,te.value=!0,ue.value=[],void v({url:"/admin/userLoginRecord",method:"post",data:{user_id:a.id}}).then((e=>{1===e.code&&(ue.value=e.data)}));var a},style:{"margin-left":"0"},size:"small"},{default:m((()=>l[31]||(l[31]=[x("日志 ")]))),_:2},1032,["onClick"])])])),_:1})])),_:1},8,["data"]),p(be,{"page-sizes":[15,20,30,40,50,100],onCurrentChange:pe.value.refresh,class:"mt-6",layout:"sizes,total,prev,pager,jumper","page-size":pe.value.per_page,onSizeChange:pe.value.sizes,total:pe.value.total},null,8,["onCurrentChange","page-size","onSizeChange","total"])])])),[[Ue,fe.value]])]),p(we,{title:"登录记录(最近100条记录)",modelValue:te.value,"onUpdate:modelValue":l[4]||(l[4]=e=>te.value=e),width:"80%","align-center":"","close-on-click-modal":!1},{default:m((()=>[p(_e,{border:"",data:ue.value,height:"calc(100vh - 203px)",he:""},{default:m((()=>[p(le,{prop:"ip",label:"登录IP",align:"center",width:"180"}),p(le,{prop:"create_time",label:"登录时间",align:"center",width:"180"}),p(le,{prop:"user_agent",label:"User-Agent",align:"center","min-width":"200"})])),_:1},8,["data"])])),_:1},8,["modelValue"]),p(xe,{title:"编辑用户",modelValue:de.value,"onUpdate:modelValue":l[16]||(l[16]=e=>de.value=e),size:500,"align-center":"","close-on-click-modal":!1},{default:m((()=>[p(Ve,{modelValue:oe.value,"onUpdate:modelValue":l[14]||(l[14]=e=>oe.value=e),"label-width":"100px","label-position":"top"},{default:m((()=>[p(ye,{label:"头像"},{default:m((()=>[p(S,{modelValue:oe.value.avatar,"onUpdate:modelValue":l[5]||(l[5]=e=>oe.value.avatar=e),placeholder:"请设置头像"},null,8,["modelValue"])])),_:1}),p(ye,{label:"邮箱"},{default:m((()=>[p(O,{modelValue:oe.value.mail,"onUpdate:modelValue":l[6]||(l[6]=e=>oe.value.mail=e),placeholder:"请输入邮箱"},null,8,["modelValue"])])),_:1}),p(ye,{label:"昵称"},{default:m((()=>[p(O,{modelValue:oe.value.nickname,"onUpdate:modelValue":l[7]||(l[7]=e=>oe.value.nickname=e),placeholder:"设置昵称"},null,8,["modelValue"])])),_:1}),p(ye,{label:"设置密码"},{default:m((()=>[p(O,{modelValue:oe.value.password,"onUpdate:modelValue":l[8]||(l[8]=e=>oe.value.password=e),placeholder:"请设置新密码,否则请留空"},null,8,["modelValue"])])),_:1}),p(ye,{label:"用户分组"},{default:m((()=>[p(Y,{modelValue:oe.value.group_id,"onUpdate:modelValue":l[9]||(l[9]=e=>oe.value.group_id=e),class:"w-full",placeholder:"请选择用户分组"},{default:m((()=>[p(I,{label:"不设置分组",value:0}),(u(!0),i(n,null,c(W.data,(e=>(u(),f(k,null,{default:m((()=>[e.id>0?(u(),f(I,{key:0,label:e.name,value:e.id},null,8,["label","value"])):V("",!0)])),_:2},1024)))),256))])),_:1},8,["modelValue"])])),_:1}),p(ye,{label:"状态"},{default:m((()=>[p(Y,{modelValue:oe.value.status,"onUpdate:modelValue":l[10]||(l[10]=e=>oe.value.status=e),class:"w-full",placeholder:"请选择用户状态"},{default:m((()=>[p(I,{label:"正常",value:0}),p(I,{label:"冻结",value:1})])),_:1},8,["modelValue"])])),_:1}),p(ye,{label:"是否管理员"},{default:m((()=>[p(Y,{modelValue:oe.value.manager,"onUpdate:modelValue":l[11]||(l[11]=e=>oe.value.manager=e),class:"w-full",placeholder:"请选择"},{default:m((()=>[p(I,{label:"用户",value:0}),p(I,{label:"管理员",value:1})])),_:1},8,["modelValue"])])),_:1}),p(ye,{label:"登录失败次数"},{default:m((()=>[p(O,{modelValue:oe.value.login_fail_count,"onUpdate:modelValue":l[13]||(l[13]=e=>oe.value.login_fail_count=e),class:"w-full"},{append:m((()=>[p(t,{onClick:l[12]||(l[12]=e=>{oe.value.login_fail_count=0})},{default:m((()=>l[32]||(l[32]=[x("重置")]))),_:1})])),_:1},8,["modelValue"])])),_:1})])),_:1},8,["modelValue"]),p(t,{class:"mt-4 w-full",onClick:ce,type:"primary",size:"large"},{default:m((()=>l[33]||(l[33]=[x("提交")]))),_:1}),oe.value.id?(u(),f(ke,{key:0,class:"mt-6",type:"danger",onClick:l[15]||(l[15]=e=>(async e=>{try{await z.confirm("您确定删除当前用户?删除后数据将全部删除!","危险操作警告"),1===(await v({url:"/admin/userDelete",method:"post",data:{id:e}})).code&&(j.success("已删除当前用户所有数据"),de.value=!1,ge())}catch(l){j.info("操作已取消")}})(oe.value.id))},{default:m((()=>l[34]||(l[34]=[x("删除用户")]))),_:1})):V("",!0)])),_:1},8,["modelValue"]),p(we,{modelValue:H.value,"onUpdate:modelValue":l[20]||(l[20]=e=>H.value=e),width:"500px",title:"用户分组编辑"},{default:m((()=>[l[37]||(l[37]=r("div",{class:"mb-2"}," 分组名称 ",-1)),p(O,{onKeypress:l[17]||(l[17]=C(w((()=>{}),["stop"]),["enter"])),modelValue:$.value.name,"onUpdate:modelValue":l[18]||(l[18]=e=>$.value.name=e),class:"autofocus mb-4","show-word-limit":"",maxlength:"50",placeholder:"请输入分组名称"},null,8,["modelValue"]),$.value.id?(u(),f(ke,{key:0,type:"danger",onClick:l[19]||(l[19]=e=>{return l=$.value,void z.confirm(`是否删除【${l.name}】分组,删除后该分组用户将会被分配至未分组下`,"危险警告").then((e=>{v({url:"/User/createGroup",method:"post",data:{type:"del",id:l.id}}).then((e=>{j.success(e.msg),1===e.code&&(X(),H.value=!1)}))}));var l})},{default:m((()=>l[35]||(l[35]=[x("删除该分组 ")]))),_:1})):V("",!0),r("div",R,[p(t,{class:"m-auto w-2/5",type:"primary",onClick:se},{default:m((()=>l[36]||(l[36]=[x("保存")]))),_:1})])])),_:1},8,["modelValue"])])}}},[["__scopeId","data-v-70e40ff8"]]);export{W as default};
|