1 line
13 KiB
JavaScript
Executable File
1 line
13 KiB
JavaScript
Executable File
(self.webpackChunkest_farmework=self.webpackChunkest_farmework||[]).push([[6031],{30179:(s,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>D});var a=t(96540),n=t(41103),l=t(94335),r=t(56347);const c="adminPanel_d2wJ",i="title_Q_Hc",d="error__dYt",j="userListHeader_AkI8",o="addButton_N9Gg",u="tableWrapper_V4tV",h="userTable_zVOS",m="deleteButton_ca8M",x="toggleContainer_cRti",v="switch_LZTy",_="slider_x1Dz",g="loadingIndicator_u01R",p="modalOverlay_jr7D",k="modal_IUrh",b="modalButtons_KaOA",f="saveButton_Z7kw",y="cancelButton_XRG7",N="filterControls_fzJJ",z="searchBox_fCiI",w="searchInput_W7Nb",C="filterOptions_uYm5",S="filterSelect_t64B";var A=t(84743),B=t.n(A),$=t(54769),I=t(91706);const L={onlineMonitor:"onlineMonitor_Ul4Z",currentOnline:"currentOnline_Fh5P",onlineCount:"onlineCount_JMyM",countNumber:"countNumber_rRq5",onlineList:"onlineList_J11z",userBadge:"userBadge_p8vY",chartContainer:"chartContainer_PLdC",chartControls:"chartControls_t0Q8",timeSelect:"timeSelect_ttK5",chart:"chart_Vx5z"};var O=t(22022),J=(t(5845),t(74848));O.t1.register(O.PP,O.kc,O.FN,O.No,O.hE,O.m_,O.s$,O.UA);const M=()=>{const[s,e]=(0,a.useState)({count:0,users:[]}),[t,n]=(0,a.useState)(null),[r,c]=(0,a.useState)(null),i=(0,a.useCallback)((async()=>{try{const s=await l.A.get(`${$.J}/online-users`,{headers:{Authorization:`Bearer ${localStorage.getItem("authToken")}`}});e(s.data.currentOnline),setRecentHistory(s.data.history),c(new Date),n(null)}catch(t){console.error("\u83b7\u53d6\u5728\u7ebf\u7528\u6237\u5931\u8d25:",t),n("\u83b7\u53d6\u5b9e\u65f6\u6570\u636e\u5931\u8d25")}}),[]);return(0,a.useEffect)((()=>{(async()=>{await i()})();const s=setInterval(i,1e4);return()=>{clearInterval(s)}}),[i]),(0,J.jsx)("div",{className:L.onlineMonitor,children:(0,J.jsxs)("div",{className:L.currentOnline,children:[(0,J.jsxs)("div",{className:L.onlineCount,children:[(0,J.jsx)("h3",{children:"\u5f53\u524d\u5728\u7ebf"}),(0,J.jsx)("div",{className:L.countNumber,children:s.count}),r&&(0,J.jsxs)("div",{className:L.lastUpdate,children:["\u6700\u540e\u66f4\u65b0: ",(0,I.GP)(r,"HH:mm:ss")]})]}),(0,J.jsx)("div",{className:L.onlineList,children:s.users.map(((s,e)=>(0,J.jsx)("div",{className:L.userBadge,children:s},e)))})]})})},T=()=>{const[s,e]=(0,a.useState)([]),[t,n]=(0,a.useState)([]),[A,I]=(0,a.useState)(""),[L,O]=(0,a.useState)({class:"all"}),[T,D]=(0,a.useState)({class_name:"",student_ids:"",level:0}),[E,H]=(0,a.useState)(!1),[Y,q]=(0,a.useState)(""),[P,U]=(0,a.useState)(null),[R,V]=(0,a.useState)(""),[F,G]=(0,a.useState)(!1),[W,Z]=(0,a.useState)({}),K=(0,r.W6)();(0,a.useEffect)((()=>{(async()=>{try{(await l.A.get(`${$.J}/verify-admin`,{headers:{Authorization:`Bearer ${localStorage.getItem("authToken")}`}})).data.isAdmin?(G(!0),Q()):K.push("/")}catch(Y){console.error("\u9a8c\u8bc1\u7ba1\u7406\u5458\u6743\u9650\u5931\u8d25:",Y),K.push("/")}})()}),[K]),(0,a.useEffect)((()=>{Q()}),[]),(0,a.useEffect)((()=>{let e=[...s];if(A){const s=A.toLowerCase();e=e.filter((e=>e.username.toLowerCase().includes(s)||e.student_id.toLowerCase().includes(s)||e.class_name.toLowerCase().includes(s)||e.organization.toLowerCase().includes(s)))}"all"!==L.class&&(e=e.filter((s=>s.class_name===L.class))),n(e)}),[s,A,L]);const Q=async()=>{try{const s=(await l.A.get(`${$.J}/admin/users`,{headers:{Authorization:`Bearer ${localStorage.getItem("authToken")}`}})).data.filter((s=>s.level<9));e(s)}catch(Y){console.error("\u83b7\u53d6\u7528\u6237\u5217\u8868\u5931\u8d25:",Y),q("\u83b7\u53d6\u7528\u6237\u5217\u8868\u5931\u8d25")}},X=[...new Set(s.map((s=>s.class_name)))].filter(Boolean);return F?(0,J.jsxs)("div",{className:c,children:[(0,J.jsx)("h2",{className:i,children:"\u7528\u6237\u7ba1\u7406"}),Y&&(0,J.jsx)("p",{className:d,children:Y}),(0,J.jsx)(M,{}),(0,J.jsxs)("div",{className:j,children:[(0,J.jsx)("h3",{children:"\u7528\u6237\u5217\u8868"}),(0,J.jsx)("button",{onClick:()=>H(!0),className:o,children:"\u6dfb\u52a0\u65b0\u7528\u6237"})]}),(0,J.jsxs)("div",{className:N,children:[(0,J.jsx)("div",{className:z,children:(0,J.jsx)("input",{type:"text",placeholder:"\u641c\u7d22\u73ed\u7ea7\u3001\u5b66\u53f7\u3001\u7528\u6237\u540d\u6216\u5355\u4f4d...",value:A,onChange:s=>I(s.target.value),className:w})}),(0,J.jsx)("div",{className:C,children:(0,J.jsxs)("select",{value:L.class,onChange:s=>O((e=>({...e,class:s.target.value}))),className:S,children:[(0,J.jsx)("option",{value:"all",children:"\u6240\u6709\u73ed\u7ea7"}),X.map((s=>(0,J.jsx)("option",{value:s,children:s},s)))]})})]}),(0,J.jsx)("div",{className:u,children:(0,J.jsxs)("table",{className:h,children:[(0,J.jsx)("thead",{children:(0,J.jsxs)("tr",{children:[(0,J.jsx)("th",{children:"\u73ed\u7ea7"}),(0,J.jsx)("th",{children:"\u5b66\u53f7"}),(0,J.jsx)("th",{children:"\u7528\u6237\u540d"}),(0,J.jsx)("th",{children:"\u7ec4\u7ec7"}),(0,J.jsx)("th",{children:"\u6700\u540e\u767b\u5f55"}),(0,J.jsx)("th",{children:"\u573a\u666f\u5316\u529f\u80fd"}),(0,J.jsx)("th",{children:"\u64cd\u4f5c"})]})}),(0,J.jsx)("tbody",{children:t.map((s=>(0,J.jsxs)("tr",{children:[(0,J.jsx)("td",{children:s.class_name}),(0,J.jsx)("td",{children:s.student_id}),(0,J.jsx)("td",{children:s.username}),(0,J.jsx)("td",{children:s.organization}),(0,J.jsx)("td",{children:s.last_login?B()(s.last_login).local().format("YYYY-MM-DD HH:mm:ss"):"\u4ece\u672a\u767b\u5f55"}),(0,J.jsx)("td",{children:(0,J.jsxs)("div",{className:x,children:[(0,J.jsxs)("label",{className:v,children:[(0,J.jsx)("input",{type:"checkbox",checked:1===s.level||4===s.level,onChange:()=>(async s=>{Z((e=>({...e,[s.student_id]:!0})));try{const t=1===s.level||4===s.level?0:1,a=await l.A.post(`${$.J}/admin/toggle-scenario`,{student_id:s.student_id,new_level:t},{headers:{Authorization:`Bearer ${localStorage.getItem("authToken")}`}});a.data.success?e((e=>e.map((e=>e.student_id===s.student_id?{...e,level:a.data.new_level}:e)))):alert(a.data.message||"\u64cd\u4f5c\u5931\u8d25")}catch(Y){console.error("\u5207\u6362\u573a\u666f\u5316\u529f\u80fd\u5931\u8d25:",Y),alert(Y.response?.data?.message||"\u64cd\u4f5c\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5")}finally{Z((e=>({...e,[s.student_id]:!1})))}})(s),disabled:W[s.student_id]}),(0,J.jsx)("span",{className:_})]}),W[s.student_id]&&(0,J.jsx)("span",{className:g,children:"\u5904\u7406\u4e2d..."})]})}),(0,J.jsx)("td",{children:(0,J.jsx)("button",{onClick:()=>(s=>{U(s)})(s),className:m,children:"\u5220\u9664"})})]},s.student_id)))})]})}),E&&(0,J.jsx)("div",{className:p,children:(0,J.jsxs)("div",{className:k,children:[(0,J.jsx)("h3",{children:"\u6dfb\u52a0\u65b0\u7528\u6237"}),R&&(0,J.jsx)("p",{className:d,children:R}),(0,J.jsxs)("form",{onSubmit:async s=>{s.preventDefault(),V("");try{const s=await l.A.post(`${$.J}/admin/users`,T,{headers:{Authorization:`Bearer ${localStorage.getItem("authToken")}`}});s.data.success?(alert(`\u5df2\u6210\u529f\u521b\u5efa ${s.data.createdCount} \u4e2a\u7528\u6237`),D({class_name:"",student_ids:"",level:0}),H(!1),Q()):V(s.data.error||"\u6dfb\u52a0\u7528\u6237\u5931\u8d25")}catch(Y){Y.response&&Y.response.data?V(Y.response.data.error||"\u6dfb\u52a0\u7528\u6237\u5931\u8d25"):V("\u6dfb\u52a0\u7528\u6237\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5")}},children:[(0,J.jsx)("input",{type:"text",placeholder:"\u73ed\u7ea7",value:T.class_name,onChange:s=>D({...T,class_name:s.target.value}),required:!0}),(0,J.jsx)("input",{type:"text",placeholder:"\u5b66\u53f7\uff08\u5355\u4e2a\u6216\u591a\u4e2a\uff0c\u7528\u9017\u53f7\u5206\u9694\uff09",value:T.student_ids,onChange:s=>D({...T,student_ids:s.target.value}),required:!0}),(0,J.jsx)("input",{type:"text",placeholder:"\u9ed8\u8ba4\u5bc6\u7801\u4e0e\u5b66\u53f7\u76f8\u540c",required:!0,disabled:!0}),(0,J.jsxs)("div",{className:b,children:[(0,J.jsx)("button",{type:"submit",className:f,children:"\u4fdd\u5b58"}),(0,J.jsx)("button",{type:"button",onClick:()=>{H(!1),V("")},className:y,children:"\u53d6\u6d88"})]})]})]})}),P&&(0,J.jsx)("div",{className:p,children:(0,J.jsxs)("div",{className:k,children:[(0,J.jsx)("h3",{children:"\u786e\u8ba4\u5220\u9664"}),(0,J.jsxs)("p",{children:['\u60a8\u786e\u5b9a\u8981\u5220\u9664\u7528\u6237 "',P.username,'" \u5417\uff1f\u6b64\u64cd\u4f5c\u4e0d\u53ef\u64a4\u9500\u3002']}),(0,J.jsxs)("div",{className:b,children:[(0,J.jsx)("button",{onClick:()=>(async s=>{try{await l.A.delete(`${$.J}/admin/users/${s}`,{headers:{Authorization:`Bearer ${localStorage.getItem("authToken")}`}}),Q(),U(null)}catch(Y){q("\u5220\u9664\u7528\u6237\u5931\u8d25")}})(P.student_id),className:m,children:"\u786e\u8ba4\u5220\u9664"}),(0,J.jsx)("button",{onClick:()=>U(null),className:y,children:"\u53d6\u6d88"})]})]})})]}):(0,J.jsx)("div",{children:"\u6b63\u5728\u9a8c\u8bc1\u6743\u9650..."})},D=()=>(0,J.jsx)(n.A,{title:"\u7ba1\u7406\u9762\u677f",children:(0,J.jsx)(T,{})})},35358:(s,e,t)=>{var a={"./af":25177,"./af.js":25177,"./ar":61509,"./ar-dz":41488,"./ar-dz.js":41488,"./ar-kw":58676,"./ar-kw.js":58676,"./ar-ly":42353,"./ar-ly.js":42353,"./ar-ma":24496,"./ar-ma.js":24496,"./ar-ps":6947,"./ar-ps.js":6947,"./ar-sa":82682,"./ar-sa.js":82682,"./ar-tn":89756,"./ar-tn.js":89756,"./ar.js":61509,"./az":95533,"./az.js":95533,"./be":28959,"./be.js":28959,"./bg":47777,"./bg.js":47777,"./bm":54903,"./bm.js":54903,"./bn":61290,"./bn-bd":17357,"./bn-bd.js":17357,"./bn.js":61290,"./bo":31545,"./bo.js":31545,"./br":11470,"./br.js":11470,"./bs":44429,"./bs.js":44429,"./ca":7306,"./ca.js":7306,"./cs":56464,"./cs.js":56464,"./cv":73635,"./cv.js":73635,"./cy":64226,"./cy.js":64226,"./da":93601,"./da.js":93601,"./de":77853,"./de-at":26111,"./de-at.js":26111,"./de-ch":54697,"./de-ch.js":54697,"./de.js":77853,"./dv":60708,"./dv.js":60708,"./el":54691,"./el.js":54691,"./en-au":53872,"./en-au.js":53872,"./en-ca":28298,"./en-ca.js":28298,"./en-gb":56195,"./en-gb.js":56195,"./en-ie":66584,"./en-ie.js":66584,"./en-il":65543,"./en-il.js":65543,"./en-in":9033,"./en-in.js":9033,"./en-nz":79402,"./en-nz.js":79402,"./en-sg":43004,"./en-sg.js":43004,"./eo":32934,"./eo.js":32934,"./es":97650,"./es-do":20838,"./es-do.js":20838,"./es-mx":17730,"./es-mx.js":17730,"./es-us":56575,"./es-us.js":56575,"./es.js":97650,"./et":3035,"./et.js":3035,"./eu":3508,"./eu.js":3508,"./fa":119,"./fa.js":119,"./fi":90527,"./fi.js":90527,"./fil":95995,"./fil.js":95995,"./fo":52477,"./fo.js":52477,"./fr":85498,"./fr-ca":26435,"./fr-ca.js":26435,"./fr-ch":37892,"./fr-ch.js":37892,"./fr.js":85498,"./fy":37071,"./fy.js":37071,"./ga":41734,"./ga.js":41734,"./gd":70217,"./gd.js":70217,"./gl":77329,"./gl.js":77329,"./gom-deva":32124,"./gom-deva.js":32124,"./gom-latn":93383,"./gom-latn.js":93383,"./gu":95050,"./gu.js":95050,"./he":11713,"./he.js":11713,"./hi":43861,"./hi.js":43861,"./hr":26308,"./hr.js":26308,"./hu":90609,"./hu.js":90609,"./hy-am":17160,"./hy-am.js":17160,"./id":74063,"./id.js":74063,"./is":89374,"./is.js":89374,"./it":88383,"./it-ch":21827,"./it-ch.js":21827,"./it.js":88383,"./ja":23827,"./ja.js":23827,"./jv":89722,"./jv.js":89722,"./ka":41794,"./ka.js":41794,"./kk":27088,"./kk.js":27088,"./km":96870,"./km.js":96870,"./kn":84451,"./kn.js":84451,"./ko":63164,"./ko.js":63164,"./ku":98174,"./ku-kmr":6181,"./ku-kmr.js":6181,"./ku.js":98174,"./ky":78474,"./ky.js":78474,"./lb":79680,"./lb.js":79680,"./lo":15867,"./lo.js":15867,"./lt":45766,"./lt.js":45766,"./lv":69532,"./lv.js":69532,"./me":58076,"./me.js":58076,"./mi":41848,"./mi.js":41848,"./mk":30306,"./mk.js":30306,"./ml":73739,"./ml.js":73739,"./mn":99053,"./mn.js":99053,"./mr":86169,"./mr.js":86169,"./ms":73386,"./ms-my":92297,"./ms-my.js":92297,"./ms.js":73386,"./mt":77075,"./mt.js":77075,"./my":72264,"./my.js":72264,"./nb":22274,"./nb.js":22274,"./ne":8235,"./ne.js":8235,"./nl":92572,"./nl-be":43784,"./nl-be.js":43784,"./nl.js":92572,"./nn":54566,"./nn.js":54566,"./oc-lnc":69330,"./oc-lnc.js":69330,"./pa-in":29849,"./pa-in.js":29849,"./pl":94418,"./pl.js":94418,"./pt":79834,"./pt-br":48303,"./pt-br.js":48303,"./pt.js":79834,"./ro":24457,"./ro.js":24457,"./ru":82271,"./ru.js":82271,"./sd":1221,"./sd.js":1221,"./se":33478,"./se.js":33478,"./si":17538,"./si.js":17538,"./sk":5784,"./sk.js":5784,"./sl":46637,"./sl.js":46637,"./sq":86794,"./sq.js":86794,"./sr":45719,"./sr-cyrl":3322,"./sr-cyrl.js":3322,"./sr.js":45719,"./ss":56e3,"./ss.js":56e3,"./sv":41011,"./sv.js":41011,"./sw":40748,"./sw.js":40748,"./ta":11025,"./ta.js":11025,"./te":11885,"./te.js":11885,"./tet":28861,"./tet.js":28861,"./tg":86571,"./tg.js":86571,"./th":55802,"./th.js":55802,"./tk":59527,"./tk.js":59527,"./tl-ph":29231,"./tl-ph.js":29231,"./tlh":31052,"./tlh.js":31052,"./tr":85096,"./tr.js":85096,"./tzl":79846,"./tzl.js":79846,"./tzm":81765,"./tzm-latn":97711,"./tzm-latn.js":97711,"./tzm.js":81765,"./ug-cn":48414,"./ug-cn.js":48414,"./uk":16618,"./uk.js":16618,"./ur":57777,"./ur.js":57777,"./uz":57609,"./uz-latn":72475,"./uz-latn.js":72475,"./uz.js":57609,"./vi":21135,"./vi.js":21135,"./x-pseudo":64051,"./x-pseudo.js":64051,"./yo":82218,"./yo.js":82218,"./zh-cn":52648,"./zh-cn.js":52648,"./zh-hk":1632,"./zh-hk.js":1632,"./zh-mo":31541,"./zh-mo.js":31541,"./zh-tw":50304,"./zh-tw.js":50304};function n(s){var e=l(s);return t(e)}function l(s){if(!t.o(a,s)){var e=new Error("Cannot find module '"+s+"'");throw e.code="MODULE_NOT_FOUND",e}return a[s]}n.keys=function(){return Object.keys(a)},n.resolve=l,s.exports=n,n.id=35358}}]); |