"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[177],{31199:function(w,x,e){var E=e(1413),m=e(91),o=e(67294),F=e(92179),K=e(85893),j=["fieldProps","min","proFieldProps","max"],A=function(l,D){var B=l.fieldProps,p=l.min,v=l.proFieldProps,I=l.max,R=(0,m.Z)(l,j);return(0,K.jsx)(F.Z,(0,E.Z)({valueType:"digit",fieldProps:(0,E.Z)({min:p,max:I},B),ref:D,filedConfig:{defaultProps:{width:"100%"}},proFieldProps:v},R))},O=o.forwardRef(A);x.Z=O},86615:function(w,x,e){var E=e(1413),m=e(91),o=e(22270),F=e(78045),K=e(67294),j=e(90789),A=e(92179),O=e(85893),h=["fieldProps","options","radioType","layout","proFieldProps","valueEnum"],l=K.forwardRef(function(v,I){var R=v.fieldProps,g=v.options,X=v.radioType,t=v.layout,a=v.proFieldProps,M=v.valueEnum,s=(0,m.Z)(v,h);return(0,O.jsx)(A.Z,(0,E.Z)((0,E.Z)({valueType:X==="button"?"radioButton":"radio",ref:I,valueEnum:(0,o.h)(M,void 0)},s),{},{fieldProps:(0,E.Z)({options:g,layout:t},R),proFieldProps:a,filedConfig:{customLightMode:!0}}))}),D=K.forwardRef(function(v,I){var R=v.fieldProps,g=v.children;return(0,O.jsx)(F.ZP,(0,E.Z)((0,E.Z)({},R),{},{ref:I,children:g}))}),B=(0,j.G)(D,{valuePropName:"checked",ignoreWidth:!0}),p=B;p.Group=l,p.Button=F.ZP.Button,p.displayName="ProFormComponent",x.Z=p},90672:function(w,x,e){var E=e(1413),m=e(91),o=e(67294),F=e(92179),K=e(85893),j=["fieldProps","proFieldProps"],A=function(h,l){var D=h.fieldProps,B=h.proFieldProps,p=(0,m.Z)(h,j);return(0,K.jsx)(F.Z,(0,E.Z)({ref:l,valueType:"textarea",fieldProps:D,proFieldProps:B},p))};x.Z=o.forwardRef(A)},5966:function(w,x,e){var E=e(97685),m=e(1413),o=e(91),F=e(21770),K=e(99859),j=e(55241),A=e(98423),O=e(67294),h=e(92179),l=e(85893),D=["fieldProps","proFieldProps"],B=["fieldProps","proFieldProps"],p="text",v=function(t){var a=t.fieldProps,M=t.proFieldProps,s=(0,o.Z)(t,D);return(0,l.jsx)(h.Z,(0,m.Z)({valueType:p,fieldProps:a,filedConfig:{valueType:p},proFieldProps:M},s))},I=function(t){var a=(0,F.Z)(t.open||!1,{value:t.open,onChange:t.onOpenChange}),M=(0,E.Z)(a,2),s=M[0],H=M[1];return(0,l.jsx)(K.Z.Item,{shouldUpdate:!0,noStyle:!0,children:function(y){var W,G=y.getFieldValue(t.name||[]);return(0,l.jsx)(j.Z,(0,m.Z)((0,m.Z)({getPopupContainer:function(f){return f&&f.parentNode?f.parentNode:f},onOpenChange:function(f){return H(f)},content:(0,l.jsxs)("div",{style:{padding:"4px 0"},children:[(W=t.statusRender)===null||W===void 0?void 0:W.call(t,G),t.strengthText?(0,l.jsx)("div",{style:{marginTop:10},children:(0,l.jsx)("span",{children:t.strengthText})}):null]}),overlayStyle:{width:240},placement:"rightTop"},t.popoverProps),{},{open:s,children:t.children}))}})},R=function(t){var a=t.fieldProps,M=t.proFieldProps,s=(0,o.Z)(t,B),H=(0,O.useState)(!1),J=(0,E.Z)(H,2),y=J[0],W=J[1];return a!=null&&a.statusRender&&s.name?(0,l.jsx)(I,{name:s.name,statusRender:a==null?void 0:a.statusRender,popoverProps:a==null?void 0:a.popoverProps,strengthText:a==null?void 0:a.strengthText,open:y,onOpenChange:W,children:(0,l.jsx)("div",{children:(0,l.jsx)(h.Z,(0,m.Z)({valueType:"password",fieldProps:(0,m.Z)((0,m.Z)({},(0,A.Z)(a,["statusRender","popoverProps","strengthText"])),{},{onBlur:function(U){var f;a==null||(f=a.onBlur)===null||f===void 0||f.call(a,U),W(!1)},onClick:function(U){var f;a==null||(f=a.onClick)===null||f===void 0||f.call(a,U),W(!0)}}),proFieldProps:M,filedConfig:{valueType:p}},s))})}):(0,l.jsx)(h.Z,(0,m.Z)({valueType:"password",fieldProps:a,proFieldProps:M,filedConfig:{valueType:p}},s))},g=v;g.Password=R,g.displayName="ProFormComponent",x.Z=g},177:function(w,x,e){e.r(x);var E=e(15009),m=e.n(E),o=e(97857),F=e.n(o),K=e(99289),j=e.n(K),A=e(5574),O=e.n(A),h=e(67294),l=e(97269),D=e(31199),B=e(5966),p=e(86615),v=e(90672),I=e(99859),R=e(17788),g=e(76772),X=e(20863),t=e(85893),a=function(s){var H=I.Z.useForm(),J=O()(H,1),y=J[0],W=s.menuTree,G=s.menuCheckedKeys,U=(0,h.useState)([]),f=O()(U,2),oe=f[0],_e=f[1],pe=s.statusOptions;(0,h.useEffect)(function(){y.resetFields(),y.setFieldsValue({roleId:s.values.roleId,roleName:s.values.roleName,roleKey:s.values.roleKey,roleSort:s.values.roleSort,dataScope:s.values.dataScope,menuCheckStrictly:s.values.menuCheckStrictly,deptCheckStrictly:s.values.deptCheckStrictly,status:s.values.status,delFlag:s.values.delFlag,createBy:s.values.createBy,createTime:s.values.createTime,updateBy:s.values.updateBy,updateTime:s.values.updateTime,remark:s.values.remark})},[y,s]);var S=(0,g.useIntl)(),q=function(){y.submit()},ce=function(){s.onCancel()},u=function(){var _=j()(m()().mark(function d(n){return m()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:s.onSubmit(F()(F()({},n),{},{menuIds:oe}));case 1:case"end":return r.stop()}},d)}));return function(n){return _.apply(this,arguments)}}();return(0,t.jsx)(R.Z,{width:640,title:S.formatMessage({id:"system.role.title",defaultMessage:"\u7F16\u8F91\u89D2\u8272\u4FE1\u606F"}),forceRender:!0,open:s.open,destroyOnClose:!0,onOk:q,onCancel:ce,children:(0,t.jsxs)(l.A,{form:y,grid:!0,layout:"horizontal",submitter:!1,onFinish:u,children:[(0,t.jsx)(D.Z,{name:"roleId",label:S.formatMessage({id:"system.role.role_id",defaultMessage:"\u89D2\u8272\u7F16\u53F7"}),placeholder:"\u8BF7\u8F93\u5165\u89D2\u8272\u7F16\u53F7",disabled:!0,hidden:!0,rules:[{required:!1,message:(0,t.jsx)(g.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u89D2\u8272\u7F16\u53F7\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u89D2\u8272\u7F16\u53F7\uFF01"})}]}),(0,t.jsx)(B.Z,{name:"roleName",label:S.formatMessage({id:"system.role.role_name",defaultMessage:"\u89D2\u8272\u540D\u79F0"}),placeholder:"\u8BF7\u8F93\u5165\u89D2\u8272\u540D\u79F0",rules:[{required:!0,message:(0,t.jsx)(g.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u89D2\u8272\u540D\u79F0\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u89D2\u8272\u540D\u79F0\uFF01"})}]}),(0,t.jsx)(B.Z,{name:"roleKey",label:S.formatMessage({id:"system.role.role_key",defaultMessage:"\u6743\u9650\u5B57\u7B26\u4E32"}),placeholder:"\u8BF7\u8F93\u5165\u89D2\u8272\u6743\u9650\u5B57\u7B26\u4E32",rules:[{required:!0,message:(0,t.jsx)(g.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u89D2\u8272\u6743\u9650\u5B57\u7B26\u4E32\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u89D2\u8272\u6743\u9650\u5B57\u7B26\u4E32\uFF01"})}]}),(0,t.jsx)(D.Z,{name:"roleSort",label:S.formatMessage({id:"system.role.role_sort",defaultMessage:"\u663E\u793A\u987A\u5E8F"}),placeholder:"\u8BF7\u8F93\u5165\u663E\u793A\u987A\u5E8F",rules:[{required:!0,message:(0,t.jsx)(g.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u663E\u793A\u987A\u5E8F\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u663E\u793A\u987A\u5E8F\uFF01"})}],fieldProps:{defaultValue:1}}),(0,t.jsx)(p.Z.Group,{valueEnum:pe,name:"status",label:S.formatMessage({id:"system.role.status",defaultMessage:"\u89D2\u8272\u72B6\u6001"}),placeholder:"\u8BF7\u8F93\u5165\u89D2\u8272\u72B6\u6001",rules:[{required:!0,message:(0,t.jsx)(g.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u89D2\u8272\u72B6\u6001\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u89D2\u8272\u72B6\u6001\uFF01"})}],fieldProps:{defaultValue:"0"}}),(0,t.jsx)(l.A.Item,{name:"menuIds",label:S.formatMessage({id:"system.role.auth",defaultMessage:"\u83DC\u5355\u6743\u9650"}),children:(0,t.jsx)(X.Z,{checkable:!0,multiple:!0,checkStrictly:!0,defaultExpandAll:!1,treeData:W,defaultCheckedKeys:G,onCheck:function(d){return _e(d.checked)}})}),(0,t.jsx)(v.Z,{name:"remark",label:S.formatMessage({id:"system.role.remark",defaultMessage:"\u5907\u6CE8"}),placeholder:"\u8BF7\u8F93\u5165\u5907\u6CE8",rules:[{required:!1,message:(0,t.jsx)(g.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u5907\u6CE8\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u5907\u6CE8\uFF01"})}]})]})})};x.default=a},20863:function(w,x,e){e.d(x,{Z:function(){return ce}});var E=e(70593),m=e(74902),o=e(67294),F=e(26911),K=e(95591),j=e(32319),A=e(93967),O=e.n(A),h=e(10225),l=e(1089),D=e(53124),B=e(29751),p=e(33603),v=e(29691),I=e(40561);const R=4;function g(u){const{dropPosition:_,dropLevelOffset:d,prefixCls:n,indent:i,direction:r="ltr"}=u,c=r==="ltr"?"left":"right",P=r==="ltr"?"right":"left",T={[c]:-d*i+R,[P]:0};switch(_){case-1:T.top=-3;break;case 1:T.bottom=-3;break;default:T.bottom=-3,T[c]=i+R;break}return o.createElement("div",{style:T,className:`${n}-drop-indicator`})}var X=g,t=e(61639),M=o.forwardRef((u,_)=>{var d;const{getPrefixCls:n,direction:i,virtual:r,tree:c}=o.useContext(D.E_),{prefixCls:P,className:T,showIcon:b=!1,showLine:ee,switcherIcon:ae,switcherLoadingIcon:le,blockNode:ue=!1,children:me,checkable:te=!1,selectable:re=!0,draggable:Q,motion:se,style:fe}=u,N=n("tree",P),Pe=n(),ne=se!=null?se:Object.assign(Object.assign({},(0,p.Z)(Pe)),{motionAppear:!1}),Ee=Object.assign(Object.assign({},u),{checkable:te,selectable:re,showIcon:b,motion:ne,blockNode:ue,showLine:!!ee,dropIndicatorRender:X}),[V,Z,z]=(0,I.ZP)(N),[,Y]=(0,v.ZP)(),k=Y.paddingXS/2+(((d=Y.Tree)===null||d===void 0?void 0:d.titleHeight)||Y.controlHeightSM),ve=o.useMemo(()=>{if(!Q)return!1;let C={};switch(typeof Q){case"function":C.nodeDraggable=Q;break;case"object":C=Object.assign({},Q);break;default:break}return C.icon!==!1&&(C.icon=C.icon||o.createElement(B.Z,null)),C},[Q]),L=C=>o.createElement(t.Z,{prefixCls:N,switcherIcon:ae,switcherLoadingIcon:le,treeNodeProps:C,showLine:ee});return V(o.createElement(E.ZP,Object.assign({itemHeight:k,ref:_,virtual:r},Ee,{style:Object.assign(Object.assign({},c==null?void 0:c.style),fe),prefixCls:N,className:O()({[`${N}-icon-hide`]:!b,[`${N}-block-node`]:ue,[`${N}-unselectable`]:!re,[`${N}-rtl`]:i==="rtl"},c==null?void 0:c.className,T,Z,z),direction:i,checkable:te&&o.createElement("span",{className:`${N}-checkbox-inner`}),selectable:re,switcherIcon:L,draggable:ve}),me))});const s=0,H=1,J=2;function y(u,_,d){const{key:n,children:i}=d;function r(c){const P=c[n],T=c[i];_(P,c)!==!1&&y(T||[],_,d)}u.forEach(r)}function W(u){let{treeData:_,expandedKeys:d,startKey:n,endKey:i,fieldNames:r}=u;const c=[];let P=s;if(n&&n===i)return[n];if(!n||!i)return[];function T(b){return b===n||b===i}return y(_,b=>{if(P===J)return!1;if(T(b)){if(c.push(b),P===s)P=H;else if(P===H)return P=J,!1}else P===H&&c.push(b);return d.includes(b)},(0,l.w$)(r)),c}function G(u,_,d){const n=(0,m.Z)(_),i=[];return y(u,(r,c)=>{const P=n.indexOf(r);return P!==-1&&(i.push(c),n.splice(P,1)),!!n.length},(0,l.w$)(d)),i}var U=function(u,_){var d={};for(var n in u)Object.prototype.hasOwnProperty.call(u,n)&&_.indexOf(n)<0&&(d[n]=u[n]);if(u!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(u);i<n.length;i++)_.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(u,n[i])&&(d[n[i]]=u[n[i]]);return d};function f(u){const{isLeaf:_,expanded:d}=u;return _?o.createElement(F.Z,null):d?o.createElement(K.Z,null):o.createElement(j.Z,null)}function oe(u){let{treeData:_,children:d}=u;return _||(0,l.zn)(d)}const _e=(u,_)=>{var{defaultExpandAll:d,defaultExpandParent:n,defaultExpandedKeys:i}=u,r=U(u,["defaultExpandAll","defaultExpandParent","defaultExpandedKeys"]);const c=o.useRef(null),P=o.useRef(null),T=()=>{const{keyEntities:V}=(0,l.I8)(oe(r));let Z;return d?Z=Object.keys(V):n?Z=(0,h.r7)(r.expandedKeys||i||[],V):Z=r.expandedKeys||i||[],Z},[b,ee]=o.useState(r.selectedKeys||r.defaultSelectedKeys||[]),[ae,le]=o.useState(()=>T());o.useEffect(()=>{"selectedKeys"in r&&ee(r.selectedKeys)},[r.selectedKeys]),o.useEffect(()=>{"expandedKeys"in r&&le(r.expandedKeys)},[r.expandedKeys]);const ue=(V,Z)=>{var z;return"expandedKeys"in r||le(V),(z=r.onExpand)===null||z===void 0?void 0:z.call(r,V,Z)},me=(V,Z)=>{var z;const{multiple:Y,fieldNames:k}=r,{node:ve,nativeEvent:L}=Z,{key:C=""}=ve,de=oe(r),ie=Object.assign(Object.assign({},Z),{selected:!0}),ge=(L==null?void 0:L.ctrlKey)||(L==null?void 0:L.metaKey),he=L==null?void 0:L.shiftKey;let $;Y&&ge?($=V,c.current=C,P.current=$,ie.selectedNodes=G(de,$,k)):Y&&he?($=Array.from(new Set([].concat((0,m.Z)(P.current||[]),(0,m.Z)(W({treeData:de,expandedKeys:ae,startKey:C,endKey:c.current,fieldNames:k}))))),ie.selectedNodes=G(de,$,k)):($=[C],c.current=C,P.current=$,ie.selectedNodes=G(de,$,k)),(z=r.onSelect)===null||z===void 0||z.call(r,$,ie),"selectedKeys"in r||ee($)},{getPrefixCls:te,direction:re}=o.useContext(D.E_),{prefixCls:Q,className:se,showIcon:fe=!0,expandAction:N="click"}=r,Pe=U(r,["prefixCls","className","showIcon","expandAction"]),ne=te("tree",Q),Ee=O()(`${ne}-directory`,{[`${ne}-directory-rtl`]:re==="rtl"},se);return o.createElement(M,Object.assign({icon:f,ref:_,blockNode:!0},Pe,{showIcon:fe,expandAction:N,prefixCls:ne,className:Ee,expandedKeys:ae,selectedKeys:b,onSelect:me,onExpand:ue}))};var S=o.forwardRef(_e);const q=M;q.DirectoryTree=S,q.TreeNode=E.OF;var ce=q}}]);
