Quellcode durchsuchen

bug修复,批次修改:未调用接口

jinxia.mo vor 3 Tagen
Ursprung
Commit
cf4f52d158

+ 4 - 17
back-ui/src/views/dz/papers/components/BatchYearSelect.vue

@@ -31,7 +31,7 @@
 </template>
 
 <script setup>
-import { ref, watch, onMounted } from 'vue'
+import { ref, watch } from 'vue'
 import { useBatchYear } from '@/views/dz/papers/hooks/useBatchYear.js'
 
 const props = defineProps({
@@ -45,10 +45,10 @@ const props = defineProps({
     }
 })
 
+const emit = defineEmits(['update:batchId'])
+
 // 创建本地 ref,用于双向绑定
 // 注意:在 Vue 3 中,当父组件传递 ref 时,Vue 会自动解包,所以 props.batchId 是值,不是 ref
-// 但是,如果父组件传递的是 ref,我们需要保持响应式连接
-// 最简单的方法是:直接使用 props,并在 useBatchYear 中处理
 const localBatchId = ref(props.batchId)
 const localBatchList = ref(Array.isArray(props.batchList) ? props.batchList : [])
 
@@ -62,16 +62,8 @@ watch(() => props.batchId, (val) => {
 watch(() => props.batchList, (val) => {
     const listValue = Array.isArray(val) ? val : []
     localBatchList.value = listValue
-    console.log('BatchYearSelect - batchList 更新:', listValue)
 }, { immediate: true, deep: true })
 
-// 调试信息
-onMounted(() => {
-    console.log('BatchYearSelect - props.batchId:', props.batchId)
-    console.log('BatchYearSelect - props.batchList:', props.batchList)
-    console.log('BatchYearSelect - localBatchList.value:', localBatchList.value)
-})
-
 const {
     selectedYear,
     yearList,
@@ -87,12 +79,7 @@ const {
 
 // 监听 localBatchId 的变化,同步回父组件
 watch(localBatchId, (val) => {
-    // 如果父组件传递的是 ref,我们需要更新它
-    // 但由于 Vue 3 会自动解包,我们无法直接访问原始 ref
-    // 所以我们需要通过其他方式来实现双向绑定
-    // 实际上,如果父组件传递的是 ref,我们可以直接修改它
-    // 但更标准的方法是使用 emit
-    // 暂时不做处理,因为父组件的 ref 会自动更新(如果它是响应式的)
+    emit('update:batchId', val)
 })
 </script>
 

+ 14 - 2
back-ui/src/views/dz/papers/components/paper-exact-hand.vue

@@ -3,7 +3,7 @@
         <el-row :gutter="20">
             <el-col :span="8">
                 <el-form label-width="68px">
-                    <BatchYearSelect :batch-id="batchId" :batch-list="batchList" />
+                    <BatchYearSelect v-model:batch-id="batchId" :batch-list="batchList" />
                     <el-form-item label="考生类型">
                         <el-select v-model="examType" clearable style="width: 227px">
                             <el-option v-for="e in examTypes" :label="e.dictLabel" :value="e.dictValue"/>
@@ -70,7 +70,7 @@ const {
     universityId, universities,
     majorGroup, majorGroups,
     majors, majorPlanId,
-    conditionArgs, onConditionReady
+    conditionArgs, onConditionReady, onBatchReady
 } = useProvidePaperExactCondition(type)
 const {selectedClasses, classList, loadClassStatistic} = useProvidePaperClassStatisticCondition()
 const {knowledgeNode, knowledgeCheckNodes, loadKnowledge} = useProvidePaperKnowledgeCondition()
@@ -166,6 +166,18 @@ onConditionReady(async (payload) => {
     await built.value.loadBuiltPaper(payload)
 })
 
+// 监听批次变化,调用接口
+onBatchReady(async (payload) => {
+    // 如果已经有完整的条件参数,更新批次ID;否则只使用批次
+    if (statArg) {
+        statArg = { ...statArg, batchId: payload.batchId }
+    } else {
+        statArg = payload
+    }
+    await _loadClassStatistic()
+    await built.value.loadBuiltPaper(statArg)
+})
+
 watch(conditionArgs, () => built.value.reset())
 
 // 刷新数据

+ 1 - 1
back-ui/src/views/dz/papers/components/paper-exact-intelligent.vue

@@ -2,7 +2,7 @@
     <el-row :gutter="20">
         <el-col :span="8">
             <el-form label-width="68px">
-                <BatchYearSelect :batch-id="batchId" :batch-list="batchList" />
+                <BatchYearSelect v-model:batch-id="batchId" :batch-list="batchList" />
             </el-form>
         </el-col>
         <el-col :span="16">

+ 15 - 2
back-ui/src/views/dz/papers/components/paper-full-hand.vue

@@ -3,7 +3,7 @@
         <el-row :gutter="20">
             <el-col :span="8">
                 <el-form label-width="68px">
-                    <BatchYearSelect :batch-id="batchId" :batch-list="batchList" />
+                    <BatchYearSelect v-model:batch-id="batchId" :batch-list="batchList" />
                     <el-form-item label="考生类型">
                         <el-select v-model="examType" clearable style="width: 227px">
                             <el-option v-for="e in examTypes" :label="e.dictLabel" :value="e.dictValue"/>
@@ -64,7 +64,8 @@ const {
     subjectId,
     groupedSubjects,
     conditionArgs,
-    onConditionReady
+    onConditionReady,
+    onBatchReady
 } = useProvidePaperFullCondition(type)
 const {selectedClasses, classList, loadClassStatistic} = useProvidePaperClassStatisticCondition()
 const {knowledgeNode, knowledgeCheckNodes, loadKnowledge} = useProvidePaperKnowledgeCondition()
@@ -153,6 +154,18 @@ onConditionReady(async (payload) => {
     await built.value.loadBuiltPaper(payload)
 })
 
+// 监听批次变化,调用接口
+onBatchReady(async (payload) => {
+    // 如果已经有完整的条件参数,更新批次ID;否则只使用批次
+    if (statArg) {
+        statArg = { ...statArg, batchId: payload.batchId }
+    } else {
+        statArg = payload
+    }
+    await _loadClassStatistic()
+    await built.value.loadBuiltPaper(statArg)
+})
+
 watch(conditionArgs, () => built.value.reset())
 
 // 刷新数据

+ 15 - 2
back-ui/src/views/dz/papers/components/paper-full-intelligent.vue

@@ -2,7 +2,7 @@
     <el-row :gutter="20">
         <el-col :span="8">
             <el-form label-width="68px">
-                <BatchYearSelect :batch-id="batchId" :batch-list="batchList" />
+                <BatchYearSelect v-model:batch-id="batchId" :batch-list="batchList" />
                 <el-form-item label="考生类型">
                     <el-select v-model="examType" clearable style="width: 227px">
                         <el-option v-for="e in examTypes" :label="e.dictLabel" :value="e.dictValue"/>
@@ -60,7 +60,8 @@ const {
     subjectId,
     groupedSubjects,
     conditionArgs,
-    onConditionReady
+    onConditionReady,
+    onBatchReady
 } = useProvidePaperFullCondition(type)
 const {selectedClasses, classList, loadClassStatistic} = useProvidePaperClassStatisticCondition()
 const {knowledgeNode, knowledgeCheckNodes, loadKnowledge} = useProvidePaperKnowledgeCondition()
@@ -140,6 +141,18 @@ onConditionReady(async (payload) => {
     await built.value.loadBuiltPaper(payload)
 })
 
+// 监听批次变化,调用接口
+onBatchReady(async (payload) => {
+    // 如果已经有完整的条件参数,更新批次ID;否则只使用批次
+    if (statArg) {
+        statArg = { ...statArg, batchId: payload.batchId }
+    } else {
+        statArg = payload
+    }
+    await _loadClassStatistic()
+    await built.value.loadBuiltPaper(statArg)
+})
+
 watch(conditionArgs, () => built.value.reset())
 
 // 刷新数据

+ 2 - 2
back-ui/src/views/dz/papers/hooks/usePaperExactCondition.js

@@ -4,7 +4,7 @@ import {createEventHook, injectLocal, provideLocal} from "@vueuse/core";
 
 const key = Symbol('PaperExactCondition')
 export const useProvidePaperExactCondition = function (type) {
-    const {buildType, batchId, batchList, formatBatchName, getBatchDisplayName} = useProvidePaperBatchCondition(type)
+    const {buildType, batchId, batchList, formatBatchName, getBatchDisplayName, onBatchReady} = useProvidePaperBatchCondition(type)
 
     const examType = ref('')
     const examTypes = ref([])
@@ -111,7 +111,7 @@ export const useProvidePaperExactCondition = function (type) {
         await triggerExactEvent(args)
     })
 
-    const payload = {buildType, batchId, batchList, formatBatchName, getBatchDisplayName,
+    const payload = {buildType, batchId, batchList, formatBatchName, getBatchDisplayName, onBatchReady,
         examType, examTypes,
         universityId, universities,
         majorGroup, majorGroups,

+ 2 - 2
back-ui/src/views/dz/papers/hooks/usePaperFullCondition.js

@@ -4,7 +4,7 @@ import {getPaperExamTypes, getPaperSubjects} from "@/api/dz/papers.js";
 
 const key = Symbol('PaperFullCondition')
 export const useProvidePaperFullCondition = function (type) {
-    const {buildType, batchId, batchList, formatBatchName, getBatchDisplayName} = useProvidePaperBatchCondition(type)
+    const {buildType, batchId, batchList, formatBatchName, getBatchDisplayName, onBatchReady} = useProvidePaperBatchCondition(type)
 
     const examType = ref('')
     const examTypes = ref([])
@@ -61,7 +61,7 @@ export const useProvidePaperFullCondition = function (type) {
         await readyEvent.trigger(payload)
     })
 
-    const payload = {buildType, batchId, batchList, formatBatchName, getBatchDisplayName,
+    const payload = {buildType, batchId, batchList, formatBatchName, getBatchDisplayName, onBatchReady,
         examType, examTypes,
         subjectId, subjectList, groupedSubjects,
         conditionArgs, conditionData,