This commit is contained in:
2026-01-15 01:15:07 +08:00
parent 8c1f4ec05e
commit 90b646297d
45 changed files with 62864 additions and 5820 deletions

View File

@@ -361,8 +361,8 @@
<script setup lang="ts" name="BasicStudent">
import { ref, reactive, defineAsyncComponent, computed, onMounted } from 'vue'
import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList } from "/@/api/basic/basicstudentinfo";
import {
fetchList,
delObj,
exportStudentData,
applyInternship,
@@ -477,63 +477,27 @@ const handleSelectionChange = (selection: any[]) => {
// 学生信息导出
const handleExportStudent = async () => {
try {
await exportStudentData(searchForm)
useMessage().success('导出成功')
} catch (err: any) {
useMessage().error(err.msg || '导出失败')
}
useMessage().warning('功能开发中')
}
// 申请顶岗
const handleApplyInternship = async () => {
if (selectedRows.value.length === 0) {
useMessage().warning('请先选择学生')
return
}
try {
const stuNos = selectedRows.value.map((row: any) => row.stuNo)
await applyInternship({ stuNos })
useMessage().success('申请成功')
getDataList()
} catch (err: any) {
useMessage().error(err.msg || '申请失败')
}
useMessage().warning('功能开发中')
}
// 导出头像
const handleExportAvatar = async () => {
try {
const params: any = { ...searchForm }
if (selectedRows.value.length > 0) {
params.stuNos = selectedRows.value.map((row: any) => row.stuNo)
}
await getDownPic(params)
useMessage().success('导出成功')
} catch (err: any) {
useMessage().error(err.msg || '导出失败')
}
useMessage().warning('功能开发中')
}
// 批量打印
const handleBatchPrint = async () => {
if (selectedRows.value.length === 0) {
useMessage().warning('请先选择学生')
return
}
try {
const stuNos = selectedRows.value.map((row: any) => row.stuNo)
await preBatchPrint({ stuNos })
useMessage().success('打印准备成功')
} catch (err: any) {
useMessage().error(err.msg || '打印准备失败')
}
useMessage().warning('功能开发中')
}
// 段段清证书导入
const handleImportCertificate = () => {
importCertificateDialogVisible.value = true
fileList.value = []
useMessage().warning('功能开发中')
}
// 上传相关
@@ -579,111 +543,47 @@ const handleUploadError = (err: any) => {
// 学籍卡导出
const handleExportStudentCard = async () => {
try {
const params: any = { ...searchForm }
if (selectedRows.value.length > 0) {
params.stuNos = selectedRows.value.map((row: any) => row.stuNo)
}
await exportStuInfoCard(params)
useMessage().success('导出成功')
} catch (err: any) {
useMessage().error(err.msg || '导出失败')
}
useMessage().warning('功能开发中')
}
// 证书导出
const handleExportCertificate = async () => {
try {
const params: any = { ...searchForm }
if (selectedRows.value.length > 0) {
params.stuNos = selectedRows.value.map((row: any) => row.stuNo)
}
await exportCertificate(params)
useMessage().success('导出成功')
} catch (err: any) {
useMessage().error(err.msg || '导出失败')
}
useMessage().warning('功能开发中')
}
// 简单信息维护
const handleSimpleEdit = (row: any) => {
if (simpleEditDialogRef.value) {
simpleEditDialogRef.value.openDialog(row)
}
useMessage().warning('功能开发中')
}
// 查看详情
const handleViewDetail = (row: any) => {
if (detailDialogRef.value) {
detailDialogRef.value.openDialog(row.id)
}
useMessage().warning('功能开发中')
}
// 打印证件照
const handlePrintPhoto = async (row: any) => {
try {
await prePrint(row.stuNo)
useMessage().success('打印准备成功')
} catch (err: any) {
useMessage().error(err.msg || '打印准备失败')
}
useMessage().warning('功能开发中')
}
// 重置密码
const handleResetPassword = async (row: any) => {
try {
await useMessageBox().confirm('确定要重置该学生的密码吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
await resetPassWord({ stuNo: row.stuNo })
useMessage().success('重置成功')
} catch (err: any) {
if (err !== 'cancel') {
useMessage().error(err.msg || '重置失败')
}
}
useMessage().warning('功能开发中')
}
// 设为班干部
const handleSetLeader = async (row: any) => {
try {
await editIsleader({ id: row.id, isClassLeader: 1 })
useMessage().success('设置成功')
getDataList()
} catch (err: any) {
useMessage().error(err.msg || '设置失败')
}
useMessage().warning('功能开发中')
}
// 取消班干部
const handleCancelLeader = async (row: any) => {
try {
await editIsleader({ id: row.id, isClassLeader: 0 })
useMessage().success('取消成功')
getDataList()
} catch (err: any) {
useMessage().error(err.msg || '取消失败')
}
useMessage().warning('功能开发中')
}
// 禁止进出
const handleForbidInout = async (row: any) => {
try {
await useMessageBox().confirm('确定要禁止该学生进出吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
await updateInout({ id: row.id, isAllowInout: 0 })
useMessage().success('操作成功')
getDataList()
} catch (err: any) {
if (err !== 'cancel') {
useMessage().error(err.msg || '操作失败')
}
}
useMessage().warning('功能开发中')
}
// 获取学院列表

View File

@@ -53,9 +53,9 @@
<el-table-column prop="headImg" label="头像" width="120" align="center">
<template #default="scope">
<el-image
v-if="scope.row.headImg"
:src="scope.row.headImg"
:preview-src-list="[scope.row.headImg]"
v-if="scope.row.headImg || scope.row.imageUrl || scope.row.qrCode"
:src="scope.row.headImg || scope.row.imageUrl || scope.row.qrCode"
:preview-src-list="[scope.row.headImg || scope.row.imageUrl || scope.row.qrCode]"
fit="cover"
style="width: 80px; height: 100px; cursor: pointer;"
lazy>
@@ -96,10 +96,44 @@ const searchForm = reactive({
classCode: ''
})
// 配置 useTable
// 配置 useTable - 接口返回的数据结构是 { classes: [], students: [] }
const state: BasicTableProps = reactive<BasicTableProps>({
queryForm: searchForm,
pageList: fetchList,
pageList: async (queryParams: any) => {
const res = await fetchList(queryParams)
// 接口返回的数据结构是 { classes: [], students: [] }
// 需要将 students 数组转换为表格数据,并关联班级信息
if (res.data && res.data.students) {
const students = res.data.students || []
const classes = res.data.classes || []
const classMap = new Map()
classes.forEach((cls: any) => {
classMap.set(cls.classCode, cls)
})
// 将学生数据与班级信息合并
const dataList = students.map((stu: any) => {
const classInfo = classMap.get(stu.classCode)
return {
...stu,
className: classInfo ? classInfo.classNo : stu.className || '',
classNo: classInfo ? classInfo.classNo : ''
}
})
return {
...res,
data: {
records: dataList,
total: dataList.length,
current: 1,
size: dataList.length,
pages: 1
}
}
}
return res
},
props: {
item: 'records',
totalCount: 'total'