feat: implement media editing functionality in App component, enhance MediaFormModal for editing, and update MediaItem to trigger edit action
This commit is contained in:
@@ -27,15 +27,16 @@
|
||||
let error = $state('');
|
||||
|
||||
// 媒体列表状态
|
||||
let currentCategory = $state('game');
|
||||
let currentCategory = $state<string>('game');
|
||||
let mediaList = $state<Media[]>([]);
|
||||
let currentPage = $state(1);
|
||||
let pageSize = $state(10);
|
||||
let totalItems = $state(0);
|
||||
let loading = $state(false);
|
||||
let currentPage = $state<number>(1);
|
||||
let pageSize = $state<number>(10);
|
||||
let totalItems = $state<number>(0);
|
||||
let loading = $state<boolean>(false);
|
||||
|
||||
// 模态框状态
|
||||
let showCreateModal = $state(false);
|
||||
let showCreateModal = $state<boolean>(false);
|
||||
let editingMedia = $state<Media | null>(null);
|
||||
|
||||
// 类别选项
|
||||
const categories = [
|
||||
@@ -169,6 +170,30 @@
|
||||
error = e.message || 'Failed to create media';
|
||||
}
|
||||
}
|
||||
|
||||
// 处理编辑媒体
|
||||
async function handleEdit(media: Media) {
|
||||
try {
|
||||
const response = await request.put<ApiResponse<Media>>(`/media/updateById/${media.id}`, {
|
||||
...media,
|
||||
type: currentCategory
|
||||
});
|
||||
|
||||
if (response.data.code === 0) {
|
||||
editingMedia = null;
|
||||
await fetchMediaList();
|
||||
} else {
|
||||
error = response.data.message || 'Failed to update media';
|
||||
}
|
||||
} catch (e: any) {
|
||||
error = e.message || 'Failed to update media';
|
||||
}
|
||||
}
|
||||
|
||||
// 处理编辑按钮点击
|
||||
function handleEditClick(media: Media) {
|
||||
editingMedia = media;
|
||||
}
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
@@ -275,7 +300,7 @@
|
||||
{:else}
|
||||
<div class="grid grid-cols-2 gap-6">
|
||||
{#each mediaList as media}
|
||||
<MediaItem {media} />
|
||||
<MediaItem {media} onEdit={handleEditClick} />
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
@@ -313,6 +338,15 @@
|
||||
handleClose={() => showCreateModal = false}
|
||||
submitMedia={handleCreate}
|
||||
mode="add"
|
||||
media={null}
|
||||
/>
|
||||
|
||||
<MediaFormModal
|
||||
show={editingMedia !== null}
|
||||
handleClose={() => editingMedia = null}
|
||||
submitMedia={handleEdit}
|
||||
mode="edit"
|
||||
media={editingMedia}
|
||||
/>
|
||||
|
||||
<style>
|
||||
|
||||
Reference in New Issue
Block a user