优化条件筛选

This commit is contained in:
biss committed 2026-08-11 16:42:10 +08:00
1 parent eb20211f0e
commit 130bffbd01
6 files changed
+152 -1

No files matched your search

+18 -1
View File
@@ -39,6 +39,7 @@ interface TeachingClassItem {
}
const terms = ref<any[]>([])
const colleges = ref<any[]>([])
const auth = useAuthStore()
const canManageSchedule = computed(() => auth.user?.roles.some(role => ['SuperAdmin', 'AcademicAdmin'].includes(role)) ?? false)
const classes = ref<TeachingClassItem[]>([])
@@ -46,6 +47,9 @@ const selected = ref<TeachingClassItem>()
const report = ref<any>()
const termId = ref<string>()
const keyword = ref('')
const collegeId = ref<string>()
const teacherKeyword = ref('')
const riskOnly = ref(false)
const page = ref(1)
const total = ref(0)
const pageSize = 12
@@ -109,6 +113,9 @@ async function loadClasses(reset = false) {
params: {
academicTermId: termId.value,
keyword: keyword.value.trim() || undefined,
collegeId: collegeId.value,
teacherKeyword: teacherKeyword.value.trim() || undefined,
riskOnly: riskOnly.value || undefined,
page: page.value,
pageSize,
},
@@ -343,7 +350,12 @@ watch(historyMetric, async () => {
onMounted(async () => {
try {
terms.value = (await http.get('/base-data/terms')).data
const [termResponse, collegeResponse] = await Promise.all([
http.get('/base-data/terms'),
http.get('/base-data/colleges'),
])
terms.value = termResponse.data
colleges.value = collegeResponse.data
termId.value = defaultAcademicTermId(terms.value)
} catch (error) {
ElMessage.error(apiErrorMessage(error))
@@ -409,7 +421,12 @@ onBeforeUnmount(() => {
<el-select v-model="termId" clearable placeholder="全部学期" style="width: 240px" @change="loadClasses(true)">
<el-option v-for="term in terms" :key="term.id" :label="academicTermLabel(term)" :value="term.id" />
</el-select>
<el-select v-model="collegeId" clearable placeholder="全部开课学院" style="width: 190px" @change="loadClasses(true)">
<el-option v-for="college in colleges" :key="college.id" :label="college.name" :value="college.id" />
</el-select>
<el-input v-model="keyword" clearable placeholder="课程、教学班名称或编号" :prefix-icon="Search" @keyup.enter="loadClasses(true)" />
<el-input v-model="teacherKeyword" clearable placeholder="任课教师姓名或工号" :prefix-icon="Search" @keyup.enter="loadClasses(true)" @clear="loadClasses(true)" />
<el-checkbox v-model="riskOnly" @change="loadClasses(true)">仅看预警班</el-checkbox>
<el-button type="primary" @click="loadClasses(true)">查询</el-button>
</section>