查新详情样式调整,以及复制到我的学生页面

This commit is contained in:
2026-01-21 17:07:04 +08:00
parent 5b75e68add
commit 0aa58b99bc
2 changed files with 367 additions and 2 deletions

View File

@@ -98,6 +98,7 @@
<el-button size="mini" type="text" icon="el-icon-view" <el-button size="mini" type="text" icon="el-icon-view"
@click="lookDetail(scope.row)" @click="lookDetail(scope.row)"
>查看详情</el-button> >查看详情</el-button>
<el-button size="mini" type="text" icon="el-icon-search" @click="detailVClick(scope.row)">查新详情</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -247,11 +248,222 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-dialog> </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> </div>
</template> </template>
<script> <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 { } from "@/api/stuCQS/basedata/class";
import { getTokenKeySessionStorage } from '@/utils/auth' import { getTokenKeySessionStorage } from '@/utils/auth'
@@ -368,6 +580,16 @@ export default {
classVlue2: [],//班级添加修改选择 classVlue2: [],//班级添加修改选择
picV: false, picV: false,
// 查新详情相关
detailV: false,
detailInfo: {},
detailInfoView: {},
detailExtraInfo: {},
detailFamilyInfo: [],
detailEduInfo: [],
activeDetailTab: 'important',
token: getTokenKeySessionStorage() 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.$alert('<div style=\'overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;\'>' + response.msg + '</div>', '导入结果', { dangerouslyUseHTMLString: true })
this.getList() 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> </script>

View File

@@ -247,7 +247,7 @@
</el-dialog> </el-dialog>
<!-- 查新详情弹窗 --> <!-- 查新详情弹窗 -->
<el-dialog :visible.sync="detailV" title="学生查新详情" width="800px" append-to-body> <el-dialog :visible.sync="detailV" title="学生查新详情" width="1400px" append-to-body>
<el-tabs v-model="activeDetailTab" @tab-click="handleTabClick"> <el-tabs v-model="activeDetailTab" @tab-click="handleTabClick">
<el-tab-pane label="重要信息" name="important"> <el-tab-pane label="重要信息" name="important">
<el-form v-if="detailInfo" size="mini" label-width="100px"> <el-form v-if="detailInfo" size="mini" label-width="100px">