villianjs-pro 1.0.12 → 1.0.14

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.
Files changed (39) hide show
  1. package/dist/Beyond/list.js +1 -1
  2. package/dist/List/list-container.js +1 -1
  3. package/dist/TabSelector/TabSelector.js +1 -1
  4. package/dist/TabSelector/modal.js +1 -1
  5. package/dist/imports/components/import-detail-dialog.d.ts +18 -0
  6. package/dist/imports/components/import-detail-dialog.js +1 -0
  7. package/dist/imports/components/import-history-dialog.d.ts +14 -0
  8. package/dist/imports/components/import-history-dialog.js +1 -0
  9. package/dist/imports/components/import-modal.d.ts +19 -0
  10. package/dist/imports/components/import-modal.js +1 -0
  11. package/dist/imports/components/import-progress-step.d.ts +13 -0
  12. package/dist/imports/components/import-progress-step.js +1 -0
  13. package/dist/imports/components/import-result-step.d.ts +8 -0
  14. package/dist/imports/components/import-result-step.js +1 -0
  15. package/dist/imports/components/progress-steps.d.ts +8 -0
  16. package/dist/imports/components/progress-steps.js +1 -0
  17. package/dist/imports/components/stat-card.d.ts +8 -0
  18. package/dist/imports/components/stat-card.js +1 -0
  19. package/dist/imports/components/upload-progress-step.d.ts +6 -0
  20. package/dist/imports/components/upload-progress-step.js +1 -0
  21. package/dist/imports/components/upload-step.d.ts +10 -0
  22. package/dist/imports/components/upload-step.js +1 -0
  23. package/dist/imports/context/import-context.d.ts +56 -0
  24. package/dist/imports/context/import-context.js +1 -0
  25. package/dist/imports/imports.d.ts +25 -0
  26. package/dist/imports/imports.js +1 -0
  27. package/dist/imports/index.d.ts +6 -0
  28. package/dist/imports/index.js +1 -0
  29. package/dist/imports/types.d.ts +133 -0
  30. package/dist/imports/types.js +1 -0
  31. package/dist/imports/utils/date.d.ts +7 -0
  32. package/dist/imports/utils/date.js +1 -0
  33. package/dist/imports/utils/error-handler.d.ts +17 -0
  34. package/dist/imports/utils/error-handler.js +1 -0
  35. package/dist/imports/utils/styles.d.ts +43 -0
  36. package/dist/imports/utils/styles.js +1 -0
  37. package/dist/locale/langs/en-us/index.js +1 -1
  38. package/dist/locale/langs/zh-cn/index.js +1 -1
  39. package/package.json +1 -1
