@dt-frames/ui 2.0.24 → 4.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/dist/es/_virtual/preload-helper.mjs +1 -0
- package/dist/es/assets/node_modules/.pnpm/nprogress@0.2.0/node_modules/nprogress/nprogress-BgDCIyLK.css +1 -0
- package/dist/es/components/drawer/index.d.ts +5 -0
- package/dist/es/components/drawer/index.mjs +1 -0
- package/dist/es/components/drawer/src/hooks/useDrawer.d.ts +3 -0
- package/dist/es/components/drawer/src/index.d.ts +20 -0
- package/dist/es/components/drawer/src/types/index.d.ts +208 -0
- package/dist/es/components/drawer/src/types/index.ts +223 -0
- package/dist/es/components/drawer/styles/index.scss +0 -0
- package/dist/es/components/form/index.d.ts +9 -0
- package/dist/es/components/form/index.mjs +1 -0
- package/dist/es/components/form/src/conponents/FormButtons.d.ts +29 -0
- package/dist/es/components/form/src/conponents/FormItems.d.ts +19 -0
- package/dist/es/components/form/src/conponents/RadioGroup.d.ts +10 -0
- package/dist/es/components/form/src/conponents/componentMap.d.ts +4 -0
- package/dist/es/components/form/src/hooks/useForm.d.ts +8 -0
- package/dist/es/components/form/src/hooks/useFormActions.d.ts +32 -0
- package/dist/es/components/form/src/hooks/useFormEvent.d.ts +29 -0
- package/dist/es/components/form/src/hooks/useFormValues.d.ts +13 -0
- package/dist/es/components/form/src/index.d.ts +493 -0
- package/dist/es/components/form/src/types/form.d.ts +355 -0
- package/dist/es/components/form/src/types/form.ts +391 -0
- package/dist/es/components/form/src/types/item.d.ts +3036 -0
- package/dist/es/components/form/src/types/item.ts +3169 -0
- package/{es/components/form/src/hooks/helper.d.ts → dist/es/components/form/src/utils/index.d.ts} +7 -5
- package/dist/es/components/form/styles/index.scss +10 -0
- package/dist/es/components/hover-card/index.d.ts +7 -0
- package/dist/es/components/hover-card/index.mjs +1 -0
- package/dist/es/components/hover-card/src/hover-card-content.d.ts +24 -0
- package/dist/es/components/hover-card/src/hover-card-trigger.d.ts +18 -0
- package/dist/es/components/hover-card/src/hover-card.d.ts +22 -0
- package/dist/es/components/icon/index.d.ts +4 -0
- package/dist/es/components/icon/index.mjs +1 -0
- package/dist/es/components/icon/src/index.d.ts +31 -0
- package/dist/es/components/icon/src/types/index.d.ts +6 -0
- package/dist/es/components/icon-picker/index.d.ts +4 -0
- package/dist/es/components/icon-picker/index.mjs +9 -0
- package/dist/es/components/icon-picker/src/components/IconPicker.d.ts +23 -0
- package/dist/es/components/icon-picker/src/components/SelectIcon.d.ts +39 -0
- package/dist/es/components/icon-picker/src/icon.d.ts +13 -0
- package/dist/es/components/icon-picker/src/index.d.ts +27 -0
- package/dist/es/components/icon-picker/styles/index.scss +0 -0
- package/dist/es/components/iframe/index.d.ts +4 -0
- package/dist/es/components/iframe/index.mjs +1 -0
- package/dist/es/components/iframe/src/index.d.ts +46 -0
- package/dist/es/components/modal/index.d.ts +7 -0
- package/dist/es/components/modal/index.mjs +1 -0
- package/dist/es/components/modal/src/components/Header.d.ts +8 -0
- package/dist/es/components/modal/src/hooks/useModal.d.ts +24 -0
- package/dist/es/components/modal/src/index.d.ts +822 -0
- package/dist/es/components/modal/src/types/modal.d.ts +246 -0
- package/dist/es/components/modal/src/types/modal.ts +265 -0
- package/dist/es/components/modal/styles/index.scss +8 -0
- package/dist/es/components/table/index.d.ts +9 -0
- package/dist/es/components/table/index.mjs +1 -0
- package/dist/es/components/table/src/components/Pagination.d.ts +15 -0
- package/dist/es/components/table/src/components/TableAction.d.ts +18 -0
- package/dist/es/components/table/src/components/TableHeader.d.ts +28 -0
- package/dist/es/components/table/src/components/TableLoading.d.ts +2 -0
- package/dist/es/components/table/src/components/tableSetting/Column.d.ts +222 -0
- package/dist/es/components/table/src/components/tableSetting/Download.d.ts +6 -0
- package/dist/es/components/table/src/components/tableSetting/DownloadCtrl.d.ts +2 -0
- package/dist/es/components/table/src/components/tableSetting/Fullscreen.d.ts +2 -0
- package/dist/es/components/table/src/components/tableSetting/Search.d.ts +5 -0
- package/dist/es/components/table/src/components/tableSetting/index.d.ts +7 -0
- package/dist/es/components/table/src/hooks/useColumns.d.ts +18 -0
- package/dist/es/components/table/src/hooks/useDataSource.d.ts +17 -0
- package/dist/es/components/table/src/hooks/useLoading.d.ts +7 -0
- package/dist/es/components/table/src/hooks/usePagination.d.ts +9 -0
- package/dist/es/components/table/src/hooks/useRowSelection.d.ts +7 -0
- package/dist/es/components/table/src/hooks/useTable.d.ts +3 -0
- package/dist/es/components/table/src/hooks/useTableIns.d.ts +12 -0
- package/dist/es/components/table/src/index.d.ts +775 -0
- package/dist/es/components/table/src/types/pagination.d.ts +100 -0
- package/dist/es/components/table/src/types/pagination.ts +102 -0
- package/dist/es/components/table/src/types/table.d.ts +632 -0
- package/dist/es/components/table/src/types/table.ts +668 -0
- package/dist/es/components/table/styles/index.scss +66 -0
- package/dist/es/components/tree/index.d.ts +7 -0
- package/dist/es/components/tree/index.mjs +1 -0
- package/dist/es/components/tree/src/components/ContextMenu.d.ts +80 -0
- package/dist/es/components/tree/src/components/TreeHeader.d.ts +31 -0
- package/dist/es/components/tree/src/hooks/useContextMenu.d.ts +11 -0
- package/dist/es/components/tree/src/hooks/useTree.d.ts +2 -0
- package/dist/es/components/tree/src/index.d.ts +116 -0
- package/dist/es/components/tree/src/types/index.d.ts +758 -0
- package/dist/es/components/tree/src/types/index.ts +788 -0
- package/dist/es/components/tree/styles/index.scss +15 -0
- package/dist/es/components/upload/assets/docx-preview-BLYEK_jf.js +38 -0
- package/dist/es/components/upload/assets/index-CUsgWuYW.css +1 -0
- package/dist/es/components/upload/assets/nprogress-BgDCIyLK.css +1 -0
- package/dist/es/components/upload/index.d.ts +6 -0
- package/dist/es/components/upload/index.mjs +1 -0
- package/dist/es/components/upload/src/components/PdfView.d.ts +2 -0
- package/dist/es/components/upload/src/components/WordView.d.ts +4 -0
- package/dist/es/components/upload/src/hooks/useFile.d.ts +14 -0
- package/dist/es/components/upload/src/index.d.ts +23 -0
- package/dist/es/components/upload/src/types/index.d.ts +229 -0
- package/dist/es/components/upload/src/utils/index.d.ts +15 -0
- package/dist/es/components/upload/styles/index.scss +0 -0
- package/dist/es/components/virtual-list/index.d.ts +4 -0
- package/dist/es/components/virtual-list/index.mjs +1 -0
- package/dist/es/components/virtual-list/src/index.d.ts +32 -0
- package/dist/es/components/virtual-list/src/types/index.d.ts +26 -0
- package/dist/es/components/virtual-list/styles/index.scss +0 -0
- package/dist/es/components/vxe-table/index.d.ts +7 -0
- package/dist/es/components/vxe-table/index.mjs +1 -0
- package/dist/es/components/vxe-table/src/components/Header.d.ts +28 -0
- package/dist/es/components/vxe-table/src/components/Pagination.d.ts +15 -0
- package/dist/es/components/vxe-table/src/components/RenderCell.d.ts +10 -0
- package/dist/es/components/vxe-table/src/components/TableAction.d.ts +18 -0
- package/dist/es/components/vxe-table/src/components/tableSetting/Column.d.ts +222 -0
- package/dist/es/components/vxe-table/src/components/tableSetting/Download.d.ts +6 -0
- package/dist/es/components/vxe-table/src/components/tableSetting/DownloadCtrl.d.ts +2 -0
- package/dist/es/components/vxe-table/src/components/tableSetting/Fullscreen.d.ts +2 -0
- package/dist/es/components/vxe-table/src/components/tableSetting/index.d.ts +7 -0
- package/dist/es/components/vxe-table/src/helper/index.d.ts +7 -0
- package/dist/es/components/vxe-table/src/hooks/useColumns.d.ts +5 -0
- package/dist/es/components/vxe-table/src/hooks/usePagination.d.ts +7 -0
- package/dist/es/components/vxe-table/src/hooks/useTableIns.d.ts +15 -0
- package/dist/es/components/vxe-table/src/hooks/useVxeTable.d.ts +2 -0
- package/dist/es/components/vxe-table/src/index.d.ts +155 -0
- package/dist/es/components/vxe-table/src/types/index.d.ts +181 -0
- package/dist/es/components/vxe-table/src/types/pagination.d.ts +100 -0
- package/dist/es/components/vxe-table/src/types/table.d.ts +25 -0
- package/dist/es/components/vxe-table/src/utils/index.d.ts +5 -0
- package/dist/es/components/vxe-table/styles/index.scss +6 -0
- package/dist/es/hooks/useCurd.d.ts +4 -0
- package/dist/es/hooks/useCurd.mjs +1 -0
- package/dist/es/hooks/useDownload.d.ts +9 -0
- package/dist/es/hooks/useDownload.mjs +1 -0
- package/dist/es/hooks/useSource.d.ts +10 -0
- package/dist/es/hooks/useSource.mjs +1 -0
- package/dist/es/index.d.ts +11 -0
- package/dist/es/index.mjs +1 -0
- package/dist/es/init/config.d.ts +6 -0
- package/dist/es/init/config.mjs +1 -0
- package/dist/es/init/index.d.ts +11 -0
- package/dist/es/init/index.mjs +1 -0
- package/dist/es/init/types/appConf.d.ts +331 -0
- package/dist/es/init/vxeTable.d.ts +5 -0
- package/dist/es/layout/assets/avator-uscRzRXF.png +0 -0
- package/dist/es/layout/index.d.ts +11 -0
- package/dist/es/layout/index.mjs +3 -0
- package/dist/es/layout/src/components/LayoutContent.d.ts +22 -0
- package/dist/es/layout/src/components/LayoutFooter.d.ts +23 -0
- package/dist/es/layout/src/components/LayoutHeader.d.ts +49 -0
- package/dist/es/layout/src/components/LayoutSidebar.d.ts +116 -0
- package/dist/es/layout/src/components/LayoutTabbar.d.ts +20 -0
- package/dist/es/layout/src/components/content/Content.d.ts +2 -0
- package/dist/es/layout/src/components/footer/CopyRight.d.ts +15 -0
- package/dist/es/layout/src/components/header/ArrowRight.d.ts +2 -0
- package/dist/es/layout/src/components/header/Breadcrumb.d.ts +13 -0
- package/dist/es/layout/src/components/header/FullScreen.d.ts +2 -0
- package/dist/es/layout/src/components/header/GlobalSearch.d.ts +417 -0
- package/dist/es/layout/src/components/header/Header.d.ts +22 -0
- package/dist/es/layout/src/components/header/IconButton.d.ts +29 -0
- package/dist/es/layout/src/components/header/LanguageToggle.d.ts +8 -0
- package/dist/es/layout/src/components/header/Logo.d.ts +54 -0
- package/dist/es/layout/src/components/header/User.d.ts +2 -0
- package/dist/es/layout/src/components/header/perferences/block/block.d.ts +22 -0
- package/dist/es/layout/src/components/header/perferences/block/component/CheckboxItem.d.ts +38 -0
- package/dist/es/layout/src/components/header/perferences/block/component/InputItem.d.ts +35 -0
- package/dist/es/layout/src/components/header/perferences/block/component/NumberItem.d.ts +36 -0
- package/dist/es/layout/src/components/header/perferences/block/component/SelectItem.d.ts +35 -0
- package/dist/es/layout/src/components/header/perferences/block/component/SwitchItem.d.ts +33 -0
- package/dist/es/layout/src/components/header/perferences/block/component/ToggleItem.d.ts +32 -0
- package/dist/es/layout/src/components/header/perferences/block/general/Animation.d.ts +18 -0
- package/dist/es/layout/src/components/header/perferences/block/general/General.d.ts +18 -0
- package/dist/es/layout/src/components/header/perferences/block/layout/Breadcrumb.d.ts +24 -0
- package/dist/es/layout/src/components/header/perferences/block/layout/Content.d.ts +9 -0
- package/dist/es/layout/src/components/header/perferences/block/layout/Copyright.d.ts +27 -0
- package/dist/es/layout/src/components/header/perferences/block/layout/Footer.d.ts +12 -0
- package/dist/es/layout/src/components/header/perferences/block/layout/Header.d.ts +19 -0
- package/dist/es/layout/src/components/header/perferences/block/layout/Layout.d.ts +10 -0
- package/dist/es/layout/src/components/header/perferences/block/layout/Navigation.d.ts +19 -0
- package/dist/es/layout/src/components/header/perferences/block/layout/Sidebar.d.ts +35 -0
- package/dist/es/layout/src/components/header/perferences/block/layout/Tabbar.d.ts +39 -0
- package/dist/es/layout/src/components/header/perferences/block/layout/Widget.d.ts +33 -0
- package/dist/es/layout/src/components/header/perferences/block/shortcut-keys/Global.d.ts +18 -0
- package/dist/es/layout/src/components/header/perferences/block/theme/BuiltinTheme.d.ts +16 -0
- package/dist/es/layout/src/components/header/perferences/block/theme/ColorMode.d.ts +12 -0
- package/dist/es/layout/src/components/header/perferences/block/theme/Radius.d.ts +9 -0
- package/dist/es/layout/src/components/header/perferences/block/theme/Theme.d.ts +15 -0
- package/dist/es/layout/src/components/header/perferences/icons/content-compact.d.ts +2 -0
- package/dist/es/layout/src/components/header/perferences/icons/full-content.d.ts +2 -0
- package/dist/es/layout/src/components/header/perferences/icons/header-mixed-nav.d.ts +2 -0
- package/dist/es/layout/src/components/header/perferences/icons/header-nav.d.ts +2 -0
- package/dist/es/layout/src/components/header/perferences/icons/header-sidebar-nav.d.ts +2 -0
- package/dist/es/layout/src/components/header/perferences/icons/index.d.ts +10 -0
- package/dist/es/layout/src/components/header/perferences/icons/mixed-nav.d.ts +2 -0
- package/dist/es/layout/src/components/header/perferences/icons/sidebar-mixed-nav.d.ts +2 -0
- package/dist/es/layout/src/components/header/perferences/icons/sidebar-nav.d.ts +2 -0
- package/dist/es/layout/src/components/header/perferences/preferences-button.d.ts +6 -0
- package/dist/es/layout/src/components/header/perferences/preferences-drawer.d.ts +223 -0
- package/dist/es/layout/src/components/header/perferences/preferences.d.ts +27 -0
- package/dist/es/layout/src/components/lockscreen/Lockscreen.d.ts +2 -0
- package/{es/theme/src/components/header/components/lock → dist/es/layout/src/components/lockscreen}/Recharge.d.ts +4 -6
- package/dist/es/layout/src/components/lockscreen/lockscreen.store.d.ts +9 -0
- package/dist/es/layout/src/components/lockscreen/useBattery.d.ts +16 -0
- package/dist/es/layout/src/components/lockscreen/useTime.d.ts +3 -0
- package/dist/es/layout/src/components/menu/ExtraMenu.d.ts +11 -0
- package/dist/es/layout/src/components/menu/Menu.d.ts +12 -0
- package/dist/es/layout/src/components/menu/MixedMenu.d.ts +11 -0
- package/dist/es/layout/src/components/menu/SidebarCollapseButton.d.ts +9 -0
- package/dist/es/layout/src/components/menu/SidebarFixedButton.d.ts +9 -0
- package/dist/es/layout/src/components/menu/basic-menu/BasicMenu.d.ts +37 -0
- package/dist/es/layout/src/components/menu/basic-menu/CollapseTransition.d.ts +17 -0
- package/dist/es/layout/src/components/menu/basic-menu/HoverCard.d.ts +29 -0
- package/dist/es/layout/src/components/menu/basic-menu/Menu.d.ts +5 -0
- package/dist/es/layout/src/components/menu/basic-menu/MenuBadge.d.ts +6 -0
- package/dist/es/layout/src/components/menu/basic-menu/MenuBadgeDot.d.ts +10 -0
- package/dist/es/layout/src/components/menu/basic-menu/MenuItem.d.ts +28 -0
- package/dist/es/layout/src/components/menu/basic-menu/NoramalMenu.d.ts +14 -0
- package/dist/es/layout/src/components/menu/basic-menu/SubMenu.d.ts +6 -0
- package/dist/es/layout/src/components/menu/basic-menu/SubMenuCom.d.ts +25 -0
- package/dist/es/layout/src/components/menu/basic-menu/SubMenuContent.d.ts +27 -0
- package/dist/es/layout/src/components/menu/basic-menu/index.d.ts +2 -0
- package/dist/es/layout/src/components/menu/basic-menu/type.d.ts +127 -0
- package/dist/es/layout/src/components/menu/hooks/useMenu.d.ts +9 -0
- package/dist/es/layout/src/components/menu/hooks/useMenuScroll.d.ts +9 -0
- package/dist/es/layout/src/components/tabbar/Tabbar.d.ts +6 -0
- package/dist/es/layout/src/components/tabbar/hooks/useTab.d.ts +25 -0
- package/dist/es/layout/src/components/tabbar/hooks/useTabbar.d.ts +15 -0
- package/dist/es/layout/src/components/tabbar/hooks/useTabsDrag.d.ts +8 -0
- package/dist/es/layout/src/components/tabbar/hooks/useTabsViewScroll.d.ts +11 -0
- package/dist/es/layout/src/components/tabbar/tabsView/TabsContent.d.ts +959 -0
- package/dist/es/layout/src/components/tabbar/tabsView/ToolScreen.d.ts +9 -0
- package/dist/es/layout/src/components/tabbar/tabsView/ToolsMore.d.ts +6 -0
- package/dist/es/layout/src/components/tabbar/tabsView/types.d.ts +68 -0
- package/dist/es/layout/src/const/constants.d.ts +13 -0
- package/dist/es/layout/src/const/preferences.config.d.ts +8 -0
- package/dist/es/layout/src/hooks/useContext.d.ts +6 -0
- package/dist/es/layout/src/hooks/useDesignTokens.d.ts +1 -0
- package/dist/es/layout/src/hooks/useExtraMenu.d.ts +12 -0
- package/dist/es/layout/src/hooks/useLayoutStyle.d.ts +36 -0
- package/dist/es/layout/src/hooks/useMenu.d.ts +4 -0
- package/dist/es/layout/src/hooks/useMixedMenu.d.ts +13 -0
- package/dist/es/layout/src/hooks/useNavigation.d.ts +5 -0
- package/dist/es/layout/src/hooks/useTheme.d.ts +34 -0
- package/dist/es/layout/src/index.d.ts +28 -0
- package/dist/es/layout/src/layout.d.ts +71 -0
- package/dist/es/layout/src/stores/preferences.store.d.ts +66 -0
- package/dist/es/layout/src/stores/useTabbar.store.d.ts +185 -0
- package/dist/es/layout/src/types/basic.type.d.ts +5 -0
- package/dist/es/layout/src/types/menu.type.d.ts +102 -0
- package/dist/es/layout/src/types/perferences.type.d.ts +287 -0
- package/dist/es/layout/src/types/route.type.d.ts +109 -0
- package/dist/es/layout/src/utils/color.d.ts +19 -0
- package/dist/es/layout/src/utils/css.d.ts +14 -0
- package/dist/es/layout/src/utils/diff.d.ts +6 -0
- package/dist/es/layout/src/utils/dom.d.ts +6 -0
- package/dist/es/layout/src/utils/letter.d.ts +20 -0
- package/dist/es/layout/src/utils/menu.d.ts +20 -0
- package/dist/es/layout/styles/css/animation.css +299 -0
- package/dist/es/layout/styles/css/dark.css +232 -0
- package/dist/es/layout/styles/css/default.css +174 -0
- package/dist/es/layout/styles/css/uncss.css +109 -0
- package/dist/es/layout/styles/index.scss +871 -0
- package/dist/es/lib/components/drawer/index.d.ts +5 -0
- package/dist/es/lib/components/drawer/src/hooks/useDrawer.d.ts +3 -0
- package/dist/es/lib/components/drawer/src/types/index.d.ts +208 -0
- package/dist/es/lib/components/form/index.d.ts +9 -0
- package/dist/es/lib/components/form/src/conponents/componentMap.d.ts +4 -0
- package/dist/es/lib/components/form/src/hooks/useForm.d.ts +8 -0
- package/dist/es/lib/components/form/src/hooks/useFormActions.d.ts +32 -0
- package/dist/es/lib/components/form/src/hooks/useFormEvent.d.ts +29 -0
- package/dist/es/lib/components/form/src/hooks/useFormValues.d.ts +13 -0
- package/dist/es/lib/components/form/src/types/form.d.ts +355 -0
- package/dist/es/lib/components/form/src/types/item.d.ts +3170 -0
- package/dist/es/lib/components/form/src/utils/index.d.ts +16 -0
- package/dist/es/lib/components/hover-card/index.d.ts +7 -0
- package/dist/es/lib/components/icon/index.d.ts +4 -0
- package/dist/es/lib/components/icon-picker/index.d.ts +4 -0
- package/dist/es/lib/components/icon-picker/src/icon.d.ts +13 -0
- package/dist/es/lib/components/iframe/index.d.ts +4 -0
- package/dist/es/lib/components/modal/index.d.ts +7 -0
- package/dist/es/lib/components/modal/src/hooks/useModal.d.ts +24 -0
- package/dist/es/lib/components/modal/src/types/modal.d.ts +246 -0
- package/dist/es/lib/components/table/index.d.ts +9 -0
- package/dist/es/lib/components/table/src/hooks/useColumns.d.ts +18 -0
- package/dist/es/lib/components/table/src/hooks/useDataSource.d.ts +17 -0
- package/dist/es/lib/components/table/src/hooks/useLoading.d.ts +7 -0
- package/dist/es/lib/components/table/src/hooks/usePagination.d.ts +9 -0
- package/dist/es/lib/components/table/src/hooks/useRowSelection.d.ts +7 -0
- package/dist/es/lib/components/table/src/hooks/useTable.d.ts +3 -0
- package/dist/es/lib/components/table/src/hooks/useTableIns.d.ts +12 -0
- package/dist/es/lib/components/table/src/types/pagination.d.ts +100 -0
- package/dist/es/lib/components/table/src/types/table.d.ts +632 -0
- package/dist/es/lib/components/tree/index.d.ts +7 -0
- package/dist/es/lib/components/tree/src/enums/index.d.ts +6 -0
- package/dist/es/lib/components/tree/src/hooks/useContextMenu.d.ts +11 -0
- package/dist/es/lib/components/tree/src/hooks/useTree.d.ts +2 -0
- package/dist/es/lib/components/tree/src/types/index.d.ts +758 -0
- package/dist/es/lib/components/upload/index.d.ts +4 -0
- package/dist/es/lib/components/upload/src/hooks/useFile.d.ts +14 -0
- package/dist/es/lib/components/upload/src/types/index.d.ts +88 -0
- package/dist/es/lib/components/upload/src/utils/index.d.ts +15 -0
- package/dist/es/lib/components/virtual-list/index.d.ts +4 -0
- package/dist/es/lib/components/virtual-list/src/types/index.d.ts +26 -0
- package/dist/es/lib/components/vxe-table/index.d.ts +7 -0
- package/dist/es/lib/components/vxe-table/src/helper/index.d.ts +7 -0
- package/dist/es/lib/components/vxe-table/src/hooks/useColumns.d.ts +5 -0
- package/dist/es/lib/components/vxe-table/src/hooks/usePagination.d.ts +7 -0
- package/dist/es/lib/components/vxe-table/src/hooks/useTableIns.d.ts +15 -0
- package/dist/es/lib/components/vxe-table/src/hooks/useVxeTable.d.ts +2 -0
- package/dist/es/lib/components/vxe-table/src/types/index.d.ts +181 -0
- package/dist/es/lib/components/vxe-table/src/types/pagination.d.ts +100 -0
- package/dist/es/lib/components/vxe-table/src/types/table.d.ts +25 -0
- package/dist/es/lib/components/vxe-table/src/utils/index.d.ts +5 -0
- package/dist/es/lib/hooks/useCurd.d.ts +4 -0
- package/dist/es/lib/hooks/useDownload.d.ts +9 -0
- package/dist/es/lib/hooks/useSource.d.ts +10 -0
- package/dist/es/lib/index.d.ts +10 -0
- package/dist/es/lib/init/config.d.ts +6 -0
- package/dist/es/lib/init/index.d.ts +11 -0
- package/dist/es/lib/init/types/appConf.d.ts +331 -0
- package/dist/es/lib/init/vxeTable.d.ts +9 -0
- package/dist/es/lib/layout/index.d.ts +11 -0
- package/dist/es/lib/layout/src/components/header/perferences/icons/index.d.ts +10 -0
- package/dist/es/lib/layout/src/components/lockscreen/lockscreen.store.d.ts +9 -0
- package/{es/theme/src/components/header/components/lock → dist/es/lib/layout/src/components/lockscreen}/useBattery.d.ts +5 -0
- package/dist/es/lib/layout/src/components/lockscreen/useTime.d.ts +3 -0
- package/dist/es/lib/layout/src/components/menu/basic-menu/index.d.ts +2 -0
- package/dist/es/lib/layout/src/components/menu/basic-menu/type.d.ts +127 -0
- package/dist/es/lib/layout/src/components/menu/hooks/useMenu.d.ts +9 -0
- package/dist/es/lib/layout/src/components/menu/hooks/useMenuScroll.d.ts +9 -0
- package/dist/es/lib/layout/src/components/tabbar/hooks/useTab.d.ts +25 -0
- package/dist/es/lib/layout/src/components/tabbar/hooks/useTabbar.d.ts +15 -0
- package/dist/es/lib/layout/src/components/tabbar/hooks/useTabsDrag.d.ts +8 -0
- package/dist/es/lib/layout/src/components/tabbar/hooks/useTabsViewScroll.d.ts +11 -0
- package/dist/es/lib/layout/src/components/tabbar/tabsView/types.d.ts +68 -0
- package/dist/es/lib/layout/src/const/constants.d.ts +13 -0
- package/dist/es/lib/layout/src/const/preferences.config.d.ts +8 -0
- package/dist/es/lib/layout/src/hooks/useContext.d.ts +6 -0
- package/dist/es/lib/layout/src/hooks/useDesignTokens.d.ts +1 -0
- package/dist/es/lib/layout/src/hooks/useExtraMenu.d.ts +12 -0
- package/dist/es/lib/layout/src/hooks/useLayoutStyle.d.ts +36 -0
- package/dist/es/lib/layout/src/hooks/useMenu.d.ts +4 -0
- package/dist/es/lib/layout/src/hooks/useMixedMenu.d.ts +13 -0
- package/dist/es/lib/layout/src/hooks/useNavigation.d.ts +5 -0
- package/dist/es/lib/layout/src/hooks/useTheme.d.ts +34 -0
- package/dist/es/lib/layout/src/stores/preferences.store.d.ts +66 -0
- package/dist/es/lib/layout/src/stores/useTabbar.store.d.ts +185 -0
- package/dist/es/lib/layout/src/types/basic.type.d.ts +5 -0
- package/dist/es/lib/layout/src/types/menu.type.d.ts +102 -0
- package/dist/es/lib/layout/src/types/perferences.type.d.ts +287 -0
- package/dist/es/lib/layout/src/types/route.type.d.ts +109 -0
- package/dist/es/lib/layout/src/utils/color.d.ts +19 -0
- package/dist/es/lib/layout/src/utils/css.d.ts +14 -0
- package/dist/es/lib/layout/src/utils/diff.d.ts +6 -0
- package/dist/es/lib/layout/src/utils/dom.d.ts +6 -0
- package/dist/es/lib/layout/src/utils/letter.d.ts +20 -0
- package/dist/es/lib/layout/src/utils/menu.d.ts +20 -0
- package/dist/es/lib/router/goPage.d.ts +1 -0
- package/dist/es/lib/router/guard.d.ts +3 -0
- package/dist/es/lib/router/index.d.ts +8 -0
- package/dist/es/lib/stores/access.store.d.ts +59 -0
- package/dist/es/lib/stores/app.store.d.ts +11 -0
- package/dist/es/lib/stores/auth.store.d.ts +35 -0
- package/dist/es/lib/stores/user.store.d.ts +19 -0
- package/dist/es/lib/types/curd.type.d.ts +55 -0
- package/dist/es/lib/types/source.type.d.ts +177 -0
- package/dist/es/lib/types/user.type.d.ts +32 -0
- package/dist/es/lib/utils/api.d.ts +2 -0
- package/dist/es/lib/utils/index.d.ts +4 -0
- package/dist/es/lib/utils/namespace.d.ts +17 -0
- package/dist/es/lib/utils/progress.d.ts +11 -0
- package/dist/es/lib/utils/useAuth.d.ts +3 -0
- package/dist/es/lib/utils/withInstall.d.ts +4 -0
- package/dist/es/mock/userInfo.d.ts +13 -0
- package/dist/es/mock/userInfo.mjs +1 -0
- package/dist/es/pages/iframe.d.ts +4 -0
- package/dist/es/pages/iframe.vue.mjs +1 -0
- package/dist/es/pages/iframe.vue2.mjs +1 -0
- package/dist/es/pages/init-project.d.ts +2 -0
- package/dist/es/pages/init-project.vue.mjs +1 -0
- package/dist/es/pages/init-project.vue2.mjs +1 -0
- package/dist/es/pages/not-found.d.ts +2 -0
- package/dist/es/pages/not-found.vue.mjs +1 -0
- package/dist/es/pages/not-found.vue2.mjs +1 -0
- package/dist/es/router/goPage.d.ts +1 -0
- package/dist/es/router/goPage.mjs +1 -0
- package/dist/es/router/guard.d.ts +3 -0
- package/dist/es/router/guard.mjs +1 -0
- package/dist/es/router/index.d.ts +8 -0
- package/dist/es/router/index.mjs +2 -0
- package/dist/es/src/index.d.ts +34 -0
- package/dist/es/src/types/index.d.ts +6 -0
- package/dist/es/stores/access.store.d.ts +59 -0
- package/dist/es/stores/access.store.mjs +1 -0
- package/dist/es/stores/app.store.d.ts +11 -0
- package/dist/es/stores/app.store.mjs +1 -0
- package/dist/es/stores/auth.store.d.ts +35 -0
- package/dist/es/stores/auth.store.mjs +1 -0
- package/dist/es/stores/user.store.d.ts +19 -0
- package/dist/es/stores/user.store.mjs +1 -0
- package/dist/es/types/curd.type.d.ts +55 -0
- package/dist/es/types/source.type.d.ts +177 -0
- package/dist/es/types/user.type.d.ts +32 -0
- package/dist/es/utils/api.d.ts +2 -0
- package/dist/es/utils/index.d.ts +4 -0
- package/dist/es/utils/namespace.d.ts +17 -0
- package/dist/es/utils/namespace.mjs +1 -0
- package/dist/es/utils/progress.d.ts +11 -0
- package/dist/es/utils/progress.mjs +2 -0
- package/dist/es/utils/useAuth.d.ts +3 -0
- package/dist/es/utils/withInstall.d.ts +4 -0
- package/dist/es/utils/withInstall.mjs +1 -0
- package/dist/es/vite.config.d.ts +30 -0
- package/index.d.ts +83 -13
- package/index.ts +16 -0
- package/package.json +91 -65
- package/README.md +0 -18
- package/es/assets/data/icons/actions.d.ts +0 -1
- package/es/assets/data/icons/actions.ts +0 -423
- package/es/assets/data/icons/code.d.ts +0 -1
- package/es/assets/data/icons/code.ts +0 -10
- package/es/assets/data/icons/commuticate.d.ts +0 -1
- package/es/assets/data/icons/commuticate.ts +0 -182
- package/es/assets/data/icons/currency.d.ts +0 -1
- package/es/assets/data/icons/currency.ts +0 -44
- package/es/assets/data/icons/devices.d.ts +0 -1
- package/es/assets/data/icons/devices.ts +0 -126
- package/es/assets/data/icons/edit.d.ts +0 -1
- package/es/assets/data/icons/edit.ts +0 -163
- package/es/assets/data/icons/file.d.ts +0 -1
- package/es/assets/data/icons/file.ts +0 -99
- package/es/assets/data/icons/math.d.ts +0 -1
- package/es/assets/data/icons/math.ts +0 -53
- package/es/assets/data/icons/message.d.ts +0 -1
- package/es/assets/data/icons/message.ts +0 -68
- package/es/assets/data/icons/navigate.d.ts +0 -1
- package/es/assets/data/icons/navigate.ts +0 -181
- package/es/assets/data/icons/other.d.ts +0 -1
- package/es/assets/data/icons/other.ts +0 -324
- package/es/assets/data/index.d.ts +0 -4
- package/es/assets/data/index.ts +0 -58
- package/es/assets/icons/iconfont.css +0 -7266
- package/es/assets/icons/iconfont.eot +0 -0
- package/es/assets/icons/iconfont.svg +0 -5445
- package/es/assets/icons/iconfont.ttf +0 -0
- package/es/assets/icons/iconfont.woff +0 -0
- package/es/assets/icons/iconfont.woff2 +0 -0
- package/es/assets/imgs/header/avatar.png +0 -0
- package/es/assets/imgs/logo/logo.png +0 -0
- package/es/assets/imgs/table/empty.png +0 -0
- package/es/assets/imgs/tree/forder-open.svg +0 -1
- package/es/assets/imgs/tree/forder.svg +0 -1
- package/es/assets/locales/en.d.ts +0 -103
- package/es/assets/locales/en.ts +0 -103
- package/es/assets/locales/index.d.ts +0 -2
- package/es/assets/locales/index.ts +0 -5
- package/es/assets/locales/zh.d.ts +0 -104
- package/es/assets/locales/zh.ts +0 -104
- package/es/components/container/index.d.ts +0 -94
- package/es/components/container/index.js +0 -290
- package/es/components/container/index.less +0 -64
- package/es/components/container/src/components/bar.d.ts +0 -14
- package/es/components/container/src/components/scroll-bar.d.ts +0 -70
- package/es/components/container/src/hooks/scroll.d.ts +0 -10
- package/es/components/container/src/scroll-container.d.ts +0 -76
- package/es/components/container/src/slot-container.d.ts +0 -20
- package/es/components/container/src/types/scroll.type.d.ts +0 -22
- package/es/components/container/src/utils/scroll.d.ts +0 -5
- package/es/components/curd/index.d.ts +0 -2
- package/es/components/curd/index.js +0 -216
- package/es/components/curd/src/components/Curd.d.ts +0 -384
- package/es/components/curd/src/hooks/useCurd.d.ts +0 -110
- package/es/components/curd/src/props.d.ts +0 -188
- package/es/components/curd/src/types/curd.type.d.ts +0 -13
- package/es/components/drawer/index.d.ts +0 -7881
- package/es/components/drawer/index.js +0 -397
- package/es/components/drawer/index.less +0 -16
- package/es/components/drawer/src/components/DrawerFooter.d.ts +0 -56
- package/es/components/drawer/src/components/DrawerHeader.d.ts +0 -11
- package/es/components/drawer/src/hooks/useDrawer.d.ts +0 -3
- package/es/components/drawer/src/index.d.ts +0 -7881
- package/es/components/drawer/src/props.d.ts +0 -64
- package/es/components/drawer/src/types/index.type.d.ts +0 -50
- package/es/components/form/index.d.ts +0 -7
- package/es/components/form/index.js +0 -1600
- package/es/components/form/index.less +0 -361
- package/es/components/form/src/components/FormButtons.d.ts +0 -3157
- package/es/components/form/src/components/FormItem.d.ts +0 -158
- package/es/components/form/src/components/componentMap.d.ts +0 -4
- package/es/components/form/src/components/formIcon.d.ts +0 -14
- package/es/components/form/src/components/formInputUseDialog.d.ts +0 -17
- package/es/components/form/src/components/index.d.ts +0 -4
- package/es/components/form/src/components/radioButton.d.ts +0 -34
- package/es/components/form/src/enums/index.d.ts +0 -7
- package/es/components/form/src/hooks/useForm.d.ts +0 -6
- package/es/components/form/src/hooks/useFormActions.d.ts +0 -12
- package/es/components/form/src/hooks/useFormEvent.d.ts +0 -25
- package/es/components/form/src/hooks/useFormValue.d.ts +0 -3
- package/es/components/form/src/hooks/useFormValues.d.ts +0 -11
- package/es/components/form/src/hooks/useLabelWidth.d.ts +0 -6
- package/es/components/form/src/props.d.ts +0 -127
- package/es/components/form/src/types/actions.type.d.ts +0 -15
- package/es/components/form/src/types/form.type.d.ts +0 -80
- package/es/components/form/src/types/items.type.d.ts +0 -417
- package/es/components/icons/index.d.ts +0 -497
- package/es/components/icons/index.js +0 -1969
- package/es/components/icons/index.less +0 -47
- package/es/components/icons/src/pick-icon.d.ts +0 -455
- package/es/components/icons/src/svg-icon.d.ts +0 -44
- package/es/components/iframe/index.d.ts +0 -2
- package/es/components/iframe/index.js +0 -72
- package/es/components/iframe/index.less +0 -29
- package/es/components/iframe/src/index.d.ts +0 -38
- package/es/components/modal/index.d.ts +0 -4
- package/es/components/modal/index.js +0 -646
- package/es/components/modal/index.less +0 -82
- package/es/components/modal/src/components/CloseIcon.d.ts +0 -40
- package/es/components/modal/src/components/Modal.d.ts +0 -108
- package/es/components/modal/src/components/ModalFooter.d.ts +0 -62
- package/es/components/modal/src/components/ModalWrap.d.ts +0 -79
- package/es/components/modal/src/hooks/useDrag.d.ts +0 -7
- package/es/components/modal/src/hooks/useFullScreen.d.ts +0 -6
- package/es/components/modal/src/hooks/useModal.d.ts +0 -5
- package/es/components/modal/src/index.d.ts +0 -543
- package/es/components/modal/src/props.d.ts +0 -101
- package/es/components/modal/src/types/modal.type.d.ts +0 -17
- package/es/components/source/hooks/useDownload.d.ts +0 -8
- package/es/components/source/hooks/useSource.d.ts +0 -57
- package/es/components/source/index.d.ts +0 -2
- package/es/components/source/index.js +0 -419
- package/es/components/source/types/source.type.d.ts +0 -35
- package/es/components/source/utils/index.d.ts +0 -8
- package/es/components/table/index.d.ts +0 -3
- package/es/components/table/index.js +0 -2445
- package/es/components/table/index.less +0 -280
- package/es/components/table/src/components/TableAction.d.ts +0 -83
- package/es/components/table/src/components/TableRender.d.ts +0 -17
- package/es/components/table/src/components/editTable/CellComponent.d.ts +0 -22
- package/es/components/table/src/components/editTable/EditTableCell.d.ts +0 -94
- package/es/components/table/src/components/editTable/componentMap.d.ts +0 -4
- package/es/components/table/src/components/editTable/index.d.ts +0 -9
- package/es/components/table/src/components/editTable/props.d.ts +0 -27
- package/es/components/table/src/components/tableSetting/Column.d.ts +0 -69
- package/es/components/table/src/components/tableSetting/DownloadCtrl.d.ts +0 -22
- package/es/components/table/src/components/tableSetting/Fullscreen.d.ts +0 -22
- package/es/components/table/src/enums/table.enum.d.ts +0 -5
- package/es/components/table/src/hooks/useColumns.d.ts +0 -14
- package/es/components/table/src/hooks/useCustomRow.d.ts +0 -20
- package/es/components/table/src/hooks/useDataSource.d.ts +0 -15
- package/es/components/table/src/hooks/useHeader.d.ts +0 -8
- package/es/components/table/src/hooks/useHeaderCode.d.ts +0 -3
- package/es/components/table/src/hooks/useLoading.d.ts +0 -6
- package/es/components/table/src/hooks/usePagination.d.ts +0 -7
- package/es/components/table/src/hooks/useRow.d.ts +0 -5
- package/es/components/table/src/hooks/useRowSelection.d.ts +0 -12
- package/es/components/table/src/hooks/useTable.d.ts +0 -9
- package/es/components/table/src/hooks/useTableInstance.d.ts +0 -16
- package/es/components/table/src/hooks/useTableScroll.d.ts +0 -13
- package/es/components/table/src/index.d.ts +0 -625
- package/es/components/table/src/props.d.ts +0 -180
- package/es/components/table/src/types/actions.type.d.ts +0 -21
- package/es/components/table/src/types/header.type.d.ts +0 -23
- package/es/components/table/src/types/table.type.d.ts +0 -104
- package/es/components/tree/index.d.ts +0 -2
- package/es/components/tree/index.js +0 -1203
- package/es/components/tree/index.less +0 -200
- package/es/components/tree/src/basicProps.d.ts +0 -190
- package/es/components/tree/src/components/ContextMenu.d.ts +0 -70
- package/es/components/tree/src/components/TreeHeader.d.ts +0 -98
- package/es/components/tree/src/hooks/useContextMenu.d.ts +0 -2
- package/es/components/tree/src/hooks/useTree.d.ts +0 -15
- package/es/components/tree/src/index.d.ts +0 -6617
- package/es/components/tree/src/type/menu.d.ts +0 -36
- package/es/components/tree/src/type/tree.d.ts +0 -50
- package/es/components/tree/src/utils/tree.d.ts +0 -7
- package/es/components/upload/index.d.ts +0 -4
- package/es/components/upload/index.js +0 -655
- package/es/components/upload/index.less +0 -83
- package/es/components/upload/src/basicProps.d.ts +0 -91
- package/es/components/upload/src/components/PdfView.d.ts +0 -9
- package/es/components/upload/src/components/WordView.d.ts +0 -7
- package/es/components/upload/src/hooks/useFile.d.ts +0 -17
- package/es/components/upload/src/index.d.ts +0 -258
- package/es/components/upload/src/type/file.d.ts +0 -17
- package/es/components/upload/src/utils/fileSize.d.ts +0 -1
- package/es/components/upload/src/utils/upload.d.ts +0 -2
- package/es/directives/icon.d.ts +0 -2
- package/es/directives/index.d.ts +0 -7
- package/es/directives/index.js +0 -2015
- package/es/directives/permission.d.ts +0 -2
- package/es/global.d.ts +0 -7
- package/es/index.d.ts +0 -1
- package/es/index.js +0 -4
- package/es/theme/index.d.ts +0 -12
- package/es/theme/index.js +0 -4024
- package/es/theme/index.less +0 -1003
- package/es/theme/src/components/content/index.d.ts +0 -31
- package/es/theme/src/components/feature/back-top.d.ts +0 -5
- package/es/theme/src/components/feature/index.d.ts +0 -7
- package/es/theme/src/components/footer/index.d.ts +0 -31
- package/es/theme/src/components/header/components/bread-crumb.d.ts +0 -6
- package/es/theme/src/components/header/components/fullscreen.d.ts +0 -5
- package/es/theme/src/components/header/components/index.d.ts +0 -11
- package/es/theme/src/components/header/components/lang-picker.d.ts +0 -23
- package/es/theme/src/components/header/components/lock/Lockscreen.d.ts +0 -85
- package/es/theme/src/components/header/components/lock/index.d.ts +0 -2
- package/es/theme/src/components/header/components/lock/useTime.d.ts +0 -7
- package/es/theme/src/components/header/components/logo.d.ts +0 -55
- package/es/theme/src/components/header/components/menu-filter.d.ts +0 -22
- package/es/theme/src/components/header/components/notify.d.ts +0 -22
- package/es/theme/src/components/header/components/setting-theme.d.ts +0 -223
- package/es/theme/src/components/header/components/size.d.ts +0 -21
- package/es/theme/src/components/header/components/theme-drawer/feature.d.ts +0 -138
- package/es/theme/src/components/header/components/theme-drawer/index.d.ts +0 -3
- package/es/theme/src/components/header/components/theme-drawer/menu-type.d.ts +0 -16
- package/es/theme/src/components/header/components/theme-drawer/select.d.ts +0 -58
- package/es/theme/src/components/header/components/theme-drawer/switch.d.ts +0 -49
- package/es/theme/src/components/header/components/trigger.d.ts +0 -10
- package/es/theme/src/components/header/components/user-info.d.ts +0 -44
- package/es/theme/src/components/header/helper/change-theme.d.ts +0 -13
- package/es/theme/src/components/header/helper/menu-tree.d.ts +0 -4
- package/es/theme/src/components/header/index.d.ts +0 -551
- package/es/theme/src/components/header/multiple-header.d.ts +0 -660
- package/es/theme/src/components/sider/components/basic-menu/basic-menu-item.d.ts +0 -62
- package/es/theme/src/components/sider/components/basic-menu/basic-menu.d.ts +0 -207
- package/es/theme/src/components/sider/components/basic-menu/basic-sub-menu-item.d.ts +0 -127
- package/es/theme/src/components/sider/components/basic-menu/menu-item-content.d.ts +0 -26
- package/es/theme/src/components/sider/components/drag-bar.d.ts +0 -14
- package/es/theme/src/components/sider/components/layout-menu.d.ts +0 -22
- package/es/theme/src/components/sider/components/props.d.ts +0 -69
- package/es/theme/src/components/sider/components/sider-trigger.d.ts +0 -17
- package/es/theme/src/components/sider/helper/sider.d.ts +0 -12
- package/es/theme/src/components/sider/helper/split-menu.d.ts +0 -10
- package/es/theme/src/components/sider/index.d.ts +0 -235
- package/es/theme/src/components/sider/mix-sider.d.ts +0 -167
- package/es/theme/src/components/tabs/components/TabContent.d.ts +0 -36
- package/es/theme/src/components/tabs/components/TabRedo.d.ts +0 -23
- package/es/theme/src/components/tabs/components/index.d.ts +0 -3
- package/es/theme/src/components/tabs/hooks/useMultifyTabs.d.ts +0 -7
- package/es/theme/src/components/tabs/hooks/useTabDropdown.d.ts +0 -8
- package/es/theme/src/components/tabs/hooks/useTabs.d.ts +0 -10
- package/es/theme/src/components/tabs/index.d.ts +0 -86
- package/es/theme/src/components/tabs/types/tabs.type.d.ts +0 -7
- package/es/theme/src/enums/index.d.ts +0 -1
- package/es/theme/src/enums/theme.enum.d.ts +0 -34
- package/es/theme/src/hooks/index.d.ts +0 -6
- package/es/theme/src/hooks/useDragLine.d.ts +0 -2
- package/es/theme/src/hooks/useHeader.d.ts +0 -26
- package/es/theme/src/hooks/useMenu.d.ts +0 -29
- package/es/theme/src/hooks/useMultifyTab.d.ts +0 -8
- package/es/theme/src/hooks/useOpenKeys.d.ts +0 -7
- package/es/theme/src/hooks/useTheme.d.ts +0 -9
- package/es/theme/src/index.d.ts +0 -1630
- package/es/theme/src/setting/theme.setting.d.ts +0 -2
- package/es/theme/src/stores/index.d.ts +0 -3
- package/es/theme/src/stores/lockscreen.store.d.ts +0 -7
- package/es/theme/src/stores/routeReuse.store.d.ts +0 -25
- package/es/theme/src/stores/theme.store.d.ts +0 -19
- package/es/theme/src/types/index.d.ts +0 -3
- package/es/theme/src/types/menu.type.d.ts +0 -15
- package/es/theme/src/types/theme.type.d.ts +0 -62
- package/es/theme/transition.less +0 -105
- package/es/utils/withInstall.d.ts +0 -4
- package/index.js +0 -62
- package/manualContentPath.js +0 -138
- package/tailwind.config.cjs +0 -11
- package/tsconfig.json +0 -42
- package/tsconfig.node.json +0 -9
- package/vite.config.ts +0 -68
- /package/{es → dist/es}/components/tree/src/enums/index.d.ts +0 -0
|
@@ -1,2445 +0,0 @@
|
|
|
1
|
-
import { useAppStore, useSlots, error, http, useApp, getDynamicProps, DtCache, CacheKey, isBoolean, isFunction, getPopupContainer, useI18n, isNumber, isArray, isObject, isString, useMessage, isNullAndUnDef, windowResizeFn, off, on, getDictValueByCode, formatNumber, isVnode } from "@dt-frames/core";
|
|
2
|
-
import { useSlots as useSlots$1, unref, ref, watch, onUnmounted, defineComponent, computed, useAttrs, resolveDirective, openBlock, createElementBlock, normalizeClass, Fragment, renderList, withDirectives, createTextVNode, toDisplayString, createCommentVNode, createBlock, withCtx, createVNode, createElementVNode, normalizeStyle, provide, inject, h, mergeProps, toRaw as toRaw$1, nextTick, reactive, watchEffect, normalizeProps, renderSlot, onMounted, createSlots, guardReactiveProps } from "vue";
|
|
3
|
-
import { useHeader } from "../../theme";
|
|
4
|
-
import { MenuItem, Menu, Dropdown, Tooltip, Checkbox as Checkbox$1, Divider, Col, Row, Button, CheckboxGroup, Popover as Popover$1, Table } from "ant-design-vue/es";
|
|
5
|
-
import "ant-design-vue/es/table/style";
|
|
6
|
-
import { takeRight, omit, cloneDeep, isEqual } from "lodash-es";
|
|
7
|
-
import "ant-design-vue/es/tooltip/style";
|
|
8
|
-
import "ant-design-vue/es/dropdown/style";
|
|
9
|
-
import "ant-design-vue/es/menu/style";
|
|
10
|
-
import { Input, InputNumber, Select, TreeSelect, Switch, Checkbox, DatePicker, TimePicker, Popover, Tag } from "ant-design-vue";
|
|
11
|
-
import { DtFormButtons } from "../form";
|
|
12
|
-
import { useFullscreen, useDebounceFn, useThrottleFn, tryOnMounted } from "@vueuse/core";
|
|
13
|
-
import { useModal, DtModal, useModalOut } from "../modal";
|
|
14
|
-
import "ant-design-vue/es/row/style";
|
|
15
|
-
import "ant-design-vue/es/col/style";
|
|
16
|
-
import "ant-design-vue/es/divider/style";
|
|
17
|
-
import "ant-design-vue/es/checkbox/style";
|
|
18
|
-
import "ant-design-vue/es/popover/style";
|
|
19
|
-
import "ant-design-vue/es/button/style";
|
|
20
|
-
import Sortablejs from "sortablejs";
|
|
21
|
-
import dayjs from "dayjs";
|
|
22
|
-
const codeMap = /* @__PURE__ */ new Map();
|
|
23
|
-
function useHeaderCode(code, changeColumns) {
|
|
24
|
-
const { appConf } = useAppStore();
|
|
25
|
-
const { getIsZH } = useHeader();
|
|
26
|
-
useSlots();
|
|
27
|
-
useSlots$1();
|
|
28
|
-
if (!appConf.pages.queryColumnApi) {
|
|
29
|
-
error("\u8BF7\u5728init.config.ts\u4E2D\u914D\u7F6EqueryColumnApi\uFF01");
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
const getAlign = (key) => key === 0 ? "center" : key === 2 ? "right" : "left";
|
|
33
|
-
const renderCell = (type, slot, ctx) => {
|
|
34
|
-
switch (type) {
|
|
35
|
-
case 0:
|
|
36
|
-
return { date: ctx };
|
|
37
|
-
case 1:
|
|
38
|
-
return { dict: ctx };
|
|
39
|
-
case 5:
|
|
40
|
-
return { percent: ctx };
|
|
41
|
-
case 7:
|
|
42
|
-
if (!appConf.structure[ctx]) {
|
|
43
|
-
error(`\u672A\u627E\u5230structure: ${ctx} !`);
|
|
44
|
-
return {};
|
|
45
|
-
}
|
|
46
|
-
return { dict: { ...appConf.structure[ctx], struCode: ctx } };
|
|
47
|
-
case 11:
|
|
48
|
-
return { number: ctx };
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
function getColumns() {
|
|
52
|
-
if (codeMap.get(code)) {
|
|
53
|
-
changeColumns(codeMap.get(code));
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
http.post(
|
|
57
|
-
appConf.pages.queryColumnApi,
|
|
58
|
-
{ tableCode: code }
|
|
59
|
-
).then((rsp) => {
|
|
60
|
-
handleData(rsp);
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
function handleData(data) {
|
|
64
|
-
let rows = [];
|
|
65
|
-
data.forEach((it) => {
|
|
66
|
-
let obj = {
|
|
67
|
-
title: unref(getIsZH) ? it.cloumnName : it.cloumnEngName,
|
|
68
|
-
dataIndex: it.cloumnCode,
|
|
69
|
-
sorter: Boolean(it.ifOrder),
|
|
70
|
-
align: getAlign(it.textAlign),
|
|
71
|
-
show: Boolean(it.ifDisplay),
|
|
72
|
-
defaultHidden: !Boolean(it.ifDisplay)
|
|
73
|
-
};
|
|
74
|
-
if (it.cloumnType !== void 0)
|
|
75
|
-
obj.render = renderCell(it.cloumnType, it.slot, it.dictCode);
|
|
76
|
-
if (it.width)
|
|
77
|
-
obj.width = Number(it.width);
|
|
78
|
-
rows.push(obj);
|
|
79
|
-
});
|
|
80
|
-
codeMap.set(code, rows);
|
|
81
|
-
changeColumns(rows);
|
|
82
|
-
}
|
|
83
|
-
getColumns();
|
|
84
|
-
}
|
|
85
|
-
function useTable(props2) {
|
|
86
|
-
const tableRef = ref(null);
|
|
87
|
-
const loadedRef = ref(false);
|
|
88
|
-
let stopWatch;
|
|
89
|
-
function registerTable(instance) {
|
|
90
|
-
const { isProd } = useApp();
|
|
91
|
-
if (unref(loadedRef) && unref(isProd) && instance === unref(tableRef))
|
|
92
|
-
return;
|
|
93
|
-
if (props2?.columnCode) {
|
|
94
|
-
useHeaderCode(
|
|
95
|
-
props2.columnCode,
|
|
96
|
-
(columns) => {
|
|
97
|
-
props2.columns = columns;
|
|
98
|
-
instance.setProps(getDynamicProps(props2));
|
|
99
|
-
}
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
tableRef.value = instance;
|
|
103
|
-
loadedRef.value = true;
|
|
104
|
-
stopWatch?.();
|
|
105
|
-
stopWatch = watch(
|
|
106
|
-
() => props2,
|
|
107
|
-
() => {
|
|
108
|
-
props2 && instance.setProps(getDynamicProps(props2));
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
immediate: true,
|
|
112
|
-
deep: true
|
|
113
|
-
}
|
|
114
|
-
);
|
|
115
|
-
onUnmounted(() => {
|
|
116
|
-
tableRef.value = null;
|
|
117
|
-
loadedRef.value = null;
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
function getTableInstance2() {
|
|
121
|
-
const table = unref(tableRef);
|
|
122
|
-
if (!table) {
|
|
123
|
-
error("\u6CA1\u6709table\u8868\u5355\u5B9E\u4F8B");
|
|
124
|
-
}
|
|
125
|
-
return table;
|
|
126
|
-
}
|
|
127
|
-
const methods = {
|
|
128
|
-
setProps: (props22) => getTableInstance2().setProps(props22),
|
|
129
|
-
setLoading: (loading) => getTableInstance2().setLoading(loading),
|
|
130
|
-
clearSelectedRowKeys: () => getTableInstance2().clearSelectedRowKeys(),
|
|
131
|
-
getSelectRows: () => getTableInstance2().getSelectRows(),
|
|
132
|
-
getSelectedRowKeys: () => getTableInstance2().getSelectedRowKeys(),
|
|
133
|
-
setSelectedRowKeys: (keys) => getTableInstance2().setSelectedRowKeys(keys),
|
|
134
|
-
getRowSelection: () => toRaw(getTableInstance2().getRowSelection()),
|
|
135
|
-
getColumns: (opt) => toRaw(getTableInstance2().getColumns(opt)),
|
|
136
|
-
setColumns: (columns) => getTableInstance2().setColumns(columns),
|
|
137
|
-
setColumnsByDataIndex: (dataIndex, value) => {
|
|
138
|
-
return getTableInstance2().setColumnsByDataIndex(dataIndex, value);
|
|
139
|
-
},
|
|
140
|
-
getCacheColumns: () => toRaw(getTableInstance2().getCacheColumns()),
|
|
141
|
-
findTableDataRecord: (rowKey) => getTableInstance2().findTableDataRecord(rowKey),
|
|
142
|
-
updateTableDataRecord: (rowKey, record) => getTableInstance2().updateTableDataRecord(rowKey, record),
|
|
143
|
-
getPagination: () => getTableInstance2().getPagination()
|
|
144
|
-
};
|
|
145
|
-
return [registerTable, methods];
|
|
146
|
-
}
|
|
147
|
-
const _imports_0 = "data:image/png;base64,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";
|
|
148
|
-
const _hoisted_1$8 = ["onClick"];
|
|
149
|
-
const _hoisted_2$3 = {
|
|
150
|
-
key: 0,
|
|
151
|
-
class: "dt-table-action-btn w-8 inline-block"
|
|
152
|
-
};
|
|
153
|
-
const _hoisted_3$2 = { key: 0 };
|
|
154
|
-
const _hoisted_4$2 = { class: "text-13 opacity-80" };
|
|
155
|
-
const _hoisted_5$1 = { class: "dt-table-action-btn w-8 inline-block" };
|
|
156
|
-
const _hoisted_6 = ["onClick"];
|
|
157
|
-
const _hoisted_7 = /* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-settings dt-table-action-dropdown cursor-pointer" }, null, -1);
|
|
158
|
-
const _hoisted_8 = { class: "text-13 opacity-80" };
|
|
159
|
-
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
160
|
-
__name: "TableAction",
|
|
161
|
-
props: {
|
|
162
|
-
fixed: {
|
|
163
|
-
type: String,
|
|
164
|
-
default: "right"
|
|
165
|
-
},
|
|
166
|
-
expand: {
|
|
167
|
-
type: Boolean,
|
|
168
|
-
default: false
|
|
169
|
-
},
|
|
170
|
-
expandNum: {
|
|
171
|
-
type: Number
|
|
172
|
-
},
|
|
173
|
-
width: {
|
|
174
|
-
type: String,
|
|
175
|
-
default: "70px"
|
|
176
|
-
},
|
|
177
|
-
btns: {
|
|
178
|
-
type: Array,
|
|
179
|
-
default: () => []
|
|
180
|
-
},
|
|
181
|
-
flag: {
|
|
182
|
-
type: String
|
|
183
|
-
},
|
|
184
|
-
record: {
|
|
185
|
-
type: Object,
|
|
186
|
-
default: {}
|
|
187
|
-
},
|
|
188
|
-
index: {
|
|
189
|
-
type: Number
|
|
190
|
-
},
|
|
191
|
-
authPrefix: {
|
|
192
|
-
type: String
|
|
193
|
-
}
|
|
194
|
-
},
|
|
195
|
-
setup(__props) {
|
|
196
|
-
const props2 = __props;
|
|
197
|
-
const { getIsZH } = useHeader();
|
|
198
|
-
const actionBtns = ref([]);
|
|
199
|
-
const getAuth = (auth) => {
|
|
200
|
-
const { authPrefix } = props2;
|
|
201
|
-
if (auth && auth.includes(":")) {
|
|
202
|
-
return auth;
|
|
203
|
-
} else if (authPrefix && auth) {
|
|
204
|
-
return `${authPrefix}:${auth}`;
|
|
205
|
-
}
|
|
206
|
-
return auth ?? null;
|
|
207
|
-
};
|
|
208
|
-
const { appConf } = useAppStore();
|
|
209
|
-
const getExpandNum = computed(() => {
|
|
210
|
-
return props2.expandNum || appConf?.ui?.table?.expandNum;
|
|
211
|
-
});
|
|
212
|
-
const showMore = computed(() => {
|
|
213
|
-
if (!unref(getExpandNum)) {
|
|
214
|
-
return false;
|
|
215
|
-
}
|
|
216
|
-
let allAuths = DtCache.getLocal(CacheKey.AUTHS);
|
|
217
|
-
let remainBtnNum = unref(actionBtns).length - unref(getExpandNum);
|
|
218
|
-
let remainBtn = takeRight(unref(actionBtns), remainBtnNum);
|
|
219
|
-
return remainBtn.filter((it) => {
|
|
220
|
-
if (it.ifShow) {
|
|
221
|
-
return it.auth ? allAuths.includes(getAuth(it.auth)) : true;
|
|
222
|
-
}
|
|
223
|
-
return false;
|
|
224
|
-
}).length;
|
|
225
|
-
});
|
|
226
|
-
function handleAction(it) {
|
|
227
|
-
if (isFunction(it.onClick)) {
|
|
228
|
-
it.onClick(props2.record, props2.index);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
const attrs = useAttrs();
|
|
232
|
-
function getPopupContainer$1() {
|
|
233
|
-
return isFunction(attrs.getPopupContainer) ? attrs.getPopupContainer() : getPopupContainer();
|
|
234
|
-
}
|
|
235
|
-
const getLabel = (it, record) => {
|
|
236
|
-
const label = isFunction(it.label) ? it.label(record) : it.label;
|
|
237
|
-
const enLabel = isFunction(it.enLabel) ? it.enLabel(record) : it.enLabel;
|
|
238
|
-
if (!unref(getIsZH)) {
|
|
239
|
-
return enLabel || label;
|
|
240
|
-
}
|
|
241
|
-
return label;
|
|
242
|
-
};
|
|
243
|
-
watch(
|
|
244
|
-
() => [
|
|
245
|
-
unref(props2.btns),
|
|
246
|
-
unref(props2.record)
|
|
247
|
-
],
|
|
248
|
-
([btns]) => {
|
|
249
|
-
actionBtns.value = btns.map((it) => {
|
|
250
|
-
return {
|
|
251
|
-
...it,
|
|
252
|
-
ifShow: isBoolean(it.show) ? it.show : isFunction(it.show) ? it.show(props2.record) : true,
|
|
253
|
-
icon: () => isFunction(it.icon) ? it.icon(props2.record) : it.icon,
|
|
254
|
-
label: () => getLabel(it, props2.record)
|
|
255
|
-
};
|
|
256
|
-
});
|
|
257
|
-
},
|
|
258
|
-
{
|
|
259
|
-
immediate: true,
|
|
260
|
-
deep: true
|
|
261
|
-
}
|
|
262
|
-
);
|
|
263
|
-
return (_ctx, _cache) => {
|
|
264
|
-
const _component_AMenuItem = MenuItem;
|
|
265
|
-
const _component_AMenu = Menu;
|
|
266
|
-
const _component_ADropdown = Dropdown;
|
|
267
|
-
const _component_ATooltip = Tooltip;
|
|
268
|
-
const _directive_auth = resolveDirective("auth");
|
|
269
|
-
return props2.expand ? (openBlock(), createElementBlock("div", {
|
|
270
|
-
key: 0,
|
|
271
|
-
class: normalizeClass(unref(getExpandNum) ? "dt-expand-has-collapse" : "")
|
|
272
|
-
}, [
|
|
273
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(actionBtns.value, (item, index) => {
|
|
274
|
-
return openBlock(), createElementBlock(Fragment, null, [
|
|
275
|
-
item.ifShow ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
276
|
-
unref(getExpandNum) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
277
|
-
index < unref(getExpandNum) ? withDirectives((openBlock(), createElementBlock("span", {
|
|
278
|
-
key: 0,
|
|
279
|
-
class: "dt-table-action-btn w-8 inline-block",
|
|
280
|
-
onClick: ($event) => handleAction(item)
|
|
281
|
-
}, [
|
|
282
|
-
createTextVNode(toDisplayString(item.label()), 1)
|
|
283
|
-
], 8, _hoisted_1$8)), [
|
|
284
|
-
[_directive_auth, getAuth(item.auth)]
|
|
285
|
-
]) : createCommentVNode("", true),
|
|
286
|
-
index >= unref(getExpandNum) && index === actionBtns.value.length - 1 ? (openBlock(), createBlock(_component_ADropdown, {
|
|
287
|
-
key: 1,
|
|
288
|
-
"get-popup-container": getPopupContainer$1,
|
|
289
|
-
trigger: ["click"],
|
|
290
|
-
destroyPopupOnHide: true
|
|
291
|
-
}, {
|
|
292
|
-
overlay: withCtx(() => [
|
|
293
|
-
createVNode(_component_AMenu, { class: "dt-action-select flex flex-col" }, {
|
|
294
|
-
default: withCtx(() => [
|
|
295
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(actionBtns.value, (item1, index1) => {
|
|
296
|
-
return openBlock(), createElementBlock(Fragment, null, [
|
|
297
|
-
index1 >= unref(getExpandNum) && item1.ifShow ? withDirectives((openBlock(), createElementBlock("span", _hoisted_3$2, [
|
|
298
|
-
createVNode(_component_AMenuItem, {
|
|
299
|
-
onClick: ($event) => handleAction(item1)
|
|
300
|
-
}, {
|
|
301
|
-
default: withCtx(() => [
|
|
302
|
-
createElementVNode("span", _hoisted_4$2, toDisplayString(item1.label()), 1)
|
|
303
|
-
]),
|
|
304
|
-
_: 2
|
|
305
|
-
}, 1032, ["onClick"])
|
|
306
|
-
])), [
|
|
307
|
-
[_directive_auth, getAuth(item1.auth)]
|
|
308
|
-
]) : createCommentVNode("", true)
|
|
309
|
-
], 64);
|
|
310
|
-
}), 256))
|
|
311
|
-
]),
|
|
312
|
-
_: 1
|
|
313
|
-
})
|
|
314
|
-
]),
|
|
315
|
-
default: withCtx(() => [
|
|
316
|
-
unref(showMore) ? (openBlock(), createElementBlock("span", _hoisted_2$3, " \u66F4\u591A ")) : createCommentVNode("", true)
|
|
317
|
-
]),
|
|
318
|
-
_: 1
|
|
319
|
-
})) : createCommentVNode("", true)
|
|
320
|
-
], 64)) : (openBlock(), createBlock(_component_ATooltip, {
|
|
321
|
-
key: 1,
|
|
322
|
-
placement: "bottom"
|
|
323
|
-
}, {
|
|
324
|
-
title: withCtx(() => [
|
|
325
|
-
createTextVNode(toDisplayString(item.label()), 1)
|
|
326
|
-
]),
|
|
327
|
-
default: withCtx(() => [
|
|
328
|
-
createElementVNode("span", _hoisted_5$1, [
|
|
329
|
-
createElementVNode("i", {
|
|
330
|
-
class: normalizeClass(["i cursor-pointer", item.icon()]),
|
|
331
|
-
style: normalizeStyle({
|
|
332
|
-
color: item.color
|
|
333
|
-
}),
|
|
334
|
-
onClick: ($event) => handleAction(item)
|
|
335
|
-
}, null, 14, _hoisted_6)
|
|
336
|
-
])
|
|
337
|
-
]),
|
|
338
|
-
_: 2
|
|
339
|
-
}, 1024))
|
|
340
|
-
], 64)) : createCommentVNode("", true)
|
|
341
|
-
], 64);
|
|
342
|
-
}), 256))
|
|
343
|
-
], 2)) : (openBlock(), createBlock(_component_ADropdown, {
|
|
344
|
-
key: 1,
|
|
345
|
-
"get-popup-container": getPopupContainer$1,
|
|
346
|
-
trigger: ["click"]
|
|
347
|
-
}, {
|
|
348
|
-
overlay: withCtx(() => [
|
|
349
|
-
createVNode(_component_AMenu, { class: "dt-action-select flex flex-col" }, {
|
|
350
|
-
default: withCtx(() => [
|
|
351
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(actionBtns.value, (item) => {
|
|
352
|
-
return withDirectives((openBlock(), createElementBlock("span", null, [
|
|
353
|
-
item.ifShow ? (openBlock(), createBlock(_component_AMenuItem, {
|
|
354
|
-
key: 0,
|
|
355
|
-
onClick: ($event) => handleAction(item)
|
|
356
|
-
}, {
|
|
357
|
-
default: withCtx(() => [
|
|
358
|
-
createElementVNode("i", {
|
|
359
|
-
class: normalizeClass(["i text-base opacity-80 pr-2", item.icon()]),
|
|
360
|
-
style: normalizeStyle({
|
|
361
|
-
color: item.color
|
|
362
|
-
})
|
|
363
|
-
}, null, 6),
|
|
364
|
-
createElementVNode("span", _hoisted_8, toDisplayString(item.label()), 1)
|
|
365
|
-
]),
|
|
366
|
-
_: 2
|
|
367
|
-
}, 1032, ["onClick"])) : createCommentVNode("", true)
|
|
368
|
-
])), [
|
|
369
|
-
[_directive_auth, getAuth(item.auth)]
|
|
370
|
-
]);
|
|
371
|
-
}), 256))
|
|
372
|
-
]),
|
|
373
|
-
_: 1
|
|
374
|
-
})
|
|
375
|
-
]),
|
|
376
|
-
default: withCtx(() => [
|
|
377
|
-
_hoisted_7
|
|
378
|
-
]),
|
|
379
|
-
_: 1
|
|
380
|
-
}));
|
|
381
|
-
};
|
|
382
|
-
}
|
|
383
|
-
});
|
|
384
|
-
const tableKey = Symbol("dt-page");
|
|
385
|
-
function createTableInstance(instance) {
|
|
386
|
-
provide(tableKey, instance);
|
|
387
|
-
}
|
|
388
|
-
function getTableInstance() {
|
|
389
|
-
return inject(tableKey);
|
|
390
|
-
}
|
|
391
|
-
const componentMap = /* @__PURE__ */ new Map();
|
|
392
|
-
componentMap.set("Input", Input);
|
|
393
|
-
componentMap.set("InputNumber", InputNumber);
|
|
394
|
-
componentMap.set("Select", Select);
|
|
395
|
-
componentMap.set("TreeSelect", TreeSelect);
|
|
396
|
-
componentMap.set("Switch", Switch);
|
|
397
|
-
componentMap.set("Checkbox", Checkbox);
|
|
398
|
-
componentMap.set("DatePicker", DatePicker);
|
|
399
|
-
componentMap.set("TimePicker", TimePicker);
|
|
400
|
-
const CellComponent = ({
|
|
401
|
-
component = "Input",
|
|
402
|
-
rule = true,
|
|
403
|
-
ruleMessage,
|
|
404
|
-
popoverVisible,
|
|
405
|
-
getPopupContainer: getPopupContainer2
|
|
406
|
-
}, { attrs }) => {
|
|
407
|
-
const Comp = componentMap.get(component);
|
|
408
|
-
const DefaultComp = h(Comp, attrs);
|
|
409
|
-
if (!rule)
|
|
410
|
-
return DefaultComp;
|
|
411
|
-
return h(
|
|
412
|
-
Popover,
|
|
413
|
-
{
|
|
414
|
-
overlayClassName: "edit-cell-rule-popover",
|
|
415
|
-
visible: !!popoverVisible,
|
|
416
|
-
...getPopupContainer2 ? { getPopupContainer: getPopupContainer2 } : {}
|
|
417
|
-
},
|
|
418
|
-
{
|
|
419
|
-
default: () => DefaultComp,
|
|
420
|
-
content: () => ruleMessage
|
|
421
|
-
}
|
|
422
|
-
);
|
|
423
|
-
};
|
|
424
|
-
const basicProps = {
|
|
425
|
-
value: {
|
|
426
|
-
type: [String, Number, Boolean, Object],
|
|
427
|
-
default: ""
|
|
428
|
-
},
|
|
429
|
-
record: {
|
|
430
|
-
type: Object
|
|
431
|
-
},
|
|
432
|
-
column: {
|
|
433
|
-
type: Object,
|
|
434
|
-
default: () => ({})
|
|
435
|
-
},
|
|
436
|
-
index: Number
|
|
437
|
-
};
|
|
438
|
-
const _hoisted_1$7 = { class: "editable-cell" };
|
|
439
|
-
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
440
|
-
__name: "EditTableCell",
|
|
441
|
-
props: basicProps,
|
|
442
|
-
setup(__props) {
|
|
443
|
-
const props2 = __props;
|
|
444
|
-
const { getUiSize } = useHeader();
|
|
445
|
-
const { t } = useI18n("UI");
|
|
446
|
-
const { editRule, align = "left" } = props2.column;
|
|
447
|
-
const table = getTableInstance();
|
|
448
|
-
const ruleMessage = ref("");
|
|
449
|
-
const ruleVisible = ref(false);
|
|
450
|
-
const optionsRef = ref([]);
|
|
451
|
-
const currentValueRef = ref(props2.value);
|
|
452
|
-
const getComponent = computed(() => props2.column?.editComponent || "Input");
|
|
453
|
-
const getRuleVisible = computed(() => {
|
|
454
|
-
return unref(ruleMessage) && unref(ruleVisible);
|
|
455
|
-
});
|
|
456
|
-
const getWrapperClass = computed(() => {
|
|
457
|
-
return `edit-cell-align-${align}`;
|
|
458
|
-
});
|
|
459
|
-
const getIsCheckComp = computed(() => {
|
|
460
|
-
const component = unref(getComponent);
|
|
461
|
-
return ["Checkbox", "Switch"].includes(component);
|
|
462
|
-
});
|
|
463
|
-
const createPlaceholderMessage = (component) => {
|
|
464
|
-
if (component.includes("Input")) {
|
|
465
|
-
return t("PLEASE_INPUT");
|
|
466
|
-
}
|
|
467
|
-
return t("PLEASE_SELECT");
|
|
468
|
-
};
|
|
469
|
-
const setTableValue = () => {
|
|
470
|
-
props2.record[props2.column.dataIndex] = unref(currentValueRef);
|
|
471
|
-
};
|
|
472
|
-
const getComponentProps = computed(() => {
|
|
473
|
-
const isCheckValue = unref(getIsCheckComp);
|
|
474
|
-
const valueField = isCheckValue ? "checked" : "value";
|
|
475
|
-
const val = unref(currentValueRef);
|
|
476
|
-
let compProps = props2.column?.editComponentProps ?? {};
|
|
477
|
-
const { record, column, index } = props2;
|
|
478
|
-
if (isFunction(compProps)) {
|
|
479
|
-
compProps = compProps({ text: val, record, column, index }) ?? {};
|
|
480
|
-
}
|
|
481
|
-
if (unref(getComponent) === "InputNumber") {
|
|
482
|
-
compProps = {
|
|
483
|
-
formatter: (value) => `${value}`.replace(/[1-9]\d{0,2}(?=(\d{3})+$)/g, "$&,"),
|
|
484
|
-
parser: (value) => value.replace(/\$\s?|(,*)/g, ""),
|
|
485
|
-
...compProps
|
|
486
|
-
};
|
|
487
|
-
}
|
|
488
|
-
return {
|
|
489
|
-
size: "small",
|
|
490
|
-
dropdownClassName: unref(getUiSize),
|
|
491
|
-
getPopupContainer: () => document.body,
|
|
492
|
-
placeholder: createPlaceholderMessage(unref(getComponent)),
|
|
493
|
-
...compProps,
|
|
494
|
-
[valueField]: val
|
|
495
|
-
};
|
|
496
|
-
});
|
|
497
|
-
async function handleChange(e) {
|
|
498
|
-
const component = unref(getComponent);
|
|
499
|
-
if (component === "Checkbox") {
|
|
500
|
-
currentValueRef.value = e.target.checked;
|
|
501
|
-
} else if (e?.target && Reflect.has(e.target, "value")) {
|
|
502
|
-
currentValueRef.value = e.target.value;
|
|
503
|
-
} else {
|
|
504
|
-
currentValueRef.value = e;
|
|
505
|
-
}
|
|
506
|
-
const onChange = unref(getComponentProps)?.onChange;
|
|
507
|
-
if (onChange && isFunction(onChange))
|
|
508
|
-
onChange(...arguments, props2);
|
|
509
|
-
setTableValue();
|
|
510
|
-
table.emits?.("edit-change", {
|
|
511
|
-
column: props2.column,
|
|
512
|
-
value: unref(currentValueRef),
|
|
513
|
-
record: toRaw$1(props2.record),
|
|
514
|
-
index: props2.index
|
|
515
|
-
});
|
|
516
|
-
handleSubmitRule();
|
|
517
|
-
}
|
|
518
|
-
async function handleSubmitRule() {
|
|
519
|
-
const { column, record } = props2;
|
|
520
|
-
const { editRule: editRule2 } = column;
|
|
521
|
-
const currentValue = unref(currentValueRef);
|
|
522
|
-
if (editRule2) {
|
|
523
|
-
if (isBoolean(editRule2) && !currentValue && !isNumber(currentValue)) {
|
|
524
|
-
ruleVisible.value = true;
|
|
525
|
-
const component = unref(getComponent);
|
|
526
|
-
ruleMessage.value = createPlaceholderMessage(component);
|
|
527
|
-
return false;
|
|
528
|
-
}
|
|
529
|
-
if (isFunction(editRule2)) {
|
|
530
|
-
const res = await editRule2(currentValue, record);
|
|
531
|
-
if (!!res) {
|
|
532
|
-
ruleMessage.value = res;
|
|
533
|
-
ruleVisible.value = true;
|
|
534
|
-
return false;
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
ruleMessage.value = "";
|
|
539
|
-
return true;
|
|
540
|
-
}
|
|
541
|
-
function handleOptionsChange(options) {
|
|
542
|
-
optionsRef.value = options;
|
|
543
|
-
}
|
|
544
|
-
return (_ctx, _cache) => {
|
|
545
|
-
return openBlock(), createElementBlock("div", _hoisted_1$7, [
|
|
546
|
-
createVNode(unref(CellComponent), mergeProps({ ref: "elRef" }, unref(omit)(unref(getComponentProps), "onChange"), {
|
|
547
|
-
component: _ctx.column?.editComponent,
|
|
548
|
-
popoverVisible: unref(getRuleVisible),
|
|
549
|
-
rule: unref(editRule),
|
|
550
|
-
ruleMessage: ruleMessage.value,
|
|
551
|
-
class: unref(getWrapperClass),
|
|
552
|
-
onChange: handleChange,
|
|
553
|
-
onOptionsChange: handleOptionsChange
|
|
554
|
-
}), null, 16, ["component", "popoverVisible", "rule", "ruleMessage", "class"])
|
|
555
|
-
]);
|
|
556
|
-
};
|
|
557
|
-
}
|
|
558
|
-
});
|
|
559
|
-
function renderEditCell(column) {
|
|
560
|
-
return ({ text: value, record, index }) => {
|
|
561
|
-
record.onValid = async () => {
|
|
562
|
-
if (isArray(record?.validCbs)) {
|
|
563
|
-
const validFns = (record?.validCbs || []).map((fn) => fn());
|
|
564
|
-
const res = await Promise.all(validFns);
|
|
565
|
-
return res.every((item) => !!item);
|
|
566
|
-
}
|
|
567
|
-
return false;
|
|
568
|
-
};
|
|
569
|
-
record.onEdit = async (edit, submit = false) => {
|
|
570
|
-
if (!submit) {
|
|
571
|
-
record.editable = edit;
|
|
572
|
-
}
|
|
573
|
-
if (!edit && submit) {
|
|
574
|
-
if (!await record.onValid())
|
|
575
|
-
return false;
|
|
576
|
-
const res = await record.onSubmitEdit?.();
|
|
577
|
-
if (res) {
|
|
578
|
-
record.editable = false;
|
|
579
|
-
return true;
|
|
580
|
-
}
|
|
581
|
-
return false;
|
|
582
|
-
}
|
|
583
|
-
if (!edit && !submit) {
|
|
584
|
-
record.onCancelEdit?.();
|
|
585
|
-
}
|
|
586
|
-
return true;
|
|
587
|
-
};
|
|
588
|
-
return h(_sfc_main$8, {
|
|
589
|
-
value,
|
|
590
|
-
record,
|
|
591
|
-
column,
|
|
592
|
-
index
|
|
593
|
-
});
|
|
594
|
-
};
|
|
595
|
-
}
|
|
596
|
-
const INDEX_FLAG = "INDEX";
|
|
597
|
-
const ACTION_COLUMN = "ACTION";
|
|
598
|
-
function handleItem(item, ellipsis) {
|
|
599
|
-
const { appConf } = useAppStore();
|
|
600
|
-
const { align } = appConf.ui.table;
|
|
601
|
-
const { key, dataIndex, children } = item;
|
|
602
|
-
item.align = item.align || align;
|
|
603
|
-
if (ellipsis) {
|
|
604
|
-
if (!key) {
|
|
605
|
-
item.key = dataIndex && dataIndex.toString();
|
|
606
|
-
}
|
|
607
|
-
if (!isBoolean(item.ellipsis)) {
|
|
608
|
-
item = Object.assign(item, {
|
|
609
|
-
ellipsis
|
|
610
|
-
});
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
if (children && children.length) {
|
|
614
|
-
handleChildren(children, !!ellipsis);
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
function handleChildren(children, ellipsis) {
|
|
618
|
-
if (!children) {
|
|
619
|
-
return;
|
|
620
|
-
}
|
|
621
|
-
children.forEach((item) => {
|
|
622
|
-
const { children: children2 } = item;
|
|
623
|
-
handleItem(item, ellipsis);
|
|
624
|
-
handleChildren(children2, ellipsis);
|
|
625
|
-
});
|
|
626
|
-
}
|
|
627
|
-
function handleIndexColumn(propsRef, getPaginationRef, columns) {
|
|
628
|
-
const { getIsZH } = useHeader();
|
|
629
|
-
const { t } = useI18n("UI");
|
|
630
|
-
const { showIndexColumn, indexColumnProps, isTreeTable, virtual } = unref(propsRef);
|
|
631
|
-
let pushIndexColumns = false;
|
|
632
|
-
if (unref(isTreeTable)) {
|
|
633
|
-
return;
|
|
634
|
-
}
|
|
635
|
-
columns.forEach(() => {
|
|
636
|
-
const indIndex = columns.findIndex((column) => column.flag === INDEX_FLAG);
|
|
637
|
-
if (showIndexColumn) {
|
|
638
|
-
pushIndexColumns = indIndex === -1;
|
|
639
|
-
} else if (!showIndexColumn && indIndex !== -1) {
|
|
640
|
-
columns.splice(indIndex, 1);
|
|
641
|
-
}
|
|
642
|
-
});
|
|
643
|
-
if (!pushIndexColumns) {
|
|
644
|
-
return;
|
|
645
|
-
}
|
|
646
|
-
const isFixedLeft = columns.some((item) => item.fixed === "left");
|
|
647
|
-
columns.unshift({
|
|
648
|
-
flag: INDEX_FLAG,
|
|
649
|
-
width: unref(getIsZH) ? 50 : 70,
|
|
650
|
-
title: t("NUMBER"),
|
|
651
|
-
align: "center",
|
|
652
|
-
customRender: ({ index, renderIndex, record }) => {
|
|
653
|
-
if (virtual && record?.index) {
|
|
654
|
-
return record?.index;
|
|
655
|
-
}
|
|
656
|
-
const getPagination = unref(getPaginationRef);
|
|
657
|
-
const { appConf } = useAppStore();
|
|
658
|
-
const { defaultPageSize } = appConf.ui.table;
|
|
659
|
-
if (isBoolean(getPagination)) {
|
|
660
|
-
return `${index + 1}`;
|
|
661
|
-
}
|
|
662
|
-
const { current = 1, pageSize = defaultPageSize } = getPagination;
|
|
663
|
-
return ((current < 1 ? 1 : current) - 1) * pageSize + index + 1;
|
|
664
|
-
},
|
|
665
|
-
...isFixedLeft ? {
|
|
666
|
-
fixed: "left"
|
|
667
|
-
} : {},
|
|
668
|
-
...indexColumnProps
|
|
669
|
-
});
|
|
670
|
-
}
|
|
671
|
-
function handleActionColumn(propsRef, columns) {
|
|
672
|
-
const { appConf } = useAppStore();
|
|
673
|
-
const { getIsZH } = useHeader();
|
|
674
|
-
const { t } = useI18n("UI");
|
|
675
|
-
const defaultButtons = [
|
|
676
|
-
{
|
|
677
|
-
label: t("EDIT"),
|
|
678
|
-
icon: "mdi:text-box-edit-outline",
|
|
679
|
-
onClick: (row, index) => {
|
|
680
|
-
unref(propsRef).onOpenUpdateDialog(row, index, unref(propsRef).rowKey);
|
|
681
|
-
}
|
|
682
|
-
},
|
|
683
|
-
{
|
|
684
|
-
label: t("DELETE"),
|
|
685
|
-
icon: "mdi:delete-outline",
|
|
686
|
-
onClick: unref(propsRef).onDelete,
|
|
687
|
-
color: "#ed6f6f"
|
|
688
|
-
}
|
|
689
|
-
];
|
|
690
|
-
const { operations = defaultButtons, expandActions = false, authPrefix } = unref(propsRef);
|
|
691
|
-
if (!operations || isObject(operations) && operations?.btns && !operations?.btns?.length || isArray(operations) && !operations.length) {
|
|
692
|
-
return;
|
|
693
|
-
}
|
|
694
|
-
const hasIndex = columns.findIndex((column) => column.flag === ACTION_COLUMN);
|
|
695
|
-
if (hasIndex === -1) {
|
|
696
|
-
const column = isObject(operations) ? {
|
|
697
|
-
expand: appConf?.ui?.table?.expandActions,
|
|
698
|
-
btns: defaultButtons,
|
|
699
|
-
...operations
|
|
700
|
-
} : isArray(operations) ? { expand: appConf?.ui?.table?.expandActions, btns: operations } : {};
|
|
701
|
-
const expand = column.expand ? column.expand : expandActions;
|
|
702
|
-
const expandNum = (isObject(operations) ? operations.expandNum : appConf?.ui?.table?.expandNum) || null;
|
|
703
|
-
const allAuths = DtCache.getLocal(CacheKey.AUTHS);
|
|
704
|
-
const getAuth = (auth) => {
|
|
705
|
-
if (auth && auth.includes(":")) {
|
|
706
|
-
return auth;
|
|
707
|
-
} else if (authPrefix && auth) {
|
|
708
|
-
return `${authPrefix}:${auth}`;
|
|
709
|
-
}
|
|
710
|
-
return auth ?? null;
|
|
711
|
-
};
|
|
712
|
-
const getWidth = () => {
|
|
713
|
-
let w = 0;
|
|
714
|
-
if (expand) {
|
|
715
|
-
if (expandNum) {
|
|
716
|
-
let showMore = false;
|
|
717
|
-
column.btns.forEach((btn, index) => {
|
|
718
|
-
if (index < expandNum && (btn.auth && allAuths.includes(getAuth(btn.auth)) || !btn.auth)) {
|
|
719
|
-
w += (unref(getIsZH) ? btn.label.length : btn.enLabel.length) * 14 + 8;
|
|
720
|
-
} else if (btn.auth && allAuths.includes(getAuth(btn.auth)) || !btn.auth) {
|
|
721
|
-
showMore = true;
|
|
722
|
-
}
|
|
723
|
-
});
|
|
724
|
-
w += (showMore ? 36 : 0) + 30;
|
|
725
|
-
} else {
|
|
726
|
-
w = column.btns.length * 32 + 20;
|
|
727
|
-
}
|
|
728
|
-
} else {
|
|
729
|
-
w = unref(getIsZH) ? 70 : 90;
|
|
730
|
-
}
|
|
731
|
-
return w;
|
|
732
|
-
};
|
|
733
|
-
const columnObj = {
|
|
734
|
-
fixed: "right",
|
|
735
|
-
title: t("ACTIONS"),
|
|
736
|
-
align: "center",
|
|
737
|
-
expand,
|
|
738
|
-
width: `${getWidth()}px`,
|
|
739
|
-
...column,
|
|
740
|
-
flag: ACTION_COLUMN
|
|
741
|
-
};
|
|
742
|
-
columns.push({
|
|
743
|
-
...columnObj,
|
|
744
|
-
customRender: ({ record, index }) => {
|
|
745
|
-
return h(
|
|
746
|
-
_sfc_main$9,
|
|
747
|
-
omit(
|
|
748
|
-
{
|
|
749
|
-
...columnObj,
|
|
750
|
-
authPrefix,
|
|
751
|
-
record,
|
|
752
|
-
index
|
|
753
|
-
},
|
|
754
|
-
"align"
|
|
755
|
-
)
|
|
756
|
-
);
|
|
757
|
-
}
|
|
758
|
-
});
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
function sortFixedColumn(columns) {
|
|
762
|
-
const fixedLeftColumn = [];
|
|
763
|
-
const fixedRightColumn = [];
|
|
764
|
-
const defaultColumn = [];
|
|
765
|
-
for (const column of columns) {
|
|
766
|
-
if (column.defaultHidden) {
|
|
767
|
-
continue;
|
|
768
|
-
}
|
|
769
|
-
if (column.fixed === "left") {
|
|
770
|
-
fixedLeftColumn.push(column);
|
|
771
|
-
continue;
|
|
772
|
-
}
|
|
773
|
-
if (column.fixed === "right") {
|
|
774
|
-
fixedRightColumn.push(column);
|
|
775
|
-
continue;
|
|
776
|
-
}
|
|
777
|
-
defaultColumn.push(column);
|
|
778
|
-
}
|
|
779
|
-
return [...fixedLeftColumn, ...defaultColumn, ...fixedRightColumn];
|
|
780
|
-
}
|
|
781
|
-
function useColumns(propsRef, getPaginationRef, tableElRef) {
|
|
782
|
-
const columnsRef = ref(unref(propsRef).columns);
|
|
783
|
-
let cacheColumns = unref(propsRef).columns;
|
|
784
|
-
const { appConf } = useAppStore();
|
|
785
|
-
const getColumnsRef = computed(() => {
|
|
786
|
-
const columns = cloneDeep(unref(columnsRef));
|
|
787
|
-
const { ellipsis } = unref(propsRef);
|
|
788
|
-
columns.forEach((it) => {
|
|
789
|
-
it.class = it.class ?? "";
|
|
790
|
-
if (!it.class.split(" ").includes("__column")) {
|
|
791
|
-
it.class = `${it.class} __column`;
|
|
792
|
-
}
|
|
793
|
-
const { customRender, render } = it;
|
|
794
|
-
if (it.sorter && isBoolean(it.sorter) && appConf?.ui?.table?.multipleSorter) {
|
|
795
|
-
it.sorter = {
|
|
796
|
-
multiple: Number(it.sorter)
|
|
797
|
-
};
|
|
798
|
-
}
|
|
799
|
-
handleItem(
|
|
800
|
-
it,
|
|
801
|
-
Reflect.has(it, "ellipsis") ? !!it.ellipsis : !!ellipsis && !render && !customRender
|
|
802
|
-
);
|
|
803
|
-
});
|
|
804
|
-
handleIndexColumn(propsRef, getPaginationRef, columns);
|
|
805
|
-
handleActionColumn(propsRef, columns);
|
|
806
|
-
return columns;
|
|
807
|
-
});
|
|
808
|
-
const getViewColumns = computed(() => {
|
|
809
|
-
const viewColumns = sortFixedColumn(unref(getColumnsRef));
|
|
810
|
-
const columns = cloneDeep(viewColumns);
|
|
811
|
-
return columns.filter((column) => isIfShow(column)).map((column) => {
|
|
812
|
-
if (column.edit) {
|
|
813
|
-
column.customRender = renderEditCell(column);
|
|
814
|
-
}
|
|
815
|
-
return column;
|
|
816
|
-
});
|
|
817
|
-
});
|
|
818
|
-
function isIfShow(column) {
|
|
819
|
-
const ifShow = column.show;
|
|
820
|
-
return isBoolean(ifShow) ? ifShow : isFunction(ifShow) ? ifShow(column) : true;
|
|
821
|
-
}
|
|
822
|
-
function addResize() {
|
|
823
|
-
const { resizable, minWidth = 50, maxWidth = 700 } = unref(propsRef);
|
|
824
|
-
const els = unref(tableElRef)?.$el.querySelectorAll(".__column"), scrollBarW = 10;
|
|
825
|
-
let allWidth = 0, columnAllWidth = 0, noWidthNum = 0, avgWidth = 0;
|
|
826
|
-
for (let i = 0; i < els?.length; i++) {
|
|
827
|
-
allWidth += els[i].offsetWidth ?? 0;
|
|
828
|
-
}
|
|
829
|
-
columnsRef.value.forEach((it) => {
|
|
830
|
-
if (isIfShow(it)) {
|
|
831
|
-
if (it.width) {
|
|
832
|
-
columnAllWidth += parseInt(`${it.width}`);
|
|
833
|
-
} else {
|
|
834
|
-
noWidthNum++;
|
|
835
|
-
}
|
|
836
|
-
}
|
|
837
|
-
});
|
|
838
|
-
avgWidth = (allWidth - columnAllWidth - scrollBarW) / noWidthNum;
|
|
839
|
-
columnsRef.value.forEach((it) => {
|
|
840
|
-
it.width = it.width || Math.round(avgWidth);
|
|
841
|
-
if (Reflect.has(it, "resizable") ? !!it.resizable : resizable) {
|
|
842
|
-
it.resizable = true;
|
|
843
|
-
it.minWidth = it.minWidth || minWidth;
|
|
844
|
-
it.maxWidth = it.maxWidth || maxWidth;
|
|
845
|
-
}
|
|
846
|
-
});
|
|
847
|
-
}
|
|
848
|
-
function getColumns(opt) {
|
|
849
|
-
const { ignoreIndex, ignoreAction, sort } = opt || {};
|
|
850
|
-
let columns = toRaw$1(unref(getColumnsRef));
|
|
851
|
-
if (ignoreIndex) {
|
|
852
|
-
columns = columns.filter((it) => it.flag !== INDEX_FLAG);
|
|
853
|
-
}
|
|
854
|
-
if (ignoreAction) {
|
|
855
|
-
columns = columns.filter((it) => it.flag !== ACTION_COLUMN);
|
|
856
|
-
}
|
|
857
|
-
if (sort) {
|
|
858
|
-
columns = sortFixedColumn(columns);
|
|
859
|
-
}
|
|
860
|
-
return columns;
|
|
861
|
-
}
|
|
862
|
-
function setColumns(columnList = []) {
|
|
863
|
-
const columns = cloneDeep(columnList);
|
|
864
|
-
if (!isArray(columns) || !columns.length) {
|
|
865
|
-
columnsRef.value = [];
|
|
866
|
-
return;
|
|
867
|
-
}
|
|
868
|
-
const cacheKeys = cacheColumns.map((item) => item.dataIndex);
|
|
869
|
-
if (!isString(columns[0])) {
|
|
870
|
-
columnsRef.value = columns;
|
|
871
|
-
} else {
|
|
872
|
-
const columnKeys = columns;
|
|
873
|
-
const newColumns = [];
|
|
874
|
-
cacheColumns.forEach((it) => {
|
|
875
|
-
newColumns.push({
|
|
876
|
-
...it,
|
|
877
|
-
show: true,
|
|
878
|
-
defaultHidden: !columnKeys.includes(it.dataIndex || it.key)
|
|
879
|
-
});
|
|
880
|
-
});
|
|
881
|
-
if (!isEqual(cacheKeys, columns)) {
|
|
882
|
-
newColumns.sort((prev, next) => {
|
|
883
|
-
return columnKeys.indexOf(prev.dataIndex) - columnKeys.indexOf(next.dataIndex);
|
|
884
|
-
});
|
|
885
|
-
}
|
|
886
|
-
columnsRef.value = newColumns;
|
|
887
|
-
cacheColumns = [...newColumns];
|
|
888
|
-
}
|
|
889
|
-
}
|
|
890
|
-
function setColumnsByDataIndex(dataIndex, value) {
|
|
891
|
-
if (!dataIndex || !value) {
|
|
892
|
-
return;
|
|
893
|
-
}
|
|
894
|
-
cacheColumns.forEach((item) => {
|
|
895
|
-
if (item.dataIndex === dataIndex) {
|
|
896
|
-
Object.assign(item, value);
|
|
897
|
-
}
|
|
898
|
-
});
|
|
899
|
-
columnsRef.value = [...cacheColumns];
|
|
900
|
-
}
|
|
901
|
-
function getCacheColumns() {
|
|
902
|
-
return cacheColumns;
|
|
903
|
-
}
|
|
904
|
-
watch(
|
|
905
|
-
() => unref(propsRef).columns,
|
|
906
|
-
(columns) => {
|
|
907
|
-
columnsRef.value = columns;
|
|
908
|
-
cacheColumns = columns.filter((it) => !it.flag) ?? [];
|
|
909
|
-
nextTick(() => addResize());
|
|
910
|
-
}
|
|
911
|
-
);
|
|
912
|
-
return {
|
|
913
|
-
getViewColumns,
|
|
914
|
-
getColumnsRef,
|
|
915
|
-
getColumns,
|
|
916
|
-
setColumns,
|
|
917
|
-
setColumnsByDataIndex,
|
|
918
|
-
getCacheColumns
|
|
919
|
-
};
|
|
920
|
-
}
|
|
921
|
-
function useCustomRow(propsRef, { setSelectedRowKeys, getSelectedRowKeys, clearSelectedRowKeys, emits }) {
|
|
922
|
-
const customRow = (record, index) => {
|
|
923
|
-
return {
|
|
924
|
-
onClick: (e) => {
|
|
925
|
-
e?.stopPropagation();
|
|
926
|
-
function handleClick() {
|
|
927
|
-
const { rowSelection, rowKey, clickToSelectRow } = unref(propsRef);
|
|
928
|
-
if (!rowSelection) {
|
|
929
|
-
return;
|
|
930
|
-
}
|
|
931
|
-
const keys = getSelectedRowKeys();
|
|
932
|
-
const key = record[rowKey];
|
|
933
|
-
if (!key) {
|
|
934
|
-
return;
|
|
935
|
-
}
|
|
936
|
-
const isCheckbox = rowSelection.type === "checkbox";
|
|
937
|
-
const isRadio = rowSelection.type === "radio";
|
|
938
|
-
if (clickToSelectRow) {
|
|
939
|
-
if (isCheckbox) {
|
|
940
|
-
if (keys.includes(key)) {
|
|
941
|
-
setSelectedRowKeys(keys.filter((it) => it !== key));
|
|
942
|
-
} else {
|
|
943
|
-
setSelectedRowKeys([...keys, key]);
|
|
944
|
-
}
|
|
945
|
-
}
|
|
946
|
-
if (isRadio) {
|
|
947
|
-
setSelectedRowKeys([key]);
|
|
948
|
-
}
|
|
949
|
-
return;
|
|
950
|
-
}
|
|
951
|
-
if (isCheckbox) {
|
|
952
|
-
const td = e.composedPath?.().find((dom) => dom.tagName === "TD");
|
|
953
|
-
if (!td) {
|
|
954
|
-
return;
|
|
955
|
-
}
|
|
956
|
-
const checkBox = td.querySelector("input[type=checkbox]");
|
|
957
|
-
if (!checkBox || checkBox.hasAttribute("disabled")) {
|
|
958
|
-
return;
|
|
959
|
-
}
|
|
960
|
-
if (!keys.includes(key)) {
|
|
961
|
-
setSelectedRowKeys([...keys, key]);
|
|
962
|
-
return;
|
|
963
|
-
}
|
|
964
|
-
const keyIndex = keys.findIndex((item) => item === key);
|
|
965
|
-
keys.splice(keyIndex, 1);
|
|
966
|
-
setSelectedRowKeys(keys);
|
|
967
|
-
return;
|
|
968
|
-
}
|
|
969
|
-
if (isRadio) {
|
|
970
|
-
if (!keys.includes(key)) {
|
|
971
|
-
if (keys.length) {
|
|
972
|
-
clearSelectedRowKeys();
|
|
973
|
-
}
|
|
974
|
-
setSelectedRowKeys([key]);
|
|
975
|
-
return;
|
|
976
|
-
}
|
|
977
|
-
clearSelectedRowKeys();
|
|
978
|
-
}
|
|
979
|
-
}
|
|
980
|
-
handleClick();
|
|
981
|
-
emits("row-click", record, index, e);
|
|
982
|
-
},
|
|
983
|
-
onDblclick: (event) => {
|
|
984
|
-
emits("row-dbClick", record, index, event);
|
|
985
|
-
},
|
|
986
|
-
onContextmenu: (event) => {
|
|
987
|
-
emits("row-contextmenu", record, index, event);
|
|
988
|
-
},
|
|
989
|
-
onMouseenter: (event) => {
|
|
990
|
-
emits("row-mouseenter", record, index, event);
|
|
991
|
-
},
|
|
992
|
-
onMouseleave: (event) => {
|
|
993
|
-
emits("row-mouseleave", record, index, event);
|
|
994
|
-
}
|
|
995
|
-
};
|
|
996
|
-
};
|
|
997
|
-
return {
|
|
998
|
-
customRow
|
|
999
|
-
};
|
|
1000
|
-
}
|
|
1001
|
-
function useDataSource(propsRef, { getPaginationInfo, setPagination, clearSelectedRowKeys }) {
|
|
1002
|
-
const dataSourceRef = ref([]);
|
|
1003
|
-
watch(
|
|
1004
|
-
() => unref(propsRef).dataSource,
|
|
1005
|
-
(dataSource) => {
|
|
1006
|
-
dataSource && (dataSourceRef.value = dataSource);
|
|
1007
|
-
},
|
|
1008
|
-
{
|
|
1009
|
-
immediate: true
|
|
1010
|
-
}
|
|
1011
|
-
);
|
|
1012
|
-
const getDataSourceRef = computed(() => {
|
|
1013
|
-
return unref(dataSourceRef);
|
|
1014
|
-
});
|
|
1015
|
-
function handleTableChange(pagination, filters, sorter) {
|
|
1016
|
-
const { sortFn, filterFn, onTableChange: onTableChange2, clearSelectOnPageChange } = unref(propsRef);
|
|
1017
|
-
const { appConf: appConf2 } = useAppStore();
|
|
1018
|
-
const { current = 1, pageSize = appConf2.ui.table.defaultPageSize } = pagination;
|
|
1019
|
-
if (clearSelectOnPageChange) {
|
|
1020
|
-
clearSelectedRowKeys();
|
|
1021
|
-
}
|
|
1022
|
-
setPagination(pagination);
|
|
1023
|
-
const params = {};
|
|
1024
|
-
if (sorter && isFunction(sortFn)) {
|
|
1025
|
-
params.sortInfo = sortFn(sorter);
|
|
1026
|
-
}
|
|
1027
|
-
if (filters && isFunction(filterFn)) {
|
|
1028
|
-
params.filterInfo = filterFn(filters);
|
|
1029
|
-
}
|
|
1030
|
-
return onTableChange2({
|
|
1031
|
-
pagination: {
|
|
1032
|
-
current,
|
|
1033
|
-
pageSize
|
|
1034
|
-
},
|
|
1035
|
-
sort: sorter,
|
|
1036
|
-
filter: toRaw$1(unref(params.filterInfo)),
|
|
1037
|
-
showBtnLoading: false
|
|
1038
|
-
});
|
|
1039
|
-
}
|
|
1040
|
-
const { defSort, onTableChange } = unref(propsRef);
|
|
1041
|
-
const { appConf } = useAppStore();
|
|
1042
|
-
onTableChange(
|
|
1043
|
-
{
|
|
1044
|
-
pagination: {
|
|
1045
|
-
current: 1,
|
|
1046
|
-
pageSize: appConf.ui.table.defaultPageSize
|
|
1047
|
-
},
|
|
1048
|
-
sort: defSort,
|
|
1049
|
-
filter: null,
|
|
1050
|
-
showBtnLoading: false
|
|
1051
|
-
},
|
|
1052
|
-
false
|
|
1053
|
-
);
|
|
1054
|
-
function updateTableDataRecord(rowKey, record) {
|
|
1055
|
-
const row = findTableDataRecord(rowKey);
|
|
1056
|
-
if (row) {
|
|
1057
|
-
for (const field in record) {
|
|
1058
|
-
row[field] = record[field];
|
|
1059
|
-
}
|
|
1060
|
-
return row;
|
|
1061
|
-
}
|
|
1062
|
-
}
|
|
1063
|
-
function findTableDataRecord(rowKey) {
|
|
1064
|
-
if (!dataSourceRef.value || dataSourceRef.value.length == 0 || !rowKey) {
|
|
1065
|
-
return;
|
|
1066
|
-
}
|
|
1067
|
-
const { childrenColumnName = "children" } = unref(propsRef);
|
|
1068
|
-
const findRow = (array) => {
|
|
1069
|
-
let ret;
|
|
1070
|
-
array.some(function iter(r) {
|
|
1071
|
-
if (Reflect.has(r, unref(propsRef).rowKey) && r[unref(propsRef).rowKey] === rowKey) {
|
|
1072
|
-
ret = r;
|
|
1073
|
-
return true;
|
|
1074
|
-
}
|
|
1075
|
-
return r[childrenColumnName] && r[childrenColumnName].some(iter);
|
|
1076
|
-
});
|
|
1077
|
-
return ret;
|
|
1078
|
-
};
|
|
1079
|
-
return findRow(dataSourceRef.value);
|
|
1080
|
-
}
|
|
1081
|
-
return {
|
|
1082
|
-
getDataSourceRef,
|
|
1083
|
-
handleTableChange,
|
|
1084
|
-
updateTableDataRecord,
|
|
1085
|
-
findTableDataRecord
|
|
1086
|
-
};
|
|
1087
|
-
}
|
|
1088
|
-
const _hoisted_1$6 = { key: 0 };
|
|
1089
|
-
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
1090
|
-
__name: "Fullscreen",
|
|
1091
|
-
setup(__props) {
|
|
1092
|
-
const { t } = useI18n("UI");
|
|
1093
|
-
const table = getTableInstance();
|
|
1094
|
-
const wrapEl = ref(null);
|
|
1095
|
-
const { toggle, isFullscreen } = useFullscreen(wrapEl);
|
|
1096
|
-
watch(
|
|
1097
|
-
() => table.tableElRef.value,
|
|
1098
|
-
(v) => {
|
|
1099
|
-
const getParent = (el) => {
|
|
1100
|
-
if (!el || !el.parentNode)
|
|
1101
|
-
return null;
|
|
1102
|
-
if (el.parentNode.className?.indexOf("dt-layout-content") !== -1) {
|
|
1103
|
-
wrapEl.value = el.parentNode;
|
|
1104
|
-
} else {
|
|
1105
|
-
getParent(el.parentNode);
|
|
1106
|
-
}
|
|
1107
|
-
};
|
|
1108
|
-
getParent(v.$el);
|
|
1109
|
-
}
|
|
1110
|
-
);
|
|
1111
|
-
return (_ctx, _cache) => {
|
|
1112
|
-
const _component_ATooltip = Tooltip;
|
|
1113
|
-
return openBlock(), createBlock(_component_ATooltip, { placement: "top" }, {
|
|
1114
|
-
title: withCtx(() => [
|
|
1115
|
-
!unref(isFullscreen) ? (openBlock(), createElementBlock("span", _hoisted_1$6, toDisplayString(unref(t)("FULLSCREEN")), 1)) : createCommentVNode("", true)
|
|
1116
|
-
]),
|
|
1117
|
-
default: withCtx(() => [
|
|
1118
|
-
createElementVNode("span", {
|
|
1119
|
-
class: "flex",
|
|
1120
|
-
onClick: _cache[0] || (_cache[0] = (...args) => unref(toggle) && unref(toggle)(...args))
|
|
1121
|
-
}, [
|
|
1122
|
-
createElementVNode("i", {
|
|
1123
|
-
class: normalizeClass(["i w-7 leading-7 text-center cursor-pointer", unref(isFullscreen) ? "ic:baseline-fullscreen-exit" : "ic:baseline-fullscreen"])
|
|
1124
|
-
}, null, 2)
|
|
1125
|
-
])
|
|
1126
|
-
]),
|
|
1127
|
-
_: 1
|
|
1128
|
-
});
|
|
1129
|
-
};
|
|
1130
|
-
}
|
|
1131
|
-
});
|
|
1132
|
-
const _hoisted_1$5 = { class: "column-select" };
|
|
1133
|
-
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
1134
|
-
__name: "DownloadCtrl",
|
|
1135
|
-
setup(__props) {
|
|
1136
|
-
const { t } = useI18n("UI");
|
|
1137
|
-
const { message } = useMessage();
|
|
1138
|
-
const state = reactive({
|
|
1139
|
-
indeterminate: false,
|
|
1140
|
-
checkAll: false
|
|
1141
|
-
});
|
|
1142
|
-
const modalData = ref([]);
|
|
1143
|
-
const onCheckAllChange = (e) => {
|
|
1144
|
-
modalData.value?.map((it) => it.show = e.target.checked);
|
|
1145
|
-
};
|
|
1146
|
-
const [registerDialog, { closeModal }] = useModal(
|
|
1147
|
-
{
|
|
1148
|
-
width: "60%",
|
|
1149
|
-
title: t("SETTING_EXPORT_COLUMN")
|
|
1150
|
-
},
|
|
1151
|
-
(data) => {
|
|
1152
|
-
modalData.value = data;
|
|
1153
|
-
}
|
|
1154
|
-
);
|
|
1155
|
-
function save() {
|
|
1156
|
-
let columns = unref(modalData)?.filter((it) => it.show);
|
|
1157
|
-
if (!columns.length) {
|
|
1158
|
-
message.error(t("NO_EXPORT_COLUMN"));
|
|
1159
|
-
return;
|
|
1160
|
-
}
|
|
1161
|
-
closeModal(columns);
|
|
1162
|
-
}
|
|
1163
|
-
watch(
|
|
1164
|
-
() => unref(modalData),
|
|
1165
|
-
(v) => {
|
|
1166
|
-
if (isArray(v)) {
|
|
1167
|
-
let showLens = v.filter((it) => it.show).length;
|
|
1168
|
-
Object.assign(state, {
|
|
1169
|
-
checkAll: showLens === v.length,
|
|
1170
|
-
indeterminate: showLens !== v.length && showLens > 0
|
|
1171
|
-
});
|
|
1172
|
-
}
|
|
1173
|
-
},
|
|
1174
|
-
{
|
|
1175
|
-
deep: true
|
|
1176
|
-
}
|
|
1177
|
-
);
|
|
1178
|
-
return (_ctx, _cache) => {
|
|
1179
|
-
const _component_ACheckbox = Checkbox$1;
|
|
1180
|
-
const _component_ADivider = Divider;
|
|
1181
|
-
const _component_ACol = Col;
|
|
1182
|
-
const _component_ARow = Row;
|
|
1183
|
-
return openBlock(), createBlock(unref(DtModal), {
|
|
1184
|
-
onRegister: unref(registerDialog),
|
|
1185
|
-
onSave: save
|
|
1186
|
-
}, {
|
|
1187
|
-
default: withCtx(() => [
|
|
1188
|
-
createElementVNode("div", _hoisted_1$5, [
|
|
1189
|
-
createVNode(_component_ACheckbox, {
|
|
1190
|
-
checked: state.checkAll,
|
|
1191
|
-
"onUpdate:checked": _cache[0] || (_cache[0] = ($event) => state.checkAll = $event),
|
|
1192
|
-
indeterminate: state.indeterminate,
|
|
1193
|
-
onChange: onCheckAllChange
|
|
1194
|
-
}, {
|
|
1195
|
-
default: withCtx(() => [
|
|
1196
|
-
createTextVNode(toDisplayString(unref(t)("SELECT_ALL")), 1)
|
|
1197
|
-
]),
|
|
1198
|
-
_: 1
|
|
1199
|
-
}, 8, ["checked", "indeterminate"]),
|
|
1200
|
-
createVNode(_component_ADivider, { dashed: "" }),
|
|
1201
|
-
createVNode(_component_ARow, null, {
|
|
1202
|
-
default: withCtx(() => [
|
|
1203
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(modalData.value, (it, index) => {
|
|
1204
|
-
return openBlock(), createBlock(_component_ACol, { span: 8 }, {
|
|
1205
|
-
default: withCtx(() => [
|
|
1206
|
-
createVNode(_component_ACheckbox, {
|
|
1207
|
-
checked: it.show,
|
|
1208
|
-
"onUpdate:checked": ($event) => it.show = $event
|
|
1209
|
-
}, {
|
|
1210
|
-
default: withCtx(() => [
|
|
1211
|
-
createTextVNode(toDisplayString(it.title), 1)
|
|
1212
|
-
]),
|
|
1213
|
-
_: 2
|
|
1214
|
-
}, 1032, ["checked", "onUpdate:checked"])
|
|
1215
|
-
]),
|
|
1216
|
-
_: 2
|
|
1217
|
-
}, 1024);
|
|
1218
|
-
}), 256))
|
|
1219
|
-
]),
|
|
1220
|
-
_: 1
|
|
1221
|
-
})
|
|
1222
|
-
])
|
|
1223
|
-
]),
|
|
1224
|
-
_: 1
|
|
1225
|
-
}, 8, ["onRegister"]);
|
|
1226
|
-
};
|
|
1227
|
-
}
|
|
1228
|
-
});
|
|
1229
|
-
const _hoisted_1$4 = /* @__PURE__ */ createElementVNode("span", { class: "flex" }, [
|
|
1230
|
-
/* @__PURE__ */ createElementVNode("i", { class: "i ic:baseline-download w-7 leading-7 text-center cursor-pointer" })
|
|
1231
|
-
], -1);
|
|
1232
|
-
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
1233
|
-
__name: "Download",
|
|
1234
|
-
props: {
|
|
1235
|
-
download: {
|
|
1236
|
-
type: [Boolean, Object]
|
|
1237
|
-
}
|
|
1238
|
-
},
|
|
1239
|
-
setup(__props) {
|
|
1240
|
-
const props2 = __props;
|
|
1241
|
-
const table = getTableInstance();
|
|
1242
|
-
const [registerDialog, { openModal }] = useModalOut();
|
|
1243
|
-
const { appConf } = useAppStore();
|
|
1244
|
-
const getPopupContainer$1 = () => document.getElementById("dt-layout-content") || getPopupContainer();
|
|
1245
|
-
const { t } = useI18n("UI");
|
|
1246
|
-
const isInclude = (type) => {
|
|
1247
|
-
return isBoolean(props2.download) && props2.download && appConf?.ui?.table?.exportTable.includes(type) || isArray(props2.download) && props2.download.includes(type);
|
|
1248
|
-
};
|
|
1249
|
-
const showCurrentDownload = computed(() => isInclude("current"));
|
|
1250
|
-
const showSelectedDownload = computed(() => isInclude("select"));
|
|
1251
|
-
const showBackDownload = computed(() => isInclude("all"));
|
|
1252
|
-
function handleTitleClick({ key }) {
|
|
1253
|
-
const { onDownload, columns: allColumns, dataSource } = unref(table.getBind);
|
|
1254
|
-
const excludesFlag = ["ACTION", "CHECKBOX", "RADIO"];
|
|
1255
|
-
const columns = allColumns.filter((it) => !excludesFlag.includes(it.flag));
|
|
1256
|
-
openModal(columns, (selectColumns) => {
|
|
1257
|
-
onDownload({
|
|
1258
|
-
type: key,
|
|
1259
|
-
columns: selectColumns,
|
|
1260
|
-
rows: key === "select" ? table.getSelectRows() : key === "current" ? dataSource : []
|
|
1261
|
-
});
|
|
1262
|
-
});
|
|
1263
|
-
}
|
|
1264
|
-
return (_ctx, _cache) => {
|
|
1265
|
-
const _component_AMenuItem = MenuItem;
|
|
1266
|
-
const _component_AMenu = Menu;
|
|
1267
|
-
const _component_ADropdown = Dropdown;
|
|
1268
|
-
const _component_ATooltip = Tooltip;
|
|
1269
|
-
return openBlock(), createBlock(_component_ATooltip, { placement: "top" }, {
|
|
1270
|
-
title: withCtx(() => [
|
|
1271
|
-
createElementVNode("span", null, toDisplayString(unref(t)("EXPORT")), 1)
|
|
1272
|
-
]),
|
|
1273
|
-
default: withCtx(() => [
|
|
1274
|
-
createVNode(_component_ADropdown, {
|
|
1275
|
-
placement: "bottom",
|
|
1276
|
-
trigger: ["click"],
|
|
1277
|
-
getPopupContainer: getPopupContainer$1
|
|
1278
|
-
}, {
|
|
1279
|
-
overlay: withCtx(() => [
|
|
1280
|
-
createVNode(_component_AMenu, { onClick: handleTitleClick }, {
|
|
1281
|
-
default: withCtx(() => [
|
|
1282
|
-
unref(showCurrentDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "current" }, {
|
|
1283
|
-
default: withCtx(() => [
|
|
1284
|
-
createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_CURRENT_PAGE")), 1)
|
|
1285
|
-
]),
|
|
1286
|
-
_: 1
|
|
1287
|
-
})) : createCommentVNode("", true),
|
|
1288
|
-
unref(showSelectedDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "select" }, {
|
|
1289
|
-
default: withCtx(() => [
|
|
1290
|
-
createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_SELECT_COLUMN")), 1)
|
|
1291
|
-
]),
|
|
1292
|
-
_: 1
|
|
1293
|
-
})) : createCommentVNode("", true),
|
|
1294
|
-
unref(showBackDownload) ? (openBlock(), createBlock(_component_AMenuItem, { key: "all" }, {
|
|
1295
|
-
default: withCtx(() => [
|
|
1296
|
-
createElementVNode("span", null, toDisplayString(unref(t)("EXPORT_ALL")), 1)
|
|
1297
|
-
]),
|
|
1298
|
-
_: 1
|
|
1299
|
-
})) : createCommentVNode("", true)
|
|
1300
|
-
]),
|
|
1301
|
-
_: 1
|
|
1302
|
-
})
|
|
1303
|
-
]),
|
|
1304
|
-
default: withCtx(() => [
|
|
1305
|
-
_hoisted_1$4
|
|
1306
|
-
]),
|
|
1307
|
-
_: 1
|
|
1308
|
-
}),
|
|
1309
|
-
createVNode(_sfc_main$6, { onRegister: unref(registerDialog) }, null, 8, ["onRegister"])
|
|
1310
|
-
]),
|
|
1311
|
-
_: 1
|
|
1312
|
-
});
|
|
1313
|
-
};
|
|
1314
|
-
}
|
|
1315
|
-
});
|
|
1316
|
-
const _hoisted_1$3 = /* @__PURE__ */ createElementVNode("i", { class: "i ant-design:drag-outlined drag-icon cursor-pointer" }, null, -1);
|
|
1317
|
-
const _hoisted_2$2 = ["onClick"];
|
|
1318
|
-
const _hoisted_3$1 = ["onClick"];
|
|
1319
|
-
const _hoisted_4$1 = /* @__PURE__ */ createElementVNode("i", { class: "i ant-design:setting-outlined w-7 leading-7 text-center cursor-pointer" }, null, -1);
|
|
1320
|
-
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
1321
|
-
__name: "Column",
|
|
1322
|
-
emits: [
|
|
1323
|
-
"columns-change"
|
|
1324
|
-
],
|
|
1325
|
-
setup(__props, { emit: emits }) {
|
|
1326
|
-
const { t } = useI18n("UI");
|
|
1327
|
-
const attrs = useAttrs();
|
|
1328
|
-
const prefixCls = "column-setting";
|
|
1329
|
-
const table = getTableInstance();
|
|
1330
|
-
const defaultRowSelection = omit(table.getRowSelection(), "selectedRowKeys");
|
|
1331
|
-
let inited = false;
|
|
1332
|
-
const cachePlainOptions = ref([]);
|
|
1333
|
-
const plainOptions = ref([]);
|
|
1334
|
-
const plainSortOptions = ref([]);
|
|
1335
|
-
const columnListRef = ref(null);
|
|
1336
|
-
const checkIndex = ref(false);
|
|
1337
|
-
const checkSelect = ref(false);
|
|
1338
|
-
const getValues = computed(() => {
|
|
1339
|
-
return unref(table?.getBind);
|
|
1340
|
-
});
|
|
1341
|
-
let sortable;
|
|
1342
|
-
let sortableOrder = [];
|
|
1343
|
-
const state = reactive({
|
|
1344
|
-
checkAll: true,
|
|
1345
|
-
checkedList: [],
|
|
1346
|
-
defaultCheckList: []
|
|
1347
|
-
});
|
|
1348
|
-
const indeterminate = computed(() => {
|
|
1349
|
-
let len = plainOptions.value.length;
|
|
1350
|
-
let checkedLen = state.checkedList.length;
|
|
1351
|
-
unref(checkIndex) && checkedLen--;
|
|
1352
|
-
return checkedLen > 0 && checkedLen < len;
|
|
1353
|
-
});
|
|
1354
|
-
watchEffect(() => {
|
|
1355
|
-
const columns = table.getColumns();
|
|
1356
|
-
if (columns && columns.length) {
|
|
1357
|
-
init();
|
|
1358
|
-
}
|
|
1359
|
-
});
|
|
1360
|
-
watchEffect(() => {
|
|
1361
|
-
const values = unref(getValues);
|
|
1362
|
-
checkIndex.value = !!values.showIndexColumn;
|
|
1363
|
-
checkSelect.value = !!values.rowSelection;
|
|
1364
|
-
});
|
|
1365
|
-
function handleVisibleChange() {
|
|
1366
|
-
if (inited)
|
|
1367
|
-
return;
|
|
1368
|
-
nextTick(() => {
|
|
1369
|
-
const columnListEl = unref(columnListRef);
|
|
1370
|
-
if (!columnListEl)
|
|
1371
|
-
return;
|
|
1372
|
-
const el = columnListEl.$el;
|
|
1373
|
-
if (!el)
|
|
1374
|
-
return;
|
|
1375
|
-
sortable = Sortablejs.create(unref(el), {
|
|
1376
|
-
animation: 500,
|
|
1377
|
-
delay: 400,
|
|
1378
|
-
delayOnTouchOnly: true,
|
|
1379
|
-
handle: ".drag-icon ",
|
|
1380
|
-
onEnd: (evt) => {
|
|
1381
|
-
const { oldIndex, newIndex } = evt;
|
|
1382
|
-
if (isNullAndUnDef(oldIndex) || isNullAndUnDef(newIndex) || oldIndex === newIndex) {
|
|
1383
|
-
return;
|
|
1384
|
-
}
|
|
1385
|
-
const columns = cloneDeep(plainSortOptions.value);
|
|
1386
|
-
if (oldIndex > newIndex) {
|
|
1387
|
-
columns.splice(newIndex, 0, columns[oldIndex]);
|
|
1388
|
-
columns.splice(oldIndex + 1, 1);
|
|
1389
|
-
} else {
|
|
1390
|
-
columns.splice(newIndex + 1, 0, columns[oldIndex]);
|
|
1391
|
-
columns.splice(oldIndex, 1);
|
|
1392
|
-
}
|
|
1393
|
-
plainSortOptions.value = columns;
|
|
1394
|
-
setColumns(
|
|
1395
|
-
columns.map((col) => col.value).filter((value) => state.checkedList.includes(value))
|
|
1396
|
-
);
|
|
1397
|
-
}
|
|
1398
|
-
});
|
|
1399
|
-
sortableOrder = sortable.toArray();
|
|
1400
|
-
inited = true;
|
|
1401
|
-
});
|
|
1402
|
-
}
|
|
1403
|
-
function onCheckAllChange(e) {
|
|
1404
|
-
const checkList = plainOptions.value.map((item) => item.value);
|
|
1405
|
-
if (e.target.checked) {
|
|
1406
|
-
state.checkedList = checkList;
|
|
1407
|
-
setColumns(checkList);
|
|
1408
|
-
} else {
|
|
1409
|
-
state.checkedList = [];
|
|
1410
|
-
setColumns([]);
|
|
1411
|
-
}
|
|
1412
|
-
}
|
|
1413
|
-
function handleIndexCheckChange(e) {
|
|
1414
|
-
table.setProps({
|
|
1415
|
-
showIndexColumn: e.target.checked
|
|
1416
|
-
});
|
|
1417
|
-
}
|
|
1418
|
-
function handleSelectCheckChange(e) {
|
|
1419
|
-
table.setProps({
|
|
1420
|
-
rowSelection: e.target.checked ? defaultRowSelection : null
|
|
1421
|
-
});
|
|
1422
|
-
}
|
|
1423
|
-
function onChange(checkedList) {
|
|
1424
|
-
const len = plainSortOptions.value.length;
|
|
1425
|
-
state.checkAll = checkedList.length === len;
|
|
1426
|
-
const sortList = unref(plainSortOptions).map((item) => item.value);
|
|
1427
|
-
checkedList.sort((prev, next) => {
|
|
1428
|
-
return sortList.indexOf(prev) - sortList.indexOf(next);
|
|
1429
|
-
});
|
|
1430
|
-
setColumns(checkedList);
|
|
1431
|
-
}
|
|
1432
|
-
function reset() {
|
|
1433
|
-
state.checkedList = [...state.defaultCheckList];
|
|
1434
|
-
state.checkAll = true;
|
|
1435
|
-
plainOptions.value = unref(cachePlainOptions);
|
|
1436
|
-
plainSortOptions.value = unref(cachePlainOptions);
|
|
1437
|
-
setColumns(table.getCacheColumns());
|
|
1438
|
-
sortable.sort(sortableOrder);
|
|
1439
|
-
}
|
|
1440
|
-
function getColumns() {
|
|
1441
|
-
return table.getColumns({
|
|
1442
|
-
ignoreIndex: true,
|
|
1443
|
-
ignoreAction: true
|
|
1444
|
-
}).reduce((ret, it) => {
|
|
1445
|
-
ret.push({
|
|
1446
|
-
label: it.title,
|
|
1447
|
-
value: it.dataIndex || it.title,
|
|
1448
|
-
...it
|
|
1449
|
-
});
|
|
1450
|
-
return ret;
|
|
1451
|
-
}, []);
|
|
1452
|
-
}
|
|
1453
|
-
function handleColumnFixed(item, fixed) {
|
|
1454
|
-
if (!state.checkedList.includes(item.dataIndex))
|
|
1455
|
-
return;
|
|
1456
|
-
const columns = getColumns();
|
|
1457
|
-
const isFixed = item.fixed === fixed ? false : fixed;
|
|
1458
|
-
const index = columns.findIndex((col) => col.dataIndex === item.dataIndex);
|
|
1459
|
-
if (index !== -1) {
|
|
1460
|
-
columns[index].fixed = isFixed;
|
|
1461
|
-
}
|
|
1462
|
-
item.fixed = isFixed;
|
|
1463
|
-
if (isFixed && !item.width) {
|
|
1464
|
-
item.width = 100;
|
|
1465
|
-
}
|
|
1466
|
-
table.setColumnsByDataIndex?.(item.dataIndex, { fixed: isFixed });
|
|
1467
|
-
setColumns(columns);
|
|
1468
|
-
}
|
|
1469
|
-
function setColumns(columns) {
|
|
1470
|
-
table.setColumns(columns);
|
|
1471
|
-
const data = unref(plainSortOptions).map((col) => {
|
|
1472
|
-
const visable = columns.findIndex(
|
|
1473
|
-
(c) => c === col.value || typeof c !== "string" && c.dataIndex === col.value
|
|
1474
|
-
) !== -1;
|
|
1475
|
-
return { dataIndex: col.value, fixed: col.fixed, visable };
|
|
1476
|
-
});
|
|
1477
|
-
emits("columns-change", data);
|
|
1478
|
-
}
|
|
1479
|
-
function init() {
|
|
1480
|
-
const columns = getColumns();
|
|
1481
|
-
const checkList = table.getColumns({ ignoreAction: true }).map((it) => it.defaultHidden ? "" : it.dataIndex || it.title).filter(Boolean);
|
|
1482
|
-
if (!plainOptions.value.length) {
|
|
1483
|
-
plainOptions.value = columns;
|
|
1484
|
-
plainSortOptions.value = columns;
|
|
1485
|
-
cachePlainOptions.value = cloneDeep(columns);
|
|
1486
|
-
state.defaultCheckList = checkList;
|
|
1487
|
-
} else {
|
|
1488
|
-
unref(plainOptions).forEach(
|
|
1489
|
-
(it) => it.fixed === columns.find((col) => col.dataIndex === it.dataIndex)?.fixed
|
|
1490
|
-
);
|
|
1491
|
-
}
|
|
1492
|
-
state.isInit = true;
|
|
1493
|
-
state.checkedList = checkList;
|
|
1494
|
-
}
|
|
1495
|
-
function getPopupContainer$1() {
|
|
1496
|
-
return isFunction(attrs.getPopupContainer) ? attrs.getPopupContainer() : document.getElementById("dt-layout-content") || getPopupContainer();
|
|
1497
|
-
}
|
|
1498
|
-
return (_ctx, _cache) => {
|
|
1499
|
-
const _component_ACheckbox = Checkbox$1;
|
|
1500
|
-
const _component_AButton = Button;
|
|
1501
|
-
const _component_ATooltip = Tooltip;
|
|
1502
|
-
const _component_ADivider = Divider;
|
|
1503
|
-
const _component_ACheckboxGroup = CheckboxGroup;
|
|
1504
|
-
const _component_APopover = Popover$1;
|
|
1505
|
-
return openBlock(), createBlock(_component_ATooltip, { placement: "top" }, {
|
|
1506
|
-
title: withCtx(() => [
|
|
1507
|
-
createElementVNode("span", null, toDisplayString(unref(t)("COLUMN_CONTROL")), 1)
|
|
1508
|
-
]),
|
|
1509
|
-
default: withCtx(() => [
|
|
1510
|
-
createVNode(_component_APopover, {
|
|
1511
|
-
placement: "bottomLeft",
|
|
1512
|
-
trigger: "click",
|
|
1513
|
-
overlayClassName: `${prefixCls}__cloumn-list`,
|
|
1514
|
-
onVisibleChange: handleVisibleChange,
|
|
1515
|
-
getPopupContainer: getPopupContainer$1
|
|
1516
|
-
}, {
|
|
1517
|
-
title: withCtx(() => [
|
|
1518
|
-
createElementVNode("div", {
|
|
1519
|
-
class: normalizeClass(`${prefixCls}__popover-title flex`)
|
|
1520
|
-
}, [
|
|
1521
|
-
createVNode(_component_ACheckbox, {
|
|
1522
|
-
indeterminate: unref(indeterminate),
|
|
1523
|
-
checked: state.checkAll,
|
|
1524
|
-
"onUpdate:checked": _cache[0] || (_cache[0] = ($event) => state.checkAll = $event),
|
|
1525
|
-
onChange: onCheckAllChange
|
|
1526
|
-
}, {
|
|
1527
|
-
default: withCtx(() => [
|
|
1528
|
-
createTextVNode(toDisplayString(unref(t)("COLUMN_SHOW")), 1)
|
|
1529
|
-
]),
|
|
1530
|
-
_: 1
|
|
1531
|
-
}, 8, ["indeterminate", "checked"]),
|
|
1532
|
-
createVNode(_component_ACheckbox, {
|
|
1533
|
-
checked: checkIndex.value,
|
|
1534
|
-
"onUpdate:checked": _cache[1] || (_cache[1] = ($event) => checkIndex.value = $event),
|
|
1535
|
-
onChange: handleIndexCheckChange
|
|
1536
|
-
}, {
|
|
1537
|
-
default: withCtx(() => [
|
|
1538
|
-
createTextVNode(toDisplayString(unref(t)("INDEX")), 1)
|
|
1539
|
-
]),
|
|
1540
|
-
_: 1
|
|
1541
|
-
}, 8, ["checked"]),
|
|
1542
|
-
createVNode(_component_ACheckbox, {
|
|
1543
|
-
checked: checkSelect.value,
|
|
1544
|
-
"onUpdate:checked": _cache[2] || (_cache[2] = ($event) => checkSelect.value = $event),
|
|
1545
|
-
onChange: handleSelectCheckChange,
|
|
1546
|
-
disabled: !unref(defaultRowSelection)
|
|
1547
|
-
}, {
|
|
1548
|
-
default: withCtx(() => [
|
|
1549
|
-
createTextVNode(toDisplayString(unref(t)("CHECKBOX")), 1)
|
|
1550
|
-
]),
|
|
1551
|
-
_: 1
|
|
1552
|
-
}, 8, ["checked", "disabled"]),
|
|
1553
|
-
createVNode(_component_AButton, {
|
|
1554
|
-
type: "link",
|
|
1555
|
-
onClick: reset
|
|
1556
|
-
}, {
|
|
1557
|
-
default: withCtx(() => [
|
|
1558
|
-
createTextVNode(toDisplayString(unref(t)("RESET")), 1)
|
|
1559
|
-
]),
|
|
1560
|
-
_: 1
|
|
1561
|
-
})
|
|
1562
|
-
], 2)
|
|
1563
|
-
]),
|
|
1564
|
-
content: withCtx(() => [
|
|
1565
|
-
createVNode(_component_ACheckboxGroup, {
|
|
1566
|
-
value: state.checkedList,
|
|
1567
|
-
"onUpdate:value": _cache[3] || (_cache[3] = ($event) => state.checkedList = $event),
|
|
1568
|
-
onChange,
|
|
1569
|
-
ref_key: "columnListRef",
|
|
1570
|
-
ref: columnListRef
|
|
1571
|
-
}, {
|
|
1572
|
-
default: withCtx(() => [
|
|
1573
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(plainOptions.value, (item) => {
|
|
1574
|
-
return openBlock(), createElementBlock("div", {
|
|
1575
|
-
key: item.value,
|
|
1576
|
-
class: normalizeClass(`${prefixCls}__check-item flex pt-1 pr-4 pb-2 items-center`)
|
|
1577
|
-
}, [
|
|
1578
|
-
_hoisted_1$3,
|
|
1579
|
-
createVNode(_component_ACheckbox, {
|
|
1580
|
-
value: item.value
|
|
1581
|
-
}, {
|
|
1582
|
-
default: withCtx(() => [
|
|
1583
|
-
createTextVNode(toDisplayString(item.label), 1)
|
|
1584
|
-
]),
|
|
1585
|
-
_: 2
|
|
1586
|
-
}, 1032, ["value"]),
|
|
1587
|
-
createVNode(_component_ATooltip, {
|
|
1588
|
-
placement: "bottomLeft",
|
|
1589
|
-
mouseLeaveDelay: 0.4,
|
|
1590
|
-
getPopupContainer: getPopupContainer$1
|
|
1591
|
-
}, {
|
|
1592
|
-
title: withCtx(() => [
|
|
1593
|
-
createTextVNode(toDisplayString(unref(t)("FIXED_TO_LEFT")), 1)
|
|
1594
|
-
]),
|
|
1595
|
-
default: withCtx(() => [
|
|
1596
|
-
createElementVNode("span", {
|
|
1597
|
-
class: normalizeClass({
|
|
1598
|
-
disabled: !state.checkedList.includes(item.value),
|
|
1599
|
-
active: item.fixed === "left"
|
|
1600
|
-
})
|
|
1601
|
-
}, [
|
|
1602
|
-
createElementVNode("i", {
|
|
1603
|
-
class: normalizeClass(["i mdi:arrow-collapse-left cursor-pointer", `${prefixCls}__fixed-left`]),
|
|
1604
|
-
onClick: ($event) => handleColumnFixed(item, "left")
|
|
1605
|
-
}, null, 10, _hoisted_2$2)
|
|
1606
|
-
], 2)
|
|
1607
|
-
]),
|
|
1608
|
-
_: 2
|
|
1609
|
-
}, 1032, ["mouseLeaveDelay"]),
|
|
1610
|
-
createVNode(_component_ADivider, { type: "vertical" }),
|
|
1611
|
-
createVNode(_component_ATooltip, {
|
|
1612
|
-
placement: "bottomLeft",
|
|
1613
|
-
mouseLeaveDelay: 0.4,
|
|
1614
|
-
getPopupContainer: getPopupContainer$1
|
|
1615
|
-
}, {
|
|
1616
|
-
title: withCtx(() => [
|
|
1617
|
-
createTextVNode(toDisplayString(unref(t)("FIXED_TO_RIGHT")), 1)
|
|
1618
|
-
]),
|
|
1619
|
-
default: withCtx(() => [
|
|
1620
|
-
createElementVNode("span", {
|
|
1621
|
-
class: normalizeClass({
|
|
1622
|
-
disabled: !state.checkedList.includes(item.value),
|
|
1623
|
-
active: item.fixed === "right"
|
|
1624
|
-
})
|
|
1625
|
-
}, [
|
|
1626
|
-
createElementVNode("i", {
|
|
1627
|
-
class: normalizeClass(["i mdi:arrow-collapse-right cursor-pointer", `${prefixCls}__fixed-right`]),
|
|
1628
|
-
onClick: ($event) => handleColumnFixed(item, "right")
|
|
1629
|
-
}, null, 10, _hoisted_3$1)
|
|
1630
|
-
], 2)
|
|
1631
|
-
]),
|
|
1632
|
-
_: 2
|
|
1633
|
-
}, 1032, ["mouseLeaveDelay"])
|
|
1634
|
-
], 2);
|
|
1635
|
-
}), 128))
|
|
1636
|
-
]),
|
|
1637
|
-
_: 1
|
|
1638
|
-
}, 8, ["value"])
|
|
1639
|
-
]),
|
|
1640
|
-
default: withCtx(() => [
|
|
1641
|
-
_hoisted_4$1
|
|
1642
|
-
]),
|
|
1643
|
-
_: 1
|
|
1644
|
-
}, 8, ["overlayClassName"])
|
|
1645
|
-
]),
|
|
1646
|
-
_: 1
|
|
1647
|
-
});
|
|
1648
|
-
};
|
|
1649
|
-
}
|
|
1650
|
-
});
|
|
1651
|
-
const _hoisted_1$2 = { class: "flex dt-table-setting" };
|
|
1652
|
-
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
1653
|
-
__name: "index",
|
|
1654
|
-
props: {
|
|
1655
|
-
setting: {
|
|
1656
|
-
type: Object,
|
|
1657
|
-
default: () => ({})
|
|
1658
|
-
}
|
|
1659
|
-
},
|
|
1660
|
-
emits: ["columns-change"],
|
|
1661
|
-
setup(__props, { emit: emits }) {
|
|
1662
|
-
const props2 = __props;
|
|
1663
|
-
const getSetting = computed(() => {
|
|
1664
|
-
return {
|
|
1665
|
-
download: true,
|
|
1666
|
-
setting: true,
|
|
1667
|
-
fullscreen: true,
|
|
1668
|
-
...props2.setting
|
|
1669
|
-
};
|
|
1670
|
-
});
|
|
1671
|
-
function handleColumnChange(data) {
|
|
1672
|
-
emits("columns-change", data);
|
|
1673
|
-
}
|
|
1674
|
-
return (_ctx, _cache) => {
|
|
1675
|
-
return openBlock(), createElementBlock("div", _hoisted_1$2, [
|
|
1676
|
-
unref(getSetting).download ? (openBlock(), createBlock(_sfc_main$5, normalizeProps(mergeProps({ key: 0 }, unref(getSetting))), null, 16)) : createCommentVNode("", true),
|
|
1677
|
-
unref(getSetting).setting ? (openBlock(), createBlock(_sfc_main$4, {
|
|
1678
|
-
key: 1,
|
|
1679
|
-
onColumnsChange: handleColumnChange
|
|
1680
|
-
})) : createCommentVNode("", true),
|
|
1681
|
-
unref(getSetting).fullscreen ? (openBlock(), createBlock(_sfc_main$7, { key: 2 })) : createCommentVNode("", true)
|
|
1682
|
-
]);
|
|
1683
|
-
};
|
|
1684
|
-
}
|
|
1685
|
-
});
|
|
1686
|
-
const _hoisted_1$1 = { class: "dt-table-header" };
|
|
1687
|
-
const _hoisted_2$1 = { class: "flex flex-row justify-between" };
|
|
1688
|
-
const _hoisted_3 = { class: "flex flex-row flex-1" };
|
|
1689
|
-
const _hoisted_4 = { key: 0 };
|
|
1690
|
-
const _hoisted_5 = {
|
|
1691
|
-
key: 0,
|
|
1692
|
-
class: "border dt-table-header-top text-12 bg-gray-100 mt-1 py-1 px-3 border-dashed"
|
|
1693
|
-
};
|
|
1694
|
-
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
1695
|
-
__name: "TableHeader",
|
|
1696
|
-
props: {
|
|
1697
|
-
tableSetting: {
|
|
1698
|
-
type: [Object, Boolean]
|
|
1699
|
-
},
|
|
1700
|
-
toolbar: {
|
|
1701
|
-
type: Array,
|
|
1702
|
-
default: () => []
|
|
1703
|
-
},
|
|
1704
|
-
authPrefix: {
|
|
1705
|
-
type: String
|
|
1706
|
-
}
|
|
1707
|
-
},
|
|
1708
|
-
setup(__props) {
|
|
1709
|
-
const props2 = __props;
|
|
1710
|
-
const getActionsProps = {
|
|
1711
|
-
mode: "dialog",
|
|
1712
|
-
showAdvancedButton: false,
|
|
1713
|
-
show: true,
|
|
1714
|
-
buttonList: props2.toolbar,
|
|
1715
|
-
authPrefix: props2.authPrefix
|
|
1716
|
-
};
|
|
1717
|
-
return (_ctx, _cache) => {
|
|
1718
|
-
return openBlock(), createElementBlock("div", _hoisted_1$1, [
|
|
1719
|
-
createElementVNode("div", _hoisted_2$1, [
|
|
1720
|
-
createElementVNode("div", _hoisted_3, [
|
|
1721
|
-
unref(getActionsProps)?.buttonList.length ? (openBlock(), createBlock(unref(DtFormButtons), normalizeProps(mergeProps({ key: 0 }, unref(getActionsProps))), null, 16)) : createCommentVNode("", true),
|
|
1722
|
-
renderSlot(_ctx.$slots, "toolbar")
|
|
1723
|
-
]),
|
|
1724
|
-
__props.tableSetting ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
1725
|
-
createVNode(_sfc_main$3, { setting: __props.tableSetting }, null, 8, ["setting"])
|
|
1726
|
-
])) : createCommentVNode("", true)
|
|
1727
|
-
]),
|
|
1728
|
-
_ctx.$slots.headerTop ? (openBlock(), createElementBlock("div", _hoisted_5, [
|
|
1729
|
-
renderSlot(_ctx.$slots, "headerTop")
|
|
1730
|
-
])) : createCommentVNode("", true)
|
|
1731
|
-
]);
|
|
1732
|
-
};
|
|
1733
|
-
}
|
|
1734
|
-
});
|
|
1735
|
-
function useTableHeader(propsRef, slots, handlers) {
|
|
1736
|
-
const { t } = useI18n("UI");
|
|
1737
|
-
const getHeaderProps = computed(() => {
|
|
1738
|
-
const TABLE_TOOLS = [
|
|
1739
|
-
{ t: "\u65B0\u589E", label: t("ADD"), preIcon: "mdi:plus", type: "primary", auth: "add", onClick: unref(propsRef).onOPenAddDialog },
|
|
1740
|
-
{ t: "\u5220\u9664", label: t("DELETE"), preIcon: "mdi:delete-outline", auth: "delete", onClick: unref(propsRef).onDeletes }
|
|
1741
|
-
];
|
|
1742
|
-
const { tableSetting, toolbar = TABLE_TOOLS, authPrefix } = unref(propsRef);
|
|
1743
|
-
const { getSlot } = useSlots();
|
|
1744
|
-
const hideTitle = (!toolbar || !toolbar.filter((it) => it.show ?? true).length) && !slots.toolbar && !slots.headerTop && !tableSetting;
|
|
1745
|
-
return {
|
|
1746
|
-
title: hideTitle ? null : () => h(
|
|
1747
|
-
_sfc_main$2,
|
|
1748
|
-
{
|
|
1749
|
-
tableSetting,
|
|
1750
|
-
toolbar,
|
|
1751
|
-
authPrefix,
|
|
1752
|
-
onColumnsChange: handlers.onColumnsChange
|
|
1753
|
-
},
|
|
1754
|
-
{
|
|
1755
|
-
...slots.toolbar ? {
|
|
1756
|
-
toolbar: () => getSlot(slots, "toolbar")
|
|
1757
|
-
} : {},
|
|
1758
|
-
...slots.headerTop ? {
|
|
1759
|
-
headerTop: () => getSlot(slots, "headerTop")
|
|
1760
|
-
} : {}
|
|
1761
|
-
}
|
|
1762
|
-
)
|
|
1763
|
-
};
|
|
1764
|
-
});
|
|
1765
|
-
return {
|
|
1766
|
-
getHeaderProps
|
|
1767
|
-
};
|
|
1768
|
-
}
|
|
1769
|
-
function useLoading(props2) {
|
|
1770
|
-
const getLoading = ref(false);
|
|
1771
|
-
watch(
|
|
1772
|
-
() => unref(props2)?.loading,
|
|
1773
|
-
(v) => getLoading.value = v
|
|
1774
|
-
);
|
|
1775
|
-
function setLoading(loading) {
|
|
1776
|
-
getLoading.value = loading;
|
|
1777
|
-
}
|
|
1778
|
-
return {
|
|
1779
|
-
getLoading,
|
|
1780
|
-
setLoading
|
|
1781
|
-
};
|
|
1782
|
-
}
|
|
1783
|
-
function usePagination(props2) {
|
|
1784
|
-
const { t } = useI18n("UI");
|
|
1785
|
-
const paginationRef = ref();
|
|
1786
|
-
const { getUiSize } = useHeader();
|
|
1787
|
-
watch(
|
|
1788
|
-
() => unref(props2).pagination,
|
|
1789
|
-
(pagination) => {
|
|
1790
|
-
if (!isBoolean(pagination) && pagination) {
|
|
1791
|
-
paginationRef.value = {
|
|
1792
|
-
...unref(paginationRef),
|
|
1793
|
-
...pagination ?? {}
|
|
1794
|
-
};
|
|
1795
|
-
}
|
|
1796
|
-
}
|
|
1797
|
-
);
|
|
1798
|
-
const getPaginationInfo = computed(() => {
|
|
1799
|
-
const { appConf } = useAppStore();
|
|
1800
|
-
let { pagination } = unref(props2);
|
|
1801
|
-
if (isBoolean(pagination) && !pagination) {
|
|
1802
|
-
return false;
|
|
1803
|
-
}
|
|
1804
|
-
if (!pagination) {
|
|
1805
|
-
pagination = {
|
|
1806
|
-
pageSize: appConf.ui.table.defaultPageSize,
|
|
1807
|
-
current: 1
|
|
1808
|
-
};
|
|
1809
|
-
}
|
|
1810
|
-
const { defaultPageSize, pageSizeOptions } = {
|
|
1811
|
-
...appConf.ui.table,
|
|
1812
|
-
...pagination
|
|
1813
|
-
};
|
|
1814
|
-
return {
|
|
1815
|
-
current: 1,
|
|
1816
|
-
pageSize: defaultPageSize,
|
|
1817
|
-
defaultPageSize,
|
|
1818
|
-
showTotal: (total, range) => t("TOTAL_PAGE", { total }),
|
|
1819
|
-
showSizeChanger: true,
|
|
1820
|
-
pageSizeOptions,
|
|
1821
|
-
showQuickJumper: true,
|
|
1822
|
-
class: `dt-pagination dt-pagination-${unref(getUiSize)}`,
|
|
1823
|
-
...isBoolean(pagination) ? {} : pagination,
|
|
1824
|
-
...unref(paginationRef)
|
|
1825
|
-
};
|
|
1826
|
-
});
|
|
1827
|
-
function setPagination(info) {
|
|
1828
|
-
const paginationInfo = unref(getPaginationInfo);
|
|
1829
|
-
paginationRef.value = {
|
|
1830
|
-
...!isBoolean(paginationInfo) ? paginationInfo : {},
|
|
1831
|
-
...info
|
|
1832
|
-
};
|
|
1833
|
-
}
|
|
1834
|
-
function getPagination() {
|
|
1835
|
-
return unref(getPaginationInfo);
|
|
1836
|
-
}
|
|
1837
|
-
return {
|
|
1838
|
-
getPaginationInfo,
|
|
1839
|
-
setPagination,
|
|
1840
|
-
getPagination
|
|
1841
|
-
};
|
|
1842
|
-
}
|
|
1843
|
-
const DEFAULT_CONFIG = {
|
|
1844
|
-
id: "id",
|
|
1845
|
-
children: "children",
|
|
1846
|
-
pid: "pid"
|
|
1847
|
-
};
|
|
1848
|
-
function useRowSelection(propsRef, emit) {
|
|
1849
|
-
const selectedRowKeysRef = ref([]);
|
|
1850
|
-
const selectedRowRef = ref([]);
|
|
1851
|
-
const getRowSelectionRef = computed(() => {
|
|
1852
|
-
const { rowSelection, showCheckboxColumn, checkStrictly } = unref(propsRef);
|
|
1853
|
-
if (!rowSelection && !showCheckboxColumn) {
|
|
1854
|
-
return null;
|
|
1855
|
-
}
|
|
1856
|
-
if (isBoolean(showCheckboxColumn)) {
|
|
1857
|
-
if (showCheckboxColumn && rowSelection) {
|
|
1858
|
-
rowSelection.type = "checkbox";
|
|
1859
|
-
} else {
|
|
1860
|
-
return null;
|
|
1861
|
-
}
|
|
1862
|
-
}
|
|
1863
|
-
return {
|
|
1864
|
-
checkStrictly,
|
|
1865
|
-
selectedRowKeys: unref(selectedRowKeysRef),
|
|
1866
|
-
onChange: (selectedRowKeys) => setSelectedRowKeys(selectedRowKeys),
|
|
1867
|
-
...omit(rowSelection, ["onChange"])
|
|
1868
|
-
};
|
|
1869
|
-
});
|
|
1870
|
-
function findeNodeAll(tree, func, config = {}) {
|
|
1871
|
-
const _config = Object.assign({}, DEFAULT_CONFIG, config), result = [], list = [...tree];
|
|
1872
|
-
for (const node of list) {
|
|
1873
|
-
func(node) && result.push(node);
|
|
1874
|
-
node[_config?.children] && list.push(...node[_config?.children]);
|
|
1875
|
-
}
|
|
1876
|
-
return result;
|
|
1877
|
-
}
|
|
1878
|
-
function setSelectedRowKeys(rowKeys) {
|
|
1879
|
-
selectedRowKeysRef.value = rowKeys;
|
|
1880
|
-
const allSelectedRows = findeNodeAll(
|
|
1881
|
-
toRaw$1(unref(propsRef).dataSource).concat(toRaw$1(unref(selectedRowRef))),
|
|
1882
|
-
(item) => rowKeys.includes(item[unref(propsRef).rowKey]),
|
|
1883
|
-
{
|
|
1884
|
-
children: propsRef.value.childrenColumnName ?? "children"
|
|
1885
|
-
}
|
|
1886
|
-
);
|
|
1887
|
-
const trueSelectedRows = [];
|
|
1888
|
-
rowKeys.forEach((key) => {
|
|
1889
|
-
const found = allSelectedRows.find((item) => item[unref(propsRef).rowKey] === key);
|
|
1890
|
-
found && trueSelectedRows.push(found);
|
|
1891
|
-
});
|
|
1892
|
-
selectedRowRef.value = trueSelectedRows;
|
|
1893
|
-
}
|
|
1894
|
-
function clearSelectedRowKeys() {
|
|
1895
|
-
selectedRowKeysRef.value = [];
|
|
1896
|
-
selectedRowRef.value = [];
|
|
1897
|
-
}
|
|
1898
|
-
function getRowSelection() {
|
|
1899
|
-
return unref(getRowSelectionRef);
|
|
1900
|
-
}
|
|
1901
|
-
function getSelectedRowKeys() {
|
|
1902
|
-
return unref(selectedRowKeysRef);
|
|
1903
|
-
}
|
|
1904
|
-
function getSelectRows() {
|
|
1905
|
-
return unref(selectedRowRef);
|
|
1906
|
-
}
|
|
1907
|
-
watch(
|
|
1908
|
-
() => unref(propsRef).rowSelection?.selectedRowKeys,
|
|
1909
|
-
(v) => {
|
|
1910
|
-
setSelectedRowKeys(v);
|
|
1911
|
-
}
|
|
1912
|
-
);
|
|
1913
|
-
watch(
|
|
1914
|
-
() => unref(selectedRowKeysRef),
|
|
1915
|
-
() => {
|
|
1916
|
-
nextTick(() => {
|
|
1917
|
-
const { rowSelection } = unref(propsRef);
|
|
1918
|
-
if (rowSelection) {
|
|
1919
|
-
const { onChange } = rowSelection;
|
|
1920
|
-
if (onChange && isFunction(onChange)) {
|
|
1921
|
-
onChange(getSelectedRowKeys(), getSelectRows());
|
|
1922
|
-
}
|
|
1923
|
-
}
|
|
1924
|
-
emit("selection-change", {
|
|
1925
|
-
keys: getSelectedRowKeys(),
|
|
1926
|
-
rows: getSelectRows()
|
|
1927
|
-
});
|
|
1928
|
-
});
|
|
1929
|
-
},
|
|
1930
|
-
{ deep: true }
|
|
1931
|
-
);
|
|
1932
|
-
return {
|
|
1933
|
-
getRowSelectionRef,
|
|
1934
|
-
clearSelectedRowKeys,
|
|
1935
|
-
getRowSelection,
|
|
1936
|
-
getSelectedRowKeys,
|
|
1937
|
-
getSelectRows,
|
|
1938
|
-
setSelectedRowKeys
|
|
1939
|
-
};
|
|
1940
|
-
}
|
|
1941
|
-
var TABLE_SIZE_HEIGHT = /* @__PURE__ */ ((TABLE_SIZE_HEIGHT2) => {
|
|
1942
|
-
TABLE_SIZE_HEIGHT2[TABLE_SIZE_HEIGHT2["large"] = 56] = "large";
|
|
1943
|
-
TABLE_SIZE_HEIGHT2[TABLE_SIZE_HEIGHT2["middle"] = 47] = "middle";
|
|
1944
|
-
TABLE_SIZE_HEIGHT2[TABLE_SIZE_HEIGHT2["small"] = 32] = "small";
|
|
1945
|
-
return TABLE_SIZE_HEIGHT2;
|
|
1946
|
-
})(TABLE_SIZE_HEIGHT || {});
|
|
1947
|
-
function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef) {
|
|
1948
|
-
const filterSource = ref([]);
|
|
1949
|
-
let bodyEl;
|
|
1950
|
-
const debounceRedoHeight = useDebounceFn(redoHeight, 100);
|
|
1951
|
-
windowResizeFn(debounceRedoHeight, 280);
|
|
1952
|
-
watch(
|
|
1953
|
-
() => propsRef.value.dataSource,
|
|
1954
|
-
() => {
|
|
1955
|
-
debounceRedoHeight();
|
|
1956
|
-
},
|
|
1957
|
-
{
|
|
1958
|
-
deep: true,
|
|
1959
|
-
flush: "post"
|
|
1960
|
-
}
|
|
1961
|
-
);
|
|
1962
|
-
function redoHeight() {
|
|
1963
|
-
const { virtual, dataSource } = unref(propsRef);
|
|
1964
|
-
virtual ? calcTableScroll() : filterSource.value = dataSource.map((row) => new Proxy(row, {}));
|
|
1965
|
-
}
|
|
1966
|
-
const getScrollX = computed(() => {
|
|
1967
|
-
let width = 0;
|
|
1968
|
-
if (unref(rowSelectionRef)) {
|
|
1969
|
-
width += 32;
|
|
1970
|
-
}
|
|
1971
|
-
const NORMAL_WIDTH = 120;
|
|
1972
|
-
const columns = unref(columnsRef).filter((item) => !item.defaultHidden);
|
|
1973
|
-
columns.forEach((item) => {
|
|
1974
|
-
width += Number.parseInt(item.width) || NORMAL_WIDTH;
|
|
1975
|
-
});
|
|
1976
|
-
const table = unref(tableElRef);
|
|
1977
|
-
const tableWidth = table?.$el?.offsetWidth ?? 0;
|
|
1978
|
-
return tableWidth > width ? "100%" : width;
|
|
1979
|
-
});
|
|
1980
|
-
const hideScrollX = computed(() => {
|
|
1981
|
-
const operations = unref(propsRef).operations;
|
|
1982
|
-
return !operations || isObject(operations) && operations?.btns && !operations?.btns?.length || isArray(operations) && !operations.length;
|
|
1983
|
-
});
|
|
1984
|
-
const getScrollRef = computed(() => {
|
|
1985
|
-
const { scroll } = unref(propsRef);
|
|
1986
|
-
return {
|
|
1987
|
-
x: unref(hideScrollX) ? null : unref(getScrollX),
|
|
1988
|
-
y: "100%",
|
|
1989
|
-
scrollToFirstRowOnChange: false,
|
|
1990
|
-
...scroll
|
|
1991
|
-
};
|
|
1992
|
-
});
|
|
1993
|
-
async function calcTableScroll() {
|
|
1994
|
-
const tableEl = unref(tableElRef)?.$el;
|
|
1995
|
-
bodyEl = tableEl.querySelector(".ant-table-body");
|
|
1996
|
-
const { getUiSize } = useHeader();
|
|
1997
|
-
const rowHeight = TABLE_SIZE_HEIGHT[unref(getUiSize)];
|
|
1998
|
-
const itemSize = Math.ceil(bodyEl.offsetHeight / rowHeight);
|
|
1999
|
-
createScrollWrap(bodyEl, rowHeight * itemSize * 3);
|
|
2000
|
-
calcScroll(bodyEl, rowHeight, itemSize);
|
|
2001
|
-
const fn = useThrottleFn(() => calcScroll(bodyEl, rowHeight, itemSize), 10);
|
|
2002
|
-
tryOnMounted(() => off(bodyEl, "scroll", fn));
|
|
2003
|
-
on(bodyEl, "scroll", fn);
|
|
2004
|
-
}
|
|
2005
|
-
function createScrollWrap(el, prefixH) {
|
|
2006
|
-
const data = unref(propsRef)?.dataSource?.length;
|
|
2007
|
-
const { getUiSize } = useHeader();
|
|
2008
|
-
const rowHeight = TABLE_SIZE_HEIGHT[unref(getUiSize)];
|
|
2009
|
-
const scrollWrap = el.querySelector(".tableScrollWrap");
|
|
2010
|
-
const wrapHeight = data * rowHeight - prefixH + "px";
|
|
2011
|
-
if (scrollWrap) {
|
|
2012
|
-
scrollWrap.style.height = wrapHeight;
|
|
2013
|
-
} else {
|
|
2014
|
-
const div = document.createElement("div");
|
|
2015
|
-
div.className = "tableScrollWrap";
|
|
2016
|
-
div.style.height = wrapHeight;
|
|
2017
|
-
el.insertBefore(div, el.querySelector("table")[0]);
|
|
2018
|
-
}
|
|
2019
|
-
}
|
|
2020
|
-
const t = ref(null);
|
|
2021
|
-
function calcScroll(el, itemH, itemSize) {
|
|
2022
|
-
cancelAnimationFrame(unref(t));
|
|
2023
|
-
t.value = requestAnimationFrame(() => {
|
|
2024
|
-
const scrollTop = el.scrollTop;
|
|
2025
|
-
const maxIndex = Math.round(scrollTop / itemH) + itemSize * 2;
|
|
2026
|
-
const minIndex = Math.round(scrollTop / itemH) - itemSize;
|
|
2027
|
-
if (minIndex < 0) {
|
|
2028
|
-
bodyEl.querySelector("table").style.transform = "translateY(0px)";
|
|
2029
|
-
filterSource.value = unref(propsRef)?.dataSource.slice(0, itemSize * 3);
|
|
2030
|
-
} else {
|
|
2031
|
-
bodyEl.querySelector("table").style.transform = `translateY(${minIndex * itemH}px)`;
|
|
2032
|
-
filterSource.value = unref(propsRef)?.dataSource.slice(minIndex, maxIndex);
|
|
2033
|
-
}
|
|
2034
|
-
});
|
|
2035
|
-
}
|
|
2036
|
-
return {
|
|
2037
|
-
getScrollRef,
|
|
2038
|
-
filterSource
|
|
2039
|
-
};
|
|
2040
|
-
}
|
|
2041
|
-
function useRows(propsRef) {
|
|
2042
|
-
function getRowClassName(record, index) {
|
|
2043
|
-
const { striped, rowClassName } = unref(propsRef);
|
|
2044
|
-
const classNames = [];
|
|
2045
|
-
if (striped) {
|
|
2046
|
-
classNames.push(index % 2 === 1 ? "table-striped" : "");
|
|
2047
|
-
}
|
|
2048
|
-
if (rowClassName && isFunction(rowClassName)) {
|
|
2049
|
-
classNames.push(rowClassName(record, index));
|
|
2050
|
-
}
|
|
2051
|
-
return classNames.join(" ");
|
|
2052
|
-
}
|
|
2053
|
-
return {
|
|
2054
|
-
getRowClassName
|
|
2055
|
-
};
|
|
2056
|
-
}
|
|
2057
|
-
const props = {
|
|
2058
|
-
column: Object,
|
|
2059
|
-
record: Object,
|
|
2060
|
-
index: Number
|
|
2061
|
-
};
|
|
2062
|
-
const _sfc_main$1 = {
|
|
2063
|
-
name: "TableRender",
|
|
2064
|
-
props,
|
|
2065
|
-
setup(props2, {}) {
|
|
2066
|
-
let renderText = ref(null);
|
|
2067
|
-
watch(() => [props2.record, props2.column], (v) => {
|
|
2068
|
-
if (v) {
|
|
2069
|
-
renderCell();
|
|
2070
|
-
}
|
|
2071
|
-
}, {
|
|
2072
|
-
immediate: true,
|
|
2073
|
-
deep: true
|
|
2074
|
-
});
|
|
2075
|
-
function renderCell() {
|
|
2076
|
-
const {
|
|
2077
|
-
column,
|
|
2078
|
-
record,
|
|
2079
|
-
index
|
|
2080
|
-
} = props2;
|
|
2081
|
-
const {
|
|
2082
|
-
render,
|
|
2083
|
-
dataIndex
|
|
2084
|
-
} = column;
|
|
2085
|
-
const text = record[dataIndex.toString()];
|
|
2086
|
-
if (isObject(render)) {
|
|
2087
|
-
const {
|
|
2088
|
-
dict,
|
|
2089
|
-
date,
|
|
2090
|
-
number,
|
|
2091
|
-
percent,
|
|
2092
|
-
struc,
|
|
2093
|
-
tag,
|
|
2094
|
-
link
|
|
2095
|
-
} = render;
|
|
2096
|
-
if (struc) {
|
|
2097
|
-
const {
|
|
2098
|
-
appConf
|
|
2099
|
-
} = useAppStore();
|
|
2100
|
-
let apiStruc = appConf.structure[struc];
|
|
2101
|
-
if (!apiStruc) {
|
|
2102
|
-
error(`${struc}\u672A\u5728structure\u4E2D\u914D\u7F6E`);
|
|
2103
|
-
} else {
|
|
2104
|
-
renderText = computed(() => getDictValueByCode(text, apiStruc));
|
|
2105
|
-
}
|
|
2106
|
-
} else if (dict) {
|
|
2107
|
-
renderText = computed(() => getDictValueByCode(text, dict));
|
|
2108
|
-
} else if (date) {
|
|
2109
|
-
renderText.value = (text && dayjs(text).format(date || "YYYY-MM-DD")) ?? "";
|
|
2110
|
-
} else if (number) {
|
|
2111
|
-
renderText.value = formatNumber(text, number);
|
|
2112
|
-
} else if (percent) {
|
|
2113
|
-
renderText.value = formatNumber((text || 0) * 100, percent) + "%";
|
|
2114
|
-
} else if (tag && isFunction(tag)) {
|
|
2115
|
-
renderText.value = createVNode(Tag, {
|
|
2116
|
-
"color": tag(record).color
|
|
2117
|
-
}, {
|
|
2118
|
-
default: () => [tag(record).text]
|
|
2119
|
-
});
|
|
2120
|
-
} else if (link) {
|
|
2121
|
-
let txt = link.text ?? text;
|
|
2122
|
-
renderText.value = createVNode("a", {
|
|
2123
|
-
"class": "primary-color-link",
|
|
2124
|
-
"onClick": () => link(record, index)
|
|
2125
|
-
}, [txt]);
|
|
2126
|
-
} else if (isVnode(render)) {
|
|
2127
|
-
renderText.value = createVNode(Fragment, null, [createTextVNode(" "), render, createTextVNode(" ")]);
|
|
2128
|
-
} else if (render.setup) {
|
|
2129
|
-
renderText.value = createVNode(render, {
|
|
2130
|
-
...record,
|
|
2131
|
-
text
|
|
2132
|
-
});
|
|
2133
|
-
}
|
|
2134
|
-
} else if (isFunction(render)) {
|
|
2135
|
-
let afterRenderData = render(record, index, text);
|
|
2136
|
-
if (afterRenderData.__v_isRef) {
|
|
2137
|
-
renderText = afterRenderData;
|
|
2138
|
-
} else if (afterRenderData.setup) {
|
|
2139
|
-
renderText.value = createVNode(afterRenderData, {
|
|
2140
|
-
...record,
|
|
2141
|
-
text
|
|
2142
|
-
});
|
|
2143
|
-
} else {
|
|
2144
|
-
renderText.value = isVnode(afterRenderData) ? createVNode(Fragment, null, [afterRenderData]) : afterRenderData;
|
|
2145
|
-
}
|
|
2146
|
-
} else {
|
|
2147
|
-
renderText.value = unref(text);
|
|
2148
|
-
}
|
|
2149
|
-
}
|
|
2150
|
-
return () => createVNode("span", null, [unref(renderText)]);
|
|
2151
|
-
}
|
|
2152
|
-
};
|
|
2153
|
-
const DEFAULT_SORT_FN = (sortInfo) => {
|
|
2154
|
-
const { field, order } = sortInfo;
|
|
2155
|
-
return field && order ? { field, order } : {};
|
|
2156
|
-
};
|
|
2157
|
-
const TableProps = {
|
|
2158
|
-
autoFetch: { type: Boolean, default: false },
|
|
2159
|
-
authPrefix: { type: String },
|
|
2160
|
-
clickToSelectRow: { type: Boolean, default: false },
|
|
2161
|
-
tableSetting: { type: [Boolean, Object], default: () => ({}) },
|
|
2162
|
-
striped: { type: Boolean, default: true },
|
|
2163
|
-
clearSelectOnPageChange: { type: Boolean, default: false },
|
|
2164
|
-
resizable: { type: Boolean, default: true },
|
|
2165
|
-
minWidth: { type: Number },
|
|
2166
|
-
maxWidth: { type: Number },
|
|
2167
|
-
virtual: { type: Boolean, default: false },
|
|
2168
|
-
sortFn: { type: Function, default: DEFAULT_SORT_FN },
|
|
2169
|
-
defSort: { type: Object, default: null },
|
|
2170
|
-
filterFn: {
|
|
2171
|
-
type: Function,
|
|
2172
|
-
default: (data) => {
|
|
2173
|
-
return data;
|
|
2174
|
-
}
|
|
2175
|
-
},
|
|
2176
|
-
rowKey: {
|
|
2177
|
-
type: [String, Number],
|
|
2178
|
-
default: "id"
|
|
2179
|
-
},
|
|
2180
|
-
columnCode: { type: String, default: "" },
|
|
2181
|
-
columns: { type: [Array], default: () => [] },
|
|
2182
|
-
slotsTemplate: { type: Object, default: () => ({}) },
|
|
2183
|
-
showIndexColumn: { type: Boolean, default: false },
|
|
2184
|
-
showCheckboxColumn: { type: Boolean, default: true },
|
|
2185
|
-
expandActions: { type: Boolean, default: false },
|
|
2186
|
-
ellipsis: { type: Boolean, default: true },
|
|
2187
|
-
dataSource: { type: Array, default: null },
|
|
2188
|
-
bordered: { type: Boolean, default: true },
|
|
2189
|
-
pagination: {
|
|
2190
|
-
type: [Object, Boolean],
|
|
2191
|
-
default: null
|
|
2192
|
-
},
|
|
2193
|
-
loading: { type: Boolean, default: false },
|
|
2194
|
-
rowClassName: { type: Function },
|
|
2195
|
-
scroll: {
|
|
2196
|
-
type: Object,
|
|
2197
|
-
default: {}
|
|
2198
|
-
},
|
|
2199
|
-
onTableChange: {
|
|
2200
|
-
type: Function,
|
|
2201
|
-
default: () => ({})
|
|
2202
|
-
},
|
|
2203
|
-
onDownload: {
|
|
2204
|
-
type: Function,
|
|
2205
|
-
default: (excelData) => ({})
|
|
2206
|
-
},
|
|
2207
|
-
rowSelection: {
|
|
2208
|
-
type: Object,
|
|
2209
|
-
default: {
|
|
2210
|
-
type: "checkbox",
|
|
2211
|
-
fixed: true
|
|
2212
|
-
}
|
|
2213
|
-
},
|
|
2214
|
-
customRow: {
|
|
2215
|
-
type: Function,
|
|
2216
|
-
default: () => ({})
|
|
2217
|
-
},
|
|
2218
|
-
childrenColumnName: {
|
|
2219
|
-
type: String,
|
|
2220
|
-
default: "children"
|
|
2221
|
-
},
|
|
2222
|
-
indexColumnProps: {
|
|
2223
|
-
type: [Array],
|
|
2224
|
-
default: () => []
|
|
2225
|
-
},
|
|
2226
|
-
isTreeTable: {
|
|
2227
|
-
type: Boolean,
|
|
2228
|
-
default: false
|
|
2229
|
-
},
|
|
2230
|
-
checkStrictly: {
|
|
2231
|
-
type: Boolean,
|
|
2232
|
-
default: false
|
|
2233
|
-
},
|
|
2234
|
-
operations: {
|
|
2235
|
-
type: Object
|
|
2236
|
-
},
|
|
2237
|
-
toolbar: {
|
|
2238
|
-
type: Array
|
|
2239
|
-
},
|
|
2240
|
-
registerInstance: {
|
|
2241
|
-
type: Function
|
|
2242
|
-
},
|
|
2243
|
-
onSearch: {
|
|
2244
|
-
type: Function,
|
|
2245
|
-
default: (params) => {
|
|
2246
|
-
}
|
|
2247
|
-
},
|
|
2248
|
-
onOPenAddDialog: {
|
|
2249
|
-
type: Function,
|
|
2250
|
-
default: (params) => ({})
|
|
2251
|
-
},
|
|
2252
|
-
onOpenUpdateDialog: {
|
|
2253
|
-
type: Function,
|
|
2254
|
-
default: (row, index) => ({})
|
|
2255
|
-
},
|
|
2256
|
-
onDelete: {
|
|
2257
|
-
type: Function,
|
|
2258
|
-
default: (row, index) => ({})
|
|
2259
|
-
},
|
|
2260
|
-
onDeletes: {
|
|
2261
|
-
type: Function,
|
|
2262
|
-
default: (params) => ({})
|
|
2263
|
-
}
|
|
2264
|
-
};
|
|
2265
|
-
const _hoisted_1 = /* @__PURE__ */ createElementVNode("img", {
|
|
2266
|
-
src: _imports_0,
|
|
2267
|
-
class: "w-72 m-auto my-5"
|
|
2268
|
-
}, null, -1);
|
|
2269
|
-
const _hoisted_2 = /* @__PURE__ */ createElementVNode("span", { class: "block -mt-10" }, "\u62B1\u6B49, \u627E\u4E0D\u5230\u60A8\u60F3\u8981\u7684\u6570\u636E~", -1);
|
|
2270
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
2271
|
-
__name: "index",
|
|
2272
|
-
props: TableProps,
|
|
2273
|
-
emits: [
|
|
2274
|
-
"register",
|
|
2275
|
-
"selection-change",
|
|
2276
|
-
"columns-change",
|
|
2277
|
-
"row-click",
|
|
2278
|
-
"row-dbClick",
|
|
2279
|
-
"row-contextmenu",
|
|
2280
|
-
"row-mouseenter",
|
|
2281
|
-
"row-mouseleave",
|
|
2282
|
-
"edit-change"
|
|
2283
|
-
],
|
|
2284
|
-
setup(__props, { emit: emits }) {
|
|
2285
|
-
const props2 = __props;
|
|
2286
|
-
const tableElRef = ref(null);
|
|
2287
|
-
const attrs = useAttrs();
|
|
2288
|
-
const slots = useSlots$1();
|
|
2289
|
-
const innerPropsRef = ref();
|
|
2290
|
-
const getProps = computed(() => {
|
|
2291
|
-
return { ...props2, ...unref(innerPropsRef) };
|
|
2292
|
-
});
|
|
2293
|
-
const { getRowClassName } = useRows(getProps);
|
|
2294
|
-
const tableCls = computed(() => {
|
|
2295
|
-
return ["dt-table", "box-border", { "dt-table-no-pagation": !unref(getProps).pagination }];
|
|
2296
|
-
});
|
|
2297
|
-
const { getLoading, setLoading } = useLoading(getProps);
|
|
2298
|
-
const { getPaginationInfo, setPagination, getPagination } = usePagination(getProps);
|
|
2299
|
-
const {
|
|
2300
|
-
getViewColumns,
|
|
2301
|
-
getColumnsRef,
|
|
2302
|
-
getColumns,
|
|
2303
|
-
setColumns,
|
|
2304
|
-
setColumnsByDataIndex,
|
|
2305
|
-
getCacheColumns
|
|
2306
|
-
} = useColumns(getProps, getPaginationInfo, tableElRef);
|
|
2307
|
-
const {
|
|
2308
|
-
getRowSelectionRef,
|
|
2309
|
-
clearSelectedRowKeys,
|
|
2310
|
-
getRowSelection,
|
|
2311
|
-
getSelectRows,
|
|
2312
|
-
getSelectedRowKeys,
|
|
2313
|
-
setSelectedRowKeys
|
|
2314
|
-
} = useRowSelection(getProps, emits);
|
|
2315
|
-
const { getScrollRef, filterSource } = useTableScroll(
|
|
2316
|
-
getProps,
|
|
2317
|
-
tableElRef,
|
|
2318
|
-
getColumnsRef,
|
|
2319
|
-
getRowSelectionRef
|
|
2320
|
-
);
|
|
2321
|
-
const handlers = {
|
|
2322
|
-
onColumnsChange: (data) => {
|
|
2323
|
-
emits("columns-change", data);
|
|
2324
|
-
unref(getProps).onColumnsChange?.(data);
|
|
2325
|
-
}
|
|
2326
|
-
};
|
|
2327
|
-
const { getHeaderProps } = useTableHeader(getProps, slots, handlers);
|
|
2328
|
-
const { customRow } = useCustomRow(getProps, {
|
|
2329
|
-
setSelectedRowKeys,
|
|
2330
|
-
getSelectedRowKeys,
|
|
2331
|
-
clearSelectedRowKeys,
|
|
2332
|
-
emits
|
|
2333
|
-
});
|
|
2334
|
-
const { handleTableChange, findTableDataRecord, updateTableDataRecord } = useDataSource(
|
|
2335
|
-
getProps,
|
|
2336
|
-
{
|
|
2337
|
-
getPaginationInfo,
|
|
2338
|
-
setPagination,
|
|
2339
|
-
clearSelectedRowKeys
|
|
2340
|
-
}
|
|
2341
|
-
);
|
|
2342
|
-
const getBind = computed(() => {
|
|
2343
|
-
return {
|
|
2344
|
-
...attrs,
|
|
2345
|
-
...unref(getProps),
|
|
2346
|
-
...unref(getHeaderProps),
|
|
2347
|
-
scroll: unref(getScrollRef),
|
|
2348
|
-
loading: unref(getLoading),
|
|
2349
|
-
dataSource: toRaw$1(unref(filterSource)),
|
|
2350
|
-
pagination: toRaw$1(unref(getPaginationInfo)),
|
|
2351
|
-
rowSelection: unref(getRowSelectionRef),
|
|
2352
|
-
rowKey: unref(getProps).rowKey,
|
|
2353
|
-
columns: unref(getViewColumns),
|
|
2354
|
-
tableLayout: "fixed",
|
|
2355
|
-
class: unref(tableCls),
|
|
2356
|
-
customRow,
|
|
2357
|
-
onChange: handleTableChange,
|
|
2358
|
-
onResizeColumn: (w, col) => {
|
|
2359
|
-
col.width = w;
|
|
2360
|
-
setColumnsByDataIndex(col.dataIndex, col);
|
|
2361
|
-
}
|
|
2362
|
-
};
|
|
2363
|
-
});
|
|
2364
|
-
function setProps(props22) {
|
|
2365
|
-
let allProps = {
|
|
2366
|
-
...unref(innerPropsRef),
|
|
2367
|
-
...props22
|
|
2368
|
-
};
|
|
2369
|
-
if (isObject(props22.tableSetting)) {
|
|
2370
|
-
let historyTableSetting = unref(innerPropsRef)?.tableSetting;
|
|
2371
|
-
allProps.tableSetting = {
|
|
2372
|
-
...isBoolean(historyTableSetting) ? {} : historyTableSetting,
|
|
2373
|
-
...props22.tableSetting
|
|
2374
|
-
};
|
|
2375
|
-
}
|
|
2376
|
-
innerPropsRef.value = allProps;
|
|
2377
|
-
}
|
|
2378
|
-
const tableAction = {
|
|
2379
|
-
setProps,
|
|
2380
|
-
setLoading,
|
|
2381
|
-
clearSelectedRowKeys,
|
|
2382
|
-
getSelectRows,
|
|
2383
|
-
getSelectedRowKeys,
|
|
2384
|
-
setSelectedRowKeys,
|
|
2385
|
-
getRowSelection,
|
|
2386
|
-
getColumns,
|
|
2387
|
-
setColumns,
|
|
2388
|
-
setColumnsByDataIndex,
|
|
2389
|
-
getCacheColumns,
|
|
2390
|
-
findTableDataRecord,
|
|
2391
|
-
updateTableDataRecord,
|
|
2392
|
-
getPagination,
|
|
2393
|
-
emits
|
|
2394
|
-
};
|
|
2395
|
-
createTableInstance({ ...tableAction, tableElRef, getBind, getProps });
|
|
2396
|
-
emits("register", tableAction);
|
|
2397
|
-
if (unref(innerPropsRef)?.registerInstance) {
|
|
2398
|
-
unref(innerPropsRef)?.registerInstance(tableAction);
|
|
2399
|
-
}
|
|
2400
|
-
onMounted(() => {
|
|
2401
|
-
if (unref(getProps).autoFetch) {
|
|
2402
|
-
unref(getProps)?.onSearch({});
|
|
2403
|
-
}
|
|
2404
|
-
});
|
|
2405
|
-
return (_ctx, _cache) => {
|
|
2406
|
-
const _component_ATable = Table;
|
|
2407
|
-
return openBlock(), createBlock(_component_ATable, mergeProps({
|
|
2408
|
-
ref_key: "tableElRef",
|
|
2409
|
-
ref: tableElRef
|
|
2410
|
-
}, unref(getBind), {
|
|
2411
|
-
"row-class-name": unref(getRowClassName),
|
|
2412
|
-
onChange: unref(handleTableChange)
|
|
2413
|
-
}), createSlots({
|
|
2414
|
-
bodyCell: withCtx(({ column, record, index }) => [
|
|
2415
|
-
_ctx.$slots.bodyCell ? renderSlot(_ctx.$slots, "bodyCell", normalizeProps(mergeProps({ key: 0 }, { column, record, index }))) : createCommentVNode("", true),
|
|
2416
|
-
column.slot ? renderSlot(_ctx.$slots, column.slot, normalizeProps(mergeProps({ key: 1 }, { column, record, index }))) : createCommentVNode("", true),
|
|
2417
|
-
column?.render && !column.slot && !_ctx.$slots.bodyCell ? (openBlock(), createBlock(_sfc_main$1, {
|
|
2418
|
-
key: 2,
|
|
2419
|
-
column,
|
|
2420
|
-
record,
|
|
2421
|
-
index
|
|
2422
|
-
}, null, 8, ["column", "record", "index"])) : createCommentVNode("", true)
|
|
2423
|
-
]),
|
|
2424
|
-
emptyText: withCtx(() => [
|
|
2425
|
-
_hoisted_1,
|
|
2426
|
-
_hoisted_2
|
|
2427
|
-
]),
|
|
2428
|
-
_: 2
|
|
2429
|
-
}, [
|
|
2430
|
-
renderList(Object.keys(_ctx.$slots), (item) => {
|
|
2431
|
-
return {
|
|
2432
|
-
name: item,
|
|
2433
|
-
fn: withCtx((data) => [
|
|
2434
|
-
renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data || {})))
|
|
2435
|
-
])
|
|
2436
|
-
};
|
|
2437
|
-
})
|
|
2438
|
-
]), 1040, ["row-class-name", "onChange"]);
|
|
2439
|
-
};
|
|
2440
|
-
}
|
|
2441
|
-
});
|
|
2442
|
-
export {
|
|
2443
|
-
_sfc_main as DtTable,
|
|
2444
|
-
useTable
|
|
2445
|
-
};
|