@cfmm/umi-plugins-ui-v2 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/cjs/components/ActionLogDrawer.tpl +148 -0
- package/dist/cjs/components/AddDrawerForm.tpl +38 -0
- package/dist/cjs/components/AuthorizeRender.tpl +11 -0
- package/dist/cjs/components/Authorized.tpl +39 -0
- package/dist/cjs/components/AuthorizedRoute.tpl +33 -0
- package/dist/cjs/components/AvatarDropdown.tpl +101 -0
- package/dist/cjs/components/CheckPermissions.tpl +100 -0
- package/dist/cjs/components/CopyButton.tpl +49 -0
- package/dist/cjs/components/CrudTable.tpl +650 -0
- package/dist/cjs/components/DicDropDownList.tpl +60 -0
- package/dist/cjs/components/DndTabs.tpl +159 -0
- package/dist/cjs/components/DndTag.tpl +89 -0
- package/dist/cjs/components/DropdownButton.tpl +123 -0
- package/dist/cjs/components/DynamicIcon.tpl +73 -0
- package/dist/cjs/components/DynamicIconModal.tpl +196 -0
- package/dist/cjs/components/EditMultiLangForm.tpl +366 -0
- package/dist/cjs/components/ExportPageWrapper.tpl +224 -0
- package/dist/cjs/components/FlieListModal.tpl +79 -0
- package/dist/cjs/components/FormUpload.tpl +561 -0
- package/dist/cjs/components/GlobalFooter.tpl +21 -0
- package/dist/cjs/components/GlobalHeader.less +51 -0
- package/dist/cjs/components/GlobalHeader.tpl +313 -0
- package/dist/cjs/components/HeaderSearch.less +32 -0
- package/dist/cjs/components/HeaderSearch.tpl +92 -0
- package/dist/cjs/components/HighlightStr.tpl +41 -0
- package/dist/cjs/components/ImportDataUpload.tpl +94 -0
- package/dist/cjs/components/ImportExecl.less +10 -0
- package/dist/cjs/components/ImportExecl.tpl +108 -0
- package/dist/cjs/components/KeepAliveDndTabs.tpl +151 -0
- package/dist/cjs/components/KeepAliveTabs.less +23 -0
- package/dist/cjs/components/KeepAliveTabs.tpl +136 -0
- package/dist/cjs/components/Loading.css +19 -0
- package/dist/cjs/components/LoadingSvg.tpl +14 -0
- package/dist/cjs/components/MenuFooter.css +13 -0
- package/dist/cjs/components/MenuFooter.tpl +24 -0
- package/dist/cjs/components/MyColorPicker.tpl +19 -0
- package/dist/cjs/components/MyFooterToolbar.css +6 -0
- package/dist/cjs/components/MyFooterToolbar.tpl +56 -0
- package/dist/cjs/components/MyPageContainer.tpl +43 -0
- package/dist/cjs/components/MyReactEcharts.tpl +11 -0
- package/dist/cjs/components/MySelect.tpl +267 -0
- package/dist/cjs/components/MySelectLang.tpl +22 -0
- package/dist/cjs/components/MySetps.tpl +85 -0
- package/dist/cjs/components/MyTagList.tpl +57 -0
- package/dist/cjs/components/MyUpload.less +39 -0
- package/dist/cjs/components/MyUpload.tpl +609 -0
- package/dist/cjs/components/NoFoundPage.tpl +46 -0
- package/dist/cjs/components/PDFWrapper.tpl +96 -0
- package/dist/cjs/components/PageLoading.tpl +16 -0
- package/dist/cjs/components/PermissionSelect.tpl +230 -0
- package/dist/cjs/components/ProFormUTCDatePicker.tpl +20 -0
- package/dist/cjs/components/ProFormUTCRangePicker.tpl +20 -0
- package/dist/cjs/components/PromiseRender.tpl +93 -0
- package/dist/cjs/components/QrCodeModal.tpl +19 -0
- package/dist/cjs/components/RandomAvatar.tpl +34 -0
- package/dist/cjs/components/RefDrawerForm.tpl +75 -0
- package/dist/cjs/components/ReportTable.tpl +336 -0
- package/dist/cjs/components/Secured.tpl +66 -0
- package/dist/cjs/components/ThemeSwitch.tpl +74 -0
- package/dist/cjs/components/TimeTypeSelect.tpl +35 -0
- package/dist/cjs/components/TipsTableTitle.tpl +37 -0
- package/dist/cjs/components/UTCDatePicker.tpl +107 -0
- package/dist/cjs/components/UTCRangePicker.tpl +142 -0
- package/dist/cjs/components/UpdateForm.tpl +32 -0
- package/dist/cjs/components/UserDisable.tpl +58 -0
- package/dist/cjs/components/UserNoPagePermission.tpl +58 -0
- package/dist/cjs/components/UserNoPermission.tpl +58 -0
- package/dist/cjs/components/ViewTableItemDrawer.tpl +29 -0
- package/dist/cjs/components/VolumeFormItem.tpl +59 -0
- package/dist/cjs/components/WangEditor.css +53 -0
- package/dist/cjs/components/WangEditor.tpl +174 -0
- package/dist/cjs/components/WangEditorView.tpl +24 -0
- package/dist/cjs/components/fileTypeMap.tpl +96 -0
- package/dist/cjs/components/renderAuthorize.tpl +44 -0
- package/dist/cjs/context/KeepAliveTabs.tpl +13 -0
- package/dist/cjs/context/index.tpl +1 -0
- package/dist/cjs/hooks/useAction.tpl +126 -0
- package/dist/cjs/hooks/useActionLocales.tpl +108 -0
- package/dist/cjs/hooks/useAuthority.tpl +27 -0
- package/dist/cjs/hooks/useColumnTitle.tpl +47 -0
- package/dist/cjs/hooks/useFormatLocale.tpl +82 -0
- package/dist/cjs/hooks/useKeepAliveTabs.tpl +255 -0
- package/dist/cjs/hooks/useMatchRoute.tpl +76 -0
- package/dist/cjs/hooks/useMemoizedFn.tpl +32 -0
- package/dist/cjs/hooks/useOutlet.tpl +20 -0
- package/dist/cjs/hooks/usePageExport.tpl +155 -0
- package/dist/cjs/hooks/useQueryTableList.tpl +91 -0
- package/dist/cjs/hooks/useRouteAuth.tpl +122 -0
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.js +122 -0
- package/dist/cjs/locales/en-US.d.ts +163 -0
- package/dist/cjs/locales/en-US.js +16 -0
- package/dist/cjs/locales/enUS/ActionLogDrawer.d.ts +6 -0
- package/dist/cjs/locales/enUS/ActionLogDrawer.js +11 -0
- package/dist/cjs/locales/enUS/DynamicIconModal.d.ts +4 -0
- package/dist/cjs/locales/enUS/DynamicIconModal.js +9 -0
- package/dist/cjs/locales/enUS/EditMultiLangForm.d.ts +16 -0
- package/dist/cjs/locales/enUS/EditMultiLangForm.js +21 -0
- package/dist/cjs/locales/enUS/File.d.ts +54 -0
- package/dist/cjs/locales/enUS/File.js +60 -0
- package/dist/cjs/locales/enUS/GlobalFooter.d.ts +4 -0
- package/dist/cjs/locales/enUS/GlobalFooter.js +9 -0
- package/dist/cjs/locales/enUS/GlobalHeader.d.ts +10 -0
- package/dist/cjs/locales/enUS/GlobalHeader.js +15 -0
- package/dist/cjs/locales/enUS/MyFooterToolbar.d.ts +5 -0
- package/dist/cjs/locales/enUS/MyFooterToolbar.js +10 -0
- package/dist/cjs/locales/enUS/PermissionSelect.d.ts +4 -0
- package/dist/cjs/locales/enUS/PermissionSelect.js +9 -0
- package/dist/cjs/locales/enUS/TimeTypeSelect.d.ts +6 -0
- package/dist/cjs/locales/enUS/TimeTypeSelect.js +11 -0
- package/dist/cjs/locales/enUS/common.d.ts +74 -0
- package/dist/cjs/locales/enUS/common.js +82 -0
- package/dist/cjs/locales/enUS/index.d.ts +163 -0
- package/dist/cjs/locales/enUS/index.js +25 -0
- package/dist/cjs/locales/enUS/pages.d.ts +10 -0
- package/dist/cjs/locales/enUS/pages.js +15 -0
- package/dist/cjs/locales/th-TH.d.ts +163 -0
- package/dist/cjs/locales/th-TH.js +16 -0
- package/dist/cjs/locales/zh-CN.d.ts +163 -0
- package/dist/cjs/locales/zh-CN.js +16 -0
- package/dist/cjs/locales/zh-TW.d.ts +162 -0
- package/dist/cjs/locales/zh-TW.js +16 -0
- package/dist/cjs/locales/zhCN/ActionLogDrawer.d.ts +6 -0
- package/dist/cjs/locales/zhCN/ActionLogDrawer.js +11 -0
- package/dist/cjs/locales/zhCN/DynamicIconModal.d.ts +4 -0
- package/dist/cjs/locales/zhCN/DynamicIconModal.js +9 -0
- package/dist/cjs/locales/zhCN/EditMultiLangForm.d.ts +16 -0
- package/dist/cjs/locales/zhCN/EditMultiLangForm.js +21 -0
- package/dist/cjs/locales/zhCN/File.d.ts +54 -0
- package/dist/cjs/locales/zhCN/File.js +60 -0
- package/dist/cjs/locales/zhCN/GlobalFooter.d.ts +4 -0
- package/dist/cjs/locales/zhCN/GlobalFooter.js +9 -0
- package/dist/cjs/locales/zhCN/GlobalHeader.d.ts +10 -0
- package/dist/cjs/locales/zhCN/GlobalHeader.js +15 -0
- package/dist/cjs/locales/zhCN/MyFooterToolbar.d.ts +5 -0
- package/dist/cjs/locales/zhCN/MyFooterToolbar.js +10 -0
- package/dist/cjs/locales/zhCN/PermissionSelect.d.ts +4 -0
- package/dist/cjs/locales/zhCN/PermissionSelect.js +9 -0
- package/dist/cjs/locales/zhCN/TimeTypeSelect.d.ts +6 -0
- package/dist/cjs/locales/zhCN/TimeTypeSelect.js +11 -0
- package/dist/cjs/locales/zhCN/common.d.ts +74 -0
- package/dist/cjs/locales/zhCN/common.js +82 -0
- package/dist/cjs/locales/zhCN/index.d.ts +163 -0
- package/dist/cjs/locales/zhCN/index.js +25 -0
- package/dist/cjs/locales/zhCN/pages.d.ts +10 -0
- package/dist/cjs/locales/zhCN/pages.js +15 -0
- package/dist/cjs/locales/zhTW/ActionLogDrawer.d.ts +6 -0
- package/dist/cjs/locales/zhTW/ActionLogDrawer.js +11 -0
- package/dist/cjs/locales/zhTW/DynamicIconModal.d.ts +4 -0
- package/dist/cjs/locales/zhTW/DynamicIconModal.js +9 -0
- package/dist/cjs/locales/zhTW/EditMultiLangForm.d.ts +16 -0
- package/dist/cjs/locales/zhTW/EditMultiLangForm.js +21 -0
- package/dist/cjs/locales/zhTW/File.d.ts +53 -0
- package/dist/cjs/locales/zhTW/File.js +59 -0
- package/dist/cjs/locales/zhTW/GlobalFooter.d.ts +4 -0
- package/dist/cjs/locales/zhTW/GlobalFooter.js +9 -0
- package/dist/cjs/locales/zhTW/GlobalHeader.d.ts +10 -0
- package/dist/cjs/locales/zhTW/GlobalHeader.js +15 -0
- package/dist/cjs/locales/zhTW/MyFooterToolbar.d.ts +5 -0
- package/dist/cjs/locales/zhTW/MyFooterToolbar.js +10 -0
- package/dist/cjs/locales/zhTW/PermissionSelect.d.ts +4 -0
- package/dist/cjs/locales/zhTW/PermissionSelect.js +9 -0
- package/dist/cjs/locales/zhTW/TimeTypeSelect.d.ts +6 -0
- package/dist/cjs/locales/zhTW/TimeTypeSelect.js +11 -0
- package/dist/cjs/locales/zhTW/common.d.ts +74 -0
- package/dist/cjs/locales/zhTW/common.js +82 -0
- package/dist/cjs/locales/zhTW/index.d.ts +162 -0
- package/dist/cjs/locales/zhTW/index.js +25 -0
- package/dist/cjs/locales/zhTW/pages.d.ts +10 -0
- package/dist/cjs/locales/zhTW/pages.js +15 -0
- package/dist/cjs/services/index.tpl +160 -0
- package/dist/cjs/types/ActionLogDrawerTypes.d.ts +1 -0
- package/dist/cjs/types/ActionLogDrawerTypes.js +7 -0
- package/dist/cjs/types/AvatarDropdownTypes.d.ts +1 -0
- package/dist/cjs/types/AvatarDropdownTypes.js +7 -0
- package/dist/cjs/types/CrudTableTypes.d.ts +1 -0
- package/dist/cjs/types/CrudTableTypes.js +7 -0
- package/dist/cjs/types/DatePickerTypes.d.ts +1 -0
- package/dist/cjs/types/DatePickerTypes.js +7 -0
- package/dist/cjs/types/DicDropDownListTypes.d.ts +1 -0
- package/dist/cjs/types/DicDropDownListTypes.js +7 -0
- package/dist/cjs/types/DndTabsTypes.d.ts +1 -0
- package/dist/cjs/types/DndTabsTypes.js +7 -0
- package/dist/cjs/types/DndTagTypes.d.ts +1 -0
- package/dist/cjs/types/DndTagTypes.js +7 -0
- package/dist/cjs/types/DropdownButtonTypes.d.ts +2 -0
- package/dist/cjs/types/DropdownButtonTypes.js +8 -0
- package/dist/cjs/types/DynamicIconTypes.d.ts +1 -0
- package/dist/cjs/types/DynamicIconTypes.js +7 -0
- package/dist/cjs/types/EditMultiLangFormTypes.d.ts +1 -0
- package/dist/cjs/types/EditMultiLangFormTypes.js +7 -0
- package/dist/cjs/types/ExportPageWrapperTypes.d.ts +1 -0
- package/dist/cjs/types/ExportPageWrapperTypes.js +7 -0
- package/dist/cjs/types/GlobalHeaderTypes.d.ts +1 -0
- package/dist/cjs/types/GlobalHeaderTypes.js +7 -0
- package/dist/cjs/types/HeaderSearchTypes.d.ts +1 -0
- package/dist/cjs/types/HeaderSearchTypes.js +7 -0
- package/dist/cjs/types/HighlightStrTypes.d.ts +1 -0
- package/dist/cjs/types/HighlightStrTypes.js +7 -0
- package/dist/cjs/types/ImportDataUploadTypes.d.ts +1 -0
- package/dist/cjs/types/ImportDataUploadTypes.js +7 -0
- package/dist/cjs/types/ImportExeclTypes.d.ts +1 -0
- package/dist/cjs/types/ImportExeclTypes.js +7 -0
- package/dist/cjs/types/KeepAliveTabsTypes.d.ts +1 -0
- package/dist/cjs/types/KeepAliveTabsTypes.js +7 -0
- package/dist/cjs/types/MenuFooterTypes.d.ts +1 -0
- package/dist/cjs/types/MenuFooterTypes.js +7 -0
- package/dist/cjs/types/MyFooterToolbarTypes.d.ts +1 -0
- package/dist/cjs/types/MyFooterToolbarTypes.js +7 -0
- package/dist/cjs/types/MyPageContainerTypes.d.ts +1 -0
- package/dist/cjs/types/MyPageContainerTypes.js +7 -0
- package/dist/cjs/types/MySelectLangTypes.d.ts +1 -0
- package/dist/cjs/types/MySelectLangTypes.js +7 -0
- package/dist/cjs/types/MySelectTypes.d.ts +1 -0
- package/dist/cjs/types/MySelectTypes.js +7 -0
- package/dist/cjs/types/MySetpsTypes.d.ts +1 -0
- package/dist/cjs/types/MySetpsTypes.js +7 -0
- package/dist/cjs/types/MyTagListTypes.d.ts +1 -0
- package/dist/cjs/types/MyTagListTypes.js +7 -0
- package/dist/cjs/types/MyUploadTypes.d.ts +1 -0
- package/dist/cjs/types/MyUploadTypes.js +7 -0
- package/dist/cjs/types/PermissionSelectTypes.d.ts +1 -0
- package/dist/cjs/types/PermissionSelectTypes.js +7 -0
- package/dist/cjs/types/QrCodeModalTypes.d.ts +1 -0
- package/dist/cjs/types/QrCodeModalTypes.js +7 -0
- package/dist/cjs/types/RandomAvatarTypes.d.ts +1 -0
- package/dist/cjs/types/RandomAvatarTypes.js +7 -0
- package/dist/cjs/types/RefDrawerFormTypes.d.ts +1 -0
- package/dist/cjs/types/RefDrawerFormTypes.js +7 -0
- package/dist/cjs/types/ReportTableTypes.d.ts +1 -0
- package/dist/cjs/types/ReportTableTypes.js +7 -0
- package/dist/cjs/types/ThemeSwitchTypes.d.ts +1 -0
- package/dist/cjs/types/ThemeSwitchTypes.js +7 -0
- package/dist/cjs/types/ViewTableItemDrawerTypes.d.ts +1 -0
- package/dist/cjs/types/ViewTableItemDrawerTypes.js +7 -0
- package/dist/cjs/types/VolumeFormItemTypes.d.ts +1 -0
- package/dist/cjs/types/VolumeFormItemTypes.js +7 -0
- package/dist/cjs/types/WangEditorTypes.d.ts +1 -0
- package/dist/cjs/types/WangEditorTypes.js +7 -0
- package/dist/cjs/types/index.d.ts +35 -0
- package/dist/cjs/types/index.js +250 -0
- package/dist/cjs/types/servicesTypes.d.ts +1 -0
- package/dist/cjs/types/servicesTypes.js +7 -0
- package/dist/cjs/utils/Authorized.tpl +17 -0
- package/dist/cjs/utils/authority.tpl +51 -0
- package/dist/cjs/utils/authorityFunction.tpl +17 -0
- package/dist/cjs/utils/excelHelper.tpl +825 -0
- package/dist/cjs/utils/exportPage.tpl +784 -0
- package/dist/cjs/utils/fileHelper.tpl +251 -0
- package/dist/cjs/utils/importHelper.tpl +283 -0
- package/dist/cjs/utils/utils.tpl +26 -0
- package/dist/cjs/utils/xmlRequest.tpl +92 -0
- package/dist/cjs/writeTmpFile/index.d.ts +5 -0
- package/dist/cjs/writeTmpFile/index.js +34 -0
- package/dist/cjs/writeTmpFile/runtime.d.ts +5 -0
- package/dist/cjs/writeTmpFile/runtime.js +15 -0
- package/dist/cjs/writeTmpFile/writeConstants.d.ts +6 -0
- package/dist/cjs/writeTmpFile/writeConstants.js +13 -0
- package/dist/cjs/writeTmpFile/writeIndex.d.ts +5 -0
- package/dist/cjs/writeTmpFile/writeIndex.js +10 -0
- package/dist/cjs/writeTmpFile/writeTypes.d.ts +5 -0
- package/dist/cjs/writeTmpFile/writeTypes.js +12 -0
- package/dist/esm/components/ActionLogDrawer.tpl +148 -0
- package/dist/esm/components/AddDrawerForm.tpl +38 -0
- package/dist/esm/components/AuthorizeRender.tpl +11 -0
- package/dist/esm/components/Authorized.tpl +39 -0
- package/dist/esm/components/AuthorizedRoute.tpl +33 -0
- package/dist/esm/components/AvatarDropdown.tpl +101 -0
- package/dist/esm/components/CheckPermissions.tpl +100 -0
- package/dist/esm/components/CopyButton.tpl +49 -0
- package/dist/esm/components/CrudTable.tpl +650 -0
- package/dist/esm/components/DicDropDownList.tpl +60 -0
- package/dist/esm/components/DndTabs.tpl +159 -0
- package/dist/esm/components/DndTag.tpl +89 -0
- package/dist/esm/components/DropdownButton.tpl +123 -0
- package/dist/esm/components/DynamicIcon.tpl +73 -0
- package/dist/esm/components/DynamicIconModal.tpl +196 -0
- package/dist/esm/components/EditMultiLangForm.tpl +366 -0
- package/dist/esm/components/ExportPageWrapper.tpl +224 -0
- package/dist/esm/components/FlieListModal.tpl +79 -0
- package/dist/esm/components/FormUpload.tpl +561 -0
- package/dist/esm/components/GlobalFooter.tpl +21 -0
- package/dist/esm/components/GlobalHeader.less +51 -0
- package/dist/esm/components/GlobalHeader.tpl +313 -0
- package/dist/esm/components/HeaderSearch.less +32 -0
- package/dist/esm/components/HeaderSearch.tpl +92 -0
- package/dist/esm/components/HighlightStr.tpl +41 -0
- package/dist/esm/components/ImportDataUpload.tpl +94 -0
- package/dist/esm/components/ImportExecl.less +10 -0
- package/dist/esm/components/ImportExecl.tpl +108 -0
- package/dist/esm/components/KeepAliveDndTabs.tpl +151 -0
- package/dist/esm/components/KeepAliveTabs.less +23 -0
- package/dist/esm/components/KeepAliveTabs.tpl +136 -0
- package/dist/esm/components/Loading.css +19 -0
- package/dist/esm/components/LoadingSvg.tpl +14 -0
- package/dist/esm/components/MenuFooter.css +13 -0
- package/dist/esm/components/MenuFooter.tpl +24 -0
- package/dist/esm/components/MyColorPicker.tpl +19 -0
- package/dist/esm/components/MyFooterToolbar.css +6 -0
- package/dist/esm/components/MyFooterToolbar.tpl +56 -0
- package/dist/esm/components/MyPageContainer.tpl +43 -0
- package/dist/esm/components/MyReactEcharts.tpl +11 -0
- package/dist/esm/components/MySelect.tpl +267 -0
- package/dist/esm/components/MySelectLang.tpl +22 -0
- package/dist/esm/components/MySetps.tpl +85 -0
- package/dist/esm/components/MyTagList.tpl +57 -0
- package/dist/esm/components/MyUpload.less +39 -0
- package/dist/esm/components/MyUpload.tpl +609 -0
- package/dist/esm/components/NoFoundPage.tpl +46 -0
- package/dist/esm/components/PDFWrapper.tpl +96 -0
- package/dist/esm/components/PageLoading.tpl +16 -0
- package/dist/esm/components/PermissionSelect.tpl +230 -0
- package/dist/esm/components/ProFormUTCDatePicker.tpl +20 -0
- package/dist/esm/components/ProFormUTCRangePicker.tpl +20 -0
- package/dist/esm/components/PromiseRender.tpl +93 -0
- package/dist/esm/components/QrCodeModal.tpl +19 -0
- package/dist/esm/components/RandomAvatar.tpl +34 -0
- package/dist/esm/components/RefDrawerForm.tpl +75 -0
- package/dist/esm/components/ReportTable.tpl +336 -0
- package/dist/esm/components/Secured.tpl +66 -0
- package/dist/esm/components/ThemeSwitch.tpl +74 -0
- package/dist/esm/components/TimeTypeSelect.tpl +35 -0
- package/dist/esm/components/TipsTableTitle.tpl +37 -0
- package/dist/esm/components/UTCDatePicker.tpl +107 -0
- package/dist/esm/components/UTCRangePicker.tpl +142 -0
- package/dist/esm/components/UpdateForm.tpl +32 -0
- package/dist/esm/components/UserDisable.tpl +58 -0
- package/dist/esm/components/UserNoPagePermission.tpl +58 -0
- package/dist/esm/components/UserNoPermission.tpl +58 -0
- package/dist/esm/components/ViewTableItemDrawer.tpl +29 -0
- package/dist/esm/components/VolumeFormItem.tpl +59 -0
- package/dist/esm/components/WangEditor.css +53 -0
- package/dist/esm/components/WangEditor.tpl +174 -0
- package/dist/esm/components/WangEditorView.tpl +24 -0
- package/dist/esm/components/fileTypeMap.tpl +96 -0
- package/dist/esm/components/renderAuthorize.tpl +44 -0
- package/dist/esm/context/KeepAliveTabs.tpl +13 -0
- package/dist/esm/context/index.tpl +1 -0
- package/dist/esm/hooks/useAction.tpl +126 -0
- package/dist/esm/hooks/useActionLocales.tpl +108 -0
- package/dist/esm/hooks/useAuthority.tpl +27 -0
- package/dist/esm/hooks/useColumnTitle.tpl +47 -0
- package/dist/esm/hooks/useFormatLocale.tpl +82 -0
- package/dist/esm/hooks/useKeepAliveTabs.tpl +255 -0
- package/dist/esm/hooks/useMatchRoute.tpl +76 -0
- package/dist/esm/hooks/useMemoizedFn.tpl +32 -0
- package/dist/esm/hooks/useOutlet.tpl +20 -0
- package/dist/esm/hooks/usePageExport.tpl +155 -0
- package/dist/esm/hooks/useQueryTableList.tpl +91 -0
- package/dist/esm/hooks/useRouteAuth.tpl +122 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +115 -0
- package/dist/esm/locales/en-US.d.ts +163 -0
- package/dist/esm/locales/en-US.js +9 -0
- package/dist/esm/locales/enUS/ActionLogDrawer.d.ts +6 -0
- package/dist/esm/locales/enUS/ActionLogDrawer.js +5 -0
- package/dist/esm/locales/enUS/DynamicIconModal.d.ts +4 -0
- package/dist/esm/locales/enUS/DynamicIconModal.js +3 -0
- package/dist/esm/locales/enUS/EditMultiLangForm.d.ts +16 -0
- package/dist/esm/locales/enUS/EditMultiLangForm.js +15 -0
- package/dist/esm/locales/enUS/File.d.ts +54 -0
- package/dist/esm/locales/enUS/File.js +54 -0
- package/dist/esm/locales/enUS/GlobalFooter.d.ts +4 -0
- package/dist/esm/locales/enUS/GlobalFooter.js +3 -0
- package/dist/esm/locales/enUS/GlobalHeader.d.ts +10 -0
- package/dist/esm/locales/enUS/GlobalHeader.js +9 -0
- package/dist/esm/locales/enUS/MyFooterToolbar.d.ts +5 -0
- package/dist/esm/locales/enUS/MyFooterToolbar.js +4 -0
- package/dist/esm/locales/enUS/PermissionSelect.d.ts +4 -0
- package/dist/esm/locales/enUS/PermissionSelect.js +3 -0
- package/dist/esm/locales/enUS/TimeTypeSelect.d.ts +6 -0
- package/dist/esm/locales/enUS/TimeTypeSelect.js +5 -0
- package/dist/esm/locales/enUS/common.d.ts +74 -0
- package/dist/esm/locales/enUS/common.js +76 -0
- package/dist/esm/locales/enUS/index.d.ts +163 -0
- package/dist/esm/locales/enUS/index.js +18 -0
- package/dist/esm/locales/enUS/pages.d.ts +10 -0
- package/dist/esm/locales/enUS/pages.js +9 -0
- package/dist/esm/locales/th-TH.d.ts +163 -0
- package/dist/esm/locales/th-TH.js +9 -0
- package/dist/esm/locales/zh-CN.d.ts +163 -0
- package/dist/esm/locales/zh-CN.js +9 -0
- package/dist/esm/locales/zh-TW.d.ts +162 -0
- package/dist/esm/locales/zh-TW.js +9 -0
- package/dist/esm/locales/zhCN/ActionLogDrawer.d.ts +6 -0
- package/dist/esm/locales/zhCN/ActionLogDrawer.js +5 -0
- package/dist/esm/locales/zhCN/DynamicIconModal.d.ts +4 -0
- package/dist/esm/locales/zhCN/DynamicIconModal.js +3 -0
- package/dist/esm/locales/zhCN/EditMultiLangForm.d.ts +16 -0
- package/dist/esm/locales/zhCN/EditMultiLangForm.js +15 -0
- package/dist/esm/locales/zhCN/File.d.ts +54 -0
- package/dist/esm/locales/zhCN/File.js +54 -0
- package/dist/esm/locales/zhCN/GlobalFooter.d.ts +4 -0
- package/dist/esm/locales/zhCN/GlobalFooter.js +3 -0
- package/dist/esm/locales/zhCN/GlobalHeader.d.ts +10 -0
- package/dist/esm/locales/zhCN/GlobalHeader.js +9 -0
- package/dist/esm/locales/zhCN/MyFooterToolbar.d.ts +5 -0
- package/dist/esm/locales/zhCN/MyFooterToolbar.js +4 -0
- package/dist/esm/locales/zhCN/PermissionSelect.d.ts +4 -0
- package/dist/esm/locales/zhCN/PermissionSelect.js +3 -0
- package/dist/esm/locales/zhCN/TimeTypeSelect.d.ts +6 -0
- package/dist/esm/locales/zhCN/TimeTypeSelect.js +5 -0
- package/dist/esm/locales/zhCN/common.d.ts +74 -0
- package/dist/esm/locales/zhCN/common.js +76 -0
- package/dist/esm/locales/zhCN/index.d.ts +163 -0
- package/dist/esm/locales/zhCN/index.js +18 -0
- package/dist/esm/locales/zhCN/pages.d.ts +10 -0
- package/dist/esm/locales/zhCN/pages.js +9 -0
- package/dist/esm/locales/zhTW/ActionLogDrawer.d.ts +6 -0
- package/dist/esm/locales/zhTW/ActionLogDrawer.js +5 -0
- package/dist/esm/locales/zhTW/DynamicIconModal.d.ts +4 -0
- package/dist/esm/locales/zhTW/DynamicIconModal.js +3 -0
- package/dist/esm/locales/zhTW/EditMultiLangForm.d.ts +16 -0
- package/dist/esm/locales/zhTW/EditMultiLangForm.js +15 -0
- package/dist/esm/locales/zhTW/File.d.ts +53 -0
- package/dist/esm/locales/zhTW/File.js +53 -0
- package/dist/esm/locales/zhTW/GlobalFooter.d.ts +4 -0
- package/dist/esm/locales/zhTW/GlobalFooter.js +3 -0
- package/dist/esm/locales/zhTW/GlobalHeader.d.ts +10 -0
- package/dist/esm/locales/zhTW/GlobalHeader.js +9 -0
- package/dist/esm/locales/zhTW/MyFooterToolbar.d.ts +5 -0
- package/dist/esm/locales/zhTW/MyFooterToolbar.js +4 -0
- package/dist/esm/locales/zhTW/PermissionSelect.d.ts +4 -0
- package/dist/esm/locales/zhTW/PermissionSelect.js +3 -0
- package/dist/esm/locales/zhTW/TimeTypeSelect.d.ts +6 -0
- package/dist/esm/locales/zhTW/TimeTypeSelect.js +5 -0
- package/dist/esm/locales/zhTW/common.d.ts +74 -0
- package/dist/esm/locales/zhTW/common.js +76 -0
- package/dist/esm/locales/zhTW/index.d.ts +162 -0
- package/dist/esm/locales/zhTW/index.js +18 -0
- package/dist/esm/locales/zhTW/pages.d.ts +10 -0
- package/dist/esm/locales/zhTW/pages.js +9 -0
- package/dist/esm/services/index.tpl +160 -0
- package/dist/esm/types/ActionLogDrawerTypes.d.ts +1 -0
- package/dist/esm/types/ActionLogDrawerTypes.js +1 -0
- package/dist/esm/types/AvatarDropdownTypes.d.ts +1 -0
- package/dist/esm/types/AvatarDropdownTypes.js +1 -0
- package/dist/esm/types/CrudTableTypes.d.ts +1 -0
- package/dist/esm/types/CrudTableTypes.js +1 -0
- package/dist/esm/types/DatePickerTypes.d.ts +1 -0
- package/dist/esm/types/DatePickerTypes.js +1 -0
- package/dist/esm/types/DicDropDownListTypes.d.ts +1 -0
- package/dist/esm/types/DicDropDownListTypes.js +1 -0
- package/dist/esm/types/DndTabsTypes.d.ts +1 -0
- package/dist/esm/types/DndTabsTypes.js +1 -0
- package/dist/esm/types/DndTagTypes.d.ts +1 -0
- package/dist/esm/types/DndTagTypes.js +1 -0
- package/dist/esm/types/DropdownButtonTypes.d.ts +2 -0
- package/dist/esm/types/DropdownButtonTypes.js +2 -0
- package/dist/esm/types/DynamicIconTypes.d.ts +1 -0
- package/dist/esm/types/DynamicIconTypes.js +1 -0
- package/dist/esm/types/EditMultiLangFormTypes.d.ts +1 -0
- package/dist/esm/types/EditMultiLangFormTypes.js +1 -0
- package/dist/esm/types/ExportPageWrapperTypes.d.ts +1 -0
- package/dist/esm/types/ExportPageWrapperTypes.js +1 -0
- package/dist/esm/types/GlobalHeaderTypes.d.ts +1 -0
- package/dist/esm/types/GlobalHeaderTypes.js +1 -0
- package/dist/esm/types/HeaderSearchTypes.d.ts +1 -0
- package/dist/esm/types/HeaderSearchTypes.js +1 -0
- package/dist/esm/types/HighlightStrTypes.d.ts +1 -0
- package/dist/esm/types/HighlightStrTypes.js +1 -0
- package/dist/esm/types/ImportDataUploadTypes.d.ts +1 -0
- package/dist/esm/types/ImportDataUploadTypes.js +1 -0
- package/dist/esm/types/ImportExeclTypes.d.ts +1 -0
- package/dist/esm/types/ImportExeclTypes.js +1 -0
- package/dist/esm/types/KeepAliveTabsTypes.d.ts +1 -0
- package/dist/esm/types/KeepAliveTabsTypes.js +1 -0
- package/dist/esm/types/MenuFooterTypes.d.ts +1 -0
- package/dist/esm/types/MenuFooterTypes.js +1 -0
- package/dist/esm/types/MyFooterToolbarTypes.d.ts +1 -0
- package/dist/esm/types/MyFooterToolbarTypes.js +1 -0
- package/dist/esm/types/MyPageContainerTypes.d.ts +1 -0
- package/dist/esm/types/MyPageContainerTypes.js +1 -0
- package/dist/esm/types/MySelectLangTypes.d.ts +1 -0
- package/dist/esm/types/MySelectLangTypes.js +1 -0
- package/dist/esm/types/MySelectTypes.d.ts +1 -0
- package/dist/esm/types/MySelectTypes.js +1 -0
- package/dist/esm/types/MySetpsTypes.d.ts +1 -0
- package/dist/esm/types/MySetpsTypes.js +1 -0
- package/dist/esm/types/MyTagListTypes.d.ts +1 -0
- package/dist/esm/types/MyTagListTypes.js +1 -0
- package/dist/esm/types/MyUploadTypes.d.ts +1 -0
- package/dist/esm/types/MyUploadTypes.js +1 -0
- package/dist/esm/types/PermissionSelectTypes.d.ts +1 -0
- package/dist/esm/types/PermissionSelectTypes.js +1 -0
- package/dist/esm/types/QrCodeModalTypes.d.ts +1 -0
- package/dist/esm/types/QrCodeModalTypes.js +1 -0
- package/dist/esm/types/RandomAvatarTypes.d.ts +1 -0
- package/dist/esm/types/RandomAvatarTypes.js +1 -0
- package/dist/esm/types/RefDrawerFormTypes.d.ts +1 -0
- package/dist/esm/types/RefDrawerFormTypes.js +1 -0
- package/dist/esm/types/ReportTableTypes.d.ts +1 -0
- package/dist/esm/types/ReportTableTypes.js +1 -0
- package/dist/esm/types/ThemeSwitchTypes.d.ts +1 -0
- package/dist/esm/types/ThemeSwitchTypes.js +1 -0
- package/dist/esm/types/ViewTableItemDrawerTypes.d.ts +1 -0
- package/dist/esm/types/ViewTableItemDrawerTypes.js +1 -0
- package/dist/esm/types/VolumeFormItemTypes.d.ts +1 -0
- package/dist/esm/types/VolumeFormItemTypes.js +1 -0
- package/dist/esm/types/WangEditorTypes.d.ts +1 -0
- package/dist/esm/types/WangEditorTypes.js +1 -0
- package/dist/esm/types/index.d.ts +35 -0
- package/dist/esm/types/index.js +35 -0
- package/dist/esm/types/servicesTypes.d.ts +1 -0
- package/dist/esm/types/servicesTypes.js +1 -0
- package/dist/esm/utils/Authorized.tpl +17 -0
- package/dist/esm/utils/authority.tpl +51 -0
- package/dist/esm/utils/authorityFunction.tpl +17 -0
- package/dist/esm/utils/excelHelper.tpl +825 -0
- package/dist/esm/utils/exportPage.tpl +784 -0
- package/dist/esm/utils/fileHelper.tpl +251 -0
- package/dist/esm/utils/importHelper.tpl +283 -0
- package/dist/esm/utils/utils.tpl +26 -0
- package/dist/esm/utils/xmlRequest.tpl +92 -0
- package/dist/esm/writeTmpFile/index.d.ts +5 -0
- package/dist/esm/writeTmpFile/index.js +5 -0
- package/dist/esm/writeTmpFile/runtime.d.ts +5 -0
- package/dist/esm/writeTmpFile/runtime.js +8 -0
- package/dist/esm/writeTmpFile/writeConstants.d.ts +6 -0
- package/dist/esm/writeTmpFile/writeConstants.js +7 -0
- package/dist/esm/writeTmpFile/writeIndex.d.ts +5 -0
- package/dist/esm/writeTmpFile/writeIndex.js +4 -0
- package/dist/esm/writeTmpFile/writeTypes.d.ts +5 -0
- package/dist/esm/writeTmpFile/writeTypes.js +7 -0
- package/package.json +58 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { request } from '@umijs/max';
|
|
2
|
+
import { message } from 'antd';
|
|
3
|
+
import { Base64 } from 'js-base64';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 文件大小
|
|
7
|
+
* @param size
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
export const formatBytes = (bytes: number | undefined, decimals = 2) => {
|
|
11
|
+
if (!bytes && bytes !== 0) return;
|
|
12
|
+
if (bytes === 0) return '0 B';
|
|
13
|
+
const k = 1024;
|
|
14
|
+
const dm = decimals < 0 ? 0 : decimals;
|
|
15
|
+
const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
|
16
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
17
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 解析Content-Disposition中的文件名
|
|
22
|
+
* @param disposition 请求头Content-Disposition中的文件名
|
|
23
|
+
* @returns fileName
|
|
24
|
+
*/
|
|
25
|
+
export function decodeFileName(disposition: string): string {
|
|
26
|
+
try {
|
|
27
|
+
// 提取文件名
|
|
28
|
+
const regex = /filename=(.*)/;
|
|
29
|
+
const matches = disposition.match(regex);
|
|
30
|
+
if (!matches || !matches[1]) return '下载文件';
|
|
31
|
+
|
|
32
|
+
// 解码
|
|
33
|
+
return decodeURIComponent(escape(matches[1]));
|
|
34
|
+
} catch (error) {
|
|
35
|
+
console.error('解码文件名失败:', error);
|
|
36
|
+
return '下载文件';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* 将文件id转为下载的url
|
|
42
|
+
* @param fileId 文件id
|
|
43
|
+
* @returns url
|
|
44
|
+
*/
|
|
45
|
+
export const fileIdToViewerUrl = (fileId?: string) => {
|
|
46
|
+
if (!fileId) return;
|
|
47
|
+
try {
|
|
48
|
+
return `${BACKEND_API_URL}minio/${fileId}`;
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.error('文件id转url失败:', error);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* 通过URL预览文件
|
|
56
|
+
* @param fileId 文件id
|
|
57
|
+
* @param fileName 文件名
|
|
58
|
+
*/
|
|
59
|
+
export const fileOnLineViewerFromId = (fileId: string, fileName?: string) => {
|
|
60
|
+
const fileUrl = fileIdToViewerUrl(fileId);
|
|
61
|
+
if (!fileUrl) return;
|
|
62
|
+
|
|
63
|
+
const previewUrl = `${fileUrl}&fullfilename=${fileName ?? fileId}`;
|
|
64
|
+
|
|
65
|
+
try {
|
|
66
|
+
const openUrl = `${FILE_VIEWER_URL}onlinePreview?url=${encodeURIComponent(Base64.encode(previewUrl))}`;
|
|
67
|
+
window.open(openUrl);
|
|
68
|
+
} catch (error) {
|
|
69
|
+
console.error('跳转失败:', error);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* 通过URL下载文件
|
|
75
|
+
* @param fileUrl
|
|
76
|
+
*/
|
|
77
|
+
export const fileDownloadFromUrl = async (url: string, name: string = '下载文件') => {
|
|
78
|
+
// 创建隐藏的可下载链接,https访问http的站点认为是不安全的,无法下载
|
|
79
|
+
let eleLink = document.createElement('a');
|
|
80
|
+
eleLink.download = name;
|
|
81
|
+
eleLink.style.display = 'none';
|
|
82
|
+
// 字符内容转变成blob地址
|
|
83
|
+
eleLink.href = url;
|
|
84
|
+
// 触发点击
|
|
85
|
+
document.body.appendChild(eleLink);
|
|
86
|
+
eleLink.click();
|
|
87
|
+
// 然后移除
|
|
88
|
+
document.body.removeChild(eleLink);
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* 通过文件id下载文件(下载minio资源)
|
|
93
|
+
* @param fileId
|
|
94
|
+
*/
|
|
95
|
+
export const fileDownloadFromId = async (
|
|
96
|
+
fileId: string,
|
|
97
|
+
customFileName?: string,
|
|
98
|
+
onProgress?: (progress: number) => void,
|
|
99
|
+
) => {
|
|
100
|
+
if (!fileId) return;
|
|
101
|
+
|
|
102
|
+
// 由于站点是https,minio是http,会被拦截,所以将文件请求到本地再下载(注意nginx需要配置代理)
|
|
103
|
+
try {
|
|
104
|
+
const { data, fileName } = await request(`/minio/${fileId}`, {
|
|
105
|
+
method: 'GET',
|
|
106
|
+
responseType: 'blob',
|
|
107
|
+
onDownloadProgress: (progressEvent) => {
|
|
108
|
+
if (progressEvent.total) {
|
|
109
|
+
const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);
|
|
110
|
+
onProgress?.(percentCompleted);
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
if (data) {
|
|
116
|
+
const downloadUrl = window.URL.createObjectURL(data);
|
|
117
|
+
fileDownloadFromUrl(downloadUrl, customFileName || fileName);
|
|
118
|
+
}
|
|
119
|
+
} catch (error) {
|
|
120
|
+
message.error('下载失败, 原因:' + error);
|
|
121
|
+
console.error('下载图片失败:', error);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* 通过生成的Blob下载文件
|
|
127
|
+
* @param dataBlob
|
|
128
|
+
*/
|
|
129
|
+
export const fileDownloadFromBlob = (fileName: string, dataBlob: Blob) => {
|
|
130
|
+
let binaryData = [];
|
|
131
|
+
binaryData.push(dataBlob);
|
|
132
|
+
const objectUrl = window.URL.createObjectURL(new Blob(binaryData));
|
|
133
|
+
|
|
134
|
+
fileDownloadFromUrl(objectUrl, fileName);
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
type ImageSource = Blob | File | string; // string 可以是 base64 或 url
|
|
138
|
+
|
|
139
|
+
interface WatermarkOptions {
|
|
140
|
+
text?: string;
|
|
141
|
+
font?: string;
|
|
142
|
+
color?: string;
|
|
143
|
+
opacity?: number; //不透明度
|
|
144
|
+
spacing?: number; //水印间隔
|
|
145
|
+
rotation?: number; //旋转角度
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* 下载图片并添加水印
|
|
150
|
+
* @param fileName 文件名
|
|
151
|
+
* @param source 图片源(支持 Blob、File、base64、url)
|
|
152
|
+
* @param options 水印配置选项
|
|
153
|
+
*/
|
|
154
|
+
export const downloadImgWithWatermark = async (fileName: string, source: ImageSource, options: WatermarkOptions = {}) => {
|
|
155
|
+
const {
|
|
156
|
+
text = '翠峰科技',
|
|
157
|
+
font = '16px Arial',
|
|
158
|
+
color = 'rgb(153, 153, 153)',
|
|
159
|
+
opacity = 0.3,
|
|
160
|
+
spacing = 400,
|
|
161
|
+
rotation = -30,
|
|
162
|
+
} = options;
|
|
163
|
+
|
|
164
|
+
try {
|
|
165
|
+
// 将不同类型的源转换为 blob URL
|
|
166
|
+
let blobUrl: string;
|
|
167
|
+
if (source instanceof File || source instanceof Blob) {
|
|
168
|
+
blobUrl = URL.createObjectURL(source);
|
|
169
|
+
} else if (source.startsWith('data:')) {
|
|
170
|
+
// 处理 base64
|
|
171
|
+
const response = await fetch(source);
|
|
172
|
+
const blob = await response.blob();
|
|
173
|
+
blobUrl = URL.createObjectURL(blob);
|
|
174
|
+
} else {
|
|
175
|
+
// 处理 URL
|
|
176
|
+
blobUrl = source;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// 创建图片对象
|
|
180
|
+
const img = new Image();
|
|
181
|
+
img.crossOrigin = 'anonymous'; // 处理跨域图片
|
|
182
|
+
|
|
183
|
+
return new Promise<void>((resolve, reject) => {
|
|
184
|
+
img.onload = () => {
|
|
185
|
+
// 创建 canvas
|
|
186
|
+
const canvas = document.createElement('canvas');
|
|
187
|
+
canvas.width = img.width;
|
|
188
|
+
canvas.height = img.height;
|
|
189
|
+
const ctx = canvas.getContext('2d');
|
|
190
|
+
if (!ctx) {
|
|
191
|
+
reject(new Error('无法获取 canvas context'));
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// 绘制原始图片
|
|
196
|
+
ctx.drawImage(img, 0, 0);
|
|
197
|
+
|
|
198
|
+
// 设置水印样式
|
|
199
|
+
ctx.font = font;
|
|
200
|
+
ctx.fillStyle = `${color.replace('rgb', 'rgba').replace(')', `, ${opacity})`)}`;
|
|
201
|
+
ctx.textAlign = 'center';
|
|
202
|
+
|
|
203
|
+
// 添加重复的水印
|
|
204
|
+
const rotationRad = (rotation * Math.PI) / 180;
|
|
205
|
+
for (let x = 0; x < canvas.width; x += spacing) {
|
|
206
|
+
for (let y = 0; y < canvas.height; y += spacing) {
|
|
207
|
+
ctx.save();
|
|
208
|
+
ctx.translate(x, y);
|
|
209
|
+
ctx.rotate(rotationRad);
|
|
210
|
+
ctx.fillText(text, 0, 0);
|
|
211
|
+
ctx.restore();
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// 转换为图片并下载
|
|
216
|
+
canvas.toBlob(
|
|
217
|
+
(resultBlob) => {
|
|
218
|
+
if (!resultBlob) {
|
|
219
|
+
reject(new Error('无法创建 blob'));
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
const link = document.createElement('a');
|
|
224
|
+
link.download = fileName;
|
|
225
|
+
link.href = URL.createObjectURL(resultBlob);
|
|
226
|
+
link.click();
|
|
227
|
+
|
|
228
|
+
// 清理 URL 对象
|
|
229
|
+
URL.revokeObjectURL(link.href);
|
|
230
|
+
if (source instanceof File || source instanceof Blob) {
|
|
231
|
+
URL.revokeObjectURL(blobUrl);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
resolve();
|
|
235
|
+
},
|
|
236
|
+
'image/png',
|
|
237
|
+
1,
|
|
238
|
+
);
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
img.onerror = () => {
|
|
242
|
+
reject(new Error('图片加载失败'));
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
img.src = blobUrl;
|
|
246
|
+
});
|
|
247
|
+
} catch (error) {
|
|
248
|
+
console.error('下载图片失败:', error);
|
|
249
|
+
throw error;
|
|
250
|
+
}
|
|
251
|
+
};
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
// replaceTo:tsx
|
|
2
|
+
import { UTC_FORMAT } from '../constants';
|
|
3
|
+
import { getIntl } from '@umijs/max';
|
|
4
|
+
import { Modal, Tag } from 'antd';
|
|
5
|
+
import dayjs from 'dayjs';
|
|
6
|
+
import { parse } from 'querystring';
|
|
7
|
+
import * as XLSX from 'xlsx';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* 提取括号中的值
|
|
11
|
+
* @param str
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
export const getParenthesisValue = (str: string) => {
|
|
15
|
+
const matches = str.match(/\((.*?)\)/);
|
|
16
|
+
return matches ? matches[1] : null;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* 导入excel
|
|
21
|
+
* @param files 文件对象
|
|
22
|
+
* @param max 最大读取行数
|
|
23
|
+
* @param header 哪行是表头,默认第一行
|
|
24
|
+
* @param rangeStart 开始读取行数{ c: 1, r: 2 } 从第2列第3行开始读取
|
|
25
|
+
* @return Promise<T = any[]>
|
|
26
|
+
*/
|
|
27
|
+
export function importExexl<T = any>({
|
|
28
|
+
file,
|
|
29
|
+
max = 1,
|
|
30
|
+
rangeStart,
|
|
31
|
+
header,
|
|
32
|
+
}: {
|
|
33
|
+
file: any;
|
|
34
|
+
max?: number;
|
|
35
|
+
header?: number;
|
|
36
|
+
rangeStart?: { c: number; r: number };
|
|
37
|
+
}): Promise<T[]> {
|
|
38
|
+
return new Promise((resolve, reject) => {
|
|
39
|
+
// 通过FileReader对象读取文件
|
|
40
|
+
const fileReader = new FileReader();
|
|
41
|
+
|
|
42
|
+
fileReader.onload = (event) => {
|
|
43
|
+
try {
|
|
44
|
+
const { result } = event.target as any;
|
|
45
|
+
|
|
46
|
+
// 以二进制流方式读取得到整份excel表格对象, cellDates识别日期格式并转为标准时间
|
|
47
|
+
const workbook = XLSX.read(result, { type: 'binary', cellDates: true, dateNF: 'YYYY-MM-DDTHH:mm:ss[Z]' });
|
|
48
|
+
let data: any[] = []; // 存储获取到的数据
|
|
49
|
+
|
|
50
|
+
// 遍历每张工作表进行读取(这里默认只读取第一张表)
|
|
51
|
+
let sheetsIndex = 0;
|
|
52
|
+
for (const sheet in workbook.Sheets) {
|
|
53
|
+
if (workbook.Sheets.hasOwnProperty(sheet)) {
|
|
54
|
+
sheetsIndex++;
|
|
55
|
+
// 获取表格最后一行和最后一列的数值
|
|
56
|
+
const lastCell: any = workbook.Sheets[sheet]['!ref']
|
|
57
|
+
? XLSX.utils.decode_range(workbook.Sheets[sheet]['!ref'])
|
|
58
|
+
: { e: 256, c: 65536 };
|
|
59
|
+
// 利用 sheet_to_json 方法将 excel 转成 json 数据
|
|
60
|
+
data = data.concat(
|
|
61
|
+
XLSX.utils.sheet_to_json(workbook.Sheets[sheet], {
|
|
62
|
+
header,
|
|
63
|
+
dateNF: 'YYYY-MM-DDTHH:mm:ss[Z]',
|
|
64
|
+
// 属性s从第1列第3行开始读取,属性c到最后一行最后一列结束(Excel 行号从1开始)
|
|
65
|
+
range: rangeStart
|
|
66
|
+
? {
|
|
67
|
+
s: rangeStart,
|
|
68
|
+
e: { c: lastCell.e?.c, r: lastCell.e?.r },
|
|
69
|
+
}
|
|
70
|
+
: undefined,
|
|
71
|
+
}),
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
if (sheetsIndex === max) {
|
|
75
|
+
break; // 如果只取第一张表,就取消注释这行
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return resolve(data);
|
|
80
|
+
} catch (e) {
|
|
81
|
+
return reject(e);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// 以二进制方式打开文件
|
|
86
|
+
fileReader.readAsBinaryString(file);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* 判断对象的所有属性是不是下标
|
|
92
|
+
* @param obj
|
|
93
|
+
* @returns
|
|
94
|
+
*/
|
|
95
|
+
function isIndexedObject(obj: Record<string, any>): boolean {
|
|
96
|
+
const keys = Object.keys(obj);
|
|
97
|
+
return keys.every((key, index) => key === index.toString());
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* 将可迭代对象转成数组
|
|
102
|
+
* @param obj
|
|
103
|
+
* @returns
|
|
104
|
+
*/
|
|
105
|
+
function convertIndexedObjectToArray(obj: Record<string, any>): any[] {
|
|
106
|
+
const keys = Object.keys(obj).sort();
|
|
107
|
+
return keys.map((key) => obj[key]);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* 将对象中所有可迭代对象转成数组
|
|
112
|
+
* @param obj
|
|
113
|
+
* @returns
|
|
114
|
+
*/
|
|
115
|
+
function convertIndexedPropertiesToArrays(obj: Record<string, any>): any {
|
|
116
|
+
const result: Record<string, any> = {};
|
|
117
|
+
|
|
118
|
+
for (const key in obj) {
|
|
119
|
+
// 检查 key 是否是 obj 的自身属性
|
|
120
|
+
if (obj.hasOwnProperty(key)) {
|
|
121
|
+
const value = obj[key];
|
|
122
|
+
|
|
123
|
+
if (typeof value === 'object' && value !== null) {
|
|
124
|
+
if (isIndexedObject(value)) {
|
|
125
|
+
// 如果是索引对象,则转换为数组
|
|
126
|
+
result[key] = convertIndexedObjectToArray(value);
|
|
127
|
+
} else {
|
|
128
|
+
// 否则,递归调用本函数
|
|
129
|
+
result[key] = convertIndexedPropertiesToArrays(value);
|
|
130
|
+
}
|
|
131
|
+
} else {
|
|
132
|
+
// 原始值不用额外操作
|
|
133
|
+
result[key] = value;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* 处理导入Execl单元格值(转标准日期,去除空格和换行)
|
|
143
|
+
* @param value 表格单元格的值
|
|
144
|
+
* @param value 表格单元格的值
|
|
145
|
+
* @returns
|
|
146
|
+
*/
|
|
147
|
+
export const handleImportExeclCellValue = (value: unknown, type?: string) => {
|
|
148
|
+
if (!value) return;
|
|
149
|
+
|
|
150
|
+
if (type === 'parenthesisCode') {
|
|
151
|
+
return getParenthesisValue(value as string);
|
|
152
|
+
}
|
|
153
|
+
if (value instanceof Date || (type === 'date' && typeof value === 'string')) {
|
|
154
|
+
return dayjs.utc(value).format(UTC_FORMAT);
|
|
155
|
+
}
|
|
156
|
+
if (typeof value === 'string') {
|
|
157
|
+
return value.trim().replace(/\n/g, '');
|
|
158
|
+
}
|
|
159
|
+
return value;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* 创建嵌套对象并设置值
|
|
164
|
+
* @param keys [] | string,为对象属性名,数组类型并且
|
|
165
|
+
* @param value 属性值
|
|
166
|
+
* @param obj 嵌套对象
|
|
167
|
+
* @returns (['a', 'b', 'c'], 1, {}) => {a: { b: {c : 1} } }
|
|
168
|
+
*/
|
|
169
|
+
export const createNestedObjectAndSetValue = (keys: string | string[], value: any, obj: Record<string, any>, needHandleUnderline = true) => {
|
|
170
|
+
if (!keys.length) return obj;
|
|
171
|
+
// 过滤没有定义code的字段
|
|
172
|
+
if (typeof keys === 'string' && keys.startsWith('__EMPTY')) return obj;
|
|
173
|
+
|
|
174
|
+
//为了不改变原对象
|
|
175
|
+
const cloneObj = { ...obj };
|
|
176
|
+
// 当前操作的嵌套对象层级,从外到内
|
|
177
|
+
let current: any = cloneObj;
|
|
178
|
+
// 如果keys是字符串,转为数组
|
|
179
|
+
const newKeys = typeof keys === 'string' ? needHandleUnderline ? keys.split('_') : [keys] : keys;
|
|
180
|
+
// 最后一个键下标
|
|
181
|
+
const lastIndex = newKeys.length - 1;
|
|
182
|
+
// 转为嵌套对象
|
|
183
|
+
newKeys.forEach((key) => {
|
|
184
|
+
if (current[key] === undefined) {
|
|
185
|
+
current[key] = {};
|
|
186
|
+
}
|
|
187
|
+
// 如果是最后一个键,则直接赋值
|
|
188
|
+
if (key === newKeys[lastIndex]) {
|
|
189
|
+
// 判断是不是要取单元格括号中的code
|
|
190
|
+
const handleKey = key.split('?');
|
|
191
|
+
if (handleKey.length === 2 && value) {
|
|
192
|
+
// 取出单元格中的code并删除原有带?的字段,使用?前的字符串作为字段名,?后的作为识别类型
|
|
193
|
+
current[handleKey[0]] = handleImportExeclCellValue(value, parse(handleKey[1])?.type as string);
|
|
194
|
+
delete current[key];
|
|
195
|
+
} else {
|
|
196
|
+
// 处理导入单元格的值
|
|
197
|
+
current[key] = handleImportExeclCellValue(value);
|
|
198
|
+
}
|
|
199
|
+
} else {
|
|
200
|
+
// 移动到下一层级
|
|
201
|
+
current = current[key];
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
// 处理嵌套对象中的数组情况
|
|
206
|
+
// {
|
|
207
|
+
// a : {
|
|
208
|
+
// 0: 'xxx1',
|
|
209
|
+
// 1: 'xxx2',
|
|
210
|
+
// 2: 'xxx3',
|
|
211
|
+
// }
|
|
212
|
+
// }
|
|
213
|
+
// =》
|
|
214
|
+
// {
|
|
215
|
+
// a: ['xxx1', 'xxx2', 'xxx3']
|
|
216
|
+
// }
|
|
217
|
+
return convertIndexedPropertiesToArrays(cloneObj);
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* 处理execl导入的数据
|
|
222
|
+
* @param {T[]} list 列表
|
|
223
|
+
* @param {number} hasRowNum 是否添加表格行号
|
|
224
|
+
* @returns {T[]} list
|
|
225
|
+
*/
|
|
226
|
+
export const handleImportList = <T extends Record<string, any> = any[]>(list: T[], options: { hasRowNum?: boolean, needHandleUnderline?: boolean } = {}): T[] => {
|
|
227
|
+
const { hasRowNum = true, needHandleUnderline = true } = options;
|
|
228
|
+
|
|
229
|
+
list.shift();
|
|
230
|
+
const newList: T[] = list.map((item: any, idx) => {
|
|
231
|
+
let newObj: T = {} as T;
|
|
232
|
+
// 添加行号
|
|
233
|
+
if (hasRowNum) {
|
|
234
|
+
item.rowNum = item['__rowNum__'] ? item['__rowNum__'] + 1 : idx;
|
|
235
|
+
}
|
|
236
|
+
// 处理获取到的数据转换成需要的格式
|
|
237
|
+
Object.entries(item).forEach((entry) => {
|
|
238
|
+
newObj = createNestedObjectAndSetValue(entry[0], entry[1], newObj, needHandleUnderline);
|
|
239
|
+
});
|
|
240
|
+
return newObj;
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
return newList;
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* 导入execl错误类型
|
|
248
|
+
*/
|
|
249
|
+
export interface ImportErrorType {
|
|
250
|
+
rowNum: number;
|
|
251
|
+
itemCode: string;
|
|
252
|
+
message: string[];
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export const showCheckErrorTips = (errorMessageList: ImportErrorType[]) => {
|
|
256
|
+
const { formatMessage } = getIntl();
|
|
257
|
+
Modal.error({
|
|
258
|
+
title: `${formatMessage({
|
|
259
|
+
id: 'pages.File.import.exceed.error.title',
|
|
260
|
+
defaultMessage: '导入失败,原因如下',
|
|
261
|
+
})}:`,
|
|
262
|
+
content: errorMessageList.map((item, idx) => (
|
|
263
|
+
<dl key={item.itemCode + idx}>
|
|
264
|
+
<dt style={{ marginBottom: 8 }}>
|
|
265
|
+
<Tag color="processing">
|
|
266
|
+
{formatMessage(
|
|
267
|
+
{
|
|
268
|
+
id: 'common.import.row.tips',
|
|
269
|
+
defaultMessage: '第n行',
|
|
270
|
+
},
|
|
271
|
+
{ rowNum: item.rowNum },
|
|
272
|
+
)}
|
|
273
|
+
</Tag>
|
|
274
|
+
</dt>
|
|
275
|
+
{item.message.map((msg, idx) => (
|
|
276
|
+
<li key={msg + idx}>
|
|
277
|
+
{idx + 1}. {msg}
|
|
278
|
+
</li>
|
|
279
|
+
))}
|
|
280
|
+
</dl>
|
|
281
|
+
)),
|
|
282
|
+
});
|
|
283
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { parse } from 'querystring';
|
|
2
|
+
import { getIntl, MenuItem } from '@umijs/max';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 获取url参数,即浏览器地址栏问号后面的参数
|
|
6
|
+
* @returns {Object}
|
|
7
|
+
*/
|
|
8
|
+
export const getPageQuery = () => parse(window.location.href.split('?')[1]);
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 判断是否分享页
|
|
12
|
+
* @returns {boolean}
|
|
13
|
+
*/
|
|
14
|
+
export const isSharePage = () => getPageQuery()?.type?.slice(0, 5) === 'share';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* 获取url参数中的token
|
|
18
|
+
* @returns {string}
|
|
19
|
+
*/
|
|
20
|
+
export const getQueryToken = () => getPageQuery()?.token;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 判断是否全屏页
|
|
24
|
+
* @returns {boolean}
|
|
25
|
+
*/
|
|
26
|
+
export const isFullPage = () => getPageQuery()?.s?.slice(0, 1) === 'f' || isSharePage();
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { getLocale } from '@umijs/max';
|
|
2
|
+
import { notification } from 'antd';
|
|
3
|
+
|
|
4
|
+
export const codeMessage: any = {
|
|
5
|
+
200: '服务器成功返回请求的数据。',
|
|
6
|
+
201: '新建或修改数据成功。',
|
|
7
|
+
202: '一个请求已经进入后台排队(异步任务)。',
|
|
8
|
+
204: '删除数据成功。',
|
|
9
|
+
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
|
|
10
|
+
401: '用户没有权限(令牌、用户名、密码错误)。',
|
|
11
|
+
403: '用户得到授权,但是访问是被禁止的。',
|
|
12
|
+
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
|
|
13
|
+
406: '请求的格式不可得。',
|
|
14
|
+
410: '请求的资源被永久删除,且不会再得到的。',
|
|
15
|
+
422: '当创建一个对象时,发生一个验证错误。',
|
|
16
|
+
500: '服务器发生错误,请检查服务器。',
|
|
17
|
+
502: '网关错误。',
|
|
18
|
+
503: '服务不可用,服务器暂时过载或维护。',
|
|
19
|
+
504: '网关超时。',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export interface XmlRequestOptions {
|
|
23
|
+
method?: API.MethodTypes;
|
|
24
|
+
body?: any;
|
|
25
|
+
headers?: object;
|
|
26
|
+
onError?: ((this: XMLHttpRequest, ev: ProgressEvent<EventTarget>) => any) | null;
|
|
27
|
+
onSuccess: (key: any) => void;
|
|
28
|
+
onProgress?: (percent: number, e: ProgressEvent<XMLHttpRequestEventTarget>) => void;
|
|
29
|
+
progressChange?: (percent: number, e: ProgressEvent<XMLHttpRequestEventTarget>) => void;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* 现用户上传文件获取进度
|
|
34
|
+
* @param url 文件服务url
|
|
35
|
+
* @param {XmlRequestOptions} options
|
|
36
|
+
* @returns {Promise<T | any>}
|
|
37
|
+
*/
|
|
38
|
+
function xmlRequest<T>(url: string, options: XmlRequestOptions): Promise<T | any> {
|
|
39
|
+
const { method = 'POST', body, progressChange, onProgress, onSuccess, onError = null } = options;
|
|
40
|
+
|
|
41
|
+
// 处理url参数增加国际化
|
|
42
|
+
const paraPrefix = url.indexOf('?') !== -1 ? '&' : '?';
|
|
43
|
+
const newUrl = url.concat(`${paraPrefix}lang=${getLocale()}`);
|
|
44
|
+
|
|
45
|
+
return new Promise<void>((resolve, reject) => {
|
|
46
|
+
const xhr = new XMLHttpRequest();
|
|
47
|
+
xhr.open(method, newUrl, true);
|
|
48
|
+
|
|
49
|
+
// 请求完成
|
|
50
|
+
xhr.onload = () => {
|
|
51
|
+
if (xhr.status < 200 || xhr.status >= 300) {
|
|
52
|
+
notification.error({
|
|
53
|
+
description: codeMessage[xhr.status],
|
|
54
|
+
message: `请求出错`,
|
|
55
|
+
});
|
|
56
|
+
reject();
|
|
57
|
+
} else {
|
|
58
|
+
const data = JSON.parse(xhr.response);
|
|
59
|
+
if (data.code && data.code !== 200) {
|
|
60
|
+
notification.error({
|
|
61
|
+
description: data.msg,
|
|
62
|
+
message: 'Error Occurred',
|
|
63
|
+
});
|
|
64
|
+
} else if (data.resultType && data.resultType !== 'SUCCESS') {
|
|
65
|
+
// 为了配合工单查询API处理出来的
|
|
66
|
+
notification.error({
|
|
67
|
+
description: data.exceptionDetail,
|
|
68
|
+
message: data.resultMsg,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
resolve(data);
|
|
73
|
+
onSuccess?.(data.data);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
if (progressChange || onProgress) {
|
|
77
|
+
xhr.upload.addEventListener('progress', (e) => {
|
|
78
|
+
if (e.lengthComputable) {
|
|
79
|
+
const percent = Math.floor((e.loaded / e.total) * 100);
|
|
80
|
+
onProgress?.(percent, e);
|
|
81
|
+
progressChange?.(percent, e);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
xhr.onerror = onError;
|
|
87
|
+
xhr.setRequestHeader('Authorization', 'Bearer ' + JSON.parse(localStorage.getItem('token') || ''));
|
|
88
|
+
xhr.send(body);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export default xmlRequest;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "runtime", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _runtime.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "writeConstants", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _writeConstants.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "writeIndex", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _writeIndex.default;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "writeTypes", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _writeTypes.default;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
var _runtime = _interopRequireDefault(require("./runtime"));
|
|
31
|
+
var _writeIndex = _interopRequireDefault(require("./writeIndex"));
|
|
32
|
+
var _writeTypes = _interopRequireDefault(require("./writeTypes"));
|
|
33
|
+
var _writeConstants = _interopRequireDefault(require("./writeConstants"));
|
|
34
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|