Compare commits
10 Commits
9b3b314c55
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 2d5eec7c56 | |||
| 0aa58b99bc | |||
| 5b75e68add | |||
| 6c56be7c41 | |||
| a40bcccf20 | |||
| 38bf07337f | |||
| f7cf2f63bb | |||
| 51b24f02db | |||
| 2ebdd36009 | |||
| fa8f2d5dad |
@@ -80,11 +80,12 @@ export function delExperience(eduId) {
|
||||
})
|
||||
}
|
||||
|
||||
// 辅导员查看学生教育经历
|
||||
// 跟据学号查看学生教育经历
|
||||
export function getOwnExpFdy(stuNo){
|
||||
return request({
|
||||
url:`/comprehensive/experience/getOwnExpFdy/${stuNo}`,
|
||||
method:'get'
|
||||
url:'/comprehensive/experience/getOwnExpByStuNo',
|
||||
method:'get',
|
||||
params:{stuNo}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,14 @@ export function getOwnInfo(){
|
||||
})
|
||||
}
|
||||
|
||||
// 跟据学号查询学生其他信息
|
||||
export function getOwnInfoByStuNo(stuNo){
|
||||
return request({
|
||||
url:'/comprehensive/extraInfo/getOwnInfoByStuNo',
|
||||
method:'GET',
|
||||
params:{stuNo}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 查询学生其他信息列表
|
||||
|
||||
@@ -108,7 +108,8 @@ export function deleteOwnFamilyFdy(id,stuNo){
|
||||
method:'GET'
|
||||
})
|
||||
}
|
||||
//
|
||||
|
||||
// 辅导员查看家庭成员列表
|
||||
export function getOwnFamilyFdy(stuNo){
|
||||
return request({
|
||||
method: 'get',
|
||||
|
||||
@@ -23,6 +23,15 @@ export function getOwnInfo() {
|
||||
})
|
||||
}
|
||||
|
||||
//跟据学号查询学生信息
|
||||
export function getOwnInfoByStuNo(stuNo) {
|
||||
return request({
|
||||
url: '/system/student/getOwnInfoByStuNo',
|
||||
method: 'get',
|
||||
params: {stuNo}
|
||||
})
|
||||
}
|
||||
|
||||
export function listEnableStu() {
|
||||
return request({
|
||||
url: '/system/student/listEnableStu',
|
||||
|
||||
@@ -16,3 +16,18 @@ export function syncStuinfo() {
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
//新查询学生信息列表
|
||||
export function listStudent(query) {
|
||||
return request({
|
||||
url: '/syncdata/getStudentInfo',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 新同步学生信息
|
||||
export function syncStudentInfo() {
|
||||
return request({
|
||||
url: '/syncdata/synchronousStudent',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -98,6 +98,7 @@
|
||||
<el-button size="mini" type="text" icon="el-icon-view"
|
||||
@click="lookDetail(scope.row)"
|
||||
>查看详情</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-search" @click="detailVClick(scope.row)">查新详情</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -247,11 +248,222 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 查新详情弹窗 -->
|
||||
<el-dialog :visible.sync="detailV" title="学生查新详情" width="1400px" append-to-body>
|
||||
<el-tabs v-model="activeDetailTab" @tab-click="handleTabClick">
|
||||
<el-tab-pane label="重要信息" name="important">
|
||||
<el-form v-if="detailInfo" size="mini" label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="手机号">
|
||||
<el-input v-model="detailInfo.phone" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号">
|
||||
<el-input v-model="detailInfo.idCard" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="出生日期">
|
||||
<el-input v-model="detailInfo.birthday" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中国农业银行卡号">
|
||||
<el-input v-model="detailInfo.xhk" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开户行">
|
||||
<el-input v-model="detailInfo.bankAddr" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div style="border-bottom: 1px dotted lightskyblue;margin-bottom: 0.5rem;" />
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="学院">
|
||||
<el-input v-model="detailInfoView.deptName" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="专业">
|
||||
<el-input v-model="detailInfoView.majorName" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="班级">
|
||||
<el-input v-model="detailInfoView.className" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="学号">
|
||||
<el-input v-model="detailInfoView.stuNo" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名">
|
||||
<el-input v-model="detailInfoView.stuName" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="年级">
|
||||
<el-input v-model="detailInfoView.gradeName" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="辅导员">
|
||||
<el-input v-model="detailInfoView.teacherName" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="其他信息" name="other">
|
||||
<el-form v-if="detailExtraInfo" size="mini" label-width="120px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="民族">
|
||||
<el-input v-model="detailExtraInfo.mz" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="政治面貌">
|
||||
<el-input v-model="detailExtraInfo.zzmm" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="血型">
|
||||
<el-input v-model="detailExtraInfo.xx" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="考生号">
|
||||
<el-input v-model="detailExtraInfo.ksh" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="籍贯">
|
||||
<el-input v-model="detailExtraInfo.jg" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口性质">
|
||||
<el-input v-model="detailExtraInfo.hkxz" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口所在地">
|
||||
<el-input v-model="detailExtraInfo.hkszd" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口所在省">
|
||||
<el-input v-model="detailExtraInfo.hksz1" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口所在市/区">
|
||||
<el-input v-model="detailExtraInfo.hksz2" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口所在区/县">
|
||||
<el-input v-model="detailExtraInfo.hksz3" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="户口所在地区县以下详细地址">
|
||||
<el-input v-model="detailExtraInfo.hkxxdz" readonly type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属派出所">
|
||||
<el-input v-model="detailExtraInfo.sspcs" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属街道">
|
||||
<el-input v-model="detailExtraInfo.ssjd" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="乘火车区间">
|
||||
<el-input v-model="detailExtraInfo.chcqj" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="详细联系地址">
|
||||
<el-input v-model="detailExtraInfo.xxlxdz" readonly type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="现家庭地址">
|
||||
<el-input v-model="detailExtraInfo.xjtdz" readonly type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="家庭邮政编码">
|
||||
<el-input v-model="detailExtraInfo.jtyzbm" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="家庭电话">
|
||||
<el-input v-model="detailExtraInfo.jtdh" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="家庭成员" name="family">
|
||||
<div v-if="detailFamilyInfo && detailFamilyInfo.length > 0">
|
||||
<el-table :data="detailFamilyInfo" style="width: 100%">
|
||||
<el-table-column prop="familyName" label="姓名" width="80" />
|
||||
<el-table-column prop="familyRelation" label="与学生关系" width="100" />
|
||||
<el-table-column prop="age" label="年龄" width="60" />
|
||||
<el-table-column prop="zzmm" label="政治面貌" width="100" />
|
||||
<el-table-column prop="job" label="职业" width="80" />
|
||||
<el-table-column prop="workPlace" label="工作单位" min-width="150" />
|
||||
<el-table-column prop="yearMoney" label="年收入" width="100" />
|
||||
<el-table-column prop="phone" label="联系方式" width="120" />
|
||||
<el-table-column prop="health" label="健康情况" width="100" />
|
||||
</el-table>
|
||||
</div>
|
||||
<div v-else style="text-align: center; color: #999;">
|
||||
暂无家庭成员信息
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="教育经历" name="edu">
|
||||
<div v-if="detailEduInfo && detailEduInfo.length > 0">
|
||||
<el-table :data="detailEduInfo" style="width: 100%">
|
||||
<el-table-column prop="startTime" label="开始时间" width="170" />
|
||||
<el-table-column prop="endTime" label="结束时间" width="170" />
|
||||
<el-table-column prop="schoolName" label="学校" width="170" />
|
||||
<el-table-column prop="post" label="职务" width="170" />
|
||||
<el-table-column prop="certifier" label="证明人" width="170" />
|
||||
</el-table>
|
||||
</div>
|
||||
<div v-else style="text-align: center; color: #999;">
|
||||
暂无教育经历信息
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { addStudent, delStudent, getClassName, getStudent, initOnePwd, initPwd, listOwnStu as listStudent, updateStudent } from '@/api/stuCQS/basedata/student'
|
||||
import { addStudent, delStudent, getClassName, getStudent, initOnePwd, initPwd, listOwnStu as listStudent, updateStudent, getOwnInfoByStuNo } from '@/api/stuCQS/basedata/student'
|
||||
import { getStuInfo } from '@/api/stuCQS/basedata/stuInfoView'
|
||||
import { getOwnInfo as getExtraInfo, getOwnInfoByStuNo as getStudentExtraInfoByStuNo } from '@/api/stuCQS/basedata/extraInfo'
|
||||
import { getOwnExpFdy } from '@/api/stuCQS/basedata/experience'
|
||||
import { getOwnFamilyFdy } from '@/api/stuCQS/basedata/member'
|
||||
|
||||
// import { } from "@/api/stuCQS/basedata/class";
|
||||
import { getTokenKeySessionStorage } from '@/utils/auth'
|
||||
|
||||
@@ -368,6 +580,16 @@ export default {
|
||||
classVlue2: [],//班级添加修改选择
|
||||
|
||||
picV: false,
|
||||
|
||||
// 查新详情相关
|
||||
detailV: false,
|
||||
detailInfo: {},
|
||||
detailInfoView: {},
|
||||
detailExtraInfo: {},
|
||||
detailFamilyInfo: [],
|
||||
detailEduInfo: [],
|
||||
activeDetailTab: 'important',
|
||||
|
||||
token: getTokenKeySessionStorage()
|
||||
}
|
||||
},
|
||||
@@ -588,6 +810,149 @@ export default {
|
||||
this.$alert('<div style=\'overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;\'>' + response.msg + '</div>', '导入结果', { dangerouslyUseHTMLString: true })
|
||||
this.getList()
|
||||
},
|
||||
|
||||
// 查新详情按钮点击事件
|
||||
async detailVClick(row) {
|
||||
this.detailV = true;
|
||||
try {
|
||||
// 使用getStuInfo接口获取学生基础信息(包含辅导员信息)
|
||||
const baseRes = await getStuInfo(row.stuNo);
|
||||
// 同时使用getOwnInfoByStuNo接口获取完整的学生敏感信息
|
||||
const res = await getOwnInfoByStuNo(row.stuNo);
|
||||
|
||||
if (baseRes.code === 200 && res.code === 200) {
|
||||
// 根据实际API返回的数据结构调整字段名
|
||||
this.detailInfo = {
|
||||
phone: res.data.phone || res.data.stuPhone || res.data.phoneNumber || res.data.mobile || res.data.tel || res.data.telephone || res.data.contactNumber || res.data.mobilePhone || '-',
|
||||
idCard: res.data.idCard || res.data.idNumber || res.data.identityCard || '-',
|
||||
birthday: res.data.birthday || res.data.birthDate || '-',
|
||||
xhk: res.data.xhk || res.data.bankCard || res.data.cardNumber || res.data.agriculturalBankCard || res.data.bankAccount || res.data.cardNo || '-',
|
||||
bankAddr: res.data.bankAddr || res.data.openingBank || res.data.accountOpeningBank || res.data.bankName || res.data.depositBank || '-'
|
||||
};
|
||||
|
||||
// 使用getStuInfo的结果获取辅导员信息
|
||||
this.detailInfoView = {
|
||||
deptName: baseRes.data.deptName || (res.data.dept && res.data.dept.deptName) || res.data.collegeName || res.data.department || '-',
|
||||
majorName: baseRes.data.majorName || (res.data.srsMajors && res.data.srsMajors.majorName) || res.data.major || '-',
|
||||
className: baseRes.data.className || (res.data.srsClass?.className) || res.data.class || '-',
|
||||
stuNo: baseRes.data.stuNo || res.data.studentNo || res.data.studentNumber || '-',
|
||||
stuName: baseRes.data.stuName || res.data.name || res.data.studentName || '-',
|
||||
gradeName: baseRes.data.gradeName || res.data.grade || '-',
|
||||
teacherName: baseRes.data.teacherName || baseRes.data.counselorName || baseRes.data.supervisor || (res.data.cphTeacher && res.data.cphTeacher.name) || res.data.teacherName || res.data.cphName || '-'
|
||||
};
|
||||
|
||||
// 获取额外的学生信息
|
||||
try {
|
||||
const extraRes = await getStudentExtraInfoByStuNo(row.stuNo);
|
||||
if (extraRes.code === 200) {
|
||||
this.detailExtraInfo = extraRes.data || {};
|
||||
|
||||
// 处理户口所在地和籍贯的显示
|
||||
if (this.detailExtraInfo.hksz1 && this.detailExtraInfo.hksz2 && this.detailExtraInfo.hksz3) {
|
||||
this.detailExtraInfo.fullHkszd = `${this.detailExtraInfo.hksz1}${this.detailExtraInfo.hksz2 === '市辖区' ? '' : this.detailExtraInfo.hksz2}${this.detailExtraInfo.hksz3}`;
|
||||
}
|
||||
|
||||
if (this.detailExtraInfo.jg) {
|
||||
const jgParts = this.detailExtraInfo.jg.split(' ');
|
||||
if (jgParts.length >= 3) {
|
||||
this.detailExtraInfo.fullJg = `${jgParts[0]} ${jgParts[1] === '市辖区' ? '' : jgParts[1]} ${jgParts[2]}`;
|
||||
} else {
|
||||
this.detailExtraInfo.fullJg = this.detailExtraInfo.jg;
|
||||
}
|
||||
}
|
||||
|
||||
// 确保所有字段都有默认值,防止显示undefined
|
||||
const fields = ['mz', 'zzmm', 'xx', 'ksh', 'hkxz', 'hksz1', 'hksz2', 'hksz3', 'hkxxdz', 'sspcs', 'ssjd', 'chcqj', 'xxlxdz', 'xjtdz', 'jtyzbm', 'jtdh'];
|
||||
fields.forEach(field => {
|
||||
if (!this.detailExtraInfo[field]) {
|
||||
this.detailExtraInfo[field] = '-';
|
||||
}
|
||||
});
|
||||
|
||||
// 处理可能为null的地址字段
|
||||
if (!this.detailExtraInfo.hkszd) {
|
||||
this.detailExtraInfo.hkszd = this.detailExtraInfo.fullHkszd || '-';
|
||||
}
|
||||
if (!this.detailExtraInfo.jg) {
|
||||
this.detailExtraInfo.jg = this.detailExtraInfo.fullJg || '-';
|
||||
}
|
||||
} else {
|
||||
this.detailExtraInfo = {};
|
||||
}
|
||||
|
||||
// 获取家庭成员信息
|
||||
try {
|
||||
const familyRes = await getOwnFamilyFdy(row.stuNo);
|
||||
if (familyRes.code === 200) {
|
||||
this.detailFamilyInfo = Array.isArray(familyRes.data) ? familyRes.data : [];
|
||||
} else {
|
||||
this.detailFamilyInfo = [];
|
||||
}
|
||||
} catch (familyError) {
|
||||
console.error('获取家庭成员信息失败:', familyError);
|
||||
this.detailFamilyInfo = [];
|
||||
}
|
||||
|
||||
// 获取教育经历信息
|
||||
try {
|
||||
const eduRes = await getOwnExpFdy(row.stuNo);
|
||||
if (eduRes.code === 200) {
|
||||
this.detailEduInfo = Array.isArray(eduRes.data) ? eduRes.data : [];
|
||||
} else {
|
||||
this.detailEduInfo = [];
|
||||
}
|
||||
} catch (eduError) {
|
||||
console.error('获取教育经历信息失败:', eduError);
|
||||
this.detailEduInfo = [];
|
||||
}
|
||||
} catch (extraError) {
|
||||
console.error('获取额外学生信息失败:', extraError);
|
||||
this.detailExtraInfo = {};
|
||||
this.detailFamilyInfo = [];
|
||||
this.detailEduInfo = [];
|
||||
}
|
||||
} else {
|
||||
this.$message.error(baseRes.msg || res.msg || '获取学生信息失败');
|
||||
// 初始化为空值,确保弹窗有数据展示
|
||||
this.initEmptyDetailInfo();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取学生信息失败:', error);
|
||||
this.$message.error('获取学生信息失败');
|
||||
// 初始化为空值
|
||||
this.initEmptyDetailInfo();
|
||||
}
|
||||
},
|
||||
|
||||
// 初始化空的详情信息
|
||||
initEmptyDetailInfo() {
|
||||
this.detailInfo = {
|
||||
phone: '-',
|
||||
idCard: '-',
|
||||
birthday: '-',
|
||||
xhk: '-',
|
||||
bankAddr: '-'
|
||||
};
|
||||
this.detailInfoView = {
|
||||
deptName: '-',
|
||||
majorName: '-',
|
||||
className: '-',
|
||||
stuNo: '-',
|
||||
stuName: '-',
|
||||
gradeName: '-',
|
||||
teacherName: '-'
|
||||
};
|
||||
this.detailExtraInfo = {};
|
||||
this.detailFamilyInfo = [];
|
||||
this.detailEduInfo = [];
|
||||
},
|
||||
|
||||
// 标签页点击事件
|
||||
handleTabClick(tab) {
|
||||
// 这里可以添加当切换到特定标签页时加载数据的逻辑
|
||||
// 目前只是记录当前标签页,如果需要懒加载可以在这里添加API调用
|
||||
this.activeDetailTab = tab.name;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,11 +1,26 @@
|
||||
<template>
|
||||
<div v-loading.fullscreen.lock="loading" class="app-container">
|
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="68px">
|
||||
<!-- 选择院系 -->
|
||||
<el-form-item label="选择查询" prop="deptId">
|
||||
<el-cascader ref="cas" v-model="class_cas" style="width: 500px;" :options="cascaderData"
|
||||
:props="{ checkStrictly: true }" clearable filterable @change="handleChange"
|
||||
/>
|
||||
<el-form-item label="学院" prop="deptId">
|
||||
<el-select v-model="queryParams.deptId" placeholder="请选择学院" filterable clearable @change="changeDept">
|
||||
<el-option v-for="(v, i) in deptList" :key="i" :label="v.label" :value="v.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="专业" prop="majorId">
|
||||
<el-select v-model="queryParams.majorId" placeholder="请先选择学院再选择专业" filterable clearable @change="changeMajor">
|
||||
<el-option v-for="(v, i) in majorList" :key="i" :label="v.majorName" :value="v.majorId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="班级" prop="classId">
|
||||
<el-select v-model="queryParams.classId" placeholder="请先选择专业再选择班级" filterable clearable>
|
||||
<el-option v-for="(v, i) in classList" :key="i" :label="v.className" :value="v.classId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="stuName">
|
||||
<el-input v-model="queryParams.stuName" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="学号" prop="stuNo">
|
||||
<el-input v-model="queryParams.stuNo" placeholder="请输入学号" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<!-- 选择学年 -->
|
||||
<el-form-item label="选择学年" prop="stuYearId">
|
||||
@@ -87,6 +102,10 @@ import * as echarts from 'echarts'
|
||||
import { scoreDistribution } from '@/api/stuCQS/statistics'
|
||||
import { treeStudent } from '@/api/stuCQS/basedata/student'
|
||||
import { listAllYear as listYear } from '@/api/stuCQS/basedata/year'
|
||||
import { getDeptName } from '@/api/system/dept'
|
||||
import { listMajors } from '@/api/stuCQS/basedata/majors'
|
||||
import { listClass } from '@/api/stuCQS/basedata/class'
|
||||
import { listGrade } from '@/api/stuCQS/basedata/grade'
|
||||
|
||||
|
||||
export default {
|
||||
@@ -143,6 +162,11 @@ export default {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
stuYearId: 1,
|
||||
deptId: null,
|
||||
majorId: null,
|
||||
classId: null,
|
||||
stuName: null,
|
||||
stuNo: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
@@ -152,17 +176,62 @@ export default {
|
||||
stu_year_list: [],
|
||||
// 当前分数分布情况
|
||||
currentSD: [],
|
||||
isDisabled: false
|
||||
isDisabled: false,
|
||||
|
||||
deptList: [],//学院列表
|
||||
majorList: [],//专业列表
|
||||
classList: [],//班级列表
|
||||
gradeList: [],//年级列表
|
||||
}
|
||||
},
|
||||
created() {
|
||||
//this.getList();
|
||||
this.getCascaderData()
|
||||
this.getStuYear()
|
||||
this.listDept()
|
||||
this.listGrade()
|
||||
//this.getScoreDistribution()
|
||||
|
||||
},
|
||||
methods: {
|
||||
async listGrade() {
|
||||
let res = await listGrade()
|
||||
this.gradeList = [...res.rows]
|
||||
},
|
||||
|
||||
async listDept() {
|
||||
let res = await getDeptName()
|
||||
this.deptList = [...res.data]
|
||||
},
|
||||
|
||||
async changeMajor() {
|
||||
if(this.queryParams.majorId) {
|
||||
let sdata = {
|
||||
pageNum: 1,
|
||||
pageSize: 100,
|
||||
majorId: this.queryParams.majorId
|
||||
}
|
||||
let res = await listClass(sdata)
|
||||
this.classList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.classId = null
|
||||
this.classList = []
|
||||
}
|
||||
},
|
||||
async changeDept() {
|
||||
if(this.queryParams.deptId) {
|
||||
let sdata = {
|
||||
collegeId: this.queryParams.deptId,
|
||||
pageNum: 1,
|
||||
pageSize: 100
|
||||
}
|
||||
let res = await listMajors(sdata)
|
||||
this.majorList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.majorId = null
|
||||
this.majorList = []
|
||||
}
|
||||
},
|
||||
exportChange(value) {
|
||||
this.exportForm = {
|
||||
...this.exportForm,
|
||||
@@ -281,11 +350,11 @@ export default {
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
let cas = this.$refs.cas
|
||||
cas.inputValue = ''
|
||||
this.class_cas = []
|
||||
this.queryParams.classId = null
|
||||
this.queryParams.deptId = null
|
||||
this.queryParams.majorId = null
|
||||
this.queryParams.classId = null
|
||||
this.majorList = []
|
||||
this.classList = []
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
|
||||
@@ -134,6 +134,7 @@
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-refresh" @click="doInitPwdOne(scope.row)">初始化密码</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-view" @click="picVClick(scope.row)">查看画像</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-search" @click="detailVClick(scope.row)">查新详情</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -245,13 +246,225 @@
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 查新详情弹窗 -->
|
||||
<el-dialog :visible.sync="detailV" title="学生查新详情" width="1400px" append-to-body>
|
||||
<el-tabs v-model="activeDetailTab" @tab-click="handleTabClick">
|
||||
<el-tab-pane label="重要信息" name="important">
|
||||
<el-form v-if="detailInfo" size="mini" label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="手机号">
|
||||
<el-input v-model="detailInfo.phone" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号">
|
||||
<el-input v-model="detailInfo.idCard" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="出生日期">
|
||||
<el-input v-model="detailInfo.birthday" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中国农业银行卡号">
|
||||
<el-input v-model="detailInfo.xhk" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开户行">
|
||||
<el-input v-model="detailInfo.bankAddr" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div style="border-bottom: 1px dotted lightskyblue;margin-bottom: 0.5rem;" />
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="学院">
|
||||
<el-input v-model="detailInfoView.deptName" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="专业">
|
||||
<el-input v-model="detailInfoView.majorName" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="班级">
|
||||
<el-input v-model="detailInfoView.className" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="学号">
|
||||
<el-input v-model="detailInfoView.stuNo" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名">
|
||||
<el-input v-model="detailInfoView.stuName" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="年级">
|
||||
<el-input v-model="detailInfoView.gradeName" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="辅导员">
|
||||
<el-input v-model="detailInfoView.teacherName" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="其他信息" name="other">
|
||||
<el-form v-if="detailExtraInfo" size="mini" label-width="120px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="民族">
|
||||
<el-input v-model="detailExtraInfo.mz" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="政治面貌">
|
||||
<el-input v-model="detailExtraInfo.zzmm" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="血型">
|
||||
<el-input v-model="detailExtraInfo.xx" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="考生号">
|
||||
<el-input v-model="detailExtraInfo.ksh" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="籍贯">
|
||||
<el-input v-model="detailExtraInfo.jg" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口性质">
|
||||
<el-input v-model="detailExtraInfo.hkxz" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口所在地">
|
||||
<el-input v-model="detailExtraInfo.hkszd" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口所在省">
|
||||
<el-input v-model="detailExtraInfo.hksz1" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口所在市/区">
|
||||
<el-input v-model="detailExtraInfo.hksz2" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户口所在区/县">
|
||||
<el-input v-model="detailExtraInfo.hksz3" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="户口所在地区县以下详细地址">
|
||||
<el-input v-model="detailExtraInfo.hkxxdz" readonly type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属派出所">
|
||||
<el-input v-model="detailExtraInfo.sspcs" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属街道">
|
||||
<el-input v-model="detailExtraInfo.ssjd" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="乘火车区间">
|
||||
<el-input v-model="detailExtraInfo.chcqj" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="详细联系地址">
|
||||
<el-input v-model="detailExtraInfo.xxlxdz" readonly type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="现家庭地址">
|
||||
<el-input v-model="detailExtraInfo.xjtdz" readonly type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="家庭邮政编码">
|
||||
<el-input v-model="detailExtraInfo.jtyzbm" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="家庭电话">
|
||||
<el-input v-model="detailExtraInfo.jtdh" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="家庭成员" name="family">
|
||||
<div v-if="detailFamilyInfo && detailFamilyInfo.length > 0">
|
||||
<el-table :data="detailFamilyInfo" style="width: 100%">
|
||||
<el-table-column prop="familyName" label="姓名" width="80" />
|
||||
<el-table-column prop="familyRelation" label="与学生关系" width="100" />
|
||||
<el-table-column prop="age" label="年龄" width="60" />
|
||||
<el-table-column prop="zzmm" label="政治面貌" width="100" />
|
||||
<el-table-column prop="job" label="职业" width="80" />
|
||||
<el-table-column prop="workPlace" label="工作单位" min-width="150" />
|
||||
<el-table-column prop="yearMoney" label="年收入" width="100" />
|
||||
<el-table-column prop="phone" label="联系方式" width="120" />
|
||||
<el-table-column prop="health" label="健康情况" width="100" />
|
||||
</el-table>
|
||||
</div>
|
||||
<div v-else style="text-align: center; color: #999;">
|
||||
暂无家庭成员信息
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="教育经历" name="edu">
|
||||
<div v-if="detailEduInfo && detailEduInfo.length > 0">
|
||||
<el-table :data="detailEduInfo" style="width: 100%">
|
||||
<el-table-column prop="startTime" label="开始时间" width="170" />
|
||||
<el-table-column prop="endTime" label="结束时间" width="170" />
|
||||
<el-table-column prop="schoolName" label="学校" width="170" />
|
||||
<el-table-column prop="post" label="职务" width="170" />
|
||||
<el-table-column prop="certifier" label="证明人" width="170" />
|
||||
</el-table>
|
||||
</div>
|
||||
<div v-else style="text-align: center; color: #999;">
|
||||
暂无教育经历信息
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { addStudent, delStudent, doDept, getClassName, getStatus, getStudent, initOnePwd, initPwd, listStudent, updateStudent } from '@/api/stuCQS/basedata/student'
|
||||
import { addStudent, delStudent, doDept, getClassName, getStatus, getStudent, initOnePwd, initPwd, listStudent, updateStudent, getOwnInfoByStuNo } from '@/api/stuCQS/basedata/student'
|
||||
import { getStuInfo } from '@/api/stuCQS/basedata/stuInfoView'
|
||||
import { getOwnInfo as getExtraInfo, getOwnInfoByStuNo as getStudentExtraInfoByStuNo } from '@/api/stuCQS/basedata/extraInfo'
|
||||
import { getOwnExpFdy } from '@/api/stuCQS/basedata/experience'
|
||||
import { getOwnFamilyFdy } from '@/api/stuCQS/basedata/member'
|
||||
|
||||
import StuPic from '@/views/basedata/private/StuPic'
|
||||
import EduExp from '@/views/basedata/private/components/EduExp.vue'
|
||||
import FamilyMember from '@/views/basedata/private/components/FamilyMember.vue'
|
||||
|
||||
|
||||
import { listGrade } from '@/api/stuCQS/basedata/grade'
|
||||
@@ -268,7 +481,7 @@ export default {
|
||||
name: 'Student',
|
||||
dicts: ['srs_stu_status'],
|
||||
components: {
|
||||
StuPic, Treeselect
|
||||
StuPic, Treeselect, EduExp, FamilyMember
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -348,7 +561,7 @@ export default {
|
||||
{ required: true, message: '手机号不能为空', trigger: 'change' }
|
||||
],
|
||||
address: [
|
||||
{ required: true, message: '手机号不能为空', trigger: 'change' }
|
||||
{ required: true, message: '家庭地址不能为空', trigger: 'change' }
|
||||
],
|
||||
delFlag: [
|
||||
{ required: true, message: '删除标志不能为空', trigger: 'blur' }
|
||||
@@ -369,7 +582,16 @@ export default {
|
||||
dept_list: [],
|
||||
deptOptions: undefined,
|
||||
status_list: [],
|
||||
selectedStatus: '01'
|
||||
selectedStatus: '01',
|
||||
|
||||
// 查新详情相关
|
||||
detailV: false,
|
||||
detailInfo: {},
|
||||
detailInfoView: {},
|
||||
detailExtraInfo: {},
|
||||
detailFamilyInfo: [],
|
||||
detailEduInfo: [],
|
||||
activeDetailTab: 'important',
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -603,6 +825,149 @@ export default {
|
||||
// 提交上传文件
|
||||
submitFileForm() {
|
||||
this.$refs.upload.submit()
|
||||
},
|
||||
|
||||
// 查新详情按钮点击事件
|
||||
async detailVClick(row) {
|
||||
this.detailV = true;
|
||||
try {
|
||||
// 使用getStuInfo接口获取学生基础信息(包含辅导员信息)
|
||||
const baseRes = await getStuInfo(row.stuNo);
|
||||
// 同时使用getOwnInfoByStuNo接口获取完整的学生敏感信息
|
||||
const res = await getOwnInfoByStuNo(row.stuNo);
|
||||
|
||||
if (baseRes.code === 200 && res.code === 200) {
|
||||
// 根据实际API返回的数据结构调整字段名
|
||||
this.detailInfo = {
|
||||
phone: res.data.phone || res.data.stuPhone || res.data.phoneNumber || res.data.mobile || res.data.tel || res.data.telephone || res.data.contactNumber || res.data.mobilePhone || '-',
|
||||
idCard: res.data.idCard || res.data.idNumber || res.data.identityCard || '-',
|
||||
birthday: res.data.birthday || res.data.birthDate || '-',
|
||||
xhk: res.data.xhk || res.data.bankCard || res.data.cardNumber || res.data.agriculturalBankCard || res.data.bankAccount || res.data.cardNo || '-',
|
||||
bankAddr: res.data.bankAddr || res.data.openingBank || res.data.accountOpeningBank || res.data.bankName || res.data.depositBank || '-'
|
||||
};
|
||||
|
||||
// 使用getStuInfo的结果获取辅导员信息
|
||||
this.detailInfoView = {
|
||||
deptName: baseRes.data.deptName || (res.data.dept && res.data.dept.deptName) || res.data.collegeName || res.data.department || '-',
|
||||
majorName: baseRes.data.majorName || (res.data.srsMajors && res.data.srsMajors.majorName) || res.data.major || '-',
|
||||
className: baseRes.data.className || (res.data.srsClass?.className) || res.data.class || '-',
|
||||
stuNo: baseRes.data.stuNo || res.data.studentNo || res.data.studentNumber || '-',
|
||||
stuName: baseRes.data.stuName || res.data.name || res.data.studentName || '-',
|
||||
gradeName: baseRes.data.gradeName || res.data.grade || '-',
|
||||
teacherName: baseRes.data.teacherName || baseRes.data.counselorName || baseRes.data.supervisor || (res.data.cphTeacher && res.data.cphTeacher.name) || res.data.teacherName || res.data.cphName || '-'
|
||||
};
|
||||
|
||||
// 获取额外的学生信息
|
||||
try {
|
||||
const extraRes = await getStudentExtraInfoByStuNo(row.stuNo);
|
||||
if (extraRes.code === 200) {
|
||||
this.detailExtraInfo = extraRes.data || {};
|
||||
|
||||
// 处理户口所在地和籍贯的显示
|
||||
if (this.detailExtraInfo.hksz1 && this.detailExtraInfo.hksz2 && this.detailExtraInfo.hksz3) {
|
||||
this.detailExtraInfo.fullHkszd = `${this.detailExtraInfo.hksz1}${this.detailExtraInfo.hksz2 === '市辖区' ? '' : this.detailExtraInfo.hksz2}${this.detailExtraInfo.hksz3}`;
|
||||
}
|
||||
|
||||
if (this.detailExtraInfo.jg) {
|
||||
const jgParts = this.detailExtraInfo.jg.split(' ');
|
||||
if (jgParts.length >= 3) {
|
||||
this.detailExtraInfo.fullJg = `${jgParts[0]} ${jgParts[1] === '市辖区' ? '' : jgParts[1]} ${jgParts[2]}`;
|
||||
} else {
|
||||
this.detailExtraInfo.fullJg = this.detailExtraInfo.jg;
|
||||
}
|
||||
}
|
||||
|
||||
// 确保所有字段都有默认值,防止显示undefined
|
||||
const fields = ['mz', 'zzmm', 'xx', 'ksh', 'hkxz', 'hksz1', 'hksz2', 'hksz3', 'hkxxdz', 'sspcs', 'ssjd', 'chcqj', 'xxlxdz', 'xjtdz', 'jtyzbm', 'jtdh'];
|
||||
fields.forEach(field => {
|
||||
if (!this.detailExtraInfo[field]) {
|
||||
this.detailExtraInfo[field] = '-';
|
||||
}
|
||||
});
|
||||
|
||||
// 处理可能为null的地址字段
|
||||
if (!this.detailExtraInfo.hkszd) {
|
||||
this.detailExtraInfo.hkszd = this.detailExtraInfo.fullHkszd || '-';
|
||||
}
|
||||
if (!this.detailExtraInfo.jg) {
|
||||
this.detailExtraInfo.jg = this.detailExtraInfo.fullJg || '-';
|
||||
}
|
||||
} else {
|
||||
this.detailExtraInfo = {};
|
||||
}
|
||||
|
||||
// 获取家庭成员信息
|
||||
try {
|
||||
const familyRes = await getOwnFamilyFdy(row.stuNo);
|
||||
if (familyRes.code === 200) {
|
||||
this.detailFamilyInfo = Array.isArray(familyRes.data) ? familyRes.data : [];
|
||||
} else {
|
||||
this.detailFamilyInfo = [];
|
||||
}
|
||||
} catch (familyError) {
|
||||
console.error('获取家庭成员信息失败:', familyError);
|
||||
this.detailFamilyInfo = [];
|
||||
}
|
||||
|
||||
// 获取教育经历信息
|
||||
try {
|
||||
const eduRes = await getOwnExpFdy(row.stuNo);
|
||||
if (eduRes.code === 200) {
|
||||
this.detailEduInfo = Array.isArray(eduRes.data) ? eduRes.data : [];
|
||||
} else {
|
||||
this.detailEduInfo = [];
|
||||
}
|
||||
} catch (eduError) {
|
||||
console.error('获取教育经历信息失败:', eduError);
|
||||
this.detailEduInfo = [];
|
||||
}
|
||||
} catch (extraError) {
|
||||
console.error('获取额外学生信息失败:', extraError);
|
||||
this.detailExtraInfo = {};
|
||||
this.detailFamilyInfo = [];
|
||||
this.detailEduInfo = [];
|
||||
}
|
||||
} else {
|
||||
this.$message.error(baseRes.msg || res.msg || '获取学生信息失败');
|
||||
// 初始化为空值,确保弹窗有数据展示
|
||||
this.initEmptyDetailInfo();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取学生信息失败:', error);
|
||||
this.$message.error('获取学生信息失败');
|
||||
// 初始化为空值
|
||||
this.initEmptyDetailInfo();
|
||||
}
|
||||
},
|
||||
|
||||
// 初始化空的详情信息
|
||||
initEmptyDetailInfo() {
|
||||
this.detailInfo = {
|
||||
phone: '-',
|
||||
idCard: '-',
|
||||
birthday: '-',
|
||||
xhk: '-',
|
||||
bankAddr: '-'
|
||||
};
|
||||
this.detailInfoView = {
|
||||
deptName: '-',
|
||||
majorName: '-',
|
||||
className: '-',
|
||||
stuNo: '-',
|
||||
stuName: '-',
|
||||
gradeName: '-',
|
||||
teacherName: '-'
|
||||
};
|
||||
this.detailExtraInfo = {};
|
||||
this.detailFamilyInfo = [];
|
||||
this.detailEduInfo = [];
|
||||
},
|
||||
|
||||
// 标签页点击事件
|
||||
handleTabClick(tab) {
|
||||
// 这里可以添加当切换到特定标签页时加载数据的逻辑
|
||||
// 目前只是记录当前标签页,如果需要懒加载可以在这里添加API调用
|
||||
this.activeDetailTab = tab.name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,10 +3,20 @@
|
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="班级" prop="deptId">
|
||||
<el-cascader ref="cas" v-model="class_cas" style="width: 500px;" :options="cascaderData"
|
||||
:props="{ checkStrictly: false }" clearable filterable @change="handleChange"
|
||||
/>
|
||||
<el-form-item label="学院" prop="deptId">
|
||||
<el-select v-model="queryParams.deptId" placeholder="请选择学院" filterable clearable @change="changeDept">
|
||||
<el-option v-for="(v, i) in deptList" :key="i" :label="v.label" :value="v.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="专业" prop="majorId">
|
||||
<el-select v-model="queryParams.majorId" placeholder="请先选择学院再选择专业" filterable clearable @change="changeMajor">
|
||||
<el-option v-for="(v, i) in majorList" :key="i" :label="v.majorName" :value="v.majorId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="班级" prop="classId">
|
||||
<el-select v-model="queryParams.classId" placeholder="请先选择专业再选择班级" filterable clearable>
|
||||
<el-option v-for="(v, i) in classList" :key="i" :label="v.className" :value="v.classId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="学年" prop="stuYearId">
|
||||
<el-select v-model="queryParams.stuYearId" placeholder="请选择学年" clearable
|
||||
@@ -154,6 +164,10 @@ import { isEmpty } from '@/api/helpFunc'
|
||||
import { listAllYear as listYear } from '@/api/stuCQS/basedata/year'
|
||||
import store from '@/store'
|
||||
import { listEnableYear } from '@/api/stuCQS/basedata/year'
|
||||
import { getDeptName } from '@/api/system/dept'
|
||||
import { listMajors } from '@/api/stuCQS/basedata/majors'
|
||||
import { listClass } from '@/api/stuCQS/basedata/class'
|
||||
import { listGrade } from '@/api/stuCQS/basedata/grade'
|
||||
|
||||
|
||||
export default {
|
||||
@@ -203,6 +217,11 @@ export default {
|
||||
stuId: null,
|
||||
stuYearId: null,
|
||||
ceScore: null,
|
||||
deptId: null,
|
||||
majorId: null,
|
||||
classId: null,
|
||||
name: null,
|
||||
stuNo: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
@@ -211,13 +230,20 @@ export default {
|
||||
},
|
||||
cascaderData: null,
|
||||
|
||||
selectYearList: []
|
||||
selectYearList: [],
|
||||
|
||||
deptList: [],//学院列表
|
||||
majorList: [],//专业列表
|
||||
classList: [],//班级列表
|
||||
gradeList: [],//年级列表
|
||||
}
|
||||
},
|
||||
created() {
|
||||
//this.getList();
|
||||
this.listEnableYear()
|
||||
this.listAllStuYear()
|
||||
this.listDept()
|
||||
this.listGrade()
|
||||
this.getCascaderData()
|
||||
|
||||
let temp = store.getters.roles
|
||||
@@ -229,6 +255,45 @@ export default {
|
||||
|
||||
},
|
||||
methods: {
|
||||
async listGrade() {
|
||||
this.gradeList = []
|
||||
let res = await listGrade()
|
||||
this.gradeList = [...res.rows]
|
||||
},
|
||||
|
||||
async listDept() {
|
||||
let res = await getDeptName()
|
||||
this.deptList = [...res.data]
|
||||
},
|
||||
|
||||
async changeMajor() {
|
||||
if(this.queryParams.majorId) {
|
||||
let sdata = {
|
||||
pageNum: 1,
|
||||
pageSize: 100,
|
||||
majorId: this.queryParams.majorId
|
||||
}
|
||||
let res = await listClass(sdata)
|
||||
this.classList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.classId = null
|
||||
this.classList = []
|
||||
}
|
||||
},
|
||||
async changeDept() {
|
||||
if(this.queryParams.deptId) {
|
||||
let sdata = {
|
||||
collegeId: this.queryParams.deptId,
|
||||
pageNum: 1,
|
||||
pageSize: 100
|
||||
}
|
||||
let res = await listMajors(sdata)
|
||||
this.majorList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.majorId = null
|
||||
this.majorList = []
|
||||
}
|
||||
},
|
||||
async listEnableYear() {
|
||||
let res = await listEnableYear()
|
||||
if (res.code == 200) {
|
||||
@@ -248,12 +313,12 @@ export default {
|
||||
})
|
||||
},
|
||||
// 级联选择的项
|
||||
handleChange(value) {
|
||||
/*handleChange(value) {
|
||||
this.queryParams = {
|
||||
...this.queryParams,
|
||||
classId: value[2],
|
||||
}
|
||||
},
|
||||
},*/
|
||||
|
||||
// 下载申请信息模板
|
||||
downloadMode() {
|
||||
@@ -401,12 +466,13 @@ export default {
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
let cas = this.$refs.cas
|
||||
cas.inputValue = ''
|
||||
this.class_cas = []
|
||||
this.queryParams.classId = null
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
this.queryParams.deptId = null
|
||||
this.queryParams.majorId = null
|
||||
this.queryParams.classId = null
|
||||
this.majorList = []
|
||||
this.classList = []
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
|
||||
@@ -1,10 +1,20 @@
|
||||
<template>
|
||||
<div v-loading.fullscreen.lock="loading" class="app-container">
|
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="100px">
|
||||
<el-form-item label="班级" prop="deptId">
|
||||
<el-cascader ref="cas" v-model="class_cas" style="width: 500px;" :options="cascaderData"
|
||||
:props="{ checkStrictly: false }" clearable filterable @change="handleChange"
|
||||
/>
|
||||
<el-form-item label="学院" prop="deptId">
|
||||
<el-select v-model="queryParams.deptId" placeholder="请选择学院" filterable clearable @change="changeDept">
|
||||
<el-option v-for="(v, i) in deptList" :key="i" :label="v.label" :value="v.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="专业" prop="majorId">
|
||||
<el-select v-model="queryParams.majorId" placeholder="请先选择学院再选择专业" filterable clearable @change="changeMajor">
|
||||
<el-option v-for="(v, i) in majorList" :key="i" :label="v.majorName" :value="v.majorId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="班级" prop="classId">
|
||||
<el-select v-model="queryParams.classId" placeholder="请先选择专业再选择班级" filterable clearable>
|
||||
<el-option v-for="(v, i) in classList" :key="i" :label="v.className" :value="v.classId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="学年" prop="stuYearId">
|
||||
<el-select v-model="queryParams.stuYearId" placeholder="请选择学年" clearable @keyup.enter.native="handleQuery">
|
||||
@@ -186,6 +196,10 @@ import { listAllStuYear } from '@/api/stuCQS/info-fill/score'
|
||||
import * as XLSX from 'xlsx'
|
||||
import { workbook2blob, openDownloadDialog } from '@/api/helpFunc'
|
||||
import { listEnableYear } from '@/api/stuCQS/basedata/year'
|
||||
import { getDeptName } from '@/api/system/dept'
|
||||
import { listMajors } from '@/api/stuCQS/basedata/majors'
|
||||
import { listClass } from '@/api/stuCQS/basedata/class'
|
||||
import { listGrade } from '@/api/stuCQS/basedata/grade'
|
||||
|
||||
|
||||
export default {
|
||||
@@ -235,6 +249,11 @@ export default {
|
||||
material: null,
|
||||
description: null,
|
||||
auditStatus: null,
|
||||
deptId: null,
|
||||
majorId: null,
|
||||
classId: null,
|
||||
name: null,
|
||||
stuNo: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
@@ -265,7 +284,12 @@ export default {
|
||||
//附件
|
||||
material_list: [],
|
||||
|
||||
selectYearList: []
|
||||
selectYearList: [],
|
||||
|
||||
deptList: [],//学院列表
|
||||
majorList: [],//专业列表
|
||||
classList: [],//班级列表
|
||||
gradeList: [],//年级列表
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -280,14 +304,53 @@ export default {
|
||||
created() {
|
||||
//this.getList();
|
||||
this.listEnableYear()
|
||||
|
||||
this.getStuTree()
|
||||
this.getStuYear()
|
||||
this.listDept()
|
||||
this.listGrade()
|
||||
this.getStuTree()
|
||||
this.listClassTwoChild()
|
||||
this.listAllStuYear()
|
||||
this.getCascaderData()
|
||||
},
|
||||
methods: {
|
||||
async listGrade() {
|
||||
let res = await listGrade()
|
||||
this.gradeList = [...res.rows]
|
||||
},
|
||||
|
||||
async listDept() {
|
||||
let res = await getDeptName()
|
||||
this.deptList = [...res.data]
|
||||
},
|
||||
|
||||
async changeMajor() {
|
||||
if(this.queryParams.majorId) {
|
||||
let sdata = {
|
||||
pageNum: 1,
|
||||
pageSize: 100,
|
||||
majorId: this.queryParams.majorId
|
||||
}
|
||||
let res = await listClass(sdata)
|
||||
this.classList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.classId = null
|
||||
this.classList = []
|
||||
}
|
||||
},
|
||||
async changeDept() {
|
||||
if(this.queryParams.deptId) {
|
||||
let sdata = {
|
||||
collegeId: this.queryParams.deptId,
|
||||
pageNum: 1,
|
||||
pageSize: 100
|
||||
}
|
||||
let res = await listMajors(sdata)
|
||||
this.majorList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.majorId = null
|
||||
this.majorList = []
|
||||
}
|
||||
},
|
||||
|
||||
async listEnableYear() {
|
||||
let res = await listEnableYear()
|
||||
@@ -309,12 +372,12 @@ export default {
|
||||
})
|
||||
},
|
||||
// 级联选择的项
|
||||
handleChange(value) {
|
||||
/*handleChange(value) {
|
||||
this.queryParams = {
|
||||
...this.queryParams,
|
||||
classId: value[2],
|
||||
}
|
||||
},
|
||||
},*/
|
||||
|
||||
// 下载申请信息模板
|
||||
downloadMode() {
|
||||
@@ -507,10 +570,11 @@ export default {
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
let cas = this.$refs.cas
|
||||
cas.inputValue = ''
|
||||
this.class_cas = []
|
||||
this.queryParams.deptId = null
|
||||
this.queryParams.majorId = null
|
||||
this.queryParams.classId = null
|
||||
this.majorList = []
|
||||
this.classList = []
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
|
||||
@@ -3,10 +3,20 @@
|
||||
<el-form v-show="showSearch" ref="queryForm" class="lookForm" :model="queryParams" size="small" :inline="true"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="班级" prop="deptId">
|
||||
<el-cascader ref="cas" v-model="class_cas" style="width: 500px;" :options="cascaderData"
|
||||
:props="{ checkStrictly: false }" clearable filterable @change="handleChange"
|
||||
/>
|
||||
<el-form-item label="学院" prop="deptId">
|
||||
<el-select v-model="queryParams.deptId" placeholder="请选择学院" filterable clearable @change="changeDept">
|
||||
<el-option v-for="(v, i) in deptList" :key="i" :label="v.label" :value="v.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="专业" prop="majorId">
|
||||
<el-select v-model="queryParams.majorId" placeholder="请先选择学院再选择专业" filterable clearable @change="changeMajor">
|
||||
<el-option v-for="(v, i) in majorList" :key="i" :label="v.majorName" :value="v.majorId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="班级" prop="classId">
|
||||
<el-select v-model="queryParams.classId" placeholder="请先选择专业再选择班级" filterable clearable>
|
||||
<el-option v-for="(v, i) in classList" :key="i" :label="v.className" :value="v.classId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="学年" prop="stuYearId">
|
||||
<el-select v-model="queryParams.stuYearId" placeholder="请选择学年" clearable @keyup.enter.native="handleQuery">
|
||||
@@ -140,7 +150,10 @@ import { listIamChild } from '@/api/stuCQS/basedata/cphRules'
|
||||
import { isEmpty, fullLoading } from '@/api/helpFunc'
|
||||
import store from '@/store'
|
||||
import { listOwnClass, listOwnStuByClass } from '@/api/stuCQS/info-fill/stu_eva_task'
|
||||
|
||||
import { getDeptName } from '@/api/system/dept'
|
||||
import { listMajors } from '@/api/stuCQS/basedata/majors'
|
||||
import { listClass } from '@/api/stuCQS/basedata/class'
|
||||
import { listGrade } from '@/api/stuCQS/basedata/grade'
|
||||
|
||||
|
||||
export default {
|
||||
@@ -176,7 +189,12 @@ export default {
|
||||
material: null,
|
||||
description: null,
|
||||
auditStatus: null,
|
||||
stuYearId: null
|
||||
stuYearId: null,
|
||||
deptId: null,
|
||||
majorId: null,
|
||||
classId: null,
|
||||
name: null,
|
||||
stuNo: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
@@ -234,7 +252,11 @@ export default {
|
||||
lookCheckForm: {},
|
||||
auditList: [],
|
||||
recordList: [],
|
||||
|
||||
|
||||
deptList: [],//学院列表
|
||||
majorList: [],//专业列表
|
||||
classList: [],//班级列表
|
||||
gradeList: [],//年级列表
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -248,8 +270,11 @@ export default {
|
||||
},
|
||||
created() {
|
||||
//this.getList();
|
||||
this.getStuTree()
|
||||
this.getStuYear()
|
||||
this.listDept()
|
||||
this.listGrade()
|
||||
this.loading = false
|
||||
this.getStuTree()
|
||||
this.listIamChild()
|
||||
this.getCascaderData()
|
||||
let temp = store.getters.roles
|
||||
@@ -391,12 +416,12 @@ export default {
|
||||
})
|
||||
},
|
||||
// 级联选择的项
|
||||
handleChange(value) {
|
||||
/*handleChange(value) {
|
||||
this.queryParams = {
|
||||
...this.queryParams,
|
||||
classId: value[2],
|
||||
}
|
||||
},
|
||||
},*/
|
||||
async changeClass(val) {
|
||||
let class_id = val[val.length - 1]
|
||||
let res = await getStuByClass(class_id)
|
||||
@@ -430,6 +455,15 @@ export default {
|
||||
return res
|
||||
},
|
||||
|
||||
async listDept() {
|
||||
let res = await getDeptName()
|
||||
this.deptList = [...res.data]
|
||||
},
|
||||
async listGrade() {
|
||||
let res = await listGrade()
|
||||
this.gradeList = [...res.rows]
|
||||
},
|
||||
|
||||
async listIamChild() {
|
||||
let res = await listIamChild()
|
||||
this.child_list = [...res.data]
|
||||
@@ -487,10 +521,11 @@ export default {
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
let cas = this.$refs.cas
|
||||
cas.inputValue = ''
|
||||
this.class_cas = []
|
||||
this.queryParams.deptId = null
|
||||
this.queryParams.majorId = null
|
||||
this.queryParams.classId = null
|
||||
this.majorList = []
|
||||
this.classList = []
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
@@ -558,7 +593,35 @@ export default {
|
||||
this.download('system/iam/export', {
|
||||
...this.queryParams
|
||||
}, `iam_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
},
|
||||
async changeMajor() {
|
||||
if(this.queryParams.majorId) {
|
||||
let sdata = {
|
||||
pageNum: 1,
|
||||
pageSize: 100,
|
||||
majorId: this.queryParams.majorId
|
||||
}
|
||||
let res = await listClass(sdata)
|
||||
this.classList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.classId = null
|
||||
this.classList = []
|
||||
}
|
||||
},
|
||||
async changeDept() {
|
||||
if(this.queryParams.deptId) {
|
||||
let sdata = {
|
||||
collegeId: this.queryParams.deptId,
|
||||
pageNum: 1,
|
||||
pageSize: 100
|
||||
}
|
||||
let res = await listMajors(sdata)
|
||||
this.majorList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.majorId = null
|
||||
this.majorList = []
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,6 +1,24 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="68px">
|
||||
<el-form-item label="学院" prop="deptId">
|
||||
<el-select v-model="queryParams.deptId" placeholder="请选择学院" filterable clearable @change="changeDept">
|
||||
<el-option v-for="(v, i) in deptList" :key="i" :label="v.label" :value="v.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="专业" prop="majorId">
|
||||
<el-select v-model="queryParams.majorId" placeholder="请先选择学院再选择专业" filterable clearable @change="changeMajor">
|
||||
<el-option v-for="(v, i) in majorList" :key="i" :label="v.majorName" :value="v.majorId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="班级" prop="classId">
|
||||
<el-select v-model="queryParams.classId" placeholder="请先选择专业再选择班级" filterable clearable>
|
||||
<el-option v-for="(v, i) in classList" :key="i" :label="v.className" :value="v.classId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input v-model="queryParams.name" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="学号" prop="stuNo">
|
||||
<el-input v-model="queryParams.stuNo" placeholder="请输入学号" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
@@ -100,6 +118,10 @@
|
||||
<script>
|
||||
import { listIdeologyscore, getIdeologyscore, delIdeologyscore, addIdeologyscore, updateIdeologyscore, doInit } from '@/api/comprehensive/ideologyscore/ideologyscore'
|
||||
import { isEmpty, fullLoading } from '@/api/helpFunc'
|
||||
import { getDeptName } from '@/api/system/dept'
|
||||
import { listMajors } from '@/api/stuCQS/basedata/majors'
|
||||
import { listClass } from '@/api/stuCQS/basedata/class'
|
||||
import { listGrade } from '@/api/stuCQS/basedata/grade'
|
||||
|
||||
export default {
|
||||
name: 'Ideologyscore',
|
||||
@@ -132,6 +154,10 @@ export default {
|
||||
stuYearId: null,
|
||||
description: null,
|
||||
status: null,
|
||||
deptId: null,
|
||||
majorId: null,
|
||||
classId: null,
|
||||
name: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
@@ -140,13 +166,58 @@ export default {
|
||||
delFlag: [
|
||||
{ required: true, message: '删除标记不能为空', trigger: 'blur' }
|
||||
],
|
||||
}
|
||||
},
|
||||
|
||||
deptList: [],//学院列表
|
||||
majorList: [],//专业列表
|
||||
classList: [],//班级列表
|
||||
gradeList: [],//年级列表
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
this.listDept()
|
||||
this.listGrade()
|
||||
},
|
||||
methods: {
|
||||
async listGrade() {
|
||||
let res = await listGrade()
|
||||
this.gradeList = [...res.rows]
|
||||
},
|
||||
|
||||
async listDept() {
|
||||
let res = await getDeptName()
|
||||
this.deptList = [...res.data]
|
||||
},
|
||||
|
||||
async changeMajor() {
|
||||
if(this.queryParams.majorId) {
|
||||
let sdata = {
|
||||
pageNum: 1,
|
||||
pageSize: 100,
|
||||
majorId: this.queryParams.majorId
|
||||
}
|
||||
let res = await listClass(sdata)
|
||||
this.classList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.classId = null
|
||||
this.classList = []
|
||||
}
|
||||
},
|
||||
async changeDept() {
|
||||
if(this.queryParams.deptId) {
|
||||
let sdata = {
|
||||
collegeId: this.queryParams.deptId,
|
||||
pageNum: 1,
|
||||
pageSize: 100
|
||||
}
|
||||
let res = await listMajors(sdata)
|
||||
this.majorList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.majorId = null
|
||||
this.majorList = []
|
||||
}
|
||||
},
|
||||
async doInit() {
|
||||
let loading = fullLoading(this)
|
||||
let res = await doInit()
|
||||
@@ -195,6 +266,11 @@ export default {
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.queryParams.deptId = null
|
||||
this.queryParams.majorId = null
|
||||
this.queryParams.classId = null
|
||||
this.majorList = []
|
||||
this.classList = []
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
|
||||
@@ -1,13 +1,26 @@
|
||||
<template>
|
||||
<div v-loading.fullscreen.lock="loading" class="app-container">
|
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="68px">
|
||||
<el-form-item label="学院" prop="deptId">
|
||||
<el-select v-model="queryParams.deptId" placeholder="请选择学院" filterable clearable @change="changeDept">
|
||||
<el-option v-for="(v, i) in deptList" :key="i" :label="v.label" :value="v.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="专业" prop="majorId">
|
||||
<el-select v-model="queryParams.majorId" placeholder="请先选择学院再选择专业" filterable clearable @change="changeMajor">
|
||||
<el-option v-for="(v, i) in majorList" :key="i" :label="v.majorName" :value="v.majorId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="班级" prop="classId">
|
||||
<el-select v-model="queryParams.classId" placeholder="请先选择专业再选择班级" filterable clearable>
|
||||
<el-option v-for="(v, i) in classList" :key="i" :label="v.className" :value="v.classId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="学号" prop="stuNo">
|
||||
<el-input v-model="queryParams.stuNo" placeholder="请输入学号" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="班级" prop="deptId">
|
||||
<el-cascader ref="cas" v-model="queryParams.classId" style="width: 500px;" :options="cascaderData"
|
||||
:props="{ checkStrictly: false }" clearable filterable @change="handleChange"
|
||||
/>
|
||||
<el-form-item label="姓名" prop="xsxm">
|
||||
<el-input v-model="queryParams.xsxm" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="学年" prop="stuYearId">
|
||||
<el-select v-model="queryParams.stuYearId" placeholder="请选择学年" clearable @keyup.enter.native="handleQuery">
|
||||
@@ -176,6 +189,11 @@ import { treeStudent } from '@/api/stuCQS/basedata/student'
|
||||
import * as XLSX from 'xlsx'
|
||||
import { isEmpty, isNumber } from '@/api/helpFunc'
|
||||
import { listAllYear as listYear } from '@/api/stuCQS/basedata/year'
|
||||
import { getDeptName } from '@/api/system/dept'
|
||||
import { listMajors } from '@/api/stuCQS/basedata/majors'
|
||||
import { listClass } from '@/api/stuCQS/basedata/class'
|
||||
import { listGrade } from '@/api/stuCQS/basedata/grade'
|
||||
|
||||
export default {
|
||||
name: 'Rankings',
|
||||
data() {
|
||||
@@ -230,7 +248,10 @@ export default {
|
||||
nopass: null,
|
||||
status: null,
|
||||
createDate: null,
|
||||
updateDate: null
|
||||
updateDate: null,
|
||||
deptId: null,
|
||||
majorId: null,
|
||||
classId: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
@@ -246,24 +267,69 @@ export default {
|
||||
currentPage: 1,
|
||||
pagesize: 10,
|
||||
total: 0,
|
||||
}
|
||||
},
|
||||
|
||||
deptList: [],//学院列表
|
||||
majorList: [],//专业列表
|
||||
classList: [],//班级列表
|
||||
gradeList: [],//年级列表
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.listAllStuYear()
|
||||
this.getList()
|
||||
this.listDept()
|
||||
this.listGrade()
|
||||
this.getCascaderData()
|
||||
this.listAllStuYear()
|
||||
},
|
||||
|
||||
methods: {
|
||||
async listGrade() {
|
||||
let res = await listGrade()
|
||||
this.gradeList = [...res.rows]
|
||||
},
|
||||
|
||||
async listDept() {
|
||||
let res = await getDeptName()
|
||||
this.deptList = [...res.data]
|
||||
},
|
||||
|
||||
async changeMajor() {
|
||||
if(this.queryParams.majorId) {
|
||||
let sdata = {
|
||||
pageNum: 1,
|
||||
pageSize: 100,
|
||||
majorId: this.queryParams.majorId
|
||||
}
|
||||
let res = await listClass(sdata)
|
||||
this.classList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.classId = null
|
||||
this.classList = []
|
||||
}
|
||||
},
|
||||
async changeDept() {
|
||||
if(this.queryParams.deptId) {
|
||||
let sdata = {
|
||||
collegeId: this.queryParams.deptId,
|
||||
pageNum: 1,
|
||||
pageSize: 100
|
||||
}
|
||||
let res = await listMajors(sdata)
|
||||
this.majorList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.majorId = null
|
||||
this.majorList = []
|
||||
}
|
||||
},
|
||||
// 级联选择的项
|
||||
handleChange(value) {
|
||||
/*handleChange(value) {
|
||||
this.queryParams = {
|
||||
...this.queryParams,
|
||||
classId: value[2],
|
||||
}
|
||||
},
|
||||
},*/
|
||||
//列出所有学年
|
||||
async listAllStuYear() {
|
||||
let res = await listYear()
|
||||
@@ -440,8 +506,11 @@ export default {
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.class_cas = []
|
||||
this.queryParams.deptId = null
|
||||
this.queryParams.majorId = null
|
||||
this.queryParams.classId = null
|
||||
this.majorList = []
|
||||
this.classList = []
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
|
||||
@@ -1,10 +1,20 @@
|
||||
<template>
|
||||
<div v-loading.fullscreen.lock="fullLoading" class="app-container">
|
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="100px">
|
||||
<el-form-item label="班级" prop="deptId">
|
||||
<el-cascader ref="cas" v-model="class_cas" style="width: 500px;" :options="cascaderData"
|
||||
:props="{ checkStrictly: false }" clearable filterable @change="handleChange"
|
||||
/>
|
||||
<el-form-item label="学院" prop="deptId">
|
||||
<el-select v-model="queryParams.deptId" placeholder="请选择学院" filterable clearable @change="changeDept">
|
||||
<el-option v-for="(v, i) in deptList" :key="i" :label="v.label" :value="v.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="专业" prop="majorId">
|
||||
<el-select v-model="queryParams.majorId" placeholder="请先选择学院再选择专业" filterable clearable @change="changeMajor">
|
||||
<el-option v-for="(v, i) in majorList" :key="i" :label="v.majorName" :value="v.majorId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="班级" prop="classId">
|
||||
<el-select v-model="queryParams.classId" placeholder="请先选择专业再选择班级" filterable clearable>
|
||||
<el-option v-for="(v, i) in classList" :key="i" :label="v.className" :value="v.classId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="学年" prop="stuYearId">
|
||||
<el-select v-model="queryParams.stuYearId" placeholder="请选择学年" clearable @keyup.enter.native="handleQuery">
|
||||
@@ -188,6 +198,10 @@ import { isEmpty,fullLoading } from '@/api/helpFunc'
|
||||
import { listAllYear as listYear } from '@/api/stuCQS/basedata/year'
|
||||
|
||||
import { listEnableYear } from '@/api/stuCQS/basedata/year'
|
||||
import { getDeptName } from '@/api/system/dept'
|
||||
import { listMajors } from '@/api/stuCQS/basedata/majors'
|
||||
import { listClass } from '@/api/stuCQS/basedata/class'
|
||||
import { listGrade } from '@/api/stuCQS/basedata/grade'
|
||||
|
||||
export default {
|
||||
name: 'SportTest',
|
||||
@@ -252,6 +266,11 @@ export default {
|
||||
stuId: null,
|
||||
testScore: null,
|
||||
stuYearId: null,
|
||||
deptId: null,
|
||||
majorId: null,
|
||||
classId: null,
|
||||
name: null,
|
||||
stuNo: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
@@ -259,7 +278,12 @@ export default {
|
||||
rules: {
|
||||
},
|
||||
|
||||
selectYearList: []
|
||||
selectYearList: [],
|
||||
|
||||
deptList: [],//学院列表
|
||||
majorList: [],//专业列表
|
||||
classList: [],//班级列表
|
||||
gradeList: [],//年级列表
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -267,10 +291,50 @@ export default {
|
||||
|
||||
//this.getList();
|
||||
this.listAllStuYear()
|
||||
this.listDept()
|
||||
this.listGrade()
|
||||
this.getCascaderData()
|
||||
|
||||
},
|
||||
methods: {
|
||||
async listGrade() {
|
||||
let res = await listGrade()
|
||||
this.gradeList = [...res.rows]
|
||||
},
|
||||
|
||||
async listDept() {
|
||||
let res = await getDeptName()
|
||||
this.deptList = [...res.data]
|
||||
},
|
||||
|
||||
async changeMajor() {
|
||||
if(this.queryParams.majorId) {
|
||||
let sdata = {
|
||||
pageNum: 1,
|
||||
pageSize: 100,
|
||||
majorId: this.queryParams.majorId
|
||||
}
|
||||
let res = await listClass(sdata)
|
||||
this.classList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.classId = null
|
||||
this.classList = []
|
||||
}
|
||||
},
|
||||
async changeDept() {
|
||||
if(this.queryParams.deptId) {
|
||||
let sdata = {
|
||||
collegeId: this.queryParams.deptId,
|
||||
pageNum: 1,
|
||||
pageSize: 100
|
||||
}
|
||||
let res = await listMajors(sdata)
|
||||
this.majorList = [...res.rows]
|
||||
} else {
|
||||
this.queryParams.majorId = null
|
||||
this.majorList = []
|
||||
}
|
||||
},
|
||||
async listEnableYear() {
|
||||
let res = await listEnableYear()
|
||||
if (res.code == 200) {
|
||||
@@ -349,13 +413,12 @@ export default {
|
||||
})
|
||||
},
|
||||
// 级联选择的项
|
||||
handleChange(value) {
|
||||
/*handleChange(value) {
|
||||
this.queryParams = {
|
||||
...this.queryParams,
|
||||
classId: value[2],
|
||||
}
|
||||
},
|
||||
|
||||
},*/
|
||||
// 下载申请信息模板
|
||||
downloadMode() {
|
||||
// 第一个sheet工作簿,如果需要创建多个,对应let多个sheetXdata即可
|
||||
@@ -498,10 +561,11 @@ export default {
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
let cas = this.$refs.cas
|
||||
cas.inputValue = ''
|
||||
this.class_cas = []
|
||||
this.queryParams.deptId = null
|
||||
this.queryParams.majorId = null
|
||||
this.queryParams.classId = null
|
||||
this.majorList = []
|
||||
this.classList = []
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
|
||||
180
src/views/stuCQS/synchronous-data/studentinfo/syncStudent.vue
Normal file
180
src/views/stuCQS/synchronous-data/studentinfo/syncStudent.vue
Normal file
@@ -0,0 +1,180 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true"
|
||||
label-width="68px">
|
||||
<el-form-item label="学号" prop="stuNo">
|
||||
<el-input v-model="queryParams.stuNo" placeholder="请输入学号" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="年级代码" prop="gradeCode">
|
||||
<el-select v-model="queryParams.gradeCode" filterable clearable placeholder="请选择年级代码">
|
||||
<el-option v-for="item in grade_list" :key="item.gradeCode" :label="item.gradeCode"
|
||||
:value="item.gradeCode" size="mini" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button v-hasPermi="['system:middle:add']" type="primary" plain icon="el-icon-plus" size="mini"
|
||||
@click="handleSync">同步数据</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" />
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="middleList">
|
||||
<el-table-column label="学生id" align="center" prop="xsid" />
|
||||
<el-table-column label="学号" align="center" prop="xh" />
|
||||
<el-table-column label="姓名" align="center" prop="xm" />
|
||||
<el-table-column label="性别" align="center" prop="xb" />
|
||||
<el-table-column label="民族代码" align="center" prop="mz" />
|
||||
<el-table-column label="学院" align="center" prop="BMMC" />
|
||||
<el-table-column label="专业" align="center" prop="JXZYMC" />
|
||||
<el-table-column label="年级" align="center" prop="BJSSNJ" />
|
||||
<el-table-column label="班级" align="center" prop="bjmc" />
|
||||
<el-table-column label="学生状态代码" align="center" prop="sfzx" />
|
||||
<el-table-column label="学生状态名称" align="center" prop="status" />
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listStudent, syncStudentInfo } from '@/api/stuCQS/synchronous-data/sync-stu'
|
||||
import { listGrade } from '@/api/stuCQS/basedata/grade'
|
||||
|
||||
export default {
|
||||
name: 'Middle',
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 【请填写功能名称】表格数据
|
||||
middleList: [],
|
||||
// 弹出层标题
|
||||
title: '',
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
xqid: null,
|
||||
xndm: null,
|
||||
xqdm: null,
|
||||
stuNo: null,
|
||||
kcdm: null,
|
||||
xf: null,
|
||||
jd: null,
|
||||
cj: null,
|
||||
fzlx: null,
|
||||
gradeCode: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
},
|
||||
grade_list: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
this.listGrade();
|
||||
},
|
||||
methods: {
|
||||
async listGrade() {
|
||||
let res = await listGrade()
|
||||
if (res.code == 200) {
|
||||
this.grade_list = [...res.rows]
|
||||
}
|
||||
},
|
||||
/** 查询【请填写功能名称】列表 */
|
||||
getList() {
|
||||
this.loading = true
|
||||
listStudent(this.queryParams).then(response => {
|
||||
this.middleList = response.data
|
||||
console.log(response)
|
||||
this.total = response.total
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false
|
||||
this.reset()
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: null,
|
||||
xqid: null,
|
||||
xndm: null,
|
||||
xqdm: null,
|
||||
stuNo: null,
|
||||
kcdm: null,
|
||||
xf: null,
|
||||
jd: null,
|
||||
cj: null,
|
||||
fzlx: null
|
||||
}
|
||||
this.resetForm('form')
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1
|
||||
this.getList()
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('system/middle/export', {
|
||||
...this.queryParams
|
||||
}, `middle_${new Date().getTime()}.xlsx`)
|
||||
},
|
||||
async handleSync() {
|
||||
if (this.queryParams.gradeCode == null || this.queryParams.gradeCode == "") {
|
||||
this.$modal.msgError('请选择年级代码')
|
||||
return
|
||||
}
|
||||
this.loading = true
|
||||
try {
|
||||
this.$modal.msgSuccess('正在同步')
|
||||
const res = await syncStudentInfo(this.queryParams)
|
||||
// 增加接口返回值校验,避免res.msg不存在导致的二次报错
|
||||
if (res.code == 200) {
|
||||
this.$modal.msgSuccess('同步完成')
|
||||
this.getList()
|
||||
}
|
||||
//this.getList() // 仅接口正常返回时刷新列表
|
||||
} catch (error) {
|
||||
// 捕获接口报错,提示用户并打印错误日志(便于排查)
|
||||
this.$modal.msgError('同步失败:' + (error.message || '网络异常'))
|
||||
//console.error('同步数据报错:', error)
|
||||
} finally {
|
||||
// 无论成功/失败,最终都会执行这里,重置加载状态
|
||||
this.loading = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -21,6 +21,9 @@
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" />
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="middleList">
|
||||
<el-table-column label="班级代码" align="center" prop="bjdm" />
|
||||
<el-table-column label="班级名称" align="center" prop="bjmc" />
|
||||
@@ -147,8 +150,7 @@ export default {
|
||||
// 增加接口返回值校验,避免res.msg不存在导致的二次报错
|
||||
if (res.code == 200) {
|
||||
this.$modal.msgSuccess('同步完成')
|
||||
} else {
|
||||
this.$modal.msgError('同步失败')
|
||||
this.getList()
|
||||
}
|
||||
//this.getList() // 仅接口正常返回时刷新列表
|
||||
} catch (error) {
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
@click="handleSync">同步数据</el-button>
|
||||
</el-col>
|
||||
</el-col>
|
||||
<right-toolbar :show-search.sync="showSearch" @queryTable="getList" />
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="middleList">
|
||||
<el-table-column label="职工号" align="center" prop="zgh" />
|
||||
@@ -116,8 +117,6 @@ export default {
|
||||
// 增加接口返回值校验,避免res.msg不存在导致的二次报错
|
||||
if (res.code == 200) {
|
||||
this.$modal.msgSuccess('同步完成')
|
||||
} else {
|
||||
this.$modal.msgError('同步失败')
|
||||
}
|
||||
//this.getList() // 仅接口正常返回时刷新列表
|
||||
} catch (error) {
|
||||
|
||||
@@ -103,8 +103,6 @@ export default {
|
||||
// 增加接口返回值校验,避免res.msg不存在导致的二次报错
|
||||
if (res.code == 200) {
|
||||
this.$modal.msgSuccess('同步完成')
|
||||
} else {
|
||||
this.$modal.msgError('同步失败')
|
||||
}
|
||||
//this.getList() // 仅接口正常返回时刷新列表
|
||||
} catch (error) {
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
|
||||
<el-table-column label="岗位名称" align="center" prop="postName" />
|
||||
<el-table-column label="设岗部门" align="center" prop="deptName" />
|
||||
<el-table-column label="指导老师" align="center" prop="zdlsName" />
|
||||
<el-table-column label="岗位类型" align="center" prop="postType" />
|
||||
|
||||
<el-table-column label="工作时长" align="center">
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
|
||||
<el-table-column label="岗位名称" align="center" prop="postName" />
|
||||
<el-table-column label="设岗部门" align="center" prop="deptName" />
|
||||
<el-table-column label="指导老师" align="center" prop="zdlsName" />
|
||||
<el-table-column label="岗位类型" align="center" prop="postType" />
|
||||
<el-table-column label="工作时长" align="center">
|
||||
<template #default="{ row }">
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
<el-table-column label="岗位名称" align="center" prop="postName" />
|
||||
<el-table-column label="设岗部门" align="center" prop="deptName" />
|
||||
|
||||
<el-table-column label="指导老师" align="center" prop="zdlsName" />
|
||||
<el-table-column label="工作时长" align="center">
|
||||
<template #default="{ row }">
|
||||
{{ row.postType == "固定岗位A" ? row.totalTime + "天" : row.totalTime + "小时" }}
|
||||
|
||||
Reference in New Issue
Block a user