@@ -1 +1 @@
1
- function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}import{Flex,Popover,Tag}from"antd";import*as React from"react";import{forwardRef,useImperativeHandle}from"react";import{useComponentConfig}from"antd/es/config-provider/context";import useStyle from"./styles";import classNames from"classnames";import{EllipsisOutlined}from"@ant-design/icons";export var BeyondListModal=forwardRef(function(props,ref){var customizePrefixCls=props.prefixCls,className=props.className,style=props.style,_props_gap=props.gap,gap=_props_gap===void 0?7:_props_gap,_props_ellipsis=props.ellipsis,ellipsis=_props_ellipsis===void 0?false:_props_ellipsis,_props_maxVisibleItems=props.maxVisibleItems,maxVisibleItems=_props_maxVisibleItems===void 0?3:_props_maxVisibleItems,itemRender=props.itemRender,popoverContent=props.popoverContent,hideContainerStyle=props.hideContainerStyle,_props_dataSource=props.dataSource,dataSource=_props_dataSource===void 0?[]:_props_dataSource,_props_mode=props.mode,mode=_props_mode===void 0?"popover":_props_mode,onEllipsisClick=props.onEllipsisClick;var getPrefixCls=useComponentConfig("tags-modal").getPrefixCls;var prefixCls=getPrefixCls("tags-modal",customizePrefixCls);var _useStyle=_sliced_to_array(useStyle(prefixCls),3),wrapCSSVar=_useStyle[0],hashId=_useStyle[1],cssVarCls=_useStyle[2];var _React_useState=_sliced_to_array(React.useState(dataSource||[]),2),selectedItems=_React_useState[0],setSelectedItems=_React_useState[1];var setValues=function(values){setSelectedItems(values)};useImperativeHandle(ref,function(){return{setValues:setValues,close:function(){}}});var shouldShowEllipsis=ellipsis&&selectedItems.length>maxVisibleItems;var visibleItems=shouldShowEllipsis?selectedItems.slice(0,maxVisibleItems):selectedItems;var hiddenItems=shouldShowEllipsis?selectedItems.slice(maxVisibleItems):[];return wrapCSSVar(React.createElement(Flex,{className:classNames(prefixCls,className,cssVarCls,hashId),gap:gap,justify:"start",align:"center",wrap:true,style:style},visibleItems.map(itemRender),shouldShowEllipsis&&hiddenItems.length>0&&React.createElement(Popover,{content:popoverContent?popoverContent(hiddenItems):React.createElement(Flex,{gap:gap,style:hideContainerStyle},hiddenItems.map(itemRender)),trigger:"click",open:mode==="custom"?false:undefined},React.createElement(Tag,{bordered:false,style:{cursor:"pointer"},onClick:function(e){e.stopPropagation();e.preventDefault();onEllipsisClick===null||onEllipsisClick===void 0?void 0:onEllipsisClick(hiddenItems,selectedItems)},title:"更多"},"+",hiddenItems.length,React.createElement(EllipsisOutlined,null)))))});
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}import{Flex,Popover,Tag}from"antd";import*as React from"react";import{forwardRef,useImperativeHandle}from"react";import{useComponentConfig}from"antd/es/config-provider/context";import useStyle from"./styles";import classNames from"classnames";import{EllipsisOutlined}from"@ant-design/icons";import{useLocale}from"../locale";export var BeyondListModal=forwardRef(function(props,ref){var customizePrefixCls=props.prefixCls,className=props.className,style=props.style,_props_gap=props.gap,gap=_props_gap===void 0?7:_props_gap,_props_ellipsis=props.ellipsis,ellipsis=_props_ellipsis===void 0?false:_props_ellipsis,_props_maxVisibleItems=props.maxVisibleItems,maxVisibleItems=_props_maxVisibleItems===void 0?3:_props_maxVisibleItems,itemRender=props.itemRender,popoverContent=props.popoverContent,hideContainerStyle=props.hideContainerStyle,_props_dataSource=props.dataSource,dataSource=_props_dataSource===void 0?[]:_props_dataSource,_props_mode=props.mode,mode=_props_mode===void 0?"popover":_props_mode,onEllipsisClick=props.onEllipsisClick;var getPrefixCls=useComponentConfig("tags-modal").getPrefixCls;var prefixCls=getPrefixCls("tags-modal",customizePrefixCls);var _useStyle=_sliced_to_array(useStyle(prefixCls),3),wrapCSSVar=_useStyle[0],hashId=_useStyle[1],cssVarCls=_useStyle[2];var messages=useLocale().messages;var _React_useState=_sliced_to_array(React.useState(dataSource||[]),2),selectedItems=_React_useState[0],setSelectedItems=_React_useState[1];var setValues=function(values){setSelectedItems(values)};useImperativeHandle(ref,function(){return{setValues:setValues,close:function(){}}});var shouldShowEllipsis=ellipsis&&selectedItems.length>maxVisibleItems;var visibleItems=shouldShowEllipsis?selectedItems.slice(0,maxVisibleItems):selectedItems;var hiddenItems=shouldShowEllipsis?selectedItems.slice(maxVisibleItems):[];return wrapCSSVar(React.createElement(Flex,{className:classNames(prefixCls,className,cssVarCls,hashId),gap:gap,justify:"start",align:"center",wrap:true,style:style},visibleItems.map(itemRender),shouldShowEllipsis&&hiddenItems.length>0&&React.createElement(Popover,{content:popoverContent?popoverContent(hiddenItems):React.createElement(Flex,{gap:gap,style:hideContainerStyle},hiddenItems.map(itemRender)),trigger:"click",open:mode==="custom"?false:undefined},React.createElement(Tag,{bordered:false,style:{cursor:"pointer"},onClick:function(e){e.stopPropagation();e.preventDefault();onEllipsisClick===null||onEllipsisClick===void 0?void 0:onEllipsisClick(hiddenItems,selectedItems)},title:messages.beyond.more},"+",hiddenItems.length,React.createElement(EllipsisOutlined,null)))))});
@@ -1 +1 @@
1
- function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}import{useState,useEffect,forwardRef,useImperativeHandle}from"react";import{Row,Col,Pagination,Spin,Empty,Flex}from"antd";function ListContainerInner(props,ref){var searchArea=props.searchArea,renderItem=props.renderItem,rowKey=props.rowKey,_props_colProps=props.colProps,colProps=_props_colProps===void 0?{xs:24,sm:12,md:8,lg:6,xl:6}:_props_colProps,_props_paginationAlign=props.paginationAlign,paginationAlign=_props_paginationAlign===void 0?"center":_props_paginationAlign,tmp=props.pageSize,initialPageSize=tmp===void 0?10:tmp,_props_showSizeChanger=props.showSizeChanger,showSizeChanger=_props_showSizeChanger===void 0?true:_props_showSizeChanger,_props_pageSizeOptions=props.pageSizeOptions,pageSizeOptions=_props_pageSizeOptions===void 0?[10,20,50,100]:_props_pageSizeOptions,fetchData=props.fetchData,_props_extraParams=props.extraParams,extraParams=_props_extraParams===void 0?{}:_props_extraParams,_props_gutter=props.gutter,gutter=_props_gutter===void 0?[16,16]:_props_gutter,externalLoading=props.loading,_props_emptyText=props.emptyText,emptyText=_props_emptyText===void 0?"暂无数据":_props_emptyText,className=props.className,listWrapperStyle=props.listWrapperStyle;var _useState=_sliced_to_array(useState([]),2),data=_useState[0],setData=_useState[1];var _useState1=_sliced_to_array(useState(0),2),total=_useState1[0],setTotal=_useState1[1];var _useState2=_sliced_to_array(useState(1),2),page=_useState2[0],setPageState=_useState2[1];var _useState3=_sliced_to_array(useState(initialPageSize),2),pageSize=_useState3[0],setPageSizeState=_useState3[1];var _useState4=_sliced_to_array(useState(false),2),loading=_useState4[0],setLoading=_useState4[1];var loadData=function(){return _async_to_generator(function(){var result,error;return _ts_generator(this,function(_state){switch(_state.label){case 0:setLoading(true);_state.label=1;case 1:_state.trys.push([1,3,4,5]);return[4,fetchData(_object_spread({page:page,pageSize:pageSize},extraParams))];case 2:result=_state.sent();setData(result.data);setTotal(result.total);return[3,5];case 3:error=_state.sent();console.error("Failed to fetch data:",error);setData([]);setTotal(0);return[3,5];case 4:setLoading(false);return[7];case 5:return[2]}})})()};useEffect(function(){loadData()},[page,pageSize,JSON.stringify(extraParams)]);var reset=function(){setPageState(1);setPageSizeState(initialPageSize)};var setPage=function(newPage){setPageState(newPage)};var setPageSize=function(newPageSize){setPageState(1);setPageSizeState(newPageSize)};var refresh=function(){loadData()};useImperativeHandle(ref,function(){return{reset:reset,setPage:setPage,setPageSize:setPageSize,refresh:refresh}});var getKey=function(item,index){if(typeof rowKey==="function"){return rowKey(item)}if(typeof rowKey==="string"&&item&&(typeof item==="undefined"?"undefined":_type_of(item))==="object"){return item[rowKey]}return index};var handlePaginationChange=function(newPage,newPageSize){if(newPageSize!==pageSize){setPageSize(newPageSize)}else{setPage(newPage)}};var paginationAlignStyle={left:"flex-start",center:"center",right:"flex-end"}[paginationAlign];var isLoading=externalLoading!==undefined?externalLoading:loading;return React.createElement(Flex,{className:" ".concat(className||""),vertical:true,gap:4},searchArea&&React.createElement("div",{className:"bg-card rounded-lg border border-border p-4"},searchArea),React.createElement("div",{className:"bg-card rounded-lg border border-border p-4 min-h-[400px]",style:listWrapperStyle},isLoading?React.createElement(Spin,{spinning:true}):data.length===0?React.createElement(Empty,null):React.createElement(Row,{gutter:gutter},data.map(function(item,index){return React.createElement(Col,_object_spread({key:getKey(item,index)},colProps),renderItem(item,index))}))),total>0&&React.createElement("div",{className:"flex bg-card rounded-lg border border-border p-4",style:{justifyContent:paginationAlignStyle}},React.createElement(Pagination,{current:page,pageSize:pageSize,total:total,onChange:handlePaginationChange,showSizeChanger:showSizeChanger,pageSizeOptions:pageSizeOptions,showTotal:function(total){return"共 ".concat(total," 条")}})))}export var ListContainer=forwardRef(ListContainerInner);export default ListContainer;
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}import{useState,useEffect,forwardRef,useImperativeHandle}from"react";import{Row,Col,Pagination,Spin,Empty,Flex}from"antd";import{useLocale}from"../locale";function ListContainerInner(props,ref){var messages=useLocale().messages;var searchArea=props.searchArea,renderItem=props.renderItem,rowKey=props.rowKey,_props_colProps=props.colProps,colProps=_props_colProps===void 0?{xs:24,sm:12,md:8,lg:6,xl:6}:_props_colProps,_props_paginationAlign=props.paginationAlign,paginationAlign=_props_paginationAlign===void 0?"center":_props_paginationAlign,tmp=props.pageSize,initialPageSize=tmp===void 0?10:tmp,_props_showSizeChanger=props.showSizeChanger,showSizeChanger=_props_showSizeChanger===void 0?true:_props_showSizeChanger,_props_pageSizeOptions=props.pageSizeOptions,pageSizeOptions=_props_pageSizeOptions===void 0?[10,20,50,100]:_props_pageSizeOptions,fetchData=props.fetchData,_props_extraParams=props.extraParams,extraParams=_props_extraParams===void 0?{}:_props_extraParams,_props_gutter=props.gutter,gutter=_props_gutter===void 0?[16,16]:_props_gutter,externalLoading=props.loading,emptyText=props.emptyText,className=props.className,listWrapperStyle=props.listWrapperStyle;var finalEmptyText=emptyText!==null&&emptyText!==void 0?emptyText:messages.list.emptyText;var _useState=_sliced_to_array(useState([]),2),data=_useState[0],setData=_useState[1];var _useState1=_sliced_to_array(useState(0),2),total=_useState1[0],setTotal=_useState1[1];var _useState2=_sliced_to_array(useState(1),2),page=_useState2[0],setPageState=_useState2[1];var _useState3=_sliced_to_array(useState(initialPageSize),2),pageSize=_useState3[0],setPageSizeState=_useState3[1];var _useState4=_sliced_to_array(useState(false),2),loading=_useState4[0],setLoading=_useState4[1];var loadData=function(){return _async_to_generator(function(){var result,error;return _ts_generator(this,function(_state){switch(_state.label){case 0:setLoading(true);_state.label=1;case 1:_state.trys.push([1,3,4,5]);return[4,fetchData(_object_spread({page:page,pageSize:pageSize},extraParams))];case 2:result=_state.sent();setData(result.data);setTotal(result.total);return[3,5];case 3:error=_state.sent();console.error("Failed to fetch data:",error);setData([]);setTotal(0);return[3,5];case 4:setLoading(false);return[7];case 5:return[2]}})})()};useEffect(function(){loadData()},[page,pageSize,JSON.stringify(extraParams)]);var reset=function(){setPageState(1);setPageSizeState(initialPageSize)};var setPage=function(newPage){setPageState(newPage)};var setPageSize=function(newPageSize){setPageState(1);setPageSizeState(newPageSize)};var refresh=function(){loadData()};useImperativeHandle(ref,function(){return{reset:reset,setPage:setPage,setPageSize:setPageSize,refresh:refresh}});var getKey=function(item,index){if(typeof rowKey==="function"){return rowKey(item)}if(typeof rowKey==="string"&&item&&(typeof item==="undefined"?"undefined":_type_of(item))==="object"){return item[rowKey]}return index};var handlePaginationChange=function(newPage,newPageSize){if(newPageSize!==pageSize){setPageSize(newPageSize)}else{setPage(newPage)}};var paginationAlignStyle={left:"flex-start",center:"center",right:"flex-end"}[paginationAlign];var isLoading=externalLoading!==undefined?externalLoading:loading;return React.createElement(Flex,{className:" ".concat(className||""),vertical:true,gap:4},searchArea&&React.createElement("div",{className:"bg-card rounded-lg border border-border p-4"},searchArea),React.createElement("div",{className:"bg-card rounded-lg border border-border p-4 min-h-[400px]",style:listWrapperStyle},isLoading?React.createElement(Spin,{spinning:true}):data.length===0?React.createElement(Empty,{description:finalEmptyText}):React.createElement(Row,{gutter:gutter},data.map(function(item,index){return React.createElement(Col,_object_spread({key:getKey(item,index)},colProps),renderItem(item,index))}))),total>0&&React.createElement("div",{className:"flex bg-card rounded-lg border border-border p-4",style:{justifyContent:paginationAlignStyle}},React.createElement(Pagination,{current:page,pageSize:pageSize,total:total,onChange:handlePaginationChange,showSizeChanger:showSizeChanger,pageSizeOptions:pageSizeOptions,showTotal:function(total){return messages.list.totalText.replace("{total}",String(total))}})))}export var ListContainer=forwardRef(ListContainerInner);export default ListContainer;
@@ -1 +1 @@
1
- function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}import{useState}from"react";import*as React from"react";import{theme}from"antd";import classNames from"classnames";import{Typography}from"../Text";import{useStyles}from"./styles";import{SelectedItemsDisplay}from"./selected-items-display";import{SelectorModal}from"./modal";export var TabSelector=function(param){var tabs=param.tabs,_param_value=param.value,value=_param_value===void 0?{}:_param_value,onChange=param.onChange,_param_placeholder=param.placeholder,placeholder=_param_placeholder===void 0?"点击选择项目...":_param_placeholder,_param_disabled=param.disabled,disabled=_param_disabled===void 0?false:_param_disabled,_param_readonly=param.readonly,readonly=_param_readonly===void 0?false:_param_readonly,columns=param.columns;var hashId=theme.useToken().hashId;var modalRef=React.useRef(null);var _useState=_sliced_to_array(useState(value),2),selectedData=_useState[0],setSelectedData=_useState[1];useStyles();var handleClick=function(){var _modalRef_current;if(disabled||readonly){return}if(!tabs||tabs&&tabs.length===0){console.error("未配置tabs");return}console.info("a");(_modalRef_current=modalRef.current)===null||_modalRef_current===void 0?void 0:_modalRef_current.open()};var handleConfirm=function(data){setSelectedData(data);onChange===null||onChange===void 0?void 0:onChange(data)};var handleRemoveItem=function(item){var newData=_object_spread({},selectedData);var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=Object.keys(newData)[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var tabKey=_step.value;var tabItems=newData[tabKey]||[];var itemIndex=tabItems.findIndex(function(selected){return selected.id===item.id});if(itemIndex!==-1){newData[tabKey]=tabItems.filter(function(selected){return selected.id!==item.id});break}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}setSelectedData(newData);onChange===null||onChange===void 0?void 0:onChange(newData)};var getAllSelectedItems=function(){return Object.values(selectedData).flat()};var getTotalCount=function(){return getAllSelectedItems().length};return React.createElement("div",{className:classNames(hashId,"vlian-tab-modal"),onClick:handleClick},getTotalCount()>0?React.createElement(SelectedItemsDisplay,{items:getAllSelectedItems(),onRemove:handleRemoveItem,compact:true}):React.createElement(Typography.Text,{type:"secondary"},placeholder),React.createElement(SelectorModal,{tabs:tabs,ref:modalRef,onConfirm:handleConfirm,initialValue:selectedData,columns:columns}))};
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}import{useState}from"react";import*as React from"react";import{theme}from"antd";import classNames from"classnames";import{Typography}from"../Text";import{useStyles}from"./styles";import{SelectedItemsDisplay}from"./selected-items-display";import{SelectorModal}from"./modal";import{useLocale}from"../locale";export var TabSelector=function(param){var tabs=param.tabs,_param_value=param.value,value=_param_value===void 0?{}:_param_value,onChange=param.onChange,placeholder=param.placeholder,_param_disabled=param.disabled,disabled=_param_disabled===void 0?false:_param_disabled,_param_readonly=param.readonly,readonly=_param_readonly===void 0?false:_param_readonly,columns=param.columns;var messages=useLocale().messages;var hashId=theme.useToken().hashId;var modalRef=React.useRef(null);var _useState=_sliced_to_array(useState(value),2),selectedData=_useState[0],setSelectedData=_useState[1];useStyles();var finalPlaceholder=placeholder!==null&&placeholder!==void 0?placeholder:messages.tabSelector.placeholder;var handleClick=function(){var _modalRef_current;if(disabled||readonly){return}if(!tabs||tabs&&tabs.length===0){console.error("未配置tabs");return}console.info("a");(_modalRef_current=modalRef.current)===null||_modalRef_current===void 0?void 0:_modalRef_current.open()};var handleConfirm=function(data){setSelectedData(data);onChange===null||onChange===void 0?void 0:onChange(data)};var handleRemoveItem=function(item){var newData=_object_spread({},selectedData);var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=Object.keys(newData)[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var tabKey=_step.value;var tabItems=newData[tabKey]||[];var itemIndex=tabItems.findIndex(function(selected){return selected.id===item.id});if(itemIndex!==-1){newData[tabKey]=tabItems.filter(function(selected){return selected.id!==item.id});break}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}setSelectedData(newData);onChange===null||onChange===void 0?void 0:onChange(newData)};var getAllSelectedItems=function(){return Object.values(selectedData).flat()};var getTotalCount=function(){return getAllSelectedItems().length};return React.createElement("div",{className:classNames(hashId,"vlian-tab-modal"),onClick:handleClick},getTotalCount()>0?React.createElement(SelectedItemsDisplay,{items:getAllSelectedItems(),onRemove:handleRemoveItem,compact:true}):React.createElement(Typography.Text,{type:"secondary"},finalPlaceholder),React.createElement(SelectorModal,{tabs:tabs,ref:modalRef,onConfirm:handleConfirm,initialValue:selectedData,columns:columns}))};
@@ -1 +1 @@
1
- function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}import{forwardRef,useImperativeHandle,useState,useEffect}from"react";import*as React from"react";import{Modal}from"../Modal";import{Tabs,Badge}from"antd";import{ProTable}from"@ant-design/pro-components";import{Typography}from"../Text";export var SelectorModal=forwardRef(function(param,ref){var _param_tabs=param.tabs,tabs=_param_tabs===void 0?[]:_param_tabs,initialValue=param.initialValue,onConfirm=param.onConfirm,columns=param.columns,_param_rowKey=param.rowKey,rowKey=_param_rowKey===void 0?"id":_param_rowKey,_param_width=param.width,width=_param_width===void 0?"800px":_param_width;var _tabs_;var _useState=_sliced_to_array(useState(false),2),open=_useState[0],setOpen=_useState[1];var _useState1=_sliced_to_array(useState(initialValue),2),selectedData=_useState1[0],setSelectedData=_useState1[1];var _useState2=_sliced_to_array(useState(((_tabs_=tabs[0])===null||_tabs_===void 0?void 0:_tabs_.key)||""),2),activeTab=_useState2[0],setActiveTab=_useState2[1];useEffect(function(){if(open){var _tabs_;setSelectedData(initialValue);setActiveTab(((_tabs_=tabs[0])===null||_tabs_===void 0?void 0:_tabs_.key)||"")}},[open,initialValue,tabs]);var handleSelectionChange=function(tabKey,items){setSelectedData(function(prev){return _object_spread_props(_object_spread({},prev),_define_property({},tabKey,items))})};var handleCancel=function(e){e===null||e===void 0?void 0:e.stopPropagation();e===null||e===void 0?void 0:e.preventDefault();setOpen(false)};var handleConfirm=function(e){e.stopPropagation();e.preventDefault();onConfirm===null||onConfirm===void 0?void 0:onConfirm(selectedData);handleCancel(e)};var getTotalSelectedCount=function(){return Object.values(selectedData).reduce(function(total,items){return total+items.length},0)};var getTabSelectedCount=function(tabKey){var _selectedData_tabKey;return((_selectedData_tabKey=selectedData[tabKey])===null||_selectedData_tabKey===void 0?void 0:_selectedData_tabKey.length)||0};useImperativeHandle(ref,function(){return{open:function(){setOpen(true)},close:function(){return handleCancel()}}});return React.createElement(Modal.CustomModal,{width:width,maxHeight:"80vh",title:React.createElement(Tabs,{activeKey:activeTab,items:tabs,onChange:setActiveTab}),open:open,maskClosable:false,keyboard:false,destroyOnHidden:true,okText:"确认选择 (".concat(getTotalSelectedCount()>0?getTotalSelectedCount():0,")"),onCancel:handleCancel,onOk:handleConfirm,getContainer:false,styles:{body:{padding:0}}},tabs.map(function(tab){return React.createElement(ProTable,{style:{display:activeTab!==tab.key?"none":"block"},cardProps:{bodyStyle:{padding:0}},key:tab.key,columns:columns,dataSource:tab.data,headerTitle:React.createElement(Typography,null,tab.label,React.createElement(Badge,null,getTabSelectedCount(tab.key)," ")),search:false,toolbar:{search:(tab===null||tab===void 0?void 0:tab.onSearch)?{onSearch:tab===null||tab===void 0?void 0:tab.onSearch,placeholder:"请输入关键字"}:undefined},options:false,rowKey:rowKey,rowSelection:{type:tab.selectionType,defaultSelectedRowKeys:(selectedData[tab.key]||[]).map(function(item){console.info("ad",item,item[rowKey]);return item[rowKey]}),onChange:function(_,selectedRows){handleSelectionChange(tab.key,selectedRows)}}})}))});
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}import{forwardRef,useImperativeHandle,useState,useEffect}from"react";import*as React from"react";import{Modal}from"../Modal";import{Tabs,Badge}from"antd";import{ProTable}from"@ant-design/pro-components";import{Typography}from"../Text";import{useLocale}from"../locale";export var SelectorModal=forwardRef(function(param,ref){var _param_tabs=param.tabs,tabs=_param_tabs===void 0?[]:_param_tabs,initialValue=param.initialValue,onConfirm=param.onConfirm,columns=param.columns,_param_rowKey=param.rowKey,rowKey=_param_rowKey===void 0?"id":_param_rowKey,_param_width=param.width,width=_param_width===void 0?"800px":_param_width;var _tabs_;var messages=useLocale().messages;var _useState=_sliced_to_array(useState(false),2),open=_useState[0],setOpen=_useState[1];var _useState1=_sliced_to_array(useState(initialValue),2),selectedData=_useState1[0],setSelectedData=_useState1[1];var _useState2=_sliced_to_array(useState(((_tabs_=tabs[0])===null||_tabs_===void 0?void 0:_tabs_.key)||""),2),activeTab=_useState2[0],setActiveTab=_useState2[1];useEffect(function(){if(open){var _tabs_;setSelectedData(initialValue);setActiveTab(((_tabs_=tabs[0])===null||_tabs_===void 0?void 0:_tabs_.key)||"")}},[open,initialValue,tabs]);var handleSelectionChange=function(tabKey,items){setSelectedData(function(prev){return _object_spread_props(_object_spread({},prev),_define_property({},tabKey,items))})};var handleCancel=function(e){e===null||e===void 0?void 0:e.stopPropagation();e===null||e===void 0?void 0:e.preventDefault();setOpen(false)};var handleConfirm=function(e){e.stopPropagation();e.preventDefault();onConfirm===null||onConfirm===void 0?void 0:onConfirm(selectedData);handleCancel(e)};var getTotalSelectedCount=function(){return Object.values(selectedData).reduce(function(total,items){return total+items.length},0)};var getTabSelectedCount=function(tabKey){var _selectedData_tabKey;return((_selectedData_tabKey=selectedData[tabKey])===null||_selectedData_tabKey===void 0?void 0:_selectedData_tabKey.length)||0};useImperativeHandle(ref,function(){return{open:function(){setOpen(true)},close:function(){return handleCancel()}}});return React.createElement(Modal.CustomModal,{width:width,maxHeight:"80vh",title:React.createElement(Tabs,{activeKey:activeTab,items:tabs,onChange:setActiveTab}),open:open,maskClosable:false,keyboard:false,destroyOnHidden:true,okText:messages.tabSelector.confirmSelect.replace("{count}",String(getTotalSelectedCount()>0?getTotalSelectedCount():0)),onCancel:handleCancel,onOk:handleConfirm,getContainer:false,styles:{body:{padding:0}}},tabs.map(function(tab){return React.createElement(ProTable,{style:{display:activeTab!==tab.key?"none":"block"},cardProps:{bodyStyle:{padding:0}},key:tab.key,columns:columns,dataSource:tab.data,headerTitle:React.createElement(Typography,null,tab.label,React.createElement(Badge,null,getTabSelectedCount(tab.key)," ")),search:false,toolbar:{search:(tab===null||tab===void 0?void 0:tab.onSearch)?{onSearch:tab===null||tab===void 0?void 0:tab.onSearch,placeholder:messages.tabSelector.searchPlaceholder}:undefined},options:false,rowKey:rowKey,rowSelection:{type:tab.selectionType,defaultSelectedRowKeys:(selectedData[tab.key]||[]).map(function(item){console.info("ad",item,item[rowKey]);return item[rowKey]}),onChange:function(_,selectedRows){handleSelectionChange(tab.key,selectedRows)}}})}))});
@@ -0,0 +1,18 @@
1
+ import { type FC } from "react";
2
+ import type { ImportRecord, ImportErrorItem, QueryImportErrors, ImportDetailContentRender } from "../types";
3
+ import type { ProColumns } from "@ant-design/pro-components";
4
+ interface ImportDetailDialogProps {
5
+ open: boolean;
6
+ onOpenChange: (open: boolean) => void;
7
+ record: ImportRecord;
8
+ /** 导入失败记录列配置(优先级高于 Context 配置) */
9
+ errorColumns?: ProColumns<ImportErrorItem>[];
10
+ /** 查询导入失败记录接口(优先级高于 Context 配置) */
11
+ queryImportErrors?: QueryImportErrors;
12
+ /** 失败记录表格其他配置(优先级高于 Context 配置) */
13
+ errorTableProps?: Record<string, any>;
14
+ /** 自定义详情内容渲染(优先级高于 Context 配置) */
15
+ contentRender?: ImportDetailContentRender;
16
+ }
17
+ export declare const ImportDetailDialog: FC<ImportDetailDialogProps>;
18
+ export {};
@@ -0,0 +1 @@
1
+ function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}import{useMemo}from"react";import{Badge,Row,Col,Card,Alert,theme,Descriptions}from"antd";import{ProTable}from"../../ProTable";import{Modal}from"../../Modal";import{CheckCircleOutlined,CloseCircleOutlined,ExclamationCircleOutlined}from"@ant-design/icons";import{formatDate}from"../utils/date";import{getContainerStyle,getStatCardStyle,getStatNumberStyle,getStatLabelStyle,getRowNumberStyle}from"../utils/styles";import{useLocale}from"../../locale";var useToken=theme.useToken;export var ImportDetailDialog=function(param){var open=param.open,onOpenChange=param.onOpenChange,record=param.record,errorColumns=param.errorColumns,queryImportErrors=param.queryImportErrors,errorTableProps=param.errorTableProps,contentRender=param.contentRender;var token=useToken().token;var messages=useLocale().messages;var currentStatus=record.status;var formattedCreatedAt=useMemo(function(){if(!record.createdAt)return"";try{var date=new Date(record.createdAt);if(isNaN(date.getTime())){return record.createdAt}return formatDate(date,"YYYY-MM-DD HH:mm:ss")}catch(e){return record.createdAt}},[record.createdAt]);var containerStyle=useMemo(function(){return getContainerStyle()},[]);var statCardStyle=useMemo(function(){return getStatCardStyle()},[]);var statNumberStyle=useMemo(function(){return getStatNumberStyle()},[]);var statLabelStyle=useMemo(function(){return getStatLabelStyle(token)},[token]);var defaultErrorColumns=useMemo(function(){return[{title:messages.imports.detail.errorColumns.rowNumber,dataIndex:"row_number",key:"row_number",width:120,valueType:"digit",render:function(_,recordItem){return React.createElement("span",{style:getRowNumberStyle()},messages.imports.detail.rowNumberText.replace("{rowNumber}",String(recordItem.row_number)))}},{title:messages.imports.detail.errorColumns.errorType,dataIndex:"error_type",key:"error_type",width:160,valueType:"text"},{title:messages.imports.detail.errorColumns.errorMessage,dataIndex:"error_message",key:"error_message",valueType:"text",ellipsis:true},{title:messages.imports.detail.errorColumns.errorId,dataIndex:"id",key:"id",width:220,valueType:"text",copyable:true}]},[messages]);var finalErrorColumns=useMemo(function(){if(errorColumns&&errorColumns.length>0){return errorColumns}return defaultErrorColumns},[errorColumns,defaultErrorColumns]);var errorRequest=useMemo(function(){if(!queryImportErrors){return function(){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,{data:[],success:true,total:0}]})})()}}return function(params){return _async_to_generator(function(){var result,error;return _ts_generator(this,function(_state){switch(_state.label){case 0:_state.trys.push([0,2,,3]);return[4,queryImportErrors(_object_spread({importId:record.id},params))];case 1:result=_state.sent();return[2,{data:result.list||[],success:true,total:result.total||0}];case 2:error=_state.sent();console.error(messages.imports.detail.queryFailed,error);return[2,{data:[],success:false,total:0}];case 3:return[2]}})})()}},[queryImportErrors,record.id]);var headerNode=React.createElement(React.Fragment,null,React.createElement(Descriptions,{column:3,size:"small",labelStyle:{fontSize:12,color:token.colorTextSecondary},contentStyle:{fontSize:12,color:token.colorText}},React.createElement(Descriptions.Item,{label:messages.imports.detail.labels.importId,span:3},React.createElement("span",{style:{fontFamily:"monospace",fontWeight:500}},record.id)),React.createElement(Descriptions.Item,{label:messages.imports.detail.labels.currentStatus,span:1},React.createElement("div",null,currentStatus==="completed"&&React.createElement(Badge,{status:"success",text:messages.imports.detail.status.completed}),currentStatus==="failed"&&React.createElement(Badge,{status:"error",text:messages.imports.detail.status.failed}),currentStatus==="processing"&&React.createElement(Badge,{status:"processing",text:messages.imports.detail.status.processing}))),React.createElement(Descriptions.Item,{label:messages.imports.detail.labels.importTime,span:2},React.createElement("span",{style:{fontWeight:500}},formattedCreatedAt))),React.createElement(Row,{gutter:16,style:{marginInline:0}},React.createElement(Col,{span:8},React.createElement(Card,{variant:"outlined",styles:{body:_object_spread_props(_object_spread({},statCardStyle),{background:token.colorBgContainer})}},React.createElement("p",{style:_object_spread_props(_object_spread({},statNumberStyle),{color:token.colorText})},record.total),React.createElement("p",{style:statLabelStyle},messages.imports.detail.stats.total))),React.createElement(Col,{span:8},React.createElement(Card,{variant:"outlined",styles:{body:_object_spread_props(_object_spread({},statCardStyle),{background:token.colorSuccessBg,borderColor:token.colorSuccessBorder})}},React.createElement("p",{style:_object_spread_props(_object_spread({},statNumberStyle),{color:token.colorSuccess})},record.success),React.createElement("p",{style:_object_spread_props(_object_spread({},statLabelStyle),{color:token.colorSuccessText})},messages.imports.detail.stats.success))),React.createElement(Col,{span:8},React.createElement(Card,{variant:"outlined",styles:{body:_object_spread_props(_object_spread({},statCardStyle),{background:token.colorErrorBg,borderColor:token.colorErrorBorder})}},React.createElement("p",{style:_object_spread_props(_object_spread({},statNumberStyle),{color:token.colorError})},record.failed),React.createElement("p",{style:_object_spread_props(_object_spread({},statLabelStyle),{color:token.colorErrorText})},messages.imports.detail.stats.failed)))));var failedTableNode=record.failed>0&&queryImportErrors?React.createElement("div",null,React.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:12}},React.createElement(ExclamationCircleOutlined,{style:{color:token.colorError}}),React.createElement("h3",{style:{fontSize:14,fontWeight:600,color:token.colorText,margin:0}},messages.imports.detail.failedDataTitle)),React.createElement(ProTable,_object_spread({rowKey:"id",columns:finalErrorColumns,request:errorRequest,search:false,pagination:{defaultPageSize:10,showSizeChanger:true,showQuickJumper:true},size:"small",showCreateBtn:false,showBatchRemoveBtn:false,showViewBtn:false,showUpdateBtn:false,showRemoveBtn:false,rowButtonItems:[],scroll:{x:800}},errorTableProps))):null;var bodyContent=contentRender?contentRender({record:record,defaultHeader:headerNode,defaultFailedTable:failedTableNode}):React.createElement(React.Fragment,null,headerNode,failedTableNode,currentStatus==="completed"&&record.failed===0&&React.createElement(Alert,{message:messages.imports.detail.successAlert,type:"success",icon:React.createElement(CheckCircleOutlined,null)}),currentStatus==="failed"&&React.createElement(Alert,{message:messages.imports.detail.failedAlert.message,description:messages.imports.detail.failedAlert.description,type:"error",icon:React.createElement(CloseCircleOutlined,null)}));return React.createElement(Modal,{title:messages.imports.detail.title,open:open,onCancel:function(){return onOpenChange(false)},footer:null,width:1e3,centered:false,destroyOnHidden:true,styles:{body:{maxHeight:"90vh",overflowY:"auto"}}},React.createElement("div",{style:containerStyle},bodyContent))};
@@ -0,0 +1,14 @@
1
+ import { type FC } from "react";
2
+ import type { ProFormColumnsType } from '../../Form/types';
3
+ import type { ImportRecord, QueryImportRecords } from "../types";
4
+ export interface ImportHistoryDialogProps {
5
+ open: boolean;
6
+ onOpenChange: (open: boolean) => void;
7
+ /** 列配置,如果不传则使用默认列 */
8
+ columns?: ProFormColumnsType<ImportRecord>[];
9
+ /** 查询导入记录列表的接口 */
10
+ queryImportRecords?: QueryImportRecords;
11
+ /** 表格的其他配置 */
12
+ tableProps?: Record<string, any>;
13
+ }
14
+ export declare const ImportHistoryDialog: FC<ImportHistoryDialogProps>;
@@ -0,0 +1 @@
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}import{useState,useMemo,useCallback}from"react";import{Button,theme}from"antd";import{ProTable}from"../../ProTable";import{Modal}from"../../Modal";import{EyeOutlined}from"@ant-design/icons";import{ImportDetailDialog}from"./import-detail-dialog";import{useImportContextOptional}from"../context/import-context";import{useRef}from"react";import{useLocale}from"../../locale";var useToken=theme.useToken;export var ImportHistoryDialog=function(param){var open=param.open,onOpenChange=param.onOpenChange,customColumns=param.columns,customQueryImportRecords=param.queryImportRecords,tableProps=param.tableProps;var token=useToken().token;var messages=useLocale().messages;var context=useImportContextOptional();var _useState=_sliced_to_array(useState(null),2),selectedRecord=_useState[0],setSelectedRecord=_useState[1];var _useState1=_sliced_to_array(useState(false),2),detailDialogOpen=_useState1[0],setDetailDialogOpen=_useState1[1];var tableRef=useRef(null);var handleViewDetail=useCallback(function(record){setSelectedRecord(record);setDetailDialogOpen(true)},[]);var finalQueryImportRecords=customQueryImportRecords!==null&&customQueryImportRecords!==void 0?customQueryImportRecords:context===null||context===void 0?void 0:context.queryImportRecords;var finalQueryImportErrors=context===null||context===void 0?void 0:context.queryImportErrors;var finalImportErrorColumns=context===null||context===void 0?void 0:context.importErrorColumns;var finalImportErrorTableProps=context===null||context===void 0?void 0:context.importErrorTableProps;var finalImportDetailContentRender=context===null||context===void 0?void 0:context.importDetailContentRender;var defaultColumns=useMemo(function(){return[{title:messages.imports.history.columns.importId,dataIndex:"id",key:"id",hideInSearch:true},{title:messages.imports.history.columns.status,dataIndex:"status",key:"status",hideInSearch:false,valueType:"select",width:150,valueEnum:{completed:{text:messages.imports.history.statusEnum.completed,status:"Success"},failed:{text:messages.imports.history.statusEnum.failed,status:"Error"},processing:{text:messages.imports.history.statusEnum.processing,status:"Processing"},cancelled:{text:messages.imports.history.statusEnum.cancelled,status:"Cancelled"}}},{title:messages.imports.history.columns.total,dataIndex:"total",key:"total",hideInSearch:true,valueType:"digit",width:150},{title:messages.imports.history.columns.success,dataIndex:"success",key:"success",hideInSearch:true,valueType:"digit",width:150},{title:messages.imports.history.columns.failed,dataIndex:"failed",key:"failed",hideInSearch:true,valueType:"digit",width:150},{title:messages.imports.history.columns.importTime,dataIndex:"createdAt",key:"createdAt",hideInSearch:false,valueType:"dateTime",width:200},{title:messages.imports.history.columns.operation,key:"action",hideInSearch:true,width:100,fixed:"right",render:function(_,record){return React.createElement(Button,{variant:"link",color:"primary",size:"small",icon:React.createElement(EyeOutlined,null),onClick:function(){return handleViewDetail(record)}},messages.imports.history.view)}}]},[handleViewDetail,messages]);var finalColumns=useMemo(function(){if(customColumns){return customColumns}return defaultColumns},[customColumns,defaultColumns]);var handleRequest=useMemo(function(){if(!finalQueryImportRecords){return function(){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,{data:[],success:true,total:0}]})})()}}return function(params){return _async_to_generator(function(){var result,error;return _ts_generator(this,function(_state){switch(_state.label){case 0:_state.trys.push([0,2,,3]);return[4,finalQueryImportRecords(params)];case 1:result=_state.sent();return[2,{data:result.list||[],success:true,total:result.total||0}];case 2:error=_state.sent();console.error(messages.imports.history.queryFailed,error);return[2,{data:[],success:false,total:0}];case 3:return[2]}})})()}},[finalQueryImportRecords]);return React.createElement(React.Fragment,null,React.createElement(Modal,{title:messages.imports.history.title,open:open,onCancel:function(){return onOpenChange(false)},footer:null,width:1e3,centered:false,destroyOnHidden:true,styles:{body:{padding:"0"}},maskClosable:false},React.createElement(ProTable,_object_spread_props(_object_spread({columns:finalColumns,request:handleRequest,rowKey:"id",ref:tableRef,search:{labelWidth:"auto",defaultCollapsed:false},pagination:{defaultPageSize:10,showSizeChanger:true,showQuickJumper:true},size:"small",showCreateBtn:false,showBatchRemoveBtn:false,showViewBtn:false,showUpdateBtn:false,showRemoveBtn:false,rowButtonItems:[],scroll:{x:1e3}},tableProps),{style:{padding:"".concat(token.paddingSM,"px 0")}}))),selectedRecord&&React.createElement(ImportDetailDialog,{open:detailDialogOpen,onOpenChange:setDetailDialogOpen,record:selectedRecord,errorColumns:finalImportErrorColumns,queryImportErrors:finalQueryImportErrors,errorTableProps:finalImportErrorTableProps,contentRender:finalImportDetailContentRender}))};
@@ -0,0 +1,19 @@
1
+ import { type FC } from "react";
2
+ import { type ModalProps } from "../../Modal";
3
+ import type { UploadConfig, UploadResult, QueryImportProgress, ImportProgressStepRender, UploadStepConfig } from "../types";
4
+ export type CustomModalProps = Omit<ModalProps, "open" | "onOpenChange" | "footer" | "onCancel">;
5
+ export interface ImportModalProps {
6
+ title: string;
7
+ taskKey?: string;
8
+ open: boolean;
9
+ onClose: () => void;
10
+ onFileSelect?: (file: File, config?: UploadConfig) => Promise<UploadResult> | UploadResult;
11
+ onDownloadTemplate?: () => Promise<void> | void;
12
+ queryProgress?: QueryImportProgress;
13
+ pollInterval?: number;
14
+ modalProps?: CustomModalProps;
15
+ importProgressStepRender?: ImportProgressStepRender;
16
+ tips?: string[];
17
+ uploadStepConfig?: UploadStepConfig;
18
+ }
19
+ export declare const ImportModal: FC<ImportModalProps>;
@@ -0,0 +1 @@
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}import{useState,useMemo,useEffect,useCallback,memo}from"react";import{message}from"antd";import{Modal}from"../../Modal";import{UploadStep}from"./upload-step";import{UploadProgressStep}from"./upload-progress-step";import{ImportProgressStep}from"./import-progress-step";import{ImportResultStep}from"./import-result-step";import{handleImportError,validateUploadResult}from"../utils/error-handler";import{useImportContextOptional}from"../context/import-context";import{useLocale}from"../../locale";export var ImportModal=memo(function(param){var title=param.title,open=param.open,onClose=param.onClose,propsOnFileSelect=param.onFileSelect,propsOnDownloadTemplate=param.onDownloadTemplate,propsQueryProgress=param.queryProgress,propsPollInterval=param.pollInterval,modalProps=param.modalProps,propsTaskKey=param.taskKey,propsImportProgressStepRender=param.importProgressStepRender,propsTips=param.tips,propsUploadStepConfig=param.uploadStepConfig;var context=useImportContextOptional();var _ref;var taskKey=(_ref=propsTaskKey!==null&&propsTaskKey!==void 0?propsTaskKey:context===null||context===void 0?void 0:context.taskKey)!==null&&_ref!==void 0?_ref:"id";var queryProgress=propsQueryProgress!==null&&propsQueryProgress!==void 0?propsQueryProgress:context===null||context===void 0?void 0:context.queryProgress;var importProgressStepRender=propsImportProgressStepRender!==null&&propsImportProgressStepRender!==void 0?propsImportProgressStepRender:context===null||context===void 0?void 0:context.importProgressStepRender;var onDownloadTemplate=propsOnDownloadTemplate!==null&&propsOnDownloadTemplate!==void 0?propsOnDownloadTemplate:context===null||context===void 0?void 0:context.onDownloadTemplate;var onFileSelect=propsOnFileSelect!==null&&propsOnFileSelect!==void 0?propsOnFileSelect:context===null||context===void 0?void 0:context.onFileSelect;var tips=propsTips!==null&&propsTips!==void 0?propsTips:context===null||context===void 0?void 0:context.tips;var uploadStepConfig=propsUploadStepConfig!==null&&propsUploadStepConfig!==void 0?propsUploadStepConfig:context===null||context===void 0?void 0:context.uploadStepConfig;var pollInterval=propsPollInterval!==null&&propsPollInterval!==void 0?propsPollInterval:context===null||context===void 0?void 0:context.pollInterval;var _useState=_sliced_to_array(useState("upload"),2),step=_useState[0],setStep=_useState[1];var _useState1=_sliced_to_array(useState(null),2),importId=_useState1[0],setImportId=_useState1[1];var _useState2=_sliced_to_array(useState(null),2),uploadResult=_useState2[0],setUploadResult=_useState2[1];var _useState3=_sliced_to_array(useState(0),2),uploadProgress=_useState3[0],setUploadProgress=_useState3[1];var _useState4=_sliced_to_array(useState(null),2),importResult=_useState4[0],setImportResult=_useState4[1];var messages=useLocale().messages;useEffect(function(){if(!open){var timer=setTimeout(function(){setStep("upload");setUploadProgress(0);setImportId(null);setUploadResult(null);setImportResult(null)},300);return function(){return clearTimeout(timer)}}return undefined},[open]);var handleFileSelect=useCallback(function(file){return _async_to_generator(function(){var uploadConfig,result,error,errorMessage;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!onFileSelect){throw new Error(messages.imports.errors.uploadMethodNotSet)}_state.label=1;case 1:_state.trys.push([1,3,,4]);setStep("uploading");setUploadProgress(0);uploadConfig={headers:{"Content-Type":"multipart/form-data"},onUploadProgress:function(event){if(event.total){var percent=Math.round(event.loaded/event.total*100);setUploadProgress(percent)}}};return[4,onFileSelect(file,uploadConfig)];case 2:result=_state.sent();if(validateUploadResult(result,taskKey)){setImportId(result[taskKey]);setUploadResult(result);setStep("importing")}else{throw new Error(messages.imports.errors.uploadFailed)}return[3,4];case 3:error=_state.sent();setStep("upload");setUploadProgress(0);errorMessage=handleImportError(error,messages.imports.errors.uploadError);message.error(errorMessage);throw error;case 4:return[2]}})})()},[onFileSelect,taskKey]);var handleImportComplete=useCallback(function(result){setImportResult(result);setStep("result")},[]);var handleClose=useCallback(function(){onClose()},[onClose]);var handleOpenChange=useCallback(function(visible){if(!visible){handleClose()}},[handleClose]);var stepTitleMap={upload:messages.imports.stepTitles.upload,uploading:messages.imports.stepTitles.uploading,importing:messages.imports.stepTitles.importing,result:messages.imports.stepTitles.result};var currentTitle=useMemo(function(){return stepTitleMap[step]||title},[step,title]);return React.createElement(Modal.CustomModal,_object_spread({title:currentTitle,open:open,onOpenChange:handleOpenChange,footer:false,onCancel:handleClose,maskClosable:false,width:600},modalProps),step==="upload"&&React.createElement(UploadStep,{onFileSelect:handleFileSelect,onDownloadTemplate:onDownloadTemplate,tips:tips,config:uploadStepConfig}),step==="uploading"&&React.createElement(UploadProgressStep,{progress:uploadProgress}),step==="importing"&&importId&&React.createElement(ImportProgressStep,{importId:importId,uploadResult:uploadResult||undefined,onComplete:handleImportComplete,onClose:handleClose,queryProgress:queryProgress,pollInterval:pollInterval,importProgressStepRender:importProgressStepRender}),step==="result"&&importResult&&React.createElement(ImportResultStep,{result:importResult,onClose:handleClose}))});ImportModal.displayName="ImportModal";
@@ -0,0 +1,13 @@
1
+ import { type FC } from "react";
2
+ import type { ImportResult, UploadResult, QueryImportProgress, ImportProgressStepRender } from "../types";
3
+ interface ImportProgressStepProps {
4
+ importId: string;
5
+ uploadResult?: UploadResult;
6
+ onComplete: (result: ImportResult) => void;
7
+ onClose?: () => void;
8
+ queryProgress?: QueryImportProgress;
9
+ pollInterval?: number;
10
+ importProgressStepRender?: ImportProgressStepRender;
11
+ }
12
+ export declare const ImportProgressStep: FC<ImportProgressStepProps>;
13
+ export {};
@@ -0,0 +1 @@
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}import{useEffect,useState,useRef,useCallback,memo,useMemo}from"react";import{Spin,Button,theme,message}from"antd";import{LoadingOutlined,HistoryOutlined}from"@ant-design/icons";import{ImportHistoryDialog}from"./import-history-dialog";import{handleImportError}from"../utils/error-handler";import{getContainerStyle,getCenterContentStyle,getTextCenterStyle,getTitleStyle,getButtonGroupStyle}from"../utils/styles";import{useImportContextOptional}from"../context/import-context";import{useLocale}from"../../locale";var useToken=theme.useToken;export var ImportProgressStep=memo(function(param){var importId=param.importId,uploadResult=param.uploadResult,onComplete=param.onComplete,onClose=param.onClose,propsQueryProgress=param.queryProgress,propsPollInterval=param.pollInterval,propsImportProgressStepRender=param.importProgressStepRender;var context=useImportContextOptional();var queryProgress=propsQueryProgress!==null&&propsQueryProgress!==void 0?propsQueryProgress:context===null||context===void 0?void 0:context.queryProgress;var _ref;var pollInterval=(_ref=propsPollInterval!==null&&propsPollInterval!==void 0?propsPollInterval:context===null||context===void 0?void 0:context.pollInterval)!==null&&_ref!==void 0?_ref:2e3;var importProgressStepRender=propsImportProgressStepRender!==null&&propsImportProgressStepRender!==void 0?propsImportProgressStepRender:context===null||context===void 0?void 0:context.importProgressStepRender;var messages=useLocale().messages;var token=useToken().token;var _useState=_sliced_to_array(useState(null),2),progressInfo=_useState[0],setProgressInfo=_useState[1];var _useState1=_sliced_to_array(useState(false),2),historyDialogOpen=_useState1[0],setHistoryDialogOpen=_useState1[1];var pollingRef=useRef(null);var isUnmountedRef=useRef(false);var isCompletedRef=useRef(false);var hasShownErrorRef=useRef(false);var queryProgressRef=useRef(queryProgress);var importIdRef=useRef(importId);var uploadResultRef=useRef(uploadResult);var onCompleteRef=useRef(onComplete);useEffect(function(){queryProgressRef.current=queryProgress;importIdRef.current=importId;uploadResultRef.current=uploadResult;onCompleteRef.current=onComplete},[queryProgress,importId,uploadResult,onComplete]);var stopPolling=useCallback(function(){if(pollingRef.current){clearInterval(pollingRef.current);pollingRef.current=null}},[]);var handleComplete=useCallback(function(progress){if(isCompletedRef.current)return;isCompletedRef.current=true;stopPolling();var result={importId:progress.importId,total:progress.total||0,success:progress.success||0,failed:progress.failed||0,message:progress.message||(progress.status==="completed"?messages.imports.importProgress.importCompleted:messages.imports.importProgress.importFailed)};onCompleteRef.current(result)},[stopPolling]);var fetchProgress=useCallback(function(){return _async_to_generator(function(){var currentQueryProgress,result,error,errorMessage;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(isUnmountedRef.current||isCompletedRef.current)return[2];currentQueryProgress=queryProgressRef.current;if(!currentQueryProgress){stopPolling();return[2]}_state.label=1;case 1:_state.trys.push([1,3,,4]);return[4,currentQueryProgress(importIdRef.current,uploadResultRef.current)];case 2:result=_state.sent();if(isUnmountedRef.current)return[2];setProgressInfo(result);if(result.status==="completed"||result.status==="failed"){handleComplete(result)}return[3,4];case 3:error=_state.sent();if(isUnmountedRef.current)return[2];errorMessage=handleImportError(error,messages.imports.importProgress.queryProgressFailed);if(!hasShownErrorRef.current){hasShownErrorRef.current=true;message.error(errorMessage)}return[3,4];case 4:return[2]}})})()},[handleComplete,stopPolling]);useEffect(function(){isUnmountedRef.current=false;isCompletedRef.current=false;hasShownErrorRef.current=false;if(!queryProgress){var errorMsg=messages.imports.importProgress.queryProgressNotConfigured;var errorProgress={importId:importId,progress:0,status:"failed",total:0,success:0,failed:0,message:errorMsg};handleComplete(errorProgress);return function(){isUnmountedRef.current=true}}fetchProgress();pollingRef.current=setInterval(function(){fetchProgress()},pollInterval);return function(){isUnmountedRef.current=true;stopPolling()}},[pollInterval,queryProgress]);var containerStyle=useMemo(function(){return getContainerStyle()},[]);var centerContentStyle=useMemo(function(){return getCenterContentStyle()},[]);var textCenterStyle=useMemo(function(){return getTextCenterStyle()},[]);var titleStyle=useMemo(function(){return getTitleStyle(token,"small")},[token]);var buttonGroupStyle=useMemo(function(){return getButtonGroupStyle()},[]);var renderDefaultProgress=useCallback(function(){return React.createElement("div",{style:centerContentStyle},React.createElement(Spin,{indicator:React.createElement(LoadingOutlined,{style:{fontSize:32,color:token.colorPrimary},spin:true})}),React.createElement("div",{style:textCenterStyle},React.createElement("div",{style:titleStyle},messages.imports.importProgress.title)))},[token.colorPrimary,centerContentStyle,textCenterStyle,titleStyle]);var handleOpenHistory=useCallback(function(){setHistoryDialogOpen(true)},[]);return React.createElement(React.Fragment,null,React.createElement("div",{style:containerStyle},importProgressStepRender?importProgressStepRender(progressInfo||{},uploadResult||{}):renderDefaultProgress(),React.createElement("div",{style:buttonGroupStyle},onClose&&React.createElement(Button,{onClick:onClose,block:true,style:{background:"transparent"}},messages.imports.importProgress.closeWindow),React.createElement(Button,{type:"primary",icon:React.createElement(HistoryOutlined,null),block:true,onClick:handleOpenHistory},messages.imports.importProgress.viewHistory))),React.createElement(ImportHistoryDialog,{open:historyDialogOpen,onOpenChange:setHistoryDialogOpen}))});ImportProgressStep.displayName="ImportProgressStep";
@@ -0,0 +1,8 @@
1
+ import { type FC } from "react";
2
+ import type { ImportResult } from "../types";
3
+ interface ImportResultStepProps {
4
+ result: ImportResult;
5
+ onClose?: () => void;
6
+ }
7
+ export declare const ImportResultStep: FC<ImportResultStepProps>;
8
+ export {};
@@ -0,0 +1 @@
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}import{useState,useMemo,memo,useCallback}from"react";import{Card,Button,Row,Col,theme,Alert}from"antd";import{CheckCircleOutlined,CloseCircleOutlined,HistoryOutlined}from"@ant-design/icons";import{ImportHistoryDialog}from"./import-history-dialog";import{StatCard}from"./stat-card";import{getContainerStyle,getCenterContentStyle,getTextCenterStyle,getTitleStyle,getSubtitleStyle,getSummaryCardStyle,getSummaryTitleStyle,getSummaryItemStyle,getButtonGroupStyle,getIconContainerStyle,getIconSmallStyle}from"../utils/styles";import{useLocale}from"../../locale";var useToken=theme.useToken;export var ImportResultStep=memo(function(param){var result=param.result,onClose=param.onClose;var token=useToken().token;var messages=useLocale().messages;var _useState=_sliced_to_array(useState(false),2),historyDialogOpen=_useState[0],setHistoryDialogOpen=_useState[1];var successRate=useMemo(function(){if(result.total===0)return"0.0";return(result.success/result.total*100).toFixed(1)},[result.success,result.total]);var isError=useMemo(function(){return result.total===0&&result.success===0&&result.failed===0},[result.total,result.success,result.failed]);var containerStyle=useMemo(function(){return getContainerStyle()},[]);var centerContentStyle=useMemo(function(){return getCenterContentStyle(true)},[]);var textCenterStyle=useMemo(function(){return getTextCenterStyle()},[]);var titleStyle=useMemo(function(){return getTitleStyle(token,"medium")},[token]);var subtitleStyle=useMemo(function(){return getSubtitleStyle(token)},[token]);var summaryCardStyle=useMemo(function(){return getSummaryCardStyle(token)},[token]);var summaryTitleStyle=useMemo(function(){return getSummaryTitleStyle(token)},[token]);var summaryItemStyle=useMemo(function(){return getSummaryItemStyle()},[]);var buttonGroupStyle=useMemo(function(){return getButtonGroupStyle()},[]);var iconContainerStyle=useMemo(function(){return getIconContainerStyle()},[]);var iconSmallStyle=useMemo(function(){return getIconSmallStyle()},[]);var handleOpenHistory=useCallback(function(){setHistoryDialogOpen(true)},[]);return React.createElement(React.Fragment,null,React.createElement("div",{style:containerStyle},React.createElement("div",{style:centerContentStyle},isError?React.createElement(CloseCircleOutlined,{style:{fontSize:64,color:token.colorError}}):result.failed===0?React.createElement(CheckCircleOutlined,{style:{fontSize:64,color:token.colorSuccess}}):React.createElement("div",{style:iconContainerStyle},React.createElement(CheckCircleOutlined,{style:{fontSize:64,color:token.colorSuccess}}),React.createElement(CloseCircleOutlined,{style:_object_spread({fontSize:32,color:token.colorError},iconSmallStyle)})),React.createElement("div",{style:textCenterStyle},React.createElement("p",{style:titleStyle},isError?messages.imports.importResult.importFailed:result.failed===0?messages.imports.importResult.importSuccess:messages.imports.importResult.importCompleted),result.importId&&React.createElement("p",{style:subtitleStyle},messages.imports.importResult.importIdLabel.replace("{id}",result.importId)))),!isError&&React.createElement(Row,{gutter:16},React.createElement(Col,{span:8},React.createElement(StatCard,{value:result.total,label:messages.imports.importResult.total,type:"total"})),React.createElement(Col,{span:8},React.createElement(StatCard,{value:result.success,label:messages.imports.importResult.success,type:"success"})),React.createElement(Col,{span:8},React.createElement(StatCard,{value:result.failed,label:messages.imports.importResult.failed,type:"failed"}))),React.createElement(Card,{variant:"outlined",styles:{body:summaryCardStyle}},React.createElement("h4",{style:summaryTitleStyle},isError?messages.imports.importResult.errorTitle:messages.imports.importResult.summaryTitle),React.createElement("div",null,isError?React.createElement(Alert,{message:result.message||messages.imports.importResult.importFailed,type:"error",showIcon:true}):React.createElement(React.Fragment,null,React.createElement("div",{style:summaryItemStyle},React.createElement("span",{style:{color:token.colorTextSecondary}},messages.imports.importResult.successRate),React.createElement("span",{style:{fontWeight:500,color:token.colorText}},successRate,"%")),React.createElement("div",{style:summaryItemStyle},React.createElement("span",{style:{color:token.colorTextSecondary}},messages.imports.importResult.status),React.createElement("span",{style:{fontWeight:500,color:token.colorText}},result.message)),result.failed>0&&React.createElement(Alert,{message:messages.imports.importResult.failedAlert.replace("{count}",String(result.failed)),type:"error",style:{marginTop:12}})))),React.createElement("div",{style:buttonGroupStyle},onClose&&React.createElement(Button,{onClick:onClose,block:true,style:{background:"transparent"}},messages.imports.importResult.close),React.createElement(Button,{type:"primary",icon:React.createElement(HistoryOutlined,null),block:true,onClick:handleOpenHistory},messages.imports.importResult.viewHistory))),React.createElement(ImportHistoryDialog,{open:historyDialogOpen,onOpenChange:setHistoryDialogOpen}))});ImportResultStep.displayName="ImportResultStep";
@@ -0,0 +1,8 @@
1
+ import { type FC } from "react";
2
+ import type { ImportProgressStep as ImportProgressStepType } from "../types";
3
+ interface ProgressStepsProps {
4
+ steps: ImportProgressStepType[];
5
+ currentStepKey?: string;
6
+ }
7
+ export declare const ProgressSteps: FC<ProgressStepsProps>;
8
+ export {};
@@ -0,0 +1 @@
1
+ function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}import{useMemo,memo}from"react";import{CheckCircleOutlined,LoadingOutlined,ClockCircleOutlined,CloseCircleOutlined}from"@ant-design/icons";import{theme}from"antd";var useToken=theme.useToken;export var ProgressSteps=memo(function(param){var steps=param.steps,currentStepKey=param.currentStepKey;var token=useToken().token;var stepItemStyle=useMemo(function(){return{display:"flex",alignItems:"flex-start",gap:12,marginBottom:16,fontSize:12}},[]);var stepIconStyle=useMemo(function(){return{fontSize:16,marginTop:2,flexShrink:0}},[]);var stepContentStyle=useMemo(function(){return{flex:1}},[]);var stepLabelStyle=useMemo(function(){return{fontWeight:500,color:token.colorText,marginBottom:4}},[token.colorText]);var stepDescriptionStyle=useMemo(function(){return{color:token.colorTextSecondary,fontSize:11}},[token.colorTextSecondary]);var getStepIcon=function(step){var iconStyle=_object_spread({},stepIconStyle);switch(step.status){case"completed":return React.createElement(CheckCircleOutlined,{style:_object_spread_props(_object_spread({},iconStyle),{color:token.colorSuccess})});case"processing":return React.createElement(LoadingOutlined,{style:_object_spread_props(_object_spread({},iconStyle),{color:token.colorPrimary}),spin:true});case"failed":return React.createElement(CloseCircleOutlined,{style:_object_spread_props(_object_spread({},iconStyle),{color:token.colorError})});case"pending":default:return React.createElement(ClockCircleOutlined,{style:_object_spread_props(_object_spread({},iconStyle),{color:token.colorTextDisabled})})}};var getStepTextColor=function(step){switch(step.status){case"completed":return token.colorSuccess;case"processing":return token.colorPrimary;case"failed":return token.colorError;case"pending":default:return token.colorTextDisabled}};return React.createElement("div",null,steps.map(function(step){var isCurrent=currentStepKey===step.key;var textColor=getStepTextColor(step);return React.createElement("div",{key:step.key,style:stepItemStyle},getStepIcon(step),React.createElement("div",{style:stepContentStyle},React.createElement("div",{style:_object_spread_props(_object_spread({},stepLabelStyle),{color:textColor})},step.label,step.progress!==undefined&&step.status==="processing"&&React.createElement("span",{style:{marginLeft:8,color:token.colorTextSecondary}},"(",step.progress,"%)")),step.description&&React.createElement("div",{style:stepDescriptionStyle},step.description)))}))});ProgressSteps.displayName="ProgressSteps";
@@ -0,0 +1,8 @@
1
+ import { type FC } from "react";
2
+ interface StatCardProps {
3
+ value: number;
4
+ label: string;
5
+ type: 'total' | 'success' | 'failed';
6
+ }
7
+ export declare const StatCard: FC<StatCardProps>;
8
+ export {};
@@ -0,0 +1 @@
1
+ function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}import{memo,useMemo}from"react";import{Card,theme}from"antd";export var StatCard=memo(function(param){var value=param.value,label=param.label,type=param.type;var token=theme.useToken().token;var cardBodyStyle=useMemo(function(){var baseStyle={borderRadius:8,padding:16,textAlign:"center"};switch(type){case"success":return _object_spread_props(_object_spread({},baseStyle),{background:token.colorSuccessBg,borderColor:token.colorSuccessBorder});case"failed":return _object_spread_props(_object_spread({},baseStyle),{background:token.colorErrorBg,borderColor:token.colorErrorBorder});default:return _object_spread_props(_object_spread({},baseStyle),{background:token.colorBgContainer})}},[type,token]);var getTextColor=function(){switch(type){case"success":return token.colorSuccess;case"failed":return token.colorError;default:return token.colorText}};var getLabelColor=function(){switch(type){case"success":return token.colorSuccessText;case"failed":return token.colorErrorText;default:return token.colorTextSecondary}};var numberStyle=useMemo(function(){return{fontSize:24,fontWeight:700,margin:0,color:getTextColor()}},[type,token]);var labelStyle=useMemo(function(){return{fontSize:12,color:getLabelColor(),marginTop:8}},[type,token]);return React.createElement(Card,{variant:"outlined",styles:{body:cardBodyStyle}},React.createElement("p",{style:numberStyle},value),React.createElement("p",{style:labelStyle},label))});StatCard.displayName="StatCard";
@@ -0,0 +1,6 @@
1
+ import { type FC } from "react";
2
+ interface UploadProgressStepProps {
3
+ progress: number;
4
+ }
5
+ export declare const UploadProgressStep: FC<UploadProgressStepProps>;
6
+ export {};
@@ -0,0 +1 @@
1
+ import{memo,useMemo}from"react";import{Progress,Spin,Alert,theme}from"antd";import{LoadingOutlined,ExclamationCircleOutlined}from"@ant-design/icons";import{getContainerStyle,getCenterContentStyle,getTextCenterStyle,getTitleStyle,getProgressTextStyle,getAlertStyle}from"../utils/styles";import{useLocale}from"../../locale";var useToken=theme.useToken;export var UploadProgressStep=memo(function(param){var progress=param.progress;var token=useToken().token;var messages=useLocale().messages;var progressPercent=useMemo(function(){return Math.round(progress)},[progress]);var containerStyle=useMemo(function(){return getContainerStyle()},[]);var centerContentStyle=useMemo(function(){return getCenterContentStyle()},[]);var textCenterStyle=useMemo(function(){return getTextCenterStyle()},[]);var titleStyle=useMemo(function(){return getTitleStyle(token,"small")},[token]);var progressTextStyle=useMemo(function(){return getProgressTextStyle(token)},[token]);var alertStyle=useMemo(function(){return getAlertStyle(token)},[token]);return React.createElement("div",{style:containerStyle},React.createElement("div",{style:centerContentStyle},React.createElement(Spin,{indicator:React.createElement(LoadingOutlined,{style:{fontSize:48,color:token.colorPrimary},spin:true})}),React.createElement("div",{style:textCenterStyle},React.createElement("p",{style:titleStyle},messages.imports.uploadProgress.title),React.createElement("p",{style:progressTextStyle},messages.imports.uploadProgress.progressText.replace("{percent}",String(progressPercent))))),React.createElement(Progress,{percent:progressPercent,strokeColor:token.colorPrimary}),React.createElement(Alert,{message:messages.imports.uploadProgress.alertMessage,description:messages.imports.uploadProgress.alertDescription,type:"warning",icon:React.createElement(ExclamationCircleOutlined,null),style:alertStyle}))});UploadProgressStep.displayName="UploadProgressStep";
@@ -0,0 +1,10 @@
1
+ import { type FC } from "react";
2
+ import type { UploadStepConfig } from "../types";
3
+ interface UploadStepProps {
4
+ onFileSelect?: (file: File) => Promise<void> | void;
5
+ onDownloadTemplate?: () => Promise<void> | void;
6
+ tips?: string[];
7
+ config?: UploadStepConfig;
8
+ }
9
+ export declare const UploadStep: FC<UploadStepProps>;
10
+ export {};
@@ -0,0 +1 @@
1
+ function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}import{useRef,useMemo,memo,useCallback}from"react";import{Card,Typography,theme}from"antd";import{DownloadOutlined,UploadOutlined}from"@ant-design/icons";import{Button}from"../../Button";import{getContainerStyle,getCardBodyStyle,getTipCardStyle,getTipTitleStyle,getTipListStyle,getTipItemStyle,getHiddenInputStyle,getDescriptionStyle}from"../utils/styles";import{useImportContextOptional}from"../context/import-context";import{useLocale}from"../../locale";var Text=Typography.Text;export var UploadStep=memo(function(param){var propsOnFileSelect=param.onFileSelect,propsOnDownloadTemplate=param.onDownloadTemplate,propsTips=param.tips,propsConfig=param.config;var context=useImportContextOptional();var messages=useLocale().messages;var onFileSelect=propsOnFileSelect!==null&&propsOnFileSelect!==void 0?propsOnFileSelect:context===null||context===void 0?void 0:context.onFileSelect;var onDownloadTemplate=propsOnDownloadTemplate!==null&&propsOnDownloadTemplate!==void 0?propsOnDownloadTemplate:context===null||context===void 0?void 0:context.onDownloadTemplate;var tips=propsTips!==null&&propsTips!==void 0?propsTips:context===null||context===void 0?void 0:context.tips;var config=propsConfig!==null&&propsConfig!==void 0?propsConfig:context===null||context===void 0?void 0:context.uploadStepConfig;var token=theme.useToken().token;var fileInputRef=useRef(null);var DEFAULT_TIPS=[messages.imports.uploadStep.defaultTip];var DEFAULT_CONFIG=useMemo(function(){return{downloadTitle:messages.imports.uploadStep.downloadTitle,downloadDescription:messages.imports.uploadStep.downloadDescription,downloadButtonText:messages.imports.uploadStep.downloadButtonText,uploadTitle:messages.imports.uploadStep.uploadTitle,uploadDescription:messages.imports.uploadStep.uploadDescription,uploadButtonText:messages.imports.uploadStep.uploadButtonText}},[messages]);var containerStyle=useMemo(function(){return getContainerStyle(true)},[]);var cardBodyStyle=useMemo(function(){return getCardBodyStyle(token)},[token]);var tipCardStyle=useMemo(function(){return getTipCardStyle(token)},[token]);var tipTitleStyle=useMemo(function(){return getTipTitleStyle()},[]);var tipListStyle=useMemo(function(){return getTipListStyle()},[]);var tipItemStyle=useMemo(function(){return getTipItemStyle()},[]);var hiddenInputStyle=useMemo(function(){return getHiddenInputStyle()},[]);var descriptionStyle=useMemo(function(){return getDescriptionStyle()},[]);var displayTips=useMemo(function(){return tips&&tips.length>0?tips:DEFAULT_TIPS},[tips,DEFAULT_TIPS]);var stepConfig=useMemo(function(){return _object_spread({},DEFAULT_CONFIG,config)},[config,DEFAULT_CONFIG]);var handleDownloadTemplate=useCallback(function(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!onDownloadTemplate)return[3,2];return[4,onDownloadTemplate()];case 1:return[2,_state.sent()];case 2:return[2]}})})()},[onDownloadTemplate]);var handleFileChange=useCallback(function(e){var _e_target_files;var file=(_e_target_files=e.target.files)===null||_e_target_files===void 0?void 0:_e_target_files[0];if(file&&onFileSelect){onFileSelect(file)}if(fileInputRef.current){fileInputRef.current.value=""}},[onFileSelect]);var handleUploadClick=useCallback(function(){var _fileInputRef_current;(_fileInputRef_current=fileInputRef.current)===null||_fileInputRef_current===void 0?void 0:_fileInputRef_current.click()},[]);return React.createElement("div",{style:containerStyle},React.createElement(Card,{title:stepConfig.downloadTitle,variant:"outlined",styles:{body:cardBodyStyle}},React.createElement(Text,{type:"secondary",style:descriptionStyle},stepConfig.downloadDescription),React.createElement(Button,{onClick:handleDownloadTemplate,icon:React.createElement(DownloadOutlined,null),block:true,style:{background:"transparent"}},stepConfig.downloadButtonText)),React.createElement(Card,{title:stepConfig.uploadTitle,variant:"outlined",styles:{body:cardBodyStyle}},React.createElement(Text,{type:"secondary",style:descriptionStyle},stepConfig.uploadDescription),React.createElement("input",{ref:fileInputRef,type:"file",accept:".csv,.xlsx,.xls",onChange:handleFileChange,style:hiddenInputStyle}),React.createElement(Button,{type:"primary",icon:React.createElement(UploadOutlined,null),block:true,onClick:handleUploadClick},stepConfig.uploadButtonText)),React.createElement("div",{style:tipCardStyle},React.createElement("p",{style:tipTitleStyle},messages.imports.uploadStep.tipsTitle),React.createElement("ul",{style:tipListStyle},displayTips.map(function(tip,index){return React.createElement("li",{key:index,style:tipItemStyle},tip)}))))});UploadStep.displayName="UploadStep";
@@ -0,0 +1,56 @@
1
+ import type { FC, ReactNode } from 'react';
2
+ import type { QueryImportProgress, ImportProgressStepRender, UploadStepConfig, UploadConfig, UploadResult, QueryImportRecords, ImportRecord } from '../types';
3
+ import type { ProFormColumnsType } from '../../Form/types';
4
+ import type { ProColumns } from '@ant-design/pro-components';
5
+ import type { ImportErrorItem, QueryImportErrors, ImportDetailContentRender } from '../types';
6
+ /**
7
+ * 导入组件上下文配置
8
+ */
9
+ export interface ImportContextValue {
10
+ /** 任务键名,默认为 'id' */
11
+ taskKey: string;
12
+ /** 查询导入进度接口 */
13
+ queryProgress?: QueryImportProgress;
14
+ /** 自定义进度步骤渲染函数 */
15
+ importProgressStepRender?: ImportProgressStepRender;
16
+ /** 下载模板回调 */
17
+ onDownloadTemplate?: () => Promise<void> | void;
18
+ /** 文件选择回调 */
19
+ onFileSelect?: (file: File, config?: UploadConfig) => Promise<UploadResult> | UploadResult;
20
+ /** 查询导入记录列表接口 */
21
+ queryImportRecords?: QueryImportRecords;
22
+ /** 导入记录列表的列配置 */
23
+ importRecordColumns?: ProFormColumnsType<ImportRecord>[];
24
+ /** 导入记录表格的其他配置 */
25
+ importRecordTableProps?: Record<string, any>;
26
+ /** 查询导入失败记录列表接口 */
27
+ queryImportErrors?: QueryImportErrors;
28
+ /** 导入失败记录表格列配置 */
29
+ importErrorColumns?: ProColumns<ImportErrorItem>[];
30
+ /** 导入失败记录表格其他配置 */
31
+ importErrorTableProps?: Record<string, any>;
32
+ /** 导入详情弹窗内容自定义渲染 */
33
+ importDetailContentRender?: ImportDetailContentRender;
34
+ /** 温馨提示描述文字列表 */
35
+ tips?: string[];
36
+ /** 上传步骤配置 */
37
+ uploadStepConfig?: UploadStepConfig;
38
+ /** 进度轮询间隔(毫秒),默认 2000ms */
39
+ pollInterval?: number;
40
+ }
41
+ /**
42
+ * ImportContext Provider 组件
43
+ */
44
+ export interface ImportContextProviderProps {
45
+ value: ImportContextValue;
46
+ children: ReactNode;
47
+ }
48
+ export declare const ImportContextProvider: FC<ImportContextProviderProps>;
49
+ /**
50
+ * 使用 ImportContext 的 Hook
51
+ */
52
+ export declare const useImportContext: () => ImportContextValue;
53
+ /**
54
+ * 可选使用 ImportContext 的 Hook(不抛出错误)
55
+ */
56
+ export declare const useImportContextOptional: () => ImportContextValue | null;
@@ -0,0 +1 @@
1
+ import{createContext,useContext,useMemo}from"react";var ImportContext=createContext(null);export var ImportContextProvider=function(param){var value=param.value,children=param.children;var contextValue=useMemo(function(){return value},[value.taskKey,value.queryProgress,value.importProgressStepRender,value.onDownloadTemplate,value.onFileSelect,value.queryImportRecords,value.importRecordColumns,value.importRecordTableProps,value.queryImportErrors,value.importErrorColumns,value.importErrorTableProps,value.importDetailContentRender,value.tips,value.uploadStepConfig,value.pollInterval]);return React.createElement(ImportContext.Provider,{value:contextValue},children)};export var useImportContext=function(){var context=useContext(ImportContext);if(!context){throw new Error("useImportContext must be used within ImportContextProvider")}return context};export var useImportContextOptional=function(){return useContext(ImportContext)};
@@ -0,0 +1,25 @@
1
+ import { type FC } from "react";
2
+ import type { ButtonProps } from "../Button";
3
+ import { type CustomModalProps } from "./components/import-modal";
4
+ import type { ImportProgressStepRender, UploadConfig, UploadResult, QueryImportProgress, UploadStepConfig } from "./types";
5
+ export interface ImportsProps {
6
+ primaryText?: string;
7
+ secondaryText?: string;
8
+ primaryButtonProps?: ButtonProps;
9
+ secondaryButtonProps?: ButtonProps;
10
+ modalProps?: CustomModalProps;
11
+ queryProgress?: QueryImportProgress;
12
+ onModalClose?: () => void;
13
+ taskKey?: string;
14
+ importProgressStepRender?: ImportProgressStepRender;
15
+ onDownloadTemplate?: () => Promise<any> | any;
16
+ onFileSelect?: (file: File, config?: UploadConfig) => Promise<UploadResult> | UploadResult;
17
+ tips?: string[];
18
+ uploadStepConfig?: UploadStepConfig;
19
+ pollInterval?: number;
20
+ }
21
+ /**
22
+ * Imports 组件
23
+ * 如果外部没有提供 Context,则创建一个内部的 Context Provider
24
+ */
25
+ export declare const Imports: FC<ImportsProps>;
@@ -0,0 +1 @@
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}import{useState,useMemo,memo}from"react";import{Flex}from"antd";import{Button}from"../Button";import{CloudDownloadOutlined,HistoryOutlined}from"@ant-design/icons";import{ImportModal}from"./components/import-modal";import{ImportHistoryDialog}from"./components/import-history-dialog";import{ImportContextProvider,useImportContextOptional}from"./context/import-context";import{useLocale}from"../locale";var ImportsInner=memo(function(param){var primaryText=param.primaryText,secondaryText=param.secondaryText,primaryButtonProps=param.primaryButtonProps,secondaryButtonProps=param.secondaryButtonProps,modalProps=param.modalProps,onModalClose=param.onModalClose,taskKey=param.taskKey,importProgressStepRender=param.importProgressStepRender,onDownloadTemplate=param.onDownloadTemplate,onFileSelect=param.onFileSelect,queryProgress=param.queryProgress,tips=param.tips,uploadStepConfig=param.uploadStepConfig;var messages=useLocale().messages;var _useState=_sliced_to_array(useState(false),2),isModalOpen=_useState[0],setIsModalOpen=_useState[1];var _useState1=_sliced_to_array(useState(false),2),isHistoryDialogOpen=_useState1[0],setIsHistoryDialogOpen=_useState1[1];var context=useImportContextOptional();var finalPrimaryText=primaryText!==null&&primaryText!==void 0?primaryText:messages.imports.primaryText;var finalSecondaryText=secondaryText!==null&&secondaryText!==void 0?secondaryText:messages.imports.secondaryText;var handleCloseModal=function(){setIsModalOpen(false);onModalClose===null||onModalClose===void 0?void 0:onModalClose()};var handleOpenHistoryDialog=function(){setIsHistoryDialogOpen(true)};var handleCloseHistoryDialog=function(){setIsHistoryDialogOpen(false)};var _ref;var finalTaskKey=(_ref=taskKey!==null&&taskKey!==void 0?taskKey:context===null||context===void 0?void 0:context.taskKey)!==null&&_ref!==void 0?_ref:"id";var finalQueryProgress=queryProgress!==null&&queryProgress!==void 0?queryProgress:context===null||context===void 0?void 0:context.queryProgress;var finalImportProgressStepRender=importProgressStepRender!==null&&importProgressStepRender!==void 0?importProgressStepRender:context===null||context===void 0?void 0:context.importProgressStepRender;var finalOnDownloadTemplate=onDownloadTemplate!==null&&onDownloadTemplate!==void 0?onDownloadTemplate:context===null||context===void 0?void 0:context.onDownloadTemplate;var finalOnFileSelect=onFileSelect!==null&&onFileSelect!==void 0?onFileSelect:context===null||context===void 0?void 0:context.onFileSelect;var finalTips=tips!==null&&tips!==void 0?tips:context===null||context===void 0?void 0:context.tips;var finalUploadStepConfig=uploadStepConfig!==null&&uploadStepConfig!==void 0?uploadStepConfig:context===null||context===void 0?void 0:context.uploadStepConfig;var finalPollInterval=context===null||context===void 0?void 0:context.pollInterval;var finalQueryImportRecords=context===null||context===void 0?void 0:context.queryImportRecords;var finalImportRecordColumns=context===null||context===void 0?void 0:context.importRecordColumns;var finalImportRecordTableProps=context===null||context===void 0?void 0:context.importRecordTableProps;return React.createElement(Flex,{justify:"start",align:"center",gap:10},React.createElement(Button,_object_spread_props(_object_spread({key:"import-opt",type:"primary",icon:React.createElement(CloudDownloadOutlined,null)},primaryButtonProps),{onClick:function(){setIsModalOpen(true)}}),finalPrimaryText),React.createElement(Button,_object_spread_props(_object_spread({key:"import-record",icon:React.createElement(HistoryOutlined,null)},secondaryButtonProps),{onClick:handleOpenHistoryDialog}),finalSecondaryText),React.createElement(ImportModal,{title:finalPrimaryText,open:isModalOpen,onClose:handleCloseModal,modalProps:modalProps,taskKey:finalTaskKey,queryProgress:finalQueryProgress,importProgressStepRender:finalImportProgressStepRender,onDownloadTemplate:finalOnDownloadTemplate,onFileSelect:finalOnFileSelect,tips:finalTips,uploadStepConfig:finalUploadStepConfig,pollInterval:finalPollInterval}),React.createElement(ImportHistoryDialog,{open:isHistoryDialogOpen,onOpenChange:handleCloseHistoryDialog,columns:finalImportRecordColumns,queryImportRecords:finalQueryImportRecords,tableProps:finalImportRecordTableProps}))});ImportsInner.displayName="ImportsInner";export var Imports=function(props){var context=useImportContextOptional();if(context){return React.createElement(ImportsInner,props)}var contextValue=useMemo(function(){var _props_taskKey;return{taskKey:(_props_taskKey=props.taskKey)!==null&&_props_taskKey!==void 0?_props_taskKey:"id",queryProgress:props.queryProgress,importProgressStepRender:props.importProgressStepRender,onDownloadTemplate:props.onDownloadTemplate,onFileSelect:props.onFileSelect,tips:props.tips,uploadStepConfig:props.uploadStepConfig,pollInterval:props.pollInterval}},[props.taskKey,props.queryProgress,props.importProgressStepRender,props.onDownloadTemplate,props.onFileSelect,props.tips,props.uploadStepConfig,props.pollInterval]);return React.createElement(ImportContextProvider,{value:contextValue},React.createElement(ImportsInner,props))};
@@ -0,0 +1,6 @@
1
+ export * from "./imports";
2
+ export * from "./context/import-context";
3
+ export * from "./types";
4
+ export * from "./utils/date";
5
+ export * from "./utils/error-handler";
6
+ export * from "./utils/styles";
@@ -0,0 +1 @@
1
+ export*from"./imports";export*from"./context/import-context";export*from"./types";export*from"./utils/date";export*from"./utils/error-handler";export*from"./utils/styles";
@@ -0,0 +1,133 @@
1
+ import type { ReactNode } from "react";
2
+ export type ImportStep = "upload" | "uploading" | "importing" | "result";
3
+ export interface ImportResult {
4
+ success: number;
5
+ failed: number;
6
+ total: number;
7
+ message: string;
8
+ importId: string;
9
+ }
10
+ export type ImportStatus = "completed" | "failed" | "processing";
11
+ export interface ImportRecord {
12
+ id: string;
13
+ fileName: string;
14
+ status: ImportStatus;
15
+ total: number;
16
+ success: number;
17
+ failed: number;
18
+ createdAt: string;
19
+ metadata: string;
20
+ }
21
+ export interface FailedItem {
22
+ row: number;
23
+ data: string;
24
+ reason: string;
25
+ }
26
+ export interface UploadProgressEvent {
27
+ loaded: number;
28
+ total?: number;
29
+ }
30
+ export interface UploadConfig {
31
+ headers?: Record<string, string>;
32
+ onUploadProgress?: (event: UploadProgressEvent) => void;
33
+ }
34
+ /**
35
+ * 上传结果
36
+ * 必须包含任务标识字段(由 taskKey 指定,默认为 'id')
37
+ */
38
+ export interface UploadResult {
39
+ /** 任务标识(由 taskKey 指定,默认为 'id') */
40
+ [key: string]: unknown;
41
+ /** 导入任务 ID(兼容字段) */
42
+ id?: string;
43
+ /** 导入任务 ID(兼容字段) */
44
+ job_id?: string;
45
+ }
46
+ /**
47
+ * 导入进度信息
48
+ */
49
+ export interface ImportProgress {
50
+ importId: string;
51
+ progress: number;
52
+ status: ImportStatus;
53
+ currentStep?: string;
54
+ steps?: ImportProgressStep[];
55
+ total?: number;
56
+ processed?: number;
57
+ success?: number;
58
+ failed?: number;
59
+ message?: string;
60
+ }
61
+ /**
62
+ * 导入流程步骤
63
+ */
64
+ export interface ImportProgressStep {
65
+ key: string;
66
+ label: string;
67
+ description?: string;
68
+ status: "pending" | "processing" | "completed" | "failed";
69
+ progress?: number;
70
+ }
71
+ /**
72
+ * 查询导入进度的函数类型
73
+ */
74
+ export type QueryImportProgress = (importId: string, uploadResult?: UploadResult) => Promise<ImportProgress>;
75
+ export type ImportProgressStepRender = (progress: ImportProgress, uploadResult: UploadResult) => ReactNode;
76
+ /**
77
+ * 上传步骤配置
78
+ */
79
+ export interface UploadStepConfig {
80
+ /** 第一步:下载模板的标题 */
81
+ downloadTitle?: string;
82
+ /** 第一步:下载模板的描述 */
83
+ downloadDescription?: string;
84
+ /** 第一步:下载模板的按钮文字 */
85
+ downloadButtonText?: string;
86
+ /** 第二步:上传文件的标题 */
87
+ uploadTitle?: string;
88
+ /** 第二步:上传文件的描述 */
89
+ uploadDescription?: string;
90
+ /** 第二步:上传文件的按钮文字 */
91
+ uploadButtonText?: string;
92
+ }
93
+ /**
94
+ * 查询导入记录列表的函数类型
95
+ */
96
+ export type QueryImportRecords = (params?: Record<string, any>) => Promise<{
97
+ list: ImportRecord[];
98
+ total: number;
99
+ page?: number;
100
+ page_size?: number;
101
+ }>;
102
+ /**
103
+ * 导入失败记录项
104
+ * 默认字段:row_index、error_type、message、id
105
+ */
106
+ export interface ImportErrorItem {
107
+ id: string;
108
+ row_number: number;
109
+ error_type: string;
110
+ error_message: string;
111
+ [key: string]: unknown;
112
+ }
113
+ /**
114
+ * 查询导入失败记录列表的函数类型
115
+ */
116
+ export type QueryImportErrors = (params: {
117
+ importId: string;
118
+ [key: string]: any;
119
+ }) => Promise<{
120
+ list: ImportErrorItem[];
121
+ total: number;
122
+ }>;
123
+ /**
124
+ * 导入详情弹窗内容自定义渲染
125
+ * 可完全接管默认内容渲染
126
+ */
127
+ export type ImportDetailContentRender = (options: {
128
+ record: ImportRecord;
129
+ /** 默认顶部概要信息(导入 Id、时间、状态、统计卡片) */
130
+ defaultHeader: ReactNode;
131
+ /** 默认失败列表区域(ProTable),可能为 null(无失败或未配置接口) */
132
+ defaultFailedTable: ReactNode | null;
133
+ }) => ReactNode;
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 格式化日期
3
+ * @param date 日期对象或时间戳
4
+ * @param format 格式字符串,如 'YYYY-MM-DD HH:mm:ss'
5
+ * @returns 格式化后的日期字符串
6
+ */
7
+ export declare function formatDate(date: Date | number, format?: string): string;
@@ -0,0 +1 @@
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}export function formatDate(date){var format=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"YYYY-MM-DD HH:mm:ss";var d=typeof date==="number"?new Date(date):date;var tokens={YYYY:d.getFullYear().toString(),MM:String(d.getMonth()+1).padStart(2,"0"),DD:String(d.getDate()).padStart(2,"0"),HH:String(d.getHours()).padStart(2,"0"),mm:String(d.getMinutes()).padStart(2,"0"),ss:String(d.getSeconds()).padStart(2,"0")};var result=format;Object.entries(tokens).forEach(function(param){var _param=_sliced_to_array(param,2),token=_param[0],value=_param[1];result=result.replace(token,value)});return result}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * 统一错误处理工具函数
3
+ */
4
+ /**
5
+ * 处理导入相关错误
6
+ * @param error 错误对象
7
+ * @param defaultMessage 默认错误消息
8
+ * @returns 错误消息字符串
9
+ */
10
+ export declare const handleImportError: (error: unknown, defaultMessage: string) => string;
11
+ /**
12
+ * 验证上传结果是否包含必需的字段
13
+ * @param result 上传结果
14
+ * @param taskKey 任务键名
15
+ * @returns 是否有效
16
+ */
17
+ export declare const validateUploadResult: (result: Record<string, unknown>, taskKey: string) => boolean;
@@ -0,0 +1 @@
1
+ function _instanceof(left,right){if(right!=null&&typeof Symbol!=="undefined"&&right[Symbol.hasInstance]){return!!right[Symbol.hasInstance](left)}else{return left instanceof right}}export var handleImportError=function(error,defaultMessage){var message=_instanceof(error,Error)?error.message:defaultMessage;console.error(message,error);return message};export var validateUploadResult=function(result,taskKey){return!!result[taskKey]};
@@ -0,0 +1,43 @@
1
+ import type { CSSProperties } from "react";
2
+ import { theme } from "antd";
3
+ type TokenType = ReturnType<typeof theme.useToken>['token'];
4
+ /**
5
+ * 公共样式工具函数
6
+ */
7
+ export declare const getContainerStyle: (compact?: boolean) => CSSProperties;
8
+ export declare const getCenterContentStyle: (compact?: boolean) => CSSProperties;
9
+ export declare const getTextCenterStyle: () => CSSProperties;
10
+ export declare const getButtonGroupStyle: () => CSSProperties;
11
+ export declare const getCardBodyStyle: (token: TokenType) => CSSProperties;
12
+ export declare const getTipCardStyle: (token: TokenType) => CSSProperties;
13
+ export declare const getTipTitleStyle: () => CSSProperties;
14
+ export declare const getTipListStyle: () => CSSProperties;
15
+ export declare const getTipItemStyle: () => CSSProperties;
16
+ export declare const getHiddenInputStyle: () => CSSProperties;
17
+ export declare const getDescriptionStyle: () => CSSProperties;
18
+ export declare const getTitleStyle: (token: TokenType, size?: "small" | "medium" | "large") => CSSProperties;
19
+ export declare const getSubtitleStyle: (token: TokenType) => CSSProperties;
20
+ export declare const getProgressTextStyle: (token: TokenType) => CSSProperties;
21
+ export declare const getAlertStyle: (token: TokenType) => CSSProperties;
22
+ export declare const getSummaryCardStyle: (token: TokenType) => CSSProperties;
23
+ export declare const getSummaryTitleStyle: (token: TokenType) => CSSProperties;
24
+ export declare const getSummaryItemStyle: () => CSSProperties;
25
+ export declare const getIconContainerStyle: () => CSSProperties;
26
+ export declare const getIconSmallStyle: () => CSSProperties;
27
+ /**
28
+ * 统计卡片样式
29
+ */
30
+ export declare const getStatCardStyle: () => CSSProperties;
31
+ /**
32
+ * 统计数字样式
33
+ */
34
+ export declare const getStatNumberStyle: () => CSSProperties;
35
+ /**
36
+ * 统计标签样式
37
+ */
38
+ export declare const getStatLabelStyle: (token: TokenType) => CSSProperties;
39
+ /**
40
+ * 行号显示样式(等宽字体)
41
+ */
42
+ export declare const getRowNumberStyle: () => CSSProperties;
43
+ export {};
@@ -0,0 +1 @@
1
+ function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}export var getContainerStyle=function(){var compact=arguments.length>0&&arguments[0]!==void 0?arguments[0]:false;return{display:"flex",flexDirection:"column",gap:24,padding:compact?"16px 0":"24px 0"}};export var getCenterContentStyle=function(){var compact=arguments.length>0&&arguments[0]!==void 0?arguments[0]:false;return{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:compact?12:16}};export var getTextCenterStyle=function(){return{textAlign:"center"}};export var getButtonGroupStyle=function(){return{display:"flex",gap:12}};export var getCardBodyStyle=function(token){return{background:token.colorFillTertiary}};export var getTipCardStyle=function(token){return{borderRadius:8,background:token.colorInfoBg,padding:16,fontSize:12,color:token.colorInfoText}};export var getTipTitleStyle=function(){return{margin:"0 0 8px 0",fontWeight:500}};export var getTipListStyle=function(){return{margin:0,paddingLeft:20,listStyle:"disc"}};export var getTipItemStyle=function(){return{marginBottom:4}};export var getHiddenInputStyle=function(){return{display:"none"}};export var getDescriptionStyle=function(){return{fontSize:12,display:"block",marginBottom:16}};export var getTitleStyle=function(token){var size=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"medium";var sizes={small:{fontSize:16,fontWeight:500},medium:{fontSize:20,fontWeight:600},large:{fontSize:24,fontWeight:700}};return _object_spread_props(_object_spread({},sizes[size]),{color:token.colorText,margin:0})};export var getSubtitleStyle=function(token){return{fontSize:12,color:token.colorTextSecondary,marginTop:4}};export var getProgressTextStyle=function(token){return{fontSize:12,color:token.colorTextSecondary,marginTop:4}};export var getAlertStyle=function(token){return{borderRadius:8,background:token.colorWarningBg,border:"1px solid ".concat(token.colorWarningBorder),padding:16}};export var getSummaryCardStyle=function(token){return{borderRadius:8,background:token.colorFillTertiary,border:"1px solid ".concat(token.colorBorder),padding:16}};export var getSummaryTitleStyle=function(token){return{fontSize:14,fontWeight:500,color:token.colorText,marginBottom:12}};export var getSummaryItemStyle=function(){return{display:"flex",justifyContent:"space-between",fontSize:12,marginBottom:8}};export var getIconContainerStyle=function(){return{position:"relative"}};export var getIconSmallStyle=function(){return{position:"absolute",right:-8,top:-8}};export var getStatCardStyle=function(){return{borderRadius:8,padding:16,textAlign:"center"}};export var getStatNumberStyle=function(){return{fontSize:24,fontWeight:700,margin:0}};export var getStatLabelStyle=function(token){return{fontSize:12,color:token.colorTextSecondary,marginTop:8}};export var getRowNumberStyle=function(){return{fontFamily:"monospace",fontSize:12}};
@@ -1 +1 @@
1
- var local={};export default local;
1
+ var local={imports:{primaryText:"Import",secondaryText:"Import History",stepTitles:{upload:"Import Data",uploading:"Upload File",importing:"Import Progress",result:"Import Result"},uploadStep:{defaultTip:"Please ensure the data format matches the template",downloadTitle:"Step 1: Download Template",downloadDescription:"Download the standard template file and fill in the data according to the format",downloadButtonText:"Download Import Template",uploadTitle:"Step 2: Upload File",uploadDescription:"Select the filled data file to upload (supports CSV, Excel formats)",uploadButtonText:"Select File to Upload",tipsTitle:"Tips:"},uploadProgress:{title:"Uploading file...",progressText:"Upload progress {percent}%",alertMessage:"Do not refresh or close the page",alertDescription:"Closing the page during file upload will cause the upload to fail, please wait patiently"},importProgress:{title:"Importing...",closeWindow:"Close Window",viewHistory:"View Import History",queryProgressFailed:"Failed to query import progress",queryProgressNotConfigured:"Import progress query interface not configured",importCompleted:"Import completed",importFailed:"Import failed"},importResult:{importSuccess:"Import successful!",importCompleted:"Import completed",importFailed:"Import failed",importIdLabel:"Import ID: {id}",total:"Total",success:"Success",failed:"Failed",summaryTitle:"Import Summary",errorTitle:"Error Information",successRate:"Success Rate",status:"Status",failedAlert:"{count} records failed to import, please check details in import history",close:"Close",viewHistory:"View Import History"},history:{title:"Import History",columns:{importId:"Import ID",status:"Status",total:"Total",success:"Success",failed:"Failed",importTime:"Import Time",operation:"Operation"},statusEnum:{completed:"Completed",failed:"Failed",processing:"Processing",cancelled:"Cancelled"},view:"View",queryFailed:"Failed to query import records:"},detail:{title:"Import Details",labels:{importId:"Import ID",currentStatus:"Current Status",importTime:"Import Time"},status:{completed:"Completed",failed:"Failed",processing:"Processing"},stats:{total:"Total",success:"Success",failed:"Failed"},errorColumns:{rowNumber:"Row Number",errorType:"Error Type",errorMessage:"Error Message",errorId:"Error ID"},rowNumberText:"Row {rowNumber}",failedDataTitle:"Failed Data Details",successAlert:"All data imported successfully, no failed records",failedAlert:{message:"Import task failed",description:"Please check if the data format is correct, or contact technical support"},queryFailed:"Failed to query import error records:"},errors:{uploadMethodNotSet:"File upload method not set",uploadFailed:"Upload failed: Import ID not returned",uploadError:"File upload failed, please try again"}},tabSelector:{placeholder:"Click to select items...",confirmSelect:"Confirm Selection ({count})",searchPlaceholder:"Please enter keywords"},beyond:{more:"More"},list:{emptyText:"No data",totalText:"Total {total} items"}};export default local;
@@ -1 +1 @@
1
- var local={switch:{activeText:"启用",inactiveText:"禁用"},form:{text:"请输入",select:"请选择",start:"开始",ended:"结束",reset:"重置",submit:"提交",query:"查询"},table:{createBtnText:"新增",batchRemoveBtnText:"批量删除",batchRemoveModalTitle:"警告",batchRemoveModalContent:"即将删除{count}项数据,删除后无法恢复,是否继续?",createTitle:"新增",updateTitle:"更新",viewTitle:"详情",operateColumnTitle:"操作",viewBtnText:"查看",updateBtnText:"编辑",removeBtnText:"删除",moreBtnText:"更多",removeConfirm:"确定要删除这项吗?",removeTip:"警告?",backText:"返回",pagePt:"请输入添加项",pageAddText:"保存",createSubmitText:"创建",updateSubmitText:"保存",submitText:"提交",cancelText:"取消",closeText:"关闭"},upload:{btnText:"上传",limitSize:"文件大小不能超过 {limit}MB!",uploadFail:"上传失败"},adminTransfer:{unSelectText:"取消选择",selectText:"选择",selectedOption:"已选{length}项",clear:"清空",removeBtnText:"删除"},treeTable:{triggerText:"选择",selectedOption:"已选{length}项",clear:"清空",removeBtnText:"删除",waitSelectListText:"待选列表",selectedListText:"已选列表",searchTextPt:"请输入关键字",selectedText:"已选",unselectedText:"未选",treeTitle:"树型列表"},exports:{text:"导出",progressResText:"正在导出",successResText:"导出成功",errorResText:"导出失败",cancelBtnText:"取消",exportTitle:"导出",retryText:"重试"},treePanel:{selectedText:"已选",clearText:"清空",rootText:"全部",limitText:"最多选择${maxCount}项。",searchPlaceholder:"请输入关键字"}};export default local;
1
+ var local={switch:{activeText:"启用",inactiveText:"禁用"},form:{text:"请输入",select:"请选择",start:"开始",ended:"结束",reset:"重置",submit:"提交",query:"查询"},table:{createBtnText:"新增",batchRemoveBtnText:"批量删除",batchRemoveModalTitle:"警告",batchRemoveModalContent:"即将删除{count}项数据,删除后无法恢复,是否继续?",createTitle:"新增",updateTitle:"更新",viewTitle:"详情",operateColumnTitle:"操作",viewBtnText:"查看",updateBtnText:"编辑",removeBtnText:"删除",moreBtnText:"更多",removeConfirm:"确定要删除这项吗?",removeTip:"警告?",backText:"返回",pagePt:"请输入添加项",pageAddText:"保存",createSubmitText:"创建",updateSubmitText:"保存",submitText:"提交",cancelText:"取消",closeText:"关闭"},upload:{btnText:"上传",limitSize:"文件大小不能超过 {limit}MB!",uploadFail:"上传失败"},adminTransfer:{unSelectText:"取消选择",selectText:"选择",selectedOption:"已选{length}项",clear:"清空",removeBtnText:"删除"},treeTable:{triggerText:"选择",selectedOption:"已选{length}项",clear:"清空",removeBtnText:"删除",waitSelectListText:"待选列表",selectedListText:"已选列表",searchTextPt:"请输入关键字",selectedText:"已选",unselectedText:"未选",treeTitle:"树型列表"},exports:{text:"导出",progressResText:"正在导出",successResText:"导出成功",errorResText:"导出失败",cancelBtnText:"取消",exportTitle:"导出",retryText:"重试"},treePanel:{selectedText:"已选",clearText:"清空",rootText:"全部",limitText:"最多选择${maxCount}项。",searchPlaceholder:"请输入关键字"},imports:{primaryText:"导入",secondaryText:"导入记录",stepTitles:{upload:"导入数据",uploading:"上传文件",importing:"导入进度",result:"导入结果"},uploadStep:{defaultTip:"请确保数据格式与模板一致",downloadTitle:"第一步:下载模板",downloadDescription:"下载标准模板文件,按照格式填写数据",downloadButtonText:"下载导入模板",uploadTitle:"第二步:上传文件",uploadDescription:"选择填写好的数据文件进行上传(支持 CSV、Excel 格式)",uploadButtonText:"选择文件上传",tipsTitle:"温馨提示:"},uploadProgress:{title:"正在上传文件...",progressText:"上传进度 {percent}%",alertMessage:"请勿刷新或关闭页面",alertDescription:"文件上传过程中关闭页面会导致上传失败,请耐心等待"},importProgress:{title:"正在导入中...",closeWindow:"关闭窗口",viewHistory:"查看导入记录",queryProgressFailed:"查询导入进度失败",queryProgressNotConfigured:"查询导入进度接口未配置",importCompleted:"导入完成",importFailed:"导入失败"},importResult:{importSuccess:"导入成功!",importCompleted:"导入完成",importFailed:"导入失败",importIdLabel:"导入 ID: {id}",total:"总计",success:"成功",failed:"失败",summaryTitle:"导入摘要",errorTitle:"错误信息",successRate:"成功率",status:"状态",failedAlert:"{count} 条数据导入失败,请在导入记录中查看详情",close:"关闭",viewHistory:"查看导入记录"},history:{title:"导入记录",columns:{importId:"导入 ID",status:"状态",total:"总计",success:"成功",failed:"失败",importTime:"导入时间",operation:"操作"},statusEnum:{completed:"已完成",failed:"失败",processing:"处理中",cancelled:"已取消"},view:"查看",queryFailed:"查询导入记录失败:"},detail:{title:"导入详情",labels:{importId:"导入 ID",currentStatus:"当前状态",importTime:"导入时间"},status:{completed:"已完成",failed:"失败",processing:"处理中"},stats:{total:"总计",success:"成功",failed:"失败"},errorColumns:{rowNumber:"行号",errorType:"错误类型",errorMessage:"错误信息",errorId:"错误 ID"},rowNumberText:"第 {rowNumber} 行",failedDataTitle:"失败数据详情",successAlert:"所有数据已成功导入,无失败记录",failedAlert:{message:"导入任务失败",description:"请检查数据格式是否正确,或联系技术支持"},queryFailed:"查询导入失败记录失败:"},errors:{uploadMethodNotSet:"文件上传方法未设置",uploadFailed:"上传失败:未返回导入 ID",uploadError:"文件上传失败,请重试"}},tabSelector:{placeholder:"点击选择项目...",confirmSelect:"确认选择 ({count})",searchPlaceholder:"请输入关键字"},beyond:{more:"更多"},list:{emptyText:"暂无数据",totalText:"共 {total} 条"}};export default local;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "villianjs-pro",
3
- "version": "1.0.12",
3
+ "version": "1.0.14",
4
4
  "type": "module",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",