工学交替
This commit is contained in:
@@ -20,10 +20,10 @@
|
||||
filterable
|
||||
style="width: 200px">
|
||||
<el-option
|
||||
v-for="item in schoolYearList"
|
||||
:key="item.year"
|
||||
:label="item.year"
|
||||
:value="item.year">
|
||||
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">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-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<BasicTableProps>({
|
||||
queryForm: searchForm,
|
||||
pageList: async (params: any) => {
|
||||
const res = await fetchList(params)
|
||||
const data = res?.data
|
||||
const tableData = data?.tableData
|
||||
// 处理查询参数
|
||||
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: {
|
||||
'tableData.records': tableData?.records ?? [],
|
||||
'tableData.total': tableData?.total ?? data?.total ?? 0
|
||||
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)) {
|
||||
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 = []
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
filterable
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in schoolYearList"
|
||||
:key="item.year"
|
||||
:label="item.year"
|
||||
:value="item.year">
|
||||
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">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -34,9 +34,9 @@
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in schoolTermList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
:key="item.value || item.dictValue"
|
||||
:label="item.label || item.dictLabel || item.name"
|
||||
:value="item.value || item.dictValue">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -50,16 +50,18 @@
|
||||
<el-form-item label="教师" prop="teacherNo">
|
||||
<el-select
|
||||
v-model="form.teacherNo"
|
||||
placeholder="请选择教师"
|
||||
placeholder="请输入姓名或工号搜索"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 100%"
|
||||
@search="handleTeacherSearch">
|
||||
remote
|
||||
:remote-method="handleTeacherSearch"
|
||||
:loading="teacherLoading"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in teacherList"
|
||||
:key="item.teacherNo"
|
||||
:label="`${item.realName}(${item.teacherNo})`"
|
||||
:value="item.teacherNo">
|
||||
:key="item.teacherNo || item.id"
|
||||
:label="`${item.realName || item.name}(${item.teacherNo || item.id})`"
|
||||
:value="item.teacherNo || item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -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<any[]>([])
|
||||
const schoolTermList = ref<any[]>([])
|
||||
const teacherList = ref<any[]>([])
|
||||
@@ -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)) {
|
||||
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)) {
|
||||
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 = []
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user