"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[448],{64317:function(R,D,e){var n=e(1413),d=e(45987),M=e(22270),t=e(67294),O=e(66758),g=e(43495),C=e(85893),b=["fieldProps","children","params","proFieldProps","mode","valueEnum","request","showSearch","options"],f=["fieldProps","children","params","proFieldProps","mode","valueEnum","request","options"],A=function(o,p){var P=o.fieldProps,s=o.children,a=o.params,E=o.proFieldProps,h=o.mode,c=o.valueEnum,_=o.request,l=o.showSearch,u=o.options,T=(0,d.Z)(o,b),v=(0,t.useContext)(O.Z);return(0,C.jsx)(g.Z,(0,n.Z)((0,n.Z)({valueEnum:(0,M.h)(c),request:_,params:a,valueType:"select",filedConfig:{customLightMode:!0},fieldProps:(0,n.Z)({options:u,mode:h,showSearch:l,getPopupContainer:v.getPopupContainer},P),ref:p,proFieldProps:E},T),{},{children:s}))},F=t.forwardRef(function(r,o){var p=r.fieldProps,P=r.children,s=r.params,a=r.proFieldProps,E=r.mode,h=r.valueEnum,c=r.request,_=r.options,l=(0,d.Z)(r,f),u=(0,n.Z)({options:_,mode:E||"multiple",labelInValue:!0,showSearch:!0,suffixIcon:null,autoClearSearchValue:!0,optionLabelProp:"label"},p),T=(0,t.useContext)(O.Z);return(0,C.jsx)(g.Z,(0,n.Z)((0,n.Z)({valueEnum:(0,M.h)(h),request:c,params:s,valueType:"select",filedConfig:{customLightMode:!0},fieldProps:(0,n.Z)({getPopupContainer:T.getPopupContainer},u),ref:o,proFieldProps:a},l),{},{children:P}))}),W=t.forwardRef(A),i=F,m=W;m.SearchSelect=i,m.displayName="ProFormComponent",D.Z=m},80448:function(R,D,e){e.r(D);var n=e(15009),d=e.n(n),M=e(99289),t=e.n(M),O=e(5574),g=e.n(O),C=e(67294),b=e(99859),f=e(17788),A=e(76772),F=e(97269),W=e(64317),i=e(85893),m=function(o){var p=b.Z.useForm(),P=g()(p,1),s=P[0];(0,C.useEffect)(function(){s.resetFields(),s.setFieldValue("roleIds",o.roleIds)});var a=(0,A.useIntl)(),E=function(){s.submit()},h=function(){o.onCancel()},c=function(){var _=t()(d()().mark(function l(u){return d()().wrap(function(v){for(;;)switch(v.prev=v.next){case 0:o.onSubmit(u);case 1:case"end":return v.stop()}},l)}));return function(u){return _.apply(this,arguments)}}();return(0,i.jsx)(f.Z,{width:640,title:a.formatMessage({id:"system.user.auth.role",defaultMessage:"\u5206\u914D\u89D2\u8272"}),open:o.open,destroyOnClose:!0,forceRender:!0,onOk:E,onCancel:h,children:(0,i.jsx)(F.A,{form:s,grid:!0,layout:"horizontal",onFinish:c,initialValues:{login_password:"",confirm_password:""},children:(0,i.jsx)(W.Z,{name:"roleIds",mode:"multiple",label:a.formatMessage({id:"system.user.role",defaultMessage:"\u89D2\u8272"}),options:o.roles,placeholder:"\u8BF7\u9009\u62E9\u89D2\u8272",rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u89D2\u8272!"}]})})})};D.default=m}}]);
