aq-fe-framework 0.1.155 → 0.1.156
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/api/apiFactory.ts +46 -0
- package/dist/api/baseAxios.ts +22 -0
- package/dist/app/admin/(core)/core12196/page.tsx +13 -0
- package/dist/app/admin/(core)/core16209/page.tsx +13 -0
- package/dist/app/admin/(core)/core18256/page.tsx +12 -0
- package/dist/app/admin/(core)/core26965/page.tsx +13 -0
- package/dist/app/admin/(core)/core27311/page.tsx +13 -0
- package/dist/app/admin/(core)/core38677/page.tsx +13 -0
- package/dist/app/admin/(core)/core40207/page.tsx +13 -0
- package/dist/app/admin/(core)/core60524/page.tsx +11 -0
- package/dist/app/admin/(core)/core64229/page.tsx +12 -0
- package/dist/app/admin/(core)/core71678/page.tsx +11 -0
- package/dist/app/admin/(core)/core76318/page.tsx +13 -0
- package/dist/app/admin/(core)/core83092/page.tsx +13 -0
- package/dist/app/admin/[...slug]/page.tsx +7 -0
- package/dist/app/admin/error.tsx +42 -0
- package/dist/app/admin/layout.tsx +21 -0
- package/dist/app/admin/test/page.tsx +44 -0
- package/dist/app/auth/login/page.tsx +14 -0
- package/dist/app/globals.css +59 -0
- package/dist/app/layout.tsx +39 -0
- package/dist/app/page.tsx +18 -0
- package/dist/{chunk-PAHZ57DT.mjs → chunk-JLT4BL7I.mjs} +1 -1
- package/dist/components/Aceternity/BoxesBackground/MyBoxes.tsx +66 -0
- package/dist/components/Aceternity/BoxesBackground/MyBoxesBackground.tsx +31 -0
- package/dist/components/ActionIcons/ActionIcon/MyActionIcon.tsx +47 -0
- package/dist/components/ActionIcons/ActionIconCRUD/MyActionIconDelete.tsx +81 -0
- package/dist/components/ActionIcons/ActionIconCRUD/MyActionIconUpdate.tsx +68 -0
- package/dist/components/ActionIcons/ActionIconCheck/MyActionIconCheck.tsx +50 -0
- package/dist/components/ActionIcons/ActionIconDownloadPDF/MyActionIconDownloadPDF.tsx +13 -0
- package/dist/components/ActionIcons/ActionIconModal/MyActionIconModal.tsx +113 -0
- package/dist/components/ActionIcons/ActionIconUpload/MyActionIconUpload.tsx +19 -0
- package/dist/components/ActionIcons/ActionIconViewPdf/MyActionIconViewPDF.tsx +63 -0
- package/dist/components/ActionIcons/SwitchTheme/MySwitchTheme.tsx +36 -0
- package/dist/components/AppSpotlight/MyAppSpotlight.tsx +112 -0
- package/dist/components/Buttons/Anchor/MyAnchorViewPDF.tsx +46 -0
- package/dist/components/Buttons/Button/MyButton.tsx +90 -0
- package/dist/components/Buttons/ButtonCRUD/AQButtonCreateByImportFile.tsx +81 -0
- package/dist/components/Buttons/ButtonCRUD/AQButtonExportData.tsx +75 -0
- package/dist/components/Buttons/ButtonCRUD/MyButtonCreate.tsx +68 -0
- package/dist/components/Buttons/ButtonImport/MyButtonImport.tsx +29 -0
- package/dist/components/Buttons/ButtonImport/SelectFieldModal.tsx +100 -0
- package/dist/components/Buttons/ButtonImport/SelectFileModal.tsx +81 -0
- package/dist/components/Buttons/ButtonImport/useS_ButtonImport.ts +196 -0
- package/dist/components/Buttons/ButtonModal/AQSelectTableByOpenModal.tsx +71 -0
- package/dist/components/Buttons/ButtonModal/MyButtonModal.tsx +117 -0
- package/dist/components/Buttons/ButtonPrintPDF/MyButtonPrintPDF.tsx +37 -0
- package/dist/components/Buttons/ButtonPrintPDFTable/MyButtonPrintTablePDF.tsx +174 -0
- package/dist/components/Buttons/ButtonRouterBack/MyButtonRouterBack.tsx +29 -0
- package/dist/components/Buttons/ButtonViewPDF/MyButtonViewPDF.tsx +121 -0
- package/dist/components/Calendar/MyCalendar.tsx +118 -0
- package/dist/components/CenterFull/MyCenterFull.tsx +10 -0
- package/dist/components/Checkbox/MyCheckbox.tsx +9 -0
- package/dist/components/Combobox/Select/MySelect.tsx +12 -0
- package/dist/components/DataDisplay/Card/AQCard.tsx +49 -0
- package/dist/components/DataDisplay/CardInformation/MyCardInformation.tsx +77 -0
- package/dist/components/DataDisplay/DataTable/MyDataTable.tsx +184 -0
- package/dist/components/DataDisplay/IconText/MyIconText.tsx +17 -0
- package/dist/components/DataDisplay/KeyLabel/MyKeyLabel.tsx +15 -0
- package/dist/components/DataDisplay/NumberFormatter/MyNumberFormatter.tsx +9 -0
- package/dist/components/DataDisplay/StatCard/AQStatCard1.tsx +68 -0
- package/dist/components/FaviconSetter/FaviconSetter.tsx +33 -0
- package/dist/components/Inputs/DateInput/MyDateInput.tsx +11 -0
- package/dist/components/Inputs/Fieldset/MyFieldset.tsx +32 -0
- package/dist/components/Inputs/FileInput/MyFileInput.tsx +12 -0
- package/dist/components/Inputs/NumberInput/MyNumberInput.tsx +12 -0
- package/dist/components/Inputs/TextArea/MyTextArea.tsx +11 -0
- package/dist/components/Inputs/TextEditor/MyTextEditor.tsx +191 -0
- package/dist/components/Inputs/TextInput/MyTextInput.tsx +30 -0
- package/dist/components/Layouts/BasicAppShell/BasicAppShell.tsx +357 -0
- package/dist/components/Layouts/BasicAppShell/css.module.css +62 -0
- package/dist/components/Layouts/BasicAppShell/useS_BasicAppShell.ts +64 -0
- package/dist/components/Layouts/Container/MyContainer.tsx +16 -0
- package/dist/components/Layouts/FlexColumn/MyFlexColumn.tsx +14 -0
- package/dist/components/Layouts/FlexEnd/MyFlexEnd.tsx +14 -0
- package/dist/components/Layouts/FlexRow/MyFlexRow.tsx +14 -0
- package/dist/components/Layouts/HeaderMegaMenu/HeaderMegaMenu.tsx +147 -0
- package/dist/components/Layouts/HeaderMegaMenu/HeaderMegaMenuStore.ts +19 -0
- package/dist/components/Layouts/HeaderMegaMenu/css.module.css +50 -0
- package/dist/components/Layouts/HtmlWrapper/MyHtmlWrapper.tsx +29 -0
- package/dist/components/Layouts/PageContent/MyPageContent.tsx +67 -0
- package/dist/components/Layouts/Tab/MyTab.tsx +33 -0
- package/dist/components/Loaders/MyCardioLoader.tsx +12 -0
- package/dist/components/RESTAPIComponents/DataTableSelect/MyDataTableSelect.tsx +61 -0
- package/dist/components/RESTAPIComponents/SelectAPIGet/MySelectAPIGet.tsx +37 -0
- package/dist/components/ScheduleX/MyScheduleX.tsx +58 -0
- package/dist/components/Skeletons/SkeletonTable/MySkeletonTable.tsx +9 -0
- package/dist/components/index.mjs +1 -1
- package/dist/components/index.ts +62 -0
- package/dist/constants/array/daysOfWeek.ts +9 -0
- package/dist/constants/enum/ENUM_EMAILCONFIG.ts +6 -0
- package/dist/constants/enum/global.ts +26 -0
- package/dist/constants/object/color.ts +5 -0
- package/dist/constants/object/documentTypes.ts +8 -0
- package/dist/{components/index.css → css.module-4ICLUKPO.module.css} +29 -16
- package/dist/css.module-P45UW6UZ.module.css +4 -0
- package/dist/data/menuData.ts +31 -0
- package/dist/hooks/custom-hooks/useC_MutationAction.tsx +36 -0
- package/dist/hooks/index.ts +2 -0
- package/dist/hooks/query/AQ/useQ_AQ_GetAQModule.ts +14 -0
- package/dist/interfaces/EmailConfig.ts +10 -0
- package/dist/interfaces/IAQModule.ts +21 -0
- package/dist/interfaces/base.ts +9 -0
- package/dist/interfaces/global-interface/IAQSSO.ts +15 -0
- package/dist/interfaces/global-interface/IAQSyncData.ts +9 -0
- package/dist/interfaces/global-interface/IAcademicYear.ts +12 -0
- package/dist/interfaces/global-interface/IChangePassWord.ts +8 -0
- package/dist/interfaces/global-interface/IComplaintProccess.ts +9 -0
- package/dist/interfaces/global-interface/ICreateAccount.ts +24 -0
- package/dist/interfaces/global-interface/IDocument.ts +25 -0
- package/dist/interfaces/global-interface/IDocumentAttribute.ts +12 -0
- package/dist/interfaces/global-interface/IEvent.ts +30 -0
- package/dist/interfaces/global-interface/IEventComplaint.ts +20 -0
- package/dist/interfaces/global-interface/IEventFillter.ts +14 -0
- package/dist/interfaces/global-interface/IFile.ts +8 -0
- package/dist/interfaces/global-interface/IImportStudentPaticipation.ts +8 -0
- package/dist/interfaces/global-interface/IPagePermission.ts +12 -0
- package/dist/interfaces/global-interface/IRolePermission.ts +7 -0
- package/dist/interfaces/global-interface/ISRMUserinfo.ts +35 -0
- package/dist/interfaces/global-interface/IScientificProfileProjectUser.ts +15 -0
- package/dist/interfaces/global-interface/IScientificProfileResearchGroup.ts +15 -0
- package/dist/interfaces/global-interface/IScientificProfileResearchGroupUser.ts +14 -0
- package/dist/interfaces/global-interface/IScientificProfileResearchProject.ts +21 -0
- package/dist/interfaces/global-interface/ISignIn.ts +7 -0
- package/dist/interfaces/global-interface/ISystemCatalogAcademicYear.ts +15 -0
- package/dist/interfaces/global-interface/ISystemCatalogDomainCategory.ts +11 -0
- package/dist/interfaces/global-interface/ISystemCatalogProjectLevelCategory.ts +11 -0
- package/dist/interfaces/global-interface/ISystemCatalogProjectTypeCategory.ts +11 -0
- package/dist/interfaces/global-interface/ISystemCatalogRoleActivity.ts +11 -0
- package/dist/interfaces/global-interface/ISystemCatalogTaskCategory.ts +11 -0
- package/dist/interfaces/global-interface/ISystemManagementAcademicHistory.ts +31 -0
- package/dist/interfaces/global-interface/ISystemManagementProfessionalWorkHistory.ts +14 -0
- package/dist/interfaces/global-interface/ISystemManagementPublishedScientificWork.ts +14 -0
- package/dist/interfaces/global-interface/ISystemManagementRoleGroup.ts +12 -0
- package/dist/interfaces/global-interface/ISystemManagementRoleGroupMenuPermission.ts +18 -0
- package/dist/interfaces/global-interface/ISystemManagementScientificResearchProject.ts +16 -0
- package/dist/interfaces/global-interface/ISystemManagementUserMenuPermission.ts +18 -0
- package/dist/interfaces/global-interface/IUpdateAccount.ts +15 -0
- package/dist/interfaces/global-interface/IUser.ts +21 -0
- package/dist/interfaces/global-interface/IUserPermission.ts +7 -0
- package/dist/lib/utils.ts +6 -0
- package/dist/modules-features/admin/core/MainDashboard/BarChart_CourseStatus.tsx +87 -0
- package/dist/modules-features/admin/core/MainDashboard/BarChart_ExamStatus.tsx +65 -0
- package/dist/modules-features/admin/core/MainDashboard/BarChart_RevenueByAcademicYear.tsx +82 -0
- package/dist/modules-features/admin/core/MainDashboard/BarChart_StudentStatusIn30Days.tsx +67 -0
- package/dist/modules-features/admin/core/MainDashboard/HBarChart_CourseDropOutPercentage.tsx +77 -0
- package/dist/modules-features/admin/core/MainDashboard/HBarChart_CourseProgressPercentage.tsx +77 -0
- package/dist/modules-features/admin/core/MainDashboard/LineChart_RevenueIn12Months.tsx +78 -0
- package/dist/modules-features/admin/core/MainDashboard/LineChart_TotalRevenueByDiscountIn3Months.tsx +69 -0
- package/dist/modules-features/admin/core/MainDashboard/LineChart_TotalRevenueByVoucherIn3Months.tsx +69 -0
- package/dist/modules-features/admin/core/MainDashboard/LineChart_TotalStudentIn12Months.tsx +64 -0
- package/dist/modules-features/admin/core/MainDashboard/ViewDiscountStat.tsx +311 -0
- package/dist/modules-features/admin/core/MainDashboard/ViewVoucherStat.tsx +311 -0
- package/dist/modules-features/admin/core/core12196/F_core12196.tsx +20 -0
- package/dist/modules-features/admin/core/core12196/F_core12196_Create.tsx +101 -0
- package/dist/modules-features/admin/core/core12196/F_core12196_Delete.tsx +19 -0
- package/dist/modules-features/admin/core/core12196/F_core12196_Read.tsx +165 -0
- package/dist/modules-features/admin/core/core12196/F_core12196_Update.tsx +112 -0
- package/dist/modules-features/admin/core/core16209/F_core16209.tsx +108 -0
- package/dist/modules-features/admin/core/core16209/F_core16209_Create.tsx +112 -0
- package/dist/modules-features/admin/core/core16209/F_core16209_Delete.tsx +17 -0
- package/dist/modules-features/admin/core/core16209/F_core16209_Update.tsx +114 -0
- package/dist/modules-features/admin/core/core18256/F_core18256.tsx +29 -0
- package/dist/modules-features/admin/core/core18256/F_core18256_Create.tsx +34 -0
- package/dist/modules-features/admin/core/core18256/F_core18256_Delete.tsx +14 -0
- package/dist/modules-features/admin/core/core18256/F_core18256_Read.tsx +59 -0
- package/dist/modules-features/admin/core/core18256/F_core18256_Select.tsx +40 -0
- package/dist/modules-features/admin/core/core18256/F_core18256_Update.tsx +22 -0
- package/dist/modules-features/admin/core/core26965/F_core26965.tsx +17 -0
- package/dist/modules-features/admin/core/core26965/F_core26965_Create.tsx +106 -0
- package/dist/modules-features/admin/core/core26965/F_core26965_Delete.tsx +19 -0
- package/dist/modules-features/admin/core/core26965/F_core26965_Read.tsx +165 -0
- package/dist/modules-features/admin/core/core26965/F_core26965_Update.tsx +112 -0
- package/dist/modules-features/admin/core/core27311/F_core27311.tsx +21 -0
- package/dist/modules-features/admin/core/core27311/F_core27311_Create.tsx +109 -0
- package/dist/modules-features/admin/core/core27311/F_core27311_Delete.tsx +19 -0
- package/dist/modules-features/admin/core/core27311/F_core27311_Read.tsx +165 -0
- package/dist/modules-features/admin/core/core27311/F_core27311_Update.tsx +113 -0
- package/dist/modules-features/admin/core/core35923/F_core35923.tsx +46 -0
- package/dist/modules-features/admin/core/core38677/F_core38677.tsx +28 -0
- package/dist/modules-features/admin/core/core38677/F_core38677_ReadUser.tsx +79 -0
- package/dist/modules-features/admin/core/core38677/F_core38677_Save.tsx +52 -0
- package/dist/modules-features/admin/core/core38677/F_core38677_ViewMenuPermissions.tsx +264 -0
- package/dist/modules-features/admin/core/core40207/F_core40207.tsx +9 -0
- package/dist/modules-features/admin/core/core40207/F_core40207_Create.tsx +81 -0
- package/dist/modules-features/admin/core/core40207/F_core40207_Delete.tsx +17 -0
- package/dist/modules-features/admin/core/core40207/F_core40207_Read.tsx +98 -0
- package/dist/modules-features/admin/core/core40207/F_core40207_Update.tsx +83 -0
- package/dist/modules-features/admin/core/core47643/F_core47643.tsx +10 -0
- package/dist/modules-features/admin/core/core47643/F_core47643_Delete.tsx +13 -0
- package/dist/modules-features/admin/core/core47643/F_core47643_Form.tsx +34 -0
- package/dist/modules-features/admin/core/core47643/F_core47643_Read.tsx +57 -0
- package/dist/modules-features/admin/core/core60524/F_core60524.tsx +13 -0
- package/dist/modules-features/admin/core/core60524/F_core60524_Form.tsx +111 -0
- package/dist/modules-features/admin/core/core60524/F_core60524_Save.tsx +56 -0
- package/dist/modules-features/admin/core/core60524/useS_core60524.ts +16 -0
- package/dist/modules-features/admin/core/core64229/F_core64229.tsx +7 -0
- package/dist/modules-features/admin/core/core64229/F_core64229_Delete.tsx +21 -0
- package/dist/modules-features/admin/core/core64229/F_core64229_Form.tsx +95 -0
- package/dist/modules-features/admin/core/core64229/F_core64229_Read.tsx +67 -0
- package/dist/modules-features/admin/core/core71678/F_core71678.tsx +8 -0
- package/dist/modules-features/admin/core/core71678/F_core71678_ChangePermission.tsx +117 -0
- package/dist/modules-features/admin/core/core71678/F_core71678_Create.tsx +61 -0
- package/dist/modules-features/admin/core/core71678/F_core71678_Delete.tsx +16 -0
- package/dist/modules-features/admin/core/core71678/F_core71678_Read.tsx +92 -0
- package/dist/modules-features/admin/core/core71678/F_core71678_Update.tsx +49 -0
- package/dist/modules-features/admin/core/core76318/F_core76318.tsx +9 -0
- package/dist/modules-features/admin/core/core76318/F_core76318_Create.tsx +89 -0
- package/dist/modules-features/admin/core/core76318/F_core76318_Delete.tsx +17 -0
- package/dist/modules-features/admin/core/core76318/F_core76318_Read.tsx +104 -0
- package/dist/modules-features/admin/core/core76318/F_core76318_Update.tsx +89 -0
- package/dist/modules-features/admin/core/core83092/F_core83092.tsx +27 -0
- package/dist/modules-features/admin/core/core83092/F_core83092_ReadUser.tsx +85 -0
- package/dist/modules-features/admin/core/core83092/F_core83092_Save.tsx +52 -0
- package/dist/modules-features/admin/core/core83092/F_core83092_ViewMenuPermissions.tsx +263 -0
- package/dist/modules-features/admin/core/core83092/useS_core83092.tsx +70 -0
- package/dist/modules-features/authenticate/F_authenticate_Login/F_authenticate_Login.tsx +154 -0
- package/dist/modules-features/authenticate/F_authenticate_Login/css.module.css +4 -0
- package/dist/modules-features/authenticate/F_authenticate_Logout.tsx +22 -0
- package/dist/modules-features/authenticate/F_authenticate_SplashPage.tsx +21 -0
- package/dist/modules-features/authenticate/useS_authenticate.ts +23 -0
- package/dist/modules-features/index.mjs +2 -2
- package/dist/modules-features/index.ts +79 -0
- package/dist/providers/MyMantineProvider.tsx +140 -0
- package/dist/providers/MyReactQueryProvider.tsx +24 -0
- package/dist/providers/Provider.tsx +13 -0
- package/dist/providers/mantine.module.css +21 -0
- package/dist/stores/CreateGenericStore.ts +23 -0
- package/dist/stores/index.ts +1 -0
- package/dist/types/types.ts +16 -0
- package/dist/utils/index.ts +9 -0
- package/dist/utils/utils_converter.ts +39 -0
- package/dist/utils/utils_currency.ts +5 -0
- package/dist/utils/utils_date.ts +34 -0
- package/dist/utils/utils_excel.ts +128 -0
- package/dist/utils/utils_file.ts +61 -0
- package/dist/utils/utils_notification.ts +46 -0
- package/dist/utils/utils_pdf.ts +21 -0
- package/dist/utils/utils_time.ts +15 -0
- package/dist/utils/utils_validateForm.ts +9 -0
- package/package.json +1 -1
- package/dist/modules-features/index.css +0 -100
@@ -0,0 +1,263 @@
|
|
1
|
+
'use client'
|
2
|
+
import baseAxios from "@/api/baseAxios";
|
3
|
+
import { MyCenterFull } from "@/components/CenterFull/MyCenterFull";
|
4
|
+
import { groupToTwoLevels, I_BasicAppShell_LinkItem, utils_layout_getItemsWithoutLinks } from "@/components/Layouts/BasicAppShell/BasicAppShell";
|
5
|
+
import { MyFlexRow } from "@/components/Layouts/FlexRow/MyFlexRow";
|
6
|
+
import { OBJECT_COlORS } from "@/constants/object/color";
|
7
|
+
import { Checkbox, Flex, ScrollArea, Table, Text } from "@mantine/core";
|
8
|
+
import { IconEdit, IconEyeUp, IconFileExport, IconPlus, IconPrinter, IconTrash } from "@tabler/icons-react";
|
9
|
+
import { useQuery } from "@tanstack/react-query";
|
10
|
+
import React, { useEffect, useState } from "react";
|
11
|
+
import { I_core83092_RolePermission, useS_core83092, utils_core83092_mergePage } from "./useS_core83092";
|
12
|
+
|
13
|
+
const title = "Danh sách chức năng"
|
14
|
+
export function F_core83092_ViewMenuPermissions({ menuData }: { menuData: I_BasicAppShell_LinkItem[] }) {
|
15
|
+
const store = useS_core83092()
|
16
|
+
const query = useGetUserPermission({ menuData })
|
17
|
+
const list = useState<I_BasicAppShell_LinkItem[]>([])
|
18
|
+
useEffect(() => {
|
19
|
+
list[1](groupToTwoLevels(menuData))
|
20
|
+
}, [])
|
21
|
+
|
22
|
+
useEffect(() => {
|
23
|
+
if (!query.data) return
|
24
|
+
store.setProperty("rolePermissions", query.data)
|
25
|
+
|
26
|
+
}, [query.data])
|
27
|
+
if (list[0]?.length == 0) return "Đang tải..."
|
28
|
+
return (
|
29
|
+
<ScrollArea.Autosize h={'70vh'} >
|
30
|
+
<Table>
|
31
|
+
<Table.Thead
|
32
|
+
bg={"light-dark(var(--mantine-color-white), var(--mantine-color-dark-8))"}
|
33
|
+
style={{
|
34
|
+
position: 'sticky',
|
35
|
+
top: 0, zIndex: 1,
|
36
|
+
boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.1)',
|
37
|
+
border: '1px solid var(--mantine-color-gray-4)',
|
38
|
+
}}>
|
39
|
+
<Table.Tr>
|
40
|
+
<Table.Th>{title}</Table.Th>
|
41
|
+
<Table.Th >
|
42
|
+
<Flex gap={3} direction={"column"} justify={"center"} align={"center"}>
|
43
|
+
<Checkbox checked={store.isAllPermission("isRead")} onChange={(e) => {
|
44
|
+
store.toogleAllPermissionWithType("isRead", e.target.checked)
|
45
|
+
}}></Checkbox>
|
46
|
+
<MyFlexRow gap={3}>Xem<IconEyeUp color={"gray"} /></MyFlexRow>
|
47
|
+
</Flex>
|
48
|
+
</Table.Th>
|
49
|
+
<Table.Th >
|
50
|
+
<Flex gap={3} direction={"column"} justify={"center"} align={"center"}>
|
51
|
+
<Checkbox checked={store.isAllPermission("isCreate")} onChange={(e) => {
|
52
|
+
store.toogleAllPermissionWithType("isCreate", e.target.checked)
|
53
|
+
}}></Checkbox>
|
54
|
+
<MyFlexRow gap={3}>Thêm<IconPlus color={"blue"} /></MyFlexRow>
|
55
|
+
</Flex>
|
56
|
+
</Table.Th>
|
57
|
+
<Table.Th >
|
58
|
+
<Flex gap={3} direction={"column"} justify={"center"} align={"center"}>
|
59
|
+
<Checkbox checked={store.isAllPermission("isUpdate")} onChange={(e) => {
|
60
|
+
store.toogleAllPermissionWithType("isUpdate", e.target.checked)
|
61
|
+
}}></Checkbox>
|
62
|
+
<MyFlexRow gap={3}>Sửa<IconEdit color={"var(--mantine-color-yellow-8)"} /></MyFlexRow>
|
63
|
+
</Flex>
|
64
|
+
</Table.Th>
|
65
|
+
<Table.Th >
|
66
|
+
<Flex gap={3} direction={"column"} justify={"center"} align={"center"}>
|
67
|
+
<Checkbox checked={store.isAllPermission("isDelete")} onChange={(e) => {
|
68
|
+
store.toogleAllPermissionWithType("isDelete", e.target.checked)
|
69
|
+
}}></Checkbox>
|
70
|
+
<MyFlexRow gap={3}>Xóa<IconTrash color={"var(--mantine-color-red-8)"} /></MyFlexRow>
|
71
|
+
</Flex>
|
72
|
+
</Table.Th>
|
73
|
+
<Table.Th >
|
74
|
+
<Flex gap={3} direction={"column"} justify={"center"} align={"center"}>
|
75
|
+
<Checkbox checked={store.isAllPermission("isPrint")} onChange={(e) => {
|
76
|
+
store.toogleAllPermissionWithType("isPrint", e.target.checked)
|
77
|
+
}}></Checkbox>
|
78
|
+
<MyFlexRow gap={3}>In<IconPrinter color={"var(--mantine-color-cyan-8)"} /></MyFlexRow>
|
79
|
+
</Flex>
|
80
|
+
</Table.Th>
|
81
|
+
<Table.Th >
|
82
|
+
<Flex gap={3} direction={"column"} justify={"center"} align={"center"}>
|
83
|
+
<Checkbox checked={store.isAllPermission("isExport")} onChange={(e) => {
|
84
|
+
store.toogleAllPermissionWithType("isExport", e.target.checked)
|
85
|
+
}}></Checkbox>
|
86
|
+
<MyFlexRow gap={3}>Xuất<IconFileExport color={"var(--mantine-color-green-8)"} /></MyFlexRow>
|
87
|
+
</Flex>
|
88
|
+
</Table.Th>
|
89
|
+
</Table.Tr>
|
90
|
+
</Table.Thead>
|
91
|
+
<Table.Tbody bg={"light-dark(var(--mantine-color-white), var(--mantine-color-dark-8))"}>
|
92
|
+
{list[0]?.map((item, idx) => {
|
93
|
+
if (item.links == undefined) return (
|
94
|
+
<Table.Tr key={idx}>
|
95
|
+
<Table.Td>{item.label}</Table.Td>
|
96
|
+
<Table.Td >
|
97
|
+
<MyCenterFull>
|
98
|
+
<Checkbox />
|
99
|
+
</MyCenterFull>
|
100
|
+
</Table.Td>
|
101
|
+
<Table.Td>
|
102
|
+
<MyCenterFull>
|
103
|
+
<Checkbox />
|
104
|
+
</MyCenterFull>
|
105
|
+
</Table.Td>
|
106
|
+
<Table.Td>
|
107
|
+
<MyCenterFull>
|
108
|
+
<Checkbox />
|
109
|
+
</MyCenterFull>
|
110
|
+
</Table.Td>
|
111
|
+
<Table.Td>
|
112
|
+
<MyCenterFull>
|
113
|
+
<Checkbox />
|
114
|
+
</MyCenterFull>
|
115
|
+
</Table.Td>
|
116
|
+
<Table.Td>
|
117
|
+
<MyCenterFull>
|
118
|
+
<Checkbox />
|
119
|
+
</MyCenterFull>
|
120
|
+
</Table.Td>
|
121
|
+
<Table.Td>
|
122
|
+
<MyCenterFull>
|
123
|
+
<Checkbox />
|
124
|
+
</MyCenterFull>
|
125
|
+
</Table.Td>
|
126
|
+
</Table.Tr>
|
127
|
+
)
|
128
|
+
|
129
|
+
return (
|
130
|
+
<React.Fragment key={idx}>
|
131
|
+
<Table.Tr key={item.label}>
|
132
|
+
<Table.Td
|
133
|
+
colSpan={7}
|
134
|
+
bg={OBJECT_COlORS.mantineBackgroundBlueLight}>
|
135
|
+
<Text fs={"oblique"} size="sm" fw={"bold"}>
|
136
|
+
{item.label}
|
137
|
+
</Text>
|
138
|
+
</Table.Td>
|
139
|
+
</Table.Tr>
|
140
|
+
{item.links.map((item, idx) =>
|
141
|
+
<Table.Tr key={idx}>
|
142
|
+
<Table.Td>{item.label}</Table.Td>
|
143
|
+
<Table.Td >
|
144
|
+
<MyCenterFull>
|
145
|
+
<Checkbox
|
146
|
+
checked={store.findByPageId(item.pageId!)?.isRead || false}
|
147
|
+
onChange={(e) => {
|
148
|
+
store.updatePermission(item.pageId!, {
|
149
|
+
isRead: e.target.checked
|
150
|
+
})
|
151
|
+
}}
|
152
|
+
/>
|
153
|
+
</MyCenterFull>
|
154
|
+
</Table.Td>
|
155
|
+
<Table.Td>
|
156
|
+
<MyCenterFull>
|
157
|
+
<Checkbox
|
158
|
+
checked={store.findByPageId(item.pageId!)?.isCreate || false}
|
159
|
+
onChange={(e) => {
|
160
|
+
store.updatePermission(item.pageId!, {
|
161
|
+
isCreate: e.target.checked
|
162
|
+
})
|
163
|
+
}}
|
164
|
+
/>
|
165
|
+
</MyCenterFull>
|
166
|
+
</Table.Td>
|
167
|
+
<Table.Td>
|
168
|
+
<MyCenterFull>
|
169
|
+
<Checkbox
|
170
|
+
checked={store.findByPageId(item.pageId!)?.isUpdate || false}
|
171
|
+
onChange={(e) => {
|
172
|
+
store.updatePermission(item.pageId!, {
|
173
|
+
isUpdate: e.target.checked
|
174
|
+
})
|
175
|
+
}}
|
176
|
+
/>
|
177
|
+
</MyCenterFull>
|
178
|
+
</Table.Td>
|
179
|
+
<Table.Td>
|
180
|
+
<MyCenterFull>
|
181
|
+
<Checkbox
|
182
|
+
checked={store.findByPageId(item.pageId!)?.isDelete || false}
|
183
|
+
onChange={(e) => {
|
184
|
+
store.updatePermission(item.pageId!, {
|
185
|
+
isDelete: e.target.checked
|
186
|
+
})
|
187
|
+
}}
|
188
|
+
/>
|
189
|
+
</MyCenterFull>
|
190
|
+
</Table.Td>
|
191
|
+
<Table.Td>
|
192
|
+
<MyCenterFull>
|
193
|
+
<Checkbox
|
194
|
+
checked={store.findByPageId(item.pageId!)?.isPrint || false}
|
195
|
+
onChange={(e) => {
|
196
|
+
store.updatePermission(item.pageId!, {
|
197
|
+
isPrint: e.target.checked
|
198
|
+
})
|
199
|
+
}}
|
200
|
+
/>
|
201
|
+
</MyCenterFull>
|
202
|
+
</Table.Td>
|
203
|
+
<Table.Td>
|
204
|
+
<MyCenterFull>
|
205
|
+
<Checkbox
|
206
|
+
checked={store.findByPageId(item.pageId!)?.isExport || false}
|
207
|
+
onChange={(e) => {
|
208
|
+
store.updatePermission(item.pageId!, {
|
209
|
+
isExport: e.target.checked
|
210
|
+
})
|
211
|
+
}}
|
212
|
+
/>
|
213
|
+
</MyCenterFull>
|
214
|
+
</Table.Td>
|
215
|
+
</Table.Tr>
|
216
|
+
)}
|
217
|
+
</React.Fragment>
|
218
|
+
)
|
219
|
+
})}
|
220
|
+
</Table.Tbody>
|
221
|
+
</Table>
|
222
|
+
</ScrollArea.Autosize>
|
223
|
+
)
|
224
|
+
}
|
225
|
+
|
226
|
+
function useGetUserPermission({ menuData }: { menuData: I_BasicAppShell_LinkItem[] }) {
|
227
|
+
const store = useS_core83092()
|
228
|
+
const query = useQuery<I_core83092_RolePermission[]>({
|
229
|
+
queryKey: ['F_7p4mh9d75x_AuthorizationTable', store.state.roleId],
|
230
|
+
queryFn: async () => {
|
231
|
+
const result = await baseAxios.get('/Role/GetUserPermission?userId=' + store.state.roleId)
|
232
|
+
const menudataFinal = utils_layout_getItemsWithoutLinks(menuData)
|
233
|
+
if (result.data.data.length == 0) {
|
234
|
+
const final = menudataFinal.map((item) => ({
|
235
|
+
pageId: item.pageId,
|
236
|
+
isRead: false,
|
237
|
+
isCreate: false,
|
238
|
+
isUpdate: false,
|
239
|
+
isDelete: false,
|
240
|
+
isExport: false,
|
241
|
+
isPrint: false,
|
242
|
+
}) as I_core83092_RolePermission)
|
243
|
+
return final.filter(item => item.pageId != undefined)
|
244
|
+
}
|
245
|
+
const menuDataFromAPI = result.data.data
|
246
|
+
const mergedArray = utils_core83092_mergePage(menudataFinal, menuDataFromAPI).map(item => ({
|
247
|
+
pageId: item.pageId,
|
248
|
+
isCreate: item.isCreate || false,
|
249
|
+
isRead: item.isRead || false,
|
250
|
+
isUpdate: item.isUpdate || false || false,
|
251
|
+
isDelete: item.isDelete,
|
252
|
+
isPrint: item.isPrint || false,
|
253
|
+
isExport: item.isExport || false
|
254
|
+
}) as I_core83092_RolePermission).filter(item => item.pageId != undefined)
|
255
|
+
return mergedArray
|
256
|
+
},
|
257
|
+
enabled: store.state.roleId != 0,
|
258
|
+
refetchOnWindowFocus: false
|
259
|
+
})
|
260
|
+
return query
|
261
|
+
}
|
262
|
+
|
263
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import { createGenericStore } from "@/stores/CreateGenericStore";
|
2
|
+
|
3
|
+
export interface I_core83092_RolePermission {
|
4
|
+
pageId?: number;
|
5
|
+
isCreate?: boolean;
|
6
|
+
isUpdate?: boolean;
|
7
|
+
isDelete?: boolean;
|
8
|
+
isRead?: boolean;
|
9
|
+
isPrint?: boolean;
|
10
|
+
isExport?: boolean;
|
11
|
+
}
|
12
|
+
|
13
|
+
interface I {
|
14
|
+
roleId?: number
|
15
|
+
rolePermissions?: I_core83092_RolePermission[]
|
16
|
+
}
|
17
|
+
|
18
|
+
const useStore = createGenericStore<I>({
|
19
|
+
initialState: { roleId: 0 },
|
20
|
+
storageKey: "useS_core83092"
|
21
|
+
});
|
22
|
+
export function useS_core83092() {
|
23
|
+
const store = useStore()
|
24
|
+
function toogleAllPermissionWithType(field: keyof I_core83092_RolePermission, isCheck: boolean) {
|
25
|
+
const updatedData = store.state.rolePermissions?.map(item => ({
|
26
|
+
...item,
|
27
|
+
[field]: isCheck
|
28
|
+
}))
|
29
|
+
store.setProperty("rolePermissions", updatedData)
|
30
|
+
}
|
31
|
+
function findByPageId(pageId: number): I_core83092_RolePermission | undefined {
|
32
|
+
const rolePermission = store.state.rolePermissions?.find(item => item.pageId == pageId)
|
33
|
+
return rolePermission
|
34
|
+
}
|
35
|
+
function updatePermission(pageId: number, updatedPermission: Partial<I_core83092_RolePermission>) {
|
36
|
+
const updatedData = store.state.rolePermissions?.map(item =>
|
37
|
+
item.pageId === pageId ? { ...item, ...updatedPermission } : item
|
38
|
+
);
|
39
|
+
store.setProperty("rolePermissions", updatedData);
|
40
|
+
}
|
41
|
+
function isAllPermission(field: keyof I_core83092_RolePermission): boolean {
|
42
|
+
return store.state.rolePermissions?.every(item => item[field] === true) ?? false;
|
43
|
+
}
|
44
|
+
return {
|
45
|
+
...store,
|
46
|
+
toogleAllPermissionWithType,
|
47
|
+
findByPageId,
|
48
|
+
updatePermission,
|
49
|
+
isAllPermission
|
50
|
+
};
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
export function utils_core83092_mergePage(arr1: I_core83092_RolePermission[], arr2: I_core83092_RolePermission[]): I_core83092_RolePermission[] {
|
55
|
+
const pageMap = new Map<number, I_core83092_RolePermission>();
|
56
|
+
|
57
|
+
// Đưa tất cả object từ arr1 vào Map
|
58
|
+
arr1.forEach(page => pageMap.set(page.pageId!, page));
|
59
|
+
|
60
|
+
// Chỉ thay thế nếu id đã tồn tại trong arr1
|
61
|
+
arr2.forEach(page => {
|
62
|
+
if (pageMap.has(page.pageId!)) {
|
63
|
+
pageMap.set(page.pageId!, page); // Ghi đè object từ arr2
|
64
|
+
}
|
65
|
+
});
|
66
|
+
|
67
|
+
// Chuyển Map thành mảng kết quả
|
68
|
+
return Array.from(pageMap.values());
|
69
|
+
}
|
70
|
+
|
@@ -0,0 +1,154 @@
|
|
1
|
+
"use client";
|
2
|
+
import { MyFlexColumn } from "@/components/Layouts/FlexColumn/MyFlexColumn";
|
3
|
+
import {
|
4
|
+
Anchor,
|
5
|
+
BackgroundImage,
|
6
|
+
Button,
|
7
|
+
Center,
|
8
|
+
Checkbox,
|
9
|
+
Flex,
|
10
|
+
Group,
|
11
|
+
Paper,
|
12
|
+
PasswordInput,
|
13
|
+
Text,
|
14
|
+
TextInput,
|
15
|
+
Title
|
16
|
+
} from "@mantine/core";
|
17
|
+
import { useForm } from "@mantine/form";
|
18
|
+
import { useMutation } from "@tanstack/react-query";
|
19
|
+
import axios from "axios";
|
20
|
+
import Link from "next/link";
|
21
|
+
import { useRouter } from "next/navigation";
|
22
|
+
import { ReactNode, useState } from "react";
|
23
|
+
import { useS_authenticate } from "../useS_authenticate";
|
24
|
+
import classes from "./css.module.css";
|
25
|
+
|
26
|
+
interface ILoginInfo {
|
27
|
+
username?: string,
|
28
|
+
password?: string,
|
29
|
+
}
|
30
|
+
|
31
|
+
interface I {
|
32
|
+
loginInfo?: ILoginInfo
|
33
|
+
redirectUrlAfterLogin?: string
|
34
|
+
additionalActions?: ReactNode
|
35
|
+
backgroundImage?: string
|
36
|
+
onSuccess?: (data?: any) => void
|
37
|
+
}
|
38
|
+
|
39
|
+
export function F_authenticate_Login({
|
40
|
+
loginInfo,
|
41
|
+
redirectUrlAfterLogin = "/admin/dashboard",
|
42
|
+
additionalActions,
|
43
|
+
backgroundImage = "/imgs/0/IMG0AuthBackground.png",
|
44
|
+
onSuccess
|
45
|
+
}: I) {
|
46
|
+
const router = useRouter()
|
47
|
+
const authenticate_store = useS_authenticate()
|
48
|
+
const loadingState = useState<boolean | undefined>(false)
|
49
|
+
const mutation = useM_Account_Sigin()
|
50
|
+
const form = useForm<ILoginInfo>({
|
51
|
+
mode: "uncontrolled",
|
52
|
+
initialValues: {
|
53
|
+
username: loginInfo?.username || "admincoe",
|
54
|
+
password: loginInfo?.password || "123456"
|
55
|
+
},
|
56
|
+
validate: {
|
57
|
+
username: (value) => value ? null : 'Không được để trống',
|
58
|
+
password: (value) => value ? null : 'Không được để trống'
|
59
|
+
}
|
60
|
+
})
|
61
|
+
function handleSubmit(userName?: string, passWord?: string) {
|
62
|
+
loadingState[1](true)
|
63
|
+
mutation.mutate({
|
64
|
+
"userName": userName,
|
65
|
+
"passWord": passWord
|
66
|
+
}, {
|
67
|
+
onSuccess: (data) => {
|
68
|
+
if (data.isSuccess === false) {
|
69
|
+
form.setFieldError("username", "Tài khoản không tồn tại")
|
70
|
+
loadingState[1](false)
|
71
|
+
return
|
72
|
+
}
|
73
|
+
if (data.isSuccess == 0) {
|
74
|
+
form.setFieldError("password", data.message)
|
75
|
+
loadingState[1](false)
|
76
|
+
return
|
77
|
+
}
|
78
|
+
authenticate_store.setProperty("code", data.data.userName)
|
79
|
+
authenticate_store.setProperty("fullName", data.data.userFullName)
|
80
|
+
authenticate_store.setProperty("userId", data.data.userId)
|
81
|
+
authenticate_store.setProperty("token", data.data.token)
|
82
|
+
if (onSuccess) {
|
83
|
+
onSuccess(data)
|
84
|
+
loadingState[1](false)
|
85
|
+
return
|
86
|
+
}
|
87
|
+
router.replace(redirectUrlAfterLogin)
|
88
|
+
},
|
89
|
+
})
|
90
|
+
}
|
91
|
+
return (
|
92
|
+
<BackgroundImage
|
93
|
+
src={backgroundImage}
|
94
|
+
h={'100vh'}
|
95
|
+
>
|
96
|
+
<Center h={'100vh'}>
|
97
|
+
<Paper withBorder w={400} m={"md"} shadow="md" p={30} mt={30} radius="md">
|
98
|
+
<Flex direction={"column"} mb={"md"}>
|
99
|
+
<Title ta="center" className={classes.title}>
|
100
|
+
Đăng nhập!
|
101
|
+
</Title>
|
102
|
+
<Text c="dimmed" size="sm" ta="center" mt={5}>
|
103
|
+
Bạn gặp vấn đề kỹ thuật?
|
104
|
+
<Anchor size="sm" component="button">
|
105
|
+
Vào link này
|
106
|
+
</Anchor>
|
107
|
+
</Text>
|
108
|
+
</Flex>
|
109
|
+
<form onSubmit={form.onSubmit(async values => handleSubmit(values.username, values.password))}>
|
110
|
+
<MyFlexColumn>
|
111
|
+
<TextInput
|
112
|
+
{...form.getInputProps("username")}
|
113
|
+
label="Tài khoản"
|
114
|
+
placeholder="Nhập tài khoản của bạn"
|
115
|
+
withAsterisk
|
116
|
+
/>
|
117
|
+
<PasswordInput
|
118
|
+
{...form.getInputProps("password")}
|
119
|
+
label="Mật khẩu"
|
120
|
+
placeholder="Nhập mật khẩu của bạn"
|
121
|
+
withAsterisk
|
122
|
+
/>
|
123
|
+
<Group justify="space-between" >
|
124
|
+
<Checkbox label="Lưu đăng nhập" />
|
125
|
+
<Anchor component={Link} href={"quen-mat-khau"} size="sm">
|
126
|
+
Quên mật khẩu?
|
127
|
+
</Anchor>
|
128
|
+
</Group>
|
129
|
+
<Button
|
130
|
+
loading={loadingState[0]}
|
131
|
+
type="submit"
|
132
|
+
fullWidth >
|
133
|
+
Đăng nhập
|
134
|
+
</Button>
|
135
|
+
{additionalActions}
|
136
|
+
</MyFlexColumn>
|
137
|
+
</form>
|
138
|
+
</Paper>
|
139
|
+
</Center>
|
140
|
+
</BackgroundImage>
|
141
|
+
|
142
|
+
);
|
143
|
+
}
|
144
|
+
|
145
|
+
function useM_Account_Sigin() {
|
146
|
+
const ENDPOINT = process.env.NEXT_PUBLIC_API + "/Account/SignIn"
|
147
|
+
const mutation = useMutation({
|
148
|
+
mutationFn: async (values: { userName?: string, passWord?: string }) => {
|
149
|
+
const result = await axios.post(ENDPOINT, values)
|
150
|
+
return result.data
|
151
|
+
}
|
152
|
+
})
|
153
|
+
return mutation
|
154
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { Button } from "@mantine/core";
|
2
|
+
import { IconLogout } from "@tabler/icons-react";
|
3
|
+
import { useRouter } from "next/navigation";
|
4
|
+
import { useS_authenticate } from "./useS_authenticate";
|
5
|
+
|
6
|
+
interface I {
|
7
|
+
redirectURL?: string
|
8
|
+
}
|
9
|
+
|
10
|
+
export function F_authenticate_Logout({ redirectURL = "/auth/login" }: I) {
|
11
|
+
const router = useRouter()
|
12
|
+
const S_Authenticate = useS_authenticate()
|
13
|
+
return (
|
14
|
+
<Button onClick={() => {
|
15
|
+
S_Authenticate.setProperty("token", "")
|
16
|
+
router.replace(redirectURL)
|
17
|
+
|
18
|
+
}} leftSection={<IconLogout />} fullWidth justify="start" variant="subtle">
|
19
|
+
Đăng xuất
|
20
|
+
</Button>
|
21
|
+
)
|
22
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
'use client'
|
2
|
+
import { MyBoxesBackground } from "@/components";
|
3
|
+
import { useRouter } from "next/navigation";
|
4
|
+
import { useEffect } from "react";
|
5
|
+
import { useS_authenticate } from "./useS_authenticate";
|
6
|
+
|
7
|
+
export function F_authenticate_SplashPage() {
|
8
|
+
const router = useRouter()
|
9
|
+
const S_Authenticate = useS_authenticate()
|
10
|
+
useEffect(() => {
|
11
|
+
if (S_Authenticate.state.token == "") {
|
12
|
+
router.push("/authenticate/login")
|
13
|
+
return
|
14
|
+
}
|
15
|
+
router.push("/admin/core71678")
|
16
|
+
|
17
|
+
}, [S_Authenticate.state.token])
|
18
|
+
return (
|
19
|
+
<MyBoxesBackground title="Hệ thống thông tin quản lí đào tạo ngắn hạn" />
|
20
|
+
);
|
21
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { createGenericStore } from "../../stores/CreateGenericStore";
|
2
|
+
|
3
|
+
interface I {
|
4
|
+
token?: string
|
5
|
+
userId?: number
|
6
|
+
fullName?: string
|
7
|
+
code?: string
|
8
|
+
}
|
9
|
+
|
10
|
+
const useStore = createGenericStore<I>({
|
11
|
+
initialState: { token: "" },
|
12
|
+
storageKey: "useS_authenticate"
|
13
|
+
})
|
14
|
+
export function useS_authenticate() {
|
15
|
+
const store = useStore()
|
16
|
+
|
17
|
+
function logOut() {
|
18
|
+
|
19
|
+
}
|
20
|
+
return {
|
21
|
+
...store
|
22
|
+
}
|
23
|
+
}
|
@@ -24,7 +24,7 @@ import {
|
|
24
24
|
groupToTwoLevels,
|
25
25
|
useS_authenticate,
|
26
26
|
utils_layout_getItemsWithoutLinks
|
27
|
-
} from "../chunk-
|
27
|
+
} from "../chunk-JLT4BL7I.mjs";
|
28
28
|
import {
|
29
29
|
baseAxios_default,
|
30
30
|
useQ_AQ_GetAQModule
|
@@ -3868,7 +3868,7 @@ import { useRouter as useRouter3 } from "next/navigation";
|
|
3868
3868
|
import { useState as useState9 } from "react";
|
3869
3869
|
|
3870
3870
|
// src/modules-features/authenticate/F_authenticate_Login/css.module.css
|
3871
|
-
var css_default =
|
3871
|
+
var css_default = "../css.module-P45UW6UZ.module.css";
|
3872
3872
|
|
3873
3873
|
// src/modules-features/authenticate/F_authenticate_Login/F_authenticate_Login.tsx
|
3874
3874
|
import { jsx as jsx75, jsxs as jsxs52 } from "react/jsx-runtime";
|
@@ -0,0 +1,79 @@
|
|
1
|
+
export * from './admin/core/core12196/F_core12196';
|
2
|
+
export * from './admin/core/core12196/F_core12196_Create';
|
3
|
+
export * from './admin/core/core12196/F_core12196_Delete';
|
4
|
+
export * from './admin/core/core12196/F_core12196_Read';
|
5
|
+
export * from './admin/core/core12196/F_core12196_Update';
|
6
|
+
export * from './admin/core/core16209/F_core16209';
|
7
|
+
export * from './admin/core/core16209/F_core16209_Create';
|
8
|
+
export * from './admin/core/core16209/F_core16209_Delete';
|
9
|
+
export * from './admin/core/core16209/F_core16209_Update';
|
10
|
+
export * from './admin/core/core18256/F_core18256';
|
11
|
+
export * from './admin/core/core18256/F_core18256_Create';
|
12
|
+
export * from './admin/core/core18256/F_core18256_Delete';
|
13
|
+
export * from './admin/core/core18256/F_core18256_Read';
|
14
|
+
export * from './admin/core/core18256/F_core18256_Select';
|
15
|
+
export * from './admin/core/core18256/F_core18256_Update';
|
16
|
+
export * from './admin/core/core26965/F_core26965';
|
17
|
+
export * from './admin/core/core26965/F_core26965_Create';
|
18
|
+
export * from './admin/core/core26965/F_core26965_Delete';
|
19
|
+
export * from './admin/core/core26965/F_core26965_Read';
|
20
|
+
export * from './admin/core/core26965/F_core26965_Update';
|
21
|
+
export * from './admin/core/core27311/F_core27311';
|
22
|
+
export * from './admin/core/core27311/F_core27311_Create';
|
23
|
+
export * from './admin/core/core27311/F_core27311_Delete';
|
24
|
+
export * from './admin/core/core27311/F_core27311_Read';
|
25
|
+
export * from './admin/core/core27311/F_core27311_Update';
|
26
|
+
export * from './admin/core/core35923/F_core35923';
|
27
|
+
export * from './admin/core/core38677/F_core38677';
|
28
|
+
export * from './admin/core/core38677/F_core38677_ReadUser';
|
29
|
+
export * from './admin/core/core38677/F_core38677_Save';
|
30
|
+
export * from './admin/core/core38677/F_core38677_ViewMenuPermissions';
|
31
|
+
export * from './admin/core/core40207/F_core40207';
|
32
|
+
export * from './admin/core/core40207/F_core40207_Create';
|
33
|
+
export * from './admin/core/core40207/F_core40207_Delete';
|
34
|
+
export * from './admin/core/core40207/F_core40207_Read';
|
35
|
+
export * from './admin/core/core40207/F_core40207_Update';
|
36
|
+
export * from './admin/core/core47643/F_core47643';
|
37
|
+
export * from './admin/core/core47643/F_core47643_Delete';
|
38
|
+
export * from './admin/core/core47643/F_core47643_Form';
|
39
|
+
export * from './admin/core/core47643/F_core47643_Read';
|
40
|
+
export * from './admin/core/core60524/F_core60524';
|
41
|
+
export * from './admin/core/core60524/F_core60524_Form';
|
42
|
+
export * from './admin/core/core60524/F_core60524_Save';
|
43
|
+
export * from './admin/core/core60524/useS_core60524';
|
44
|
+
export * from './admin/core/core64229/F_core64229';
|
45
|
+
export * from './admin/core/core64229/F_core64229_Delete';
|
46
|
+
export * from './admin/core/core64229/F_core64229_Form';
|
47
|
+
export * from './admin/core/core64229/F_core64229_Read';
|
48
|
+
export * from './admin/core/core71678/F_core71678';
|
49
|
+
export * from './admin/core/core71678/F_core71678_ChangePermission';
|
50
|
+
export * from './admin/core/core71678/F_core71678_Create';
|
51
|
+
export * from './admin/core/core71678/F_core71678_Delete';
|
52
|
+
export * from './admin/core/core71678/F_core71678_Read';
|
53
|
+
export * from './admin/core/core71678/F_core71678_Update';
|
54
|
+
export * from './admin/core/core76318/F_core76318';
|
55
|
+
export * from './admin/core/core76318/F_core76318_Create';
|
56
|
+
export * from './admin/core/core76318/F_core76318_Delete';
|
57
|
+
export * from './admin/core/core76318/F_core76318_Read';
|
58
|
+
export * from './admin/core/core76318/F_core76318_Update';
|
59
|
+
export * from './admin/core/core83092/F_core83092';
|
60
|
+
export * from './admin/core/core83092/F_core83092_ReadUser';
|
61
|
+
export * from './admin/core/core83092/F_core83092_Save';
|
62
|
+
export * from './admin/core/core83092/F_core83092_ViewMenuPermissions';
|
63
|
+
export * from './admin/core/core83092/useS_core83092';
|
64
|
+
export * from './admin/core/MainDashboard/BarChart_CourseStatus';
|
65
|
+
export * from './admin/core/MainDashboard/BarChart_ExamStatus';
|
66
|
+
export * from './admin/core/MainDashboard/BarChart_RevenueByAcademicYear';
|
67
|
+
export * from './admin/core/MainDashboard/BarChart_StudentStatusIn30Days';
|
68
|
+
export * from './admin/core/MainDashboard/HBarChart_CourseDropOutPercentage';
|
69
|
+
export * from './admin/core/MainDashboard/HBarChart_CourseProgressPercentage';
|
70
|
+
export * from './admin/core/MainDashboard/LineChart_RevenueIn12Months';
|
71
|
+
export * from './admin/core/MainDashboard/LineChart_TotalRevenueByDiscountIn3Months';
|
72
|
+
export * from './admin/core/MainDashboard/LineChart_TotalRevenueByVoucherIn3Months';
|
73
|
+
export * from './admin/core/MainDashboard/LineChart_TotalStudentIn12Months';
|
74
|
+
export * from './admin/core/MainDashboard/ViewDiscountStat';
|
75
|
+
export * from './admin/core/MainDashboard/ViewVoucherStat';
|
76
|
+
export * from './authenticate/F_authenticate_Logout';
|
77
|
+
export * from './authenticate/F_authenticate_SplashPage';
|
78
|
+
export * from './authenticate/useS_authenticate';
|
79
|
+
export * from './authenticate/F_authenticate_Login/F_authenticate_Login';
|