工学交替
This commit is contained in:
@@ -20,10 +20,10 @@
|
|||||||
filterable
|
filterable
|
||||||
style="width: 200px">
|
style="width: 200px">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in schoolYearList"
|
v-for="(item, index) in schoolYearList"
|
||||||
:key="item.year"
|
:key="item.year || item.id || index"
|
||||||
:label="item.year"
|
:label="item.year || item.schoolYear || item.name || item"
|
||||||
:value="item.year">
|
:value="item.year || item.schoolYear || item.name || item">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -303,23 +303,38 @@ const searchForm = reactive({
|
|||||||
dateRange: null as [string, string] | null
|
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>({
|
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||||
queryForm: searchForm,
|
queryForm: searchForm,
|
||||||
pageList: async (params: any) => {
|
pageList: async (params: any) => {
|
||||||
const res = await fetchList(params)
|
// 处理查询参数
|
||||||
const data = res?.data
|
const queryParams: any = { ...params }
|
||||||
const tableData = data?.tableData
|
// 处理日期范围
|
||||||
|
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 {
|
return {
|
||||||
|
...res,
|
||||||
data: {
|
data: {
|
||||||
'tableData.records': tableData?.records ?? [],
|
records: res.data.tableData.records || [],
|
||||||
'tableData.total': tableData?.total ?? data?.total ?? 0
|
total: res.data.tableData.total || 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return res
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
item: 'tableData.records',
|
item: 'records',
|
||||||
totalCount: 'tableData.total'
|
totalCount: 'total'
|
||||||
},
|
},
|
||||||
createdIsNeed: true
|
createdIsNeed: true
|
||||||
})
|
})
|
||||||
@@ -334,20 +349,6 @@ const {
|
|||||||
|
|
||||||
// 查询
|
// 查询
|
||||||
const handleSearch = () => {
|
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()
|
getDataList()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -394,10 +395,20 @@ const getDeptListData = async () => {
|
|||||||
const getSchoolYearList = async () => {
|
const getSchoolYearList = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await queryAllSchoolYear()
|
const res = await queryAllSchoolYear()
|
||||||
if (res.data && Array.isArray(res.data)) {
|
if (res.data) {
|
||||||
|
// 兼容多种数据格式
|
||||||
|
if (Array.isArray(res.data)) {
|
||||||
schoolYearList.value = 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) {
|
} catch (err) {
|
||||||
|
console.error('获取学年列表失败', err)
|
||||||
schoolYearList.value = []
|
schoolYearList.value = []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
filterable
|
filterable
|
||||||
style="width: 100%">
|
style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in schoolYearList"
|
v-for="(item, index) in schoolYearList"
|
||||||
:key="item.year"
|
:key="item.year || item.id || index"
|
||||||
:label="item.year"
|
:label="item.year || item.schoolYear || item.name || item"
|
||||||
:value="item.year">
|
:value="item.year || item.schoolYear || item.name || item">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -34,9 +34,9 @@
|
|||||||
style="width: 100%">
|
style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in schoolTermList"
|
v-for="item in schoolTermList"
|
||||||
:key="item.value"
|
:key="item.value || item.dictValue"
|
||||||
:label="item.label"
|
:label="item.label || item.dictLabel || item.name"
|
||||||
:value="item.value">
|
:value="item.value || item.dictValue">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -50,16 +50,18 @@
|
|||||||
<el-form-item label="教师" prop="teacherNo">
|
<el-form-item label="教师" prop="teacherNo">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="form.teacherNo"
|
v-model="form.teacherNo"
|
||||||
placeholder="请选择教师"
|
placeholder="请输入姓名或工号搜索"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
style="width: 100%"
|
remote
|
||||||
@search="handleTeacherSearch">
|
:remote-method="handleTeacherSearch"
|
||||||
|
:loading="teacherLoading"
|
||||||
|
style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in teacherList"
|
v-for="item in teacherList"
|
||||||
:key="item.teacherNo"
|
:key="item.teacherNo || item.id"
|
||||||
:label="`${item.realName}(${item.teacherNo})`"
|
:label="`${item.realName || item.name}(${item.teacherNo || item.id})`"
|
||||||
:value="item.teacherNo">
|
:value="item.teacherNo || item.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -87,6 +89,7 @@ const emit = defineEmits(['refresh'])
|
|||||||
const dataFormRef = ref()
|
const dataFormRef = ref()
|
||||||
const visible = ref(false)
|
const visible = ref(false)
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
|
const teacherLoading = ref(false)
|
||||||
const schoolYearList = ref<any[]>([])
|
const schoolYearList = ref<any[]>([])
|
||||||
const schoolTermList = ref<any[]>([])
|
const schoolTermList = ref<any[]>([])
|
||||||
const teacherList = ref<any[]>([])
|
const teacherList = ref<any[]>([])
|
||||||
@@ -117,17 +120,29 @@ const dataRules = {
|
|||||||
|
|
||||||
// 教师搜索
|
// 教师搜索
|
||||||
const handleTeacherSearch = async (keyword: string) => {
|
const handleTeacherSearch = async (keyword: string) => {
|
||||||
if (!keyword) {
|
if (!keyword || keyword.length < 1) {
|
||||||
teacherList.value = []
|
teacherList.value = []
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
teacherLoading.value = true
|
||||||
try {
|
try {
|
||||||
const res = await getTeacherInfoCommon({ searchKeywords: keyword })
|
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
|
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) {
|
} catch (err) {
|
||||||
|
console.error('获取教师列表失败', err)
|
||||||
teacherList.value = []
|
teacherList.value = []
|
||||||
|
} finally {
|
||||||
|
teacherLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,10 +189,19 @@ const onSubmit = async () => {
|
|||||||
const getSchoolYearList = async () => {
|
const getSchoolYearList = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await queryAllSchoolYear()
|
const res = await queryAllSchoolYear()
|
||||||
if (res.data && Array.isArray(res.data)) {
|
if (res.data) {
|
||||||
|
if (Array.isArray(res.data)) {
|
||||||
schoolYearList.value = 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) {
|
} catch (err) {
|
||||||
|
console.error('获取学年列表失败', err)
|
||||||
schoolYearList.value = []
|
schoolYearList.value = []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -187,9 +211,15 @@ const getSchoolTermList = async () => {
|
|||||||
try {
|
try {
|
||||||
const res = await getDicts('school_term')
|
const res = await getDicts('school_term')
|
||||||
if (res.data && Array.isArray(res.data)) {
|
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) {
|
} catch (err) {
|
||||||
|
console.error('获取学期列表失败', err)
|
||||||
schoolTermList.value = []
|
schoolTermList.value = []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user