diff --git a/src/views/stuwork/stuworkstudyalternate/index.vue b/src/views/stuwork/stuworkstudyalternate/index.vue index f73cde9..d60c653 100644 --- a/src/views/stuwork/stuworkstudyalternate/index.vue +++ b/src/views/stuwork/stuworkstudyalternate/index.vue @@ -13,17 +13,17 @@ - + v-for="(item, index) in schoolYearList" + :key="item.year || item.id || index" + :label="item.year || item.schoolYear || item.name || item" + :value="item.year || item.schoolYear || item.name || item"> @@ -303,23 +303,38 @@ const searchForm = reactive({ dateRange: null as [string, string] | null }) -// 配置 useTable(接口返回 data.tableData.records / data.tableData.total,需包装以适配 hook 的 res.data[props.item] 取数) +// 配置 useTable(接口返回 data.tableData.records / data.tableData.total) const state: BasicTableProps = reactive({ queryForm: searchForm, pageList: async (params: any) => { - const res = await fetchList(params) - const data = res?.data - const tableData = data?.tableData - return { - data: { - 'tableData.records': tableData?.records ?? [], - 'tableData.total': tableData?.total ?? data?.total ?? 0 + // 处理查询参数 + const queryParams: any = { ...params } + // 处理日期范围 + if (searchForm.dateRange && searchForm.dateRange.length === 2) { + queryParams.dateRangeStr = `${searchForm.dateRange[0]},${searchForm.dateRange[1]}` + } + delete queryParams.dateRange + // 处理学年数组 + if (queryParams.schoolYear) { + queryParams.schoolYear = [queryParams.schoolYear] + } + + const res = await fetchList(queryParams) + // 将嵌套的 tableData 提升到 data 层级,适配 useTable hook + if (res.data && res.data.tableData) { + return { + ...res, + data: { + records: res.data.tableData.records || [], + total: res.data.tableData.total || 0 + } } } + return res }, props: { - item: 'tableData.records', - totalCount: 'tableData.total' + item: 'records', + totalCount: 'total' }, createdIsNeed: true }) @@ -334,20 +349,6 @@ const { // 查询 const handleSearch = () => { - // 处理日期范围 - const params: any = { ...searchForm } - if (searchForm.dateRange && searchForm.dateRange.length === 2) { - params.dateRangeStr = `${searchForm.dateRange[0]},${searchForm.dateRange[1]}` - } - delete params.dateRange - - // 处理学年数组 - if (params.schoolYear) { - params.schoolYear = [params.schoolYear] - } - - // 更新查询参数 - Object.assign(searchForm, params) getDataList() } @@ -394,10 +395,20 @@ const getDeptListData = async () => { const getSchoolYearList = async () => { try { const res = await queryAllSchoolYear() - if (res.data && Array.isArray(res.data)) { - schoolYearList.value = res.data + if (res.data) { + // 兼容多种数据格式 + if (Array.isArray(res.data)) { + schoolYearList.value = res.data + } else if (res.data.records && Array.isArray(res.data.records)) { + schoolYearList.value = res.data.records + } else { + schoolYearList.value = [] + } + } else { + schoolYearList.value = [] } } catch (err) { + console.error('获取学年列表失败', err) schoolYearList.value = [] } } diff --git a/src/views/stuwork/stuworkstudyalternate/teacher.vue b/src/views/stuwork/stuworkstudyalternate/teacher.vue index 4b2a668..5eacb0c 100644 --- a/src/views/stuwork/stuworkstudyalternate/teacher.vue +++ b/src/views/stuwork/stuworkstudyalternate/teacher.vue @@ -12,31 +12,31 @@ label-width="120px" v-loading="loading"> - + v-for="(item, index) in schoolYearList" + :key="item.year || item.id || index" + :label="item.year || item.schoolYear || item.name || item" + :value="item.year || item.schoolYear || item.name || item"> - + :key="item.value || item.dictValue" + :label="item.label || item.dictLabel || item.name" + :value="item.value || item.dictValue"> @@ -48,18 +48,20 @@ style="width: 100%" /> - + remote + :remote-method="handleTeacherSearch" + :loading="teacherLoading" + style="width: 100%"> + :key="item.teacherNo || item.id" + :label="`${item.realName || item.name}(${item.teacherNo || item.id})`" + :value="item.teacherNo || item.id"> @@ -87,6 +89,7 @@ const emit = defineEmits(['refresh']) const dataFormRef = ref() const visible = ref(false) const loading = ref(false) +const teacherLoading = ref(false) const schoolYearList = ref([]) const schoolTermList = ref([]) const teacherList = ref([]) @@ -117,17 +120,29 @@ const dataRules = { // 教师搜索 const handleTeacherSearch = async (keyword: string) => { - if (!keyword) { + if (!keyword || keyword.length < 1) { teacherList.value = [] return } + teacherLoading.value = true try { const res = await getTeacherInfoCommon({ searchKeywords: keyword }) - if (res.data && Array.isArray(res.data)) { - teacherList.value = res.data + if (res.data) { + if (Array.isArray(res.data)) { + teacherList.value = res.data + } else if (res.data.records && Array.isArray(res.data.records)) { + teacherList.value = res.data.records + } else { + teacherList.value = [] + } + } else { + teacherList.value = [] } } catch (err) { + console.error('获取教师列表失败', err) teacherList.value = [] + } finally { + teacherLoading.value = false } } @@ -174,10 +189,19 @@ const onSubmit = async () => { const getSchoolYearList = async () => { try { const res = await queryAllSchoolYear() - if (res.data && Array.isArray(res.data)) { - schoolYearList.value = res.data + if (res.data) { + if (Array.isArray(res.data)) { + schoolYearList.value = res.data + } else if (res.data.records && Array.isArray(res.data.records)) { + schoolYearList.value = res.data.records + } else { + schoolYearList.value = [] + } + } else { + schoolYearList.value = [] } } catch (err) { + console.error('获取学年列表失败', err) schoolYearList.value = [] } } @@ -187,9 +211,15 @@ const getSchoolTermList = async () => { try { const res = await getDicts('school_term') if (res.data && Array.isArray(res.data)) { - schoolTermList.value = res.data + schoolTermList.value = res.data.map((item: any) => ({ + label: item.label ?? item.dictLabel ?? item.name, + value: item.value ?? item.dictValue + })) + } else { + schoolTermList.value = [] } } catch (err) { + console.error('获取学期列表失败', err) schoolTermList.value = [] } }