@flatbiz/antd 2.3.30 → 2.3.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable */
2
2
  require('./index.css')
3
3
  /*! @flatjs/forge MIT https://github.com/flatjs */
4
- import{noop as e,getGlobalData as r,flatbizDate as t,isUndefinedOrNull as n,arrayField2LabelValue as a,treeToTiledArray as i,treeLeafParentsArray as l}from"@flatbiz/utils";import{isUndefined as o}from"@dimjs/lang/cjs/is-undefined";import{Space as u,Divider as s,Popconfirm as c,Button as d,DatePicker as f,Drawer as v,Form as m,Checkbox as p,Tag as h,Input as g,InputNumber as b,Radio as y,message as C,Select as w,Empty as N,Upload as L,Table as S,Tooltip as x,Modal as k,TreeSelect as R,Tree as q,Spin as T}from"antd";import{isArray as I}from"@dimjs/lang/cjs/is-array";import{Fragment as D,createElement as P,useMemo as A,useState as O,useEffect as M,forwardRef as _,useRef as B,useImperativeHandle as E,cloneElement as Y,Children as K}from"react";import{jsx as j,jsxs as F,Fragment as W}from"react/jsx-runtime";import{hooks as z}from"@wove/react/cjs/hooks";import U from"moment";import{Model as G}from"@dimjs/model-react";import{classNames as V}from"@dimjs/utils/cjs/class-names";import H from"@ant-design/icons/es/icons/SaveOutlined";import J from"@ant-design/icons/es/icons/PlusOutlined";import{extend as Q}from"@dimjs/utils/cjs/extend";import X from"@ant-design/icons/es/icons/RedoOutlined";import{useEffectCustom as Z}from"@flatbiz/antd";import{isBoolean as $}from"@dimjs/lang/cjs/is-boolean";import{isNumber as ee}from"@dimjs/lang/cjs/is-number";import{isString as re}from"@dimjs/lang/cjs/is-string";import te from"@ant-design/icons/es/icons/DeleteOutlined";import{isObject as ne}from"@dimjs/lang/cjs/is-object";var ae=e;function ie(){ie=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t){if(Object.prototype.hasOwnProperty.call(t,n)){e[n]=t[n]}}}return e};return ie.apply(this,arguments)}function le(e,r){if(e==null)return{};var t={};var n=Object.keys(e);var a,i;for(i=0;i<n.length;i++){a=n[i];if(r.indexOf(a)>=0)continue;t[a]=e[a]}return t}var oe=function e(){var t=r(),n=t.elemAclLimits;var a=I(n)?n:[];return a};var ue=function e(r){var t=oe();if(t.includes(r)){return true}return false};var se=function e(r){var t=oe();if(t.includes(r.name)){return j(D,{children:r.children})}return null};var ce=["text","color","onClick","permission","needConfirm","confirmMessage","hidden","style"];var de=function e(r){return j("div",{className:"table-operate",children:j(u,{split:j(s,{type:"vertical"}),size:r.size,wrap:o(r.wrap)?true:r.wrap,children:r.operateList.map((function(e,r){if(!e)return null;var t=e.text,n=e.color,a=e.onClick,i=e.permission,l=e.needConfirm,o=e.confirmMessage,u=e.hidden,s=e.style,f=le(e,ce);if(u)return null;if(i&&!ue(i))return null;var v=n?ie({color:n},s):s;var m=e.type||"link";if(l){return j(c,{title:o,okText:"确定",cancelText:"取消",onConfirm:a,arrowPointAtCenter:true,children:j(d,ie({},f,{onClick:undefined,type:m,danger:true,style:v,children:t}))},r)}return P(d,ie({},f,{type:m,style:v,key:r,onClick:a}),t)}))})})};de.defaultProps={size:0};var fe=["value","onChange","style"];var ve=function e(r){var n=r.value,a=r.onChange,i=r.style,l=le(r,fe);var o=A((function(){if(r.format)return r.format;if(r.showTime)return"YYYY-MM-DD HH:mm:ss";return"YYYY-MM-DD"}),[r.showTime,r.format]);var u=z.useCallbackRef((function(e){if(e){a==null?void 0:a(U(e).format(o))}else{a==null?void 0:a(undefined)}}));var s=z.useCallbackRef((function(e){var t=U(e.format("YYYY-MM-DD"));if(!r.disabledDateConfig){return false}var n=r.disabledDateConfig,a=n.minDate,i=n.maxDate;if(a&&i){if(t.isBefore(a)||t.isAfter(i)){return true}}else if(a){if(t.isAfter(a)){return true}}else if(i){if(t.isBefore(a)){return true}}return false}));var c=A((function(){if(n){return U(t.dateNormalize(n))}return undefined}),[n]);return j(f,ie({disabledDate:s},l,{style:ie({width:"100%"},i),value:c,onChange:u}))};var me=["value","onChange","style"];var pe=function e(r){var n=r.value,a=r.onChange,i=r.style,l=le(r,me);var o=O(),u=o[0],s=o[1];var c=A((function(){if(r.format)return r.format;if(r.showTime===true)return"YYYY-MM-DD HH:mm:ss";return"YYYY-MM-DD"}),[r.showTime,r.format]);var d=z.useCallbackRef((function(e){if(e){var r=e||[],t=r[0],n=r[1];a==null?void 0:a([U(t).format(c),U(n).format(c)])}else{a==null?void 0:a(undefined)}}));var v=z.useCallbackRef((function(e){if(r.disabledDateConfig){s(e)}}));var m=z.useCallbackRef((function(e){var t=U(e.format("YYYY-MM-DD"));if(!r.disabledDateConfig){return false}var n=r.disabledDateConfig,a=n.maxDays,i=n.minDate,l=n.maxDate;if(i&&l){if(t.isBefore(i)||t.isAfter(l)){return true}}else if(i){if(t.isAfter(i)){return true}}else if(l){if(t.isBefore(i)){return true}}if(!u||!a){return false}var o=u[0]?U(u[0].format("YYYY-MM-DD")):undefined;var s=u[1]?U(u[1].format("YYYY-MM-DD")):undefined;var c=o?o.clone().add(a-1,"d"):s;var d=s?s.clone().subtract(a-1,"d"):o;return t.isBefore(d)||t.isAfter(c)}));var p=n||[],h=p[0],g=p[1];var b=A((function(){if(h&&g){var e=t.dateNormalize(h);var r=t.dateNormalize(g);return[U(e),U(r)]}return undefined}),[h,g]);return j(f.RangePicker,ie({disabledDate:m,onCalendarChange:v},l,{style:ie({width:"100%"},i),value:b,onChange:d}))};var he={actions:{openDrawerForm:function e(r){var t=r.itemData,n=r.title,a=r.operateType,i=r.pageLoading;return function(e){e.itemData=t;e.title=n;e.operateType=a;e.pageLoading=i;e.visible=true}},closeDrawer:function e(){return function(e){e.visible=false}},setDrawerItemData:function e(r){return function(e){e.pageLoading=false;e.itemData=r}}},state:{visible:false,title:"",operateType:null}};var ge=function e(r){return j("div",{className:"fixed-bottom-block",children:F(u,{size:"middle",children:[j(d,ie({},r.cancelButtonProps,{className:"cancel-btn",onClick:r.onCancel,children:r.cancelText||"取消"})),r.hideOkBtn!=true&&j(d,ie({type:"primary",icon:j(H,{})},r.okButtonProps,{className:"ok-btn",onClick:r.onOk,loading:r.loading,children:r.okText||"提交"}))]})})};var be=["pageLoading","className","width","children","footer","operationProps"];var ye=function e(){return j("div",{className:"drawer-wraper-loader",children:F("div",{className:"loader-wrapper",children:[j("div",{className:"loader-inner"}),j("div",{className:"loader-text",children:"LOADING"})]})})};var Ce=function e(r){var t=r.pageLoading,n=r.className,a=r.width,i=a===void 0?600:a,l=r.children,o=r.footer,u=r.operationProps,s=le(r,be);M((function(){console.error("@flatbiz/antd库【DrawerWraper】组件已经过期,请使用DrawerWrapper替换包括DrawerWraper=>DrawerWrapper、createDrawerWraperModel=>createDrawerWrapperModel,如果使用DrawerWrapper组件原用法需要调整")}),[]);return F(v,ie({className:V("drawer-wraper",n),keyboard:false,forceRender:false,destroyOnClose:true,width:"80%",contentWrapperStyle:{maxWidth:i},size:"default"},s,{footer:o||o===null?o:j(ge,ie({},u)),children:[j("div",{className:"drawer-wraper-content",children:l}),t&&j(ye,{})]}))};var we={};var Ne=function e(r){if(!we[r]){we[r]=G(he)}return we[r]};var Le={actions:{openDrawerForm:function e(r){var t=r.itemData,n=r.title,a=r.operateType,i=r.pageLoading;return function(e){e.itemData=t;e.title=n;e.operateType=a;e.pageLoading=i;e.visible=true}},closeDrawer:function e(){return function(e){e.visible=false}},setDrawerItemData:function e(r){return function(e){e.pageLoading=false;e.itemData=r}}},state:{visible:false,title:"",operateType:null}};var Se=function e(r,t){return M(r,t)};var xe=function e(r,t){M((function(){function e(){return new Promise((function(e,t){return Promise.resolve(r()).then((function(r){try{return e()}catch(e){return t(e)}}),t)}))}void e()}),t)};var ke=function e(r){return j("div",{className:"fixed-bottom-block",children:F(u,{size:"middle",children:[j(d,ie({},r.cancelButtonProps,{className:"cancel-btn",onClick:r.onCancel,children:r.cancelText||"取消"})),r.hideOkBtn!=true&&j(d,ie({type:"primary",icon:j(H,{})},r.okButtonProps,{className:"ok-btn",onClick:r.onOk,loading:r.loading,children:r.okText||"提交"}))]})})};var Re=["pageLoading","className","width","children"];var qe=function e(){return j("div",{className:"drawer-wrapper-loader",children:F("div",{className:"loader-wrapper",children:[j("div",{className:"loader-inner"}),j("div",{className:"loader-text",children:"LOADING"})]})})};var Te=function e(r){return F(D,{children:[j("div",{className:"drawer-wrapper-content",children:r.children}),r.operationProps?j(Ie,{children:j(ke,ie({},r.operationProps))}):null]})};var Ie=function e(r){return j("div",{className:"drawer-wrapper-footer",children:r.children})};var De=function e(r){var t=r.pageLoading,n=r.className,a=r.width,i=a===void 0?600:a,l=r.children,o=le(r,Re);Se((function(){if(r["operationProps"]){throw new Error("DrawerWrapper组件升级,参数operationProps用法变更,请及时更新")}}),[]);return F(v,ie({className:V("drawer-wrapper",n),keyboard:false,forceRender:false,destroyOnClose:true,width:"80%",contentWrapperStyle:{maxWidth:i},size:"default"},o,{footer:null,children:[t&&j(qe,{}),l]}))};De.Content=Te;De.Footer=Ie;var Pe={};var Ae=function e(r){if(!Pe[r]){Pe[r]=G(Le)}return Pe[r]};var Oe=function e(r,t){return typeof r==="boolean"?r:r==null?void 0:r({tableRowIndex:t})};var Me=function e(r){var t=r.fieldConfig,n=t.editableConfig,a=t.editable,i=t.render;var l=n.editableComptProps;var o=A((function(){if(a)return[];var e=I(r.value)?r.value:[];var t=l.options||[];if(!I(t)||t.length===0){return e.map((function(e){return{label:e,value:e}}))}var n=[];e.forEach((function(e){var r=t.find((function(r){return r.value===e}));n.push(r?r:{label:e,value:e})}));return n}),[a,l.options,r.value]);if(a){return j(p.Group,ie({},l,{value:r.value,onChange:r.onChange}))}return j("span",{className:"editable-checkbox-group-view",children:i?i(r.value):o.map((function(e,r){return j(h,{color:"#1890ff",children:e.label},r)}))})};var _e=function e(r){var t=r.fieldConfig.formItemProps;return j(m.Item,ie({},t,{name:r.name,className:V("editable-checkbox-group-form-item",t==null?void 0:t.className),children:j(Me,ie({},r))}))};var Be=function e(r){var t=r.fieldConfig,n=t.formItemProps,a=t.editableConfig;return j(m.Item,ie({},n,{name:r.name,className:V("editable-date-picker-wraper-form-item",n==null?void 0:n.className),children:j(ve,ie({},a.editableComptProps))}))};var Ee=function e(r){var t=r.fieldConfig,n=t.editableConfig,a=t.editable,i=t.render;var l=n.editableComptProps;var o=A((function(){var e=I(r.value)?r.value:[];if(a)return undefined;return e.join("~")}),[a,r.value]);if(a){return j(pe,ie({},l,{value:r.value,onChange:r.onChange}))}return j("span",{className:"editable-date-range-picker-view",children:i?i(r.value):o})};var Ye=function e(r){var t=r.fieldConfig.formItemProps;return j(m.Item,ie({},t,{name:r.name,className:V("editable-date-range-picker-wraper-form-item",t==null?void 0:t.className),children:j(Ee,ie({},r))}))};var Ke=function e(r){var t=r.fieldConfig,n=t.formItemProps,a=t.editableConfig;return j(m.Item,ie({},n,{name:r.name,children:j(g,ie({},a.editableComptProps))}))};var je=function e(r){var t=r.fieldConfig,n=t.formItemProps,a=t.editableConfig;return j(m.Item,ie({},n,{name:r.name,className:V("editable-input-number-form-item",n==null?void 0:n.className),children:j(b,ie({},a.editableComptProps))}))};var Fe=function e(r){var t=r.fieldConfig,n=t.editableConfig,a=t.editable,i=t.render;var l=n.editableComptProps;var o=A((function(){if(a)return[];var e=r.value;var t=l.options||[];if(!I(t)||t.length===0){return e}var n=t.find((function(r){return r.value===e}));return(n==null?void 0:n.label)||e}),[a,l.options,r.value]);var u=z.useCallbackRef((function(e){r.onChange==null?void 0:r.onChange(e.target.value)}));if(a){return j(y.Group,ie({},l,{value:r.value,onChange:u}))}return j("span",{className:"editable-radio-group-view",children:i?i(r.value):o?j(h,{color:"#1890ff",children:o}):null})};var We=function e(r){var t=r.fieldConfig.formItemProps;return j(m.Item,ie({},t,{name:r.name,className:V("editable-radio-group-form-item",t==null?void 0:t.className),children:j(Fe,ie({},r))}))};var ze={selectorList:[],originalSelectorList:[],queryIsEmpty:false,requestStatus:"init"};var Ue={actions:{setSelectBoxList:function e(r){return function(e){e.selectorList=r.selectorList||[];e.originalSelectorList=r.originalSelectorList||[];e.requestStatus="request-success"}},resetSelectBoxList:function e(){return function(e){e.selectorList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:ze};var Ge={};var Ve=function e(r){if(!Ge[r]){Ge[r]=G(Ue)}return Ge[r]};var He=["serviceConfig","showAllOption","effectDependencyList","onSelectorListChange","operateType","searchFieldName","selectorList","modelKey","fieldNames"];var Je=_((function(e,r){var t=e.serviceConfig,i=e.showAllOption,l=e.effectDependencyList,o=e.onSelectorListChange,u=e.operateType,s=e.searchFieldName,c=e.selectorList,d=e.modelKey,f=e.fieldNames,v=le(e,He);var m=u==="search"&&c===undefined;var p=t||{};var h=l||[];var g=B();var b=O(false),y=b[0],N=b[1];var L=Ve(d).useStore(),S=L[0],x=L[1];var k="request-pre-"+e.modelKey;var R=function e(r){return r===""||n(r)};var q=function e(r){var t=p.onRequestResultAdapter?p.onRequestResultAdapter(r):r;return t};var T=z.useCallbackRef((function(e,r){return new Promise((function(t,i){var l,o,u,c,d,v,h;var g=function(){try{return t()}catch(e){return i(e)}};var b=function(e){try{N(false);void C.error(e.message||"数据查询异常...");return g()}catch(e){return i(e)}};try{if(!p.onRequest){throw new Error("onRequest 调用接口服务不能为空")}l=p.requiredParamsKeys;o=Q({},p.params);if(l){u=l.find((function(e){return R(o[e])}));if(u){console.warn("SelectorWrapper组件:参数:"+l.join("、")+"不能为空");return t()}}var y=function(){try{return g()}catch(e){return b(e)}};var w=function(e){try{console.error(e);N(false);window[k]=false;void x.changeRequestStatus("request-error");void C.error(e.message||"获取数据异常");return y()}catch(e){return b(e)}};try{N(true);window[k]=true;void x.changeRequestStatus("request-pre");if((!n(e)||!n(r))&&m){c=s||"keyword";o[c]=e;o["id"]=r}return Promise.resolve(p.onRequest==null?void 0:p.onRequest(o)).then((function(e){try{d=e;v=q(d);h=a(v||[],f);N(false);window[k]=false;void x.setSelectBoxList({selectorList:h,originalSelectorList:v});return y()}catch(e){return w(e)}}),w)}catch(e){w(e)}}catch(e){b(e)}}))}));Z((function(){if(S.originalSelectorList&&S.requestStatus==="request-success"){o==null?void 0:o(S.originalSelectorList)}}),[S.originalSelectorList,S.requestStatus]);Z((function(){if(c){void x.setSelectBoxList({selectorList:a(c,f),originalSelectorList:c});return}if(m)return;var e=Ve(d).getState();if(h.length>0||!window[k]&&e.requestStatus!=="request-success"){void T()}}),h);Z((function(){if(m){if(R(e.value)){o==null?void 0:o([]);void x.resetSelectBoxList()}else{if(e.value!==g.current){void T(undefined,e.value)}}}}),h.concat([e.value]));E(r,(function(){return{onClearSelectorList:function e(){void x.resetSelectBoxList()},getSelectorList:function e(){return S.selectorList}}}));var I=z.useCallbackRef((function(e,r){return(r==null?void 0:r.children).toLowerCase().indexOf(e.toLowerCase())>=0}));var D=z.useDebounceCallback((function(e){if(e){void T(e)}else{void x.resetSelectBoxList()}}),300);var P=z.useCallbackRef((function(r){g.current=r;for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++){n[a-1]=arguments[a]}e.onChange==null?void 0:e.onChange(r,n)}));var A=z.useCallbackRef((function(){void T()}));var M=j(w.Option,{value:"",children:"全部"});return F(w,ie({showSearch:true,allowClear:true},v,{value:n(e.value)?undefined:e.value,notFoundContent:j(Qe,{requestStatus:S.requestStatus,onAgainRequest:A}),loading:y,onSearch:m?D:undefined,filterOption:m?false:I,onChange:P,fieldNames:undefined,suffixIcon:S.requestStatus==="request-error"?j(X,{spin:y,onClick:A}):undefined,children:[i===true?M:i,S.selectorList.map((function(r){return j(w.Option,{value:r.value,label:r.label,children:e.onLabelRenderAdapter?e.onLabelRenderAdapter(r):r.label},r.value)}))]}))}));var Qe=function e(r){var t=A((function(){if(r.requestStatus==="request-error"){return"数据查询异常"}else if(r.requestStatus==="request-success"){return"暂无数据"}return"数据查询中"}),[r.requestStatus]);return j(N,{image:N.PRESENTED_IMAGE_SIMPLE,description:t,className:"tree-selector-wrapper-empty",children:r.requestStatus==="request-error"&&j(d,{type:"primary",onClick:r.onAgainRequest,children:"重新获取数据"})})};var Xe=function e(r){var t=r.fieldConfig,n=t.editableConfig,i=t.editable,l=t.render;var o=n.editableComptProps;var u=O([]),s=u[0],c=u[1];var d=O([]),f=d[0],v=d[1];M((function(){if(!i){var e=I(r.value)?r.value:r.value===undefined?[]:[r.value];if(s.length===0){v(e.map((function(e){return{label:e,value:e}})))}var t=[];e.forEach((function(e){var r=s.find((function(r){return r.value===e}));t.push(r?r:{label:String(e),value:e})}));v(t)}}),[i,o.fieldNames,r.value,s]);var m=z.useCallbackRef((function(e){c(a(e||[],o.fieldNames))}));if(i){return j(Je,ie({},o,{value:r.value,onChange:r.onChange,onSelectorListChange:m}))}return F(D,{children:[j("div",{style:{display:"none"},children:j(Je,ie({},o,{onSelectorListChange:m}))}),j("span",{className:"editable-selector-view",children:l?l(r.value):f.map((function(e,r){return j(h,{color:"#1890ff",children:e.label},r)}))})]})};var Ze=function e(r){var t=r.fieldConfig.formItemProps;return j(m.Item,ie({},t,{name:r.name,className:V("editable-selector-wrapper-form-item",t==null?void 0:t.className),children:j(Xe,ie({},r))}))};var $e=function e(r){var t,n;var a=A((function(){var e;if((e=r.fieldConfig)!=null&&e.render)return undefined;var t=re(r.value)||ee(r.value)||$(r.value)||!r.value;if(!t){console.warn("Form.List name:【"+r.name+"】数据【"+JSON.stringify(r.value)+"】不能渲染在页面中")}return t?r.value:undefined}),[(t=r.fieldConfig)==null?void 0:t.render,r.name,r.value]);return j("span",{className:"editable-text-view",children:((n=r.fieldConfig)==null?void 0:n.render==null?void 0:n.render(r.value))||a})};var er=function e(r){return j(m.Item,{noStyle:true,name:r.name,children:j($e,{name:r.name,fieldConfig:r.fieldConfig})})};var rr=function e(r){var t=r.fieldConfig,n=t.formItemProps,a=t.editableConfig;return j(m.Item,ie({},n,{name:r.name,children:j(g.TextArea,ie({},a.editableComptProps))}))};var tr=["onChange","onUploadError","value"];var nr=function e(r){var t=r.onChange,n=r.onUploadError,a=r.value,i=le(r,tr);var l=O(),o=l[0],u=l[1];var s=Q({uid:"uid",name:"name",url:"url"},r.fieldNames);Se((function(){u(a==null?void 0:a.map((function(e){return{uid:e[s.uid],name:e[s.name],url:e[s.url]}})))}),[s.name,s.uid,s.url,a]);var c=z.useCallbackRef((function(e){var i=e.fileList;if(e.file.status==="done"){var l=e.file.response;if(l.code==="0000"){var o=r.onRequestResultAdapter?r.onRequestResultAdapter(l.data):l.data;o[s.uid]=o[s.uid]||e.file.uid;o[s.name]=o[s.name]||e.file.name;if(r.maxCount===1){t==null?void 0:t([o])}else{t==null?void 0:t((a||[]).concat(o))}}else{if(n){n(l.message)}else{void C.error(l.message||"上传操作失败...")}i[i.length-1]=ie({},i[i.length-1],{status:"error"})}}else if(e.file.status==="removed"){var c=e.file.uid;var d=a!==undefined?[].concat(a):[];var f=d.findIndex((function(e){var r=e[s.uid];return r===c}));if(f>=0){d.splice(f,1)}t==null?void 0:t(d)}else if(e.file.status==="error"){if(n){n()}else{void C.error("上传操作失败...")}}u([].concat(i));r.onUploadChange==null?void 0:r.onUploadChange(e)}));return j(L,ie({},i,{onChange:c,fileList:o,className:V("v-upload-wrapper",i.className),children:i.disabled?null:j(ar,{listType:i.listType,children:r.children})}))};var ar=function e(r){if(r.children)return j(D,{children:r.children});if(r.listType==="picture-card"){return F("div",{children:[j(J,{}),j("div",{style:{marginTop:8},children:"上传图片"})]})}if(r.listType==="picture"){return j(d,{type:"primary",ghost:true,children:"选择图片上传"})}return j(d,{type:"primary",ghost:true,children:"选择文件上传"})};var ir=["children"];var lr=function e(r){var t=r.fieldConfig,n=t.editableConfig,a=t.render,i=t.editable;var l=n.editableComptProps,o=l.children,u=le(l,ir);if(i){return j(nr,ie({listType:"text"},u,{value:r.value,onChange:r.onChange,children:o}))}return j("div",{className:"upload-wrapper-selector-view",children:a?a(r.value):j(nr,ie({listType:"text"},u,{value:r.value,disabled:true}))})};var or=function e(r){var t=r.fieldConfig.formItemProps;return j(m.Item,ie({},t,{name:r.name,className:V("editable-upload-wrapper-form-item",t==null?void 0:t.className),children:j(lr,ie({},r))}))};var ur=function e(r){var t=r.fieldConfig,n=t.editableConfig,a=t.editable;var i=Oe(a,r.tableRowIndex);var l=Q({},r.fieldConfig,{editable:i});var o={name:r.name,fieldConfig:l};if((n==null?void 0:n.type)==="input"&&i){return j(Ke,ie({},o))}else if((n==null?void 0:n.type)==="inputNumber"&&i){return j(je,ie({},o))}else if((n==null?void 0:n.type)==="textArea"&&i){return j(rr,ie({},o))}else if((n==null?void 0:n.type)==="datePickerWrapper"&&i){return j(Be,ie({},o))}else if((n==null?void 0:n.type)==="dateRangePickerWrapper"){return j(Ye,ie({},o))}else if((n==null?void 0:n.type)==="selectorWrapper"){return j(Ze,ie({},o))}else if((n==null?void 0:n.type)==="checkboxGroup"){return j(_e,ie({},o))}else if((n==null?void 0:n.type)==="radioGroup"){return j(We,ie({},o))}else if((n==null?void 0:n.type)==="uploadWrapper"){return j(or,ie({},o))}else if((n==null?void 0:n.type)==="custom"){return n.editableComptProps({name:r.name,editable:i,completeName:r.completeName})}return j(er,ie({},o))};var sr=function e(r){var t=m.useFormInstance();var n=r.formListConfig,a=n.onFormListBeforeRender,i=n.editableConfigList,l=n.onFormListAfterRender,o=n.onFormListItemBeforeRender,s=n.onFormListItemAfterRender,c=n.deleteOperateRender;return j(m.List,{name:r.name,children:function e(n,d){var f=d.add,v=d.remove;return F(W,{children:[a?a({tableRowIndex:r.tableRowIndex,add:f,get value(){return t.getFieldValue(r.completeName)}}):null,n.map((function(e,n){var a=i.find((function(e){return Oe(e.editable,r.tableRowIndex)}));var l=V("editable-inner-formlist-item","editable-inner-formlist-item-"+r.name[1],{"editable-inner-formlist-item_preview":!a});return F("div",{className:l,children:[o?o({add:f,remove:function e(){v(n)},formListItemIndex:n,tableRowIndex:r.tableRowIndex,get value(){return t.getFieldValue([].concat(r.completeName,[e.name]))}}):null,F(u,{children:[i.map((function(t,n){return j(ur,{name:[e.name,t.fieldName],fieldConfig:t,tableRowIndex:r.tableRowIndex,completeName:[].concat(r.completeName,[e.name])},n)})),a?j(cr,{deleteOperateRender:c,remove:function e(){v(n)},index:n}):null]}),s?s({add:f,formListItemIndex:n,tableRowIndex:r.tableRowIndex,remove:function e(){v(n)},get value(){return t.getFieldValue([].concat(r.completeName,[e.name]))}}):null]},n)})),l?l({tableRowIndex:r.tableRowIndex,add:f,get value(){return t.getFieldValue(r.completeName)}}):null]})}})};var cr=function e(r){return j(m.Item,{children:r.deleteOperateRender?r.deleteOperateRender({remove:r.remove,formListItemIndex:r.index}):j(d,{type:"link",danger:true,icon:j(te,{}),onClick:r.remove,children:"删除"})})};var dr=function e(r){if(r.fieldConfig){if(I(r.fieldConfig["editableConfigList"])){var t=r.fieldConfig;return j(sr,{name:r.name,completeName:r.completeName,formListConfig:t,tableRowIndex:r.tableRowIndex})}else{return j(ur,{name:r.name,fieldConfig:r.fieldConfig,tableRowIndex:r.tableRowIndex,completeName:r.completeName})}}return j(er,{name:r.name})};var fr=["fieldConfig","operateRender"];var vr=function e(r){var t;var n=A((function(){if(!r.columns)return[];return r.columns.map((function(e){var t=e.fieldConfig,n=e.operateRender,a=le(e,fr);return ie({onCell:function e(){var t;return{valign:((t=r.tableProps)==null?void 0:t.cellVerticalAlign)||"middle"}}},a,{render:function a(i,l){if(n){return n({name:[].concat(r.name,[l.name]),tableRowIndex:l.name,operation:l.operation})||""}return j(dr,{name:e.dataIndex?[l.name,e.dataIndex]:[l.name],completeName:e.dataIndex?[].concat(r.name,[l.name,e.dataIndex]):[].concat(r.name,[l.name]),fieldConfig:t,tableRowIndex:l.name})}})}))}),[r.columns,r.name,(t=r.tableProps)==null?void 0:t.cellVerticalAlign]);return j("div",{className:"editable-table",children:j(m.List,{name:r.name,rules:r.rules,children:function e(t,a){return F(D,{children:[r.onTableBeforeRender?r.onTableBeforeRender(a,t.length):null,j(S,ie({scroll:{x:"max-content"},pagination:false},r.tableProps,{dataSource:t.map((function(e){return ie({},e,{operation:a})})),columns:n,rowKey:"key"})),r.onTableAfterRender?r.onTableAfterRender(a,t.length):j(d,{type:"dashed",onClick:function e(){return a.add()},block:true,icon:j(J,{}),style:{marginTop:15},children:"新增"})]})}})})};var mr=["onImportFinish"];var pr=function e(r){var t=r.onImportFinish,n=le(r,mr);var a=O(false),i=a[0],l=a[1];var o=z.useCallbackRef((function(e){if(e.file.status==="uploading"){l(true)}else if(e.file.status==="done"){l(false);var r=e.file.response;if(r.code==="0000"){t(r.data)}else{void C.error(r.message||"文件导入异常...")}}}));return j(L,ie({showUploadList:false,maxCount:1},n,{onChange:o,children:r.children?r.children:j(d,{type:"primary",ghost:true,loading:i,children:"选择文件"})}))};pr.defaultProps={name:"file",accept:".xlsx,.xls"};var hr=["onChange","onUploadError","onPreview","value"];var gr=function e(r){Se((function(){console.error("@flatbiz/antd库【FileUpload】组件已经过期,请使用【UploadWrapper】组件替换")}),[]);var t=r.onChange,n=r.onUploadError,a=r.onPreview,i=r.value,l=le(r,hr);var o=O([]),u=o[0],s=o[1];var c=Q({fileKey:"fileKey",fileName:"fileName"},r.fieldNames);M((function(){if(i&&I(i)){s(i.map((function(e){return{uid:e["uid"]||e[c.fileKey],name:e[c.fileName],fileKey:e[c.fileKey],url:e[c.fileKey],thumbUrl:e[c.fileKey]}})))}}),[c.fileKey,c.fileName,i]);var d=z.useCallbackRef((function(e){if(e.file.status==="done"){var a=e.file.response;if(a.code==="0000"){var l=a.data||{};var o={uid:e.file.uid,fileName:l[c.fileName]||e.file.name,fileKey:l[c.fileKey]};var u=(i||[]).concat(o);t==null?void 0:t(u)}else{n==null?void 0:n(a.message)}}else if(e.file.status==="removed"){var d=e.file.uid;var f=i!==undefined?[].concat(i):[];var v=f.findIndex((function(e){var r=e["uid"]||e[c.fileKey];return r===d}));if(v>=0){f.splice(v,1)}t==null?void 0:t(f)}else if(e.file.status==="error"){n==null?void 0:n()}s([].concat(e.fileList));r.onUploadChange==null?void 0:r.onUploadChange(e)}));var f=z.useCallbackRef((function(e){a==null?void 0:a({fileKey:e[c.fileKey],fileName:e[c.fileName]})}));return j(L,ie({},l,{onChange:d,onPreview:f,fileList:u,className:V("v-file-upload",l.className),children:r.children}))};var br=function e(r){var t=I(r.children)?r.children:[r.children];var a=r.direction||"vertical";var i=r.gap?r.gap:0;var l=!n(r.fullIndex)?I(r.fullIndex)?r.fullIndex:[r.fullIndex]:[];return j("div",{className:V("v-flex-layout","v-flex-"+a,r.className),style:r.style,onClick:r.onClick,children:t.map((function(e,r){var n=e.props.style||{};var o=l.includes(r)?ie({flex:1},n):n;if(r<t.length-1&&i>0){if(a==="horizontal"){o.marginRight=i}else{o.marginBottom=i}}return Y(e,{style:o,key:r})}))})};var yr=function e(r){return j("div",{style:ie({height:r.height},r.style),className:r.className})};var Cr=function e(r){return j(x,{title:r.hoverTips,children:F("div",{className:V("icon-wrapper","icon-wrapper-"+(r.size||"middle"),r.className),style:r.style,children:[r.icon,r.text?j("span",{className:"icon-wrapper-text",children:r.text}):null]})})};var wr={actions:{openModalForm:function e(r){var t=r.itemData,n=r.title,a=r.operateType,i=r.pageLoading;return function(e){e.itemData=t;e.title=n;e.operateType=a;e.pageLoading=i;e.visible=true}},closeModal:function e(){return function(e){e.visible=false}},setModalItemData:function e(r){return function(e){e.pageLoading=false;e.itemData=r}}},state:{visible:false,title:"",operateType:"view"}};var Nr=["loading","okText","cancelText","onCancel","onOk","hideOkBtn"];var Lr=function e(r){var t=r.loading,n=r.okText,a=n===void 0?"保存":n,i=r.cancelText,l=i===void 0?"取消":i,o=r.onCancel,s=r.onOk,c=r.hideOkBtn,f=le(r,Nr);return j(D,{children:F(u,{size:"middle",children:[j(d,ie({},f.cancelButtonProps,{className:"cancel-btn",onClick:o,children:l})),c!=true&&j(d,ie({type:"primary"},f.okButtonProps,{className:"ok-btn",onClick:s,loading:t,children:a}))]})})};var Sr=["pageLoading","className","width","children","footer","operationProps"];var xr=function e(){return j("div",{className:"modal-wraper-loader",children:F("div",{className:"loader-wrapper",children:[j("div",{className:"loader-inner"}),j("div",{className:"loader-text",children:"LOADING"})]})})};var kr=function e(r){var t=r.pageLoading,n=r.className,a=r.width,i=r.children,l=r.footer,o=r.operationProps,u=le(r,Sr);M((function(){console.error("@flatbiz/antd库【ModalWraper】组件已经过期,请使用ModalWrapper替换包括ModalWraper=>ModalWrapper、createModalWraperModel=>createModalWrapperModel,如果使用ModalWrapper组件原用法需要调整")}),[]);return F(k,ie({className:V("modal-wraper",n),keyboard:false,forceRender:false,destroyOnClose:true},u,{width:a||600,footer:null,children:[F("div",{className:"modal-wraper-content",children:[i,t&&j(xr,{})]}),l!==null&&j("div",{className:"modal-wraper-content-footer",children:l?l:j(Lr,ie({},o))})]}))};var Rr={};var qr=function e(r){if(!Rr[r]){Rr[r]=G(wr)}return Rr[r]};var Tr={actions:{openModalForm:function e(r){var t=r.itemData,n=r.title,a=r.operateType,i=r.pageLoading;return function(e){e.itemData=t;e.title=n;e.operateType=a;e.pageLoading=i;e.visible=true}},closeModal:function e(){return function(e){e.visible=false}},setModalItemData:function e(r){return function(e){e.pageLoading=false;e.itemData=r}}},state:{visible:false,title:"",operateType:"view"}};var Ir=["loading","okText","cancelText","onCancel","onOk","hideOkBtn"];var Dr=function e(r){var t=r.loading,n=r.okText,a=n===void 0?"保存":n,i=r.cancelText,l=i===void 0?"取消":i,o=r.onCancel,s=r.onOk,c=r.hideOkBtn,f=le(r,Ir);return j(D,{children:F(u,{size:"middle",children:[j(d,ie({},f.cancelButtonProps,{className:"cancel-btn",onClick:o,children:l})),c!=true&&j(d,ie({type:"primary"},f.okButtonProps,{className:"ok-btn",onClick:s,loading:t,children:a}))]})})};var Pr=["pageLoading","className","width","children"];var Ar=function e(){return j("div",{className:"modal-wrapper-loader",children:F("div",{className:"loader-wrapper",children:[j("div",{className:"loader-inner"}),j("div",{className:"loader-text",children:"LOADING"})]})})};var Or=function e(r){return F(D,{children:[j("div",{className:"modal-wrapper-content",children:r.children}),r.operationProps?j(Mr,{children:j(Dr,ie({},r.operationProps))}):null]})};var Mr=function e(r){return j("div",{className:"modal-wrapper-footer",children:r.children})};var _r=function e(r){var t=r.pageLoading,n=r.className,a=r.width,i=r.children,l=le(r,Pr);Se((function(){if(r["operationProps"]){throw new Error("ModalWrapper组件升级,参数operationProps用法变更,请及时更新")}}),[]);return F(k,ie({className:V("modal-wrapper",n),keyboard:false,forceRender:true,destroyOnClose:true},l,{width:a||600,footer:null,children:[i,t&&j(Ar,{})]}))};_r.Content=Or;_r.Footer=Mr;var Br={};var Er=function e(r){if(!Br[r]){Br[r]=G(Tr)}return Br[r]};var Yr=function e(r){return j("div",{className:V("page-fixed-footer",r.className),style:r.style,children:r.children})};var Kr=function e(){return j("div",{className:"v-404",children:"404"})};var jr={label_width_70:"form-label-70",label_width_80:"form-label-80",label_width_90:"form-label-90",label_width_100:"form-label-100",label_width_110:"form-label-110",label_width_120:"form-label-120",label_width_130:"form-label-130",label_width_auto:"form-label-auto"};var Fr={label_width_70:"form-item-label-70",label_width_80:"form-item-label-80",label_width_90:"form-item-label-90",label_width_100:"form-item-label-100",label_width_110:"form-item-label-110",label_width_120:"form-item-label-120",label_width_130:"form-item-label-130",label_width_auto:"form-item-label-auto"};var Wr={form:jr,formItem:Fr};var zr=function e(r){var t=r.formLabelAlign||"right";var n=V("simple-layout",{"simple-layout-tight":r.layoutType==="tight","simple-layout-formlabel-left":t==="left"},r.className);var a=V("simple-layout-title",{"simple-layout-title-sign":r.titleLeftLine});return F("div",{className:n,style:r.style,children:[r.title?j("div",{className:a,children:r.title}):null,r.desc?j("div",{className:"simple-layout-desc",children:r.desc}):null,r.children?j("div",{className:"simple-layout-content",children:r.children}):null]})};zr.defaultProps={titleLeftLine:true,layoutType:"layer"};var Ur=function e(r){var t=O(),n=t[0],a=t[1];var i=O(false),l=i[0],o=i[1];var u=O(false),s=u[0],c=u[1];var d=A((function(){return{sendTxt:r.sendTxt,sentTxt:r.sentTxt,processingTxt:r.processingTxt,format:r.format,autoStart:r.autoStart,totalTicks:r.totalTicks,duration:r.duration}}),[]);var f=d.format;var v=d.totalTicks;var m=d.duration;var p=z.useCountdownCallback((function(e){var t=e/1e3;if(e>0){if(!l){o(true)}a(f.replace("{t}",String(t)));r.onTick==null?void 0:r.onTick(t)}else if(e===0){o(false);c(false);r.onTick==null?void 0:r.onTick(t);a(d.sentTxt)}}),v*1e3,{intervalTime:m});M((function(){if(!d.autoStart){a(d.sendTxt)}else{p();c(true);o(true)}}),[p,d]);var h=z.useCallbackRef((function(){if(l||s)return;c(true);a(d.processingTxt);void r.onSendRequest().then((function(){o(true);p()})).catch((function(){a(d.sendTxt);c(false)}))}));var g=V("v-count-down",r.className,{running:l,starting:s});return j("div",{className:g,onClick:h,children:n})};Ur.defaultProps={totalTicks:60,duration:1e3,autoStart:false,format:"{t}s",sendTxt:"获取验证码",sentTxt:"重新获取",processingTxt:"发送中..."};var Gr=function e(){console.error("@flatbiz/antd库【TableFilterLayout】组件已经过期,请使用【SimpleLayout】组件替代")};var Vr=function e(r){Se((function(){Gr()}),[]);return j("div",{className:V("table-filter-layout",{"table-filter-layout-flex":r.isFixed},r.className),children:K.map(r.children,(function(e,t){if(r.isFixed&&t===r.fullIndex){return Y(e,{className:"table-filter-layout-flex-full"})}return e}))})};var Hr=function e(r){return j("div",{className:V("table-filter-layout-condition",r.className),children:r.children})};var Jr=function e(r){return j("div",{className:V("table-filter-layout-operate",r.className),children:r.children})};var Qr=function e(r){return j("div",{className:V("table-filter-layout-table",r.className),children:r.children})};var Xr=function e(r){return j("div",{className:V("table-filter-layout-footer",r.className),children:r.children})};Vr.Condition=Hr;Vr.Operate=Jr;Vr.Table=Qr;Vr.Footer=Xr;var Zr={treeSelectorList:[],queryIsEmpty:false};var $r={actions:{setSelectBoxList:function e(r){return function(e){e.treeSelectorList=r||[];e.requestStatus="request-success"}},resetSelectBoxList:function e(){return function(e){e.treeSelectorList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:Zr};var et={};var rt=function e(r){if(!et[r]){et[r]=G($r)}return et[r]};var tt=function e(r,t,n){if(!I(t)||t.length===0)return[];var a=i(t,n);return l(r,a)};var nt=["serviceConfig","effectDependencyList","onTreeSelectorListChange","treeSelectorList","modelKey"];var at=_((function(e,r){var t=e.serviceConfig,a=e.effectDependencyList,i=e.onTreeSelectorListChange,l=e.treeSelectorList,o=e.modelKey,u=le(e,nt);var s=t||{};var c=a||[];var d=O(false),f=d[0],v=d[1];var m=O(),p=m[0],h=m[1];var g=rt(o).useStore(),b=g[0],y=g[1];var w="request-pre-"+e.modelKey;var N=function e(r){return r===""||n(r)};var L=function e(r){var t=s.onRequestResultAdapter?s.onRequestResultAdapter(r):r;return t};var S=z.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l;var o=function(){try{return e()}catch(e){return r(e)}};var u=function(e){try{v(false);void C.error(e.message||"数据查询异常...");return o()}catch(e){return r(e)}};try{if(!s.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=s.requiredParamsKeys;n=Q({},s.params);if(t){a=t.find((function(e){return N(n[e])}));if(a){console.warn("TreeSelectorWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var c=function(){try{return o()}catch(e){return u(e)}};var d=function(e){try{v(false);window[w]=false;void y.changeRequestStatus("request-error");return c()}catch(e){return u(e)}};try{v(true);window[w]=true;void y.changeRequestStatus("request-pre");return Promise.resolve(s.onRequest==null?void 0:s.onRequest(n)).then((function(e){try{i=e;l=L(i);v(false);window[w]=false;void y.setSelectBoxList(l||[]);return c()}catch(e){return d(e)}}),d)}catch(e){d(e)}}catch(e){u(e)}}))}));Z((function(){if(b.treeSelectorList&&b.requestStatus==="request-success"){i==null?void 0:i(b.treeSelectorList)}}),[b.treeSelectorList,b.requestStatus]);Z((function(){if(l){void y.setSelectBoxList(l);return}var e=rt(o).getState();console.log("realTimeState",e.requestStatus);if(c.length>0||!window[w]&&e.requestStatus!=="request-success"){void S()}}),c);M((function(){if(!n(e.value)){var r=I(e.value)?e.value:[e.value];if(r.length>0&&b.treeSelectorList.length>0){var t=[];r.forEach((function(r){var n=tt(r,b.treeSelectorList,e.fieldNames);t=t.concat(n.map((function(e){return e.value})))}));h((function(e){var r=t.concat(e||[]);return Array.from(new Set(r))}))}}}),[b.treeSelectorList,e.fieldNames,e.value]);E(r,(function(){return{onClearSelectorList:function e(){void y.setSelectBoxList([])},getTreeSelectorList:function e(){return b.treeSelectorList}}}));var x=z.useCallbackRef((function(e){h(e)}));var k=z.useCallbackRef((function(){void S()}));var q=A((function(){if(b.treeSelectorList.length===0)return undefined;var r=ie({label:"label",value:"value"},e.fieldNames);if(e.showAllOption===true){var t;var n=(t={},t[""+r.label]="全部",t[""+r.value]="",t);return[n].concat(b.treeSelectorList)}else if(ne(e.showAllOption)){return[e.showAllOption].concat(b.treeSelectorList)}return b.treeSelectorList}),[e.fieldNames,e.showAllOption,b.treeSelectorList]);return j(R,ie({dropdownStyle:{maxHeight:400,overflow:"auto"},showSearch:true,treeLine:true},u,{value:n(e.value)?undefined:e.value,treeExpandedKeys:p,treeData:q,loading:f,onTreeExpand:x,style:ie({width:"100%"},u.style),suffixIcon:b.requestStatus==="request-error"?j(X,{spin:f,onClick:k}):undefined,notFoundContent:j(it,{requestStatus:b.requestStatus,onAgainRequest:k})}))}));var it=function e(r){var t=A((function(){if(r.requestStatus==="request-error"){return"数据查询异常"}else if(r.requestStatus==="request-success"){return"暂无数据"}return"数据查询中"}),[r.requestStatus]);return j(N,{image:N.PRESENTED_IMAGE_SIMPLE,description:t,className:"tree-selector-wrapper-empty",children:r.requestStatus==="request-error"&&j(d,{type:"primary",onClick:r.onAgainRequest,children:"重新获取数据"})})};var lt={treeList:[],queryIsEmpty:false};var ot={actions:{setTreeList:function e(r){return function(e){e.treeList=r||[];e.requestStatus="request-success"}},resetTreeList:function e(){return function(e){e.treeList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:lt};var ut={};var st=function e(r){if(!ut[r]){ut[r]=G(ot)}return ut[r]};var ct=function e(r,t,n){var a=i(t,n);return l(r,a)};var dt=["serviceConfig","effectDependencyList","selectorTreeList","value","onChange","fieldNames","modelKey"];var ft=_((function(e,r){var t=e.serviceConfig,a=e.effectDependencyList,l=e.selectorTreeList,o=e.value,u=e.onChange,s=e.fieldNames,c=e.modelKey,d=le(e,dt);var f=t||{};var v=a||[];var m=O(),p=m[0],h=m[1];var g=st(c).useStore(),b=g[0],y=g[1];var w=O(false),N=w[0],L=w[1];var S=A((function(){if(n(e.value))return undefined;return I(e.value)?e.value:[e.value]}),[e.value]);var x=function e(r){return r===""||n(r)};var k=function e(r){var t=f.onRequestResultAdapter?f.onRequestResultAdapter(r):r;return t};var R=z.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l;var o=function(){try{return e()}catch(e){return r(e)}};var u=function(e){try{L(false);void C.error(e.message||"数据查询异常...");return o()}catch(e){return r(e)}};try{if(!f.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=f.requiredParamsKeys;n=Q({},f.params);if(t){a=t.find((function(e){return x(n[e])}));if(a){console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var s=function(){try{return o()}catch(e){return u(e)}};var c=function(e){try{L(false);void y.changeRequestStatus("request-error");return s()}catch(e){return u(e)}};try{L(true);void y.changeRequestStatus("request-pre");return Promise.resolve(f.onRequest==null?void 0:f.onRequest(n)).then((function(e){try{i=e;l=k(i);void y.setTreeList(l||[]);L(false);return s()}catch(e){return c(e)}}),c)}catch(e){c(e)}}catch(e){u(e)}}))}));Z((function(){if(l){void y.setTreeList(l);return}var e=st(c).getState();if(v.length>0||!e.requestStatus||e.requestStatus==="request-error"){void R()}}),v);Z((function(){if(S&&S.length>0&&b.treeList.length>0&&!p){var r=[];S.forEach((function(t){var n=ct(t,b.treeList,e.fieldNames);r=r.concat(n.map((function(e){return e.value})))}));h((function(e){var t=r.concat(e||[]);return Array.from(new Set(t))}))}}),[b.treeList,e.fieldNames,o]);z.useUpdateEffect((function(){if(e.filterLabel){var r=i(b.treeList||[],e.fieldNames);var t=r.filter((function(r){var t;return(t=r.label)==null?void 0:t.includes(e.filterLabel||"")}));var n=[];t.map((function(r){var t=ct(r.value,b.treeList||[],e.fieldNames);var a=t.map((function(e){return e.value}));n=n.concat(a)}));h(Array.from(new Set(n)))}else{h([])}}),[e.filterLabel]);E(r,(function(){return{onClearSelectorList:function e(){void y.resetTreeList()},getTreeDataList:function e(){return b.treeList}}}));var T=z.useCallbackRef((function(e){h(e)}));var D=z.useCallbackRef((function(e){u==null?void 0:u(e)}));var P=z.useCallbackRef((function(r){if(e.multiple){u==null?void 0:u(r)}else{u==null?void 0:u(r[0])}}));var M=A((function(){var e=Q({label:"label",value:"value",children:"children"},s);return{title:e.label,key:e.value,children:e.children}}),[s]);if(b.treeList.length>0){return j(q,ie({showLine:d.checkable?false:{showLeafIcon:false}},d,{fieldNames:M,expandedKeys:p,treeData:b.treeList,onExpand:T,selectedKeys:d.checkable?undefined:S,checkedKeys:d.checkable?S:undefined,onCheck:d.checkable?D:undefined,onSelect:d.checkable?undefined:P,style:ie({width:"100%"},d.style)}))}return j(vt,{requestStatus:b.requestStatus,loading:N,onAgainRequest:R})}));var vt=function e(r){var t=A((function(){if(r.requestStatus==="request-error"){return"数据查询异常"}else if(r.requestStatus==="request-success"){return"暂无数据"}return"数据查询中"}),[r.requestStatus]);return F("div",{className:"tree-wrapper-empty",children:[j(T,{spinning:r.loading}),j(N,{image:N.PRESENTED_IMAGE_SIMPLE,description:t,children:r.requestStatus==="request-error"&&j(d,{type:"primary",onClick:r.onAgainRequest,children:"重新获取数据"})})]})};export{de as ButtonOperate,ve as DatePickerWrapper,pe as DateRangePickerWrapper,Ce as DrawerWraper,De as DrawerWrapper,vr as EditableTable,pr as FileImport,gr as FileUpload,br as FlexLayout,yr as Gap,Cr as IconWrapper,kr as ModalWraper,_r as ModalWrapper,Kr as Page404,Yr as PageFixedFooter,se as Permission,Je as SelectorWrapper,zr as SimpleLayout,Ur as SmsCountDown,Vr as TableFilterLayout,at as TreeSelectorWrapper,ft as TreeWrapper,nr as UploadWrapper,Ne as createDrawerWraperModel,Ae as createDrawerWrapperModel,qr as createModalWraperModel,Er as createModalWrapperModel,oe as getPermissionList,ue as hasPermission,Wr as preDefinedClassName,ae as styles,Se as useEffectCustom,xe as useEffectCustomAsync};
4
+ import{noop as e,getGlobalData as r,flatbizDate as t,isUndefinedOrNull as n,arrayField2LabelValue as a,treeToTiledArray as i,treeLeafParentsArray as l}from"@flatbiz/utils";import{isUndefined as o}from"@dimjs/lang/cjs/is-undefined";import{Space as u,Divider as s,Popconfirm as c,Button as d,DatePicker as f,Drawer as v,Form as m,Checkbox as p,Tag as h,Input as g,InputNumber as b,Radio as y,message as C,Select as w,Empty as N,Upload as L,Table as S,Tooltip as x,Modal as k,TreeSelect as R,Tree as q,Spin as T}from"antd";import{isArray as I}from"@dimjs/lang/cjs/is-array";import{Fragment as D,createElement as P,useMemo as A,useState as O,useEffect as M,forwardRef as _,useRef as B,useImperativeHandle as E,cloneElement as Y,Children as K}from"react";import{jsx as j,jsxs as F,Fragment as W}from"react/jsx-runtime";import{hooks as z}from"@wove/react/cjs/hooks";import U from"moment";import{Model as G}from"@dimjs/model-react";import{classNames as V}from"@dimjs/utils/cjs/class-names";import H from"@ant-design/icons/es/icons/SaveOutlined";import J from"@ant-design/icons/es/icons/PlusOutlined";import{extend as Q}from"@dimjs/utils/cjs/extend";import X from"@ant-design/icons/es/icons/RedoOutlined";import{useEffectCustom as Z}from"@flatbiz/antd";import{isBoolean as $}from"@dimjs/lang/cjs/is-boolean";import{isNumber as ee}from"@dimjs/lang/cjs/is-number";import{isString as re}from"@dimjs/lang/cjs/is-string";import te from"@ant-design/icons/es/icons/DeleteOutlined";import{isObject as ne}from"@dimjs/lang/cjs/is-object";var ae=e;function ie(){ie=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t){if(Object.prototype.hasOwnProperty.call(t,n)){e[n]=t[n]}}}return e};return ie.apply(this,arguments)}function le(e,r){if(e==null)return{};var t={};var n=Object.keys(e);var a,i;for(i=0;i<n.length;i++){a=n[i];if(r.indexOf(a)>=0)continue;t[a]=e[a]}return t}var oe=function e(){var t=r(),n=t.elemAclLimits;var a=I(n)?n:[];return a};var ue=function e(r){var t=oe();if(t.includes(r)){return true}return false};var se=function e(r){var t=oe();if(t.includes(r.name)){return j(D,{children:r.children})}return null};var ce=["text","color","onClick","permission","needConfirm","confirmMessage","hidden","style"];var de=function e(r){return j("div",{className:"table-operate",children:j(u,{split:j(s,{type:"vertical"}),size:r.size,wrap:o(r.wrap)?true:r.wrap,children:r.operateList.map((function(e,r){if(!e)return null;var t=e.text,n=e.color,a=e.onClick,i=e.permission,l=e.needConfirm,o=e.confirmMessage,u=e.hidden,s=e.style,f=le(e,ce);if(u)return null;if(i&&!ue(i))return null;var v=n?ie({color:n},s):s;var m=e.type||"link";if(l){return j(c,{title:o,okText:"确定",cancelText:"取消",onConfirm:a,arrowPointAtCenter:true,children:j(d,ie({},f,{onClick:undefined,type:m,danger:true,style:v,children:t}))},r)}return P(d,ie({},f,{type:m,style:v,key:r,onClick:a}),t)}))})})};de.defaultProps={size:0};var fe=["value","onChange","style"];var ve=function e(r){var n=r.value,a=r.onChange,i=r.style,l=le(r,fe);var o=A((function(){if(r.format)return r.format;if(r.showTime)return"YYYY-MM-DD HH:mm:ss";return"YYYY-MM-DD"}),[r.showTime,r.format]);var u=z.useCallbackRef((function(e){if(e){a==null?void 0:a(U(e).format(o))}else{a==null?void 0:a(undefined)}}));var s=z.useCallbackRef((function(e){var t=U(e.format("YYYY-MM-DD"));if(!r.disabledDateConfig){return false}var n=r.disabledDateConfig,a=n.minDate,i=n.maxDate;if(a&&i){if(t.isBefore(a)||t.isAfter(i)){return true}}else if(a){if(t.isAfter(a)){return true}}else if(i){if(t.isBefore(a)){return true}}return false}));var c=A((function(){if(n){return U(t.dateNormalize(n))}return undefined}),[n]);return j(f,ie({disabledDate:s},l,{style:ie({width:"100%"},i),value:c,onChange:u}))};var me=["value","onChange","style"];var pe=function e(r){var n=r.value,a=r.onChange,i=r.style,l=le(r,me);var o=O(),u=o[0],s=o[1];var c=A((function(){if(r.format)return r.format;if(r.showTime===true)return"YYYY-MM-DD HH:mm:ss";return"YYYY-MM-DD"}),[r.showTime,r.format]);var d=z.useCallbackRef((function(e){if(e){var r=e||[],t=r[0],n=r[1];a==null?void 0:a([U(t).format(c),U(n).format(c)])}else{a==null?void 0:a(undefined)}}));var v=z.useCallbackRef((function(e){if(r.disabledDateConfig){s(e)}}));var m=z.useCallbackRef((function(e){var t=U(e.format("YYYY-MM-DD"));if(!r.disabledDateConfig){return false}var n=r.disabledDateConfig,a=n.maxDays,i=n.minDate,l=n.maxDate;if(i&&l){if(t.isBefore(i)||t.isAfter(l)){return true}}else if(i){if(t.isBefore(i)){return true}}else if(l){if(t.isAfter(l)){return true}}if(!u||!a){return false}var o=u[0]?U(u[0].format("YYYY-MM-DD")):undefined;var s=u[1]?U(u[1].format("YYYY-MM-DD")):undefined;var c=o?o.clone().add(a-1,"d"):s;var d=s?s.clone().subtract(a-1,"d"):o;return t.isBefore(d)||t.isAfter(c)}));var p=n||[],h=p[0],g=p[1];var b=A((function(){if(h&&g){var e=t.dateNormalize(h);var r=t.dateNormalize(g);return[U(e),U(r)]}return undefined}),[h,g]);return j(f.RangePicker,ie({disabledDate:m,onCalendarChange:v},l,{style:ie({width:"100%"},i),value:b,onChange:d}))};var he={actions:{openDrawerForm:function e(r){var t=r.itemData,n=r.title,a=r.operateType,i=r.pageLoading;return function(e){e.itemData=t;e.title=n;e.operateType=a;e.pageLoading=i;e.visible=true}},closeDrawer:function e(){return function(e){e.visible=false}},setDrawerItemData:function e(r){return function(e){e.pageLoading=false;e.itemData=r}}},state:{visible:false,title:"",operateType:null}};var ge=function e(r){return j("div",{className:"fixed-bottom-block",children:F(u,{size:"middle",children:[j(d,ie({},r.cancelButtonProps,{className:"cancel-btn",onClick:r.onCancel,children:r.cancelText||"取消"})),r.hideOkBtn!=true&&j(d,ie({type:"primary",icon:j(H,{})},r.okButtonProps,{className:"ok-btn",onClick:r.onOk,loading:r.loading,children:r.okText||"提交"}))]})})};var be=["pageLoading","className","width","children","footer","operationProps"];var ye=function e(){return j("div",{className:"drawer-wraper-loader",children:F("div",{className:"loader-wrapper",children:[j("div",{className:"loader-inner"}),j("div",{className:"loader-text",children:"LOADING"})]})})};var Ce=function e(r){var t=r.pageLoading,n=r.className,a=r.width,i=a===void 0?600:a,l=r.children,o=r.footer,u=r.operationProps,s=le(r,be);M((function(){console.error("@flatbiz/antd库【DrawerWraper】组件已经过期,请使用DrawerWrapper替换包括DrawerWraper=>DrawerWrapper、createDrawerWraperModel=>createDrawerWrapperModel,如果使用DrawerWrapper组件原用法需要调整")}),[]);return F(v,ie({className:V("drawer-wraper",n),keyboard:false,forceRender:false,destroyOnClose:true,width:"80%",contentWrapperStyle:{maxWidth:i},size:"default"},s,{footer:o||o===null?o:j(ge,ie({},u)),children:[j("div",{className:"drawer-wraper-content",children:l}),t&&j(ye,{})]}))};var we={};var Ne=function e(r){if(!we[r]){we[r]=G(he)}return we[r]};var Le={actions:{openDrawerForm:function e(r){var t=r.itemData,n=r.title,a=r.operateType,i=r.pageLoading;return function(e){e.itemData=t;e.title=n;e.operateType=a;e.pageLoading=i;e.visible=true}},closeDrawer:function e(){return function(e){e.visible=false}},setDrawerItemData:function e(r){return function(e){e.pageLoading=false;e.itemData=r}}},state:{visible:false,title:"",operateType:null}};var Se=function e(r,t){return M(r,t)};var xe=function e(r,t){M((function(){function e(){return new Promise((function(e,t){return Promise.resolve(r()).then((function(r){try{return e()}catch(e){return t(e)}}),t)}))}void e()}),t)};var ke=function e(r){return j("div",{className:"fixed-bottom-block",children:F(u,{size:"middle",children:[j(d,ie({},r.cancelButtonProps,{className:"cancel-btn",onClick:r.onCancel,children:r.cancelText||"取消"})),r.hideOkBtn!=true&&j(d,ie({type:"primary",icon:j(H,{})},r.okButtonProps,{className:"ok-btn",onClick:r.onOk,loading:r.loading,children:r.okText||"提交"}))]})})};var Re=["pageLoading","className","width","children"];var qe=function e(){return j("div",{className:"drawer-wrapper-loader",children:F("div",{className:"loader-wrapper",children:[j("div",{className:"loader-inner"}),j("div",{className:"loader-text",children:"LOADING"})]})})};var Te=function e(r){return F(D,{children:[j("div",{className:"drawer-wrapper-content",children:r.children}),r.operationProps?j(Ie,{children:j(ke,ie({},r.operationProps))}):null]})};var Ie=function e(r){return j("div",{className:"drawer-wrapper-footer",children:r.children})};var De=function e(r){var t=r.pageLoading,n=r.className,a=r.width,i=a===void 0?600:a,l=r.children,o=le(r,Re);Se((function(){if(r["operationProps"]){throw new Error("DrawerWrapper组件升级,参数operationProps用法变更,请及时更新")}}),[]);return F(v,ie({className:V("drawer-wrapper",n),keyboard:false,forceRender:false,destroyOnClose:true,width:"80%",contentWrapperStyle:{maxWidth:i},size:"default"},o,{footer:null,children:[t&&j(qe,{}),l]}))};De.Content=Te;De.Footer=Ie;var Pe={};var Ae=function e(r){if(!Pe[r]){Pe[r]=G(Le)}return Pe[r]};var Oe=function e(r,t){return typeof r==="boolean"?r:r==null?void 0:r({tableRowIndex:t})};var Me=function e(r){var t=r.fieldConfig,n=t.editableConfig,a=t.editable,i=t.render;var l=n.editableComptProps;var o=A((function(){if(a)return[];var e=I(r.value)?r.value:[];var t=l.options||[];if(!I(t)||t.length===0){return e.map((function(e){return{label:e,value:e}}))}var n=[];e.forEach((function(e){var r=t.find((function(r){return r.value===e}));n.push(r?r:{label:e,value:e})}));return n}),[a,l.options,r.value]);if(a){return j(p.Group,ie({},l,{value:r.value,onChange:r.onChange}))}return j("span",{className:"editable-checkbox-group-view",children:i?i(r.value):o.map((function(e,r){return j(h,{color:"#1890ff",children:e.label},r)}))})};var _e=function e(r){var t=r.fieldConfig.formItemProps;return j(m.Item,ie({},t,{name:r.name,className:V("editable-checkbox-group-form-item",t==null?void 0:t.className),children:j(Me,ie({},r))}))};var Be=function e(r){var t=r.fieldConfig,n=t.formItemProps,a=t.editableConfig;return j(m.Item,ie({},n,{name:r.name,className:V("editable-date-picker-wraper-form-item",n==null?void 0:n.className),children:j(ve,ie({},a.editableComptProps))}))};var Ee=function e(r){var t=r.fieldConfig,n=t.editableConfig,a=t.editable,i=t.render;var l=n.editableComptProps;var o=A((function(){var e=I(r.value)?r.value:[];if(a)return undefined;return e.join("~")}),[a,r.value]);if(a){return j(pe,ie({},l,{value:r.value,onChange:r.onChange}))}return j("span",{className:"editable-date-range-picker-view",children:i?i(r.value):o})};var Ye=function e(r){var t=r.fieldConfig.formItemProps;return j(m.Item,ie({},t,{name:r.name,className:V("editable-date-range-picker-wraper-form-item",t==null?void 0:t.className),children:j(Ee,ie({},r))}))};var Ke=function e(r){var t=r.fieldConfig,n=t.formItemProps,a=t.editableConfig;return j(m.Item,ie({},n,{name:r.name,children:j(g,ie({},a.editableComptProps))}))};var je=function e(r){var t=r.fieldConfig,n=t.formItemProps,a=t.editableConfig;return j(m.Item,ie({},n,{name:r.name,className:V("editable-input-number-form-item",n==null?void 0:n.className),children:j(b,ie({},a.editableComptProps))}))};var Fe=function e(r){var t=r.fieldConfig,n=t.editableConfig,a=t.editable,i=t.render;var l=n.editableComptProps;var o=A((function(){if(a)return[];var e=r.value;var t=l.options||[];if(!I(t)||t.length===0){return e}var n=t.find((function(r){return r.value===e}));return(n==null?void 0:n.label)||e}),[a,l.options,r.value]);var u=z.useCallbackRef((function(e){r.onChange==null?void 0:r.onChange(e.target.value)}));if(a){return j(y.Group,ie({},l,{value:r.value,onChange:u}))}return j("span",{className:"editable-radio-group-view",children:i?i(r.value):o?j(h,{color:"#1890ff",children:o}):null})};var We=function e(r){var t=r.fieldConfig.formItemProps;return j(m.Item,ie({},t,{name:r.name,className:V("editable-radio-group-form-item",t==null?void 0:t.className),children:j(Fe,ie({},r))}))};var ze={selectorList:[],originalSelectorList:[],queryIsEmpty:false,requestStatus:"init"};var Ue={actions:{setSelectBoxList:function e(r){return function(e){e.selectorList=r.selectorList||[];e.originalSelectorList=r.originalSelectorList||[];e.requestStatus="request-success"}},resetSelectBoxList:function e(){return function(e){e.selectorList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:ze};var Ge={};var Ve=function e(r){if(!Ge[r]){Ge[r]=G(Ue)}return Ge[r]};var He=["serviceConfig","showAllOption","effectDependencyList","onSelectorListChange","operateType","searchFieldName","selectorList","modelKey","fieldNames"];var Je=_((function(e,r){var t=e.serviceConfig,i=e.showAllOption,l=e.effectDependencyList,o=e.onSelectorListChange,u=e.operateType,s=e.searchFieldName,c=e.selectorList,d=e.modelKey,f=e.fieldNames,v=le(e,He);var m=u==="search"&&c===undefined;var p=t||{};var h=l||[];var g=B();var b=O(false),y=b[0],N=b[1];var L=Ve(d).useStore(),S=L[0],x=L[1];var k="request-pre-"+e.modelKey;var R=function e(r){return r===""||n(r)};var q=function e(r){var t=p.onRequestResultAdapter?p.onRequestResultAdapter(r):r;return t};var T=z.useCallbackRef((function(e,r){return new Promise((function(t,i){var l,o,u,c,d,v,h;var g=function(){try{return t()}catch(e){return i(e)}};var b=function(e){try{N(false);void C.error(e.message||"数据查询异常...");return g()}catch(e){return i(e)}};try{if(!p.onRequest){throw new Error("onRequest 调用接口服务不能为空")}l=p.requiredParamsKeys;o=Q({},p.params);if(l){u=l.find((function(e){return R(o[e])}));if(u){console.warn("SelectorWrapper组件:参数:"+l.join("、")+"不能为空");return t()}}var y=function(){try{return g()}catch(e){return b(e)}};var w=function(e){try{console.error(e);N(false);window[k]=false;void x.changeRequestStatus("request-error");void C.error(e.message||"获取数据异常");return y()}catch(e){return b(e)}};try{N(true);window[k]=true;void x.changeRequestStatus("request-pre");if((!n(e)||!n(r))&&m){c=s||"keyword";o[c]=e;o["id"]=r}return Promise.resolve(p.onRequest==null?void 0:p.onRequest(o)).then((function(e){try{d=e;v=q(d);h=a(v||[],f);N(false);window[k]=false;void x.setSelectBoxList({selectorList:h,originalSelectorList:v});return y()}catch(e){return w(e)}}),w)}catch(e){w(e)}}catch(e){b(e)}}))}));Z((function(){if(S.originalSelectorList&&S.requestStatus==="request-success"){o==null?void 0:o(S.originalSelectorList)}}),[S.originalSelectorList,S.requestStatus]);Z((function(){if(c){void x.setSelectBoxList({selectorList:a(c,f),originalSelectorList:c});return}if(m)return;var e=Ve(d).getState();if(h.length>0||!window[k]&&e.requestStatus!=="request-success"){void T()}}),h);Z((function(){if(m){if(R(e.value)){o==null?void 0:o([]);void x.resetSelectBoxList()}else{if(e.value!==g.current){void T(undefined,e.value)}}}}),h.concat([e.value]));E(r,(function(){return{onClearSelectorList:function e(){void x.resetSelectBoxList()},getSelectorList:function e(){return S.selectorList}}}));var I=z.useCallbackRef((function(e,r){return(r==null?void 0:r.children).toLowerCase().indexOf(e.toLowerCase())>=0}));var D=z.useDebounceCallback((function(e){if(e){void T(e)}else{void x.resetSelectBoxList()}}),300);var P=z.useCallbackRef((function(r){g.current=r;for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++){n[a-1]=arguments[a]}e.onChange==null?void 0:e.onChange(r,n)}));var A=z.useCallbackRef((function(){void T()}));var M=j(w.Option,{value:"",children:"全部"});return F(w,ie({showSearch:true,allowClear:true},v,{value:n(e.value)?undefined:e.value,notFoundContent:j(Qe,{requestStatus:S.requestStatus,onAgainRequest:A}),loading:y,onSearch:m?D:undefined,filterOption:m?false:I,onChange:P,fieldNames:undefined,suffixIcon:S.requestStatus==="request-error"?j(X,{spin:y,onClick:A}):undefined,children:[i===true?M:i,S.selectorList.map((function(r){return j(w.Option,{value:r.value,label:r.label,children:e.onLabelRenderAdapter?e.onLabelRenderAdapter(r):r.label},r.value)}))]}))}));var Qe=function e(r){var t=A((function(){if(r.requestStatus==="request-error"){return"数据查询异常"}else if(r.requestStatus==="request-success"){return"暂无数据"}return"数据查询中"}),[r.requestStatus]);return j(N,{image:N.PRESENTED_IMAGE_SIMPLE,description:t,className:"tree-selector-wrapper-empty",children:r.requestStatus==="request-error"&&j(d,{type:"primary",onClick:r.onAgainRequest,children:"重新获取数据"})})};var Xe=function e(r){var t=r.fieldConfig,n=t.editableConfig,i=t.editable,l=t.render;var o=n.editableComptProps;var u=O([]),s=u[0],c=u[1];var d=O([]),f=d[0],v=d[1];M((function(){if(!i){var e=I(r.value)?r.value:r.value===undefined?[]:[r.value];if(s.length===0){v(e.map((function(e){return{label:e,value:e}})))}var t=[];e.forEach((function(e){var r=s.find((function(r){return r.value===e}));t.push(r?r:{label:String(e),value:e})}));v(t)}}),[i,o.fieldNames,r.value,s]);var m=z.useCallbackRef((function(e){c(a(e||[],o.fieldNames))}));if(i){return j(Je,ie({},o,{value:r.value,onChange:r.onChange,onSelectorListChange:m}))}return F(D,{children:[j("div",{style:{display:"none"},children:j(Je,ie({},o,{onSelectorListChange:m}))}),j("span",{className:"editable-selector-view",children:l?l(r.value):f.map((function(e,r){return j(h,{color:"#1890ff",children:e.label},r)}))})]})};var Ze=function e(r){var t=r.fieldConfig.formItemProps;return j(m.Item,ie({},t,{name:r.name,className:V("editable-selector-wrapper-form-item",t==null?void 0:t.className),children:j(Xe,ie({},r))}))};var $e=function e(r){var t,n;var a=A((function(){var e;if((e=r.fieldConfig)!=null&&e.render)return undefined;var t=re(r.value)||ee(r.value)||$(r.value)||!r.value;if(!t){console.warn("Form.List name:【"+r.name+"】数据【"+JSON.stringify(r.value)+"】不能渲染在页面中")}return t?r.value:undefined}),[(t=r.fieldConfig)==null?void 0:t.render,r.name,r.value]);return j("span",{className:"editable-text-view",children:((n=r.fieldConfig)==null?void 0:n.render==null?void 0:n.render(r.value))||a})};var er=function e(r){return j(m.Item,{noStyle:true,name:r.name,children:j($e,{name:r.name,fieldConfig:r.fieldConfig})})};var rr=function e(r){var t=r.fieldConfig,n=t.formItemProps,a=t.editableConfig;return j(m.Item,ie({},n,{name:r.name,children:j(g.TextArea,ie({},a.editableComptProps))}))};var tr=["onChange","onUploadError","value"];var nr=function e(r){var t=r.onChange,n=r.onUploadError,a=r.value,i=le(r,tr);var l=O(),o=l[0],u=l[1];var s=Q({uid:"uid",name:"name",url:"url"},r.fieldNames);Se((function(){u(a==null?void 0:a.map((function(e){return{uid:e[s.uid],name:e[s.name],url:e[s.url]}})))}),[s.name,s.uid,s.url,a]);var c=z.useCallbackRef((function(e){var i=e.fileList;if(e.file.status==="done"){var l=e.file.response;if(l.code==="0000"){var o=r.onRequestResultAdapter?r.onRequestResultAdapter(l.data):l.data;o[s.uid]=o[s.uid]||e.file.uid;o[s.name]=o[s.name]||e.file.name;if(r.maxCount===1){t==null?void 0:t([o])}else{t==null?void 0:t((a||[]).concat(o))}}else{if(n){n(l.message)}else{void C.error(l.message||"上传操作失败...")}i[i.length-1]=ie({},i[i.length-1],{status:"error"})}}else if(e.file.status==="removed"){var c=e.file.uid;var d=a!==undefined?[].concat(a):[];var f=d.findIndex((function(e){var r=e[s.uid];return r===c}));if(f>=0){d.splice(f,1)}t==null?void 0:t(d)}else if(e.file.status==="error"){if(n){n()}else{void C.error("上传操作失败...")}}u([].concat(i));r.onUploadChange==null?void 0:r.onUploadChange(e)}));return j(L,ie({},i,{onChange:c,fileList:o,className:V("v-upload-wrapper",i.className),children:i.disabled?null:j(ar,{listType:i.listType,children:r.children})}))};var ar=function e(r){if(r.children)return j(D,{children:r.children});if(r.listType==="picture-card"){return F("div",{children:[j(J,{}),j("div",{style:{marginTop:8},children:"上传图片"})]})}if(r.listType==="picture"){return j(d,{type:"primary",ghost:true,children:"选择图片上传"})}return j(d,{type:"primary",ghost:true,children:"选择文件上传"})};var ir=["children"];var lr=function e(r){var t=r.fieldConfig,n=t.editableConfig,a=t.render,i=t.editable;var l=n.editableComptProps,o=l.children,u=le(l,ir);if(i){return j(nr,ie({listType:"text"},u,{value:r.value,onChange:r.onChange,children:o}))}return j("div",{className:"upload-wrapper-selector-view",children:a?a(r.value):j(nr,ie({listType:"text"},u,{value:r.value,disabled:true}))})};var or=function e(r){var t=r.fieldConfig.formItemProps;return j(m.Item,ie({},t,{name:r.name,className:V("editable-upload-wrapper-form-item",t==null?void 0:t.className),children:j(lr,ie({},r))}))};var ur=function e(r){var t=r.fieldConfig,n=t.editableConfig,a=t.editable;var i=Oe(a,r.tableRowIndex);var l=Q({},r.fieldConfig,{editable:i});var o={name:r.name,fieldConfig:l};if((n==null?void 0:n.type)==="input"&&i){return j(Ke,ie({},o))}else if((n==null?void 0:n.type)==="inputNumber"&&i){return j(je,ie({},o))}else if((n==null?void 0:n.type)==="textArea"&&i){return j(rr,ie({},o))}else if((n==null?void 0:n.type)==="datePickerWrapper"&&i){return j(Be,ie({},o))}else if((n==null?void 0:n.type)==="dateRangePickerWrapper"){return j(Ye,ie({},o))}else if((n==null?void 0:n.type)==="selectorWrapper"){return j(Ze,ie({},o))}else if((n==null?void 0:n.type)==="checkboxGroup"){return j(_e,ie({},o))}else if((n==null?void 0:n.type)==="radioGroup"){return j(We,ie({},o))}else if((n==null?void 0:n.type)==="uploadWrapper"){return j(or,ie({},o))}else if((n==null?void 0:n.type)==="custom"){return n.editableComptProps({name:r.name,editable:i,completeName:r.completeName})}return j(er,ie({},o))};var sr=function e(r){var t=m.useFormInstance();var n=r.formListConfig,a=n.onFormListBeforeRender,i=n.editableConfigList,l=n.onFormListAfterRender,o=n.onFormListItemBeforeRender,s=n.onFormListItemAfterRender,c=n.deleteOperateRender;return j(m.List,{name:r.name,children:function e(n,d){var f=d.add,v=d.remove;return F(W,{children:[a?a({tableRowIndex:r.tableRowIndex,add:f,get value(){return t.getFieldValue(r.completeName)}}):null,n.map((function(e,n){var a=i.find((function(e){return Oe(e.editable,r.tableRowIndex)}));var l=V("editable-inner-formlist-item","editable-inner-formlist-item-"+r.name[1],{"editable-inner-formlist-item_preview":!a});return F("div",{className:l,children:[o?o({add:f,remove:function e(){v(n)},formListItemIndex:n,tableRowIndex:r.tableRowIndex,get value(){return t.getFieldValue([].concat(r.completeName,[e.name]))}}):null,F(u,{children:[i.map((function(t,n){return j(ur,{name:[e.name,t.fieldName],fieldConfig:t,tableRowIndex:r.tableRowIndex,completeName:[].concat(r.completeName,[e.name])},n)})),a?j(cr,{deleteOperateRender:c,remove:function e(){v(n)},index:n}):null]}),s?s({add:f,formListItemIndex:n,tableRowIndex:r.tableRowIndex,remove:function e(){v(n)},get value(){return t.getFieldValue([].concat(r.completeName,[e.name]))}}):null]},n)})),l?l({tableRowIndex:r.tableRowIndex,add:f,get value(){return t.getFieldValue(r.completeName)}}):null]})}})};var cr=function e(r){return j(m.Item,{children:r.deleteOperateRender?r.deleteOperateRender({remove:r.remove,formListItemIndex:r.index}):j(d,{type:"link",danger:true,icon:j(te,{}),onClick:r.remove,children:"删除"})})};var dr=function e(r){if(r.fieldConfig){if(I(r.fieldConfig["editableConfigList"])){var t=r.fieldConfig;return j(sr,{name:r.name,completeName:r.completeName,formListConfig:t,tableRowIndex:r.tableRowIndex})}else{return j(ur,{name:r.name,fieldConfig:r.fieldConfig,tableRowIndex:r.tableRowIndex,completeName:r.completeName})}}return j(er,{name:r.name})};var fr=["fieldConfig","operateRender"];var vr=function e(r){var t;var n=A((function(){if(!r.columns)return[];return r.columns.map((function(e){var t=e.fieldConfig,n=e.operateRender,a=le(e,fr);return ie({onCell:function e(){var t;return{valign:((t=r.tableProps)==null?void 0:t.cellVerticalAlign)||"middle"}}},a,{render:function a(i,l){if(n){return n({name:[].concat(r.name,[l.name]),tableRowIndex:l.name,operation:l.operation})||""}return j(dr,{name:e.dataIndex?[l.name,e.dataIndex]:[l.name],completeName:e.dataIndex?[].concat(r.name,[l.name,e.dataIndex]):[].concat(r.name,[l.name]),fieldConfig:t,tableRowIndex:l.name})}})}))}),[r.columns,r.name,(t=r.tableProps)==null?void 0:t.cellVerticalAlign]);return j("div",{className:"editable-table",children:j(m.List,{name:r.name,rules:r.rules,children:function e(t,a){return F(D,{children:[r.onTableBeforeRender?r.onTableBeforeRender(a,t.length):null,j(S,ie({scroll:{x:"max-content"},pagination:false},r.tableProps,{dataSource:t.map((function(e){return ie({},e,{operation:a})})),columns:n,rowKey:"key"})),r.onTableAfterRender?r.onTableAfterRender(a,t.length):j(d,{type:"dashed",onClick:function e(){return a.add()},block:true,icon:j(J,{}),style:{marginTop:15},children:"新增"})]})}})})};var mr=["onImportFinish"];var pr=function e(r){var t=r.onImportFinish,n=le(r,mr);var a=O(false),i=a[0],l=a[1];var o=z.useCallbackRef((function(e){if(e.file.status==="uploading"){l(true)}else if(e.file.status==="done"){l(false);var r=e.file.response;if(r.code==="0000"){t(r.data)}else{void C.error(r.message||"文件导入异常...")}}}));return j(L,ie({showUploadList:false,maxCount:1},n,{onChange:o,children:r.children?r.children:j(d,{type:"primary",ghost:true,loading:i,children:"选择文件"})}))};pr.defaultProps={name:"file",accept:".xlsx,.xls"};var hr=["onChange","onUploadError","onPreview","value"];var gr=function e(r){Se((function(){console.error("@flatbiz/antd库【FileUpload】组件已经过期,请使用【UploadWrapper】组件替换")}),[]);var t=r.onChange,n=r.onUploadError,a=r.onPreview,i=r.value,l=le(r,hr);var o=O([]),u=o[0],s=o[1];var c=Q({fileKey:"fileKey",fileName:"fileName"},r.fieldNames);M((function(){if(i&&I(i)){s(i.map((function(e){return{uid:e["uid"]||e[c.fileKey],name:e[c.fileName],fileKey:e[c.fileKey],url:e[c.fileKey],thumbUrl:e[c.fileKey]}})))}}),[c.fileKey,c.fileName,i]);var d=z.useCallbackRef((function(e){if(e.file.status==="done"){var a=e.file.response;if(a.code==="0000"){var l=a.data||{};var o={uid:e.file.uid,fileName:l[c.fileName]||e.file.name,fileKey:l[c.fileKey]};var u=(i||[]).concat(o);t==null?void 0:t(u)}else{n==null?void 0:n(a.message)}}else if(e.file.status==="removed"){var d=e.file.uid;var f=i!==undefined?[].concat(i):[];var v=f.findIndex((function(e){var r=e["uid"]||e[c.fileKey];return r===d}));if(v>=0){f.splice(v,1)}t==null?void 0:t(f)}else if(e.file.status==="error"){n==null?void 0:n()}s([].concat(e.fileList));r.onUploadChange==null?void 0:r.onUploadChange(e)}));var f=z.useCallbackRef((function(e){a==null?void 0:a({fileKey:e[c.fileKey],fileName:e[c.fileName]})}));return j(L,ie({},l,{onChange:d,onPreview:f,fileList:u,className:V("v-file-upload",l.className),children:r.children}))};var br=function e(r){var t=I(r.children)?r.children:[r.children];var a=r.direction||"vertical";var i=r.gap?r.gap:0;var l=!n(r.fullIndex)?I(r.fullIndex)?r.fullIndex:[r.fullIndex]:[];return j("div",{className:V("v-flex-layout","v-flex-"+a,r.className),style:r.style,onClick:r.onClick,children:t.map((function(e,r){var n=e.props.style||{};var o=l.includes(r)?ie({flex:1},n):n;if(r<t.length-1&&i>0){if(a==="horizontal"){o.marginRight=i}else{o.marginBottom=i}}return Y(e,{style:o,key:r})}))})};var yr=function e(r){return j("div",{style:ie({height:r.height},r.style),className:r.className})};var Cr=function e(r){return j(x,{title:r.hoverTips,children:F("div",{className:V("icon-wrapper","icon-wrapper-"+(r.size||"middle"),r.className),style:r.style,children:[r.icon,r.text?j("span",{className:"icon-wrapper-text",children:r.text}):null]})})};var wr={actions:{openModalForm:function e(r){var t=r.itemData,n=r.title,a=r.operateType,i=r.pageLoading;return function(e){e.itemData=t;e.title=n;e.operateType=a;e.pageLoading=i;e.visible=true}},closeModal:function e(){return function(e){e.visible=false}},setModalItemData:function e(r){return function(e){e.pageLoading=false;e.itemData=r}}},state:{visible:false,title:"",operateType:"view"}};var Nr=["loading","okText","cancelText","onCancel","onOk","hideOkBtn"];var Lr=function e(r){var t=r.loading,n=r.okText,a=n===void 0?"保存":n,i=r.cancelText,l=i===void 0?"取消":i,o=r.onCancel,s=r.onOk,c=r.hideOkBtn,f=le(r,Nr);return j(D,{children:F(u,{size:"middle",children:[j(d,ie({},f.cancelButtonProps,{className:"cancel-btn",onClick:o,children:l})),c!=true&&j(d,ie({type:"primary"},f.okButtonProps,{className:"ok-btn",onClick:s,loading:t,children:a}))]})})};var Sr=["pageLoading","className","width","children","footer","operationProps"];var xr=function e(){return j("div",{className:"modal-wraper-loader",children:F("div",{className:"loader-wrapper",children:[j("div",{className:"loader-inner"}),j("div",{className:"loader-text",children:"LOADING"})]})})};var kr=function e(r){var t=r.pageLoading,n=r.className,a=r.width,i=r.children,l=r.footer,o=r.operationProps,u=le(r,Sr);M((function(){console.error("@flatbiz/antd库【ModalWraper】组件已经过期,请使用ModalWrapper替换包括ModalWraper=>ModalWrapper、createModalWraperModel=>createModalWrapperModel,如果使用ModalWrapper组件原用法需要调整")}),[]);return F(k,ie({className:V("modal-wraper",n),keyboard:false,forceRender:false,destroyOnClose:true},u,{width:a||600,footer:null,children:[F("div",{className:"modal-wraper-content",children:[i,t&&j(xr,{})]}),l!==null&&j("div",{className:"modal-wraper-content-footer",children:l?l:j(Lr,ie({},o))})]}))};var Rr={};var qr=function e(r){if(!Rr[r]){Rr[r]=G(wr)}return Rr[r]};var Tr={actions:{openModalForm:function e(r){var t=r.itemData,n=r.title,a=r.operateType,i=r.pageLoading;return function(e){e.itemData=t;e.title=n;e.operateType=a;e.pageLoading=i;e.visible=true}},closeModal:function e(){return function(e){e.visible=false}},setModalItemData:function e(r){return function(e){e.pageLoading=false;e.itemData=r}}},state:{visible:false,title:"",operateType:"view"}};var Ir=["loading","okText","cancelText","onCancel","onOk","hideOkBtn"];var Dr=function e(r){var t=r.loading,n=r.okText,a=n===void 0?"保存":n,i=r.cancelText,l=i===void 0?"取消":i,o=r.onCancel,s=r.onOk,c=r.hideOkBtn,f=le(r,Ir);return j(D,{children:F(u,{size:"middle",children:[j(d,ie({},f.cancelButtonProps,{className:"cancel-btn",onClick:o,children:l})),c!=true&&j(d,ie({type:"primary"},f.okButtonProps,{className:"ok-btn",onClick:s,loading:t,children:a}))]})})};var Pr=["pageLoading","className","width","children"];var Ar=function e(){return j("div",{className:"modal-wrapper-loader",children:F("div",{className:"loader-wrapper",children:[j("div",{className:"loader-inner"}),j("div",{className:"loader-text",children:"LOADING"})]})})};var Or=function e(r){return F(D,{children:[j("div",{className:"modal-wrapper-content",children:r.children}),r.operationProps?j(Mr,{children:j(Dr,ie({},r.operationProps))}):null]})};var Mr=function e(r){return j("div",{className:"modal-wrapper-footer",children:r.children})};var _r=function e(r){var t=r.pageLoading,n=r.className,a=r.width,i=r.children,l=le(r,Pr);Se((function(){if(r["operationProps"]){throw new Error("ModalWrapper组件升级,参数operationProps用法变更,请及时更新")}}),[]);return F(k,ie({className:V("modal-wrapper",n),keyboard:false,forceRender:true,destroyOnClose:true},l,{width:a||600,footer:null,children:[i,t&&j(Ar,{})]}))};_r.Content=Or;_r.Footer=Mr;var Br={};var Er=function e(r){if(!Br[r]){Br[r]=G(Tr)}return Br[r]};var Yr=function e(r){return j("div",{className:V("page-fixed-footer",r.className),style:r.style,children:r.children})};var Kr=function e(){return j("div",{className:"v-404",children:"404"})};var jr={label_width_70:"form-label-70",label_width_80:"form-label-80",label_width_90:"form-label-90",label_width_100:"form-label-100",label_width_110:"form-label-110",label_width_120:"form-label-120",label_width_130:"form-label-130",label_width_auto:"form-label-auto"};var Fr={label_width_70:"form-item-label-70",label_width_80:"form-item-label-80",label_width_90:"form-item-label-90",label_width_100:"form-item-label-100",label_width_110:"form-item-label-110",label_width_120:"form-item-label-120",label_width_130:"form-item-label-130",label_width_auto:"form-item-label-auto"};var Wr={form:jr,formItem:Fr};var zr=function e(r){var t=r.formLabelAlign||"right";var n=V("simple-layout",{"simple-layout-tight":r.layoutType==="tight","simple-layout-formlabel-left":t==="left"},r.className);var a=V("simple-layout-title",{"simple-layout-title-sign":r.titleLeftLine});return F("div",{className:n,style:r.style,children:[r.title?j("div",{className:a,children:r.title}):null,r.desc?j("div",{className:"simple-layout-desc",children:r.desc}):null,r.children?j("div",{className:"simple-layout-content",children:r.children}):null]})};zr.defaultProps={titleLeftLine:true,layoutType:"layer"};var Ur=function e(r){var t=O(),n=t[0],a=t[1];var i=O(false),l=i[0],o=i[1];var u=O(false),s=u[0],c=u[1];var d=A((function(){return{sendTxt:r.sendTxt,sentTxt:r.sentTxt,processingTxt:r.processingTxt,format:r.format,autoStart:r.autoStart,totalTicks:r.totalTicks,duration:r.duration}}),[]);var f=d.format;var v=d.totalTicks;var m=d.duration;var p=z.useCountdownCallback((function(e){var t=e/1e3;if(e>0){if(!l){o(true)}a(f.replace("{t}",String(t)));r.onTick==null?void 0:r.onTick(t)}else if(e===0){o(false);c(false);r.onTick==null?void 0:r.onTick(t);a(d.sentTxt)}}),v*1e3,{intervalTime:m});M((function(){if(!d.autoStart){a(d.sendTxt)}else{p();c(true);o(true)}}),[p,d]);var h=z.useCallbackRef((function(){if(l||s)return;c(true);a(d.processingTxt);void r.onSendRequest().then((function(){o(true);p()})).catch((function(){a(d.sendTxt);c(false)}))}));var g=V("v-count-down",r.className,{running:l,starting:s});return j("div",{className:g,onClick:h,children:n})};Ur.defaultProps={totalTicks:60,duration:1e3,autoStart:false,format:"{t}s",sendTxt:"获取验证码",sentTxt:"重新获取",processingTxt:"发送中..."};var Gr=function e(){console.error("@flatbiz/antd库【TableFilterLayout】组件已经过期,请使用【SimpleLayout】组件替代")};var Vr=function e(r){Se((function(){Gr()}),[]);return j("div",{className:V("table-filter-layout",{"table-filter-layout-flex":r.isFixed},r.className),children:K.map(r.children,(function(e,t){if(r.isFixed&&t===r.fullIndex){return Y(e,{className:"table-filter-layout-flex-full"})}return e}))})};var Hr=function e(r){return j("div",{className:V("table-filter-layout-condition",r.className),children:r.children})};var Jr=function e(r){return j("div",{className:V("table-filter-layout-operate",r.className),children:r.children})};var Qr=function e(r){return j("div",{className:V("table-filter-layout-table",r.className),children:r.children})};var Xr=function e(r){return j("div",{className:V("table-filter-layout-footer",r.className),children:r.children})};Vr.Condition=Hr;Vr.Operate=Jr;Vr.Table=Qr;Vr.Footer=Xr;var Zr={treeSelectorList:[],queryIsEmpty:false};var $r={actions:{setSelectBoxList:function e(r){return function(e){e.treeSelectorList=r||[];e.requestStatus="request-success"}},resetSelectBoxList:function e(){return function(e){e.treeSelectorList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:Zr};var et={};var rt=function e(r){if(!et[r]){et[r]=G($r)}return et[r]};var tt=function e(r,t,n){if(!I(t)||t.length===0)return[];var a=i(t,n);return l(r,a)};var nt=["serviceConfig","effectDependencyList","onTreeSelectorListChange","treeSelectorList","modelKey"];var at=_((function(e,r){var t=e.serviceConfig,a=e.effectDependencyList,i=e.onTreeSelectorListChange,l=e.treeSelectorList,o=e.modelKey,u=le(e,nt);var s=t||{};var c=a||[];var d=O(false),f=d[0],v=d[1];var m=O(),p=m[0],h=m[1];var g=rt(o).useStore(),b=g[0],y=g[1];var w="request-pre-"+e.modelKey;var N=function e(r){return r===""||n(r)};var L=function e(r){var t=s.onRequestResultAdapter?s.onRequestResultAdapter(r):r;return t};var S=z.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l;var o=function(){try{return e()}catch(e){return r(e)}};var u=function(e){try{v(false);void C.error(e.message||"数据查询异常...");return o()}catch(e){return r(e)}};try{if(!s.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=s.requiredParamsKeys;n=Q({},s.params);if(t){a=t.find((function(e){return N(n[e])}));if(a){console.warn("TreeSelectorWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var c=function(){try{return o()}catch(e){return u(e)}};var d=function(e){try{v(false);window[w]=false;void y.changeRequestStatus("request-error");return c()}catch(e){return u(e)}};try{v(true);window[w]=true;void y.changeRequestStatus("request-pre");return Promise.resolve(s.onRequest==null?void 0:s.onRequest(n)).then((function(e){try{i=e;l=L(i);v(false);window[w]=false;void y.setSelectBoxList(l||[]);return c()}catch(e){return d(e)}}),d)}catch(e){d(e)}}catch(e){u(e)}}))}));Z((function(){if(b.treeSelectorList&&b.requestStatus==="request-success"){i==null?void 0:i(b.treeSelectorList)}}),[b.treeSelectorList,b.requestStatus]);Z((function(){if(l){void y.setSelectBoxList(l);return}var e=rt(o).getState();console.log("realTimeState",e.requestStatus);if(c.length>0||!window[w]&&e.requestStatus!=="request-success"){void S()}}),c);M((function(){if(!n(e.value)){var r=I(e.value)?e.value:[e.value];if(r.length>0&&b.treeSelectorList.length>0){var t=[];r.forEach((function(r){var n=tt(r,b.treeSelectorList,e.fieldNames);t=t.concat(n.map((function(e){return e.value})))}));h((function(e){var r=t.concat(e||[]);return Array.from(new Set(r))}))}}}),[b.treeSelectorList,e.fieldNames,e.value]);E(r,(function(){return{onClearSelectorList:function e(){void y.setSelectBoxList([])},getTreeSelectorList:function e(){return b.treeSelectorList}}}));var x=z.useCallbackRef((function(e){h(e)}));var k=z.useCallbackRef((function(){void S()}));var q=A((function(){if(b.treeSelectorList.length===0)return undefined;var r=ie({label:"label",value:"value"},e.fieldNames);if(e.showAllOption===true){var t;var n=(t={},t[""+r.label]="全部",t[""+r.value]="",t);return[n].concat(b.treeSelectorList)}else if(ne(e.showAllOption)){return[e.showAllOption].concat(b.treeSelectorList)}return b.treeSelectorList}),[e.fieldNames,e.showAllOption,b.treeSelectorList]);return j(R,ie({dropdownStyle:{maxHeight:400,overflow:"auto"},showSearch:true,treeLine:true},u,{value:n(e.value)?undefined:e.value,treeExpandedKeys:p,treeData:q,loading:f,onTreeExpand:x,style:ie({width:"100%"},u.style),suffixIcon:b.requestStatus==="request-error"?j(X,{spin:f,onClick:k}):undefined,notFoundContent:j(it,{requestStatus:b.requestStatus,onAgainRequest:k})}))}));var it=function e(r){var t=A((function(){if(r.requestStatus==="request-error"){return"数据查询异常"}else if(r.requestStatus==="request-success"){return"暂无数据"}return"数据查询中"}),[r.requestStatus]);return j(N,{image:N.PRESENTED_IMAGE_SIMPLE,description:t,className:"tree-selector-wrapper-empty",children:r.requestStatus==="request-error"&&j(d,{type:"primary",onClick:r.onAgainRequest,children:"重新获取数据"})})};var lt={treeList:[],queryIsEmpty:false};var ot={actions:{setTreeList:function e(r){return function(e){e.treeList=r||[];e.requestStatus="request-success"}},resetTreeList:function e(){return function(e){e.treeList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:lt};var ut={};var st=function e(r){if(!ut[r]){ut[r]=G(ot)}return ut[r]};var ct=function e(r,t,n){var a=i(t,n);return l(r,a)};var dt=["serviceConfig","effectDependencyList","selectorTreeList","value","onChange","fieldNames","modelKey"];var ft=_((function(e,r){var t=e.serviceConfig,a=e.effectDependencyList,l=e.selectorTreeList,o=e.value,u=e.onChange,s=e.fieldNames,c=e.modelKey,d=le(e,dt);var f=t||{};var v=a||[];var m=O(),p=m[0],h=m[1];var g=st(c).useStore(),b=g[0],y=g[1];var w=O(false),N=w[0],L=w[1];var S=A((function(){if(n(e.value))return undefined;return I(e.value)?e.value:[e.value]}),[e.value]);var x=function e(r){return r===""||n(r)};var k=function e(r){var t=f.onRequestResultAdapter?f.onRequestResultAdapter(r):r;return t};var R=z.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l;var o=function(){try{return e()}catch(e){return r(e)}};var u=function(e){try{L(false);void C.error(e.message||"数据查询异常...");return o()}catch(e){return r(e)}};try{if(!f.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=f.requiredParamsKeys;n=Q({},f.params);if(t){a=t.find((function(e){return x(n[e])}));if(a){console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var s=function(){try{return o()}catch(e){return u(e)}};var c=function(e){try{L(false);void y.changeRequestStatus("request-error");return s()}catch(e){return u(e)}};try{L(true);void y.changeRequestStatus("request-pre");return Promise.resolve(f.onRequest==null?void 0:f.onRequest(n)).then((function(e){try{i=e;l=k(i);void y.setTreeList(l||[]);L(false);return s()}catch(e){return c(e)}}),c)}catch(e){c(e)}}catch(e){u(e)}}))}));Z((function(){if(l){void y.setTreeList(l);return}var e=st(c).getState();if(v.length>0||!e.requestStatus||e.requestStatus==="request-error"){void R()}}),v);Z((function(){if(S&&S.length>0&&b.treeList.length>0&&!p){var r=[];S.forEach((function(t){var n=ct(t,b.treeList,e.fieldNames);r=r.concat(n.map((function(e){return e.value})))}));h((function(e){var t=r.concat(e||[]);return Array.from(new Set(t))}))}}),[b.treeList,e.fieldNames,o]);z.useUpdateEffect((function(){if(e.filterLabel){var r=i(b.treeList||[],e.fieldNames);var t=r.filter((function(r){var t;return(t=r.label)==null?void 0:t.includes(e.filterLabel||"")}));var n=[];t.map((function(r){var t=ct(r.value,b.treeList||[],e.fieldNames);var a=t.map((function(e){return e.value}));n=n.concat(a)}));h(Array.from(new Set(n)))}else{h([])}}),[e.filterLabel]);E(r,(function(){return{onClearSelectorList:function e(){void y.resetTreeList()},getTreeDataList:function e(){return b.treeList}}}));var T=z.useCallbackRef((function(e){h(e)}));var D=z.useCallbackRef((function(e){u==null?void 0:u(e)}));var P=z.useCallbackRef((function(r){if(e.multiple){u==null?void 0:u(r)}else{u==null?void 0:u(r[0])}}));var M=A((function(){var e=Q({label:"label",value:"value",children:"children"},s);return{title:e.label,key:e.value,children:e.children}}),[s]);if(b.treeList.length>0){return j(q,ie({showLine:d.checkable?false:{showLeafIcon:false}},d,{fieldNames:M,expandedKeys:p,treeData:b.treeList,onExpand:T,selectedKeys:d.checkable?undefined:S,checkedKeys:d.checkable?S:undefined,onCheck:d.checkable?D:undefined,onSelect:d.checkable?undefined:P,style:ie({width:"100%"},d.style)}))}return j(vt,{requestStatus:b.requestStatus,loading:N,onAgainRequest:R})}));var vt=function e(r){var t=A((function(){if(r.requestStatus==="request-error"){return"数据查询异常"}else if(r.requestStatus==="request-success"){return"暂无数据"}return"数据查询中"}),[r.requestStatus]);return F("div",{className:"tree-wrapper-empty",children:[j(T,{spinning:r.loading}),j(N,{image:N.PRESENTED_IMAGE_SIMPLE,description:t,children:r.requestStatus==="request-error"&&j(d,{type:"primary",onClick:r.onAgainRequest,children:"重新获取数据"})})]})};export{de as ButtonOperate,ve as DatePickerWrapper,pe as DateRangePickerWrapper,Ce as DrawerWraper,De as DrawerWrapper,vr as EditableTable,pr as FileImport,gr as FileUpload,br as FlexLayout,yr as Gap,Cr as IconWrapper,kr as ModalWraper,_r as ModalWrapper,Kr as Page404,Yr as PageFixedFooter,se as Permission,Je as SelectorWrapper,zr as SimpleLayout,Ur as SmsCountDown,Vr as TableFilterLayout,at as TreeSelectorWrapper,ft as TreeWrapper,nr as UploadWrapper,Ne as createDrawerWraperModel,Ae as createDrawerWrapperModel,qr as createModalWraperModel,Er as createModalWrapperModel,oe as getPermissionList,ue as hasPermission,Wr as preDefinedClassName,ae as styles,Se as useEffectCustom,xe as useEffectCustomAsync};
5
5
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/01-styles/index.ts","@flatbiz/antd/src/permission/index.tsx","@flatbiz/antd/src/button-operate/index.tsx","@flatbiz/antd/src/date-picker-wrapper/index.tsx","@flatbiz/antd/src/date-range-picker-wrapper/index.tsx","@flatbiz/antd/src/drawer-wraper/drawer.model.ts","@flatbiz/antd/src/drawer-wraper/drawer-operation.tsx","@flatbiz/antd/src/drawer-wraper/drawer-wraper.tsx","@flatbiz/antd/src/drawer-wraper/index.ts","@flatbiz/antd/src/drawer-wrapper/drawer.model.ts","@flatbiz/antd/src/hooks/use-effect-custom.ts","@flatbiz/antd/src/hooks/use-effect-custom-async.ts","@flatbiz/antd/src/drawer-wrapper/drawer-operation.tsx","@flatbiz/antd/src/drawer-wrapper/drawer-wrapper.tsx","@flatbiz/antd/src/drawer-wrapper/index.ts","@flatbiz/antd/src/editable-table/utils.ts","@flatbiz/antd/src/editable-table/form-item/checkbox-group.tsx","@flatbiz/antd/src/editable-table/form-item/date-picker-wrapper.tsx","@flatbiz/antd/src/editable-table/form-item/date-range-picker-wrapper.tsx","@flatbiz/antd/src/editable-table/form-item/input.tsx","@flatbiz/antd/src/editable-table/form-item/input-number.tsx","@flatbiz/antd/src/editable-table/form-item/radio-group.tsx","@flatbiz/antd/src/selector-wrapper/model.ts","@flatbiz/antd/src/selector-wrapper/index.tsx","@flatbiz/antd/src/editable-table/form-item/selector-wrapper.tsx","@flatbiz/antd/src/editable-table/form-item/text.tsx","@flatbiz/antd/src/editable-table/form-item/textarea.tsx","@flatbiz/antd/src/upload-wrapper/index.tsx","@flatbiz/antd/src/editable-table/form-item/upload-wrapper.tsx","@flatbiz/antd/src/editable-table/form-item/index.tsx","@flatbiz/antd/src/editable-table/form-list-item/form-list.tsx","@flatbiz/antd/src/editable-table/form-list-item/index.tsx","@flatbiz/antd/src/editable-table/index.tsx","@flatbiz/antd/src/file-import/index.tsx","@flatbiz/antd/src/file-upload/index.tsx","@flatbiz/antd/src/flex-layout/index.tsx","@flatbiz/antd/src/gap/index.tsx","@flatbiz/antd/src/icon-wrapper/index.tsx","@flatbiz/antd/src/modal-wraper/modal.model.ts","@flatbiz/antd/src/modal-wraper/modal-operation.tsx","@flatbiz/antd/src/modal-wraper/modal-wraper.tsx","@flatbiz/antd/src/modal-wraper/index.ts","@flatbiz/antd/src/modal-wrapper/modal.model.ts","@flatbiz/antd/src/modal-wrapper/modal-operation.tsx","@flatbiz/antd/src/modal-wrapper/modal-wrapper.tsx","@flatbiz/antd/src/modal-wrapper/index.ts","@flatbiz/antd/src/page-fixed-footer/index.tsx","@flatbiz/antd/src/page404/index.tsx","@flatbiz/antd/src/pre-defined-classname/form/index.tsx","@flatbiz/antd/src/pre-defined-classname/index.ts","@flatbiz/antd/src/simple-layout/index.tsx","@flatbiz/antd/src/sms-count-down/index.tsx","@flatbiz/antd/src/table-filter-layout/index.tsx","@flatbiz/antd/src/tree-selector-wrapper/model.ts","@flatbiz/antd/src/tree-selector-wrapper/utils.ts","@flatbiz/antd/src/tree-selector-wrapper/index.tsx","@flatbiz/antd/src/tree-wrapper/model.ts","@flatbiz/antd/src/tree-wrapper/utils.ts","@flatbiz/antd/src/tree-wrapper/index.tsx"],"sourcesContent":["import { noop } from '@flatbiz/utils';\nimport './1_root.less';\nimport './2_base.less';\n\nexport const styles = noop;\n","import { isArray } from '@dimjs/lang';\nimport { getGlobalData } from '@flatbiz/utils';\nimport { FC, Fragment } from 'react';\n\nexport const getPermissionList = () => {\n const { elemAclLimits } = getGlobalData();\n const permissionList: string[] = isArray(elemAclLimits) ? elemAclLimits : [];\n return permissionList;\n};\n\nexport const hasPermission = (name: string) => {\n const permissionList = getPermissionList();\n if (permissionList.includes(name)) {\n return true;\n }\n return false;\n};\n\nexport interface PermissionProps {\n name: string;\n}\nexport const Permission: FC<PermissionProps> = (props) => {\n const permissionList = getPermissionList();\n if (permissionList.includes(props.name)) {\n return <Fragment>{props.children}</Fragment>;\n }\n return null;\n};\n","import { isUndefined } from '@dimjs/lang';\nimport { Button, ButtonProps, Divider, Popconfirm, Space, SpaceProps } from 'antd';\nimport { VFC } from 'react';\nimport { hasPermission } from '../permission';\nimport './style.less';\n\nexport interface ButtonOperateItem extends ButtonProps {\n text: string;\n color?: string;\n onClick: () => void;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n}\n\nexport interface ButtonOperateProps {\n operateList: Array<ButtonOperateItem | null>;\n wrap?: boolean;\n size?: SpaceProps['size'];\n}\n\nexport const ButtonOperate: VFC<ButtonOperateProps> = (props) => {\n return (\n <div className=\"table-operate\">\n <Space\n split={<Divider type=\"vertical\" />}\n size={props.size}\n wrap={isUndefined(props.wrap) ? true : props.wrap}\n >\n {props.operateList.map((item, index) => {\n if (!item) return null;\n const {\n text,\n color,\n onClick,\n permission,\n needConfirm,\n confirmMessage,\n hidden,\n style,\n ...otherProps\n } = item;\n if (hidden) return null;\n if (permission && !hasPermission(permission)) return null;\n const newStyle = color ? { color, ...style } : style;\n const type = item.type || 'link';\n if (needConfirm) {\n return (\n <Popconfirm\n title={confirmMessage}\n okText=\"确定\"\n cancelText=\"取消\"\n onConfirm={onClick}\n arrowPointAtCenter={true}\n key={index}\n >\n <Button {...otherProps} onClick={undefined} type={type} danger style={newStyle}>\n {text}\n </Button>\n </Popconfirm>\n );\n }\n return (\n <Button {...otherProps} type={type} style={newStyle} key={index} onClick={onClick}>\n {text}\n </Button>\n );\n })}\n </Space>\n </div>\n );\n};\n\nButtonOperate.defaultProps = {\n size: 0,\n};\n","import { flatbizDate } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { DatePicker } from 'antd';\nimport { PickerDateProps } from 'antd/lib/date-picker/generatePicker';\nimport moment from 'moment';\nimport { useMemo, VFC } from 'react';\n\nexport type DatePickerWrapperProps = Omit<PickerDateProps<moment.Moment>, 'value' | 'onChange'> & {\n value?: string;\n onChange?: (value?: string) => void;\n /**\n * minDate、maxDate设置格式:YYYY-MM-DD\n */\n disabledDateConfig?: {\n minDate?: string;\n maxDate?: string;\n };\n};\n\n/**\n * DatePicker包装组件\n * ```\n * 1. value类型为 string\n * 2. onChange返回类型 string\n * 3. 默认格式化类型 YYYY-MM-DD; 当showTime===true时,默认格式化类型YYYY-MM-DD HH:mm:ss\n * 4. 其他格式化类型自定义format\n * ```\n */\nexport const DatePickerWrapper: VFC<DatePickerWrapperProps> = (props) => {\n const { value, onChange, style, ...otherProps } = props;\n const format = useMemo(() => {\n if (props.format) return props.format as string;\n if (props.showTime) return 'YYYY-MM-DD HH:mm:ss';\n return 'YYYY-MM-DD';\n }, [props.showTime, props.format]);\n\n const onChangeDate = hooks.useCallbackRef((value) => {\n if (value) {\n onChange?.(moment(value).format(format));\n } else {\n onChange?.(undefined);\n }\n });\n\n const getDisabledDate = hooks.useCallbackRef((current) => {\n const currentDate = moment(current.format('YYYY-MM-DD'));\n if (!props.disabledDateConfig) {\n return false;\n }\n const { minDate, maxDate } = props.disabledDateConfig;\n if (minDate && maxDate) {\n if (currentDate.isBefore(minDate) || currentDate.isAfter(maxDate)) {\n return true;\n }\n } else if (minDate) {\n if (currentDate.isAfter(minDate)) {\n return true;\n }\n } else if (maxDate) {\n if (currentDate.isBefore(minDate)) {\n return true;\n }\n }\n return false;\n });\n\n const datePickerValue = useMemo(() => {\n if (value) {\n return moment(flatbizDate.dateNormalize(value));\n }\n return undefined;\n }, [value]);\n\n return (\n <DatePicker\n disabledDate={getDisabledDate}\n {...otherProps}\n style={{ width: '100%', ...style }}\n value={datePickerValue}\n onChange={onChangeDate}\n />\n );\n};\n","import { flatbizDate } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { DatePicker } from 'antd';\nimport { RangePickerDateProps } from 'antd/lib/date-picker/generatePicker';\nimport moment from 'moment';\nimport { useMemo, useState, VFC } from 'react';\n\nexport type DateRangePickerWrapperProps = Omit<RangePickerDateProps<moment.Moment>, 'value' | 'onChange'> & {\n value?: [string, string];\n onChange?: (value?: [string, string]) => void;\n /**\n * 1. minDate、maxDate设置格式:YYYY-MM-DD\n * 2. maxDays 最大可选的天数\n */\n disabledDateConfig?: {\n minDate?: string;\n maxDate?: string;\n maxDays?: number;\n };\n};\n\n/**\n * DatePicker.RangePicker包装组件\n * ```\n * TODO: 引用DatePicker.RangePicker TS有问题,待解决\n * 1. value类型为 [string, string]\n * 2. onChange返回类型 [string, string]\n * 3. 默认格式化类型 YYYY-MM-DD; 当showTime===true时,默认格式化类型YYYY-MM-DD HH:mm:ss\n * 4. 其他格式化类型自定义format\n * 5. 可设置disabledDateConfig,来控制日期项的disbaled状态\n * ```\n */\nexport const DateRangePickerWrapper: VFC<DateRangePickerWrapperProps> = (props) => {\n const { value, onChange, style, ...otherProps } = props;\n const [startEndDateList, setStartEndDateList] = useState<Array<moment.Moment | null>>();\n\n const format = useMemo(() => {\n if (props.format) return props.format as string;\n if (props.showTime === true) return 'YYYY-MM-DD HH:mm:ss';\n return 'YYYY-MM-DD';\n }, [props.showTime, props.format]);\n\n const onChangeDate = hooks.useCallbackRef((values) => {\n if (values) {\n const [value1, value2] = values || [];\n onChange?.([moment(value1).format(format), moment(value2).format(format)]);\n } else {\n onChange?.(undefined);\n }\n });\n\n const onCalendarChange = hooks.useCallbackRef((data) => {\n if (props.disabledDateConfig) {\n setStartEndDateList(data);\n }\n });\n\n const getDisabledDate = hooks.useCallbackRef((current) => {\n const currentDate = moment(current.format('YYYY-MM-DD'));\n if (!props.disabledDateConfig) {\n return false;\n }\n const { maxDays, minDate, maxDate } = props.disabledDateConfig;\n if (minDate && maxDate) {\n if (currentDate.isBefore(minDate) || currentDate.isAfter(maxDate)) {\n return true;\n }\n } else if (minDate) {\n if (currentDate.isAfter(minDate)) {\n return true;\n }\n } else if (maxDate) {\n if (currentDate.isBefore(minDate)) {\n return true;\n }\n }\n\n if (!startEndDateList || !maxDays) {\n return false;\n }\n\n const startDate = startEndDateList[0] ? moment(startEndDateList[0].format('YYYY-MM-DD')) : undefined;\n const endDate = startEndDateList[1] ? moment(startEndDateList[1].format('YYYY-MM-DD')) : undefined;\n\n const selectableMaxDate = startDate ? startDate.clone().add(maxDays - 1, 'd') : endDate;\n // if (maxDate && moment(maxDate).isBefore(selectableMaxDate)) {\n // selectableMaxDate = moment(maxDate);\n // }\n\n const selectableMinDate = endDate ? endDate.clone().subtract(maxDays - 1, 'd') : startDate;\n // if (minDate && moment(minDate).isAfter(selectableMinDate)) {\n // selectableMinDate = moment(minDate);\n // }\n return currentDate.isBefore(selectableMinDate) || currentDate.isAfter(selectableMaxDate);\n });\n\n const [date1, date2] = value || [];\n const rangePickerValue = useMemo(() => {\n if (date1 && date2) {\n const newDate1 = flatbizDate.dateNormalize(date1);\n const newDate2 = flatbizDate.dateNormalize(date2);\n return [moment(newDate1), moment(newDate2)];\n }\n return undefined;\n }, [date1, date2]);\n return (\n <DatePicker.RangePicker\n disabledDate={getDisabledDate}\n onCalendarChange={onCalendarChange}\n {...otherProps}\n style={{ width: '100%', ...style }}\n value={rangePickerValue as [moment.Moment, moment.Moment]}\n onChange={onChangeDate}\n />\n );\n};\n","import { ModelType } from '@dimjs/model';\n\nexport interface DrawerStateType {\n title: string;\n /**\n * 显示drawer\n */\n visible: boolean;\n /**\n * 用来处理form, `更新`的时候的传递当前item列表行的数据, 当`创建`的时候强制设置为 `undefined`\n */\n itemData?: Record<string, any>;\n operateType: 'create' | 'update' | 'view' | null;\n pageLoading?: boolean;\n}\n\nexport interface DrawerActionsParamType {\n openDrawerForm: Pick<DrawerStateType, 'title' | 'itemData' | 'operateType' | 'pageLoading'>;\n closeDrawer: void;\n setDrawerItemData: Record<string, any>;\n}\n\n/**\n * @shared\n * 提供公共的drawer处理, 通常用来表单编辑, 弹窗抽屉模式.\n * 注意全部理论上只允许一个drawer实例存在,如需处理多个, 请自行实例话模型.\n */\nexport const DrawerModel: ModelType<DrawerStateType, DrawerActionsParamType> = {\n actions: {\n openDrawerForm({ itemData, title, operateType, pageLoading }) {\n return (state) => {\n state.itemData = itemData;\n state.title = title;\n state.operateType = operateType;\n state.pageLoading = pageLoading;\n state.visible = true;\n };\n },\n closeDrawer() {\n return (state) => {\n state.visible = false;\n };\n },\n setDrawerItemData(params) {\n return (state) => {\n state.pageLoading = false;\n state.itemData = params;\n };\n },\n },\n state: {\n visible: false,\n title: '',\n operateType: null,\n },\n};\n","import { SaveOutlined } from '@ant-design/icons';\nimport { Button, ButtonProps, Space } from 'antd';\n\nexport interface DrawerOperationOldProps {\n loading?: boolean;\n okText?: string;\n cancelText?: string;\n onOk?: () => void;\n onCancel?: () => void;\n hideOkBtn?: boolean;\n okButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n cancelButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n}\n\nexport const DrawerOperation = (props: DrawerOperationOldProps) => {\n return (\n <div className=\"fixed-bottom-block\">\n <Space size=\"middle\">\n <Button {...props.cancelButtonProps} className=\"cancel-btn\" onClick={props.onCancel}>\n {props.cancelText || '取消'}\n </Button>\n {props.hideOkBtn != true && (\n <Button\n type=\"primary\"\n icon={<SaveOutlined />}\n {...props.okButtonProps}\n className=\"ok-btn\"\n onClick={props.onOk}\n loading={props.loading}\n >\n {props.okText || '提交'}\n </Button>\n )}\n </Space>\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Drawer, DrawerProps } from 'antd';\nimport { FC, useEffect } from 'react';\nimport { DrawerOperation, DrawerOperationOldProps } from './drawer-operation';\nimport './style.less';\n\nexport type DrawerFormProps = {\n className?: string;\n /**\n * 整个drawer页面级的spinning <Page loading />\n */\n pageLoading?: boolean;\n // 设置了 DrawerProps footer属性后,operationProps配置将失效\n operationProps?: DrawerOperationOldProps;\n} & DrawerProps;\n\nconst PageLoader = () => {\n return (\n <div className=\"drawer-wraper-loader\">\n <div className=\"loader-wrapper\">\n <div className=\"loader-inner\" />\n <div className=\"loader-text\">LOADING</div>\n </div>\n </div>\n );\n};\n\n/**\n * 弹窗机制\n * ```\n * 1. 默认 destroyOnClose = true\n * 2. 默认 forceRender = false\n * ```\n */\nexport const DrawerWraper: FC<DrawerFormProps> = (props) => {\n const { pageLoading, className, width = 600, children, footer, operationProps, ...otherProps } = props;\n useEffect(() => {\n console.error(\n '@flatbiz/antd库【DrawerWraper】组件已经过期,请使用DrawerWrapper替换包括DrawerWraper=>DrawerWrapper、createDrawerWraperModel=>createDrawerWrapperModel,如果使用DrawerWrapper组件原用法需要调整',\n );\n }, []);\n return (\n <Drawer\n className={classNames('drawer-wraper', className)}\n keyboard={false}\n forceRender={false}\n destroyOnClose={true}\n width={'80%'}\n contentWrapperStyle={{ maxWidth: width }}\n size=\"default\"\n {...otherProps}\n footer={footer || footer === null ? footer : <DrawerOperation {...operationProps} />}\n >\n <div className=\"drawer-wraper-content\">{children}</div>\n {pageLoading && <PageLoader />}\n </Drawer>\n );\n};\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { DrawerActionsParamType, DrawerModel, DrawerStateType } from './drawer.model';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst drawerModels: Record<string, API<ModelType<DrawerStateType, DrawerActionsParamType, any>>> = {};\n\n/**\n * drawer弹窗模型\n * @param key 唯一值必传\n * @returns\n *\n * ```\n * 使用方式\n * const [drawerState, drawerActions] = createDrawerWraperModel('key值').useStore();\n * ```\n */\nexport const createDrawerWraperModel = (key: string) => {\n if (!drawerModels[key]) {\n drawerModels[key] = Model(DrawerModel);\n }\n return drawerModels[key];\n};\n\nexport * from './drawer-wraper';\n","import { ModelType } from '@dimjs/model';\n\nexport interface DrawerStateType {\n title: string;\n /**\n * 显示drawer\n */\n visible: boolean;\n /**\n * 用来处理form, `更新`的时候的传递当前item列表行的数据, 当`创建`的时候强制设置为 `undefined`\n */\n itemData?: Record<string, any>;\n operateType: 'create' | 'update' | 'view' | null;\n pageLoading?: boolean;\n}\n\nexport interface DrawerActionsParamType {\n openDrawerForm: Pick<DrawerStateType, 'title' | 'itemData' | 'operateType' | 'pageLoading'>;\n closeDrawer: void;\n setDrawerItemData: Record<string, any>;\n}\n\n/**\n * @shared\n * 提供公共的drawer处理, 通常用来表单编辑, 弹窗抽屉模式.\n * 注意全部理论上只允许一个drawer实例存在,如需处理多个, 请自行实例话模型.\n */\nexport const DrawerModel: ModelType<DrawerStateType, DrawerActionsParamType> = {\n actions: {\n openDrawerForm({ itemData, title, operateType, pageLoading }) {\n return (state) => {\n state.itemData = itemData;\n state.title = title;\n state.operateType = operateType;\n state.pageLoading = pageLoading;\n state.visible = true;\n };\n },\n closeDrawer() {\n return (state) => {\n state.visible = false;\n };\n },\n setDrawerItemData(params) {\n return (state) => {\n state.pageLoading = false;\n state.itemData = params;\n };\n },\n },\n state: {\n visible: false,\n title: '',\n operateType: null,\n },\n};\n","import { DependencyList, EffectCallback, useEffect } from 'react';\n\nexport const useEffectCustom = (fn: EffectCallback, deps: DependencyList) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useEffect(fn, deps);\n};\n","import { DependencyList, useEffect } from 'react';\n\nexport const useEffectCustomAsync = (fn: () => Promise<void>, deps: DependencyList) => {\n useEffect(() => {\n async function asyncFunction() {\n await fn();\n }\n void asyncFunction();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n","import { SaveOutlined } from '@ant-design/icons';\nimport { Button, ButtonProps, Space } from 'antd';\n\nexport interface DrawerOperationProps {\n loading?: boolean;\n okText?: string;\n cancelText?: string;\n onOk?: () => void;\n onCancel?: () => void;\n hideOkBtn?: boolean;\n okButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n cancelButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n}\n\nexport const DrawerOperation = (props: DrawerOperationProps) => {\n return (\n <div className=\"fixed-bottom-block\">\n <Space size=\"middle\">\n <Button {...props.cancelButtonProps} className=\"cancel-btn\" onClick={props.onCancel}>\n {props.cancelText || '取消'}\n </Button>\n {props.hideOkBtn != true && (\n <Button\n type=\"primary\"\n icon={<SaveOutlined />}\n {...props.okButtonProps}\n className=\"ok-btn\"\n onClick={props.onOk}\n loading={props.loading}\n >\n {props.okText || '提交'}\n </Button>\n )}\n </Space>\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Drawer, DrawerProps } from 'antd';\nimport { FC, Fragment } from 'react';\nimport { useEffectCustom } from '../hooks';\nimport { DrawerOperation, DrawerOperationProps } from './drawer-operation';\nimport './style.less';\n\ntype DrawerWrapperStaticMethods = {\n Content: typeof DrawerWrapperContent;\n Footer: typeof DrawerWrapperFooter;\n};\n\nexport type DrawerWrapperProps = {\n className?: string;\n /**\n * 整个drawer页面级的spinning <Page loading />\n */\n pageLoading?: boolean;\n} & Omit<DrawerProps, 'footer'>;\n\nconst PageLoader = () => {\n return (\n <div className=\"drawer-wrapper-loader\">\n <div className=\"loader-wrapper\">\n <div className=\"loader-inner\" />\n <div className=\"loader-text\">LOADING</div>\n </div>\n </div>\n );\n};\n\nconst DrawerWrapperContent: FC<{ operationProps?: DrawerOperationProps }> = (props) => {\n return (\n <Fragment>\n <div className=\"drawer-wrapper-content\">{props.children}</div>\n {props.operationProps ? (\n <DrawerWrapperFooter>\n <DrawerOperation {...props.operationProps} />\n </DrawerWrapperFooter>\n ) : null}\n </Fragment>\n );\n};\n\nconst DrawerWrapperFooter = (props) => {\n return <div className=\"drawer-wrapper-footer\">{props.children}</div>;\n};\n\n/**\n * 弹窗机制\n * ```\n * 1. 默认 destroyOnClose = true\n * 2. 默认 forceRender = false\n * ```\n */\nexport const DrawerWrapper: FC<DrawerWrapperProps> & DrawerWrapperStaticMethods = (props) => {\n const { pageLoading, className, width = 600, children, ...otherProps } = props;\n\n useEffectCustom(() => {\n if (props['operationProps']) {\n throw new Error('DrawerWrapper组件升级,参数operationProps用法变更,请及时更新');\n }\n }, []);\n\n return (\n <Drawer\n className={classNames('drawer-wrapper', className)}\n keyboard={false}\n forceRender={false}\n destroyOnClose={true}\n width={'80%'}\n contentWrapperStyle={{ maxWidth: width }}\n size=\"default\"\n {...otherProps}\n footer={null}\n >\n {pageLoading && <PageLoader />}\n {children}\n </Drawer>\n );\n};\n\nDrawerWrapper.Content = DrawerWrapperContent;\nDrawerWrapper.Footer = DrawerWrapperFooter;\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { DrawerActionsParamType, DrawerModel, DrawerStateType } from './drawer.model';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst drawerModels: Record<string, API<ModelType<DrawerStateType, DrawerActionsParamType, any>>> = {};\n\n/**\n * drawer弹窗模型\n * @param key 唯一值必传\n * @returns\n *\n * ```\n * 使用方式\n * const [drawerState, drawerActions] = createDrawerWrapperModel('key值').useStore();\n * ```\n */\nexport const createDrawerWrapperModel = (key: string) => {\n if (!drawerModels[key]) {\n drawerModels[key] = Model(DrawerModel);\n }\n return drawerModels[key];\n};\n\nexport * from './drawer-wrapper';\n","import { FieldSingleConfig } from './type';\n\nexport const getEditable = (editable: FieldSingleConfig['editable'], tableRowIndex: number) => {\n return typeof editable === 'boolean' ? editable : editable?.({ tableRowIndex });\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { LabelValueItem } from '@flatbiz/utils';\nimport { Checkbox, Form, Tag } from 'antd';\nimport { useMemo } from 'react';\nimport { EditableCheckboxGroupConfig, EditableFormItemProps } from '../type';\n\ntype CheckboxGroupFormItemContent = Omit<EditableFormItemProps, 'formItemProps'> & {\n value?: Array<string | number>;\n onChange?: (value: any) => void;\n};\n\nconst CheckboxGroupFormItemContent = (props: CheckboxGroupFormItemContent) => {\n const { editableConfig, editable, render } = props.fieldConfig;\n const editableComptProps = (editableConfig as EditableCheckboxGroupConfig).editableComptProps;\n\n const viewLabelList = useMemo(() => {\n if (editable) return [];\n const value = isArray(props.value) ? props.value : ([] as any[]);\n const options = (editableComptProps.options || []) as LabelValueItem[];\n if (!isArray(options) || options.length === 0) {\n return value.map((item) => ({ label: item, value: item }));\n }\n const returnList = [] as LabelValueItem[];\n value.forEach((item) => {\n const target = options.find((temp) => temp.value === item);\n returnList.push(target ? target : { label: item, value: item });\n });\n return returnList;\n }, [editable, editableComptProps.options, props.value]);\n\n if (editable) {\n return <Checkbox.Group {...editableComptProps} value={props.value} onChange={props.onChange} />;\n }\n return (\n <span className=\"editable-checkbox-group-view\">\n {render\n ? render(props.value)\n : viewLabelList.map((tag, index) => (\n <Tag key={index} color=\"#1890ff\">\n {tag.label}\n </Tag>\n ))}\n </span>\n );\n};\n\nexport const CheckboxGroupFormItem = (props: EditableFormItemProps) => {\n const { formItemProps } = props.fieldConfig;\n\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-checkbox-group-form-item', formItemProps?.className)}\n >\n <CheckboxGroupFormItemContent {...props} />\n </Form.Item>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Form } from 'antd';\nimport { DatePickerWrapper } from '../../date-picker-wrapper';\nimport { EditableDatePickerWrapperConfig, EditableFormItemProps } from '../type';\n\nexport const DatePickerWrapperFormItem = (props: EditableFormItemProps) => {\n const { formItemProps, editableConfig } = props.fieldConfig;\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-date-picker-wraper-form-item', formItemProps?.className)}\n >\n <DatePickerWrapper {...(editableConfig as EditableDatePickerWrapperConfig).editableComptProps} />\n </Form.Item>\n );\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { Form } from 'antd';\nimport { useMemo } from 'react';\nimport { DateRangePickerWrapper } from '../../date-range-picker-wrapper';\nimport { EditableDateRangePickerWrapperConfig, EditableFormItemProps } from '../type';\n\ntype FormItemContentProps = Omit<EditableFormItemProps, 'formItemProps'> & {\n value?: [string, string];\n onChange?: (value?: [string, string]) => void;\n};\n\nconst FormItemContent = (props: FormItemContentProps) => {\n const { editableConfig, editable, render } = props.fieldConfig;\n const editableComptProps = (editableConfig as EditableDateRangePickerWrapperConfig).editableComptProps;\n\n const viewLabel = useMemo(() => {\n const value = isArray(props.value) ? props.value : ([] as any[]);\n if (editable) return undefined;\n return value.join('~');\n }, [editable, props.value]);\n\n if (editable) {\n return <DateRangePickerWrapper {...editableComptProps} value={props.value} onChange={props.onChange} />;\n }\n return <span className=\"editable-date-range-picker-view\">{render ? render(props.value) : viewLabel}</span>;\n};\n\nexport const DateRangePickerWrapperFormItem = (props: EditableFormItemProps) => {\n const { formItemProps } = props.fieldConfig;\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-date-range-picker-wraper-form-item', formItemProps?.className)}\n >\n <FormItemContent {...props} />\n </Form.Item>\n );\n};\n","import { Form, Input } from 'antd';\nimport { EditableFormItemProps, EditableInputConfig } from '../type';\n\nexport const InputFormItem = (props: EditableFormItemProps) => {\n const { formItemProps, editableConfig } = props.fieldConfig;\n return (\n <Form.Item {...formItemProps} name={props.name}>\n <Input {...(editableConfig as EditableInputConfig).editableComptProps} />\n </Form.Item>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Form, InputNumber } from 'antd';\nimport { EditableFormItemProps, EditableInputNumberConfig } from '../type';\n\nexport const InputNumberFormItem = (props: EditableFormItemProps) => {\n const { formItemProps, editableConfig } = props.fieldConfig;\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-input-number-form-item', formItemProps?.className)}\n >\n <InputNumber {...(editableConfig as EditableInputNumberConfig).editableComptProps} />\n </Form.Item>\n );\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { LabelValueItem } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, Radio, Tag } from 'antd';\nimport { useMemo } from 'react';\nimport { EditableFormItemProps, EditableRadioGroupConfig } from '../type';\n\ntype RadioGroupFormItemContent = Omit<EditableFormItemProps, 'formItemProps'> & {\n value?: string | number;\n onChange?: (value: string | number) => void;\n};\n\nconst RadioGroupFormItemContent = (props: RadioGroupFormItemContent) => {\n const { editableConfig, editable, render } = props.fieldConfig;\n const editableComptProps = (editableConfig as EditableRadioGroupConfig).editableComptProps;\n\n const viewLabel = useMemo(() => {\n if (editable) return [];\n const value = props.value;\n const options = (editableComptProps.options || []) as LabelValueItem<string | number>[];\n if (!isArray(options) || options.length === 0) {\n return value;\n }\n const target = options.find((item) => item.value === value);\n return target?.label || value;\n }, [editable, editableComptProps.options, props.value]);\n\n const onChange = hooks.useCallbackRef((e) => {\n props.onChange?.(e.target.value as string | number);\n });\n\n if (editable) {\n return <Radio.Group {...editableComptProps} value={props.value} onChange={onChange} />;\n }\n return (\n <span className=\"editable-radio-group-view\">\n {render ? render(props.value) : viewLabel ? <Tag color=\"#1890ff\">{viewLabel}</Tag> : null}\n </span>\n );\n};\n\nexport const RadioGroupFormItem = (props: EditableFormItemProps) => {\n const { formItemProps } = props.fieldConfig;\n\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-radio-group-form-item', formItemProps?.className)}\n >\n <RadioGroupFormItemContent {...props} />\n </Form.Item>\n );\n};\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { LabelValueItem, TPlainObject } from '@flatbiz/utils';\n\nexport type ModelState = {\n selectorList: LabelValueItem[];\n originalSelectorList: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus: 'init' | 'request-pre' | 'request-success' | 'request-error';\n};\n\ntype ModelActionParams = {\n setSelectBoxList: { selectorList: LabelValueItem[]; originalSelectorList: TPlainObject[] };\n resetSelectBoxList: void;\n changeRequestStatus: ModelState['requestStatus'];\n};\n\nconst defaultState: ModelState = {\n selectorList: [],\n originalSelectorList: [],\n queryIsEmpty: false,\n requestStatus: 'init',\n};\n\nconst _SelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.selectorList = params.selectorList || [];\n state.originalSelectorList = params.originalSelectorList || [];\n state.requestStatus = 'request-success';\n };\n },\n resetSelectBoxList: () => {\n return (state) => {\n state.selectorList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst selectorWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, any>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const selectorWrapperModel = (key: string) => {\n if (!selectorWrapperModels[key]) {\n selectorWrapperModels[key] = Model(_SelectorWrapperModel);\n }\n return selectorWrapperModels[key];\n};\n","import { RedoOutlined } from '@ant-design/icons';\nimport { extend } from '@dimjs/utils';\nimport { useEffectCustom } from '@flatbiz/antd';\nimport { arrayField2LabelValue, isUndefinedOrNull, LabelValueItem, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Empty, message, Select, SelectProps } from 'antd';\nimport {\n DependencyList,\n forwardRef,\n ReactElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ModelState, selectorWrapperModel } from './model';\n\ntype SelectorServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: any) => any;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: any) => TPlainObject[];\n};\n\nexport type SelectorWrapperProps = Omit<\n SelectProps,\n 'filterOption' | 'onSearch' | 'loading' | 'notFoundContent' | 'options' | 'fieldNames'\n> & {\n // 模型唯一值\n modelKey: string;\n fieldNames?: { label: string; value: string };\n /**\n * useEffect依赖性数组\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorList`后无效果\n */\n serviceConfig?: SelectorServiceConfig;\n /**\n * 同步设置选择器选项列表\n * ```\n * 1. 当设置selectorList后,serviceConfig、operateType=search将失效\n * 2. 不支持异步数据,异步使用serviceConfig方式\n * 3. 如果配置fieldNames,会转换后使用\n * ```\n */\n selectorList?: TPlainObject[];\n /**\n * 通过服务获取数据后回调,当设置`selectorList`后无效果\n */\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /**\n * 添加全部选项\n * ```\n * 1. showAllOption = true,添加默认全部选项(value值为空字符串)\n * 2. 可自定义全部选项\n * ```\n */\n showAllOption?: true | JSX.Element;\n /**\n * 输入操作类型,默认值:filter\n * ```\n * 1. search:根据输入项去服务端查询\n * 2. filter:初始化已查询数据,根据输入内容筛选\n * 3. 在设置`selectorList`后,operateType=search将失效\n * ```\n */\n operateType?: 'search' | 'filter';\n // 搜索调接口字段名称,默认值:keyword\n searchFieldName?: string;\n // label渲染适配器\n onLabelRenderAdapter?: (dataItem: LabelValueItem) => string | ReactElement;\n};\n\nexport type SelectorWrapperRefApi = {\n onClearSelectorList: () => void;\n getSelectorList: () => LabelValueItem<string | number>[];\n};\n/**\n * 选择器包装组件\n * @param props\n * @returns\n * ```\n * 1. modelKey的配置是为了缓存数据;\n * 1.1: 当有effectDependencyList依赖项时,依赖项的发生变化后,每次都会去调用接口获取数据\n * 1.2: 当无effectDependencyList依赖项时,第一次调用接口成功后会有标记,下次访问存在标记,就不在调用接口,使用缓存数据;如果想强制刷新数据,可通过随便配置依赖项完成\n * 2. selectorList属性\n * 2.1 当设置selectorList属性后,serviceConfig、operateType=search将失效\n * 2.2 不支持异步数据,异步使用serviceConfig方式\n * 3. operateType=search状态下,回填数据查询接口时,会在接口中默认添加id字段(id的值为回填的值)\n * ```\n */\nexport const SelectorWrapper = forwardRef<SelectorWrapperRefApi, SelectorWrapperProps>((props, ref) => {\n const {\n serviceConfig,\n showAllOption,\n effectDependencyList,\n onSelectorListChange,\n operateType,\n searchFieldName,\n selectorList,\n modelKey,\n fieldNames,\n ...otherProps\n } = props;\n\n const isSearch = operateType === 'search' && selectorList === undefined;\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const changeOperateValueRef = useRef<string | number>();\n const [loading, setLoading] = useState(false);\n const [state, actions] = selectorWrapperModel(modelKey).useStore();\n // const effectDependencyListPrev = usePrevious(props.effectDependencyList);\n // console.log('effectDependencyListPrev', effectDependencyListPrev);\n const requestPreKey = `request-pre-${props.modelKey}`;\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceRespDataAdapter = (respData) => {\n const respDataList = newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData;\n return respDataList;\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(\n async (inputValue?: string, searchId?: string | number) => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n console.warn(`SelectorWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-pre');\n if ((!isUndefinedOrNull(inputValue) || !isUndefinedOrNull(searchId)) && isSearch) {\n const keyword = searchFieldName || 'keyword';\n params[keyword] = inputValue;\n params['id'] = searchId;\n }\n const respData = await newServiceConfig.onRequest?.(params);\n const respAdapterData = serviceRespDataAdapter(respData);\n const respDataTranslation = arrayField2LabelValue(respAdapterData || [], fieldNames);\n setLoading(false);\n window[requestPreKey] = false;\n void actions.setSelectBoxList({\n selectorList: respDataTranslation,\n originalSelectorList: respAdapterData,\n });\n } catch (error) {\n console.error(error);\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n void message.error(error.message || '获取数据异常');\n }\n } catch (error) {\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n },\n );\n\n useEffectCustom(() => {\n if (state.originalSelectorList && state.requestStatus === 'request-success') {\n onSelectorListChange?.(state.originalSelectorList);\n }\n }, [state.originalSelectorList, state.requestStatus]);\n\n useEffectCustom(() => {\n if (selectorList) {\n void actions.setSelectBoxList({\n selectorList: arrayField2LabelValue(selectorList, fieldNames),\n originalSelectorList: selectorList,\n });\n return;\n }\n if (isSearch) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n const realTimeState = selectorWrapperModel(modelKey).getState();\n if (\n newEffectDependencyList.length > 0 ||\n (!window[requestPreKey] && realTimeState.requestStatus !== 'request-success')\n ) {\n void startDataSourceRequest();\n }\n }, newEffectDependencyList);\n\n useEffectCustom(() => {\n if (isSearch) {\n if (valueIsEmpty(props.value as string | number)) {\n onSelectorListChange?.([]);\n void actions.resetSelectBoxList();\n } else {\n // 判断是否由外部回填value数据\n if (props.value !== changeOperateValueRef.current) {\n void startDataSourceRequest(undefined, props.value as string | number);\n }\n }\n }\n }, newEffectDependencyList.concat([props.value]));\n\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.resetSelectBoxList();\n },\n getSelectorList: () => {\n return state.selectorList;\n },\n };\n });\n\n const filterOption = hooks.useCallbackRef((input: string, option) => {\n return (option?.children as unknown as string).toLowerCase().indexOf(input.toLowerCase()) >= 0;\n });\n\n const onSearch = hooks.useDebounceCallback((value: string) => {\n if (value) {\n void startDataSourceRequest(value);\n } else {\n void actions.resetSelectBoxList();\n }\n }, 300);\n\n const onChange = hooks.useCallbackRef((value: string | number, ...otherParams) => {\n changeOperateValueRef.current = value;\n props.onChange?.(value, otherParams);\n });\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n const selectOptionsAll = <Select.Option value=\"\">全部</Select.Option>;\n return (\n <Select\n showSearch={true}\n allowClear={true}\n {...otherProps}\n value={isUndefinedOrNull(props.value) ? undefined : props.value}\n notFoundContent={\n <NotFoundContent requestStatus={state.requestStatus} onAgainRequest={onAgainRequest} />\n }\n loading={loading}\n onSearch={isSearch ? onSearch : undefined}\n filterOption={isSearch ? false : filterOption}\n onChange={onChange}\n fieldNames={undefined}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n >\n {showAllOption === true ? selectOptionsAll : showAllOption}\n {state.selectorList.map((item) => {\n return (\n <Select.Option value={item.value} label={item.label} key={item.value}>\n {props.onLabelRenderAdapter ? props.onLabelRenderAdapter(item) : item.label}\n </Select.Option>\n );\n })}\n </Select>\n );\n});\n\nconst NotFoundContent = (props: {\n requestStatus?: ModelState['requestStatus'];\n onAgainRequest: () => void;\n}) => {\n const description = useMemo(() => {\n if (props.requestStatus === 'request-error') {\n return '数据查询异常';\n } else if (props.requestStatus === 'request-success') {\n return '暂无数据';\n }\n return '数据查询中';\n }, [props.requestStatus]);\n return (\n <Empty\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n description={description}\n className={'tree-selector-wrapper-empty'}\n >\n {props.requestStatus === 'request-error' && (\n <Button type=\"primary\" onClick={props.onAgainRequest}>\n 重新获取数据\n </Button>\n )}\n </Empty>\n );\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { arrayField2LabelValue, LabelValueItem, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, Tag } from 'antd';\nimport { Fragment, useEffect, useState } from 'react';\nimport { SelectorWrapper } from '../../selector-wrapper';\nimport { EditableFormItemProps, EditableSelectWrapperConfig } from '../type';\n\ntype FormItemContentProps = Omit<EditableFormItemProps, 'formItemProps'> & {\n value?: string | number | Array<string | number>;\n onChange?: (value: any) => void;\n};\n\nconst FormItemContent = (props: FormItemContentProps) => {\n const { editableConfig, editable, render } = props.fieldConfig;\n const editableComptProps = (editableConfig as EditableSelectWrapperConfig).editableComptProps;\n const [selectorList, setSelectorList] = useState<LabelValueItem[]>([]);\n const [viewLabelList, setviewLabelList] = useState<LabelValueItem[]>([]);\n\n useEffect(() => {\n if (!editable) {\n const value = isArray(props.value) ? props.value : props.value === undefined ? [] : [props.value];\n if (selectorList.length === 0) {\n setviewLabelList(value.map((item) => ({ label: item as string, value: item })));\n }\n const returnList = [] as LabelValueItem[];\n value.forEach((item) => {\n const target = selectorList.find((temp) => temp.value === item);\n returnList.push(target ? target : { label: String(item), value: item });\n });\n setviewLabelList(returnList);\n }\n }, [editable, editableComptProps.fieldNames, props.value, selectorList]);\n\n const onSelectorListChange = hooks.useCallbackRef((dataList: TPlainObject[]) => {\n setSelectorList(arrayField2LabelValue(dataList || [], editableComptProps.fieldNames));\n });\n\n if (editable) {\n return (\n <SelectorWrapper\n {...editableComptProps}\n value={props.value}\n onChange={props.onChange}\n onSelectorListChange={onSelectorListChange}\n />\n );\n }\n return (\n <Fragment>\n <div style={{ display: 'none' }}>\n <SelectorWrapper {...editableComptProps} onSelectorListChange={onSelectorListChange} />\n </div>\n <span className=\"editable-selector-view\">\n {render\n ? render(props.value)\n : viewLabelList.map((tag, index) => (\n <Tag key={index} color=\"#1890ff\">\n {tag.label}\n </Tag>\n ))}\n </span>\n </Fragment>\n );\n};\n\nexport const SelectorWrapperFormItem = (props: EditableFormItemProps) => {\n const { formItemProps } = props.fieldConfig;\n\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-selector-wrapper-form-item', formItemProps?.className)}\n >\n <FormItemContent {...props} />\n </Form.Item>\n );\n};\n","import { isBoolean, isNumber, isString } from '@dimjs/lang';\nimport { Form } from 'antd';\nimport { useMemo } from 'react';\nimport { EditableFormItemProps, FieldSingleConfig } from '../type';\n\nconst FormItemTextContent = (props: {\n value?: string | number;\n name: EditableFormItemProps['name'];\n fieldConfig?: FieldSingleConfig;\n}) => {\n const value = useMemo(() => {\n if (props.fieldConfig?.render) return undefined;\n const isBaseData =\n isString(props.value) || isNumber(props.value) || isBoolean(props.value) || !props.value;\n if (!isBaseData) {\n console.warn(`Form.List name:【${props.name}】数据【${JSON.stringify(props.value)}】不能渲染在页面中`);\n }\n return isBaseData ? props.value : undefined;\n }, [props.fieldConfig?.render, props.name, props.value]);\n\n return <span className=\"editable-text-view\">{props.fieldConfig?.render?.(props.value) || value}</span>;\n};\n\nexport const TextFormItem = (props: { name: Array<number | string>; fieldConfig?: FieldSingleConfig }) => {\n return (\n <Form.Item noStyle name={props.name}>\n <FormItemTextContent name={props.name} fieldConfig={props.fieldConfig} />\n </Form.Item>\n );\n};\n","import { Form, Input } from 'antd';\nimport { EditableFormItemProps, EditableTextareaConfig } from '../type';\n\nexport const TextAreaFormItem = (props: EditableFormItemProps) => {\n const { formItemProps, editableConfig } = props.fieldConfig;\n return (\n <Form.Item {...formItemProps} name={props.name}>\n <Input.TextArea {...(editableConfig as EditableTextareaConfig).editableComptProps} />\n </Form.Item>\n );\n};\n","import { PlusOutlined } from '@ant-design/icons';\nimport { classNames, extend } from '@dimjs/utils';\nimport { TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, message, Upload, UploadProps } from 'antd';\nimport { UploadChangeParam } from 'antd/lib/upload';\nimport { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport { FC, Fragment, useState } from 'react';\nimport { useEffectCustom } from '../hooks';\nimport './style.less';\n\nexport type UploadWrapperFileItem = {\n uid: string;\n name: string;\n url?: string;\n};\n\nexport type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {\n value?: T[];\n onChange?: (value?: T[]) => void;\n onUploadError?: (message?: string) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性映射\n */\n fieldNames?: {\n uid?: string;\n name?: string;\n url?: string;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: any) => TPlainObject;\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * 1. 可通过配置children替换默认上传触发布局\n * 2. 接口返回结构:\n * formData上传接口返回值\n * {\n * code: '0000',\n * data: {\n * uid: '唯一值,可使用fileKey值'\n * name: '文件名称'\n * url: '预览地址'\n * }\n * }\n * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射\n *\n * 4. 最佳使用方式,与Form结合使用\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <UploadWrapper action={uploadUrl} />\n * </Form.Item>\n * ```\n *\n */\nexport const UploadWrapper: FC<UploadWrapperProps> = (props) => {\n const { onChange, onUploadError, value, ...otherProps } = props;\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n },\n props.fieldNames,\n ) as Required<UploadWrapperFileItem>;\n\n useEffectCustom(() => {\n setUploadList(\n value?.map((item) => {\n return {\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n };\n }),\n );\n }, [fieldNames.name, fieldNames.uid, fieldNames.url, value]);\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n const fileList = info.fileList as TPlainObject[];\n if (info.file.status === 'done') {\n const respData = info.file.response;\n if (respData.code === '0000') {\n const result = (\n props.onRequestResultAdapter ? props.onRequestResultAdapter(respData.data) : respData.data\n ) as TPlainObject;\n result[fieldNames.uid] = result[fieldNames.uid] || info.file.uid;\n result[fieldNames.name] = result[fieldNames.name] || info.file.name;\n if (props.maxCount === 1) {\n onChange?.([result]);\n } else {\n onChange?.((value || []).concat(result));\n }\n } else {\n if (onUploadError) {\n onUploadError(respData.message as string);\n } else {\n void message.error((respData.message as string) || '上传操作失败...');\n }\n fileList[fileList.length - 1] = {\n ...fileList[fileList.length - 1],\n status: 'error',\n };\n }\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = value !== undefined ? [...value] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid];\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n if (onUploadError) {\n onUploadError();\n } else {\n void message.error('上传操作失败...');\n }\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n props.onUploadChange?.(info);\n });\n\n return (\n <Upload\n {...otherProps}\n onChange={onUploadChange}\n fileList={uploadList}\n className={classNames('v-upload-wrapper', otherProps.className)}\n >\n {otherProps.disabled ? null : (\n <UploadTrigger listType={otherProps.listType}>{props.children}</UploadTrigger>\n )}\n </Upload>\n );\n};\n\nconst UploadTrigger: FC<{ listType?: UploadListType }> = (props) => {\n if (props.children) return <Fragment>{props.children}</Fragment>;\n if (props.listType === 'picture-card') {\n return (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>上传图片</div>\n </div>\n );\n }\n if (props.listType === 'picture') {\n return (\n <Button type=\"primary\" ghost>\n 选择图片上传\n </Button>\n );\n }\n return (\n <Button type=\"primary\" ghost>\n 选择文件上传\n </Button>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Form } from 'antd';\nimport { UploadWrapper } from '../../upload-wrapper';\nimport { EditableFileUploadConfig, EditableFormItemProps } from '../type';\n\nconst UploadWrapperFormItemContent = (\n props: EditableFormItemProps & { value?: any; onChange?: (value?: any) => void },\n) => {\n const { editableConfig, render, editable } = props.fieldConfig;\n const { children, ...otherProps } = (editableConfig as EditableFileUploadConfig).editableComptProps;\n if (editable) {\n return (\n <UploadWrapper listType=\"text\" {...otherProps} value={props.value} onChange={props.onChange}>\n {children}\n </UploadWrapper>\n );\n }\n return (\n <div className=\"upload-wrapper-selector-view\">\n {render ? (\n render(props.value)\n ) : (\n <UploadWrapper listType=\"text\" {...otherProps} value={props.value} disabled={true} />\n )}\n </div>\n );\n};\n\nexport const UploadWrapperFormItem = (props: EditableFormItemProps) => {\n const { formItemProps } = props.fieldConfig;\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-upload-wrapper-form-item', formItemProps?.className)}\n >\n <UploadWrapperFormItemContent {...props} />\n </Form.Item>\n );\n};\n","import { extend } from '@dimjs/utils';\nimport { FieldSingleConfig } from '../type';\nimport { getEditable } from '../utils';\nimport { CheckboxGroupFormItem } from './checkbox-group';\nimport { DatePickerWrapperFormItem } from './date-picker-wrapper';\nimport { DateRangePickerWrapperFormItem } from './date-range-picker-wrapper';\nimport { InputFormItem } from './input';\nimport { InputNumberFormItem } from './input-number';\nimport { RadioGroupFormItem } from './radio-group';\nimport { SelectorWrapperFormItem } from './selector-wrapper';\nimport { TextFormItem } from './text';\nimport { TextAreaFormItem } from './textarea';\nimport { UploadWrapperFormItem } from './upload-wrapper';\n\nexport type FormItemAdapterProps = {\n name: Array<number | string>;\n completeName: Array<number | string>;\n fieldConfig: FieldSingleConfig;\n tableRowIndex: number;\n};\n\nexport const FormItemAdapter = (props: FormItemAdapterProps) => {\n const { editableConfig, editable } = props.fieldConfig;\n const newEditable = getEditable(editable, props.tableRowIndex);\n const fieldConfig = extend({}, props.fieldConfig, { editable: newEditable });\n\n const commomProps = {\n name: props.name,\n fieldConfig,\n };\n\n if (editableConfig?.type === 'input' && newEditable) {\n return <InputFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'inputNumber' && newEditable) {\n return <InputNumberFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'textArea' && newEditable) {\n return <TextAreaFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'datePickerWrapper' && newEditable) {\n return <DatePickerWrapperFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'dateRangePickerWrapper') {\n return <DateRangePickerWrapperFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'selectorWrapper') {\n return <SelectorWrapperFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'checkboxGroup') {\n return <CheckboxGroupFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'radioGroup') {\n return <RadioGroupFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'uploadWrapper') {\n return <UploadWrapperFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'custom') {\n return editableConfig.editableComptProps({\n name: props.name,\n editable: newEditable,\n completeName: props.completeName,\n });\n }\n return <TextFormItem {...commomProps} />;\n};\n","import { DeleteOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { Button, Form, Space } from 'antd';\nimport { FormItemAdapter } from '../form-item';\nimport { FormListConfig } from '../type';\nimport { getEditable } from '../utils';\n\nexport type FormListProps = {\n name: Array<number | string>;\n formListConfig: FormListConfig;\n tableRowIndex: number;\n completeName: (string | number)[];\n};\n\nexport const FormList = (props: FormListProps) => {\n const from = Form.useFormInstance();\n const {\n onFormListBeforeRender,\n editableConfigList,\n onFormListAfterRender,\n onFormListItemBeforeRender,\n onFormListItemAfterRender,\n deleteOperateRender,\n } = props.formListConfig;\n return (\n <Form.List name={props.name}>\n {(fields, { add, remove }) => (\n <>\n {onFormListBeforeRender\n ? onFormListBeforeRender({\n tableRowIndex: props.tableRowIndex,\n add,\n get value() {\n return from.getFieldValue(props.completeName);\n },\n })\n : null}\n {fields.map((fieldChild, index) => {\n const hasEditable = editableConfigList.find((item) =>\n getEditable(item.editable, props.tableRowIndex),\n );\n const className = classNames(\n 'editable-inner-formlist-item',\n `editable-inner-formlist-item-${props.name[1]}`,\n { 'editable-inner-formlist-item_preview': !hasEditable },\n );\n return (\n <div key={index} className={className}>\n {onFormListItemBeforeRender\n ? onFormListItemBeforeRender({\n add,\n remove: () => {\n remove(index);\n },\n formListItemIndex: index,\n tableRowIndex: props.tableRowIndex,\n get value() {\n return from.getFieldValue([...props.completeName, fieldChild.name]);\n },\n })\n : null}\n <Space>\n {editableConfigList.map((fieldItem, index) => {\n return (\n <FormItemAdapter\n name={[fieldChild.name, fieldItem.fieldName]}\n fieldConfig={fieldItem}\n key={index}\n tableRowIndex={props.tableRowIndex}\n completeName={[...props.completeName, fieldChild.name]}\n />\n );\n })}\n {hasEditable ? (\n <DeleteFormListItem\n deleteOperateRender={deleteOperateRender}\n remove={() => {\n remove(index);\n }}\n index={index}\n />\n ) : null}\n </Space>\n {onFormListItemAfterRender\n ? onFormListItemAfterRender({\n add,\n formListItemIndex: index,\n tableRowIndex: props.tableRowIndex,\n remove: () => {\n remove(index);\n },\n get value() {\n return from.getFieldValue([...props.completeName, fieldChild.name]);\n },\n })\n : null}\n </div>\n );\n })}\n {onFormListAfterRender\n ? onFormListAfterRender({\n tableRowIndex: props.tableRowIndex,\n add,\n get value() {\n return from.getFieldValue(props.completeName);\n },\n })\n : null}\n </>\n )}\n </Form.List>\n );\n};\n\nconst DeleteFormListItem = (props: {\n deleteOperateRender: FormListConfig['deleteOperateRender'];\n remove: () => void;\n index: number;\n}) => {\n return (\n <Form.Item>\n {props.deleteOperateRender ? (\n props.deleteOperateRender({ remove: props.remove, formListItemIndex: props.index })\n ) : (\n <Button type=\"link\" danger icon={<DeleteOutlined />} onClick={props.remove}>\n 删除\n </Button>\n )}\n </Form.Item>\n );\n};\n","import { isArray } from '@dimjs/lang';\nimport { FormItemAdapter } from '../form-item';\nimport { TextFormItem } from '../form-item/text';\nimport { FieldSingleConfig, FormListConfig } from '../type';\nimport { FormList } from './form-list';\n\nexport type FormListItemProps = {\n name: Array<number | string>;\n fieldConfig?: FieldSingleConfig | FormListConfig;\n tableRowIndex: number;\n completeName: (string | number)[];\n};\n\nexport const FormListItem = (props: FormListItemProps) => {\n if (props.fieldConfig) {\n if (isArray(props.fieldConfig['editableConfigList'])) {\n const formListConfig = props.fieldConfig as FormListConfig;\n return (\n <FormList\n name={props.name}\n completeName={props.completeName}\n formListConfig={formListConfig}\n tableRowIndex={props.tableRowIndex}\n />\n );\n } else {\n return (\n <FormItemAdapter\n name={props.name}\n fieldConfig={props.fieldConfig as FieldSingleConfig}\n tableRowIndex={props.tableRowIndex}\n completeName={props.completeName}\n />\n );\n }\n }\n return <TextFormItem name={props.name} />;\n};\n","import { PlusOutlined } from '@ant-design/icons';\nimport { Button, Form, Table, TableProps } from 'antd';\nimport { FormListOperation, FormListProps } from 'antd/lib/form/FormList';\nimport { ColumnsType } from 'antd/lib/table';\nimport { Fragment, ReactElement, useMemo } from 'react';\nimport { FormListItem } from './form-list-item';\nimport './style.less';\nimport { EditableTableRecordType, FieldSingleConfig, FormListConfig } from './type';\n\n// export type EditableTableDataSourceItem = FormListFieldData & { operation: FormListOperation };\n\n/**\n * antd 默认render功能此处不能使用\n */\nexport type EditableTableColumn = Omit<ColumnsType['0'], 'render'> & {\n dataIndex?: string;\n fieldConfig?: FieldSingleConfig | FormListConfig;\n /**\n * 配置操作功能处理后,fieldConfig配置将失效\n * ```\n * 1. tableRowIndex:当前row的索引值\n * 1. name:当前row的form.item的name值\n * ```\n */\n operateRender?: (item: {\n tableRowIndex: number;\n name: Array<string | number>;\n operation: FormListOperation;\n }) => ReactElement;\n};\n\nexport type EditableTableProps = {\n name: string;\n /**\n * ```\n * antd table属性\n * 1. 新增cellVerticalAlign,单元格竖直方向对齐方式,设置table column onCell属性后失效\n * ```\n */\n tableProps?: Omit<TableProps<EditableTableRecordType>, 'dataSource' | 'columns' | 'rowKey'> & {\n cellVerticalAlign?: 'baseline' | 'middle' | 'top' | 'bottom';\n };\n columns: EditableTableColumn[];\n onTableBeforeRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /**\n * 设置后,将覆盖底部`新增`按钮\n */\n onTableAfterRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n rules?: FormListProps['rules'];\n};\n\nexport const EditableTable = (props: EditableTableProps) => {\n const columns = useMemo(() => {\n if (!props.columns) return [];\n return props.columns.map((columnItem) => {\n const { fieldConfig, operateRender, ...otherColumnItem } = columnItem;\n return {\n onCell: () => {\n return {\n valign: props.tableProps?.cellVerticalAlign || 'middle',\n };\n },\n ...otherColumnItem,\n render: (_value, record) => {\n if (operateRender) {\n return (\n operateRender({\n name: [...props.name, record.name],\n tableRowIndex: record.name,\n operation: record.operation,\n }) || ''\n );\n }\n return (\n <FormListItem\n name={columnItem.dataIndex ? [record.name, columnItem.dataIndex] : [record.name]}\n completeName={\n columnItem.dataIndex\n ? [...props.name, record.name, columnItem.dataIndex]\n : [...props.name, record.name]\n }\n fieldConfig={fieldConfig}\n tableRowIndex={record.name}\n />\n );\n },\n };\n }) as ColumnsType<EditableTableRecordType>;\n }, [props.columns, props.name, props.tableProps?.cellVerticalAlign]);\n\n return (\n <div className=\"editable-table\">\n <Form.List name={props.name} rules={props.rules}>\n {(fields, formListOperation) => {\n return (\n <Fragment>\n {props.onTableBeforeRender ? props.onTableBeforeRender(formListOperation, fields.length) : null}\n <Table\n scroll={{ x: 'max-content' }}\n pagination={false}\n {...props.tableProps}\n dataSource={fields.map((item) => ({ ...item, operation: formListOperation }))}\n columns={columns}\n rowKey=\"key\"\n />\n {props.onTableAfterRender ? (\n props.onTableAfterRender(formListOperation, fields.length)\n ) : (\n <Button\n type=\"dashed\"\n onClick={() => formListOperation.add()}\n block\n icon={<PlusOutlined />}\n style={{ marginTop: 15 }}\n >\n 新增\n </Button>\n )}\n </Fragment>\n );\n }}\n </Form.List>\n </div>\n );\n};\n","import { hooks } from '@wove/react';\nimport { Button, message, Upload, UploadProps } from 'antd';\nimport { FC, useState } from 'react';\n\nexport type FileImportProps = {\n onImportFinish: (data?: any) => void;\n} & Omit<\n UploadProps,\n | 'fileList'\n | 'showUploadList'\n | 'itemRender'\n | 'listType'\n | 'multiple'\n | 'previewFile'\n | 'progress'\n | 'onChange'\n | 'onDownload'\n | 'onRemove'\n | 'onPreview'\n | 'directory'\n | 'customRequest'\n | 'defaultFileList'\n | 'iconRender'\n>;\n\n/**\n * 文件导入\n * ```\n * 默认值:\n * name: 'file',\n * accept: '.xlsx,.xls',\n * ```\n */\nexport const FileImport: FC<FileImportProps> = (props) => {\n const { onImportFinish, ...otherProps } = props;\n\n const [loading, setLoading] = useState(false);\n\n const onChange = hooks.useCallbackRef((info) => {\n if (info.file.status === 'uploading') {\n setLoading(true);\n } else if (info.file.status === 'done') {\n setLoading(false);\n const respData = info.file.response;\n if (respData.code === '0000') {\n onImportFinish(respData.data);\n } else {\n void message.error((respData.message as string) || '文件导入异常...');\n }\n }\n });\n\n return (\n <Upload showUploadList={false} maxCount={1} {...otherProps} onChange={onChange}>\n {props.children ? (\n props.children\n ) : (\n <Button type=\"primary\" ghost loading={loading}>\n 选择文件\n </Button>\n )}\n </Upload>\n );\n};\n\nFileImport.defaultProps = {\n name: 'file',\n accept: '.xlsx,.xls',\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { Upload, UploadProps } from 'antd';\nimport { UploadChangeParam } from 'antd/lib/upload';\nimport { UploadFile } from 'antd/lib/upload/interface';\nimport { FC, useEffect, useState } from 'react';\nimport { useEffectCustom } from '../hooks';\nimport './style.less';\n\nexport type FileUploadItem = {\n fileKey: string;\n fileName: string;\n};\n\ntype AntdFileUploadItem = {\n uid: string;\n name: string;\n fileKey: string;\n};\n\nexport type FileUploadProps = {\n onChange?: (value?: FileUploadItem[]) => void;\n onUploadError?: (message?: string) => void;\n value?: FileUploadItem[];\n onPreview?: (item: FileUploadItem) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性映射\n */\n fieldNames?: {\n fileKey?: string;\n fileName?: string;\n };\n} & Omit<UploadProps, 'onChange' | 'fileList' | 'onPreview'>;\n\n/**\n * 文件上传,结合Form使用最佳\n * ```\n * 接口返回结构:\n * formData上传接口必须返回fileKey值\n * {\n * code: '0000',\n * data: {\n * fileKey: '预览文件对应的fileKey'\n * }\n * }\n * 可通过fieldNames配置接口返回值属性名称映射\n * ```\n * ```\n * 最佳使用方式:\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <FileUpload action={uploadUrl} onPreview={onPreviewFile}>\n * <Button type=\"primary\">选择文件导入</Button>\n * </FileUpload>\n * </Form.Item>\n * ```\n *\n */\nexport const FileUpload: FC<FileUploadProps> = (props) => {\n useEffectCustom(() => {\n console.error('@flatbiz/antd库【FileUpload】组件已经过期,请使用【UploadWrapper】组件替换');\n }, []);\n\n const { onChange, onUploadError, onPreview, value, ...otherProps } = props;\n const [uploadValue, setUploadValue] = useState<AntdFileUploadItem[]>([]);\n const fieldNames = extend(\n {\n fileKey: 'fileKey',\n fileName: 'fileName',\n },\n props.fieldNames,\n ) as FileUploadItem;\n\n useEffect(() => {\n if (value && isArray(value)) {\n setUploadValue(\n value.map((item) => {\n return {\n uid: item['uid'] || item[fieldNames.fileKey],\n name: item[fieldNames.fileName],\n fileKey: item[fieldNames.fileKey],\n url: item[fieldNames.fileKey],\n thumbUrl: item[fieldNames.fileKey],\n };\n }),\n );\n }\n }, [fieldNames.fileKey, fieldNames.fileName, value]);\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n if (info.file.status === 'done') {\n const respData = info.file.response;\n if (respData.code === '0000') {\n const result = respData.data || {};\n const uploadItem = {\n uid: info.file.uid,\n fileName: result[fieldNames.fileName] || (info.file.name as string),\n fileKey: result[fieldNames.fileKey],\n } as FileUploadItem;\n const respValue = (value || []).concat(uploadItem);\n onChange?.(respValue as unknown as FileUploadItem[]);\n } else {\n onUploadError?.(respData.message as string);\n }\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = value !== undefined ? [...value] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item['uid'] || item[fieldNames.fileKey];\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n onUploadError?.();\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadValue([...info.fileList]);\n props.onUploadChange?.(info);\n });\n\n const onUploadPreview = hooks.useCallbackRef((file) => {\n onPreview?.({\n fileKey: file[fieldNames.fileKey],\n fileName: file[fieldNames.fileName],\n });\n });\n\n return (\n <Upload\n {...otherProps}\n onChange={onUploadChange}\n onPreview={onUploadPreview}\n fileList={uploadValue}\n className={classNames('v-file-upload', otherProps.className)}\n >\n {props.children}\n </Upload>\n );\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { isUndefinedOrNull } from '@flatbiz/utils';\nimport { cloneElement, CSSProperties, FC } from 'react';\nimport './style.less';\n\nexport type FlexLayoutProps = {\n className?: string;\n fullIndex?: number | number[];\n direction?: 'vertical' | 'horizontal';\n onClick?: () => void;\n style?: CSSProperties;\n gap?: number;\n};\n/**\n * flex布局\n * 1. direction:默认值vertical\n * 2. gap间隙距离\n * 3. fullIndex:指定children数组索引值对象flex=1\n * 4. children添加key熟悉\n * @param props\n * @returns\n */\nexport const FlexLayout: FC<FlexLayoutProps> = (props) => {\n const childrens = (isArray(props.children) ? props.children : [props.children]) as JSX.Element[];\n const direction = props.direction || 'vertical';\n const gap = props.gap ? props.gap : 0;\n const fullIndexList = !isUndefinedOrNull(props.fullIndex)\n ? isArray(props.fullIndex)\n ? props.fullIndex\n : [props.fullIndex as number]\n : [];\n return (\n <div\n className={classNames('v-flex-layout', `v-flex-${direction}`, props.className)}\n style={props.style}\n onClick={props.onClick}\n >\n {childrens.map((children, index) => {\n const childrenStyle = children.props.style || {};\n const style = fullIndexList.includes(index) ? { flex: 1, ...childrenStyle } : childrenStyle;\n if (index < childrens.length - 1 && gap > 0) {\n if (direction === 'horizontal') {\n style.marginRight = gap;\n } else {\n style.marginBottom = gap;\n }\n }\n return cloneElement(children, { style, key: index });\n })}\n </div>\n );\n};\n","import { CSSProperties, VFC } from 'react';\n\nexport type GapProps = {\n height?: number;\n className?: string;\n style?: CSSProperties;\n};\n\n/**\n * 间隙组件\n * @param props\n * @returns\n */\nexport const Gap: VFC<GapProps> = (props) => {\n return <div style={{ height: props.height, ...props.style }} className={props.className} />;\n};\n","import { classNames } from '@dimjs/utils';\nimport { Tooltip } from 'antd';\nimport { CSSProperties, VFC } from 'react';\nimport './style.less';\n\nexport type IconWrapperProps = {\n hoverTips?: string;\n icon?: React.ReactNode;\n style?: CSSProperties;\n text?: string | React.ReactElement;\n className?: string;\n size?: 'small' | 'middle' | 'large';\n};\nexport const IconWrapper: VFC<IconWrapperProps> = (props) => {\n return (\n <Tooltip title={props.hoverTips}>\n <div\n className={classNames('icon-wrapper', `icon-wrapper-${props.size || 'middle'}`, props.className)}\n style={props.style}\n >\n {props.icon}\n {props.text ? <span className=\"icon-wrapper-text\">{props.text}</span> : null}\n </div>\n </Tooltip>\n );\n};\n","import { ModelType } from '@dimjs/model';\n\nexport interface ModalStateType {\n title?: string;\n /**\n * 显示modal\n */\n visible: boolean;\n /**\n * 用来处理form, `更新`的时候的传递当前item列表行的数据, 当`创建`的时候强制设置为 `undefined`\n */\n itemData?: Record<string, unknown> | null;\n operateType: 'create' | 'update' | 'view';\n pageLoading?: boolean;\n}\n\nexport interface ModalActionsParamType {\n openModalForm: Pick<ModalStateType, 'title' | 'itemData' | 'operateType' | 'pageLoading'>;\n closeModal: void;\n setModalItemData: Record<string, unknown>;\n}\n\n/**\n * @shared\n * 提供公共的modal处理, 通常用来表单编辑, 弹窗抽屉模式.\n * 注意全部理论上只允许一个modal实例存在,如需处理多个, 请自行实例话模型.\n */\nexport const ModalModel: ModelType<ModalStateType, ModalActionsParamType> = {\n actions: {\n openModalForm({ itemData, title, operateType, pageLoading }) {\n return (state) => {\n state.itemData = itemData;\n state.title = title;\n state.operateType = operateType;\n state.pageLoading = pageLoading;\n state.visible = true;\n };\n },\n closeModal() {\n return (state) => {\n state.visible = false;\n };\n },\n setModalItemData(params) {\n return (state) => {\n state.pageLoading = false;\n state.itemData = params;\n };\n },\n },\n state: {\n visible: false,\n title: '',\n operateType: 'view',\n },\n};\n","import { Button, ButtonProps, Space } from 'antd';\nimport { Fragment } from 'react';\n\nexport interface ModalOperationProps {\n loading?: boolean;\n okText?: string;\n cancelText?: string;\n onOk?: () => void;\n onCancel?: () => void;\n hideOkBtn?: boolean;\n okButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n cancelButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n}\n\nexport const ModalOperation = ({\n loading,\n okText = '保存',\n cancelText = '取消',\n onCancel,\n onOk,\n hideOkBtn,\n ...otherProps\n}: ModalOperationProps) => {\n return (\n <Fragment>\n <Space size=\"middle\">\n <Button {...otherProps.cancelButtonProps} className=\"cancel-btn\" onClick={onCancel}>\n {cancelText}\n </Button>\n {hideOkBtn != true && (\n <Button\n type=\"primary\"\n {...otherProps.okButtonProps}\n className=\"ok-btn\"\n onClick={onOk}\n loading={loading}\n >\n {okText}\n </Button>\n )}\n </Space>\n </Fragment>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Modal, ModalProps } from 'antd';\nimport { FC, useEffect } from 'react';\nimport { ModalOperation, ModalOperationProps } from './modal-operation';\nimport './style.less';\n\nexport type ModalFormProps = {\n className?: string;\n // 整个modal页面级的spinning <Page loading />\n pageLoading?: boolean;\n // 设置了 ModalProps footer属性后,operationProps配置将失效\n operationProps?: ModalOperationProps;\n footer?: null | React.ReactNode;\n} & Omit<\n ModalProps,\n | 'footer'\n | 'onOk'\n | 'okText'\n | 'cancelText'\n | 'okButtonProps'\n | 'cancelButtonProps'\n | 'okType'\n | 'confirmLoading'\n>;\n\nconst PageLoader = () => {\n return (\n <div className=\"modal-wraper-loader\">\n <div className=\"loader-wrapper\">\n <div className=\"loader-inner\" />\n <div className=\"loader-text\">LOADING</div>\n </div>\n </div>\n );\n};\n\n/**\n * 弹窗机制\n * ```\n * 1. 默认 destroyOnClose = true\n * 2. 默认 forceRender = false\n * ```\n */\nexport const ModalWraper: FC<ModalFormProps> = (props) => {\n const { pageLoading, className, width, children, footer, operationProps, ...otherProps } = props;\n\n useEffect(() => {\n console.error(\n '@flatbiz/antd库【ModalWraper】组件已经过期,请使用ModalWrapper替换包括ModalWraper=>ModalWrapper、createModalWraperModel=>createModalWrapperModel,如果使用ModalWrapper组件原用法需要调整',\n );\n }, []);\n\n return (\n <Modal\n className={classNames('modal-wraper', className)}\n keyboard={false}\n forceRender={false}\n destroyOnClose={true}\n {...otherProps}\n width={width || 600}\n footer={null}\n >\n <div className=\"modal-wraper-content\">\n {children}\n {pageLoading && <PageLoader />}\n </div>\n {footer !== null && (\n <div className=\"modal-wraper-content-footer\">\n {footer ? footer : <ModalOperation {...operationProps} />}\n </div>\n )}\n </Modal>\n );\n};\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { ModalActionsParamType, ModalModel, ModalStateType } from './modal.model';\n\n/**\n * 组件单词写错,请输入\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst modalModels: Record<string, API<ModelType<ModalStateType, ModalActionsParamType, any>>> = {};\n\n/**\n * modal弹窗模型\n * @param key 唯一值必传\n * @returns\n *\n * ```\n * 使用方式\n * const [modalState, modalActions] = createModalWraperModel('key值').useStore();\n * ```\n */\nexport const createModalWraperModel = (key: string) => {\n if (!modalModels[key]) {\n modalModels[key] = Model(ModalModel);\n }\n return modalModels[key];\n};\n\nexport * from './modal-wraper';\n","import { ModelType } from '@dimjs/model';\n\nexport interface ModalStateType {\n title?: string;\n /**\n * 显示modal\n */\n visible: boolean;\n /**\n * 用来处理form, `更新`的时候的传递当前item列表行的数据, 当`创建`的时候强制设置为 `undefined`\n */\n itemData?: Record<string, unknown> | null;\n operateType: 'create' | 'update' | 'view';\n pageLoading?: boolean;\n}\n\nexport interface ModalActionsParamType {\n openModalForm: Pick<ModalStateType, 'title' | 'itemData' | 'operateType' | 'pageLoading'>;\n closeModal: void;\n setModalItemData: Record<string, unknown>;\n}\n\n/**\n * @shared\n * 提供公共的modal处理, 通常用来表单编辑, 弹窗抽屉模式.\n * 注意全部理论上只允许一个modal实例存在,如需处理多个, 请自行实例话模型.\n */\nexport const ModalModel: ModelType<ModalStateType, ModalActionsParamType> = {\n actions: {\n openModalForm({ itemData, title, operateType, pageLoading }) {\n return (state) => {\n state.itemData = itemData;\n state.title = title;\n state.operateType = operateType;\n state.pageLoading = pageLoading;\n state.visible = true;\n };\n },\n closeModal() {\n return (state) => {\n state.visible = false;\n };\n },\n setModalItemData(params) {\n return (state) => {\n state.pageLoading = false;\n state.itemData = params;\n };\n },\n },\n state: {\n visible: false,\n title: '',\n operateType: 'view',\n },\n};\n","import { Button, ButtonProps, Space } from 'antd';\nimport { Fragment } from 'react';\n\nexport interface ModalOperationOldProps {\n loading?: boolean;\n okText?: string;\n cancelText?: string;\n onOk?: () => void;\n onCancel?: () => void;\n hideOkBtn?: boolean;\n okButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n cancelButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n}\n\nexport const ModalOperation = ({\n loading,\n okText = '保存',\n cancelText = '取消',\n onCancel,\n onOk,\n hideOkBtn,\n ...otherProps\n}: ModalOperationOldProps) => {\n return (\n <Fragment>\n <Space size=\"middle\">\n <Button {...otherProps.cancelButtonProps} className=\"cancel-btn\" onClick={onCancel}>\n {cancelText}\n </Button>\n {hideOkBtn != true && (\n <Button\n type=\"primary\"\n {...otherProps.okButtonProps}\n className=\"ok-btn\"\n onClick={onOk}\n loading={loading}\n >\n {okText}\n </Button>\n )}\n </Space>\n </Fragment>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Modal, ModalProps } from 'antd';\nimport { FC, Fragment } from 'react';\nimport { useEffectCustom } from '../hooks/use-effect-custom';\nimport { ModalOperation, ModalOperationOldProps } from './modal-operation';\nimport './style.less';\n\ntype ModalWrapperStaticMethods = {\n Content: typeof ModalWrapperContent;\n Footer: typeof ModalWrapperFooter;\n};\n\nexport type ModalWrapperProps = {\n className?: string;\n // 整个modal页面级的spinning <Page loading />\n pageLoading?: boolean;\n} & Omit<\n ModalProps,\n | 'footer'\n | 'onOk'\n | 'okText'\n | 'cancelText'\n | 'okButtonProps'\n | 'cancelButtonProps'\n | 'okType'\n | 'confirmLoading'\n>;\n\nconst PageLoader = () => {\n return (\n <div className=\"modal-wrapper-loader\">\n <div className=\"loader-wrapper\">\n <div className=\"loader-inner\" />\n <div className=\"loader-text\">LOADING</div>\n </div>\n </div>\n );\n};\n\nconst ModalWrapperContent: FC<{ operationProps?: ModalOperationOldProps }> = (props) => {\n return (\n <Fragment>\n <div className=\"modal-wrapper-content\">{props.children}</div>\n {props.operationProps ? (\n <ModalWrapperFooter>\n <ModalOperation {...props.operationProps} />\n </ModalWrapperFooter>\n ) : null}\n </Fragment>\n );\n};\n\nconst ModalWrapperFooter = (props) => {\n return <div className=\"modal-wrapper-footer\">{props.children}</div>;\n};\n\n/**\n * 弹窗机制\n * ```\n * 1. 默认 destroyOnClose = true\n * 2. 默认 forceRender = false\n * ```\n */\nexport const ModalWrapper: FC<ModalWrapperProps> & ModalWrapperStaticMethods = (props) => {\n const { pageLoading, className, width, children, ...otherProps } = props;\n\n useEffectCustom(() => {\n if (props['operationProps']) {\n throw new Error('ModalWrapper组件升级,参数operationProps用法变更,请及时更新');\n }\n }, []);\n\n return (\n <Modal\n className={classNames('modal-wrapper', className)}\n keyboard={false}\n forceRender={true}\n destroyOnClose={true}\n {...otherProps}\n width={width || 600}\n footer={null}\n >\n {children}\n {pageLoading && <PageLoader />}\n </Modal>\n );\n};\n\nModalWrapper.Content = ModalWrapperContent;\nModalWrapper.Footer = ModalWrapperFooter;\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { ModalActionsParamType, ModalModel, ModalStateType } from './modal.model';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst modalModels: Record<string, API<ModelType<ModalStateType, ModalActionsParamType, any>>> = {};\n\n/**\n * modal弹窗模型\n * @param key 唯一值必传\n * @returns\n *\n * ```\n * 使用方式\n * const [modalState, modalActions] = createModalWrapperModel('key值').useStore();\n * ```\n */\nexport const createModalWrapperModel = (key: string) => {\n if (!modalModels[key]) {\n modalModels[key] = Model(ModalModel);\n }\n return modalModels[key];\n};\n\nexport * from './modal-wrapper';\n","import { classNames } from '@dimjs/utils';\nimport { CSSProperties, FC } from 'react';\nimport './style.less';\n\nexport type PageFixedFooterProps = {\n className?: string;\n style?: CSSProperties;\n};\n\nexport const PageFixedFooter: FC<PageFixedFooterProps> = (props) => {\n return (\n <div className={classNames('page-fixed-footer', props.className)} style={props.style}>\n {props.children}\n </div>\n );\n};\n","export const Page404 = () => {\n return <div className=\"v-404\">404</div>;\n};\n","import './style.less';\n/**\n * 使用在Form组件上,预定义form-item label宽度\n */\nexport const formClassName = {\n label_width_70: 'form-label-70',\n label_width_80: 'form-label-80',\n label_width_90: 'form-label-90',\n label_width_100: 'form-label-100',\n label_width_110: 'form-label-110',\n label_width_120: 'form-label-120',\n label_width_130: 'form-label-130',\n label_width_auto: 'form-label-auto',\n};\n\n/**\n * 使用在Form.Item组件上,预定义form-item label宽度\n */\nexport const formItemClassName = {\n label_width_70: 'form-item-label-70',\n label_width_80: 'form-item-label-80',\n label_width_90: 'form-item-label-90',\n label_width_100: 'form-item-label-100',\n label_width_110: 'form-item-label-110',\n label_width_120: 'form-item-label-120',\n label_width_130: 'form-item-label-130',\n label_width_auto: 'form-item-label-auto',\n};\n","import { formClassName, formItemClassName } from './form';\n\n/**\n * 预定义className\n * ```\n * form: 使用在Form组件上,设置form-item label宽度\n * formItem: 使用在Form.Item组件上,设置form-item label宽度\n * ```\n */\nexport const preDefinedClassName = {\n form: formClassName,\n formItem: formItemClassName,\n};\n","import { classNames } from '@dimjs/utils';\nimport { CSSProperties, FC, ReactElement } from 'react';\nimport './style.less';\n\nexport type SimpleLayoutProps = {\n className?: string;\n style?: CSSProperties;\n title?: string | ReactElement;\n desc?: string | ReactElement;\n formLabelAlign?: 'left' | 'right';\n layoutType?: 'layer' | 'tight';\n titleLeftLine?: boolean;\n};\n\n/**\n * 简单布局\n * @param props\n * @returns\n * ```\n * 1. layoutType 布局类型\n * layer:分层布局\n * tight:紧凑布局\n * ```\n */\nexport const SimpleLayout: FC<SimpleLayoutProps> = (props) => {\n const labelAlign = props.formLabelAlign || 'right';\n const className = classNames(\n 'simple-layout',\n {\n 'simple-layout-tight': props.layoutType === 'tight',\n 'simple-layout-formlabel-left': labelAlign === 'left',\n },\n props.className,\n );\n\n const titleClassName = classNames('simple-layout-title', {\n 'simple-layout-title-sign': props.titleLeftLine,\n });\n\n return (\n <div className={className} style={props.style}>\n {props.title ? <div className={titleClassName}>{props.title}</div> : null}\n {props.desc ? <div className=\"simple-layout-desc\">{props.desc}</div> : null}\n {props.children ? <div className=\"simple-layout-content\">{props.children}</div> : null}\n </div>\n );\n};\n\nSimpleLayout.defaultProps = {\n titleLeftLine: true,\n layoutType: 'layer',\n};\n","import { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { FC, useEffect, useMemo, useState } from 'react';\n\nexport interface SmsCountDownProps {\n onSendRequest: () => Promise<void>; // 验证码请求函数\n totalTicks?: number; // 总倒计时,默认:60(s)\n duration?: number; // 倒计时间隔,默认:1000ms(1s)\n autoStart?: boolean; // 是否自动开始倒计时,默认:fasle,注意:不会自动调用 onSendRequest\n format?: string; // 倒计时格式化,默认:'{t}s'\n sendTxt?: string; // 文案,默认:'获取验证码'\n sentTxt?: string; // 倒计时完成文案,默认:'重新获取'\n processingTxt?: string; // 倒计时中文案,默认:'发送中...'\n onTick?: (time: number) => void; // 倒计时回调\n className?: string;\n}\nexport const SmsCountDown: FC<SmsCountDownProps> = (props) => {\n const [showMessage, setShowMessage] = useState<string>();\n\n const [running, setRunning] = useState(false);\n const [starting, setStarting] = useState(false);\n\n // 初始化设置有效\n const initConfig = useMemo<Omit<SmsCountDownProps, 'onSendRequest' | 'onTick' | 'className'>>(() => {\n return {\n sendTxt: props.sendTxt,\n sentTxt: props.sentTxt,\n processingTxt: props.processingTxt,\n format: props.format,\n autoStart: props.autoStart,\n totalTicks: props.totalTicks,\n duration: props.duration,\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const format = initConfig.format as string;\n const totalTicks = initConfig.totalTicks as number;\n const duration = initConfig.duration as number;\n\n const countdownFnc = hooks.useCountdownCallback(\n (num) => {\n const second = num / 1000;\n if (num > 0) {\n if (!running) {\n setRunning(true);\n }\n setShowMessage(format.replace('{t}', String(second)));\n props.onTick?.(second);\n } else if (num === 0) {\n setRunning(false);\n setStarting(false);\n props.onTick?.(second);\n setShowMessage(initConfig.sentTxt);\n }\n },\n totalTicks * 1000,\n { intervalTime: duration },\n );\n\n useEffect(() => {\n if (!initConfig.autoStart) {\n setShowMessage(initConfig.sendTxt);\n } else {\n countdownFnc();\n setStarting(true);\n setRunning(true);\n }\n }, [countdownFnc, initConfig]);\n\n const onStart = hooks.useCallbackRef(() => {\n if (running || starting) return;\n setStarting(true);\n setShowMessage(initConfig.processingTxt);\n void props\n .onSendRequest()\n .then(() => {\n setRunning(true);\n countdownFnc();\n })\n .catch(() => {\n setShowMessage(initConfig.sendTxt);\n setStarting(false);\n });\n });\n\n const className = classNames('v-count-down', props.className, {\n running,\n starting,\n });\n\n return (\n <div className={className} onClick={onStart}>\n {showMessage}\n </div>\n );\n};\n\nSmsCountDown.defaultProps = {\n totalTicks: 60,\n duration: 1000,\n autoStart: false,\n format: '{t}s',\n sendTxt: '获取验证码',\n sentTxt: '重新获取',\n processingTxt: '发送中...',\n};\n","import { classNames } from '@dimjs/utils';\nimport { Children, cloneElement, FC } from 'react';\nimport { useEffectCustom } from '../hooks';\nimport './style.less';\n\ntype StaticMethods = {\n Condition: typeof Condition;\n Operate: typeof Operate;\n Table: typeof Table;\n Footer: typeof Footer;\n};\n\nconst overdueConsole = () => {\n console.error('@flatbiz/antd库【TableFilterLayout】组件已经过期,请使用【SimpleLayout】组件替代');\n};\n\nexport type TableFilterLayoutProps = {\n className?: string;\n isFixed?: boolean;\n fullIndex?: number;\n};\n\nexport const TableFilterLayout: FC<TableFilterLayoutProps> & StaticMethods = (props) => {\n useEffectCustom(() => {\n overdueConsole();\n }, []);\n\n return (\n <div\n className={classNames(\n 'table-filter-layout',\n { 'table-filter-layout-flex': props.isFixed },\n props.className,\n )}\n >\n {Children.map(props.children, (item, index) => {\n if (props.isFixed && index === props.fullIndex) {\n return cloneElement(item as JSX.Element, { className: 'table-filter-layout-flex-full' });\n }\n return item;\n })}\n </div>\n );\n};\n\nconst Condition: FC<{ className?: string }> = (props) => {\n return <div className={classNames('table-filter-layout-condition', props.className)}>{props.children}</div>;\n};\n\nconst Operate: FC<{ className?: string }> = (props) => {\n return <div className={classNames('table-filter-layout-operate', props.className)}>{props.children}</div>;\n};\n\nconst Table: FC<{ className?: string }> = (props) => {\n return <div className={classNames('table-filter-layout-table', props.className)}>{props.children}</div>;\n};\nconst Footer: FC<{ className?: string }> = (props) => {\n return <div className={classNames('table-filter-layout-footer', props.className)}>{props.children}</div>;\n};\n\nTableFilterLayout.Condition = Condition;\nTableFilterLayout.Operate = Operate;\nTableFilterLayout.Table = Table;\nTableFilterLayout.Footer = Footer;\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeSelectProps } from 'antd';\n\nexport type ModelState = {\n treeSelectorList: TSetDefaultDefined<TreeSelectProps['treeData'], []>;\n queryIsEmpty: boolean;\n requestStatus?: 'request-pre' | 'request-success' | 'request-error';\n};\n\ntype ModelActionParams = {\n setSelectBoxList: ModelState['treeSelectorList'];\n resetSelectBoxList: void;\n changeRequestStatus: ModelState['requestStatus'];\n};\n\nconst defaultState: ModelState = {\n treeSelectorList: [],\n queryIsEmpty: false,\n};\n\nconst TreeSelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.treeSelectorList = params || [];\n state.requestStatus = 'request-success';\n };\n },\n resetSelectBoxList: () => {\n return (state) => {\n state.treeSelectorList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeSelectorWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, any>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeSelectorWrapperModel('key值').useStore();\n * ```\n */\nexport const treeSelectorWrapperModel = (key: string) => {\n if (!treeSelectorWrapperModels[key]) {\n treeSelectorWrapperModels[key] = Model(TreeSelectorWrapperModel);\n }\n return treeSelectorWrapperModels[key];\n};\n","import { isArray } from '@dimjs/lang';\nimport { TPlainObject, treeLeafParentsArray, treeToTiledArray } from '@flatbiz/utils';\nimport { TreeSelectProps } from 'antd';\n\nexport const getExpandedKeys = (\n value: string | number,\n treeList: TPlainObject[],\n fieldNames?: TreeSelectProps['fieldNames'],\n) => {\n if (!isArray(treeList) || treeList.length === 0) return [];\n const tiledArray = treeToTiledArray(treeList, fieldNames);\n return treeLeafParentsArray(value, tiledArray);\n};\n","import { RedoOutlined } from '@ant-design/icons';\nimport { isArray, isObject } from '@dimjs/lang';\nimport { extend } from '@dimjs/utils';\nimport { useEffectCustom } from '@flatbiz/antd';\nimport { isUndefinedOrNull, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Empty, message, TreeSelect, TreeSelectProps } from 'antd';\nimport { DependencyList, forwardRef, useEffect, useImperativeHandle, useMemo, useState } from 'react';\nimport { ModelState, treeSelectorWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeys } from './utils';\ntype TreeSelectorServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: any) => any;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: any) => TPlainObject[];\n};\n\nexport type TreeSelectorWrapperProps = Omit<\n TreeSelectProps,\n 'treeExpandedKeys' | 'treeData' | 'loading' | 'onTreeExpand'\n> & {\n modelKey: string;\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`treeSelectorList`后无效果\n */\n serviceConfig?: TreeSelectorServiceConfig;\n /**\n * 当设置treeSelectorList后,serviceConfig、onTreeSelectorListChange将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n treeSelectorList?: TreeSelectProps['treeData'];\n /**\n * 通过服务获取数据后回调,当设置`treeSelectorList`后无效果\n */\n onTreeSelectorListChange?: (treeSelectorList?: TreeSelectProps['treeData']) => void;\n /**\n * 添加全部选项\n * ```\n * 1. showAllOption = true,添加默认全部选项(value值为空字符串)\n * 2. 可自定义全部选项,例如:{ label: '全部', value: 'all' }\n * 3. 自定义字段会通过fieldNames转换后使用\n * 4. 多选操作时,最好不要设置全部选项\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n};\n\nexport type TreeSelectorWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeSelectorList: () => TreeSelectProps['treeData'];\n};\n\n/**\n * 树选择器包装组件\n * @param props\n * @returns\n * ```\n * 1. 当设置treeSelectorList属性后,serviceConfig、onTreeSelectorListChange将失效\n * ```\n */\nexport const TreeSelectorWrapper = forwardRef<TreeSelectorWrapperRefApi, TreeSelectorWrapperProps>(\n (props, ref) => {\n const {\n serviceConfig,\n effectDependencyList,\n onTreeSelectorListChange,\n treeSelectorList,\n modelKey,\n ...otherProps\n } = props;\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [loading, setLoading] = useState(false);\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeSelectorWrapperModel(modelKey).useStore();\n const requestPreKey = `request-pre-${props.modelKey}`;\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceResponseHandle = (respData) => {\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n return respDataList;\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n console.warn(`TreeSelectorWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-pre');\n const _respData = await newServiceConfig.onRequest?.(params);\n const respData = serviceResponseHandle(_respData) as TreeSelectProps['treeData'];\n setLoading(false);\n window[requestPreKey] = false;\n void actions.setSelectBoxList(respData || []);\n } catch (error) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n }\n } catch (error) {\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n });\n\n useEffectCustom(() => {\n if (state.treeSelectorList && state.requestStatus === 'request-success') {\n onTreeSelectorListChange?.(state.treeSelectorList);\n }\n }, [state.treeSelectorList, state.requestStatus]);\n\n useEffectCustom(() => {\n if (treeSelectorList) {\n void actions.setSelectBoxList(treeSelectorList);\n return;\n }\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n const realTimeState = treeSelectorWrapperModel(modelKey).getState();\n console.log('realTimeState', realTimeState.requestStatus);\n if (\n newEffectDependencyList.length > 0 ||\n (!window[requestPreKey] && realTimeState.requestStatus !== 'request-success')\n ) {\n void startDataSourceRequest();\n }\n }, newEffectDependencyList);\n\n useEffect(() => {\n if (!isUndefinedOrNull(props.value)) {\n const valueList = isArray(props.value) ? props.value : [props.value];\n if (valueList.length > 0 && state.treeSelectorList.length > 0) {\n let expandedKeys = [] as Array<string | number>;\n valueList.forEach((tempValue) => {\n const targetList = getExpandedKeys(\n tempValue as string | number,\n state.treeSelectorList,\n props.fieldNames,\n );\n expandedKeys = expandedKeys.concat(targetList.map((item) => item.value));\n });\n setTreeExpandedKeys((prev) => {\n const mergeList = expandedKeys.concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n }\n }\n }, [state.treeSelectorList, props.fieldNames, props.value]);\n\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.setSelectBoxList([]);\n },\n getTreeSelectorList: () => {\n return state.treeSelectorList;\n },\n };\n });\n\n const onTreeExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n const treeData = useMemo(() => {\n if (state.treeSelectorList.length === 0) return undefined;\n const fieldNames = { label: 'label', value: 'value', ...props.fieldNames };\n if (props.showAllOption === true) {\n const selectOptionsAll = {\n [`${fieldNames.label}`]: '全部',\n [`${fieldNames.value}`]: '',\n } as unknown as ModelState['treeSelectorList'][0];\n return [selectOptionsAll, ...state.treeSelectorList];\n } else if (isObject(props.showAllOption)) {\n return [\n props.showAllOption as unknown as ModelState['treeSelectorList'][0],\n ...state.treeSelectorList,\n ];\n }\n return state.treeSelectorList;\n }, [props.fieldNames, props.showAllOption, state.treeSelectorList]);\n\n return (\n <TreeSelect\n dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}\n showSearch={true}\n treeLine={true}\n {...otherProps}\n value={isUndefinedOrNull(props.value) ? undefined : props.value}\n treeExpandedKeys={treeExpandedKeys}\n treeData={treeData}\n loading={loading}\n onTreeExpand={onTreeExpand}\n style={{ width: '100%', ...otherProps.style }}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n notFoundContent={\n <NotFoundContent requestStatus={state.requestStatus} onAgainRequest={onAgainRequest} />\n }\n />\n );\n },\n);\n\nconst NotFoundContent = (props: {\n requestStatus?: ModelState['requestStatus'];\n onAgainRequest: () => void;\n}) => {\n const description = useMemo(() => {\n if (props.requestStatus === 'request-error') {\n return '数据查询异常';\n } else if (props.requestStatus === 'request-success') {\n return '暂无数据';\n }\n return '数据查询中';\n }, [props.requestStatus]);\n return (\n <Empty\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n description={description}\n className={'tree-selector-wrapper-empty'}\n >\n {props.requestStatus === 'request-error' && (\n <Button type=\"primary\" onClick={props.onAgainRequest}>\n 重新获取数据\n </Button>\n )}\n </Empty>\n );\n};\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeProps } from 'antd';\n\nexport type ModelState = {\n treeList: TSetDefaultDefined<TreeProps['treeData'], []>;\n queryIsEmpty: boolean;\n requestStatus?: 'request-pre' | 'request-success' | 'request-error';\n};\n\ntype ModelActionParams = {\n setTreeList: ModelState['treeList'];\n resetTreeList: void;\n changeRequestStatus: ModelState['requestStatus'];\n};\n\nconst defaultState: ModelState = {\n treeList: [],\n queryIsEmpty: false,\n};\n\nconst TreeWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setTreeList: (params) => {\n return (state) => {\n state.treeList = params || [];\n state.requestStatus = 'request-success';\n };\n },\n resetTreeList: () => {\n return (state) => {\n state.treeList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, any>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeWrapperModel('key值').useStore();\n * ```\n */\nexport const treeWrapperModel = (key: string) => {\n if (!treeWrapperModels[key]) {\n treeWrapperModels[key] = Model(TreeWrapperModel);\n }\n return treeWrapperModels[key];\n};\n","import { TPlainObject, treeLeafParentsArray, treeToTiledArray } from '@flatbiz/utils';\n\nexport const getExpandedKeys = (\n value: string | number,\n treeList: TPlainObject[],\n fieldNames?: { label?: string; value?: string; children?: string },\n) => {\n const tiledArray = treeToTiledArray(treeList, fieldNames);\n return treeLeafParentsArray(value, tiledArray);\n};\n","import { isArray } from '@dimjs/lang';\nimport { extend } from '@dimjs/utils';\nimport { useEffectCustom } from '@flatbiz/antd';\nimport { isUndefinedOrNull, TPlainObject, treeToTiledArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Empty, message, Spin, Tree, TreeProps } from 'antd';\nimport { DependencyList, forwardRef, useImperativeHandle, useMemo, useState } from 'react';\nimport { ModelState, treeWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeys } from './utils';\n\ntype TreeServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: any) => any;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: any) => TPlainObject[];\n};\n\nexport type TreeWrapperProps = Omit<\n TreeProps,\n | 'expandedKeys'\n | 'treeData'\n | 'onExpand'\n | 'selectedKeys'\n | 'checkedKeys'\n | 'onCheck'\n | 'onSelect'\n | 'defaultCheckedKeys'\n | 'defaultSelectedKeys'\n | 'fieldNames'\n> & {\n modelKey: string;\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n /**\n * 当设置selectorTreeList后,serviceConfig将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n selectorTreeList?: TreeProps['treeData'];\n value?: string | number | Array<string | number>;\n onChange?: (selectedKey: string | number | Array<string | number>) => void;\n fieldNames?: { label?: string; value?: string; children?: string };\n /**\n * 打开tree折叠过滤关键字\n */\n filterLabel?: string;\n};\n\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\n};\n\n/**\n * 树包装组件\n * @param props\n * @returns\n * ```\n * 1. 当设置selectorTreeList属性后,serviceConfig将失效\n * ```\n */\nexport const TreeWrapper = forwardRef<TreeWrapperRefApi, TreeWrapperProps>((props, ref) => {\n const {\n serviceConfig,\n effectDependencyList,\n selectorTreeList,\n value,\n onChange,\n fieldNames,\n modelKey,\n ...otherProps\n } = props;\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeWrapperModel(modelKey).useStore();\n const [loading, setLoading] = useState(false);\n\n const valueList = useMemo(() => {\n if (isUndefinedOrNull(props.value)) return undefined;\n return (isArray(props.value) ? props.value : [props.value]) as Array<string | number>;\n }, [props.value]);\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceResponseHandle = (respData) => {\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n return respDataList;\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n console.warn(`TreeWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n void actions.changeRequestStatus('request-pre');\n const _respData = await newServiceConfig.onRequest?.(params);\n const respData = serviceResponseHandle(_respData) as TreeProps['treeData'];\n void actions.setTreeList(respData || []);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n void actions.changeRequestStatus('request-error');\n }\n } catch (error) {\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n });\n\n useEffectCustom(() => {\n if (selectorTreeList) {\n void actions.setTreeList(selectorTreeList);\n return;\n }\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n const realTimeState = treeWrapperModel(modelKey).getState();\n if (\n newEffectDependencyList.length > 0 ||\n !realTimeState.requestStatus ||\n realTimeState.requestStatus === 'request-error'\n ) {\n void startDataSourceRequest();\n }\n }, newEffectDependencyList);\n\n useEffectCustom(() => {\n if (valueList && valueList.length > 0 && state.treeList.length > 0 && !treeExpandedKeys) {\n let expandedKeys = [] as Array<string | number>;\n valueList.forEach((tempValue) => {\n const targetList = getExpandedKeys(tempValue, state.treeList, props.fieldNames);\n expandedKeys = expandedKeys.concat(targetList.map((item) => item.value));\n });\n setTreeExpandedKeys((prev) => {\n const mergeList = expandedKeys.concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n }\n }, [state.treeList, props.fieldNames, value]);\n\n hooks.useUpdateEffect(() => {\n if (props.filterLabel) {\n const tiledArray = treeToTiledArray(state.treeList || [], props.fieldNames);\n const targetList = tiledArray.filter((item) => item.label?.includes(props.filterLabel || ''));\n let expandedKeys = [] as Array<string | number>;\n targetList.map((tempItem) => {\n const targetValues = getExpandedKeys(\n tempItem.value as string,\n state.treeList || [],\n props.fieldNames,\n );\n const valueList = targetValues.map((item) => item.value);\n expandedKeys = expandedKeys.concat(valueList);\n });\n setTreeExpandedKeys(Array.from(new Set(expandedKeys)));\n } else {\n setTreeExpandedKeys([]);\n }\n }, [props.filterLabel]);\n\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.resetTreeList();\n },\n getTreeDataList: () => {\n return state.treeList;\n },\n };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n const onCheck = hooks.useCallbackRef((checkedKeys) => {\n onChange?.(checkedKeys as Array<string | number>);\n });\n const onSelect = hooks.useCallbackRef((checkedKeys) => {\n if (props.multiple) {\n onChange?.(checkedKeys as Array<string | number>);\n } else {\n onChange?.(checkedKeys[0] as string | number);\n }\n });\n\n const treeFieldNames = useMemo(() => {\n const newFieldNames = extend({ label: 'label', value: 'value', children: 'children' }, fieldNames);\n return { title: newFieldNames.label, key: newFieldNames.value, children: newFieldNames.children };\n }, [fieldNames]);\n\n if (state.treeList.length > 0) {\n return (\n <Tree\n showLine={otherProps.checkable ? false : { showLeafIcon: false }}\n {...otherProps}\n fieldNames={treeFieldNames}\n expandedKeys={treeExpandedKeys}\n treeData={state.treeList}\n onExpand={onExpand}\n selectedKeys={otherProps.checkable ? undefined : valueList}\n checkedKeys={otherProps.checkable ? valueList : undefined}\n onCheck={otherProps.checkable ? onCheck : undefined}\n onSelect={otherProps.checkable ? undefined : onSelect}\n style={{ width: '100%', ...otherProps.style }}\n />\n );\n }\n\n return (\n <NotFoundContent\n requestStatus={state.requestStatus}\n loading={loading}\n onAgainRequest={startDataSourceRequest}\n />\n );\n});\n\nconst NotFoundContent = (props: {\n requestStatus?: ModelState['requestStatus'];\n onAgainRequest: () => void;\n loading: boolean;\n}) => {\n const description = useMemo(() => {\n if (props.requestStatus === 'request-error') {\n return '数据查询异常';\n } else if (props.requestStatus === 'request-success') {\n return '暂无数据';\n }\n return '数据查询中';\n }, [props.requestStatus]);\n return (\n <div className=\"tree-wrapper-empty\">\n <Spin spinning={props.loading}></Spin>\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={description}>\n {props.requestStatus === 'request-error' && (\n <Button type=\"primary\" onClick={props.onAgainRequest}>\n 重新获取数据\n </Button>\n )}\n </Empty>\n </div>\n );\n};\n"],"names":["styles","noop","getPermissionList","_getGlobalData","getGlobalData","elemAclLimits","permissionList","_isArray","hasPermission","name","includes","Permission","props","_jsx","Fragment","children","ButtonOperate","className","Space","split","Divider","type","size","wrap","_isUndefined","operateList","map","item","index","text","color","onClick","permission","needConfirm","confirmMessage","hidden","style","otherProps","_excluded","newStyle","_extends","Popconfirm","title","okText","cancelText","onConfirm","arrowPointAtCenter","Button","undefined","danger","_createElement","key","defaultProps","DatePickerWrapper","value","onChange","format","useMemo","showTime","onChangeDate","_hooks","useCallbackRef","moment","getDisabledDate","current","currentDate","disabledDateConfig","minDate","maxDate","isBefore","isAfter","datePickerValue","flatbizDate","dateNormalize","DatePicker","disabledDate","width","DateRangePickerWrapper","_useState","useState","startEndDateList","setStartEndDateList","values","value1","_ref","value2","onCalendarChange","data","maxDays","startDate","endDate","selectableMaxDate","clone","add","selectableMinDate","subtract","date1","_ref2","date2","rangePickerValue","newDate1","newDate2","RangePicker","DrawerModel","actions","openDrawerForm","itemData","operateType","pageLoading","state","visible","closeDrawer","setDrawerItemData","params","DrawerOperation","_jsxs","cancelButtonProps","onCancel","hideOkBtn","icon","_SaveOutlined","okButtonProps","onOk","loading","PageLoader","DrawerWraper","_props$width","footer","operationProps","useEffect","console","error","Drawer","_classNames","keyboard","forceRender","destroyOnClose","contentWrapperStyle","maxWidth","drawerModels","createDrawerWraperModel","Model","useEffectCustom","fn","deps","useEffectCustomAsync","asyncFunction","Promise","$return","$error","then","$await_1","$boundEx","DrawerWrapperContent","DrawerWrapperFooter","DrawerWrapper","Error","Content","Footer","createDrawerWrapperModel","getEditable","editable","tableRowIndex","CheckboxGroupFormItemContent","fieldConfig","editableConfig","render","editableComptProps","viewLabelList","options","length","label","returnList","forEach","target","find","temp","push","Checkbox","Group","tag","Tag","CheckboxGroupFormItem","formItemProps","Form","Item","DatePickerWrapperFormItem","FormItemContent","viewLabel","join","DateRangePickerWrapperFormItem","InputFormItem","Input","InputNumberFormItem","InputNumber","RadioGroupFormItemContent","e","Radio","RadioGroupFormItem","defaultState","selectorList","originalSelectorList","queryIsEmpty","requestStatus","_SelectorWrapperModel","setSelectBoxList","resetSelectBoxList","changeRequestStatus","selectorWrapperModels","selectorWrapperModel","SelectorWrapper","forwardRef","ref","serviceConfig","showAllOption","effectDependencyList","onSelectorListChange","searchFieldName","modelKey","fieldNames","isSearch","newServiceConfig","newEffectDependencyList","changeOperateValueRef","useRef","setLoading","_selectorWrapperModel","useStore","requestPreKey","valueIsEmpty","isUndefinedOrNull","serviceRespDataAdapter","respData","respDataList","onRequestResultAdapter","startDataSourceRequest","inputValue","searchId","requiredParamsKeys","_params","isEmpty","keyword","_respData","respAdapterData","respDataTranslation","$Try_1_Post","$Try_1_Catch","message","onRequest","_extend","warn","$Try_2_Post","$Try_2_Catch","window","$await_3","arrayField2LabelValue","realTimeState","getState","concat","useImperativeHandle","onClearSelectorList","getSelectorList","filterOption","input","option","toLowerCase","indexOf","onSearch","useDebounceCallback","_len","arguments","otherParams","Array","_key","onAgainRequest","selectOptionsAll","Select","Option","showSearch","allowClear","notFoundContent","NotFoundContent","suffixIcon","_RedoOutlined","spin","onLabelRenderAdapter","description","Empty","image","PRESENTED_IMAGE_SIMPLE","setSelectorList","_useState2","setviewLabelList","String","dataList","display","SelectorWrapperFormItem","FormItemTextContent","_props$fieldConfig2","_props$fieldConfig3","_props$fieldConfig","isBaseData","_isString","_isNumber","_isBoolean","JSON","stringify","TextFormItem","noStyle","TextAreaFormItem","TextArea","UploadWrapper","onUploadError","uploadList","setUploadList","uid","url","onUploadChange","info","fileList","file","status","response","code","result","maxCount","targetList","targetIndex","findIndex","tempUid","splice","Upload","disabled","UploadTrigger","listType","marginTop","ghost","UploadWrapperFormItemContent","_objectWithoutPropertiesLoose","_editableComptProps","UploadWrapperFormItem","FormItemAdapter","newEditable","commomProps","completeName","FormList","from","useFormInstance","formListConfig","onFormListBeforeRender","editableConfigList","onFormListAfterRender","onFormListItemBeforeRender","onFormListItemAfterRender","deleteOperateRender","List","fields","remove","_Fragment","getFieldValue","fieldChild","hasEditable","formListItemIndex","fieldItem","fieldName","DeleteFormListItem","_DeleteOutlined","FormListItem","EditableTable","_props$tableProps2","columns","columnItem","operateRender","otherColumnItem","onCell","_props$tableProps","valign","tableProps","cellVerticalAlign","_value","record","operation","dataIndex","rules","formListOperation","onTableBeforeRender","Table","scroll","x","pagination","dataSource","rowKey","onTableAfterRender","block","_PlusOutlined","FileImport","onImportFinish","showUploadList","accept","FileUpload","onPreview","uploadValue","setUploadValue","fileKey","fileName","thumbUrl","uploadItem","respValue","onUploadPreview","FlexLayout","childrens","direction","gap","fullIndexList","fullIndex","childrenStyle","flex","marginRight","marginBottom","cloneElement","Gap","height","IconWrapper","Tooltip","hoverTips","ModalModel","openModalForm","closeModal","setModalItemData","ModalOperation","_ref$okText","_ref$cancelText","ModalWraper","Modal","modalModels","createModalWraperModel","ModalWrapperContent","ModalWrapperFooter","ModalWrapper","createModalWrapperModel","PageFixedFooter","Page404","formClassName","label_width_70","label_width_80","label_width_90","label_width_100","label_width_110","label_width_120","label_width_130","label_width_auto","formItemClassName","preDefinedClassName","form","formItem","SimpleLayout","labelAlign","formLabelAlign","layoutType","titleClassName","titleLeftLine","desc","SmsCountDown","showMessage","setShowMessage","running","setRunning","starting","_useState3","setStarting","initConfig","sendTxt","sentTxt","processingTxt","autoStart","totalTicks","duration","countdownFnc","useCountdownCallback","num","second","replace","onTick","intervalTime","onStart","onSendRequest","catch","overdueConsole","TableFilterLayout","isFixed","Children","Condition","Operate","treeSelectorList","TreeSelectorWrapperModel","treeSelectorWrapperModels","treeSelectorWrapperModel","getExpandedKeys","treeList","tiledArray","treeToTiledArray","treeLeafParentsArray","TreeSelectorWrapper","onTreeSelectorListChange","treeExpandedKeys","setTreeExpandedKeys","_treeSelectorWrapperM","serviceResponseHandle","_respData2","log","valueList","expandedKeys","tempValue","prev","mergeList","Set","getTreeSelectorList","onTreeExpand","treeData","_selectOptionsAll","_isObject","TreeSelect","dropdownStyle","maxHeight","overflow","treeLine","TreeWrapperModel","setTreeList","resetTreeList","treeWrapperModels","treeWrapperModel","TreeWrapper","selectorTreeList","_treeWrapperModel$use","useUpdateEffect","filterLabel","filter","_item$label","tempItem","targetValues","getTreeDataList","onExpand","onCheck","checkedKeys","onSelect","multiple","treeFieldNames","newFieldNames","Tree","showLine","checkable","showLeafIcon","selectedKeys","Spin","spinning"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/01-styles/index.ts","@flatbiz/antd/src/permission/index.tsx","@flatbiz/antd/src/button-operate/index.tsx","@flatbiz/antd/src/date-picker-wrapper/index.tsx","@flatbiz/antd/src/date-range-picker-wrapper/index.tsx","@flatbiz/antd/src/drawer-wraper/drawer.model.ts","@flatbiz/antd/src/drawer-wraper/drawer-operation.tsx","@flatbiz/antd/src/drawer-wraper/drawer-wraper.tsx","@flatbiz/antd/src/drawer-wraper/index.ts","@flatbiz/antd/src/drawer-wrapper/drawer.model.ts","@flatbiz/antd/src/hooks/use-effect-custom.ts","@flatbiz/antd/src/hooks/use-effect-custom-async.ts","@flatbiz/antd/src/drawer-wrapper/drawer-operation.tsx","@flatbiz/antd/src/drawer-wrapper/drawer-wrapper.tsx","@flatbiz/antd/src/drawer-wrapper/index.ts","@flatbiz/antd/src/editable-table/utils.ts","@flatbiz/antd/src/editable-table/form-item/checkbox-group.tsx","@flatbiz/antd/src/editable-table/form-item/date-picker-wrapper.tsx","@flatbiz/antd/src/editable-table/form-item/date-range-picker-wrapper.tsx","@flatbiz/antd/src/editable-table/form-item/input.tsx","@flatbiz/antd/src/editable-table/form-item/input-number.tsx","@flatbiz/antd/src/editable-table/form-item/radio-group.tsx","@flatbiz/antd/src/selector-wrapper/model.ts","@flatbiz/antd/src/selector-wrapper/index.tsx","@flatbiz/antd/src/editable-table/form-item/selector-wrapper.tsx","@flatbiz/antd/src/editable-table/form-item/text.tsx","@flatbiz/antd/src/editable-table/form-item/textarea.tsx","@flatbiz/antd/src/upload-wrapper/index.tsx","@flatbiz/antd/src/editable-table/form-item/upload-wrapper.tsx","@flatbiz/antd/src/editable-table/form-item/index.tsx","@flatbiz/antd/src/editable-table/form-list-item/form-list.tsx","@flatbiz/antd/src/editable-table/form-list-item/index.tsx","@flatbiz/antd/src/editable-table/index.tsx","@flatbiz/antd/src/file-import/index.tsx","@flatbiz/antd/src/file-upload/index.tsx","@flatbiz/antd/src/flex-layout/index.tsx","@flatbiz/antd/src/gap/index.tsx","@flatbiz/antd/src/icon-wrapper/index.tsx","@flatbiz/antd/src/modal-wraper/modal.model.ts","@flatbiz/antd/src/modal-wraper/modal-operation.tsx","@flatbiz/antd/src/modal-wraper/modal-wraper.tsx","@flatbiz/antd/src/modal-wraper/index.ts","@flatbiz/antd/src/modal-wrapper/modal.model.ts","@flatbiz/antd/src/modal-wrapper/modal-operation.tsx","@flatbiz/antd/src/modal-wrapper/modal-wrapper.tsx","@flatbiz/antd/src/modal-wrapper/index.ts","@flatbiz/antd/src/page-fixed-footer/index.tsx","@flatbiz/antd/src/page404/index.tsx","@flatbiz/antd/src/pre-defined-classname/form/index.tsx","@flatbiz/antd/src/pre-defined-classname/index.ts","@flatbiz/antd/src/simple-layout/index.tsx","@flatbiz/antd/src/sms-count-down/index.tsx","@flatbiz/antd/src/table-filter-layout/index.tsx","@flatbiz/antd/src/tree-selector-wrapper/model.ts","@flatbiz/antd/src/tree-selector-wrapper/utils.ts","@flatbiz/antd/src/tree-selector-wrapper/index.tsx","@flatbiz/antd/src/tree-wrapper/model.ts","@flatbiz/antd/src/tree-wrapper/utils.ts","@flatbiz/antd/src/tree-wrapper/index.tsx"],"sourcesContent":["import { noop } from '@flatbiz/utils';\nimport './1_root.less';\nimport './2_base.less';\n\nexport const styles = noop;\n","import { isArray } from '@dimjs/lang';\nimport { getGlobalData } from '@flatbiz/utils';\nimport { FC, Fragment } from 'react';\n\nexport const getPermissionList = () => {\n const { elemAclLimits } = getGlobalData();\n const permissionList: string[] = isArray(elemAclLimits) ? elemAclLimits : [];\n return permissionList;\n};\n\nexport const hasPermission = (name: string) => {\n const permissionList = getPermissionList();\n if (permissionList.includes(name)) {\n return true;\n }\n return false;\n};\n\nexport interface PermissionProps {\n name: string;\n}\nexport const Permission: FC<PermissionProps> = (props) => {\n const permissionList = getPermissionList();\n if (permissionList.includes(props.name)) {\n return <Fragment>{props.children}</Fragment>;\n }\n return null;\n};\n","import { isUndefined } from '@dimjs/lang';\nimport { Button, ButtonProps, Divider, Popconfirm, Space, SpaceProps } from 'antd';\nimport { VFC } from 'react';\nimport { hasPermission } from '../permission';\nimport './style.less';\n\nexport interface ButtonOperateItem extends ButtonProps {\n text: string;\n color?: string;\n onClick: () => void;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n}\n\nexport interface ButtonOperateProps {\n operateList: Array<ButtonOperateItem | null>;\n wrap?: boolean;\n size?: SpaceProps['size'];\n}\n\nexport const ButtonOperate: VFC<ButtonOperateProps> = (props) => {\n return (\n <div className=\"table-operate\">\n <Space\n split={<Divider type=\"vertical\" />}\n size={props.size}\n wrap={isUndefined(props.wrap) ? true : props.wrap}\n >\n {props.operateList.map((item, index) => {\n if (!item) return null;\n const {\n text,\n color,\n onClick,\n permission,\n needConfirm,\n confirmMessage,\n hidden,\n style,\n ...otherProps\n } = item;\n if (hidden) return null;\n if (permission && !hasPermission(permission)) return null;\n const newStyle = color ? { color, ...style } : style;\n const type = item.type || 'link';\n if (needConfirm) {\n return (\n <Popconfirm\n title={confirmMessage}\n okText=\"确定\"\n cancelText=\"取消\"\n onConfirm={onClick}\n arrowPointAtCenter={true}\n key={index}\n >\n <Button {...otherProps} onClick={undefined} type={type} danger style={newStyle}>\n {text}\n </Button>\n </Popconfirm>\n );\n }\n return (\n <Button {...otherProps} type={type} style={newStyle} key={index} onClick={onClick}>\n {text}\n </Button>\n );\n })}\n </Space>\n </div>\n );\n};\n\nButtonOperate.defaultProps = {\n size: 0,\n};\n","import { flatbizDate } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { DatePicker } from 'antd';\nimport { PickerDateProps } from 'antd/lib/date-picker/generatePicker';\nimport moment from 'moment';\nimport { useMemo, VFC } from 'react';\n\nexport type DatePickerWrapperProps = Omit<PickerDateProps<moment.Moment>, 'value' | 'onChange'> & {\n value?: string;\n onChange?: (value?: string) => void;\n /**\n * minDate、maxDate设置格式:YYYY-MM-DD\n */\n disabledDateConfig?: {\n minDate?: string;\n maxDate?: string;\n };\n};\n\n/**\n * DatePicker包装组件\n * ```\n * 1. value类型为 string\n * 2. onChange返回类型 string\n * 3. 默认格式化类型 YYYY-MM-DD; 当showTime===true时,默认格式化类型YYYY-MM-DD HH:mm:ss\n * 4. 其他格式化类型自定义format\n * ```\n */\nexport const DatePickerWrapper: VFC<DatePickerWrapperProps> = (props) => {\n const { value, onChange, style, ...otherProps } = props;\n const format = useMemo(() => {\n if (props.format) return props.format as string;\n if (props.showTime) return 'YYYY-MM-DD HH:mm:ss';\n return 'YYYY-MM-DD';\n }, [props.showTime, props.format]);\n\n const onChangeDate = hooks.useCallbackRef((value) => {\n if (value) {\n onChange?.(moment(value).format(format));\n } else {\n onChange?.(undefined);\n }\n });\n\n const getDisabledDate = hooks.useCallbackRef((current) => {\n const currentDate = moment(current.format('YYYY-MM-DD'));\n if (!props.disabledDateConfig) {\n return false;\n }\n const { minDate, maxDate } = props.disabledDateConfig;\n if (minDate && maxDate) {\n if (currentDate.isBefore(minDate) || currentDate.isAfter(maxDate)) {\n return true;\n }\n } else if (minDate) {\n if (currentDate.isAfter(minDate)) {\n return true;\n }\n } else if (maxDate) {\n if (currentDate.isBefore(minDate)) {\n return true;\n }\n }\n return false;\n });\n\n const datePickerValue = useMemo(() => {\n if (value) {\n return moment(flatbizDate.dateNormalize(value));\n }\n return undefined;\n }, [value]);\n\n return (\n <DatePicker\n disabledDate={getDisabledDate}\n {...otherProps}\n style={{ width: '100%', ...style }}\n value={datePickerValue}\n onChange={onChangeDate}\n />\n );\n};\n","import { flatbizDate } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { DatePicker } from 'antd';\nimport { RangePickerDateProps } from 'antd/lib/date-picker/generatePicker';\nimport moment from 'moment';\nimport { useMemo, useState, VFC } from 'react';\n\nexport type DateRangePickerWrapperProps = Omit<RangePickerDateProps<moment.Moment>, 'value' | 'onChange'> & {\n value?: [string, string];\n onChange?: (value?: [string, string]) => void;\n /**\n * 1. minDate、maxDate设置格式:YYYY-MM-DD\n * 2. maxDays 最大可选的天数\n */\n disabledDateConfig?: {\n minDate?: string;\n maxDate?: string;\n maxDays?: number;\n };\n};\n\n/**\n * DatePicker.RangePicker包装组件\n * ```\n * TODO: 引用DatePicker.RangePicker TS有问题,待解决\n * 1. value类型为 [string, string]\n * 2. onChange返回类型 [string, string]\n * 3. 默认格式化类型 YYYY-MM-DD; 当showTime===true时,默认格式化类型YYYY-MM-DD HH:mm:ss\n * 4. 其他格式化类型自定义format\n * 5. 可设置disabledDateConfig,来控制日期项的disbaled状态\n * ```\n */\nexport const DateRangePickerWrapper: VFC<DateRangePickerWrapperProps> = (props) => {\n const { value, onChange, style, ...otherProps } = props;\n const [startEndDateList, setStartEndDateList] = useState<Array<moment.Moment | null>>();\n\n const format = useMemo(() => {\n if (props.format) return props.format as string;\n if (props.showTime === true) return 'YYYY-MM-DD HH:mm:ss';\n return 'YYYY-MM-DD';\n }, [props.showTime, props.format]);\n\n const onChangeDate = hooks.useCallbackRef((values) => {\n if (values) {\n const [value1, value2] = values || [];\n onChange?.([moment(value1).format(format), moment(value2).format(format)]);\n } else {\n onChange?.(undefined);\n }\n });\n\n const onCalendarChange = hooks.useCallbackRef((data) => {\n if (props.disabledDateConfig) {\n setStartEndDateList(data);\n }\n });\n\n const getDisabledDate = hooks.useCallbackRef((current) => {\n const currentDate = moment(current.format('YYYY-MM-DD'));\n if (!props.disabledDateConfig) {\n return false;\n }\n const { maxDays, minDate, maxDate } = props.disabledDateConfig;\n if (minDate && maxDate) {\n if (currentDate.isBefore(minDate) || currentDate.isAfter(maxDate)) {\n return true;\n }\n } else if (minDate) {\n if (currentDate.isBefore(minDate)) {\n return true;\n }\n } else if (maxDate) {\n if (currentDate.isAfter(maxDate)) {\n return true;\n }\n }\n\n if (!startEndDateList || !maxDays) {\n return false;\n }\n\n const startDate = startEndDateList[0] ? moment(startEndDateList[0].format('YYYY-MM-DD')) : undefined;\n const endDate = startEndDateList[1] ? moment(startEndDateList[1].format('YYYY-MM-DD')) : undefined;\n\n const selectableMaxDate = startDate ? startDate.clone().add(maxDays - 1, 'd') : endDate;\n // if (maxDate && moment(maxDate).isBefore(selectableMaxDate)) {\n // selectableMaxDate = moment(maxDate);\n // }\n\n const selectableMinDate = endDate ? endDate.clone().subtract(maxDays - 1, 'd') : startDate;\n // if (minDate && moment(minDate).isAfter(selectableMinDate)) {\n // selectableMinDate = moment(minDate);\n // }\n return currentDate.isBefore(selectableMinDate) || currentDate.isAfter(selectableMaxDate);\n });\n\n const [date1, date2] = value || [];\n const rangePickerValue = useMemo(() => {\n if (date1 && date2) {\n const newDate1 = flatbizDate.dateNormalize(date1);\n const newDate2 = flatbizDate.dateNormalize(date2);\n return [moment(newDate1), moment(newDate2)];\n }\n return undefined;\n }, [date1, date2]);\n return (\n <DatePicker.RangePicker\n disabledDate={getDisabledDate}\n onCalendarChange={onCalendarChange}\n {...otherProps}\n style={{ width: '100%', ...style }}\n value={rangePickerValue as [moment.Moment, moment.Moment]}\n onChange={onChangeDate}\n />\n );\n};\n","import { ModelType } from '@dimjs/model';\n\nexport interface DrawerStateType {\n title: string;\n /**\n * 显示drawer\n */\n visible: boolean;\n /**\n * 用来处理form, `更新`的时候的传递当前item列表行的数据, 当`创建`的时候强制设置为 `undefined`\n */\n itemData?: Record<string, any>;\n operateType: 'create' | 'update' | 'view' | null;\n pageLoading?: boolean;\n}\n\nexport interface DrawerActionsParamType {\n openDrawerForm: Pick<DrawerStateType, 'title' | 'itemData' | 'operateType' | 'pageLoading'>;\n closeDrawer: void;\n setDrawerItemData: Record<string, any>;\n}\n\n/**\n * @shared\n * 提供公共的drawer处理, 通常用来表单编辑, 弹窗抽屉模式.\n * 注意全部理论上只允许一个drawer实例存在,如需处理多个, 请自行实例话模型.\n */\nexport const DrawerModel: ModelType<DrawerStateType, DrawerActionsParamType> = {\n actions: {\n openDrawerForm({ itemData, title, operateType, pageLoading }) {\n return (state) => {\n state.itemData = itemData;\n state.title = title;\n state.operateType = operateType;\n state.pageLoading = pageLoading;\n state.visible = true;\n };\n },\n closeDrawer() {\n return (state) => {\n state.visible = false;\n };\n },\n setDrawerItemData(params) {\n return (state) => {\n state.pageLoading = false;\n state.itemData = params;\n };\n },\n },\n state: {\n visible: false,\n title: '',\n operateType: null,\n },\n};\n","import { SaveOutlined } from '@ant-design/icons';\nimport { Button, ButtonProps, Space } from 'antd';\n\nexport interface DrawerOperationOldProps {\n loading?: boolean;\n okText?: string;\n cancelText?: string;\n onOk?: () => void;\n onCancel?: () => void;\n hideOkBtn?: boolean;\n okButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n cancelButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n}\n\nexport const DrawerOperation = (props: DrawerOperationOldProps) => {\n return (\n <div className=\"fixed-bottom-block\">\n <Space size=\"middle\">\n <Button {...props.cancelButtonProps} className=\"cancel-btn\" onClick={props.onCancel}>\n {props.cancelText || '取消'}\n </Button>\n {props.hideOkBtn != true && (\n <Button\n type=\"primary\"\n icon={<SaveOutlined />}\n {...props.okButtonProps}\n className=\"ok-btn\"\n onClick={props.onOk}\n loading={props.loading}\n >\n {props.okText || '提交'}\n </Button>\n )}\n </Space>\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Drawer, DrawerProps } from 'antd';\nimport { FC, useEffect } from 'react';\nimport { DrawerOperation, DrawerOperationOldProps } from './drawer-operation';\nimport './style.less';\n\nexport type DrawerFormProps = {\n className?: string;\n /**\n * 整个drawer页面级的spinning <Page loading />\n */\n pageLoading?: boolean;\n // 设置了 DrawerProps footer属性后,operationProps配置将失效\n operationProps?: DrawerOperationOldProps;\n} & DrawerProps;\n\nconst PageLoader = () => {\n return (\n <div className=\"drawer-wraper-loader\">\n <div className=\"loader-wrapper\">\n <div className=\"loader-inner\" />\n <div className=\"loader-text\">LOADING</div>\n </div>\n </div>\n );\n};\n\n/**\n * 弹窗机制\n * ```\n * 1. 默认 destroyOnClose = true\n * 2. 默认 forceRender = false\n * ```\n */\nexport const DrawerWraper: FC<DrawerFormProps> = (props) => {\n const { pageLoading, className, width = 600, children, footer, operationProps, ...otherProps } = props;\n useEffect(() => {\n console.error(\n '@flatbiz/antd库【DrawerWraper】组件已经过期,请使用DrawerWrapper替换包括DrawerWraper=>DrawerWrapper、createDrawerWraperModel=>createDrawerWrapperModel,如果使用DrawerWrapper组件原用法需要调整',\n );\n }, []);\n return (\n <Drawer\n className={classNames('drawer-wraper', className)}\n keyboard={false}\n forceRender={false}\n destroyOnClose={true}\n width={'80%'}\n contentWrapperStyle={{ maxWidth: width }}\n size=\"default\"\n {...otherProps}\n footer={footer || footer === null ? footer : <DrawerOperation {...operationProps} />}\n >\n <div className=\"drawer-wraper-content\">{children}</div>\n {pageLoading && <PageLoader />}\n </Drawer>\n );\n};\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { DrawerActionsParamType, DrawerModel, DrawerStateType } from './drawer.model';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst drawerModels: Record<string, API<ModelType<DrawerStateType, DrawerActionsParamType, any>>> = {};\n\n/**\n * drawer弹窗模型\n * @param key 唯一值必传\n * @returns\n *\n * ```\n * 使用方式\n * const [drawerState, drawerActions] = createDrawerWraperModel('key值').useStore();\n * ```\n */\nexport const createDrawerWraperModel = (key: string) => {\n if (!drawerModels[key]) {\n drawerModels[key] = Model(DrawerModel);\n }\n return drawerModels[key];\n};\n\nexport * from './drawer-wraper';\n","import { ModelType } from '@dimjs/model';\n\nexport interface DrawerStateType {\n title: string;\n /**\n * 显示drawer\n */\n visible: boolean;\n /**\n * 用来处理form, `更新`的时候的传递当前item列表行的数据, 当`创建`的时候强制设置为 `undefined`\n */\n itemData?: Record<string, any>;\n operateType: 'create' | 'update' | 'view' | null;\n pageLoading?: boolean;\n}\n\nexport interface DrawerActionsParamType {\n openDrawerForm: Pick<DrawerStateType, 'title' | 'itemData' | 'operateType' | 'pageLoading'>;\n closeDrawer: void;\n setDrawerItemData: Record<string, any>;\n}\n\n/**\n * @shared\n * 提供公共的drawer处理, 通常用来表单编辑, 弹窗抽屉模式.\n * 注意全部理论上只允许一个drawer实例存在,如需处理多个, 请自行实例话模型.\n */\nexport const DrawerModel: ModelType<DrawerStateType, DrawerActionsParamType> = {\n actions: {\n openDrawerForm({ itemData, title, operateType, pageLoading }) {\n return (state) => {\n state.itemData = itemData;\n state.title = title;\n state.operateType = operateType;\n state.pageLoading = pageLoading;\n state.visible = true;\n };\n },\n closeDrawer() {\n return (state) => {\n state.visible = false;\n };\n },\n setDrawerItemData(params) {\n return (state) => {\n state.pageLoading = false;\n state.itemData = params;\n };\n },\n },\n state: {\n visible: false,\n title: '',\n operateType: null,\n },\n};\n","import { DependencyList, EffectCallback, useEffect } from 'react';\n\nexport const useEffectCustom = (fn: EffectCallback, deps: DependencyList) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useEffect(fn, deps);\n};\n","import { DependencyList, useEffect } from 'react';\n\nexport const useEffectCustomAsync = (fn: () => Promise<void>, deps: DependencyList) => {\n useEffect(() => {\n async function asyncFunction() {\n await fn();\n }\n void asyncFunction();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n","import { SaveOutlined } from '@ant-design/icons';\nimport { Button, ButtonProps, Space } from 'antd';\n\nexport interface DrawerOperationProps {\n loading?: boolean;\n okText?: string;\n cancelText?: string;\n onOk?: () => void;\n onCancel?: () => void;\n hideOkBtn?: boolean;\n okButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n cancelButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n}\n\nexport const DrawerOperation = (props: DrawerOperationProps) => {\n return (\n <div className=\"fixed-bottom-block\">\n <Space size=\"middle\">\n <Button {...props.cancelButtonProps} className=\"cancel-btn\" onClick={props.onCancel}>\n {props.cancelText || '取消'}\n </Button>\n {props.hideOkBtn != true && (\n <Button\n type=\"primary\"\n icon={<SaveOutlined />}\n {...props.okButtonProps}\n className=\"ok-btn\"\n onClick={props.onOk}\n loading={props.loading}\n >\n {props.okText || '提交'}\n </Button>\n )}\n </Space>\n </div>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Drawer, DrawerProps } from 'antd';\nimport { FC, Fragment } from 'react';\nimport { useEffectCustom } from '../hooks';\nimport { DrawerOperation, DrawerOperationProps } from './drawer-operation';\nimport './style.less';\n\ntype DrawerWrapperStaticMethods = {\n Content: typeof DrawerWrapperContent;\n Footer: typeof DrawerWrapperFooter;\n};\n\nexport type DrawerWrapperProps = {\n className?: string;\n /**\n * 整个drawer页面级的spinning <Page loading />\n */\n pageLoading?: boolean;\n} & Omit<DrawerProps, 'footer'>;\n\nconst PageLoader = () => {\n return (\n <div className=\"drawer-wrapper-loader\">\n <div className=\"loader-wrapper\">\n <div className=\"loader-inner\" />\n <div className=\"loader-text\">LOADING</div>\n </div>\n </div>\n );\n};\n\nconst DrawerWrapperContent: FC<{ operationProps?: DrawerOperationProps }> = (props) => {\n return (\n <Fragment>\n <div className=\"drawer-wrapper-content\">{props.children}</div>\n {props.operationProps ? (\n <DrawerWrapperFooter>\n <DrawerOperation {...props.operationProps} />\n </DrawerWrapperFooter>\n ) : null}\n </Fragment>\n );\n};\n\nconst DrawerWrapperFooter = (props) => {\n return <div className=\"drawer-wrapper-footer\">{props.children}</div>;\n};\n\n/**\n * 弹窗机制\n * ```\n * 1. 默认 destroyOnClose = true\n * 2. 默认 forceRender = false\n * ```\n */\nexport const DrawerWrapper: FC<DrawerWrapperProps> & DrawerWrapperStaticMethods = (props) => {\n const { pageLoading, className, width = 600, children, ...otherProps } = props;\n\n useEffectCustom(() => {\n if (props['operationProps']) {\n throw new Error('DrawerWrapper组件升级,参数operationProps用法变更,请及时更新');\n }\n }, []);\n\n return (\n <Drawer\n className={classNames('drawer-wrapper', className)}\n keyboard={false}\n forceRender={false}\n destroyOnClose={true}\n width={'80%'}\n contentWrapperStyle={{ maxWidth: width }}\n size=\"default\"\n {...otherProps}\n footer={null}\n >\n {pageLoading && <PageLoader />}\n {children}\n </Drawer>\n );\n};\n\nDrawerWrapper.Content = DrawerWrapperContent;\nDrawerWrapper.Footer = DrawerWrapperFooter;\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { DrawerActionsParamType, DrawerModel, DrawerStateType } from './drawer.model';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst drawerModels: Record<string, API<ModelType<DrawerStateType, DrawerActionsParamType, any>>> = {};\n\n/**\n * drawer弹窗模型\n * @param key 唯一值必传\n * @returns\n *\n * ```\n * 使用方式\n * const [drawerState, drawerActions] = createDrawerWrapperModel('key值').useStore();\n * ```\n */\nexport const createDrawerWrapperModel = (key: string) => {\n if (!drawerModels[key]) {\n drawerModels[key] = Model(DrawerModel);\n }\n return drawerModels[key];\n};\n\nexport * from './drawer-wrapper';\n","import { FieldSingleConfig } from './type';\n\nexport const getEditable = (editable: FieldSingleConfig['editable'], tableRowIndex: number) => {\n return typeof editable === 'boolean' ? editable : editable?.({ tableRowIndex });\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { LabelValueItem } from '@flatbiz/utils';\nimport { Checkbox, Form, Tag } from 'antd';\nimport { useMemo } from 'react';\nimport { EditableCheckboxGroupConfig, EditableFormItemProps } from '../type';\n\ntype CheckboxGroupFormItemContent = Omit<EditableFormItemProps, 'formItemProps'> & {\n value?: Array<string | number>;\n onChange?: (value: any) => void;\n};\n\nconst CheckboxGroupFormItemContent = (props: CheckboxGroupFormItemContent) => {\n const { editableConfig, editable, render } = props.fieldConfig;\n const editableComptProps = (editableConfig as EditableCheckboxGroupConfig).editableComptProps;\n\n const viewLabelList = useMemo(() => {\n if (editable) return [];\n const value = isArray(props.value) ? props.value : ([] as any[]);\n const options = (editableComptProps.options || []) as LabelValueItem[];\n if (!isArray(options) || options.length === 0) {\n return value.map((item) => ({ label: item, value: item }));\n }\n const returnList = [] as LabelValueItem[];\n value.forEach((item) => {\n const target = options.find((temp) => temp.value === item);\n returnList.push(target ? target : { label: item, value: item });\n });\n return returnList;\n }, [editable, editableComptProps.options, props.value]);\n\n if (editable) {\n return <Checkbox.Group {...editableComptProps} value={props.value} onChange={props.onChange} />;\n }\n return (\n <span className=\"editable-checkbox-group-view\">\n {render\n ? render(props.value)\n : viewLabelList.map((tag, index) => (\n <Tag key={index} color=\"#1890ff\">\n {tag.label}\n </Tag>\n ))}\n </span>\n );\n};\n\nexport const CheckboxGroupFormItem = (props: EditableFormItemProps) => {\n const { formItemProps } = props.fieldConfig;\n\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-checkbox-group-form-item', formItemProps?.className)}\n >\n <CheckboxGroupFormItemContent {...props} />\n </Form.Item>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Form } from 'antd';\nimport { DatePickerWrapper } from '../../date-picker-wrapper';\nimport { EditableDatePickerWrapperConfig, EditableFormItemProps } from '../type';\n\nexport const DatePickerWrapperFormItem = (props: EditableFormItemProps) => {\n const { formItemProps, editableConfig } = props.fieldConfig;\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-date-picker-wraper-form-item', formItemProps?.className)}\n >\n <DatePickerWrapper {...(editableConfig as EditableDatePickerWrapperConfig).editableComptProps} />\n </Form.Item>\n );\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { Form } from 'antd';\nimport { useMemo } from 'react';\nimport { DateRangePickerWrapper } from '../../date-range-picker-wrapper';\nimport { EditableDateRangePickerWrapperConfig, EditableFormItemProps } from '../type';\n\ntype FormItemContentProps = Omit<EditableFormItemProps, 'formItemProps'> & {\n value?: [string, string];\n onChange?: (value?: [string, string]) => void;\n};\n\nconst FormItemContent = (props: FormItemContentProps) => {\n const { editableConfig, editable, render } = props.fieldConfig;\n const editableComptProps = (editableConfig as EditableDateRangePickerWrapperConfig).editableComptProps;\n\n const viewLabel = useMemo(() => {\n const value = isArray(props.value) ? props.value : ([] as any[]);\n if (editable) return undefined;\n return value.join('~');\n }, [editable, props.value]);\n\n if (editable) {\n return <DateRangePickerWrapper {...editableComptProps} value={props.value} onChange={props.onChange} />;\n }\n return <span className=\"editable-date-range-picker-view\">{render ? render(props.value) : viewLabel}</span>;\n};\n\nexport const DateRangePickerWrapperFormItem = (props: EditableFormItemProps) => {\n const { formItemProps } = props.fieldConfig;\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-date-range-picker-wraper-form-item', formItemProps?.className)}\n >\n <FormItemContent {...props} />\n </Form.Item>\n );\n};\n","import { Form, Input } from 'antd';\nimport { EditableFormItemProps, EditableInputConfig } from '../type';\n\nexport const InputFormItem = (props: EditableFormItemProps) => {\n const { formItemProps, editableConfig } = props.fieldConfig;\n return (\n <Form.Item {...formItemProps} name={props.name}>\n <Input {...(editableConfig as EditableInputConfig).editableComptProps} />\n </Form.Item>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Form, InputNumber } from 'antd';\nimport { EditableFormItemProps, EditableInputNumberConfig } from '../type';\n\nexport const InputNumberFormItem = (props: EditableFormItemProps) => {\n const { formItemProps, editableConfig } = props.fieldConfig;\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-input-number-form-item', formItemProps?.className)}\n >\n <InputNumber {...(editableConfig as EditableInputNumberConfig).editableComptProps} />\n </Form.Item>\n );\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { LabelValueItem } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, Radio, Tag } from 'antd';\nimport { useMemo } from 'react';\nimport { EditableFormItemProps, EditableRadioGroupConfig } from '../type';\n\ntype RadioGroupFormItemContent = Omit<EditableFormItemProps, 'formItemProps'> & {\n value?: string | number;\n onChange?: (value: string | number) => void;\n};\n\nconst RadioGroupFormItemContent = (props: RadioGroupFormItemContent) => {\n const { editableConfig, editable, render } = props.fieldConfig;\n const editableComptProps = (editableConfig as EditableRadioGroupConfig).editableComptProps;\n\n const viewLabel = useMemo(() => {\n if (editable) return [];\n const value = props.value;\n const options = (editableComptProps.options || []) as LabelValueItem<string | number>[];\n if (!isArray(options) || options.length === 0) {\n return value;\n }\n const target = options.find((item) => item.value === value);\n return target?.label || value;\n }, [editable, editableComptProps.options, props.value]);\n\n const onChange = hooks.useCallbackRef((e) => {\n props.onChange?.(e.target.value as string | number);\n });\n\n if (editable) {\n return <Radio.Group {...editableComptProps} value={props.value} onChange={onChange} />;\n }\n return (\n <span className=\"editable-radio-group-view\">\n {render ? render(props.value) : viewLabel ? <Tag color=\"#1890ff\">{viewLabel}</Tag> : null}\n </span>\n );\n};\n\nexport const RadioGroupFormItem = (props: EditableFormItemProps) => {\n const { formItemProps } = props.fieldConfig;\n\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-radio-group-form-item', formItemProps?.className)}\n >\n <RadioGroupFormItemContent {...props} />\n </Form.Item>\n );\n};\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { LabelValueItem, TPlainObject } from '@flatbiz/utils';\n\nexport type ModelState = {\n selectorList: LabelValueItem[];\n originalSelectorList: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus: 'init' | 'request-pre' | 'request-success' | 'request-error';\n};\n\ntype ModelActionParams = {\n setSelectBoxList: { selectorList: LabelValueItem[]; originalSelectorList: TPlainObject[] };\n resetSelectBoxList: void;\n changeRequestStatus: ModelState['requestStatus'];\n};\n\nconst defaultState: ModelState = {\n selectorList: [],\n originalSelectorList: [],\n queryIsEmpty: false,\n requestStatus: 'init',\n};\n\nconst _SelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.selectorList = params.selectorList || [];\n state.originalSelectorList = params.originalSelectorList || [];\n state.requestStatus = 'request-success';\n };\n },\n resetSelectBoxList: () => {\n return (state) => {\n state.selectorList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst selectorWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, any>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const selectorWrapperModel = (key: string) => {\n if (!selectorWrapperModels[key]) {\n selectorWrapperModels[key] = Model(_SelectorWrapperModel);\n }\n return selectorWrapperModels[key];\n};\n","import { RedoOutlined } from '@ant-design/icons';\nimport { extend } from '@dimjs/utils';\nimport { useEffectCustom } from '@flatbiz/antd';\nimport { arrayField2LabelValue, isUndefinedOrNull, LabelValueItem, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Empty, message, Select, SelectProps } from 'antd';\nimport {\n DependencyList,\n forwardRef,\n ReactElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ModelState, selectorWrapperModel } from './model';\n\ntype SelectorServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: any) => any;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: any) => TPlainObject[];\n};\n\nexport type SelectorWrapperProps = Omit<\n SelectProps,\n 'filterOption' | 'onSearch' | 'loading' | 'notFoundContent' | 'options' | 'fieldNames'\n> & {\n // 模型唯一值\n modelKey: string;\n fieldNames?: { label: string; value: string };\n /**\n * useEffect依赖性数组\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorList`后无效果\n */\n serviceConfig?: SelectorServiceConfig;\n /**\n * 同步设置选择器选项列表\n * ```\n * 1. 当设置selectorList后,serviceConfig、operateType=search将失效\n * 2. 不支持异步数据,异步使用serviceConfig方式\n * 3. 如果配置fieldNames,会转换后使用\n * ```\n */\n selectorList?: TPlainObject[];\n /**\n * 通过服务获取数据后回调,当设置`selectorList`后无效果\n */\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /**\n * 添加全部选项\n * ```\n * 1. showAllOption = true,添加默认全部选项(value值为空字符串)\n * 2. 可自定义全部选项\n * ```\n */\n showAllOption?: true | JSX.Element;\n /**\n * 输入操作类型,默认值:filter\n * ```\n * 1. search:根据输入项去服务端查询\n * 2. filter:初始化已查询数据,根据输入内容筛选\n * 3. 在设置`selectorList`后,operateType=search将失效\n * ```\n */\n operateType?: 'search' | 'filter';\n // 搜索调接口字段名称,默认值:keyword\n searchFieldName?: string;\n // label渲染适配器\n onLabelRenderAdapter?: (dataItem: LabelValueItem) => string | ReactElement;\n};\n\nexport type SelectorWrapperRefApi = {\n onClearSelectorList: () => void;\n getSelectorList: () => LabelValueItem<string | number>[];\n};\n/**\n * 选择器包装组件\n * @param props\n * @returns\n * ```\n * 1. modelKey的配置是为了缓存数据;\n * 1.1: 当有effectDependencyList依赖项时,依赖项的发生变化后,每次都会去调用接口获取数据\n * 1.2: 当无effectDependencyList依赖项时,第一次调用接口成功后会有标记,下次访问存在标记,就不在调用接口,使用缓存数据;如果想强制刷新数据,可通过随便配置依赖项完成\n * 2. selectorList属性\n * 2.1 当设置selectorList属性后,serviceConfig、operateType=search将失效\n * 2.2 不支持异步数据,异步使用serviceConfig方式\n * 3. operateType=search状态下,回填数据查询接口时,会在接口中默认添加id字段(id的值为回填的值)\n * ```\n */\nexport const SelectorWrapper = forwardRef<SelectorWrapperRefApi, SelectorWrapperProps>((props, ref) => {\n const {\n serviceConfig,\n showAllOption,\n effectDependencyList,\n onSelectorListChange,\n operateType,\n searchFieldName,\n selectorList,\n modelKey,\n fieldNames,\n ...otherProps\n } = props;\n\n const isSearch = operateType === 'search' && selectorList === undefined;\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const changeOperateValueRef = useRef<string | number>();\n const [loading, setLoading] = useState(false);\n const [state, actions] = selectorWrapperModel(modelKey).useStore();\n // const effectDependencyListPrev = usePrevious(props.effectDependencyList);\n // console.log('effectDependencyListPrev', effectDependencyListPrev);\n const requestPreKey = `request-pre-${props.modelKey}`;\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceRespDataAdapter = (respData) => {\n const respDataList = newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData;\n return respDataList;\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(\n async (inputValue?: string, searchId?: string | number) => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n console.warn(`SelectorWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-pre');\n if ((!isUndefinedOrNull(inputValue) || !isUndefinedOrNull(searchId)) && isSearch) {\n const keyword = searchFieldName || 'keyword';\n params[keyword] = inputValue;\n params['id'] = searchId;\n }\n const respData = await newServiceConfig.onRequest?.(params);\n const respAdapterData = serviceRespDataAdapter(respData);\n const respDataTranslation = arrayField2LabelValue(respAdapterData || [], fieldNames);\n setLoading(false);\n window[requestPreKey] = false;\n void actions.setSelectBoxList({\n selectorList: respDataTranslation,\n originalSelectorList: respAdapterData,\n });\n } catch (error) {\n console.error(error);\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n void message.error(error.message || '获取数据异常');\n }\n } catch (error) {\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n },\n );\n\n useEffectCustom(() => {\n if (state.originalSelectorList && state.requestStatus === 'request-success') {\n onSelectorListChange?.(state.originalSelectorList);\n }\n }, [state.originalSelectorList, state.requestStatus]);\n\n useEffectCustom(() => {\n if (selectorList) {\n void actions.setSelectBoxList({\n selectorList: arrayField2LabelValue(selectorList, fieldNames),\n originalSelectorList: selectorList,\n });\n return;\n }\n if (isSearch) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n const realTimeState = selectorWrapperModel(modelKey).getState();\n if (\n newEffectDependencyList.length > 0 ||\n (!window[requestPreKey] && realTimeState.requestStatus !== 'request-success')\n ) {\n void startDataSourceRequest();\n }\n }, newEffectDependencyList);\n\n useEffectCustom(() => {\n if (isSearch) {\n if (valueIsEmpty(props.value as string | number)) {\n onSelectorListChange?.([]);\n void actions.resetSelectBoxList();\n } else {\n // 判断是否由外部回填value数据\n if (props.value !== changeOperateValueRef.current) {\n void startDataSourceRequest(undefined, props.value as string | number);\n }\n }\n }\n }, newEffectDependencyList.concat([props.value]));\n\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.resetSelectBoxList();\n },\n getSelectorList: () => {\n return state.selectorList;\n },\n };\n });\n\n const filterOption = hooks.useCallbackRef((input: string, option) => {\n return (option?.children as unknown as string).toLowerCase().indexOf(input.toLowerCase()) >= 0;\n });\n\n const onSearch = hooks.useDebounceCallback((value: string) => {\n if (value) {\n void startDataSourceRequest(value);\n } else {\n void actions.resetSelectBoxList();\n }\n }, 300);\n\n const onChange = hooks.useCallbackRef((value: string | number, ...otherParams) => {\n changeOperateValueRef.current = value;\n props.onChange?.(value, otherParams);\n });\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n const selectOptionsAll = <Select.Option value=\"\">全部</Select.Option>;\n return (\n <Select\n showSearch={true}\n allowClear={true}\n {...otherProps}\n value={isUndefinedOrNull(props.value) ? undefined : props.value}\n notFoundContent={\n <NotFoundContent requestStatus={state.requestStatus} onAgainRequest={onAgainRequest} />\n }\n loading={loading}\n onSearch={isSearch ? onSearch : undefined}\n filterOption={isSearch ? false : filterOption}\n onChange={onChange}\n fieldNames={undefined}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n >\n {showAllOption === true ? selectOptionsAll : showAllOption}\n {state.selectorList.map((item) => {\n return (\n <Select.Option value={item.value} label={item.label} key={item.value}>\n {props.onLabelRenderAdapter ? props.onLabelRenderAdapter(item) : item.label}\n </Select.Option>\n );\n })}\n </Select>\n );\n});\n\nconst NotFoundContent = (props: {\n requestStatus?: ModelState['requestStatus'];\n onAgainRequest: () => void;\n}) => {\n const description = useMemo(() => {\n if (props.requestStatus === 'request-error') {\n return '数据查询异常';\n } else if (props.requestStatus === 'request-success') {\n return '暂无数据';\n }\n return '数据查询中';\n }, [props.requestStatus]);\n return (\n <Empty\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n description={description}\n className={'tree-selector-wrapper-empty'}\n >\n {props.requestStatus === 'request-error' && (\n <Button type=\"primary\" onClick={props.onAgainRequest}>\n 重新获取数据\n </Button>\n )}\n </Empty>\n );\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { arrayField2LabelValue, LabelValueItem, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, Tag } from 'antd';\nimport { Fragment, useEffect, useState } from 'react';\nimport { SelectorWrapper } from '../../selector-wrapper';\nimport { EditableFormItemProps, EditableSelectWrapperConfig } from '../type';\n\ntype FormItemContentProps = Omit<EditableFormItemProps, 'formItemProps'> & {\n value?: string | number | Array<string | number>;\n onChange?: (value: any) => void;\n};\n\nconst FormItemContent = (props: FormItemContentProps) => {\n const { editableConfig, editable, render } = props.fieldConfig;\n const editableComptProps = (editableConfig as EditableSelectWrapperConfig).editableComptProps;\n const [selectorList, setSelectorList] = useState<LabelValueItem[]>([]);\n const [viewLabelList, setviewLabelList] = useState<LabelValueItem[]>([]);\n\n useEffect(() => {\n if (!editable) {\n const value = isArray(props.value) ? props.value : props.value === undefined ? [] : [props.value];\n if (selectorList.length === 0) {\n setviewLabelList(value.map((item) => ({ label: item as string, value: item })));\n }\n const returnList = [] as LabelValueItem[];\n value.forEach((item) => {\n const target = selectorList.find((temp) => temp.value === item);\n returnList.push(target ? target : { label: String(item), value: item });\n });\n setviewLabelList(returnList);\n }\n }, [editable, editableComptProps.fieldNames, props.value, selectorList]);\n\n const onSelectorListChange = hooks.useCallbackRef((dataList: TPlainObject[]) => {\n setSelectorList(arrayField2LabelValue(dataList || [], editableComptProps.fieldNames));\n });\n\n if (editable) {\n return (\n <SelectorWrapper\n {...editableComptProps}\n value={props.value}\n onChange={props.onChange}\n onSelectorListChange={onSelectorListChange}\n />\n );\n }\n return (\n <Fragment>\n <div style={{ display: 'none' }}>\n <SelectorWrapper {...editableComptProps} onSelectorListChange={onSelectorListChange} />\n </div>\n <span className=\"editable-selector-view\">\n {render\n ? render(props.value)\n : viewLabelList.map((tag, index) => (\n <Tag key={index} color=\"#1890ff\">\n {tag.label}\n </Tag>\n ))}\n </span>\n </Fragment>\n );\n};\n\nexport const SelectorWrapperFormItem = (props: EditableFormItemProps) => {\n const { formItemProps } = props.fieldConfig;\n\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-selector-wrapper-form-item', formItemProps?.className)}\n >\n <FormItemContent {...props} />\n </Form.Item>\n );\n};\n","import { isBoolean, isNumber, isString } from '@dimjs/lang';\nimport { Form } from 'antd';\nimport { useMemo } from 'react';\nimport { EditableFormItemProps, FieldSingleConfig } from '../type';\n\nconst FormItemTextContent = (props: {\n value?: string | number;\n name: EditableFormItemProps['name'];\n fieldConfig?: FieldSingleConfig;\n}) => {\n const value = useMemo(() => {\n if (props.fieldConfig?.render) return undefined;\n const isBaseData =\n isString(props.value) || isNumber(props.value) || isBoolean(props.value) || !props.value;\n if (!isBaseData) {\n console.warn(`Form.List name:【${props.name}】数据【${JSON.stringify(props.value)}】不能渲染在页面中`);\n }\n return isBaseData ? props.value : undefined;\n }, [props.fieldConfig?.render, props.name, props.value]);\n\n return <span className=\"editable-text-view\">{props.fieldConfig?.render?.(props.value) || value}</span>;\n};\n\nexport const TextFormItem = (props: { name: Array<number | string>; fieldConfig?: FieldSingleConfig }) => {\n return (\n <Form.Item noStyle name={props.name}>\n <FormItemTextContent name={props.name} fieldConfig={props.fieldConfig} />\n </Form.Item>\n );\n};\n","import { Form, Input } from 'antd';\nimport { EditableFormItemProps, EditableTextareaConfig } from '../type';\n\nexport const TextAreaFormItem = (props: EditableFormItemProps) => {\n const { formItemProps, editableConfig } = props.fieldConfig;\n return (\n <Form.Item {...formItemProps} name={props.name}>\n <Input.TextArea {...(editableConfig as EditableTextareaConfig).editableComptProps} />\n </Form.Item>\n );\n};\n","import { PlusOutlined } from '@ant-design/icons';\nimport { classNames, extend } from '@dimjs/utils';\nimport { TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, message, Upload, UploadProps } from 'antd';\nimport { UploadChangeParam } from 'antd/lib/upload';\nimport { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport { FC, Fragment, useState } from 'react';\nimport { useEffectCustom } from '../hooks';\nimport './style.less';\n\nexport type UploadWrapperFileItem = {\n uid: string;\n name: string;\n url?: string;\n};\n\nexport type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {\n value?: T[];\n onChange?: (value?: T[]) => void;\n onUploadError?: (message?: string) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性映射\n */\n fieldNames?: {\n uid?: string;\n name?: string;\n url?: string;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: any) => TPlainObject;\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * 1. 可通过配置children替换默认上传触发布局\n * 2. 接口返回结构:\n * formData上传接口返回值\n * {\n * code: '0000',\n * data: {\n * uid: '唯一值,可使用fileKey值'\n * name: '文件名称'\n * url: '预览地址'\n * }\n * }\n * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射\n *\n * 4. 最佳使用方式,与Form结合使用\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <UploadWrapper action={uploadUrl} />\n * </Form.Item>\n * ```\n *\n */\nexport const UploadWrapper: FC<UploadWrapperProps> = (props) => {\n const { onChange, onUploadError, value, ...otherProps } = props;\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n },\n props.fieldNames,\n ) as Required<UploadWrapperFileItem>;\n\n useEffectCustom(() => {\n setUploadList(\n value?.map((item) => {\n return {\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n };\n }),\n );\n }, [fieldNames.name, fieldNames.uid, fieldNames.url, value]);\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n const fileList = info.fileList as TPlainObject[];\n if (info.file.status === 'done') {\n const respData = info.file.response;\n if (respData.code === '0000') {\n const result = (\n props.onRequestResultAdapter ? props.onRequestResultAdapter(respData.data) : respData.data\n ) as TPlainObject;\n result[fieldNames.uid] = result[fieldNames.uid] || info.file.uid;\n result[fieldNames.name] = result[fieldNames.name] || info.file.name;\n if (props.maxCount === 1) {\n onChange?.([result]);\n } else {\n onChange?.((value || []).concat(result));\n }\n } else {\n if (onUploadError) {\n onUploadError(respData.message as string);\n } else {\n void message.error((respData.message as string) || '上传操作失败...');\n }\n fileList[fileList.length - 1] = {\n ...fileList[fileList.length - 1],\n status: 'error',\n };\n }\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = value !== undefined ? [...value] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid];\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n if (onUploadError) {\n onUploadError();\n } else {\n void message.error('上传操作失败...');\n }\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n props.onUploadChange?.(info);\n });\n\n return (\n <Upload\n {...otherProps}\n onChange={onUploadChange}\n fileList={uploadList}\n className={classNames('v-upload-wrapper', otherProps.className)}\n >\n {otherProps.disabled ? null : (\n <UploadTrigger listType={otherProps.listType}>{props.children}</UploadTrigger>\n )}\n </Upload>\n );\n};\n\nconst UploadTrigger: FC<{ listType?: UploadListType }> = (props) => {\n if (props.children) return <Fragment>{props.children}</Fragment>;\n if (props.listType === 'picture-card') {\n return (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>上传图片</div>\n </div>\n );\n }\n if (props.listType === 'picture') {\n return (\n <Button type=\"primary\" ghost>\n 选择图片上传\n </Button>\n );\n }\n return (\n <Button type=\"primary\" ghost>\n 选择文件上传\n </Button>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Form } from 'antd';\nimport { UploadWrapper } from '../../upload-wrapper';\nimport { EditableFileUploadConfig, EditableFormItemProps } from '../type';\n\nconst UploadWrapperFormItemContent = (\n props: EditableFormItemProps & { value?: any; onChange?: (value?: any) => void },\n) => {\n const { editableConfig, render, editable } = props.fieldConfig;\n const { children, ...otherProps } = (editableConfig as EditableFileUploadConfig).editableComptProps;\n if (editable) {\n return (\n <UploadWrapper listType=\"text\" {...otherProps} value={props.value} onChange={props.onChange}>\n {children}\n </UploadWrapper>\n );\n }\n return (\n <div className=\"upload-wrapper-selector-view\">\n {render ? (\n render(props.value)\n ) : (\n <UploadWrapper listType=\"text\" {...otherProps} value={props.value} disabled={true} />\n )}\n </div>\n );\n};\n\nexport const UploadWrapperFormItem = (props: EditableFormItemProps) => {\n const { formItemProps } = props.fieldConfig;\n return (\n <Form.Item\n {...formItemProps}\n name={props.name}\n className={classNames('editable-upload-wrapper-form-item', formItemProps?.className)}\n >\n <UploadWrapperFormItemContent {...props} />\n </Form.Item>\n );\n};\n","import { extend } from '@dimjs/utils';\nimport { FieldSingleConfig } from '../type';\nimport { getEditable } from '../utils';\nimport { CheckboxGroupFormItem } from './checkbox-group';\nimport { DatePickerWrapperFormItem } from './date-picker-wrapper';\nimport { DateRangePickerWrapperFormItem } from './date-range-picker-wrapper';\nimport { InputFormItem } from './input';\nimport { InputNumberFormItem } from './input-number';\nimport { RadioGroupFormItem } from './radio-group';\nimport { SelectorWrapperFormItem } from './selector-wrapper';\nimport { TextFormItem } from './text';\nimport { TextAreaFormItem } from './textarea';\nimport { UploadWrapperFormItem } from './upload-wrapper';\n\nexport type FormItemAdapterProps = {\n name: Array<number | string>;\n completeName: Array<number | string>;\n fieldConfig: FieldSingleConfig;\n tableRowIndex: number;\n};\n\nexport const FormItemAdapter = (props: FormItemAdapterProps) => {\n const { editableConfig, editable } = props.fieldConfig;\n const newEditable = getEditable(editable, props.tableRowIndex);\n const fieldConfig = extend({}, props.fieldConfig, { editable: newEditable });\n\n const commomProps = {\n name: props.name,\n fieldConfig,\n };\n\n if (editableConfig?.type === 'input' && newEditable) {\n return <InputFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'inputNumber' && newEditable) {\n return <InputNumberFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'textArea' && newEditable) {\n return <TextAreaFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'datePickerWrapper' && newEditable) {\n return <DatePickerWrapperFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'dateRangePickerWrapper') {\n return <DateRangePickerWrapperFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'selectorWrapper') {\n return <SelectorWrapperFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'checkboxGroup') {\n return <CheckboxGroupFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'radioGroup') {\n return <RadioGroupFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'uploadWrapper') {\n return <UploadWrapperFormItem {...commomProps} />;\n } else if (editableConfig?.type === 'custom') {\n return editableConfig.editableComptProps({\n name: props.name,\n editable: newEditable,\n completeName: props.completeName,\n });\n }\n return <TextFormItem {...commomProps} />;\n};\n","import { DeleteOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { Button, Form, Space } from 'antd';\nimport { FormItemAdapter } from '../form-item';\nimport { FormListConfig } from '../type';\nimport { getEditable } from '../utils';\n\nexport type FormListProps = {\n name: Array<number | string>;\n formListConfig: FormListConfig;\n tableRowIndex: number;\n completeName: (string | number)[];\n};\n\nexport const FormList = (props: FormListProps) => {\n const from = Form.useFormInstance();\n const {\n onFormListBeforeRender,\n editableConfigList,\n onFormListAfterRender,\n onFormListItemBeforeRender,\n onFormListItemAfterRender,\n deleteOperateRender,\n } = props.formListConfig;\n return (\n <Form.List name={props.name}>\n {(fields, { add, remove }) => (\n <>\n {onFormListBeforeRender\n ? onFormListBeforeRender({\n tableRowIndex: props.tableRowIndex,\n add,\n get value() {\n return from.getFieldValue(props.completeName);\n },\n })\n : null}\n {fields.map((fieldChild, index) => {\n const hasEditable = editableConfigList.find((item) =>\n getEditable(item.editable, props.tableRowIndex),\n );\n const className = classNames(\n 'editable-inner-formlist-item',\n `editable-inner-formlist-item-${props.name[1]}`,\n { 'editable-inner-formlist-item_preview': !hasEditable },\n );\n return (\n <div key={index} className={className}>\n {onFormListItemBeforeRender\n ? onFormListItemBeforeRender({\n add,\n remove: () => {\n remove(index);\n },\n formListItemIndex: index,\n tableRowIndex: props.tableRowIndex,\n get value() {\n return from.getFieldValue([...props.completeName, fieldChild.name]);\n },\n })\n : null}\n <Space>\n {editableConfigList.map((fieldItem, index) => {\n return (\n <FormItemAdapter\n name={[fieldChild.name, fieldItem.fieldName]}\n fieldConfig={fieldItem}\n key={index}\n tableRowIndex={props.tableRowIndex}\n completeName={[...props.completeName, fieldChild.name]}\n />\n );\n })}\n {hasEditable ? (\n <DeleteFormListItem\n deleteOperateRender={deleteOperateRender}\n remove={() => {\n remove(index);\n }}\n index={index}\n />\n ) : null}\n </Space>\n {onFormListItemAfterRender\n ? onFormListItemAfterRender({\n add,\n formListItemIndex: index,\n tableRowIndex: props.tableRowIndex,\n remove: () => {\n remove(index);\n },\n get value() {\n return from.getFieldValue([...props.completeName, fieldChild.name]);\n },\n })\n : null}\n </div>\n );\n })}\n {onFormListAfterRender\n ? onFormListAfterRender({\n tableRowIndex: props.tableRowIndex,\n add,\n get value() {\n return from.getFieldValue(props.completeName);\n },\n })\n : null}\n </>\n )}\n </Form.List>\n );\n};\n\nconst DeleteFormListItem = (props: {\n deleteOperateRender: FormListConfig['deleteOperateRender'];\n remove: () => void;\n index: number;\n}) => {\n return (\n <Form.Item>\n {props.deleteOperateRender ? (\n props.deleteOperateRender({ remove: props.remove, formListItemIndex: props.index })\n ) : (\n <Button type=\"link\" danger icon={<DeleteOutlined />} onClick={props.remove}>\n 删除\n </Button>\n )}\n </Form.Item>\n );\n};\n","import { isArray } from '@dimjs/lang';\nimport { FormItemAdapter } from '../form-item';\nimport { TextFormItem } from '../form-item/text';\nimport { FieldSingleConfig, FormListConfig } from '../type';\nimport { FormList } from './form-list';\n\nexport type FormListItemProps = {\n name: Array<number | string>;\n fieldConfig?: FieldSingleConfig | FormListConfig;\n tableRowIndex: number;\n completeName: (string | number)[];\n};\n\nexport const FormListItem = (props: FormListItemProps) => {\n if (props.fieldConfig) {\n if (isArray(props.fieldConfig['editableConfigList'])) {\n const formListConfig = props.fieldConfig as FormListConfig;\n return (\n <FormList\n name={props.name}\n completeName={props.completeName}\n formListConfig={formListConfig}\n tableRowIndex={props.tableRowIndex}\n />\n );\n } else {\n return (\n <FormItemAdapter\n name={props.name}\n fieldConfig={props.fieldConfig as FieldSingleConfig}\n tableRowIndex={props.tableRowIndex}\n completeName={props.completeName}\n />\n );\n }\n }\n return <TextFormItem name={props.name} />;\n};\n","import { PlusOutlined } from '@ant-design/icons';\nimport { Button, Form, Table, TableProps } from 'antd';\nimport { FormListOperation, FormListProps } from 'antd/lib/form/FormList';\nimport { ColumnsType } from 'antd/lib/table';\nimport { Fragment, ReactElement, useMemo } from 'react';\nimport { FormListItem } from './form-list-item';\nimport './style.less';\nimport { EditableTableRecordType, FieldSingleConfig, FormListConfig } from './type';\n\n// export type EditableTableDataSourceItem = FormListFieldData & { operation: FormListOperation };\n\n/**\n * antd 默认render功能此处不能使用\n */\nexport type EditableTableColumn = Omit<ColumnsType['0'], 'render'> & {\n dataIndex?: string;\n fieldConfig?: FieldSingleConfig | FormListConfig;\n /**\n * 配置操作功能处理后,fieldConfig配置将失效\n * ```\n * 1. tableRowIndex:当前row的索引值\n * 1. name:当前row的form.item的name值\n * ```\n */\n operateRender?: (item: {\n tableRowIndex: number;\n name: Array<string | number>;\n operation: FormListOperation;\n }) => ReactElement;\n};\n\nexport type EditableTableProps = {\n name: string;\n /**\n * ```\n * antd table属性\n * 1. 新增cellVerticalAlign,单元格竖直方向对齐方式,设置table column onCell属性后失效\n * ```\n */\n tableProps?: Omit<TableProps<EditableTableRecordType>, 'dataSource' | 'columns' | 'rowKey'> & {\n cellVerticalAlign?: 'baseline' | 'middle' | 'top' | 'bottom';\n };\n columns: EditableTableColumn[];\n onTableBeforeRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /**\n * 设置后,将覆盖底部`新增`按钮\n */\n onTableAfterRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n rules?: FormListProps['rules'];\n};\n\nexport const EditableTable = (props: EditableTableProps) => {\n const columns = useMemo(() => {\n if (!props.columns) return [];\n return props.columns.map((columnItem) => {\n const { fieldConfig, operateRender, ...otherColumnItem } = columnItem;\n return {\n onCell: () => {\n return {\n valign: props.tableProps?.cellVerticalAlign || 'middle',\n };\n },\n ...otherColumnItem,\n render: (_value, record) => {\n if (operateRender) {\n return (\n operateRender({\n name: [...props.name, record.name],\n tableRowIndex: record.name,\n operation: record.operation,\n }) || ''\n );\n }\n return (\n <FormListItem\n name={columnItem.dataIndex ? [record.name, columnItem.dataIndex] : [record.name]}\n completeName={\n columnItem.dataIndex\n ? [...props.name, record.name, columnItem.dataIndex]\n : [...props.name, record.name]\n }\n fieldConfig={fieldConfig}\n tableRowIndex={record.name}\n />\n );\n },\n };\n }) as ColumnsType<EditableTableRecordType>;\n }, [props.columns, props.name, props.tableProps?.cellVerticalAlign]);\n\n return (\n <div className=\"editable-table\">\n <Form.List name={props.name} rules={props.rules}>\n {(fields, formListOperation) => {\n return (\n <Fragment>\n {props.onTableBeforeRender ? props.onTableBeforeRender(formListOperation, fields.length) : null}\n <Table\n scroll={{ x: 'max-content' }}\n pagination={false}\n {...props.tableProps}\n dataSource={fields.map((item) => ({ ...item, operation: formListOperation }))}\n columns={columns}\n rowKey=\"key\"\n />\n {props.onTableAfterRender ? (\n props.onTableAfterRender(formListOperation, fields.length)\n ) : (\n <Button\n type=\"dashed\"\n onClick={() => formListOperation.add()}\n block\n icon={<PlusOutlined />}\n style={{ marginTop: 15 }}\n >\n 新增\n </Button>\n )}\n </Fragment>\n );\n }}\n </Form.List>\n </div>\n );\n};\n","import { hooks } from '@wove/react';\nimport { Button, message, Upload, UploadProps } from 'antd';\nimport { FC, useState } from 'react';\n\nexport type FileImportProps = {\n onImportFinish: (data?: any) => void;\n} & Omit<\n UploadProps,\n | 'fileList'\n | 'showUploadList'\n | 'itemRender'\n | 'listType'\n | 'multiple'\n | 'previewFile'\n | 'progress'\n | 'onChange'\n | 'onDownload'\n | 'onRemove'\n | 'onPreview'\n | 'directory'\n | 'customRequest'\n | 'defaultFileList'\n | 'iconRender'\n>;\n\n/**\n * 文件导入\n * ```\n * 默认值:\n * name: 'file',\n * accept: '.xlsx,.xls',\n * ```\n */\nexport const FileImport: FC<FileImportProps> = (props) => {\n const { onImportFinish, ...otherProps } = props;\n\n const [loading, setLoading] = useState(false);\n\n const onChange = hooks.useCallbackRef((info) => {\n if (info.file.status === 'uploading') {\n setLoading(true);\n } else if (info.file.status === 'done') {\n setLoading(false);\n const respData = info.file.response;\n if (respData.code === '0000') {\n onImportFinish(respData.data);\n } else {\n void message.error((respData.message as string) || '文件导入异常...');\n }\n }\n });\n\n return (\n <Upload showUploadList={false} maxCount={1} {...otherProps} onChange={onChange}>\n {props.children ? (\n props.children\n ) : (\n <Button type=\"primary\" ghost loading={loading}>\n 选择文件\n </Button>\n )}\n </Upload>\n );\n};\n\nFileImport.defaultProps = {\n name: 'file',\n accept: '.xlsx,.xls',\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { Upload, UploadProps } from 'antd';\nimport { UploadChangeParam } from 'antd/lib/upload';\nimport { UploadFile } from 'antd/lib/upload/interface';\nimport { FC, useEffect, useState } from 'react';\nimport { useEffectCustom } from '../hooks';\nimport './style.less';\n\nexport type FileUploadItem = {\n fileKey: string;\n fileName: string;\n};\n\ntype AntdFileUploadItem = {\n uid: string;\n name: string;\n fileKey: string;\n};\n\nexport type FileUploadProps = {\n onChange?: (value?: FileUploadItem[]) => void;\n onUploadError?: (message?: string) => void;\n value?: FileUploadItem[];\n onPreview?: (item: FileUploadItem) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性映射\n */\n fieldNames?: {\n fileKey?: string;\n fileName?: string;\n };\n} & Omit<UploadProps, 'onChange' | 'fileList' | 'onPreview'>;\n\n/**\n * 文件上传,结合Form使用最佳\n * ```\n * 接口返回结构:\n * formData上传接口必须返回fileKey值\n * {\n * code: '0000',\n * data: {\n * fileKey: '预览文件对应的fileKey'\n * }\n * }\n * 可通过fieldNames配置接口返回值属性名称映射\n * ```\n * ```\n * 最佳使用方式:\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <FileUpload action={uploadUrl} onPreview={onPreviewFile}>\n * <Button type=\"primary\">选择文件导入</Button>\n * </FileUpload>\n * </Form.Item>\n * ```\n *\n */\nexport const FileUpload: FC<FileUploadProps> = (props) => {\n useEffectCustom(() => {\n console.error('@flatbiz/antd库【FileUpload】组件已经过期,请使用【UploadWrapper】组件替换');\n }, []);\n\n const { onChange, onUploadError, onPreview, value, ...otherProps } = props;\n const [uploadValue, setUploadValue] = useState<AntdFileUploadItem[]>([]);\n const fieldNames = extend(\n {\n fileKey: 'fileKey',\n fileName: 'fileName',\n },\n props.fieldNames,\n ) as FileUploadItem;\n\n useEffect(() => {\n if (value && isArray(value)) {\n setUploadValue(\n value.map((item) => {\n return {\n uid: item['uid'] || item[fieldNames.fileKey],\n name: item[fieldNames.fileName],\n fileKey: item[fieldNames.fileKey],\n url: item[fieldNames.fileKey],\n thumbUrl: item[fieldNames.fileKey],\n };\n }),\n );\n }\n }, [fieldNames.fileKey, fieldNames.fileName, value]);\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n if (info.file.status === 'done') {\n const respData = info.file.response;\n if (respData.code === '0000') {\n const result = respData.data || {};\n const uploadItem = {\n uid: info.file.uid,\n fileName: result[fieldNames.fileName] || (info.file.name as string),\n fileKey: result[fieldNames.fileKey],\n } as FileUploadItem;\n const respValue = (value || []).concat(uploadItem);\n onChange?.(respValue as unknown as FileUploadItem[]);\n } else {\n onUploadError?.(respData.message as string);\n }\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = value !== undefined ? [...value] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item['uid'] || item[fieldNames.fileKey];\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n onUploadError?.();\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadValue([...info.fileList]);\n props.onUploadChange?.(info);\n });\n\n const onUploadPreview = hooks.useCallbackRef((file) => {\n onPreview?.({\n fileKey: file[fieldNames.fileKey],\n fileName: file[fieldNames.fileName],\n });\n });\n\n return (\n <Upload\n {...otherProps}\n onChange={onUploadChange}\n onPreview={onUploadPreview}\n fileList={uploadValue}\n className={classNames('v-file-upload', otherProps.className)}\n >\n {props.children}\n </Upload>\n );\n};\n","import { isArray } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { isUndefinedOrNull } from '@flatbiz/utils';\nimport { cloneElement, CSSProperties, FC } from 'react';\nimport './style.less';\n\nexport type FlexLayoutProps = {\n className?: string;\n fullIndex?: number | number[];\n direction?: 'vertical' | 'horizontal';\n onClick?: () => void;\n style?: CSSProperties;\n gap?: number;\n};\n/**\n * flex布局\n * 1. direction:默认值vertical\n * 2. gap间隙距离\n * 3. fullIndex:指定children数组索引值对象flex=1\n * 4. children添加key熟悉\n * @param props\n * @returns\n */\nexport const FlexLayout: FC<FlexLayoutProps> = (props) => {\n const childrens = (isArray(props.children) ? props.children : [props.children]) as JSX.Element[];\n const direction = props.direction || 'vertical';\n const gap = props.gap ? props.gap : 0;\n const fullIndexList = !isUndefinedOrNull(props.fullIndex)\n ? isArray(props.fullIndex)\n ? props.fullIndex\n : [props.fullIndex as number]\n : [];\n return (\n <div\n className={classNames('v-flex-layout', `v-flex-${direction}`, props.className)}\n style={props.style}\n onClick={props.onClick}\n >\n {childrens.map((children, index) => {\n const childrenStyle = children.props.style || {};\n const style = fullIndexList.includes(index) ? { flex: 1, ...childrenStyle } : childrenStyle;\n if (index < childrens.length - 1 && gap > 0) {\n if (direction === 'horizontal') {\n style.marginRight = gap;\n } else {\n style.marginBottom = gap;\n }\n }\n return cloneElement(children, { style, key: index });\n })}\n </div>\n );\n};\n","import { CSSProperties, VFC } from 'react';\n\nexport type GapProps = {\n height?: number;\n className?: string;\n style?: CSSProperties;\n};\n\n/**\n * 间隙组件\n * @param props\n * @returns\n */\nexport const Gap: VFC<GapProps> = (props) => {\n return <div style={{ height: props.height, ...props.style }} className={props.className} />;\n};\n","import { classNames } from '@dimjs/utils';\nimport { Tooltip } from 'antd';\nimport { CSSProperties, VFC } from 'react';\nimport './style.less';\n\nexport type IconWrapperProps = {\n hoverTips?: string;\n icon?: React.ReactNode;\n style?: CSSProperties;\n text?: string | React.ReactElement;\n className?: string;\n size?: 'small' | 'middle' | 'large';\n};\nexport const IconWrapper: VFC<IconWrapperProps> = (props) => {\n return (\n <Tooltip title={props.hoverTips}>\n <div\n className={classNames('icon-wrapper', `icon-wrapper-${props.size || 'middle'}`, props.className)}\n style={props.style}\n >\n {props.icon}\n {props.text ? <span className=\"icon-wrapper-text\">{props.text}</span> : null}\n </div>\n </Tooltip>\n );\n};\n","import { ModelType } from '@dimjs/model';\n\nexport interface ModalStateType {\n title?: string;\n /**\n * 显示modal\n */\n visible: boolean;\n /**\n * 用来处理form, `更新`的时候的传递当前item列表行的数据, 当`创建`的时候强制设置为 `undefined`\n */\n itemData?: Record<string, unknown> | null;\n operateType: 'create' | 'update' | 'view';\n pageLoading?: boolean;\n}\n\nexport interface ModalActionsParamType {\n openModalForm: Pick<ModalStateType, 'title' | 'itemData' | 'operateType' | 'pageLoading'>;\n closeModal: void;\n setModalItemData: Record<string, unknown>;\n}\n\n/**\n * @shared\n * 提供公共的modal处理, 通常用来表单编辑, 弹窗抽屉模式.\n * 注意全部理论上只允许一个modal实例存在,如需处理多个, 请自行实例话模型.\n */\nexport const ModalModel: ModelType<ModalStateType, ModalActionsParamType> = {\n actions: {\n openModalForm({ itemData, title, operateType, pageLoading }) {\n return (state) => {\n state.itemData = itemData;\n state.title = title;\n state.operateType = operateType;\n state.pageLoading = pageLoading;\n state.visible = true;\n };\n },\n closeModal() {\n return (state) => {\n state.visible = false;\n };\n },\n setModalItemData(params) {\n return (state) => {\n state.pageLoading = false;\n state.itemData = params;\n };\n },\n },\n state: {\n visible: false,\n title: '',\n operateType: 'view',\n },\n};\n","import { Button, ButtonProps, Space } from 'antd';\nimport { Fragment } from 'react';\n\nexport interface ModalOperationProps {\n loading?: boolean;\n okText?: string;\n cancelText?: string;\n onOk?: () => void;\n onCancel?: () => void;\n hideOkBtn?: boolean;\n okButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n cancelButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n}\n\nexport const ModalOperation = ({\n loading,\n okText = '保存',\n cancelText = '取消',\n onCancel,\n onOk,\n hideOkBtn,\n ...otherProps\n}: ModalOperationProps) => {\n return (\n <Fragment>\n <Space size=\"middle\">\n <Button {...otherProps.cancelButtonProps} className=\"cancel-btn\" onClick={onCancel}>\n {cancelText}\n </Button>\n {hideOkBtn != true && (\n <Button\n type=\"primary\"\n {...otherProps.okButtonProps}\n className=\"ok-btn\"\n onClick={onOk}\n loading={loading}\n >\n {okText}\n </Button>\n )}\n </Space>\n </Fragment>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Modal, ModalProps } from 'antd';\nimport { FC, useEffect } from 'react';\nimport { ModalOperation, ModalOperationProps } from './modal-operation';\nimport './style.less';\n\nexport type ModalFormProps = {\n className?: string;\n // 整个modal页面级的spinning <Page loading />\n pageLoading?: boolean;\n // 设置了 ModalProps footer属性后,operationProps配置将失效\n operationProps?: ModalOperationProps;\n footer?: null | React.ReactNode;\n} & Omit<\n ModalProps,\n | 'footer'\n | 'onOk'\n | 'okText'\n | 'cancelText'\n | 'okButtonProps'\n | 'cancelButtonProps'\n | 'okType'\n | 'confirmLoading'\n>;\n\nconst PageLoader = () => {\n return (\n <div className=\"modal-wraper-loader\">\n <div className=\"loader-wrapper\">\n <div className=\"loader-inner\" />\n <div className=\"loader-text\">LOADING</div>\n </div>\n </div>\n );\n};\n\n/**\n * 弹窗机制\n * ```\n * 1. 默认 destroyOnClose = true\n * 2. 默认 forceRender = false\n * ```\n */\nexport const ModalWraper: FC<ModalFormProps> = (props) => {\n const { pageLoading, className, width, children, footer, operationProps, ...otherProps } = props;\n\n useEffect(() => {\n console.error(\n '@flatbiz/antd库【ModalWraper】组件已经过期,请使用ModalWrapper替换包括ModalWraper=>ModalWrapper、createModalWraperModel=>createModalWrapperModel,如果使用ModalWrapper组件原用法需要调整',\n );\n }, []);\n\n return (\n <Modal\n className={classNames('modal-wraper', className)}\n keyboard={false}\n forceRender={false}\n destroyOnClose={true}\n {...otherProps}\n width={width || 600}\n footer={null}\n >\n <div className=\"modal-wraper-content\">\n {children}\n {pageLoading && <PageLoader />}\n </div>\n {footer !== null && (\n <div className=\"modal-wraper-content-footer\">\n {footer ? footer : <ModalOperation {...operationProps} />}\n </div>\n )}\n </Modal>\n );\n};\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { ModalActionsParamType, ModalModel, ModalStateType } from './modal.model';\n\n/**\n * 组件单词写错,请输入\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst modalModels: Record<string, API<ModelType<ModalStateType, ModalActionsParamType, any>>> = {};\n\n/**\n * modal弹窗模型\n * @param key 唯一值必传\n * @returns\n *\n * ```\n * 使用方式\n * const [modalState, modalActions] = createModalWraperModel('key值').useStore();\n * ```\n */\nexport const createModalWraperModel = (key: string) => {\n if (!modalModels[key]) {\n modalModels[key] = Model(ModalModel);\n }\n return modalModels[key];\n};\n\nexport * from './modal-wraper';\n","import { ModelType } from '@dimjs/model';\n\nexport interface ModalStateType {\n title?: string;\n /**\n * 显示modal\n */\n visible: boolean;\n /**\n * 用来处理form, `更新`的时候的传递当前item列表行的数据, 当`创建`的时候强制设置为 `undefined`\n */\n itemData?: Record<string, unknown> | null;\n operateType: 'create' | 'update' | 'view';\n pageLoading?: boolean;\n}\n\nexport interface ModalActionsParamType {\n openModalForm: Pick<ModalStateType, 'title' | 'itemData' | 'operateType' | 'pageLoading'>;\n closeModal: void;\n setModalItemData: Record<string, unknown>;\n}\n\n/**\n * @shared\n * 提供公共的modal处理, 通常用来表单编辑, 弹窗抽屉模式.\n * 注意全部理论上只允许一个modal实例存在,如需处理多个, 请自行实例话模型.\n */\nexport const ModalModel: ModelType<ModalStateType, ModalActionsParamType> = {\n actions: {\n openModalForm({ itemData, title, operateType, pageLoading }) {\n return (state) => {\n state.itemData = itemData;\n state.title = title;\n state.operateType = operateType;\n state.pageLoading = pageLoading;\n state.visible = true;\n };\n },\n closeModal() {\n return (state) => {\n state.visible = false;\n };\n },\n setModalItemData(params) {\n return (state) => {\n state.pageLoading = false;\n state.itemData = params;\n };\n },\n },\n state: {\n visible: false,\n title: '',\n operateType: 'view',\n },\n};\n","import { Button, ButtonProps, Space } from 'antd';\nimport { Fragment } from 'react';\n\nexport interface ModalOperationOldProps {\n loading?: boolean;\n okText?: string;\n cancelText?: string;\n onOk?: () => void;\n onCancel?: () => void;\n hideOkBtn?: boolean;\n okButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n cancelButtonProps?: Omit<ButtonProps, 'onClick' | 'loading' | 'className'>;\n}\n\nexport const ModalOperation = ({\n loading,\n okText = '保存',\n cancelText = '取消',\n onCancel,\n onOk,\n hideOkBtn,\n ...otherProps\n}: ModalOperationOldProps) => {\n return (\n <Fragment>\n <Space size=\"middle\">\n <Button {...otherProps.cancelButtonProps} className=\"cancel-btn\" onClick={onCancel}>\n {cancelText}\n </Button>\n {hideOkBtn != true && (\n <Button\n type=\"primary\"\n {...otherProps.okButtonProps}\n className=\"ok-btn\"\n onClick={onOk}\n loading={loading}\n >\n {okText}\n </Button>\n )}\n </Space>\n </Fragment>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Modal, ModalProps } from 'antd';\nimport { FC, Fragment } from 'react';\nimport { useEffectCustom } from '../hooks/use-effect-custom';\nimport { ModalOperation, ModalOperationOldProps } from './modal-operation';\nimport './style.less';\n\ntype ModalWrapperStaticMethods = {\n Content: typeof ModalWrapperContent;\n Footer: typeof ModalWrapperFooter;\n};\n\nexport type ModalWrapperProps = {\n className?: string;\n // 整个modal页面级的spinning <Page loading />\n pageLoading?: boolean;\n} & Omit<\n ModalProps,\n | 'footer'\n | 'onOk'\n | 'okText'\n | 'cancelText'\n | 'okButtonProps'\n | 'cancelButtonProps'\n | 'okType'\n | 'confirmLoading'\n>;\n\nconst PageLoader = () => {\n return (\n <div className=\"modal-wrapper-loader\">\n <div className=\"loader-wrapper\">\n <div className=\"loader-inner\" />\n <div className=\"loader-text\">LOADING</div>\n </div>\n </div>\n );\n};\n\nconst ModalWrapperContent: FC<{ operationProps?: ModalOperationOldProps }> = (props) => {\n return (\n <Fragment>\n <div className=\"modal-wrapper-content\">{props.children}</div>\n {props.operationProps ? (\n <ModalWrapperFooter>\n <ModalOperation {...props.operationProps} />\n </ModalWrapperFooter>\n ) : null}\n </Fragment>\n );\n};\n\nconst ModalWrapperFooter = (props) => {\n return <div className=\"modal-wrapper-footer\">{props.children}</div>;\n};\n\n/**\n * 弹窗机制\n * ```\n * 1. 默认 destroyOnClose = true\n * 2. 默认 forceRender = false\n * ```\n */\nexport const ModalWrapper: FC<ModalWrapperProps> & ModalWrapperStaticMethods = (props) => {\n const { pageLoading, className, width, children, ...otherProps } = props;\n\n useEffectCustom(() => {\n if (props['operationProps']) {\n throw new Error('ModalWrapper组件升级,参数operationProps用法变更,请及时更新');\n }\n }, []);\n\n return (\n <Modal\n className={classNames('modal-wrapper', className)}\n keyboard={false}\n forceRender={true}\n destroyOnClose={true}\n {...otherProps}\n width={width || 600}\n footer={null}\n >\n {children}\n {pageLoading && <PageLoader />}\n </Modal>\n );\n};\n\nModalWrapper.Content = ModalWrapperContent;\nModalWrapper.Footer = ModalWrapperFooter;\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { ModalActionsParamType, ModalModel, ModalStateType } from './modal.model';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst modalModels: Record<string, API<ModelType<ModalStateType, ModalActionsParamType, any>>> = {};\n\n/**\n * modal弹窗模型\n * @param key 唯一值必传\n * @returns\n *\n * ```\n * 使用方式\n * const [modalState, modalActions] = createModalWrapperModel('key值').useStore();\n * ```\n */\nexport const createModalWrapperModel = (key: string) => {\n if (!modalModels[key]) {\n modalModels[key] = Model(ModalModel);\n }\n return modalModels[key];\n};\n\nexport * from './modal-wrapper';\n","import { classNames } from '@dimjs/utils';\nimport { CSSProperties, FC } from 'react';\nimport './style.less';\n\nexport type PageFixedFooterProps = {\n className?: string;\n style?: CSSProperties;\n};\n\nexport const PageFixedFooter: FC<PageFixedFooterProps> = (props) => {\n return (\n <div className={classNames('page-fixed-footer', props.className)} style={props.style}>\n {props.children}\n </div>\n );\n};\n","export const Page404 = () => {\n return <div className=\"v-404\">404</div>;\n};\n","import './style.less';\n/**\n * 使用在Form组件上,预定义form-item label宽度\n */\nexport const formClassName = {\n label_width_70: 'form-label-70',\n label_width_80: 'form-label-80',\n label_width_90: 'form-label-90',\n label_width_100: 'form-label-100',\n label_width_110: 'form-label-110',\n label_width_120: 'form-label-120',\n label_width_130: 'form-label-130',\n label_width_auto: 'form-label-auto',\n};\n\n/**\n * 使用在Form.Item组件上,预定义form-item label宽度\n */\nexport const formItemClassName = {\n label_width_70: 'form-item-label-70',\n label_width_80: 'form-item-label-80',\n label_width_90: 'form-item-label-90',\n label_width_100: 'form-item-label-100',\n label_width_110: 'form-item-label-110',\n label_width_120: 'form-item-label-120',\n label_width_130: 'form-item-label-130',\n label_width_auto: 'form-item-label-auto',\n};\n","import { formClassName, formItemClassName } from './form';\n\n/**\n * 预定义className\n * ```\n * form: 使用在Form组件上,设置form-item label宽度\n * formItem: 使用在Form.Item组件上,设置form-item label宽度\n * ```\n */\nexport const preDefinedClassName = {\n form: formClassName,\n formItem: formItemClassName,\n};\n","import { classNames } from '@dimjs/utils';\nimport { CSSProperties, FC, ReactElement } from 'react';\nimport './style.less';\n\nexport type SimpleLayoutProps = {\n className?: string;\n style?: CSSProperties;\n title?: string | ReactElement;\n desc?: string | ReactElement;\n formLabelAlign?: 'left' | 'right';\n layoutType?: 'layer' | 'tight';\n titleLeftLine?: boolean;\n};\n\n/**\n * 简单布局\n * @param props\n * @returns\n * ```\n * 1. layoutType 布局类型\n * layer:分层布局\n * tight:紧凑布局\n * ```\n */\nexport const SimpleLayout: FC<SimpleLayoutProps> = (props) => {\n const labelAlign = props.formLabelAlign || 'right';\n const className = classNames(\n 'simple-layout',\n {\n 'simple-layout-tight': props.layoutType === 'tight',\n 'simple-layout-formlabel-left': labelAlign === 'left',\n },\n props.className,\n );\n\n const titleClassName = classNames('simple-layout-title', {\n 'simple-layout-title-sign': props.titleLeftLine,\n });\n\n return (\n <div className={className} style={props.style}>\n {props.title ? <div className={titleClassName}>{props.title}</div> : null}\n {props.desc ? <div className=\"simple-layout-desc\">{props.desc}</div> : null}\n {props.children ? <div className=\"simple-layout-content\">{props.children}</div> : null}\n </div>\n );\n};\n\nSimpleLayout.defaultProps = {\n titleLeftLine: true,\n layoutType: 'layer',\n};\n","import { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { FC, useEffect, useMemo, useState } from 'react';\n\nexport interface SmsCountDownProps {\n onSendRequest: () => Promise<void>; // 验证码请求函数\n totalTicks?: number; // 总倒计时,默认:60(s)\n duration?: number; // 倒计时间隔,默认:1000ms(1s)\n autoStart?: boolean; // 是否自动开始倒计时,默认:fasle,注意:不会自动调用 onSendRequest\n format?: string; // 倒计时格式化,默认:'{t}s'\n sendTxt?: string; // 文案,默认:'获取验证码'\n sentTxt?: string; // 倒计时完成文案,默认:'重新获取'\n processingTxt?: string; // 倒计时中文案,默认:'发送中...'\n onTick?: (time: number) => void; // 倒计时回调\n className?: string;\n}\nexport const SmsCountDown: FC<SmsCountDownProps> = (props) => {\n const [showMessage, setShowMessage] = useState<string>();\n\n const [running, setRunning] = useState(false);\n const [starting, setStarting] = useState(false);\n\n // 初始化设置有效\n const initConfig = useMemo<Omit<SmsCountDownProps, 'onSendRequest' | 'onTick' | 'className'>>(() => {\n return {\n sendTxt: props.sendTxt,\n sentTxt: props.sentTxt,\n processingTxt: props.processingTxt,\n format: props.format,\n autoStart: props.autoStart,\n totalTicks: props.totalTicks,\n duration: props.duration,\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const format = initConfig.format as string;\n const totalTicks = initConfig.totalTicks as number;\n const duration = initConfig.duration as number;\n\n const countdownFnc = hooks.useCountdownCallback(\n (num) => {\n const second = num / 1000;\n if (num > 0) {\n if (!running) {\n setRunning(true);\n }\n setShowMessage(format.replace('{t}', String(second)));\n props.onTick?.(second);\n } else if (num === 0) {\n setRunning(false);\n setStarting(false);\n props.onTick?.(second);\n setShowMessage(initConfig.sentTxt);\n }\n },\n totalTicks * 1000,\n { intervalTime: duration },\n );\n\n useEffect(() => {\n if (!initConfig.autoStart) {\n setShowMessage(initConfig.sendTxt);\n } else {\n countdownFnc();\n setStarting(true);\n setRunning(true);\n }\n }, [countdownFnc, initConfig]);\n\n const onStart = hooks.useCallbackRef(() => {\n if (running || starting) return;\n setStarting(true);\n setShowMessage(initConfig.processingTxt);\n void props\n .onSendRequest()\n .then(() => {\n setRunning(true);\n countdownFnc();\n })\n .catch(() => {\n setShowMessage(initConfig.sendTxt);\n setStarting(false);\n });\n });\n\n const className = classNames('v-count-down', props.className, {\n running,\n starting,\n });\n\n return (\n <div className={className} onClick={onStart}>\n {showMessage}\n </div>\n );\n};\n\nSmsCountDown.defaultProps = {\n totalTicks: 60,\n duration: 1000,\n autoStart: false,\n format: '{t}s',\n sendTxt: '获取验证码',\n sentTxt: '重新获取',\n processingTxt: '发送中...',\n};\n","import { classNames } from '@dimjs/utils';\nimport { Children, cloneElement, FC } from 'react';\nimport { useEffectCustom } from '../hooks';\nimport './style.less';\n\ntype StaticMethods = {\n Condition: typeof Condition;\n Operate: typeof Operate;\n Table: typeof Table;\n Footer: typeof Footer;\n};\n\nconst overdueConsole = () => {\n console.error('@flatbiz/antd库【TableFilterLayout】组件已经过期,请使用【SimpleLayout】组件替代');\n};\n\nexport type TableFilterLayoutProps = {\n className?: string;\n isFixed?: boolean;\n fullIndex?: number;\n};\n\nexport const TableFilterLayout: FC<TableFilterLayoutProps> & StaticMethods = (props) => {\n useEffectCustom(() => {\n overdueConsole();\n }, []);\n\n return (\n <div\n className={classNames(\n 'table-filter-layout',\n { 'table-filter-layout-flex': props.isFixed },\n props.className,\n )}\n >\n {Children.map(props.children, (item, index) => {\n if (props.isFixed && index === props.fullIndex) {\n return cloneElement(item as JSX.Element, { className: 'table-filter-layout-flex-full' });\n }\n return item;\n })}\n </div>\n );\n};\n\nconst Condition: FC<{ className?: string }> = (props) => {\n return <div className={classNames('table-filter-layout-condition', props.className)}>{props.children}</div>;\n};\n\nconst Operate: FC<{ className?: string }> = (props) => {\n return <div className={classNames('table-filter-layout-operate', props.className)}>{props.children}</div>;\n};\n\nconst Table: FC<{ className?: string }> = (props) => {\n return <div className={classNames('table-filter-layout-table', props.className)}>{props.children}</div>;\n};\nconst Footer: FC<{ className?: string }> = (props) => {\n return <div className={classNames('table-filter-layout-footer', props.className)}>{props.children}</div>;\n};\n\nTableFilterLayout.Condition = Condition;\nTableFilterLayout.Operate = Operate;\nTableFilterLayout.Table = Table;\nTableFilterLayout.Footer = Footer;\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeSelectProps } from 'antd';\n\nexport type ModelState = {\n treeSelectorList: TSetDefaultDefined<TreeSelectProps['treeData'], []>;\n queryIsEmpty: boolean;\n requestStatus?: 'request-pre' | 'request-success' | 'request-error';\n};\n\ntype ModelActionParams = {\n setSelectBoxList: ModelState['treeSelectorList'];\n resetSelectBoxList: void;\n changeRequestStatus: ModelState['requestStatus'];\n};\n\nconst defaultState: ModelState = {\n treeSelectorList: [],\n queryIsEmpty: false,\n};\n\nconst TreeSelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.treeSelectorList = params || [];\n state.requestStatus = 'request-success';\n };\n },\n resetSelectBoxList: () => {\n return (state) => {\n state.treeSelectorList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeSelectorWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, any>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeSelectorWrapperModel('key值').useStore();\n * ```\n */\nexport const treeSelectorWrapperModel = (key: string) => {\n if (!treeSelectorWrapperModels[key]) {\n treeSelectorWrapperModels[key] = Model(TreeSelectorWrapperModel);\n }\n return treeSelectorWrapperModels[key];\n};\n","import { isArray } from '@dimjs/lang';\nimport { TPlainObject, treeLeafParentsArray, treeToTiledArray } from '@flatbiz/utils';\nimport { TreeSelectProps } from 'antd';\n\nexport const getExpandedKeys = (\n value: string | number,\n treeList: TPlainObject[],\n fieldNames?: TreeSelectProps['fieldNames'],\n) => {\n if (!isArray(treeList) || treeList.length === 0) return [];\n const tiledArray = treeToTiledArray(treeList, fieldNames);\n return treeLeafParentsArray(value, tiledArray);\n};\n","import { RedoOutlined } from '@ant-design/icons';\nimport { isArray, isObject } from '@dimjs/lang';\nimport { extend } from '@dimjs/utils';\nimport { useEffectCustom } from '@flatbiz/antd';\nimport { isUndefinedOrNull, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Empty, message, TreeSelect, TreeSelectProps } from 'antd';\nimport { DependencyList, forwardRef, useEffect, useImperativeHandle, useMemo, useState } from 'react';\nimport { ModelState, treeSelectorWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeys } from './utils';\ntype TreeSelectorServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: any) => any;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: any) => TPlainObject[];\n};\n\nexport type TreeSelectorWrapperProps = Omit<\n TreeSelectProps,\n 'treeExpandedKeys' | 'treeData' | 'loading' | 'onTreeExpand'\n> & {\n modelKey: string;\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`treeSelectorList`后无效果\n */\n serviceConfig?: TreeSelectorServiceConfig;\n /**\n * 当设置treeSelectorList后,serviceConfig、onTreeSelectorListChange将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n treeSelectorList?: TreeSelectProps['treeData'];\n /**\n * 通过服务获取数据后回调,当设置`treeSelectorList`后无效果\n */\n onTreeSelectorListChange?: (treeSelectorList?: TreeSelectProps['treeData']) => void;\n /**\n * 添加全部选项\n * ```\n * 1. showAllOption = true,添加默认全部选项(value值为空字符串)\n * 2. 可自定义全部选项,例如:{ label: '全部', value: 'all' }\n * 3. 自定义字段会通过fieldNames转换后使用\n * 4. 多选操作时,最好不要设置全部选项\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n};\n\nexport type TreeSelectorWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeSelectorList: () => TreeSelectProps['treeData'];\n};\n\n/**\n * 树选择器包装组件\n * @param props\n * @returns\n * ```\n * 1. 当设置treeSelectorList属性后,serviceConfig、onTreeSelectorListChange将失效\n * ```\n */\nexport const TreeSelectorWrapper = forwardRef<TreeSelectorWrapperRefApi, TreeSelectorWrapperProps>(\n (props, ref) => {\n const {\n serviceConfig,\n effectDependencyList,\n onTreeSelectorListChange,\n treeSelectorList,\n modelKey,\n ...otherProps\n } = props;\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [loading, setLoading] = useState(false);\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeSelectorWrapperModel(modelKey).useStore();\n const requestPreKey = `request-pre-${props.modelKey}`;\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceResponseHandle = (respData) => {\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n return respDataList;\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n console.warn(`TreeSelectorWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-pre');\n const _respData = await newServiceConfig.onRequest?.(params);\n const respData = serviceResponseHandle(_respData) as TreeSelectProps['treeData'];\n setLoading(false);\n window[requestPreKey] = false;\n void actions.setSelectBoxList(respData || []);\n } catch (error) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n }\n } catch (error) {\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n });\n\n useEffectCustom(() => {\n if (state.treeSelectorList && state.requestStatus === 'request-success') {\n onTreeSelectorListChange?.(state.treeSelectorList);\n }\n }, [state.treeSelectorList, state.requestStatus]);\n\n useEffectCustom(() => {\n if (treeSelectorList) {\n void actions.setSelectBoxList(treeSelectorList);\n return;\n }\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n const realTimeState = treeSelectorWrapperModel(modelKey).getState();\n console.log('realTimeState', realTimeState.requestStatus);\n if (\n newEffectDependencyList.length > 0 ||\n (!window[requestPreKey] && realTimeState.requestStatus !== 'request-success')\n ) {\n void startDataSourceRequest();\n }\n }, newEffectDependencyList);\n\n useEffect(() => {\n if (!isUndefinedOrNull(props.value)) {\n const valueList = isArray(props.value) ? props.value : [props.value];\n if (valueList.length > 0 && state.treeSelectorList.length > 0) {\n let expandedKeys = [] as Array<string | number>;\n valueList.forEach((tempValue) => {\n const targetList = getExpandedKeys(\n tempValue as string | number,\n state.treeSelectorList,\n props.fieldNames,\n );\n expandedKeys = expandedKeys.concat(targetList.map((item) => item.value));\n });\n setTreeExpandedKeys((prev) => {\n const mergeList = expandedKeys.concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n }\n }\n }, [state.treeSelectorList, props.fieldNames, props.value]);\n\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.setSelectBoxList([]);\n },\n getTreeSelectorList: () => {\n return state.treeSelectorList;\n },\n };\n });\n\n const onTreeExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n const treeData = useMemo(() => {\n if (state.treeSelectorList.length === 0) return undefined;\n const fieldNames = { label: 'label', value: 'value', ...props.fieldNames };\n if (props.showAllOption === true) {\n const selectOptionsAll = {\n [`${fieldNames.label}`]: '全部',\n [`${fieldNames.value}`]: '',\n } as unknown as ModelState['treeSelectorList'][0];\n return [selectOptionsAll, ...state.treeSelectorList];\n } else if (isObject(props.showAllOption)) {\n return [\n props.showAllOption as unknown as ModelState['treeSelectorList'][0],\n ...state.treeSelectorList,\n ];\n }\n return state.treeSelectorList;\n }, [props.fieldNames, props.showAllOption, state.treeSelectorList]);\n\n return (\n <TreeSelect\n dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}\n showSearch={true}\n treeLine={true}\n {...otherProps}\n value={isUndefinedOrNull(props.value) ? undefined : props.value}\n treeExpandedKeys={treeExpandedKeys}\n treeData={treeData}\n loading={loading}\n onTreeExpand={onTreeExpand}\n style={{ width: '100%', ...otherProps.style }}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n notFoundContent={\n <NotFoundContent requestStatus={state.requestStatus} onAgainRequest={onAgainRequest} />\n }\n />\n );\n },\n);\n\nconst NotFoundContent = (props: {\n requestStatus?: ModelState['requestStatus'];\n onAgainRequest: () => void;\n}) => {\n const description = useMemo(() => {\n if (props.requestStatus === 'request-error') {\n return '数据查询异常';\n } else if (props.requestStatus === 'request-success') {\n return '暂无数据';\n }\n return '数据查询中';\n }, [props.requestStatus]);\n return (\n <Empty\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n description={description}\n className={'tree-selector-wrapper-empty'}\n >\n {props.requestStatus === 'request-error' && (\n <Button type=\"primary\" onClick={props.onAgainRequest}>\n 重新获取数据\n </Button>\n )}\n </Empty>\n );\n};\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeProps } from 'antd';\n\nexport type ModelState = {\n treeList: TSetDefaultDefined<TreeProps['treeData'], []>;\n queryIsEmpty: boolean;\n requestStatus?: 'request-pre' | 'request-success' | 'request-error';\n};\n\ntype ModelActionParams = {\n setTreeList: ModelState['treeList'];\n resetTreeList: void;\n changeRequestStatus: ModelState['requestStatus'];\n};\n\nconst defaultState: ModelState = {\n treeList: [],\n queryIsEmpty: false,\n};\n\nconst TreeWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setTreeList: (params) => {\n return (state) => {\n state.treeList = params || [];\n state.requestStatus = 'request-success';\n };\n },\n resetTreeList: () => {\n return (state) => {\n state.treeList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, any>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeWrapperModel('key值').useStore();\n * ```\n */\nexport const treeWrapperModel = (key: string) => {\n if (!treeWrapperModels[key]) {\n treeWrapperModels[key] = Model(TreeWrapperModel);\n }\n return treeWrapperModels[key];\n};\n","import { TPlainObject, treeLeafParentsArray, treeToTiledArray } from '@flatbiz/utils';\n\nexport const getExpandedKeys = (\n value: string | number,\n treeList: TPlainObject[],\n fieldNames?: { label?: string; value?: string; children?: string },\n) => {\n const tiledArray = treeToTiledArray(treeList, fieldNames);\n return treeLeafParentsArray(value, tiledArray);\n};\n","import { isArray } from '@dimjs/lang';\nimport { extend } from '@dimjs/utils';\nimport { useEffectCustom } from '@flatbiz/antd';\nimport { isUndefinedOrNull, TPlainObject, treeToTiledArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Empty, message, Spin, Tree, TreeProps } from 'antd';\nimport { DependencyList, forwardRef, useImperativeHandle, useMemo, useState } from 'react';\nimport { ModelState, treeWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeys } from './utils';\n\ntype TreeServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: any) => any;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: any) => TPlainObject[];\n};\n\nexport type TreeWrapperProps = Omit<\n TreeProps,\n | 'expandedKeys'\n | 'treeData'\n | 'onExpand'\n | 'selectedKeys'\n | 'checkedKeys'\n | 'onCheck'\n | 'onSelect'\n | 'defaultCheckedKeys'\n | 'defaultSelectedKeys'\n | 'fieldNames'\n> & {\n modelKey: string;\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n /**\n * 当设置selectorTreeList后,serviceConfig将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n selectorTreeList?: TreeProps['treeData'];\n value?: string | number | Array<string | number>;\n onChange?: (selectedKey: string | number | Array<string | number>) => void;\n fieldNames?: { label?: string; value?: string; children?: string };\n /**\n * 打开tree折叠过滤关键字\n */\n filterLabel?: string;\n};\n\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\n};\n\n/**\n * 树包装组件\n * @param props\n * @returns\n * ```\n * 1. 当设置selectorTreeList属性后,serviceConfig将失效\n * ```\n */\nexport const TreeWrapper = forwardRef<TreeWrapperRefApi, TreeWrapperProps>((props, ref) => {\n const {\n serviceConfig,\n effectDependencyList,\n selectorTreeList,\n value,\n onChange,\n fieldNames,\n modelKey,\n ...otherProps\n } = props;\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeWrapperModel(modelKey).useStore();\n const [loading, setLoading] = useState(false);\n\n const valueList = useMemo(() => {\n if (isUndefinedOrNull(props.value)) return undefined;\n return (isArray(props.value) ? props.value : [props.value]) as Array<string | number>;\n }, [props.value]);\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceResponseHandle = (respData) => {\n const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n return respDataList;\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n console.warn(`TreeWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n void actions.changeRequestStatus('request-pre');\n const _respData = await newServiceConfig.onRequest?.(params);\n const respData = serviceResponseHandle(_respData) as TreeProps['treeData'];\n void actions.setTreeList(respData || []);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n void actions.changeRequestStatus('request-error');\n }\n } catch (error) {\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n });\n\n useEffectCustom(() => {\n if (selectorTreeList) {\n void actions.setTreeList(selectorTreeList);\n return;\n }\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n const realTimeState = treeWrapperModel(modelKey).getState();\n if (\n newEffectDependencyList.length > 0 ||\n !realTimeState.requestStatus ||\n realTimeState.requestStatus === 'request-error'\n ) {\n void startDataSourceRequest();\n }\n }, newEffectDependencyList);\n\n useEffectCustom(() => {\n if (valueList && valueList.length > 0 && state.treeList.length > 0 && !treeExpandedKeys) {\n let expandedKeys = [] as Array<string | number>;\n valueList.forEach((tempValue) => {\n const targetList = getExpandedKeys(tempValue, state.treeList, props.fieldNames);\n expandedKeys = expandedKeys.concat(targetList.map((item) => item.value));\n });\n setTreeExpandedKeys((prev) => {\n const mergeList = expandedKeys.concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n }\n }, [state.treeList, props.fieldNames, value]);\n\n hooks.useUpdateEffect(() => {\n if (props.filterLabel) {\n const tiledArray = treeToTiledArray(state.treeList || [], props.fieldNames);\n const targetList = tiledArray.filter((item) => item.label?.includes(props.filterLabel || ''));\n let expandedKeys = [] as Array<string | number>;\n targetList.map((tempItem) => {\n const targetValues = getExpandedKeys(\n tempItem.value as string,\n state.treeList || [],\n props.fieldNames,\n );\n const valueList = targetValues.map((item) => item.value);\n expandedKeys = expandedKeys.concat(valueList);\n });\n setTreeExpandedKeys(Array.from(new Set(expandedKeys)));\n } else {\n setTreeExpandedKeys([]);\n }\n }, [props.filterLabel]);\n\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.resetTreeList();\n },\n getTreeDataList: () => {\n return state.treeList;\n },\n };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n const onCheck = hooks.useCallbackRef((checkedKeys) => {\n onChange?.(checkedKeys as Array<string | number>);\n });\n const onSelect = hooks.useCallbackRef((checkedKeys) => {\n if (props.multiple) {\n onChange?.(checkedKeys as Array<string | number>);\n } else {\n onChange?.(checkedKeys[0] as string | number);\n }\n });\n\n const treeFieldNames = useMemo(() => {\n const newFieldNames = extend({ label: 'label', value: 'value', children: 'children' }, fieldNames);\n return { title: newFieldNames.label, key: newFieldNames.value, children: newFieldNames.children };\n }, [fieldNames]);\n\n if (state.treeList.length > 0) {\n return (\n <Tree\n showLine={otherProps.checkable ? false : { showLeafIcon: false }}\n {...otherProps}\n fieldNames={treeFieldNames}\n expandedKeys={treeExpandedKeys}\n treeData={state.treeList}\n onExpand={onExpand}\n selectedKeys={otherProps.checkable ? undefined : valueList}\n checkedKeys={otherProps.checkable ? valueList : undefined}\n onCheck={otherProps.checkable ? onCheck : undefined}\n onSelect={otherProps.checkable ? undefined : onSelect}\n style={{ width: '100%', ...otherProps.style }}\n />\n );\n }\n\n return (\n <NotFoundContent\n requestStatus={state.requestStatus}\n loading={loading}\n onAgainRequest={startDataSourceRequest}\n />\n );\n});\n\nconst NotFoundContent = (props: {\n requestStatus?: ModelState['requestStatus'];\n onAgainRequest: () => void;\n loading: boolean;\n}) => {\n const description = useMemo(() => {\n if (props.requestStatus === 'request-error') {\n return '数据查询异常';\n } else if (props.requestStatus === 'request-success') {\n return '暂无数据';\n }\n return '数据查询中';\n }, [props.requestStatus]);\n return (\n <div className=\"tree-wrapper-empty\">\n <Spin spinning={props.loading}></Spin>\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={description}>\n {props.requestStatus === 'request-error' && (\n <Button type=\"primary\" onClick={props.onAgainRequest}>\n 重新获取数据\n </Button>\n )}\n </Empty>\n </div>\n );\n};\n"],"names":["styles","noop","getPermissionList","_getGlobalData","getGlobalData","elemAclLimits","permissionList","_isArray","hasPermission","name","includes","Permission","props","_jsx","Fragment","children","ButtonOperate","className","Space","split","Divider","type","size","wrap","_isUndefined","operateList","map","item","index","text","color","onClick","permission","needConfirm","confirmMessage","hidden","style","otherProps","_excluded","newStyle","_extends","Popconfirm","title","okText","cancelText","onConfirm","arrowPointAtCenter","Button","undefined","danger","_createElement","key","defaultProps","DatePickerWrapper","value","onChange","format","useMemo","showTime","onChangeDate","_hooks","useCallbackRef","moment","getDisabledDate","current","currentDate","disabledDateConfig","minDate","maxDate","isBefore","isAfter","datePickerValue","flatbizDate","dateNormalize","DatePicker","disabledDate","width","DateRangePickerWrapper","_useState","useState","startEndDateList","setStartEndDateList","values","value1","_ref","value2","onCalendarChange","data","maxDays","startDate","endDate","selectableMaxDate","clone","add","selectableMinDate","subtract","date1","_ref2","date2","rangePickerValue","newDate1","newDate2","RangePicker","DrawerModel","actions","openDrawerForm","itemData","operateType","pageLoading","state","visible","closeDrawer","setDrawerItemData","params","DrawerOperation","_jsxs","cancelButtonProps","onCancel","hideOkBtn","icon","_SaveOutlined","okButtonProps","onOk","loading","PageLoader","DrawerWraper","_props$width","footer","operationProps","useEffect","console","error","Drawer","_classNames","keyboard","forceRender","destroyOnClose","contentWrapperStyle","maxWidth","drawerModels","createDrawerWraperModel","Model","useEffectCustom","fn","deps","useEffectCustomAsync","asyncFunction","Promise","$return","$error","then","$await_1","$boundEx","DrawerWrapperContent","DrawerWrapperFooter","DrawerWrapper","Error","Content","Footer","createDrawerWrapperModel","getEditable","editable","tableRowIndex","CheckboxGroupFormItemContent","fieldConfig","editableConfig","render","editableComptProps","viewLabelList","options","length","label","returnList","forEach","target","find","temp","push","Checkbox","Group","tag","Tag","CheckboxGroupFormItem","formItemProps","Form","Item","DatePickerWrapperFormItem","FormItemContent","viewLabel","join","DateRangePickerWrapperFormItem","InputFormItem","Input","InputNumberFormItem","InputNumber","RadioGroupFormItemContent","e","Radio","RadioGroupFormItem","defaultState","selectorList","originalSelectorList","queryIsEmpty","requestStatus","_SelectorWrapperModel","setSelectBoxList","resetSelectBoxList","changeRequestStatus","selectorWrapperModels","selectorWrapperModel","SelectorWrapper","forwardRef","ref","serviceConfig","showAllOption","effectDependencyList","onSelectorListChange","searchFieldName","modelKey","fieldNames","isSearch","newServiceConfig","newEffectDependencyList","changeOperateValueRef","useRef","setLoading","_selectorWrapperModel","useStore","requestPreKey","valueIsEmpty","isUndefinedOrNull","serviceRespDataAdapter","respData","respDataList","onRequestResultAdapter","startDataSourceRequest","inputValue","searchId","requiredParamsKeys","_params","isEmpty","keyword","_respData","respAdapterData","respDataTranslation","$Try_1_Post","$Try_1_Catch","message","onRequest","_extend","warn","$Try_2_Post","$Try_2_Catch","window","$await_3","arrayField2LabelValue","realTimeState","getState","concat","useImperativeHandle","onClearSelectorList","getSelectorList","filterOption","input","option","toLowerCase","indexOf","onSearch","useDebounceCallback","_len","arguments","otherParams","Array","_key","onAgainRequest","selectOptionsAll","Select","Option","showSearch","allowClear","notFoundContent","NotFoundContent","suffixIcon","_RedoOutlined","spin","onLabelRenderAdapter","description","Empty","image","PRESENTED_IMAGE_SIMPLE","setSelectorList","_useState2","setviewLabelList","String","dataList","display","SelectorWrapperFormItem","FormItemTextContent","_props$fieldConfig2","_props$fieldConfig3","_props$fieldConfig","isBaseData","_isString","_isNumber","_isBoolean","JSON","stringify","TextFormItem","noStyle","TextAreaFormItem","TextArea","UploadWrapper","onUploadError","uploadList","setUploadList","uid","url","onUploadChange","info","fileList","file","status","response","code","result","maxCount","targetList","targetIndex","findIndex","tempUid","splice","Upload","disabled","UploadTrigger","listType","marginTop","ghost","UploadWrapperFormItemContent","_objectWithoutPropertiesLoose","_editableComptProps","UploadWrapperFormItem","FormItemAdapter","newEditable","commomProps","completeName","FormList","from","useFormInstance","formListConfig","onFormListBeforeRender","editableConfigList","onFormListAfterRender","onFormListItemBeforeRender","onFormListItemAfterRender","deleteOperateRender","List","fields","remove","_Fragment","getFieldValue","fieldChild","hasEditable","formListItemIndex","fieldItem","fieldName","DeleteFormListItem","_DeleteOutlined","FormListItem","EditableTable","_props$tableProps2","columns","columnItem","operateRender","otherColumnItem","onCell","_props$tableProps","valign","tableProps","cellVerticalAlign","_value","record","operation","dataIndex","rules","formListOperation","onTableBeforeRender","Table","scroll","x","pagination","dataSource","rowKey","onTableAfterRender","block","_PlusOutlined","FileImport","onImportFinish","showUploadList","accept","FileUpload","onPreview","uploadValue","setUploadValue","fileKey","fileName","thumbUrl","uploadItem","respValue","onUploadPreview","FlexLayout","childrens","direction","gap","fullIndexList","fullIndex","childrenStyle","flex","marginRight","marginBottom","cloneElement","Gap","height","IconWrapper","Tooltip","hoverTips","ModalModel","openModalForm","closeModal","setModalItemData","ModalOperation","_ref$okText","_ref$cancelText","ModalWraper","Modal","modalModels","createModalWraperModel","ModalWrapperContent","ModalWrapperFooter","ModalWrapper","createModalWrapperModel","PageFixedFooter","Page404","formClassName","label_width_70","label_width_80","label_width_90","label_width_100","label_width_110","label_width_120","label_width_130","label_width_auto","formItemClassName","preDefinedClassName","form","formItem","SimpleLayout","labelAlign","formLabelAlign","layoutType","titleClassName","titleLeftLine","desc","SmsCountDown","showMessage","setShowMessage","running","setRunning","starting","_useState3","setStarting","initConfig","sendTxt","sentTxt","processingTxt","autoStart","totalTicks","duration","countdownFnc","useCountdownCallback","num","second","replace","onTick","intervalTime","onStart","onSendRequest","catch","overdueConsole","TableFilterLayout","isFixed","Children","Condition","Operate","treeSelectorList","TreeSelectorWrapperModel","treeSelectorWrapperModels","treeSelectorWrapperModel","getExpandedKeys","treeList","tiledArray","treeToTiledArray","treeLeafParentsArray","TreeSelectorWrapper","onTreeSelectorListChange","treeExpandedKeys","setTreeExpandedKeys","_treeSelectorWrapperM","serviceResponseHandle","_respData2","log","valueList","expandedKeys","tempValue","prev","mergeList","Set","getTreeSelectorList","onTreeExpand","treeData","_selectOptionsAll","_isObject","TreeSelect","dropdownStyle","maxHeight","overflow","treeLine","TreeWrapperModel","setTreeList","resetTreeList","treeWrapperModels","treeWrapperModel","TreeWrapper","selectorTreeList","_treeWrapperModel$use","useUpdateEffect","filterLabel","filter","_item$label","tempItem","targetValues","getTreeDataList","onExpand","onCheck","checkedKeys","onSelect","multiple","treeFieldNames","newFieldNames","Tree","showLine","checkable","showLeafIcon","selectedKeys","Spin","spinning"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flatbiz/antd",
3
- "version": "2.3.30",
3
+ "version": "2.3.31",
4
4
  "description": "flat-biz oss ui components",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -49,5 +49,5 @@
49
49
  "react-router": "^6.3.0",
50
50
  "react-router-dom": "^6.3.0"
51
51
  },
52
- "gitHead": "ef497b53b84d4ff00986cd82f3340d52bc07ef6f"
52
+ "gitHead": "1a79b22269f4ecb107be8bbb780ef13407b61418"
53
53
  }