add event remove dialog

This commit is contained in:
Timi
2026-08-31 11:27:01 +08:00
parent 8135350b02
commit fa199e6859
6 changed files with 190 additions and 38 deletions
+16 -17
View File
@@ -71,13 +71,19 @@
</t-pull-down-refresh>
</div>
<nav-bar-action-menu v-if="canShowActionMenu" :actions="actionList" />
<event-remove-dialog
v-model:visible="removeDialogVisible"
:event="removeTarget"
:loading="isRemoving"
@confirm="removeEvent"
/>
</template>
<script setup lang="ts">
import { DialogPlugin } from "tdesign-mobile-vue";
import { Message } from "@/utils/message";
import { type Page, type PageResult, type Role, useUserStore } from "timi-web-api";
import EventAPI from "@/api/EventAPI";
import EventRemoveDialog from "@/pages/event/component/EventRemoveDialog.vue";
import ManagedUserAPI from "@/api/ManagedUserAPI";
import { useCurrentStoreStore } from "@/store/currentStoreStore";
import { useNavBarStore } from "@/store/navBarStore";
@@ -132,6 +138,8 @@ const isRefreshing = ref(false);
const isLoading = ref(false);
const isNoMore = ref(false);
const isRemoving = ref(false);
const removeDialogVisible = ref(false);
const removeTarget = ref<EventItem>();
const removingEventId = ref("");
const page = reactive<Page<EventItem>>({
index: 0,
@@ -182,29 +190,20 @@ function openRemoveDialog(eventItem: EventItem): void {
return;
}
const eventName = eventItem.name || "未命名事件";
const dialog = DialogPlugin.confirm({
title: "删除登记事件",
content: `确定删除登记事件 ${eventName} 吗?删除后无法恢复。`,
cancelBtn: "取消",
confirmBtn: "删除",
onCancel() {
dialog.destroy();
},
async onConfirm() {
dialog.destroy();
await removeEvent(eventId);
}
});
removeTarget.value = eventItem;
removeDialogVisible.value = true;
}
async function removeEvent(eventId: string): Promise<void> {
if (isRemoving.value) {
async function removeEvent(eventItem: EventItem): Promise<void> {
const eventId = eventItem.id;
if (!eventId || isRemoving.value) {
return;
}
isRemoving.value = true;
removingEventId.value = eventId;
removeDialogVisible.value = false;
removeTarget.value = undefined;
try {
await EventAPI.remove(eventId);
pageResult.list = pageResult.list.filter(item => item.id !== eventId);