diff --git a/ruoyi-admin/src/main/resources/static/1283.50da0920.async.js b/ruoyi-admin/src/main/resources/static/1283.50da0920.async.js
new file mode 100644
index 0000000..fe70218
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/static/1283.50da0920.async.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[1283],{21283:function(Y,I,s){s.r(I);var W=s(97857),Z=s.n(W),y=s(5574),L=s.n(y),w=s(15009),a=s.n(w),U=s(99289),g=s.n(U),b=s(67294),d=s(76772),_=s(2453),D=s(83622),C=s(17788),K=s(6110),$=s(65385),x=s(2236),R=s(11475),B=s(48689),k=s(3355),S=s(24969),j=s(38002),H=s(94162),e=s(85893),F=function(){var E=g()(a()().mark(function h(l){var m,u;return a()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(m=_.ZP.loading("\u6B63\u5728\u5220\u9664"),l){r.next=3;break}return r.abrupt("return",!0);case 3:return r.prev=3,r.next=6,(0,j.jw)(l.map(function(M){return M.infoId}).join(","));case 6:return u=r.sent,m(),u.code===200?_.ZP.success("\u5220\u9664\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"):_.ZP.error(u.msg),r.abrupt("return",!0);case 12:return r.prev=12,r.t0=r.catch(3),m(),_.ZP.error("\u5220\u9664\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),r.abrupt("return",!1);case 17:case"end":return r.stop()}},h,null,[[3,12]])}));return function(l){return E.apply(this,arguments)}}(),N=function(){var E=g()(a()().mark(function h(){var l,m;return a()().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return l=_.ZP.loading("\u8BF7\u7A0D\u5019"),n.prev=1,n.next=4,(0,j.KF)();case 4:return m=n.sent,l(),m.code===200?_.ZP.success("\u6E05\u7A7A\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"):_.ZP.error(m.msg),n.abrupt("return",!0);case 10:return n.prev=10,n.t0=n.catch(1),l(),_.ZP.error("\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),n.abrupt("return",!1);case 15:case"end":return n.stop()}},h,null,[[1,10]])}));return function(){return E.apply(this,arguments)}}(),G=function(){var E=g()(a()().mark(function h(l){var m,u;return a()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return m=_.ZP.loading("\u6B63\u5728\u89E3\u9501"),r.prev=1,r.next=4,(0,j.Ny)(l);case 4:return u=r.sent,m(),u.code===200?_.ZP.success("\u89E3\u9501\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"):_.ZP.error(u.msg),r.abrupt("return",!0);case 10:return r.prev=10,r.t0=r.catch(1),m(),_.ZP.error("\u89E3\u9501\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),r.abrupt("return",!1);case 15:case"end":return r.stop()}},h,null,[[1,10]])}));return function(l){return E.apply(this,arguments)}}(),z=function(){var E=g()(a()().mark(function h(){var l;return a()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return l=_.ZP.loading("\u6B63\u5728\u5BFC\u51FA"),u.prev=1,u.next=4,(0,j.Q6)();case 4:return l(),_.ZP.success("\u5BFC\u51FA\u6210\u529F"),u.abrupt("return",!0);case 9:return u.prev=9,u.t0=u.catch(1),l(),_.ZP.error("\u5BFC\u51FA\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),u.abrupt("return",!1);case 14:case"end":return u.stop()}},h,null,[[1,9]])}));return function(){return E.apply(this,arguments)}}(),Q=function(){var h=(0,b.useRef)(),l=(0,b.useRef)(),m=(0,b.useState)([]),u=L()(m,2),n=u[0],r=u[1],M=(0,d.useAccess)(),J={0:{label:"\u6210\u529F",key:"0",value:"0",text:"\u6210\u529F",status:"success",listClass:"success"},1:{label:"\u5931\u8D25",key:"1",value:"1",text:"\u5931\u8D25",status:"error",listClass:"danger"}},V=(0,d.useIntl)();(0,b.useEffect)(function(){},[]);var X=[{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.info_id",defaultMessage:"\u8BBF\u95EE\u7F16\u53F7"}),dataIndex:"infoId",valueType:"text",hideInSearch:!0},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.user_name",defaultMessage:"\u7528\u6237\u8D26\u53F7"}),dataIndex:"userName",valueType:"text"},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.ipaddr",defaultMessage:"\u767B\u5F55IP\u5730\u5740"}),dataIndex:"ipaddr",valueType:"text"},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.login_location",defaultMessage:"\u767B\u5F55\u5730\u70B9"}),dataIndex:"loginLocation",valueType:"text",hideInSearch:!0},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.browser",defaultMessage:"\u6D4F\u89C8\u5668\u7C7B\u578B"}),dataIndex:"browser",valueType:"text",hideInSearch:!0},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.os",defaultMessage:"\u64CD\u4F5C\u7CFB\u7EDF"}),dataIndex:"os",valueType:"text",hideInSearch:!0},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.status",defaultMessage:"\u767B\u5F55\u72B6\u6001"}),dataIndex:"status",valueType:"select",render:function(p,f){return(0,e.jsx)(H.Z,{enums:J,value:f.status})}},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.msg",defaultMessage:"\u63D0\u793A\u6D88\u606F"}),dataIndex:"msg",valueType:"text",hideInSearch:!0},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.login_time",defaultMessage:"\u8BBF\u95EE\u65F6\u95F4"}),dataIndex:"loginTime",valueType:"dateTime"}];return(0,e.jsxs)(K._z,{children:[(0,e.jsx)("div",{style:{width:"100%",float:"right"},children:(0,e.jsx)($.Z,{headerTitle:V.formatMessage({id:"pages.searchTable.title",defaultMessage:"\u4FE1\u606F"}),actionRef:l,formRef:h,rowKey:"infoId",search:{labelWidth:120},toolBarRender:function(){return[(0,e.jsxs)(D.ZP,{danger:!0,hidden:(n==null?void 0:n.length)===0||!M.hasPerms("monitor:logininfor:remove"),onClick:g()(a()().mark(function p(){return a()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:C.Z.confirm({title:"\u662F\u5426\u786E\u8BA4\u5220\u9664\u6240\u9009\u6570\u636E\u9879?",icon:(0,e.jsx)(R.Z,{}),content:"\u8BF7\u8C28\u614E\u64CD\u4F5C",onOk:function(){return g()(a()().mark(function T(){var v,o,c;return a()().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,F(n);case 2:v=t.sent,v&&(r([]),(o=l.current)===null||o===void 0||(c=o.reloadAndRest)===null||c===void 0||c.call(o));case 4:case"end":return t.stop()}},T)}))()},onCancel:function(){}});case 1:case"end":return i.stop()}},p)})),children:[(0,e.jsx)(B.Z,{}),(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.delete",defaultMessage:"\u5220\u9664"})]},"remove"),(0,e.jsxs)(D.ZP,{type:"primary",danger:!0,hidden:(n==null?void 0:n.length)===0||!M.hasPerms("monitor:logininfor:remove"),onClick:g()(a()().mark(function p(){return a()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:C.Z.confirm({title:"\u662F\u5426\u786E\u8BA4\u6E05\u7A7A\u6240\u6709\u6570\u636E\u9879?",icon:(0,e.jsx)(R.Z,{}),content:"\u8BF7\u8C28\u614E\u64CD\u4F5C",onOk:function(){return g()(a()().mark(function T(){var v,o,c;return a()().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,N();case 2:v=t.sent,v&&(r([]),(o=l.current)===null||o===void 0||(c=o.reloadAndRest)===null||c===void 0||c.call(o));case 4:case"end":return t.stop()}},T)}))()},onCancel:function(){}});case 1:case"end":return i.stop()}},p)})),children:[(0,e.jsx)(B.Z,{}),(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.cleanAll",defaultMessage:"\u6E05\u7A7A"})]},"clean"),(0,e.jsxs)(D.ZP,{type:"primary",hidden:(n==null?void 0:n.length)===0||!M.hasPerms("monitor:logininfor:unlock"),onClick:g()(a()().mark(function p(){return a()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:C.Z.confirm({title:"\u662F\u5426\u786E\u8BA4\u89E3\u9501\u8BE5\u7528\u6237\u7684\u6570\u636E\u9879?",icon:(0,e.jsx)(R.Z,{}),content:"\u8BF7\u8C28\u614E\u64CD\u4F5C",onOk:function(){return g()(a()().mark(function T(){var v,o,c;return a()().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,G(n[0].userName);case 2:v=t.sent,v&&(r([]),(o=l.current)===null||o===void 0||(c=o.reloadAndRest)===null||c===void 0||c.call(o));case 4:case"end":return t.stop()}},T)}))()},onCancel:function(){}});case 1:case"end":return i.stop()}},p)})),children:[(0,e.jsx)(k.Z,{}),(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.unlock",defaultMessage:"\u89E3\u9501"})]},"unlock"),(0,e.jsxs)(D.ZP,{type:"primary",hidden:!M.hasPerms("monitor:logininfor:export"),onClick:g()(a()().mark(function p(){return a()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:z();case 1:case"end":return i.stop()}},p)})),children:[(0,e.jsx)(S.Z,{}),(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.export",defaultMessage:"\u5BFC\u51FA"})]},"export")]},request:function(p){return(0,j.U0)(Z()({},p)).then(function(f){var i={data:f.rows,total:f.total,success:!0};return i})},columns:X,rowSelection:{onChange:function(p,f){r(f)}}},"logininforList")}),(n==null?void 0:n.length)>0&&(0,e.jsx)(x.S,{extra:(0,e.jsxs)("div",{children:[(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.chosen",defaultMessage:"\u5DF2\u9009\u62E9"}),(0,e.jsx)("a",{style:{fontWeight:600},children:n.length}),(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.item",defaultMessage:"\u9879"})]}),children:(0,e.jsx)(D.ZP,{danger:!0,hidden:!M.hasPerms("monitor:logininfor:remove"),onClick:g()(a()().mark(function O(){return a()().wrap(function(f){for(;;)switch(f.prev=f.next){case 0:C.Z.confirm({title:"\u5220\u9664",content:"\u786E\u5B9A\u5220\u9664\u8BE5\u9879\u5417\uFF1F",okText:"\u786E\u8BA4",cancelText:"\u53D6\u6D88",onOk:function(){var i=g()(a()().mark(function T(){var v,o,c;return a()().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,F(n);case 2:v=t.sent,v&&(r([]),(o=l.current)===null||o===void 0||(c=o.reloadAndRest)===null||c===void 0||c.call(o));case 4:case"end":return t.stop()}},T)}));function P(){return i.apply(this,arguments)}return P}()});case 1:case"end":return f.stop()}},O)})),children:(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.batchDeletion",defaultMessage:"\u6279\u91CF\u5220\u9664"})},"remove")})]})};I.default=Q}}]);
