查新详情样式调整,以及复制到我的学生页面
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -247,7 +247,7 @@
|
||||
</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-tab-pane label="重要信息" name="important">
|
||||
<el-form v-if="detailInfo" size="mini" label-width="100px">
|
||||
|
||||
Reference in New Issue
Block a user