"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[2493],{31199:function(x,E,e){var l=e(1413),a=e(45987),F=e(67294),v=e(43495),M=e(85893),D=["fieldProps","min","proFieldProps","max"],O=function(t,g){var T=t.fieldProps,d=t.min,_=t.proFieldProps,i=t.max,o=(0,a.Z)(t,D);return(0,M.jsx)(v.Z,(0,l.Z)({valueType:"digit",fieldProps:(0,l.Z)({min:d,max:i},T),ref:g,filedConfig:{defaultProps:{width:"100%"}},proFieldProps:_},o))},f=F.forwardRef(O);E.Z=f},86615:function(x,E,e){var l=e(1413),a=e(45987),F=e(22270),v=e(78045),M=e(67294),D=e(90789),O=e(43495),f=e(85893),m=["fieldProps","options","radioType","layout","proFieldProps","valueEnum"],t=M.forwardRef(function(_,i){var o=_.fieldProps,C=_.options,c=_.radioType,s=_.layout,r=_.proFieldProps,P=_.valueEnum,n=(0,a.Z)(_,m);return(0,f.jsx)(O.Z,(0,l.Z)((0,l.Z)({valueType:c==="button"?"radioButton":"radio",ref:i,valueEnum:(0,F.h)(P,void 0)},n),{},{fieldProps:(0,l.Z)({options:C,layout:s},o),proFieldProps:r,filedConfig:{customLightMode:!0}}))}),g=M.forwardRef(function(_,i){var o=_.fieldProps,C=_.children;return(0,f.jsx)(v.ZP,(0,l.Z)((0,l.Z)({},o),{},{ref:i,children:C}))}),T=(0,D.G)(g,{valuePropName:"checked",ignoreWidth:!0}),d=T;d.Group=t,d.Button=v.ZP.Button,d.displayName="ProFormComponent",E.Z=d},90672:function(x,E,e){var l=e(1413),a=e(45987),F=e(67294),v=e(43495),M=e(85893),D=["fieldProps","proFieldProps"],O=function(m,t){var g=m.fieldProps,T=m.proFieldProps,d=(0,a.Z)(m,D);return(0,M.jsx)(v.Z,(0,l.Z)({ref:t,valueType:"textarea",fieldProps:g,proFieldProps:T},d))};E.Z=F.forwardRef(O)},5966:function(x,E,e){var l=e(97685),a=e(1413),F=e(45987),v=e(21770),M=e(99859),D=e(55241),O=e(98423),f=e(67294),m=e(43495),t=e(85893),g=["fieldProps","proFieldProps"],T=["fieldProps","proFieldProps"],d="text",_=function(s){var r=s.fieldProps,P=s.proFieldProps,n=(0,F.Z)(s,g);return(0,t.jsx)(m.Z,(0,a.Z)({valueType:d,fieldProps:r,filedConfig:{valueType:d},proFieldProps:P},n))},i=function(s){var r=(0,v.Z)(s.open||!1,{value:s.open,onChange:s.onOpenChange}),P=(0,l.Z)(r,2),n=P[0],A=P[1];return(0,t.jsx)(M.Z.Item,{shouldUpdate:!0,noStyle:!0,children:function(R){var h,W=R.getFieldValue(s.name||[]);return(0,t.jsx)(D.Z,(0,a.Z)((0,a.Z)({getPopupContainer:function(u){return u&&u.parentNode?u.parentNode:u},onOpenChange:function(u){return A(u)},content:(0,t.jsxs)("div",{style:{padding:"4px 0"},children:[(h=s.statusRender)===null||h===void 0?void 0:h.call(s,W),s.strengthText?(0,t.jsx)("div",{style:{marginTop:10},children:(0,t.jsx)("span",{children:s.strengthText})}):null]}),overlayStyle:{width:240},placement:"rightTop"},s.popoverProps),{},{open:n,children:s.children}))}})},o=function(s){var r=s.fieldProps,P=s.proFieldProps,n=(0,F.Z)(s,T),A=(0,f.useState)(!1),p=(0,l.Z)(A,2),R=p[0],h=p[1];return r!=null&&r.statusRender&&n.name?(0,t.jsx)(i,{name:n.name,statusRender:r==null?void 0:r.statusRender,popoverProps:r==null?void 0:r.popoverProps,strengthText:r==null?void 0:r.strengthText,open:R,onOpenChange:h,children:(0,t.jsx)("div",{children:(0,t.jsx)(m.Z,(0,a.Z)({valueType:"password",fieldProps:(0,a.Z)((0,a.Z)({},(0,O.Z)(r,["statusRender","popoverProps","strengthText"])),{},{onBlur:function(B){var u;r==null||(u=r.onBlur)===null||u===void 0||u.call(r,B),h(!1)},onClick:function(B){var u;r==null||(u=r.onClick)===null||u===void 0||u.call(r,B),h(!0)}}),proFieldProps:P,filedConfig:{valueType:d}},n))})}):(0,t.jsx)(m.Z,(0,a.Z)({valueType:"password",fieldProps:r,proFieldProps:P,filedConfig:{valueType:d}},n))},C=_;C.Password=o,C.displayName="ProFormComponent",E.Z=C},2493:function(x,E,e){e.r(E);var l=e(15009),a=e.n(l),F=e(99289),v=e.n(F),M=e(5574),D=e.n(M),O=e(67294),f=e(97269),m=e(31199),t=e(5966),g=e(86615),T=e(90672),d=e(99859),_=e(17788),i=e(76772),o=e(85893),C=function(s){var r=d.Z.useForm(),P=D()(r,1),n=P[0],A=s.statusOptions;(0,O.useEffect)(function(){n.resetFields(),n.setFieldsValue({postId:s.values.postId,postCode:s.values.postCode,postName:s.values.postName,postSort:s.values.postSort,status:s.values.status,createBy:s.values.createBy,createTime:s.values.createTime,updateBy:s.values.updateBy,updateTime:s.values.updateTime,remark:s.values.remark})},[n,s]);var p=(0,i.useIntl)(),R=function(){n.submit()},h=function(){s.onCancel()},W=function(){var B=v()(a()().mark(function u(I){return a()().wrap(function(j){for(;;)switch(j.prev=j.next){case 0:s.onSubmit(I);case 1:case"end":return j.stop()}},u)}));return function(I){return B.apply(this,arguments)}}();return(0,o.jsx)(_.Z,{width:640,title:p.formatMessage({id:"system.post.title",defaultMessage:"\u7F16\u8F91\u5C97\u4F4D\u4FE1\u606F"}),open:s.open,forceRender:!0,destroyOnClose:!0,onOk:R,onCancel:h,children:(0,o.jsxs)(f.A,{form:n,grid:!0,submitter:!1,layout:"horizontal",onFinish:W,children:[(0,o.jsx)(m.Z,{name:"postId",label:p.formatMessage({id:"system.post.post_id",defaultMessage:"\u5C97\u4F4D\u7F16\u53F7"}),placeholder:"\u8BF7\u8F93\u5165\u5C97\u4F4D\u7F16\u53F7",disabled:!0,hidden:!0,rules:[{required:!1,message:(0,o.jsx)(i.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u5C97\u4F4D\u7F16\u53F7\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u5C97\u4F4D\u7F16\u53F7\uFF01"})}]}),(0,o.jsx)(t.Z,{name:"postName",label:p.formatMessage({id:"system.post.post_name",defaultMessage:"\u5C97\u4F4D\u540D\u79F0"}),placeholder:"\u8BF7\u8F93\u5165\u5C97\u4F4D\u540D\u79F0",rules:[{required:!0,message:(0,o.jsx)(i.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u5C97\u4F4D\u540D\u79F0\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u5C97\u4F4D\u540D\u79F0\uFF01"})}]}),(0,o.jsx)(t.Z,{name:"postCode",label:p.formatMessage({id:"system.post.post_code",defaultMessage:"\u5C97\u4F4D\u7F16\u7801"}),placeholder:"\u8BF7\u8F93\u5165\u5C97\u4F4D\u7F16\u7801",rules:[{required:!0,message:(0,o.jsx)(i.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u5C97\u4F4D\u7F16\u7801\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u5C97\u4F4D\u7F16\u7801\uFF01"})}]}),(0,o.jsx)(m.Z,{name:"postSort",label:p.formatMessage({id:"system.post.post_sort",defaultMessage:"\u663E\u793A\u987A\u5E8F"}),placeholder:"\u8BF7\u8F93\u5165\u663E\u793A\u987A\u5E8F",rules:[{required:!0,message:(0,o.jsx)(i.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u663E\u793A\u987A\u5E8F\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u663E\u793A\u987A\u5E8F\uFF01"})}]}),(0,o.jsx)(g.Z.Group,{valueEnum:A,name:"status",label:p.formatMessage({id:"system.post.status",defaultMessage:"\u72B6\u6001"}),placeholder:"\u8BF7\u8F93\u5165\u72B6\u6001",rules:[{required:!0,message:(0,o.jsx)(i.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u72B6\u6001\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u72B6\u6001\uFF01"})}]}),(0,o.jsx)(T.Z,{name:"remark",label:p.formatMessage({id:"system.post.remark",defaultMessage:"\u5907\u6CE8"}),placeholder:"\u8BF7\u8F93\u5165\u5907\u6CE8",rules:[{required:!1,message:(0,o.jsx)(i.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u5907\u6CE8\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u5907\u6CE8\uFF01"})}]})]})})};E.default=C}}]);
