This commit is contained in:
@@ -21,6 +21,7 @@ export default {
|
|||||||
getselectBySchIdAndGradeId:BaseUrl + "/api/schclass/selectBySchIdAndGradeId",//通过学校ID、年级ID获取班级下拉
|
getselectBySchIdAndGradeId:BaseUrl + "/api/schclass/selectBySchIdAndGradeId",//通过学校ID、年级ID获取班级下拉
|
||||||
getselectBySchsystemId:BaseUrl + "/api/grade/selectBySchsystemId",//通过学制ID获取年级下拉
|
getselectBySchsystemId:BaseUrl + "/api/grade/selectBySchsystemId",//通过学制ID获取年级下拉
|
||||||
getTeacherTree:BaseUrl + "/api/tree/getTeacherTree",//获取教师选人树
|
getTeacherTree:BaseUrl + "/api/tree/getTeacherTree",//获取教师选人树
|
||||||
|
getClassHistoryTree:BaseUrl + "/api/tree/getClassHistoryTree",//获取历年班级树
|
||||||
|
|
||||||
//学制选择
|
//学制选择
|
||||||
getschsystemlist: BaseUrl + "/api/schsystem/list",//获取学校绑定学制列表
|
getschsystemlist: BaseUrl + "/api/schsystem/list",//获取学校绑定学制列表
|
||||||
@@ -105,6 +106,10 @@ export default {
|
|||||||
getsearchTransferOut: BaseUrl + "/api/teacher/searchTransferOut",//教师转出教师列表
|
getsearchTransferOut: BaseUrl + "/api/teacher/searchTransferOut",//教师转出教师列表
|
||||||
teacherdownloadTemplate: BaseUrl + "/api/teacher/downloadTemplate",//下载教师模版
|
teacherdownloadTemplate: BaseUrl + "/api/teacher/downloadTemplate",//下载教师模版
|
||||||
teacherImport: BaseUrl + "/api/teacher/Import",//教师导入
|
teacherImport: BaseUrl + "/api/teacher/Import",//教师导入
|
||||||
|
addGroup: BaseUrl + "/api/usergroup/addGroup",//同步添加子组
|
||||||
|
editGroup: BaseUrl + "/api/usergroup/editGroup",//同步编辑子组
|
||||||
|
deleteGroup: BaseUrl + "/api/usergroup/deleteGroup",//同步删除子组
|
||||||
|
moveGroup: BaseUrl + "/api/usergroup/moveGroup",//同步移动子组
|
||||||
|
|
||||||
// 教师任教
|
// 教师任教
|
||||||
getteachssearch: BaseUrl + "/api/teachs/search",//获取任教列表
|
getteachssearch: BaseUrl + "/api/teachs/search",//获取任教列表
|
||||||
@@ -150,6 +155,12 @@ export default {
|
|||||||
getbaseSchAbnormalSearch: BaseUrl + "/api/student/baseSchAbnormalSearch",//获取K12学生异动列表
|
getbaseSchAbnormalSearch: BaseUrl + "/api/student/baseSchAbnormalSearch",//获取K12学生异动列表
|
||||||
gethigherSchAbnormalSearch: BaseUrl + "/api/student/higherSchAbnormalSearch",//获取高校学生异动列表
|
gethigherSchAbnormalSearch: BaseUrl + "/api/student/higherSchAbnormalSearch",//获取高校学生异动列表
|
||||||
|
|
||||||
|
//历史查询
|
||||||
|
getClass: BaseUrl + "/api/history/getClass",//获取班级信息
|
||||||
|
getHistoryClassTeach: BaseUrl + "/api/history/getHistoryClassTeach",//获取历史任教信息
|
||||||
|
getHistoryClassStudent: BaseUrl + "/api/history/getHistoryClassStudent",//获取历史班级信息
|
||||||
|
getHistoryClassTeachByStuId: BaseUrl + "/api/history/getHistoryClassTeachByStuId",//通过学生id获取历史任教信息
|
||||||
|
|
||||||
//日志管理
|
//日志管理
|
||||||
getlogsearch: BaseUrl + "/api/log/search",//获取日志列表
|
getlogsearch: BaseUrl + "/api/log/search",//获取日志列表
|
||||||
|
|
||||||
|
|||||||
+170
-176
@@ -2,22 +2,17 @@
|
|||||||
<div class="class-history-wrap">
|
<div class="class-history-wrap">
|
||||||
<!-- 左侧树形区域:固定高度纵向滚动、单选、默认首班级选中 -->
|
<!-- 左侧树形区域:固定高度纵向滚动、单选、默认首班级选中 -->
|
||||||
<div class="left-tree-box">
|
<div class="left-tree-box">
|
||||||
<Tree
|
<my-tree :treeData="treeData" :selectId="selectnodeid" @on-tree-click="treeLink"></my-tree>
|
||||||
:data="treeData"
|
|
||||||
ref="tree"
|
|
||||||
single
|
|
||||||
:selected.sync="selectedTreeNode"
|
|
||||||
@on-select="treeNodeChange"
|
|
||||||
></Tree>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 右侧主内容区域 -->
|
<!-- 右侧主内容区域 -->
|
||||||
<div class="right-main">
|
<div class="right-main">
|
||||||
<!-- 顶部基础信息栏 -->
|
<!-- 顶部基础信息栏 -->
|
||||||
<div class="top-info-bar">
|
<div class="top-info-bar">
|
||||||
<span class="info-item">学级:{{ currentGrade }}</span>
|
<span v-if="ClassMap.schType==2" class="info-item">专业:{{ ClassMap.majorsName }}</span>
|
||||||
<span class="info-item">班级:{{ currentClassName }}</span>
|
<span class="info-item"><b>学级:</b>{{ ClassMap.gradeName }}</span>
|
||||||
<span class="info-item">入学时间:{{ enrollDate }}</span>
|
<span class="info-item"><b>班级:</b>{{ ClassMap.name }}</span>
|
||||||
|
<span class="info-item"><b>入学时间:</b>{{ ClassMap.createDate }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 标签页切换:历史任教 / 历史学生 -->
|
<!-- 标签页切换:历史任教 / 历史学生 -->
|
||||||
@@ -26,142 +21,75 @@
|
|||||||
<TabPane label="历史学生" name="student"></TabPane>
|
<TabPane label="历史学生" name="student"></TabPane>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
<!-- 筛选头部行 -->
|
|
||||||
<div class="filter-bar">
|
|
||||||
<span>日期:{{ dateRange }} 年级:{{ currentGradeShort }}</span>
|
|
||||||
<span v-if="activeTab === 'student'" style="margin-left:20px">学生数:{{ studentTotal }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 滚动内容容器:高度自适应溢出滚动 -->
|
<!-- 滚动内容容器:高度自适应溢出滚动 -->
|
||||||
<div class="scroll-content-box">
|
<div class="scroll-content-box">
|
||||||
<!-- 历史任教布局 -->
|
<div v-if="activeTab === 'teach'" v-for="(item,index) in HistoryClassTeachList" :key="index">
|
||||||
<div v-if="activeTab === 'teach'" class="teach-wrap">
|
<!-- 筛选头部行 -->
|
||||||
<div class="item-card" v-for="(item,idx) in teachList" :key="idx">
|
<div class="filter-bar">
|
||||||
<div class="card-title">{{ item.subject }}</div>
|
<span>日期:{{ item.yearDate }}</span>
|
||||||
<div class="card-value">{{ item.teacher }}</div>
|
<span v-if="ClassMap.schType==2" style="margin-left:20px">学年:{{ item.gradeName }}</span>
|
||||||
|
<span v-else style="margin-left:20px">年级:{{ item.gradeName }}</span>
|
||||||
|
</div>
|
||||||
|
<!-- 历史任教布局 -->
|
||||||
|
<div class="teach-wrap">
|
||||||
|
<div class="item-card" v-for="(itt,idx) in item.teach" :key="idx">
|
||||||
|
<div class="card-title">{{ itt.subName }}</div>
|
||||||
|
<div class="card-value">{{ itt.teacherName }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-if="activeTab === 'student'" v-for="(item,index) in HistoryClassStudentList" :key="index">
|
||||||
<!-- 历史学生布局 -->
|
<!-- 筛选头部行 -->
|
||||||
<div v-if="activeTab === 'student'" class="student-wrap">
|
<div class="filter-bar">
|
||||||
<div class="item-card student-card" style="cursor: pointer;" v-for="(item,idx) in studentList" :key="idx" @click="tolink(item)">
|
<span>日期:{{ item.yearDate }}</span>
|
||||||
{{ item.name }}<span v-if="item.idCard">({{ item.idCard }})</span>
|
<span v-if="ClassMap.schType==2" style="margin-left:20px">学年:{{ item.gradeName }}</span>
|
||||||
|
<span v-else style="margin-left:20px">年级:{{ item.gradeName }}</span>
|
||||||
|
<span style="margin-left:20px">学生数:{{ item.student.length }}</span>
|
||||||
|
</div>
|
||||||
|
<!-- 历史学生布局 -->
|
||||||
|
<div class="student-wrap">
|
||||||
|
<div class="item-card student-card" style="cursor: pointer;" v-for="(itt,idx) in item.student" :key="idx" @click="tolink(item)">
|
||||||
|
{{ itt.StuName }}
|
||||||
|
<!-- <span v-if="itt.teacherName">({{ itt.teacherName }})</span> -->
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 底部分页固定区域(预留分页逻辑) -->
|
|
||||||
<div class="page-bottom-bar">
|
|
||||||
<span>共 {{ activeTab === 'teach' ? teachList.length : studentTotal }} 条</span>
|
|
||||||
<Page
|
|
||||||
v-if="needPage"
|
|
||||||
:current.sync="pageNum"
|
|
||||||
:page-size="pageSize"
|
|
||||||
:total="activeTab === 'teach' ? teachList.length : studentTotal"
|
|
||||||
:page-size-opts="[20,40,60]"
|
|
||||||
show-sizer
|
|
||||||
@on-change="pageChange"
|
|
||||||
@on-page-size-change="sizeChange"
|
|
||||||
></Page>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import myTree from "../components/my_tree";
|
||||||
export default {
|
export default {
|
||||||
name: 'ClassHistoryPage',
|
name: 'ClassHistoryPage',
|
||||||
|
components: { myTree },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
// 树形配置
|
treeData: [],
|
||||||
treeData: [
|
ClassMap:{
|
||||||
{
|
gradeName:'',
|
||||||
title: '上海市进才中学北校',
|
name:'',
|
||||||
expand: true,
|
createDate:'',
|
||||||
children: [
|
graduate:'',
|
||||||
{
|
majorsName:'',
|
||||||
title: '2025级(预备)',
|
schType:'',
|
||||||
expand: true,
|
},
|
||||||
children: [
|
selectnodeid:'',
|
||||||
{ title: '1班' },{ title: '2班' },{ title: '3班' },{ title: '4班' },{ title: '5班' },
|
schsystemId:'',
|
||||||
{ title: '6班' },{ title: '7班' },{ title: '8班' },{ title: '9班' },{ title: '10班' },
|
gradeId:'',
|
||||||
{ title: '11班' },{ title: '12班' },{ title: '13班' },{ title: '14班' },{ title: '15班' },
|
classId:'',
|
||||||
{ title: '16班' },{ title: '17班' },{ title: '18班' },{ title: '19班' },{ title: '20班' },
|
|
||||||
{ title: '21班' },{ title: '22班' },{ title: '23班' },
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{ title: '2024级(初一)', expand: true, children: [] },
|
|
||||||
{ title: '2023级(初二)', expand: true, children: [] },
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
selectedTreeNode: null,
|
|
||||||
currentClassName: '1班',
|
|
||||||
currentGrade: '2025级',
|
|
||||||
currentGradeShort: '预备',
|
|
||||||
enrollDate: '2025-07-11',
|
|
||||||
dateRange: '2025-07-11 - 2026-07-15',
|
|
||||||
|
|
||||||
// 标签页
|
// 标签页
|
||||||
activeTab: 'teach',
|
activeTab: 'teach',
|
||||||
|
|
||||||
// 任教数据
|
// 任教数据
|
||||||
teachList: [
|
HistoryClassTeachList:[],
|
||||||
{ subject: '班主任', teacher: '伍芳芳' },
|
|
||||||
{ subject: '语文', teacher: '卫红' },
|
|
||||||
{ subject: '数学', teacher: '伍芳芳' },
|
|
||||||
{ subject: '英语', teacher: '俞莉玉' },
|
|
||||||
{ subject: '体育', teacher: '郑浩淼' },
|
|
||||||
{ subject: '美术', teacher: '蔡婷婷' },
|
|
||||||
{ subject: '科学', teacher: '游宝玲' },
|
|
||||||
{ subject: '劳技', teacher: '牛乐' },
|
|
||||||
{ subject: '地理', teacher: '沈晓燕' },
|
|
||||||
{ subject: '音乐', teacher: '李海昆' },
|
|
||||||
{ subject: '心理', teacher: '展望' },
|
|
||||||
{ subject: '道德与法治', teacher: '郭雨佳' },
|
|
||||||
{ subject: '班主任', teacher: '伍芳芳' },
|
|
||||||
{ subject: '劳动', teacher: '牛乐' },
|
|
||||||
{ subject: '信息科技', teacher: '张颖' },
|
|
||||||
{ subject: '副班主任', teacher: '展望' },
|
|
||||||
{ subject: '校本(劳动教育)', teacher: '牛乐' },
|
|
||||||
{ subject: '体育与健康', teacher: '郑浩淼' },
|
|
||||||
{ subject: '二外', teacher: '季思飞' },
|
|
||||||
{ subject: '校本(心理+二外)', teacher: '数字化中心09' },
|
|
||||||
],
|
|
||||||
|
|
||||||
// 学生数据
|
// 学生数据
|
||||||
studentTotal: 48,
|
studentTotal: 48,
|
||||||
studentList: [
|
HistoryClassStudentList: [],
|
||||||
{ name: '金俊辰', idCard: '' },
|
|
||||||
{ name: '周泽恒', idCard: '310115201404031836' },
|
|
||||||
{ name: '杨城宁', idCard: '310115201406110407' },
|
|
||||||
{ name: '李琪琪', idCard: '310115201403072281' },
|
|
||||||
{ name: '浦森隽', idCard: '310115201311290011' },
|
|
||||||
{ name: '沈奕欣', idCard: '310115201402286384' },
|
|
||||||
{ name: '李赛乐', idCard: '31011520131110037X' },
|
|
||||||
{ name: '林欣宜', idCard: '310109201403261560' },
|
|
||||||
{ name: '胡艺涵', idCard: '310115201403251167' },
|
|
||||||
{ name: '周维哲', idCard: '310115201311182221' },
|
|
||||||
{ name: '曹维德', idCard: '310115201311182213' },
|
|
||||||
{ name: '陈茂萌', idCard: '310115201406020516' },
|
|
||||||
{ name: '施锐朗', idCard: '31011520140412491X' },
|
|
||||||
{ name: '袁唯格', idCard: '310115201401270022' },
|
|
||||||
{ name: '徐睿辰', idCard: '310115201406284490' },
|
|
||||||
{ name: '姚欣蕊', idCard: '310115201402161848' },
|
|
||||||
{ name: '王立仁', idCard: '310115201312030377' },
|
|
||||||
{ name: '朱思媛', idCard: '310115201407220026' },
|
|
||||||
{ name: '李文心', idCard: '310115201312165167' },
|
|
||||||
{ name: '刘烁恒', idCard: '310115201407273873' },
|
|
||||||
{ name: '严潇宇', idCard: '310115201312120372' },
|
|
||||||
{ name: '唐羿', idCard: '310107201401013958' },
|
|
||||||
{ name: '于楚涵', idCard: '230110201408063729' },
|
|
||||||
{ name: '肖梦晞', idCard: '340102201401081524' },
|
|
||||||
{ name: '郑聿铭', idCard: '310114201401071633' },
|
|
||||||
{ name: '宗柠', idCard: '310115201310094481' },
|
|
||||||
{ name: '张子煜', idCard: '310115201401292619' },
|
|
||||||
{ name: '刘孜宸', idCard: '430602201312280205' },
|
|
||||||
{ name: '潘思羽', idCard: '310115201312310280' },
|
|
||||||
],
|
|
||||||
|
|
||||||
// 分页配置
|
// 分页配置
|
||||||
needPage: false,
|
needPage: false,
|
||||||
@@ -170,66 +98,132 @@
|
|||||||
total: 0
|
total: 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
// 切换标签页重新初始化拖拽
|
||||||
|
activeTab(val) {
|
||||||
|
if (val === 'teach') {
|
||||||
|
this.getHistoryClassTeach();
|
||||||
|
}else{
|
||||||
|
this.getHistoryClassStudent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
created() {
|
created() {
|
||||||
// 页面初始化:自动选中最后一级第一个班级(2025级(预备) -> 1班)
|
// 页面初始化:自动选中最后一级第一个班级(2025级(预备) -> 1班)
|
||||||
this.initDefaultSelectTree()
|
this.getClassTree()
|
||||||
this.loadClassDetail()
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 默认选中叶子第一个班级
|
//获取班级树
|
||||||
initDefaultSelectTree() {
|
getClassTree:function(){
|
||||||
const schoolNode = this.treeData[0]
|
const _this = this;
|
||||||
const targetGrade = schoolNode.children.find(g => g.title === '2025级(预备)')
|
var item={};
|
||||||
if (targetGrade && targetGrade.children.length) {
|
_this.$api.get(APIConfig.BschClassSystem.getClassHistoryTree, item, resp => {
|
||||||
this.selectedTreeNode = targetGrade.children[0]
|
if(resp.code==0)
|
||||||
this.currentClassName = this.selectedTreeNode.title
|
{
|
||||||
this.currentGrade = '2025级'
|
this.treeData=resp.data;
|
||||||
this.currentGradeShort = '预备'
|
if(resp.data.children.length>0){
|
||||||
}
|
// 起始节点为 data
|
||||||
|
const pathArr = _this.getFirstPath(resp.data);
|
||||||
|
_this.schsystemId=pathArr[pathArr.length-1].schsystemId;
|
||||||
|
_this.gradeId=pathArr[pathArr.length-1].gradeId+'';
|
||||||
|
_this.classId=pathArr[pathArr.length-1].classId+'';
|
||||||
|
_this.selectnodeid=pathArr[pathArr.length-1].id;
|
||||||
|
_this.getClass();
|
||||||
|
_this.getHistoryClassTeach();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
//获取最后一级的map
|
||||||
// 树节点点击切换
|
getFirstPath(rootNode) {
|
||||||
treeNodeChange(node) {
|
const path = [];
|
||||||
// 只响应叶子班级节点,过滤年级、学校父节点
|
let cur = rootNode;
|
||||||
if (!node.children || node.children.length === 0) {
|
while (cur) {
|
||||||
this.currentClassName = node.title
|
// 存入当前层级关键信息
|
||||||
this.pageNum = 1
|
path.push({
|
||||||
this.loadClassDetail()
|
id: cur.id,
|
||||||
}
|
name: cur.name,
|
||||||
},
|
type: cur.type,
|
||||||
|
schsystemId:cur.schsystemId,
|
||||||
// 加载班级对应任教/学生数据
|
gradeId:cur.gradeId,
|
||||||
loadClassDetail() {
|
classId:cur.classId,
|
||||||
console.log('当前选中班级:', this.currentGrade + this.currentClassName)
|
});
|
||||||
// 此处可替换后端接口请求
|
// 有子节点就取第一个,没有就终止
|
||||||
/*
|
if (cur.children && cur.children.length > 0) {
|
||||||
this.$axios.get('/api/class/history', {
|
cur = cur.children[0];
|
||||||
params: {
|
} else {
|
||||||
grade: this.currentGrade,
|
cur = null;
|
||||||
className: this.currentClassName,
|
|
||||||
tabType: this.activeTab
|
|
||||||
}
|
}
|
||||||
}).then(res => {
|
}
|
||||||
this.teachList = res.data.teachList
|
return path;
|
||||||
this.studentList = res.data.studentList
|
|
||||||
this.studentTotal = res.data.studentTotal
|
|
||||||
this.total = this.activeTab === 'teach' ? this.teachList.length : this.studentTotal
|
|
||||||
})
|
|
||||||
*/
|
|
||||||
},
|
},
|
||||||
|
// 树形选中切换
|
||||||
|
treeLink(treeNode) {
|
||||||
|
this.schsystemId=treeNode.schsystemId;
|
||||||
|
this.gradeId=treeNode.gradeId?treeNode.gradeId+'':'';
|
||||||
|
this.classId=treeNode.classId?treeNode.classId+'':'';
|
||||||
|
this.selectnodeid=treeNode.id;
|
||||||
|
this.pageNum = 1;
|
||||||
|
this.getClass();
|
||||||
|
if (this.activeTab === 'teach') {
|
||||||
|
this.getHistoryClassTeach();
|
||||||
|
}else{
|
||||||
|
this.getHistoryClassStudent();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//获取班级信息
|
||||||
|
getClass:function(){
|
||||||
|
const _this = this;
|
||||||
|
var item={
|
||||||
|
gradeId:_this.gradeId,
|
||||||
|
classId:_this.classId
|
||||||
|
};
|
||||||
|
_this.$api.get(APIConfig.BschClassSystem.getClass, item, resp => {
|
||||||
|
if(resp.code==0)
|
||||||
|
{
|
||||||
|
this.ClassMap={
|
||||||
|
gradeName:resp.data.gradeName,
|
||||||
|
name:resp.data.name,
|
||||||
|
createDate:resp.data.createDate,
|
||||||
|
graduate:resp.data.graduate,
|
||||||
|
majorsName:resp.data.majorsName,
|
||||||
|
schType:resp.data.schType
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//获取历史任教信息
|
||||||
|
getHistoryClassTeach:function(){
|
||||||
|
const _this = this;
|
||||||
|
var item={
|
||||||
|
gradeId:_this.gradeId,
|
||||||
|
classId:_this.classId
|
||||||
|
};
|
||||||
|
_this.$api.get(APIConfig.BschClassSystem.getHistoryClassTeach, item, resp => {
|
||||||
|
if(resp.code==0)
|
||||||
|
{
|
||||||
|
this.HistoryClassTeachList=resp.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//获取历史学生信息
|
||||||
|
getHistoryClassStudent:function(){
|
||||||
|
const _this = this;
|
||||||
|
var item={
|
||||||
|
gradeId:_this.gradeId,
|
||||||
|
classId:_this.classId
|
||||||
|
};
|
||||||
|
_this.$api.get(APIConfig.BschClassSystem.getHistoryClassStudent, item, resp => {
|
||||||
|
if(resp.code==0)
|
||||||
|
{
|
||||||
|
this.HistoryClassStudentList=resp.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//跳转详情
|
||||||
tolink(item){
|
tolink(item){
|
||||||
this.$router.push({path:'/historySearchDetail'});
|
this.$router.push({path:'/historySearchDetail?stuId='+item.stuId+'&studentName='+item.studentName+'&className='+item.className});
|
||||||
},
|
},
|
||||||
// 分页切换
|
|
||||||
pageChange(p) {
|
|
||||||
this.pageNum = p
|
|
||||||
this.loadClassDetail()
|
|
||||||
},
|
|
||||||
sizeChange(size) {
|
|
||||||
this.pageSize = size
|
|
||||||
this.pageNum = 1
|
|
||||||
this.loadClassDetail()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -262,9 +256,9 @@
|
|||||||
|
|
||||||
/* 顶部班级信息行 */
|
/* 顶部班级信息行 */
|
||||||
.top-info-bar {
|
.top-info-bar {
|
||||||
font-size: 20px;
|
font-size: 18px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
padding: 8px 0 12px;
|
padding: 0px 0 12px;
|
||||||
}
|
}
|
||||||
.info-item {
|
.info-item {
|
||||||
margin-right: 30px;
|
margin-right: 30px;
|
||||||
@@ -282,7 +276,7 @@
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
padding: 10px 0;
|
/* padding: 10px 0; */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 任教方块流式布局 */
|
/* 任教方块流式布局 */
|
||||||
|
|||||||
@@ -4,70 +4,62 @@
|
|||||||
<div class="top-header-bar">
|
<div class="top-header-bar">
|
||||||
<div class="left-info">
|
<div class="left-info">
|
||||||
<span class="label">当前学生:</span>
|
<span class="label">当前学生:</span>
|
||||||
<span class="text">{{ studentName }}</span>
|
<span class="text">{{ $route.query.studentName }}</span>
|
||||||
<span class="label" style="margin-left: 24px;">当前班级:</span>
|
<span class="label" style="margin-left: 24px;">当前班级:</span>
|
||||||
<span class="text">{{ className }}</span>
|
<span class="text">{{ $route.query.className }}</span>
|
||||||
</div>
|
</div>
|
||||||
<Button type="primary" @click="goBack">返回上一级</Button>
|
<Button type="primary" @click="goBack">返回上一级</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 时间段+学校班级栏 -->
|
<div v-for="(item,index) in HistoryClassTeachByStuIdList" :key="index">
|
||||||
<div class="time-school-bar">
|
<!-- 时间段+学校班级栏 -->
|
||||||
<span>日期:{{ dateRange }}</span>
|
<div class="time-school-bar">
|
||||||
<span style="margin-left: 20px;">{{ schoolName }} {{ className }}</span>
|
<span>日期:{{ item.yearDate }}</span>
|
||||||
</div>
|
<span style="margin-left: 20px;">{{ item.schoolName }} {{ item.className }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- 科目教师卡片流式容器,超出纵向滚动 -->
|
<!-- 科目教师卡片流式容器,超出纵向滚动 -->
|
||||||
<div class="card-scroll-wrap">
|
<div class="card-scroll-wrap">
|
||||||
<div class="card-container">
|
<div class="card-container">
|
||||||
<div class="subject-card" v-for="(item, index) in subjectList" :key="index">
|
<div class="subject-card" v-for="(itt, index) in item.teach" :key="index">
|
||||||
<div class="card-title">{{ item.subject }}</div>
|
<div class="card-title">{{ itt.subName }}</div>
|
||||||
<div class="card-teacher">{{ item.teacher }}</div>
|
<div class="card-teacher">{{ itt.teacherName }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: 'StudentTeachDetail',
|
name: 'StudentTeachDetail',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
// 头部信息
|
|
||||||
studentName: '朱思媛',
|
|
||||||
className: '预备1班',
|
|
||||||
schoolName: '上海市进才中学北校',
|
|
||||||
dateRange: '2025-07-11~2026-07-15',
|
|
||||||
|
|
||||||
// 科目+教师数据源(完全匹配截图)
|
// 科目+教师数据源(完全匹配截图)
|
||||||
subjectList: [
|
HistoryClassTeachByStuIdList: []
|
||||||
{ subject: '班主任', teacher: '伍芳芳' },
|
}
|
||||||
{ subject: '副班主任', teacher: '未设置' },
|
},
|
||||||
{ subject: '语文', teacher: '卫红' },
|
created(){
|
||||||
{ subject: '数学', teacher: '伍芳芳' },
|
if(this.$route.query.stuId){
|
||||||
{ subject: '英语', teacher: '俞莉玉' },
|
this.getHistoryClassTeachByStuId();
|
||||||
{ subject: '体育', teacher: '郑浩淼' },
|
|
||||||
{ subject: '美术', teacher: '蔡婷婷' },
|
|
||||||
{ subject: '科学', teacher: '游宝玲' },
|
|
||||||
{ subject: '劳技', teacher: '牛乐' },
|
|
||||||
{ subject: '地理', teacher: '沈晓燕' },
|
|
||||||
{ subject: '音乐', teacher: '李海昆' },
|
|
||||||
|
|
||||||
{ subject: '心理', teacher: '展望' },
|
|
||||||
{ subject: '道德与法治', teacher: '郭雨佳' },
|
|
||||||
{ subject: '班主任', teacher: '伍芳芳' },
|
|
||||||
{ subject: '劳动', teacher: '牛乐' },
|
|
||||||
{ subject: '信息科技', teacher: '张颖' },
|
|
||||||
{ subject: '副班主任', teacher: '展望' },
|
|
||||||
{ subject: '校本(劳动教育)', teacher: '牛乐' },
|
|
||||||
{ subject: '体育与健康', teacher: '郑浩淼' },
|
|
||||||
{ subject: '二外', teacher: '季思飞' },
|
|
||||||
{ subject: '校本(心理+二外)', teacher: '数字化中心09' }
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
//通过学生Id获取历史任教信息
|
||||||
|
getHistoryClassTeachByStuId:function(){
|
||||||
|
const _this = this;
|
||||||
|
var item={
|
||||||
|
stuId:_this.$route.query.stuId
|
||||||
|
};
|
||||||
|
_this.$api.get(APIConfig.BschClassSystem.getHistoryClassTeachByStuId, item, resp => {
|
||||||
|
if(resp.code==0)
|
||||||
|
{
|
||||||
|
this.HistoryClassTeachByStuIdList=resp.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
// 返回上一页
|
// 返回上一页
|
||||||
goBack() {
|
goBack() {
|
||||||
this.$router.go(-1)
|
this.$router.go(-1)
|
||||||
|
|||||||
@@ -231,7 +231,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="margin-top:10px">
|
<div style="margin-top:10px">
|
||||||
<span>移动至:</span>
|
<span>移动至:</span>
|
||||||
<Tree :data="treeData" ref="moveGroupTreeRef"></Tree>
|
<my-tree :treeData="treeData" @on-tree-click="movetreeLink"></my-tree>
|
||||||
</div>
|
</div>
|
||||||
<div slot="footer" align="right">
|
<div slot="footer" align="right">
|
||||||
<Button @click="moveGroupModal = false" style="margin-right:10px">取消</Button>
|
<Button @click="moveGroupModal = false" style="margin-right:10px">取消</Button>
|
||||||
@@ -339,6 +339,8 @@ export default {
|
|||||||
selectnodetitle: '',
|
selectnodetitle: '',
|
||||||
selectnodetype:7,
|
selectnodetype:7,
|
||||||
searchKeyword: '',
|
searchKeyword: '',
|
||||||
|
selectparentId:0,
|
||||||
|
moveselectnodeid:0,
|
||||||
selectedRows: [],
|
selectedRows: [],
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
@@ -499,6 +501,7 @@ export default {
|
|||||||
_this.selectnodeid=resp.data.id;
|
_this.selectnodeid=resp.data.id;
|
||||||
_this.selectnodetitle=resp.data.name;
|
_this.selectnodetitle=resp.data.name;
|
||||||
_this.selectnodetype=resp.data.type;
|
_this.selectnodetype=resp.data.type;
|
||||||
|
_this.selectparentId=resp.data.parentId;
|
||||||
_this.loadData();
|
_this.loadData();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -508,6 +511,8 @@ export default {
|
|||||||
this.selectnodeid=treeNode.id;
|
this.selectnodeid=treeNode.id;
|
||||||
this.selectnodetitle=treeNode.name;
|
this.selectnodetitle=treeNode.name;
|
||||||
this.selectnodetype=treeNode.type;
|
this.selectnodetype=treeNode.type;
|
||||||
|
this.editGroupFormData.sort=treeNode.sort;
|
||||||
|
this.selectparentId=treeNode.parentId;
|
||||||
this.pageNum = 1
|
this.pageNum = 1
|
||||||
this.loadData()
|
this.loadData()
|
||||||
},
|
},
|
||||||
@@ -814,8 +819,21 @@ export default {
|
|||||||
submitAddGroup() {
|
submitAddGroup() {
|
||||||
this.$refs.addGroupForm.validate(valid => {
|
this.$refs.addGroupForm.validate(valid => {
|
||||||
if (!valid) return;
|
if (!valid) return;
|
||||||
this.$Message.success('新增分组成功');
|
let item={
|
||||||
this.addGroupModal = false;
|
name:this.addGroupFormData.groupName,
|
||||||
|
parentId:this.selectnodeid,
|
||||||
|
sort:this.addGroupFormData.sort
|
||||||
|
};
|
||||||
|
const url = APIConfig.BschClassSystem.addGroup;
|
||||||
|
this.$api.post(url,JSON.stringify(item), resp => {
|
||||||
|
if (resp.code == 0) {
|
||||||
|
this.$Message.success('新增分组成功');
|
||||||
|
this.addGroupModal = false;
|
||||||
|
this.getTeaTree();
|
||||||
|
} else if (resp.code == 4) {
|
||||||
|
this.$Message.info(resp.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -823,15 +841,27 @@ export default {
|
|||||||
if (!this.selectnodeid) return this.$Message.warning('请先选择分组')
|
if (!this.selectnodeid) return this.$Message.warning('请先选择分组')
|
||||||
this.editGroupIndex = this.selectnodeid;
|
this.editGroupIndex = this.selectnodeid;
|
||||||
this.editGroupFormData.groupName = this.selectnodetitle;
|
this.editGroupFormData.groupName = this.selectnodetitle;
|
||||||
this.editGroupFormData.sort = '';
|
|
||||||
this.editGroupModal = true;
|
this.editGroupModal = true;
|
||||||
},
|
},
|
||||||
submitEditGroup() {
|
submitEditGroup() {
|
||||||
this.$refs.editGroupForm.validate(valid => {
|
this.$refs.editGroupForm.validate(valid => {
|
||||||
if (!valid) return;
|
if (!valid) return;
|
||||||
this.selectedTreeNode.title = this.editGroupFormData.groupName;
|
let item={
|
||||||
this.editGroupModal = false;
|
name:this.editGroupFormData.groupName,
|
||||||
this.$Message.success('修改分组成功')
|
id:this.selectnodeid,
|
||||||
|
parentId:this.selectparentId,
|
||||||
|
sort:this.editGroupFormData.sort
|
||||||
|
};
|
||||||
|
const url = APIConfig.BschClassSystem.editGroup;
|
||||||
|
this.$api.post(url,JSON.stringify(item), resp => {
|
||||||
|
if (resp.code == 0) {
|
||||||
|
this.$Message.success('修改分组成功');
|
||||||
|
this.editGroupModal = false;
|
||||||
|
this.getTeaTree();
|
||||||
|
} else if (resp.code == 4) {
|
||||||
|
this.$Message.info(resp.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -840,18 +870,37 @@ export default {
|
|||||||
this.moveGroupTargetName = this.selectnodetitle;
|
this.moveGroupTargetName = this.selectnodetitle;
|
||||||
this.moveGroupModal = true;
|
this.moveGroupModal = true;
|
||||||
},
|
},
|
||||||
|
// 移动组树形选中切换
|
||||||
|
movetreeLink(treeNode) {
|
||||||
|
this.moveselectnodeid=treeNode.id;
|
||||||
|
},
|
||||||
confirmMoveGroup() {
|
confirmMoveGroup() {
|
||||||
this.moveGroupModal = false;
|
let item={
|
||||||
this.$Message.success('移动分组成功');
|
moveId:this.selectnodeid,
|
||||||
|
pid:this.moveselectnodeid
|
||||||
|
};
|
||||||
|
var url=APIConfig.BschClassSystem.moveGroup;
|
||||||
|
this.$api.post(url,JSON.stringify(item),(resp)=>{
|
||||||
|
this.moveGroupModal = false;
|
||||||
|
this.$Message.success('移动分组成功!');
|
||||||
|
this.getTeaTree();
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
delCurrentGroup() {
|
delCurrentGroup() {
|
||||||
if (!this.selectnodeid) return this.$Message.warning('请先选择分组');
|
if (!this.selectnodeid) return this.$Message.warning('请先选择分组');
|
||||||
this.$Modal.confirm({
|
this.$Modal.confirm({
|
||||||
title: '提示',
|
title: '提示',
|
||||||
content: `确定删除分组【${this.selectedTreeNode.title}】?`,
|
content: `确定删除分组【${this.selectnodetitle}】?`,
|
||||||
onOk: () => {
|
onOk: () => {
|
||||||
this.$Message.success('删除分组成功');
|
let item={
|
||||||
|
id:this.selectnodeid
|
||||||
|
};
|
||||||
|
var url=APIConfig.BschClassSystem.deleteGroup;
|
||||||
|
this.$api.post(url,item,(resp)=>{
|
||||||
|
this.$Message.success('删除分组成功!');
|
||||||
|
this.getTeaTree();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user