diff --git a/web/src/components/keys/GroupFormModal.vue b/web/src/components/keys/GroupFormModal.vue
index 449a363..d3613d4 100644
--- a/web/src/components/keys/GroupFormModal.vue
+++ b/web/src/components/keys/GroupFormModal.vue
@@ -245,11 +245,9 @@ async function handleSubmit() {
if (props.group?.id) {
// 编辑模式
res = await keysApi.updateGroup(props.group.id, submitData);
- message.success("分组更新成功");
} else {
// 新建模式
res = await keysApi.createGroup(submitData);
- message.success("分组创建成功");
}
emit("success", res);
@@ -295,11 +293,7 @@ async function handleSubmit() {
基础信息
-
+
diff --git a/web/src/components/keys/GroupInfoCard.vue b/web/src/components/keys/GroupInfoCard.vue
index 6c33624..1e399de 100644
--- a/web/src/components/keys/GroupInfoCard.vue
+++ b/web/src/components/keys/GroupInfoCard.vue
@@ -7,12 +7,13 @@ import {
NCard,
NCollapse,
NCollapseItem,
- NFlex,
NForm,
NFormItem,
+ NGrid,
+ NGridItem,
NSpin,
NTag,
- useMessage,
+ useDialog,
} from "naive-ui";
import { onMounted, ref, watch } from "vue";
import GroupFormModal from "./GroupFormModal.vue";
@@ -23,6 +24,7 @@ interface Props {
interface Emits {
(e: "refresh", value: Group): void;
+ (e: "delete", value: Group): void;
}
const props = defineProps();
@@ -31,7 +33,7 @@ const emit = defineEmits();
const stats = ref(null);
const loading = ref(false);
-const message = useMessage();
+const dialog = useDialog();
const showEditModal = ref(false);
onMounted(() => {
@@ -53,7 +55,9 @@ async function loadStats() {
try {
loading.value = true;
- stats.value = await keysApi.getGroupStats(props.group.id);
+ if (props.group?.id) {
+ stats.value = await keysApi.getGroupStats(props.group.id);
+ }
} finally {
loading.value = false;
}
@@ -71,7 +75,26 @@ function handleGroupEdited(newGroup: Group) {
}
function handleDelete() {
- message.info("删除分组功能开发中...");
+ if (!props.group) {
+ return;
+ }
+
+ dialog.warning({
+ title: "删除分组",
+ content: `确定要删除分组 "${getGroupDisplayName(props.group)}" 吗?此操作不可恢复。`,
+ positiveText: "确定",
+ negativeText: "取消",
+ onPositiveClick: async () => {
+ try {
+ if (props.group?.id) {
+ await keysApi.deleteGroup(props.group.id);
+ emit("delete", props.group);
+ }
+ } catch (error) {
+ console.error("删除分组失败:", error);
+ }
+ },
+ });
}
function formatNumber(num: number): string {
@@ -108,12 +131,8 @@ function copyUrl(url: string) {
@@ -134,6 +153,7 @@ function copyUrl(url: string) {
@click="handleDelete"
title="删除分组"
type="error"
+ :disabled="!group"
>