From 8656aa5abc4f867c262fcd06a54ebc87055b667a Mon Sep 17 00:00:00 2001 From: DevOps Date: Mon, 5 Jan 2026 15:59:09 +0800 Subject: [PATCH] feat(project): add venue selection for project management - Add venueId field to project form - Load venue list when competition is selected - Allow assigning projects to specific venues Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --- src/views/martial/project/index.vue | 48 ++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/src/views/martial/project/index.vue b/src/views/martial/project/index.vue index 5d37d4b..e6a440a 100644 --- a/src/views/martial/project/index.vue +++ b/src/views/martial/project/index.vue @@ -235,6 +235,7 @@ placeholder="请选择赛事" filterable style="width: 100%" + @change="handleCompetitionChangeInForm" > + + + + + + + + + { } } +// 表单中赛事变更时加载场地列表 +const handleCompetitionChangeInForm = async (competitionId) => { + form.venueId = null + venueList.value = [] + if (competitionId) { + try { + const res = await getVenuesByCompetition(competitionId) + venueList.value = res.data?.data?.records || [] + } catch (error) { + console.error('加载场地列表失败:', error) + } + } +} + // 查询数据 const fetchData = async () => { loading.value = true @@ -617,7 +654,7 @@ const handleAdd = () => { } // 编辑 -const handleEdit = (row) => { +const handleEdit = async (row) => { dialogTitle.value = '编辑项目' Object.keys(form).forEach((key) => { form[key] = row[key] @@ -626,6 +663,15 @@ const handleEdit = (row) => { if (row.price !== undefined) { form.registrationFee = row.price } + // 加载该赛事的场地列表 + if (row.competitionId) { + try { + const res = await getVenuesByCompetition(row.competitionId) + venueList.value = res.data?.data?.records || [] + } catch (error) { + console.error('加载场地列表失败:', error) + } + } dialogVisible.value = true }