|
|
@@ -116,17 +116,17 @@
|
|
|
<el-table-column prop="idCard" label="身份证号" min-width="180" align="center" :formatter="formatIdCard" show-overflow-tooltip />
|
|
|
<el-table-column prop="gender" label="性别" width="80" align="center">
|
|
|
<template #default="scope">
|
|
|
- {{ scope.row.gender === 'M' ? '男' : '女' }}
|
|
|
+ {{ formatGender(scope.row.gender, scope.row.idCard) }}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="所属学院" min-width="150" align="center" show-overflow-tooltip>
|
|
|
<template #default="scope">
|
|
|
- {{ scope.row.applied_major }}
|
|
|
+ {{ scope.row.collegeName || scope.row.college_name || scope.row.collage_name || '-' }}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="专业" min-width="150" align="center" show-overflow-tooltip>
|
|
|
<template #default="scope">
|
|
|
- {{ scope.row.majorName || scope.row.applied_major || '-' }}
|
|
|
+ {{ scope.row.majorName || scope.row.appliedMajor || scope.row.applied_major || '-' }}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="province" label="地区" min-width="100" align="center" />
|
|
|
@@ -174,6 +174,7 @@ import {
|
|
|
EnrollmentProcessVO,
|
|
|
getEnrollmentProcess
|
|
|
} from '@/api/zsjy/enrollmentProcess';
|
|
|
+import { getEnrollmentInfo } from '@/api/zsjy/enrollment';
|
|
|
import { listDept } from '@/api/system/dept';
|
|
|
import type { DeptVO } from '@/api/system/dept/types';
|
|
|
import StudentDetailDialog from './components/StudentDetailDialog.vue';
|
|
|
@@ -511,59 +512,67 @@ const handleExport = () => {
|
|
|
const handleView = async (row: EnrollmentProcessVO) => {
|
|
|
detailLoading.value = true;
|
|
|
try {
|
|
|
- let processData: any = {};
|
|
|
+ let processData: any = { ...row };
|
|
|
|
|
|
- // 如果是从报名信息表里直接获取的数据(可能没有流程ID)
|
|
|
if (row.id) {
|
|
|
const res = await getEnrollmentProcess(row.id);
|
|
|
- if (res && res.code === 200) {
|
|
|
- processData = res.data;
|
|
|
- } else {
|
|
|
- // 回退到使用行数据
|
|
|
- processData = { ...row };
|
|
|
+ if (res && res.code === 200 && res.data) {
|
|
|
+ processData = { ...processData, ...res.data };
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const enrollmentId = processData.enrollmentId || row.enrollmentId;
|
|
|
+ if (enrollmentId) {
|
|
|
+ const infoRes = await getEnrollmentInfo(enrollmentId);
|
|
|
+ if (infoRes?.code === 200 && infoRes.data) {
|
|
|
+ const info = infoRes.data;
|
|
|
+ processData = {
|
|
|
+ ...processData,
|
|
|
+ ...info,
|
|
|
+ studentName: processData.studentName || info.name,
|
|
|
+ collegeName: info.collegeName || processData.collegeName,
|
|
|
+ majorName: info.appliedMajor || processData.majorName,
|
|
|
+ appliedMajor: info.appliedMajor || processData.appliedMajor,
|
|
|
+ applicationTime: info.applicationTime || processData.applicationTime
|
|
|
+ };
|
|
|
}
|
|
|
- } else {
|
|
|
- // 使用行数据(可能是从enrollment_info表里直接获取的)
|
|
|
- processData = { ...row };
|
|
|
}
|
|
|
|
|
|
- // 处理完成状态,确保它是字符串类型
|
|
|
if (processData.isCompleted !== undefined) {
|
|
|
processData.isCompleted = String(processData.isCompleted);
|
|
|
}
|
|
|
|
|
|
- // 处理缴费状态,确保它不为空
|
|
|
if (processData.paymentStatus === undefined || processData.paymentStatus === null) {
|
|
|
- processData.paymentStatus = '0'; // 默认为未缴费
|
|
|
+ processData.paymentStatus = '0';
|
|
|
}
|
|
|
|
|
|
- // 设置当前流程数据
|
|
|
currentStudent.value = processData;
|
|
|
-
|
|
|
- // 打开详情对话框
|
|
|
detailDialogVisible.value = true;
|
|
|
} catch (error) {
|
|
|
console.error('获取流程详情失败:', error);
|
|
|
- // 即使获取详情失败,也尝试使用行数据显示
|
|
|
- const processData = { ...row };
|
|
|
-
|
|
|
- // 处理完成状态,确保它是字符串类型
|
|
|
- if (processData.isCompleted !== undefined) {
|
|
|
- processData.isCompleted = String(processData.isCompleted);
|
|
|
- }
|
|
|
-
|
|
|
- // 处理缴费状态,确保它不为空
|
|
|
- if (processData.paymentStatus === undefined || processData.paymentStatus === null) {
|
|
|
- processData.paymentStatus = '0'; // 默认为未缴费
|
|
|
- }
|
|
|
-
|
|
|
- currentStudent.value = processData;
|
|
|
+ currentStudent.value = {
|
|
|
+ ...row,
|
|
|
+ isCompleted: row.isCompleted !== undefined ? String(row.isCompleted) : undefined,
|
|
|
+ paymentStatus: row.paymentStatus ?? '0'
|
|
|
+ };
|
|
|
detailDialogVisible.value = true;
|
|
|
} finally {
|
|
|
detailLoading.value = false;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+const formatGender = (gender?: string, idCard?: string) => {
|
|
|
+ if (gender === 'M' || gender === '0') return '男';
|
|
|
+ if (gender === 'F' || gender === '1') return '女';
|
|
|
+ if (idCard && idCard.length >= 17) {
|
|
|
+ const code = parseInt(idCard.charAt(16), 10);
|
|
|
+ if (!Number.isNaN(code)) {
|
|
|
+ return code % 2 === 0 ? '女' : '男';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return gender || '-';
|
|
|
+};
|
|
|
+
|
|
|
// 格式化身份证号(隐藏中间部分)
|
|
|
const formatIdCard = (row: any) => {
|
|
|
if (!row.idCard) return '';
|