Files
jizhi/backend/MiaoJiZhang.Api/wwwroot/assets/Users-CKf2UaT3.js
T

1 line
7.6 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.
import{$ as e,F as t,M as n,R as r,b as i,bt as a,g as o,h as s,m as c,ot as l,p as u,q as d,s as f,t as p,v as m,y as h}from"./api-DftvpHMa.js";import{a as g}from"./config-provider-DjHSmQsy.js";import{t as ee}from"./ReloadOutlined-B8fhuZd5.js";import{t as _}from"./time-pIfF89ap.js";var v={style:{display:`flex`,"justify-content":`space-between`,"align-items":`center`,"margin-bottom":`16px`}},y={style:{"margin-bottom":`14px`,display:`flex`,gap:`8px`}},te={style:{"font-size":`10px`,color:`#999`}},b={key:0},ne={key:1,style:{color:`#ccc`}},x={style:{color:`#999`}},S={key:2,style:{"font-size":`10px`,color:`#999`,"margin-top":`3px`}},C=15,w=i({__name:`Users`,setup(i){let w=e([]),T=e(0),E=e(!0),D=e(``),O=e(1),k=[{title:`ID`,dataIndex:`id`,key:`id`,width:60},{title:`用户名`,dataIndex:`username`,key:`un`,width:120},{title:`模式`,dataIndex:`appMode`,key:`mode`,width:80},{title:`AI 权限`,key:`aiPermission`,width:100},{title:`AI 对话额度`,key:`aiQuota`,width:150},{title:`AI 伙伴`,key:`comp`,width:150},{title:`账单(总/AI)`,key:`tx`},{title:`状态`,key:`status`,width:100},{title:`注册时间`,dataIndex:`createdAt`,key:`reg`,width:110},{title:`最后登录`,dataIndex:`lastLoginAt`,key:`login`,width:110},{title:``,key:`act`,width:250}],A=e(!1),j=e(``),M=e(null),N=e(!1),P=e(!1),F=e(null),I=e(50),L=e(`day`),R=e(!1),z={day:`每天`,week:`每周`,month:`每月`},B=e=>z[e];n(V);async function V(){E.value=!0;try{let e=await p.users({search:D.value||void 0,page:O.value,limit:C});w.value=e.list,T.value=e.total}finally{E.value=!1}}async function H(){O.value=1,V()}async function U(e){let t=await p.toggleBan(e.id);g.success(t.isBanned?`已封禁 ${e.username}`:`已解封 ${e.username}`),V()}async function W(e,t){let n=e.aiEnabled;e.aiEnabled=t;try{await p.updateUserPermissions(e.id,t),g.success(t?`已开放 AI 功能`:`已关闭该用户全部 AI 功能`)}catch{e.aiEnabled=n,g.error(`AI 权限修改失败`)}}function G(e){F.value=e,I.value=e.aiChatLimit,L.value=e.aiChatPeriod,R.value=!1,N.value=!0}async function K(){let e=F.value;if(e){P.value=!0;try{await p.updateAiChatQuota(e.id,I.value,L.value,R.value),g.success(`AI 对话额度已更新`),N.value=!1,await V()}catch{g.error(`AI 对话额度更新失败`)}finally{P.value=!1}}}async function re(e){await p.cancelAccountClosure(e.id),g.success(`已取消 `+e.username+` 的注销流程`),V()}async function ie(e){j.value=e.nickname||e.username,A.value=!0,M.value=await p.userStats(e.id)}return(e,n)=>{let i=r(`a-button`),p=r(`a-input-search`),g=r(`a-tag`),z=r(`a-switch`),q=r(`a-popconfirm`),ae=r(`a-table`),oe=r(`a-alert`),se=r(`a-input-number`),J=r(`a-form-item`),Y=r(`a-select-option`),ce=r(`a-select`),le=r(`a-checkbox`),ue=r(`a-form`),X=r(`a-modal`),Z=r(`a-statistic`),Q=r(`a-card`),$=r(`a-col`),de=r(`a-row`);return t(),o(f,null,[u(`div`,v,[n[7]||=u(`h2`,null,`用户管理`,-1),h(i,{onClick:V},{default:d(()=>[h(l(ee)),n[6]||=m(` 刷新`,-1)]),_:1})]),u(`div`,y,[h(p,{value:D.value,"onUpdate:value":n[0]||=e=>D.value=e,placeholder:`搜索用户名...`,style:{"max-width":`280px`},onSearch:H},null,8,[`value`])]),h(ae,{columns:k,dataSource:w.value,loading:E.value,rowKey:`id`,size:`small`,pagination:{current:O.value,total:T.value,pageSize:C,showTotal:e=>`共 ${e} 人`,onChange:e=>{O.value=e,V()}}},{bodyCell:d(({column:e,record:r})=>[e.key===`mode`?(t(),c(g,{key:0,color:r.appMode===`ai`?`blue`:`green`},{default:d(()=>[m(a(r.appMode===`ai`?`全AI`:`普通`),1)]),_:2},1032,[`color`])):s(``,!0),e.key===`aiPermission`?(t(),c(z,{key:1,checked:r.aiEnabled,"checked-children":`开`,"un-checked-children":`关`,onChange:e=>W(r,e)},null,8,[`checked`,`onChange`])):s(``,!0),e.key===`aiQuota`?(t(),o(f,{key:2},[h(i,{type:`link`,size:`small`,onClick:e=>G(r),style:{padding:`0`}},{default:d(()=>[m(a(r.aiChatUsed)+`/`+a(r.aiChatLimit===0?`不限`:r.aiChatLimit)+` · `+a(B(r.aiChatPeriod)),1)]),_:2},1032,[`onClick`]),u(`div`,te,a(l(_)(r.aiChatResetAt))+` 重置 `,1)],64)):s(``,!0),e.key===`comp`?(t(),o(f,{key:3},[r.companion?(t(),o(`span`,b,`形象:`+a(r.companion.avatarKey)+` · 性格:`+a(r.companion.personaKey),1)):(t(),o(`span`,ne,`未设置`))],64)):s(``,!0),e.key===`tx`?(t(),o(f,{key:4},[m(a(r.txCount)+` `,1),u(`span`,x,`(AI:`+a(r.aiTxCount)+`)`,1)],64)):s(``,!0),e.key===`status`?(t(),o(f,{key:5},[r.accountClosureScheduledAt?(t(),c(g,{key:0,color:`orange`},{default:d(()=>[...n[8]||=[m(`注销中`,-1)]]),_:1})):(t(),c(g,{key:1,color:r.isBanned?`red`:`default`},{default:d(()=>[m(a(r.isBanned?`已封`:`正常`),1)]),_:2},1032,[`color`])),r.accountClosureScheduledAt?(t(),o(`div`,S,a(l(_)(r.accountClosureScheduledAt))+` 删除 `,1)):s(``,!0)],64)):s(``,!0),e.key===`reg`?(t(),o(f,{key:6},[m(a(l(_)(r.createdAt)),1)],64)):s(``,!0),e.key===`login`?(t(),o(f,{key:7},[m(a(r.lastLoginAt?l(_)(r.lastLoginAt):`从未`),1)],64)):s(``,!0),e.key===`act`?(t(),o(f,{key:8},[h(i,{size:`small`,style:{"margin-right":`6px`},onClick:e=>G(r)},{default:d(()=>[...n[9]||=[m(`额度`,-1)]]),_:1},8,[`onClick`]),h(i,{size:`small`,style:{"margin-right":`6px`},onClick:e=>ie(r)},{default:d(()=>[...n[10]||=[m(`📊 统计`,-1)]]),_:1},8,[`onClick`]),r.accountClosureScheduledAt?(t(),c(q,{key:0,title:`确定取消该用户的注销流程?`,onConfirm:e=>re(r)},{default:d(()=>[h(i,{size:`small`,type:`primary`},{default:d(()=>[...n[11]||=[m(`取消注销`,-1)]]),_:1})]),_:1},8,[`onConfirm`])):(t(),c(q,{key:1,title:r.isBanned?`确定解封?`:`确定封禁?`,onConfirm:e=>U(r)},{default:d(()=>[h(i,{size:`small`,danger:!r.isBanned},{default:d(()=>[m(a(r.isBanned?`解封`:`封禁`),1)]),_:2},1032,[`danger`])]),_:2},1032,[`title`,`onConfirm`]))],64)):s(``,!0)]),_:1},8,[`dataSource`,`loading`,`pagination`]),h(X,{open:N.value,"onUpdate:open":n[4]||=e=>N.value=e,title:`调整 AI 对话额度`,"confirm-loading":P.value,"ok-text":`保存`,"cancel-text":`取消`,onOk:K},{default:d(()=>[F.value?(t(),c(oe,{key:0,type:`info`,message:F.value.nickname||F.value.username,"show-icon":``,style:{"margin-bottom":`14px`}},null,8,[`message`])):s(``,!0),h(ue,{layout:`vertical`},{default:d(()=>[h(J,{label:`周期内可用次数`},{default:d(()=>[h(se,{value:I.value,"onUpdate:value":n[1]||=e=>I.value=e,min:0,max:1e6,style:{width:`100%`}},null,8,[`value`]),n[12]||=u(`div`,{style:{"font-size":`11px`,color:`#999`,"margin-top":`4px`}},`设置为 0 表示不限次数。`,-1)]),_:1}),h(J,{label:`重置周期`},{default:d(()=>[h(ce,{value:L.value,"onUpdate:value":n[2]||=e=>L.value=e},{default:d(()=>[h(Y,{value:`day`},{default:d(()=>[...n[13]||=[m(`每天(上海时间 00:00`,-1)]]),_:1}),h(Y,{value:`week`},{default:d(()=>[...n[14]||=[m(`每周(周一 00:00`,-1)]]),_:1}),h(Y,{value:`month`},{default:d(()=>[...n[15]||=[m(`每月(每月 1 日 00:00`,-1)]]),_:1})]),_:1},8,[`value`])]),_:1}),h(le,{checked:R.value,"onUpdate:checked":n[3]||=e=>R.value=e},{default:d(()=>[...n[16]||=[m(`立即将本周期已用次数清零`,-1)]]),_:1},8,[`checked`])]),_:1})]),_:1},8,[`open`,`confirm-loading`]),h(X,{open:A.value,"onUpdate:open":n[5]||=e=>A.value=e,title:`${j.value} 使用统计`,footer:null,width:420},{default:d(()=>[M.value?(t(),c(de,{key:0,gutter:12},{default:d(()=>[h($,{span:8},{default:d(()=>[h(Q,{size:`small`},{default:d(()=>[h(Z,{title:`总账单`,value:M.value.totalTransactions},null,8,[`value`])]),_:1})]),_:1}),h($,{span:8},{default:d(()=>[h(Q,{size:`small`},{default:d(()=>[h(Z,{title:`AI 记账`,value:M.value.aiBooked},null,8,[`value`])]),_:1})]),_:1}),h($,{span:8},{default:d(()=>[h(Q,{size:`small`},{default:d(()=>[h(Z,{title:`AI 准确率`,value:M.value.aiAccuracy,suffix:`%`,"value-style":{color:M.value.aiAccuracy>=70?`#00B386`:`#F0642D`}},null,8,[`value`,`value-style`])]),_:1})]),_:1})]),_:1})):s(``,!0)]),_:1},8,[`open`,`title`])],64)}}});export{w as default};