"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}}]);
