This commit is contained in:
2026-08-25 19:25:55 +08:00
parent 0240f410b6
commit 13d72c54f2
16 changed files with 185 additions and 163 deletions
@@ -71,8 +71,8 @@ export function getScheduleAdjustDetail(ssdksqbh) {
* 提交调课申请 * 提交调课申请
* POST /course-running/adjust/submit * POST /course-running/adjust/submit
* 请求体(ScheduleAdjustApplyDTO)核心字段:sskcbbh 课次编号、sy 调课事由、rq 调课后新日期、 * 请求体(ScheduleAdjustApplyDTO)核心字段:sskcbbh 课次编号、sy 调课事由、rq 调课后新日期、
* jc 调课后新节次、nd 年度sqjybh 申请教员编号(可选 ydsjap 原日期节次描述、xydrwbh/kbh/ * jc 调课后新节次、nd 年度sqjybh/xydrwbh/kbh/kcbbh/xjsbh 为可选关联字段,
* kcbbh/xydmc/jysdh/yjsbh/xjsbh/kcmc/sqjyxm 由课次自动带出) * roomList/teacherList/teamList/supportList 为调整后的关联明细。
*/ */
export function submitScheduleAdjust(data) { export function submitScheduleAdjust(data) {
return request({ return request({
@@ -20,11 +20,11 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8"> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
<el-form-item label="状态"> <el-form-item label="停用">
<el-select v-model="searchForm.ty" placeholder="请选择状态" clearable style="width: 100%"> <el-radio-group v-model="searchForm.ty">
<el-option label="启用" :value="0" /> <el-radio :label="0"></el-radio>
<el-option label="停用" :value="1" /> <el-radio :label="1"></el-radio>
</el-select> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -253,7 +253,7 @@ export default {
mc: '', mc: '',
pxlx: '', pxlx: '',
pxcc: '', pxcc: '',
ty: '' ty: 0
}, },
// ==================== 列表数据 ==================== // ==================== 列表数据 ====================
@@ -317,10 +317,7 @@ export default {
pageNum: this.pageNum, pageNum: this.pageNum,
pageSize: this.pageSize pageSize: this.pageSize
} }
// 状态:0 启用 / 1 停用(选中时才传) params.ty = this.searchForm.ty
if (this.searchForm.ty !== '' && this.searchForm.ty !== null && this.searchForm.ty !== undefined) {
params.ty = this.searchForm.ty
}
// 其余文本条件非空时才传 // 其余文本条件非空时才传
;['mc', 'pxlx', 'pxcc'].forEach(key => { ;['mc', 'pxlx', 'pxcc'].forEach(key => {
if (this.searchForm[key] !== '' && this.searchForm[key] !== null && this.searchForm[key] !== undefined) { if (this.searchForm[key] !== '' && this.searchForm[key] !== null && this.searchForm[key] !== undefined) {
@@ -349,7 +346,7 @@ export default {
mc: '', mc: '',
pxlx: '', pxlx: '',
pxcc: '', pxcc: '',
ty: '' ty: 0
} }
this.pageNum = 1 this.pageNum = 1
this.fetchList() this.fetchList()
@@ -25,8 +25,11 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
<el-form-item label="状态" class="checkbox-form-item"> <el-form-item label="停用" class="checkbox-form-item">
<el-checkbox v-model="searchForm.ty">停用</el-checkbox> <el-radio-group v-model="searchForm.ty">
<el-radio :label="false"></el-radio>
<el-radio :label="true"></el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
@@ -322,10 +325,7 @@ export default {
pageNum: this.pageNum, pageNum: this.pageNum,
pageSize: this.pageSize pageSize: this.pageSize
} }
// 状态:勾选「停用」时仅查已停用(ty=1),未勾选则查询全部 params.ty = this.searchForm.ty ? 1 : 0
if (this.searchForm.ty) {
params.ty = 1
}
// 其余文本条件非空时才传 // 其余文本条件非空时才传
;['zymc', 'zydm', 'zyfx', 'xnz', 'pxlx2'].forEach(key => { ;['zymc', 'zydm', 'zyfx', 'xnz', 'pxlx2'].forEach(key => {
const value = this.searchForm[key] const value = this.searchForm[key]
@@ -45,11 +45,11 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8"> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8">
<el-form-item label="状态"> <el-form-item label="停用">
<el-select v-model="searchForm.ty" placeholder="请选择状态" clearable style="width: 100%"> <el-radio-group v-model="searchForm.ty">
<el-option label="启用" :value="0" /> <el-radio :label="0"></el-radio>
<el-option label="停用" :value="1" /> <el-radio :label="1"></el-radio>
</el-select> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -367,7 +367,7 @@ export default {
pxlx2: '', pxlx2: '',
pxcc: '', pxcc: '',
xkzyxxbsh: '', xkzyxxbsh: '',
ty: '' ty: 0
}, },
// ==================== 列表数据 ==================== // ==================== 列表数据 ====================
@@ -460,10 +460,7 @@ export default {
pageNum: this.pageNum, pageNum: this.pageNum,
pageSize: this.pageSize pageSize: this.pageSize
} }
// 状态:0 启用 / 1 停用(选中时才传) params.ty = this.searchForm.ty
if (this.searchForm.ty !== '' && this.searchForm.ty !== null && this.searchForm.ty !== undefined) {
params.ty = this.searchForm.ty
}
// 其余文本条件非空时才传 // 其余文本条件非空时才传
;['zymc', 'zyfx', 'zydm', 'xnz', 'pxlx', 'pxlx2', 'pxcc', 'xkzyxxbsh'].forEach(key => { ;['zymc', 'zyfx', 'zydm', 'xnz', 'pxlx', 'pxlx2', 'pxcc', 'xkzyxxbsh'].forEach(key => {
if (this.searchForm[key] !== '' && this.searchForm[key] !== null && this.searchForm[key] !== undefined) { if (this.searchForm[key] !== '' && this.searchForm[key] !== null && this.searchForm[key] !== undefined) {
@@ -497,7 +494,7 @@ export default {
pxlx2: '', pxlx2: '',
pxcc: '', pxcc: '',
xkzyxxbsh: '', xkzyxxbsh: '',
ty: '' ty: 0
} }
this.pageNum = 1 this.pageNum = 1
this.fetchList() this.fetchList()
+6 -10
View File
@@ -9,15 +9,11 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="停用" prop="status">
<el-select v-model="queryParams.status" placeholder="部门状态" clearable> <el-radio-group v-model="queryParams.status">
<el-option <el-radio label="0"></el-radio>
v-for="dict in dict.type.sys_normal_disable" <el-radio label="1"></el-radio>
:key="dict.value" </el-radio-group>
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -206,7 +202,7 @@ export default {
// 查询参数 // 查询参数
queryParams: { queryParams: {
deptName: undefined, deptName: undefined,
status: undefined status: '0'
}, },
// 表单参数 // 表单参数
form: {}, form: {},
+6 -10
View File
@@ -19,15 +19,11 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="停用" prop="status">
<el-select v-model="queryParams.status" placeholder="数据状态" clearable> <el-radio-group v-model="queryParams.status">
<el-option <el-radio label="0"></el-radio>
v-for="dict in dict.type.sys_normal_disable" <el-radio label="1"></el-radio>
:key="dict.value" </el-radio-group>
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -253,7 +249,7 @@ export default {
pageSize: 10, pageSize: 10,
dictType: undefined, dictType: undefined,
dictLabel: undefined, dictLabel: undefined,
status: undefined status: '0'
}, },
// 表单参数 // 表单参数
form: {}, form: {},
+6 -15
View File
@@ -19,20 +19,11 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="停用" prop="status">
<el-select <el-radio-group v-model="queryParams.status">
v-model="queryParams.status" <el-radio label="0"></el-radio>
placeholder="字典状态" <el-radio label="1"></el-radio>
clearable </el-radio-group>
style="width: 240px"
>
<el-option
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
@@ -242,7 +233,7 @@ export default {
pageSize: 10, pageSize: 10,
dictName: undefined, dictName: undefined,
dictType: undefined, dictType: undefined,
status: undefined status: '0'
}, },
// 表单参数 // 表单参数
form: {}, form: {},
+7 -10
View File
@@ -9,15 +9,11 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="停用" prop="status">
<el-select v-model="queryParams.status" placeholder="菜单状态" clearable> <el-radio-group v-model="queryParams.status">
<el-option <el-radio label="0"></el-radio>
v-for="dict in dict.type.sys_normal_disable" <el-radio label="1"></el-radio>
:key="dict.value" </el-radio-group>
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -352,7 +348,8 @@ export default {
// 查询参数 // 查询参数
queryParams: { queryParams: {
menuName: undefined, menuName: undefined,
visible: undefined visible: undefined,
status: '0'
}, },
// 表单参数 // 表单参数
form: {}, form: {},
+6 -10
View File
@@ -17,15 +17,11 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="停用" prop="status">
<el-select v-model="queryParams.status" placeholder="岗位状态" clearable> <el-radio-group v-model="queryParams.status">
<el-option <el-radio label="0"></el-radio>
v-for="dict in dict.type.sys_normal_disable" <el-radio label="1"></el-radio>
:key="dict.value" </el-radio-group>
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -190,7 +186,7 @@ export default {
pageSize: 10, pageSize: 10,
postCode: undefined, postCode: undefined,
postName: undefined, postName: undefined,
status: undefined status: '0'
}, },
// 表单参数 // 表单参数
form: {}, form: {},
+6 -15
View File
@@ -19,20 +19,11 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="停用" prop="status">
<el-select <el-radio-group v-model="queryParams.status">
v-model="queryParams.status" <el-radio label="0"></el-radio>
placeholder="角色状态" <el-radio label="1"></el-radio>
clearable </el-radio-group>
style="width: 240px"
>
<el-option
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
@@ -321,7 +312,7 @@ export default {
pageSize: 10, pageSize: 10,
roleName: undefined, roleName: undefined,
roleKey: undefined, roleKey: undefined,
status: undefined status: '0'
}, },
// 表单参数 // 表单参数
form: {}, form: {},
+6 -5
View File
@@ -10,10 +10,11 @@
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="queryParams.phonenumber" placeholder="请输入手机号码" clearable style="width: 240px" @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.phonenumber" placeholder="请输入手机号码" clearable style="width: 240px" @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="停用" prop="status">
<el-select v-model="queryParams.status" placeholder="用户状态" clearable style="width: 240px"> <el-radio-group v-model="queryParams.status">
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" /> <el-radio label="0"></el-radio>
</el-select> <el-radio label="1"></el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> <el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
@@ -230,7 +231,7 @@ export default {
pageSize: 10, pageSize: 10,
userName: undefined, userName: undefined,
phonenumber: undefined, phonenumber: undefined,
status: undefined, status: '0',
deptId: undefined deptId: undefined
}, },
// 列信息 // 列信息
@@ -10,11 +10,11 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :md="8"> <el-col :xs="24" :md="8">
<el-form-item label="停用标识"> <el-form-item label="停用">
<el-select v-model="searchForm.ty" placeholder="全部" clearable class="w-full"> <el-radio-group v-model="searchForm.ty">
<el-option :value="0" label="正常" /> <el-radio :label="0"></el-radio>
<el-option :value="1" label="停用" /> <el-radio :label="1"></el-radio>
</el-select> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :md="8"> <el-col :xs="24" :md="8">
@@ -296,7 +296,7 @@ export default {
loading: false, loading: false,
searchForm: { searchForm: {
zydh: '', zydh: '',
ty: '' ty: 0
}, },
tableData: [], tableData: [],
total: 0, total: 0,
@@ -381,8 +381,8 @@ export default {
fetchList() { fetchList() {
this.loading = true this.loading = true
const { zydh, ty } = this.searchForm const { zydh, ty } = this.searchForm
// 专业代号与停用标识同时给出时走后端 /listByZydhAndTy;否则查全部后本地过滤 // 专业代号存在时走后端组合查询;否则查全部后按停用标识过滤
const useApiQuery = zydh && ty !== '' && ty !== null && ty !== undefined const useApiQuery = Boolean(zydh)
const req = useApiQuery const req = useApiQuery
? listSyllabusByZydhAndTy(zydh, ty) ? listSyllabusByZydhAndTy(zydh, ty)
: listSyllabus() : listSyllabus()
@@ -390,9 +390,7 @@ export default {
let list = response.data || [] let list = response.data || []
if (!useApiQuery) { if (!useApiQuery) {
if (zydh) list = list.filter(i => i.zydh && i.zydh.indexOf(zydh) !== -1) if (zydh) list = list.filter(i => i.zydh && i.zydh.indexOf(zydh) !== -1)
if (ty !== '' && ty !== null && ty !== undefined) { list = list.filter(i => Number(i.ty) === Number(ty))
list = list.filter(i => Number(i.ty) === Number(ty))
}
} }
this.tableData = list this.tableData = list
this.total = list.length this.total = list.length
@@ -408,7 +406,7 @@ export default {
this.fetchList() this.fetchList()
}, },
handleReset() { handleReset() {
this.searchForm = { zydh: '', ty: '' } this.searchForm = { zydh: '', ty: 0 }
this.fetchList() this.fetchList()
}, },
handleSelectionChange(val) { handleSelectionChange(val) {
@@ -99,16 +99,23 @@
<el-dialog title="新增课表调整申请" :visible.sync="addVisible" width="640px" append-to-body> <el-dialog title="新增课表调整申请" :visible.sync="addVisible" width="640px" append-to-body>
<el-form ref="addForm" :model="addForm" :rules="addRules" label-width="110px"> <el-form ref="addForm" :model="addForm" :rules="addRules" label-width="110px">
<el-form-item label="年度" prop="nd"> <el-form-item label="年度" prop="nd">
<el-select v-model="addForm.nd" placeholder="请选择年度" style="width: 100%"> <el-select v-model="addForm.nd" placeholder="请选择年度" style="width: 100%" @change="handleAddYearChange">
<el-option v-for="y in yearOptions" :key="y" :label="y" :value="y" /> <el-option v-for="y in yearOptions" :key="y" :label="y" :value="y" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="课次编号" prop="sskcbbh"> <el-form-item label="课次编号" prop="sskcbbh">
<el-input v-model="addForm.sskcbbh" placeholder="请输入课次编号" /> <el-input v-model="addForm.sskcbbh" placeholder="请从可供调课课次中选择" disabled />
<el-button type="primary" plain size="mini" class="pick-lesson-btn" :loading="lessonLoading" @click="loadAdjustableLessons">选择可供调课课次</el-button> <el-button type="primary" plain size="mini" class="pick-lesson-btn" :loading="lessonLoading" @click="loadAdjustableLessons">选择可供调课课次</el-button>
</el-form-item> </el-form-item>
<el-form-item label="调课事由" prop="sy"> <el-form-item label="调课事由" prop="sy">
<el-input v-model="addForm.sy" type="textarea" :rows="2" placeholder="请输入调课事由" /> <el-input
v-model="addForm.sy"
type="textarea"
:rows="2"
maxlength="200"
show-word-limit
placeholder="请输入调课事由"
/>
</el-form-item> </el-form-item>
<el-form-item label="拟调整日期" prop="rq"> <el-form-item label="拟调整日期" prop="rq">
<el-date-picker v-model="addForm.rq" type="date" value-format="yyyy-MM-dd" placeholder="请选择日期" style="width: 100%" /> <el-date-picker v-model="addForm.rq" type="date" value-format="yyyy-MM-dd" placeholder="请选择日期" style="width: 100%" />
@@ -118,20 +125,34 @@
<el-option v-for="n in jcOptions" :key="n" :label="jcLabel(n)" :value="n" /> <el-option v-for="n in jcOptions" :key="n" :label="jcLabel(n)" :value="n" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="申请教员编号" prop="sqjybh"> <el-form-item label="申请教员">
<el-input v-model="addForm.sqjybh" placeholder="请输入申请教员编号" /> <el-input v-model="addForm.sqjybh" placeholder="由服务端根据当前登录人写入" disabled />
</el-form-item> </el-form-item>
<el-form-item label="学员队名称"> <el-form-item label="学员队名称">
<el-input v-model="addForm.xydmc" placeholder="选择可供调课课次后自动带出" /> <el-input v-model="addForm.xydmc" placeholder="选择可供调课课次后自动带出" disabled />
</el-form-item> </el-form-item>
<el-form-item label="原教室编号"> <el-form-item label="原教室编号">
<el-input v-model="addForm.yjsbh" placeholder="选择可供调课课次后自动带出" /> <el-input v-model="addForm.yjsbh" placeholder="选择可供调课课次后自动带出" disabled />
</el-form-item> </el-form-item>
<el-form-item label="拟调整教室编号"> <el-form-item label="拟调整教室编号">
<el-input v-model="addForm.xjsbh" placeholder="选填" /> <el-select
v-model="addForm.xjsbh"
placeholder="请选择拟调整教室"
clearable
filterable
:loading="classroomLoading"
style="width: 100%"
>
<el-option
v-for="room in classroomOptions"
:key="room.jsbh"
:label="classroomOptionLabel(room)"
:value="room.jsbh"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="原上课时间"> <el-form-item label="原上课时间">
<el-input v-model="addForm.ydsjap" placeholder="选择可供调课课次后自动带出" /> <el-input v-model="addForm.ydsjap" placeholder="选择可供调课课次后自动带出" disabled />
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@@ -294,6 +315,7 @@ import {
cancelScheduleAdjust cancelScheduleAdjust
} from '@/api/teachBusiness/courseRunning' } from '@/api/teachBusiness/courseRunning'
import { listAllSemester } from '@/api/teachBusiness/semester' import { listAllSemester } from '@/api/teachBusiness/semester'
import { listAllClassroom } from '@/api/teachBusiness/classroom'
// 节次 -> 节次区间映射 // 节次 -> 节次区间映射
const JC_SECTION = { const JC_SECTION = {
@@ -347,16 +369,17 @@ export default {
addForm: {}, addForm: {},
addRules: { addRules: {
nd: [{ required: true, message: '请选择年度', trigger: 'change' }], nd: [{ required: true, message: '请选择年度', trigger: 'change' }],
sskcbbh: [{ required: true, message: '请输入课次编号', trigger: 'blur' }], sskcbbh: [{ required: true, message: '请选择可供调课课次', trigger: 'change' }],
sy: [{ required: true, message: '请输入调课事由', trigger: 'blur' }], sy: [{ required: true, message: '请输入调课事由', trigger: 'blur' }],
rq: [{ required: true, message: '请选择拟调整日期', trigger: 'change' }], rq: [{ required: true, message: '请选择拟调整日期', trigger: 'change' }],
jc: [{ required: true, message: '请选择拟调整节次', trigger: 'change' }], jc: [{ required: true, message: '请选择拟调整节次', trigger: 'change' }]
sqjybh: [{ required: true, message: '请输入申请教员编号', trigger: 'blur' }]
}, },
// 可供调课课次 // 可供调课课次
lessonDialogVisible: false, lessonDialogVisible: false,
lessonLoading: false, lessonLoading: false,
lessonOptions: [], lessonOptions: [],
classroomLoading: false,
classroomOptions: [],
// 审批 // 审批
auditVisible: false, auditVisible: false,
auditLoading: false, auditLoading: false,
@@ -480,9 +503,39 @@ export default {
xjsbh: '', xjsbh: '',
ydsjap: '' ydsjap: ''
} }
this.lessonOptions = []
this.loadClassroomOptions()
this.$nextTick(() => this.$refs.addForm && this.$refs.addForm.clearValidate()) this.$nextTick(() => this.$refs.addForm && this.$refs.addForm.clearValidate())
this.addVisible = true this.addVisible = true
}, },
handleAddYearChange() {
this.addForm.sskcbbh = ''
this.addForm.xydmc = ''
this.addForm.yjsbh = ''
this.addForm.xjsbh = ''
this.addForm.ydsjap = ''
this.lessonOptions = []
},
loadClassroomOptions() {
this.classroomLoading = true
return listAllClassroom().then(response => {
const classrooms = Array.isArray(response.data) ? response.data : []
this.classroomOptions = classrooms
.filter(room => room.jsbh && !this.isDisabledValue(room.ty))
.sort((first, second) => String(first.jsbh).localeCompare(String(second.jsbh), 'zh-CN'))
}).catch(() => {
this.classroomOptions = []
this.$message.warning('教室列表加载失败,请稍后重试')
}).finally(() => {
this.classroomLoading = false
})
},
classroomOptionLabel(room) {
return room.jsmc ? room.jsbh + ' · ' + room.jsmc : room.jsbh
},
isDisabledValue(value) {
return value === true || value === 1 || value === '1' || value === 'true'
},
loadAdjustableLessons() { loadAdjustableLessons() {
if (!this.addForm.nd) { if (!this.addForm.nd) {
this.$message.warning('请先选择年度') this.$message.warning('请先选择年度')
@@ -490,23 +543,32 @@ export default {
} }
this.lessonLoading = true this.lessonLoading = true
listAdjustableLessons({ nd: this.addForm.nd }).then(response => { listAdjustableLessons({ nd: this.addForm.nd }).then(response => {
this.lessonOptions = response.data || [] const data = response.data || []
this.lessonOptions = Array.isArray(data) ? data : (data.records || [])
this.lessonLoading = false this.lessonLoading = false
this.lessonDialogVisible = true this.lessonDialogVisible = true
}).catch(() => { }).catch(() => {
this.lessonLoading = false this.lessonLoading = false
this.$message.info('加载可供调课课次失败,请手动填写课次编号') this.$message.warning('加载可供调课课次失败,请稍后重试')
}) })
}, },
pickLesson(row) { pickLesson(row) {
this.addForm.sskcbbh = row.sskcbbh const lessonNumber = row.sskcbbh || row.bh || ''
// 自动带出课次关联字段(若接口返回则回填) if (!lessonNumber) {
;['xydmc', 'yjsbh', 'ydsjap', 'kbh', 'kcbbh', 'xydrwbh', 'jysdh', 'xjsbh', 'kcmc', 'sqjyxm'].forEach(key => { this.$message.warning('当前课次缺少课次编号,无法选择')
return
}
this.addForm.sskcbbh = lessonNumber
this.addForm.xydmc = row.xydmc || ''
this.addForm.yjsbh = row.jsbh || row.yjsbh || ''
this.addForm.xjsbh = ''
this.addForm.ydsjap = row.rq ? this.fmtRqJc(row.rq, row.jc) : (row.ydsjap || '')
;['kbh', 'kcbbh', 'xydrwbh', 'jysdh', 'kcmc', 'sqjyxm'].forEach(key => {
if (row[key] !== undefined && row[key] !== null) this.addForm[key] = row[key] if (row[key] !== undefined && row[key] !== null) this.addForm[key] = row[key]
}) })
if (!this.addForm.ydsjap && row.rq) this.addForm.ydsjap = this.fmtRqJc(row.rq, row.jc)
this.lessonDialogVisible = false this.lessonDialogVisible = false
this.$message.success('已选择课次:' + (row.kcmc || row.sskcbbh)) this.$nextTick(() => this.$refs.addForm && this.$refs.addForm.validateField('sskcbbh'))
this.$message.success('已选择课次:' + (row.kcmc || lessonNumber))
}, },
submitAdd() { submitAdd() {
this.$refs.addForm.validate(valid => { this.$refs.addForm.validate(valid => {
@@ -516,12 +578,14 @@ export default {
sy: this.addForm.sy, sy: this.addForm.sy,
rq: this.addForm.rq + 'T00:00:00', rq: this.addForm.rq + 'T00:00:00',
jc: this.addForm.jc, jc: this.addForm.jc,
nd: this.addForm.nd, nd: this.addForm.nd
sqjybh: this.addForm.sqjybh
} }
;['xydmc', 'yjsbh', 'xjsbh', 'ydsjap', 'kbh', 'kcbbh', 'xydrwbh', 'jysdh', 'kcmc', 'sqjyxm'].forEach(key => { ;['xydrwbh', 'kbh', 'kcbbh', 'xjsbh'].forEach(key => {
if (this.addForm[key]) payload[key] = this.addForm[key] if (this.addForm[key]) payload[key] = this.addForm[key]
}) })
if (this.addForm.xjsbh) {
payload.roomList = [{ jsbh: this.addForm.xjsbh }]
}
this.addLoading = true this.addLoading = true
submitScheduleAdjust(payload).then(() => { submitScheduleAdjust(payload).then(() => {
this.addLoading = false this.addLoading = false
@@ -29,10 +29,10 @@
</el-col> </el-col>
<el-col :xs="24" :md="8"> <el-col :xs="24" :md="8">
<el-form-item label="停用"> <el-form-item label="停用">
<el-select v-model="searchForm.ty" placeholder="全部" clearable class="w-full"> <el-radio-group v-model="searchForm.ty">
<el-option :value="true" label="停用" /> <el-radio :label="false"></el-radio>
<el-option :value="false" label="正常" /> <el-radio :label="true"></el-radio>
</el-select> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :md="8"> <el-col :xs="24" :md="8">
@@ -211,7 +211,7 @@ export default {
jsmc: '', jsmc: '',
jxldh: '', jxldh: '',
jxcdlx: '', jxcdlx: '',
ty: '' ty: false
}, },
tableData: [], tableData: [],
jxcdlxOptions: [], jxcdlxOptions: [],
@@ -302,7 +302,7 @@ export default {
jsmc: '', jsmc: '',
jxldh: '', jxldh: '',
jxcdlx: '', jxcdlx: '',
ty: '' ty: false
} }
this.pageNum = 1 this.pageNum = 1
this.fetchList() this.fetchList()
@@ -29,11 +29,11 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="ty"> <el-form-item label="停用" prop="ty">
<el-select v-model="queryParams.ty" placeholder="全部" clearable style="width: 100px"> <el-radio-group v-model="queryParams.ty">
<el-option label="启用" :value="0" /> <el-radio :label="0"></el-radio>
<el-option label="停用" :value="1" /> <el-radio :label="1"></el-radio>
</el-select> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button>
@@ -176,7 +176,7 @@ export default {
jysdh: undefined, jysdh: undefined,
jysmc: undefined, jysmc: undefined,
bx: undefined, bx: undefined,
ty: undefined ty: 0
}, },
// 表单参数 // 表单参数
form: {}, form: {},
+7 -9
View File
@@ -48,11 +48,10 @@
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="停用"> <el-form-item label="停用">
<el-select v-model="searchForm.tyType" class="w-full"> <el-radio-group v-model="searchForm.ty">
<el-option label="全部" value="" /> <el-radio :label="false"></el-radio>
<el-option label="在用" value="0" /> <el-radio :label="true"></el-radio>
<el-option label="已停用" value="1" /> </el-radio-group>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -806,7 +805,7 @@ export default {
// ==================== 查询表单(仅后端 Mapper 支持的字段) ==================== // ==================== 查询表单(仅后端 Mapper 支持的字段) ====================
searchForm: { searchForm: {
bh: '', mc: '', zz: '', cbs: '', isbn: '', bh: '', mc: '', zz: '', cbs: '', isbn: '',
jcfl: '', jclx: '', tyType: '' jcfl: '', jclx: '', ty: false
}, },
// ==================== 下拉选项 ==================== // ==================== 下拉选项 ====================
@@ -958,8 +957,7 @@ export default {
params[key] = String(value).trim() params[key] = String(value).trim()
} }
}) })
if (this.searchForm.tyType === '0') params.ty = false params.ty = this.searchForm.ty
else if (this.searchForm.tyType === '1') params.ty = true
return params return params
}, },
@@ -991,7 +989,7 @@ export default {
handleReset() { handleReset() {
this.searchForm = { this.searchForm = {
bh: '', mc: '', zz: '', cbs: '', isbn: '', bh: '', mc: '', zz: '', cbs: '', isbn: '',
jcfl: '', jclx: '', tyType: '' jcfl: '', jclx: '', ty: false
} }
this.pageNum = 1 this.pageNum = 1
this.fetchList() this.fetchList()