diff --git a/src/views/martial/deduction/index.vue b/src/views/martial/deduction/index.vue index 65a0d5c..81122f7 100644 --- a/src/views/martial/deduction/index.vue +++ b/src/views/martial/deduction/index.vue @@ -26,7 +26,7 @@ v-for="item in competitionList" :key="item.id" :label="item.competitionName" - :value="item.id" + :value="String(item.id)" /> @@ -43,7 +43,7 @@ v-for="item in projectList" :key="item.id" :label="item.projectName" - :value="item.id" + :value="String(item.id)" /> @@ -146,14 +146,14 @@ show-overflow-tooltip /> @@ -225,7 +225,7 @@ v-for="item in competitionList" :key="item.id" :label="item.competitionName" - :value="item.id" + :value="String(item.id)" /> @@ -240,7 +240,7 @@ v-for="item in projectList" :key="item.id" :label="item.projectName" - :value="item.id" + :value="String(item.id)" /> @@ -251,9 +251,9 @@ maxlength="100" /> - + @@ -389,6 +389,7 @@ const queryParams = reactive({ size: 10, competitionId: null, projectId: null, + itemName: '', }) // 表单数据 @@ -396,7 +397,8 @@ const form = reactive({ id: null, competitionId: null, projectId: null, - deductionPoints: 0.5, + itemName: '', + deductionPoint: 0.5, sortOrder: 0, description: '' }) @@ -421,7 +423,7 @@ const rules = { { required: true, message: '请输入扣分项名称', trigger: 'blur' }, { min: 2, max: 100, message: '长度在 2 到 100 个字符', trigger: 'blur' } ], - deductionPoints: [ + deductionPoint: [ { required: true, message: '请输入扣分值', trigger: 'blur' } ], sortOrder: [ @@ -504,10 +506,17 @@ const fetchData = async () => { loading.value = true try { + // 过滤掉空字符串的参数 + const params = {} + Object.keys(queryParams).forEach(key => { + if (queryParams[key] !== '' && queryParams[key] !== null && queryParams[key] !== undefined) { + params[key] = queryParams[key] + } + }) const res = await getDeductionList( queryParams.current, queryParams.size, - queryParams + params ) // 根据axios响应拦截器的处理,数据在 res.data.data 中 const data = res.data?.data || {} @@ -535,7 +544,7 @@ const handleReset = () => { size: 10, competitionId: competitionId, projectId: null, - itemName: '' + itemName: '', }) if (competitionId) { fetchData() @@ -555,11 +564,22 @@ const handleAdd = () => { } // 编辑 -const handleEdit = (row) => { +const handleEdit = async (row) => { dialogTitle.value = '编辑扣分项' Object.keys(form).forEach((key) => { form[key] = row[key] }) + // Convert competitionId to string for el-select matching + if (form.competitionId) { + form.competitionId = String(form.competitionId) + } + if (form.projectId) { + form.projectId = String(form.projectId) + } + // Load project list for the competition first + if (form.competitionId) { + await loadProjectList(form.competitionId) + } dialogVisible.value = true } @@ -670,7 +690,7 @@ const resetForm = () => { competitionId: null, projectId: null, itemName: '', - deductionPoints: 0.5, + deductionPoint: 0.5, sortOrder: 0, description: '' })