diff --git a/ruoyi-admin/src/main/resources/static/1581.301b1025.async.js b/ruoyi-admin/src/main/resources/static/1581.301b1025.async.js
new file mode 100644
index 0000000..5161a83
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/static/1581.301b1025.async.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[1581],{56692:function(A,v,e){e.r(v),e.d(v,{default:function(){return F}});var l=e(15009),p=e.n(l),_=e(99289),W=e.n(_),Z=e(5574),O=e.n(Z),M=e(67294),C=e(76772);function I(){return(0,C.request)("/api/monitor/cache/getNames",{method:"get"})}function T(B){return(0,C.request)("/api/monitor/cache/getKeys/"+B,{method:"get"})}function f(B,N){return(0,C.request)("/api/monitor/cache/getValue/"+B+"/"+N,{method:"get"})}function a(B){return(0,C.request)("/api/monitor/cache/clearCacheName/"+B,{method:"delete"})}function s(B){return(0,C.request)("/api/monitor/cache/clearCacheKey/"+B,{method:"delete"})}function o(){return(0,C.request)("/api/monitor/cache/clearCacheAll",{method:"delete"})}var r=e(25278),n=e(99859),u=e(2453),d=e(83622),c=e(71230),m=e(15746),x=e(4393),D=e(96154),E=e(57089),j=e(33160),L=e(97269),t=e(85893),J=r.Z.TextArea,q=function(){var N=(0,M.useState)([]),K=O()(N,2),z=K[0],w=K[1],ee=(0,M.useState)([]),k=O()(ee,2),R=k[0],G=k[1],U=(0,M.useState)([]),H=O()(U,2),te=H[0],ne=H[1],ae=n.Z.useForm(),oe=O()(ae,1),$=oe[0],Q=function(){I().then(function(i){i.code===200&&w(i.data)})};(0,M.useEffect)(function(){Q()},[]);var b=function(i){T(i).then(function(g){if(g.code===200){var P=0,S=g.data.map(function(se){return{index:P++,cacheKey:se}});ne(S)}})},V=function(){var h=W()(p()().mark(function i(){return p()().wrap(function(P){for(;;)switch(P.prev=P.next){case 0:o().then(function(S){S.code===200&&u.ZP.success("\u6E05\u7406\u5168\u90E8\u7F13\u5B58\u6210\u529F")});case 1:case"end":return P.stop()}},i)}));return function(){return h.apply(this,arguments)}}(),re=function(i){u.ZP.error("Failed:",i)},le=function(){Q(),u.ZP.success("\u5237\u65B0\u7F13\u5B58\u5217\u8868\u6210\u529F")},X=function(){b(R),u.ZP.success("\u5237\u65B0\u952E\u540D\u5217\u8868\u6210\u529F")},Y=[{title:"\u7F13\u5B58\u540D\u79F0",dataIndex:"cacheName",key:"cacheName",render:function(i,g){return g.cacheName.replace(":","")}},{title:"\u5907\u6CE8",dataIndex:"remark",key:"remark"},{title:(0,t.jsx)(C.FormattedMessage,{id:"pages.searchTable.titleOption",defaultMessage:"\u64CD\u4F5C"}),dataIndex:"option",width:"40px",valueType:"option",render:function(i,g){return[(0,t.jsx)(d.ZP,{type:"link",size:"small",danger:!0,onClick:function(){a(g.cacheName).then(function(S){S.code===200&&(u.ZP.success("\u6E05\u7406\u7F13\u5B58\u540D\u79F0["+g.cacheName+"]\u6210\u529F"),b(R))})},children:(0,t.jsx)(C.FormattedMessage,{id:"pages.searchTable.delete",defaultMessage:"\u5220\u9664"})},"remove")]}}],y=[{title:"\u5E8F\u53F7",dataIndex:"index",key:"index"},{title:"\u7F13\u5B58\u952E\u540D",dataIndex:"cacheKey",key:"cacheKey",render:function(i,g){return g.cacheKey.replace(R,"")}},{title:(0,t.jsx)(C.FormattedMessage,{id:"pages.searchTable.titleOption",defaultMessage:"\u64CD\u4F5C"}),dataIndex:"option",width:"40px",valueType:"option",render:function(i,g){return[(0,t.jsx)(d.ZP,{type:"link",size:"small",danger:!0,onClick:function(){console.log(g),s(g.cacheKey).then(function(S){S.code===200&&(u.ZP.success("\u6E05\u7406\u7F13\u5B58\u952E\u540D["+g.cacheKey+"]\u6210\u529F"),b(R))})},children:(0,t.jsx)(C.FormattedMessage,{id:"pages.searchTable.delete",defaultMessage:"\u5220\u9664"})},"remove")]}}];return(0,t.jsx)("div",{children:(0,t.jsxs)(c.Z,{gutter:[24,24],children:[(0,t.jsx)(m.Z,{span:8,children:(0,t.jsx)(x.Z,{title:"\u7F13\u5B58\u5217\u8868",extra:(0,t.jsx)(d.ZP,{icon:(0,t.jsx)(j.Z,{}),onClick:function(){le()},type:"link"}),className:E.Z.card,children:(0,t.jsx)(D.Z,{rowKey:"cacheName",dataSource:z,columns:Y,onRow:function(i){return{onClick:function(){G(i.cacheName),b(i.cacheName)}}}})})}),(0,t.jsx)(m.Z,{span:8,children:(0,t.jsx)(x.Z,{title:"\u952E\u540D\u5217\u8868",extra:(0,t.jsx)(d.ZP,{icon:(0,t.jsx)(j.Z,{}),onClick:function(){X()},type:"link"}),className:E.Z.card,children:(0,t.jsx)(D.Z,{rowKey:"index",dataSource:te,columns:y,onRow:function(i){return{onClick:function(){f(R,i.cacheKey).then(function(P){P.code===200&&($.resetFields(),$.setFieldsValue({cacheName:P.data.cacheName,cacheKey:P.data.cacheKey,cacheValue:P.data.cacheValue,remark:P.data.remark}))})}}}})})}),(0,t.jsx)(m.Z,{span:8,children:(0,t.jsx)(x.Z,{title:"\u7F13\u5B58\u5185\u5BB9",extra:(0,t.jsx)(d.ZP,{icon:(0,t.jsx)(j.Z,{}),onClick:function(){V()},type:"link",children:"\u6E05\u7406\u5168\u90E8"}),className:E.Z.card,children:(0,t.jsxs)(L.A,{name:"basic",form:$,labelCol:{span:8},wrapperCol:{span:16},onFinish:V,onFinishFailed:re,autoComplete:"off",children:[(0,t.jsx)(n.Z.Item,{label:"\u7F13\u5B58\u540D\u79F0",name:"cacheName",children:(0,t.jsx)(r.Z,{})}),(0,t.jsx)(n.Z.Item,{label:"\u7F13\u5B58\u952E\u540D",name:"cacheKey",children:(0,t.jsx)(r.Z,{})}),(0,t.jsx)(n.Z.Item,{label:"\u7F13\u5B58\u5185\u5BB9",name:"cacheValue",children:(0,t.jsx)(J,{autoSize:{minRows:2}})})]})})})]})})},F=q},57089:function(A,v){v.Z={card:"card___fGN_T",miniChart:"miniChart___Qvm3q",chartContent:"chartContent___keQ6l",chartLoading:"chartLoading___wFM1g"}},81643:function(A,v,e){e.d(v,{Z:function(){return l}});const l=p=>p?typeof p=="function"?p():p:null},15746:function(A,v,e){var l=e(21584);v.Z=l.Z},66330:function(A,v,e){e.d(v,{aV:function(){return I}});var l=e(67294),p=e(93967),_=e.n(p),W=e(92419),Z=e(81643),O=e(53124),M=e(20136),C=function(a,s){var o={};for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&s.indexOf(r)<0&&(o[r]=a[r]);if(a!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,r=Object.getOwnPropertySymbols(a);n<r.length;n++)s.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(a,r[n])&&(o[r[n]]=a[r[n]]);return o};const I=a=>{let{title:s,content:o,prefixCls:r}=a;return!s&&!o?null:l.createElement(l.Fragment,null,s&&l.createElement("div",{className:`${r}-title`},s),o&&l.createElement("div",{className:`${r}-inner-content`},o))},T=a=>{const{hashId:s,prefixCls:o,className:r,style:n,placement:u="top",title:d,content:c,children:m}=a,x=(0,Z.Z)(d),D=(0,Z.Z)(c),E=_()(s,o,`${o}-pure`,`${o}-placement-${u}`,r);return l.createElement("div",{className:E,style:n},l.createElement("div",{className:`${o}-arrow`}),l.createElement(W.G,Object.assign({},a,{className:s,prefixCls:o}),m||l.createElement(I,{prefixCls:o,title:x,content:D})))},f=a=>{const{prefixCls:s,className:o}=a,r=C(a,["prefixCls","className"]),{getPrefixCls:n}=l.useContext(O.E_),u=n("popover",s),[d,c,m]=(0,M.Z)(u);return d(l.createElement(T,Object.assign({},r,{prefixCls:u,hashId:c,className:_()(o,m)})))};v.ZP=f},55241:function(A,v,e){var l=e(67294),p=e(93967),_=e.n(p),W=e(21770),Z=e(15105),O=e(81643),M=e(33603),C=e(96159),I=e(83062),T=e(66330),f=e(53124),a=e(20136),s=function(n,u){var d={};for(var c in n)Object.prototype.hasOwnProperty.call(n,c)&&u.indexOf(c)<0&&(d[c]=n[c]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var m=0,c=Object.getOwnPropertySymbols(n);m<c.length;m++)u.indexOf(c[m])<0&&Object.prototype.propertyIsEnumerable.call(n,c[m])&&(d[c[m]]=n[c[m]]);return d};const r=l.forwardRef((n,u)=>{var d,c;const{prefixCls:m,title:x,content:D,overlayClassName:E,placement:j="top",trigger:L="hover",children:t,mouseEnterDelay:J=.1,mouseLeaveDelay:q=.1,onOpenChange:F,overlayStyle:B={},styles:N,classNames:K}=n,z=s(n,["prefixCls","title","content","overlayClassName","placement","trigger","children","mouseEnterDelay","mouseLeaveDelay","onOpenChange","overlayStyle","styles","classNames"]),{getPrefixCls:w,className:ee,style:k,classNames:R,styles:G}=(0,f.dj)("popover"),U=w("popover",m),[H,te,ne]=(0,a.Z)(U),ae=w(),oe=_()(E,te,ne,ee,R.root,K==null?void 0:K.root),$=_()(R.body,K==null?void 0:K.body),[Q,b]=(0,W.Z)(!1,{value:(d=n.open)!==null&&d!==void 0?d:n.visible,defaultValue:(c=n.defaultOpen)!==null&&c!==void 0?c:n.defaultVisible}),V=(y,h)=>{b(y,!0),F==null||F(y,h)},re=y=>{y.keyCode===Z.Z.ESC&&V(!1,y)},le=y=>{V(y)},X=(0,O.Z)(x),Y=(0,O.Z)(D);return H(l.createElement(I.Z,Object.assign({placement:j,trigger:L,mouseEnterDelay:J,mouseLeaveDelay:q},z,{prefixCls:U,classNames:{root:oe,body:$},styles:{root:Object.assign(Object.assign(Object.assign(Object.assign({},G.root),k),B),N==null?void 0:N.root),body:Object.assign(Object.assign({},G.body),N==null?void 0:N.body)},ref:u,open:Q,onOpenChange:le,overlay:X||Y?l.createElement(T.aV,{prefixCls:U,title:X,content:Y}):null,transitionName:(0,M.m)(ae,"zoom-big",z.transitionName),"data-popover-inject":!0}),(0,C.Tm)(t,{onKeyDown:y=>{var h,i;l.isValidElement(t)&&((i=t==null?void 0:(h=t.props).onKeyDown)===null||i===void 0||i.call(h,y)),re(y)}})))});r._InternalPanelDoNotUseOrYouWillBeFired=T.ZP,v.Z=r},20136:function(A,v,e){var l=e(14747),p=e(50438),_=e(97414),W=e(79511),Z=e(8796),O=e(83559),M=e(83262);const C=f=>{const{componentCls:a,popoverColor:s,titleMinWidth:o,fontWeightStrong:r,innerPadding:n,boxShadowSecondary:u,colorTextHeading:d,borderRadiusLG:c,zIndexPopup:m,titleMarginBottom:x,colorBgElevated:D,popoverBg:E,titleBorderBottom:j,innerContentPadding:L,titlePadding:t}=f;return[{[a]:Object.assign(Object.assign({},(0,l.Wf)(f)),{position:"absolute",top:0,left:{_skip_check_:!0,value:0},zIndex:m,fontWeight:"normal",whiteSpace:"normal",textAlign:"start",cursor:"auto",userSelect:"text","--valid-offset-x":"var(--arrow-offset-horizontal, var(--arrow-x))",transformOrigin:["var(--valid-offset-x, 50%)","var(--arrow-y, 50%)"].join(" "),"--antd-arrow-background-color":D,width:"max-content",maxWidth:"100vw","&-rtl":{direction:"rtl"},"&-hidden":{display:"none"},[`${a}-content`]:{position:"relative"},[`${a}-inner`]:{backgroundColor:E,backgroundClip:"padding-box",borderRadius:c,boxShadow:u,padding:n},[`${a}-title`]:{minWidth:o,marginBottom:x,color:d,fontWeight:r,borderBottom:j,padding:t},[`${a}-inner-content`]:{color:s,padding:L}})},(0,_.ZP)(f,"var(--antd-arrow-background-color)"),{[`${a}-pure`]:{position:"relative",maxWidth:"none",margin:f.sizePopupArrow,display:"inline-block",[`${a}-content`]:{display:"inline-block"}}}]},I=f=>{const{componentCls:a}=f;return{[a]:Z.i.map(s=>{const o=f[`${s}6`];return{[`&${a}-${s}`]:{"--antd-arrow-background-color":o,[`${a}-inner`]:{backgroundColor:o},[`${a}-arrow`]:{background:"transparent"}}}})}},T=f=>{const{lineWidth:a,controlHeight:s,fontHeight:o,padding:r,wireframe:n,zIndexPopupBase:u,borderRadiusLG:d,marginXS:c,lineType:m,colorSplit:x,paddingSM:D}=f,E=s-o,j=E/2,L=E/2-a,t=r;return Object.assign(Object.assign(Object.assign({titleMinWidth:177,zIndexPopup:u+30},(0,W.w)(f)),(0,_.wZ)({contentRadius:d,limitVerticalRadius:!0})),{innerPadding:n?0:12,titleMarginBottom:n?0:c,titlePadding:n?`${j}px ${t}px ${L}px`:0,titleBorderBottom:n?`${a}px ${m} ${x}`:"none",innerContentPadding:n?`${D}px ${t}px`:0})};v.Z=(0,O.I$)("Popover",f=>{const{colorBgElevated:a,colorText:s}=f,o=(0,M.IX)(f,{popoverBg:a,popoverColor:s});return[C(o),I(o),(0,p._y)(o,"zoom-big")]},T,{resetStyle:!1,deprecatedTokens:[["width","titleMinWidth"],["minWidth","titleMinWidth"]]})},71230:function(A,v,e){var l=e(17621);v.Z=l.Z}}]);
