-
-
{t("access.page.title")}
-
{t("access.authorization.add")}} op="add" />
-
-
- {accesses.length === 0 ? (
-
-
-
-
-
-
{t("access.authorization.nodata")}
-
{t("access.authorization.add")}} op="add" className="mt-3" />
-
- ) : (
- <>
-
-
{t("common.text.name")}
-
{t("common.text.provider")}
-
-
{t("common.text.created_at")}
-
{t("common.text.updated_at")}
-
{t("common.text.operations")}
-
- {accesses.slice(startIndex, endIndex).map((access) => (
-
-
-
-
?.icon})
-
{t(accessProvidersMap.get(access.configType)?.name || "")}
-
-
-
{access.created && convertZulu2Beijing(access.created)}
-
{access.updated && convertZulu2Beijing(access.updated)}
-
-
- {t("common.edit")}
-
- }
- op="edit"
- data={access}
- />
-
-
- {t("common.copy")}
-
- }
- op="copy"
- data={access}
- />
-
-
-
-
-
-
-
- {t("access.authorization.delete")}
- {t("access.authorization.delete.confirm")}
-
-
- {t("common.cancel")}
- {
- handleDelete(access);
- }}
- >
- {t("common.confirm")}
-
-
-
-
-
-
- ))}
-
{
- query.set("page", page.toString());
- navigate({ search: query.toString() });
- }}
- />
- >
- )}
-
- );
-};
-
-export default Access;
diff --git a/ui/src/pages/accesses/AccessList.tsx b/ui/src/pages/accesses/AccessList.tsx
new file mode 100644
index 00000000..4a0ce3d9
--- /dev/null
+++ b/ui/src/pages/accesses/AccessList.tsx
@@ -0,0 +1,197 @@
+import { useEffect, useState } from "react";
+import { useTranslation } from "react-i18next";
+import { Avatar, Button, Modal, notification, Space, Table, Tooltip, Typography, type TableProps } from "antd";
+import { PageHeader } from "@ant-design/pro-components";
+import { Copy as CopyIcon, Pencil as PencilIcon, Plus as PlusIcon, Trash2 as Trash2Icon } from "lucide-react";
+import moment from "moment";
+
+import AccessEditDialog from "@/components/certimate/AccessEditDialog";
+import { Access as AccessType, accessProvidersMap } from "@/domain/access";
+import { remove as removeAccess } from "@/repository/access";
+import { useConfigContext } from "@/providers/config";
+
+const AccessList = () => {
+ const { t } = useTranslation();
+
+ const [modalApi, ModelContextHolder] = Modal.useModal();
+ const [notificationApi, NotificationContextHolder] = notification.useNotification();
+
+ const [loading, setLoading] = useState