diff --git a/public/img/bg/003.PNG b/public/img/bg/003.PNG new file mode 100644 index 0000000..5f55b78 Binary files /dev/null and b/public/img/bg/003.PNG differ diff --git a/public/img/bg/12345.jpg b/public/img/bg/12345.jpg new file mode 100644 index 0000000..90598ac Binary files /dev/null and b/public/img/bg/12345.jpg differ diff --git a/public/img/bg/bf.jpg b/public/img/bg/bf.jpg new file mode 100644 index 0000000..e13ff12 Binary files /dev/null and b/public/img/bg/bf.jpg differ diff --git a/public/img/bg/bfnew.jpg b/public/img/bg/bfnew.jpg new file mode 100644 index 0000000..4dad858 Binary files /dev/null and b/public/img/bg/bfnew.jpg differ diff --git a/public/img/bg/cglz.jpg b/public/img/bg/cglz.jpg new file mode 100644 index 0000000..13d775c Binary files /dev/null and b/public/img/bg/cglz.jpg differ diff --git a/public/img/bg/cgsq.jpg b/public/img/bg/cgsq.jpg new file mode 100644 index 0000000..95c355c Binary files /dev/null and b/public/img/bg/cgsq.jpg differ diff --git a/public/img/bg/city.png b/public/img/bg/city.png new file mode 100644 index 0000000..5cc24f2 Binary files /dev/null and b/public/img/bg/city.png differ diff --git a/public/img/bg/cloud.jpg b/public/img/bg/cloud.jpg new file mode 100644 index 0000000..151a000 Binary files /dev/null and b/public/img/bg/cloud.jpg differ diff --git a/public/img/bg/czLogin.png b/public/img/bg/czLogin.png new file mode 100644 index 0000000..89b6367 Binary files /dev/null and b/public/img/bg/czLogin.png differ diff --git a/public/img/bg/db.jpg b/public/img/bg/db.jpg new file mode 100644 index 0000000..87b40bd Binary files /dev/null and b/public/img/bg/db.jpg differ diff --git a/public/img/bg/inExam.jpg b/public/img/bg/inExam.jpg new file mode 100644 index 0000000..6faadf5 Binary files /dev/null and b/public/img/bg/inExam.jpg differ diff --git a/public/img/bg/lyys.jpg b/public/img/bg/lyys.jpg new file mode 100644 index 0000000..0d89d28 Binary files /dev/null and b/public/img/bg/lyys.jpg differ diff --git a/public/img/bg/outExam.jpg b/public/img/bg/outExam.jpg new file mode 100644 index 0000000..1381df7 Binary files /dev/null and b/public/img/bg/outExam.jpg differ diff --git a/public/img/bg/star-squashed.jpg b/public/img/bg/star-squashed.jpg new file mode 100644 index 0000000..2176e39 Binary files /dev/null and b/public/img/bg/star-squashed.jpg differ diff --git a/public/img/bg/ten_logo.jpg b/public/img/bg/ten_logo.jpg new file mode 100644 index 0000000..92fffe0 Binary files /dev/null and b/public/img/bg/ten_logo.jpg differ diff --git a/public/img/bg/ten_logo.png b/public/img/bg/ten_logo.png new file mode 100644 index 0000000..87cd35e Binary files /dev/null and b/public/img/bg/ten_logo.png differ diff --git a/public/img/bg/userphotobg.jpg b/public/img/bg/userphotobg.jpg new file mode 100644 index 0000000..c7a18eb Binary files /dev/null and b/public/img/bg/userphotobg.jpg differ diff --git a/public/img/bg/ybf.jpg b/public/img/bg/ybf.jpg new file mode 100644 index 0000000..77c2d95 Binary files /dev/null and b/public/img/bg/ybf.jpg differ diff --git a/public/img/bg/zss.jpeg b/public/img/bg/zss.jpeg new file mode 100644 index 0000000..5f11431 Binary files /dev/null and b/public/img/bg/zss.jpeg differ diff --git a/public/img/chartImg/1.jpeg b/public/img/chartImg/1.jpeg new file mode 100644 index 0000000..2928053 Binary files /dev/null and b/public/img/chartImg/1.jpeg differ diff --git a/public/img/chartImg/2.jpeg b/public/img/chartImg/2.jpeg new file mode 100644 index 0000000..a31cb96 Binary files /dev/null and b/public/img/chartImg/2.jpeg differ diff --git a/public/img/chartImg/3.jpeg b/public/img/chartImg/3.jpeg new file mode 100644 index 0000000..8afb66b Binary files /dev/null and b/public/img/chartImg/3.jpeg differ diff --git a/public/img/chartImg/4.jpeg b/public/img/chartImg/4.jpeg new file mode 100644 index 0000000..4eafdc8 Binary files /dev/null and b/public/img/chartImg/4.jpeg differ diff --git a/public/img/chartImg/5.jpeg b/public/img/chartImg/5.jpeg new file mode 100644 index 0000000..b6de0f2 Binary files /dev/null and b/public/img/chartImg/5.jpeg differ diff --git a/public/img/chartImg/6.jpeg b/public/img/chartImg/6.jpeg new file mode 100644 index 0000000..3a43115 Binary files /dev/null and b/public/img/chartImg/6.jpeg differ diff --git a/public/img/chartImg/7.jpeg b/public/img/chartImg/7.jpeg new file mode 100644 index 0000000..4cfba24 Binary files /dev/null and b/public/img/chartImg/7.jpeg differ diff --git a/public/img/chartImg/8.jpeg b/public/img/chartImg/8.jpeg new file mode 100644 index 0000000..e8f6d8f Binary files /dev/null and b/public/img/chartImg/8.jpeg differ diff --git a/public/img/chartImg/9.jpeg b/public/img/chartImg/9.jpeg new file mode 100644 index 0000000..188ee3c Binary files /dev/null and b/public/img/chartImg/9.jpeg differ diff --git a/public/img/default/no_pic.png b/public/img/default/no_pic.png new file mode 100644 index 0000000..b8e8b80 Binary files /dev/null and b/public/img/default/no_pic.png differ diff --git a/public/img/dormRoom/6.png b/public/img/dormRoom/6.png new file mode 100644 index 0000000..20ef28f Binary files /dev/null and b/public/img/dormRoom/6.png differ diff --git a/public/img/enroll/app-upload.jpg b/public/img/enroll/app-upload.jpg new file mode 100644 index 0000000..4a9040f Binary files /dev/null and b/public/img/enroll/app-upload.jpg differ diff --git a/public/img/enroll/certificate.png b/public/img/enroll/certificate.png new file mode 100644 index 0000000..5beb7d7 Binary files /dev/null and b/public/img/enroll/certificate.png differ diff --git a/public/img/enroll/courseimg/anjian-head-bg.jpg b/public/img/enroll/courseimg/anjian-head-bg.jpg new file mode 100644 index 0000000..c352763 Binary files /dev/null and b/public/img/enroll/courseimg/anjian-head-bg.jpg differ diff --git a/public/img/enroll/courseimg/anjian-list-submenu-bg.jpg b/public/img/enroll/courseimg/anjian-list-submenu-bg.jpg new file mode 100644 index 0000000..18d7549 Binary files /dev/null and b/public/img/enroll/courseimg/anjian-list-submenu-bg.jpg differ diff --git a/public/img/enroll/courseimg/list-ico-1.png b/public/img/enroll/courseimg/list-ico-1.png new file mode 100644 index 0000000..2df12fa Binary files /dev/null and b/public/img/enroll/courseimg/list-ico-1.png differ diff --git a/public/img/enroll/courseimg/list-ico-2.png b/public/img/enroll/courseimg/list-ico-2.png new file mode 100644 index 0000000..a8278ee Binary files /dev/null and b/public/img/enroll/courseimg/list-ico-2.png differ diff --git a/public/img/enroll/courseimg/list-logo.png b/public/img/enroll/courseimg/list-logo.png new file mode 100644 index 0000000..e4d728d Binary files /dev/null and b/public/img/enroll/courseimg/list-logo.png differ diff --git a/public/img/enroll/courseimg/page-ico-a.jpg b/public/img/enroll/courseimg/page-ico-a.jpg new file mode 100644 index 0000000..aa6e99c Binary files /dev/null and b/public/img/enroll/courseimg/page-ico-a.jpg differ diff --git a/public/img/enroll/courseimg/page-ico-b.jpg b/public/img/enroll/courseimg/page-ico-b.jpg new file mode 100644 index 0000000..0fcd173 Binary files /dev/null and b/public/img/enroll/courseimg/page-ico-b.jpg differ diff --git a/public/img/enroll/courseimg/radia-2.png b/public/img/enroll/courseimg/radia-2.png new file mode 100644 index 0000000..3dbf03c Binary files /dev/null and b/public/img/enroll/courseimg/radia-2.png differ diff --git a/public/img/enroll/login-bg.jpg b/public/img/enroll/login-bg.jpg new file mode 100644 index 0000000..5bd1360 Binary files /dev/null and b/public/img/enroll/login-bg.jpg differ diff --git a/public/img/enroll/login-title.png b/public/img/enroll/login-title.png new file mode 100644 index 0000000..20eb663 Binary files /dev/null and b/public/img/enroll/login-title.png differ diff --git a/public/img/enroll/logo.png b/public/img/enroll/logo.png new file mode 100644 index 0000000..978ac2d Binary files /dev/null and b/public/img/enroll/logo.png differ diff --git a/public/img/enroll/radia-1.png b/public/img/enroll/radia-1.png new file mode 100644 index 0000000..80f17d3 Binary files /dev/null and b/public/img/enroll/radia-1.png differ diff --git a/public/img/enroll/radia-2.png b/public/img/enroll/radia-2.png new file mode 100644 index 0000000..3dbf03c Binary files /dev/null and b/public/img/enroll/radia-2.png differ diff --git a/public/img/enroll/register-title.png b/public/img/enroll/register-title.png new file mode 100644 index 0000000..e050324 Binary files /dev/null and b/public/img/enroll/register-title.png differ diff --git a/public/img/homePage/building.png b/public/img/homePage/building.png new file mode 100644 index 0000000..6ed132c Binary files /dev/null and b/public/img/homePage/building.png differ diff --git a/public/img/homePage/class_leave.png b/public/img/homePage/class_leave.png new file mode 100644 index 0000000..bc815d1 Binary files /dev/null and b/public/img/homePage/class_leave.png differ diff --git a/public/img/homePage/company_change.png b/public/img/homePage/company_change.png new file mode 100644 index 0000000..35f1418 Binary files /dev/null and b/public/img/homePage/company_change.png differ diff --git a/public/img/homePage/dorm_leave.png b/public/img/homePage/dorm_leave.png new file mode 100644 index 0000000..9c5577d Binary files /dev/null and b/public/img/homePage/dorm_leave.png differ diff --git a/public/img/homePage/stu_leave.png b/public/img/homePage/stu_leave.png new file mode 100644 index 0000000..b699875 Binary files /dev/null and b/public/img/homePage/stu_leave.png differ diff --git a/public/img/homePage/trainProjectApply.png b/public/img/homePage/trainProjectApply.png new file mode 100644 index 0000000..d6f144b Binary files /dev/null and b/public/img/homePage/trainProjectApply.png differ diff --git a/public/img/homePage/trainProjectArrived.png b/public/img/homePage/trainProjectArrived.png new file mode 100644 index 0000000..885cd4e Binary files /dev/null and b/public/img/homePage/trainProjectArrived.png differ diff --git a/public/img/login/20150407100539_39849.jpeg b/public/img/login/20150407100539_39849.jpeg new file mode 100644 index 0000000..86b07a2 Binary files /dev/null and b/public/img/login/20150407100539_39849.jpeg differ diff --git a/public/img/login/logo.png b/public/img/login/logo.png new file mode 100644 index 0000000..e1b7e82 Binary files /dev/null and b/public/img/login/logo.png differ diff --git a/public/img/login/pkucloud1h100.png b/public/img/login/pkucloud1h100.png new file mode 100644 index 0000000..c53e9ae Binary files /dev/null and b/public/img/login/pkucloud1h100.png differ diff --git a/public/img/pdf/more_big.png b/public/img/pdf/more_big.png new file mode 100644 index 0000000..28293dd Binary files /dev/null and b/public/img/pdf/more_big.png differ diff --git a/public/img/pdf/more_small.png b/public/img/pdf/more_small.png new file mode 100644 index 0000000..c9356d5 Binary files /dev/null and b/public/img/pdf/more_small.png differ diff --git a/public/img/pdf/next_icon.png b/public/img/pdf/next_icon.png new file mode 100644 index 0000000..7c490d7 Binary files /dev/null and b/public/img/pdf/next_icon.png differ diff --git a/public/img/pdf/pre_icon.png b/public/img/pdf/pre_icon.png new file mode 100644 index 0000000..5b7c415 Binary files /dev/null and b/public/img/pdf/pre_icon.png differ diff --git a/public/img/pdf/roate_icon.png b/public/img/pdf/roate_icon.png new file mode 100644 index 0000000..8df90df Binary files /dev/null and b/public/img/pdf/roate_icon.png differ diff --git a/public/img/support/board/.bg.png.icloud b/public/img/support/board/.bg.png.icloud new file mode 100644 index 0000000..b84090d Binary files /dev/null and b/public/img/support/board/.bg.png.icloud differ diff --git a/public/img/support/board/samiao.png b/public/img/support/board/samiao.png new file mode 100644 index 0000000..7897400 Binary files /dev/null and b/public/img/support/board/samiao.png differ diff --git a/public/img/test/bydkl.jpg b/public/img/test/bydkl.jpg new file mode 100644 index 0000000..927108d Binary files /dev/null and b/public/img/test/bydkl.jpg differ diff --git a/public/img/test/bylcl.jpg b/public/img/test/bylcl.jpg new file mode 100644 index 0000000..7635be0 Binary files /dev/null and b/public/img/test/bylcl.jpg differ diff --git a/public/img/test/gwlx.jpg b/public/img/test/gwlx.jpg new file mode 100644 index 0000000..1483e93 Binary files /dev/null and b/public/img/test/gwlx.jpg differ diff --git a/public/img/test/jyxstj.jpg b/public/img/test/jyxstj.jpg new file mode 100644 index 0000000..138d9aa Binary files /dev/null and b/public/img/test/jyxstj.jpg differ diff --git a/public/img/test/qddk.jpg b/public/img/test/qddk.jpg new file mode 100644 index 0000000..9f6dded Binary files /dev/null and b/public/img/test/qddk.jpg differ diff --git a/public/img/test/shpxrs.jpg b/public/img/test/shpxrs.jpg new file mode 100644 index 0000000..e1e99b8 Binary files /dev/null and b/public/img/test/shpxrs.jpg differ diff --git a/public/img/test/xszcrs.jpg b/public/img/test/xszcrs.jpg new file mode 100644 index 0000000..3489fcc Binary files /dev/null and b/public/img/test/xszcrs.jpg differ diff --git a/public/img/test/xydsjjc.jpg b/public/img/test/xydsjjc.jpg new file mode 100644 index 0000000..d76cc91 Binary files /dev/null and b/public/img/test/xydsjjc.jpg differ diff --git a/public/img/test/zbtj.jpg b/public/img/test/zbtj.jpg new file mode 100644 index 0000000..961f017 Binary files /dev/null and b/public/img/test/zbtj.jpg differ diff --git a/src/api/basic/basicstudent.ts b/src/api/basic/basicstudent.ts index bed758c..dca1daa 100644 --- a/src/api/basic/basicstudent.ts +++ b/src/api/basic/basicstudent.ts @@ -52,6 +52,18 @@ export const getObj = (id: string | number) => { }); }; +/** + * 根据学号获取学生详细信息(用于详情页面) + * @param query + */ +export const getStudentInfoDetail = (query: any) => { + return request({ + url: '/basic/basicstudentinfo/page', + method: 'get', + params: query, + }); +}; + /** * 根据学号获取信息 * @param stuNo @@ -492,11 +504,10 @@ export const exportStudentData = (data: any) => { /** * 申请顶岗 * @param data - * TODO: 接口文档中未找到此接口,请提供正确的接口地址 */ export const applyInternship = (data: any) => { return request({ - url: '/basic/basicstudent/applyInternship', // TODO: 接口文档中未找到此接口 + url: '/work/jobfairstu/batchSaveJobFairStu', method: 'post', data: data, }); @@ -519,15 +530,13 @@ export const importCertificate = (formData: FormData) => { }; /** - * 证书导出 - * @param data - * TODO: 接口文档中未找到此接口,请提供正确的接口地址 + * 创建证书导出异步任务 + * @param data 查询参数 */ -export const exportCertificate = (data: any) => { +export const makeExportSkillLevelTask = (data?: any) => { return request({ - url: '/basic/basicstudent/exportCertificate', // TODO: 接口文档中未找到此接口 + url: '/ems/file/makeExportSkillLevelTask', method: 'post', data: data, - responseType: 'blob', }); }; diff --git a/src/api/purchase/purchasingrequisition.ts b/src/api/purchase/purchasingrequisition.ts index 53a6d8c..5e654cf 100644 --- a/src/api/purchase/purchasingrequisition.ts +++ b/src/api/purchase/purchasingrequisition.ts @@ -115,9 +115,9 @@ export function revokeAgent(applyId: number | string) { } /** - * 保存实施采购方式(分步骤实施采购-第一步) + * 保存实施采购途径(分步骤实施采购-第一步) * @param id 采购申请ID - * @param implementType 实施采购方式:1-自行组织采购,2-委托代理采购 + * @param implementType 实施采购途径:1-自行组织采购,2-委托代理采购 */ export function saveImplementType(id: number | string, implementType: string) { return request({ @@ -179,7 +179,7 @@ export function getContracts(params?: any) { * 实施采购:上传招标文件并关联到申请单(可同时保存采购代表人方式与人员) * @param id 采购申请ID * @param fileIds 已上传的招标文件ID列表(fileType=130) - * @param implementType 实施采购方式 1:自行组织采购 2:委托代理采购 + * @param implementType 实施采购途径 1:自行组织采购 2:委托代理采购 * @param representorTeacherNo 需求部门初审-指定采购代表人(单人) * @param representors 需求部门初审-部门多人逗号分隔 */ diff --git a/src/views/basic/basicstudent/components/SimpleEdit.vue b/src/views/basic/basicstudent/components/SimpleEdit.vue index 555e9b9..7e9717e 100644 --- a/src/views/basic/basicstudent/components/SimpleEdit.vue +++ b/src/views/basic/basicstudent/components/SimpleEdit.vue @@ -35,6 +35,7 @@ const loading = ref(false); // 提交表单数据 const form = reactive({ id: '', + stuNo: '', realName: '', oldName: '', idCard: '', @@ -58,6 +59,7 @@ const openDialog = (rowData: any) => { Object.assign(form, { id: rowData.id || '', realName: rowData.realName || '', + stuNo: rowData.stuNo || '', oldName: rowData.oldName || '', idCard: rowData.idCard || '', }); diff --git a/src/views/basic/basicstudent/components/StudentDetail.vue b/src/views/basic/basicstudent/components/StudentDetail.vue new file mode 100644 index 0000000..491582e --- /dev/null +++ b/src/views/basic/basicstudent/components/StudentDetail.vue @@ -0,0 +1,333 @@ + + + + + \ No newline at end of file diff --git a/src/views/basic/basicstudent/components/StudentIdCardPrint.vue b/src/views/basic/basicstudent/components/StudentIdCardPrint.vue new file mode 100644 index 0000000..e7455b5 --- /dev/null +++ b/src/views/basic/basicstudent/components/StudentIdCardPrint.vue @@ -0,0 +1,274 @@ + + + + + \ No newline at end of file diff --git a/src/views/basic/basicstudent/index.vue b/src/views/basic/basicstudent/index.vue index 4d52197..24e1b8b 100644 --- a/src/views/basic/basicstudent/index.vue +++ b/src/views/basic/basicstudent/index.vue @@ -62,8 +62,8 @@ - - + + 查询 @@ -199,7 +199,16 @@ 取消班干部 设为班干部 - 禁止进出 + + 禁止进出 + + 允许进出 @@ -217,6 +226,9 @@ + + + + + + + + + + + + + + + @@ -291,6 +322,7 @@ import { Tickets, Medal, Lock, + Unlock, DataAnalysis, Setting, Menu, @@ -306,7 +338,7 @@ import { preBatchPrint, importCertificate, exportStuInfoCard, - exportCertificate, + makeExportSkillLevelTask, resetPassWord, editIsleader, updateInout, @@ -324,14 +356,16 @@ import { makeExportClassRoomHygieneMonthlyTask } from '/@/api/stuwork/file'; // 引入组件 const FormDialog = defineAsyncComponent(() => import('./form.vue')); -const DetailDialog = defineAsyncComponent(() => import('./detail.vue')); +const DetailDialog = defineAsyncComponent(() => import('./components/StudentDetail.vue')); const SimpleEditDialog = defineAsyncComponent(() => import('./components/SimpleEdit.vue')); +const PrintDialog = defineAsyncComponent(() => import('./components/StudentIdCardPrint.vue')); // 定义变量内容 const route = useRoute(); const formDialogRef = ref(); const detailDialogRef = ref(); const simpleEditDialogRef = ref(); +const printDialogRef = ref(); const searchFormRef = ref(); const uploadRef = ref(); const columnControlRef = ref(); @@ -351,6 +385,13 @@ const exportFieldLoading = ref(false); const selectedExportFields = ref([]); const exportFieldCheckAll = ref(false); const exportFieldIndeterminate = ref(false); +// 申请顶岗相关 +const applyInternshipDialogVisible = ref(false); +const applyInternshipLoading = ref(false); +const workYearList = ref([]); +const applyInternshipForm = reactive({ + year: '', +}); // 表格列配置 const tableColumns = [ @@ -504,7 +545,7 @@ const searchForm = reactive({ parkingCard: '', completion: '', isUnionClass: '', - keyword: '', + total: '', }); // 配置 useTable @@ -546,7 +587,7 @@ const handleReset = () => { parkingCard: '', completion: '', isUnionClass: '', - keyword: '', + total: '', }); getDataList(); }; @@ -622,17 +663,85 @@ const handleExportFieldConfirm = async () => { // 申请顶岗 const handleApplyInternship = async () => { - useMessage().warning('功能开发中'); + if (selectedRows.value.length === 0) { + useMessage().warning('请先选择要申请顶岗的学生'); + return; + } + + // 获取顶岗年份字典 + try { + const yearRes = await getDicts('work_year'); + if (yearRes.data && Array.isArray(yearRes.data)) { + workYearList.value = yearRes.data.map((item: any) => ({ + label: item.label || item.dictLabel || item.name, + value: item.value || item.dictValue || item.code, + })); + } + // 重置表单并打开弹窗 + applyInternshipForm.year = ''; + applyInternshipDialogVisible.value = true; + } catch (err: any) { + useMessage().error(err.msg || '获取顶岗年份失败'); + } +}; + +// 确认申请顶岗 +const handleApplyInternshipConfirm = async () => { + if (!applyInternshipForm.year) { + useMessage().warning('请选择顶岗年份'); + return; + } + + applyInternshipLoading.value = true; + try { + // 构建请求数据 + const stuList = selectedRows.value.map((row) => ({ stuNo: row.stuNo })); + await applyInternship({ stuList, year: applyInternshipForm.year }); + useMessage().success('申请顶岗成功'); + applyInternshipDialogVisible.value = false; + getDataList(); + } catch (err: any) { + useMessage().error(err.msg || '申请顶岗失败'); + } finally { + applyInternshipLoading.value = false; + } }; // 导出头像 const handleExportAvatar = async () => { - useMessage().warning('功能开发中'); + if (!searchForm.classCode) { + useMessage().warning('请先选择班级'); + return; + } + + try { + const res = await getDownPic({ + classCode: searchForm.classCode, + stuStatus: searchForm.stuStatus || '1', + }); + // 处理blob下载 + const blob = new Blob([res], { type: 'application/zip' }); + const url = window.URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = `学生头像_${searchForm.classCode}.zip`; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + window.URL.revokeObjectURL(url); + useMessage().success('导出成功'); + } catch (err: any) { + useMessage().error(err.msg || '导出失败'); + } }; // 批量打印 -const handleBatchPrint = async () => { - useMessage().warning('功能开发中'); +const handleBatchPrint = () => { + if (selectedRows.value.length === 0) { + useMessage().warning('请先选择要打印的学生'); + return; + } + printDialogRef.value?.openDialog(selectedRows.value); }; // 段段清证书导入 @@ -682,47 +791,124 @@ const handleUploadError = (err: any) => { // 学籍卡导出 const handleExportStudentCard = async () => { - useMessage().warning('功能开发中'); + if (selectedRows.value.length === 0) { + useMessage().warning('请先选择要导出学籍卡的学生'); + return; + } + + try { + const stuNoList = selectedRows.value.map((row) => row.stuNo); + const res = await exportStuInfoCard({ stuNoList }); + // 处理blob下载 + const blob = new Blob([res], { type: 'application/zip' }); + const url = window.URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = '学籍卡.zip'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + window.URL.revokeObjectURL(url); + useMessage().success('学籍卡导出成功'); + } catch (err: any) { + useMessage().error(err.msg || '学籍卡导出失败'); + } }; // 证书导出 const handleExportCertificate = async () => { - useMessage().warning('功能开发中'); + try { + await makeExportSkillLevelTask({ + deptCode: searchForm.deptCode, + classCode: searchForm.classCode, + }); + useMessage().success('导出任务已创建,请在文件管理中下载'); + } catch (err: any) { + useMessage().error(err.msg || '创建导出任务失败'); + } }; // 简单信息维护 const handleSimpleEdit = (row: any) => { - useMessage().warning('功能开发中'); + simpleEditDialogRef.value?.openDialog(row); }; // 查看详情 const handleViewDetail = (row: any) => { - useMessage().warning('功能开发中'); + detailDialogRef.value?.openDialog(row); }; // 打印证件照 -const handlePrintPhoto = async (row: any) => { - useMessage().warning('功能开发中'); +const handlePrintPhoto = (row: any) => { + printDialogRef.value?.openSingleDialog(row); }; // 重置密码 const handleResetPassword = async (row: any) => { - useMessage().warning('功能开发中'); + try { + await useMessageBox().confirm(`确定要重置学生【${row.realName}】的密码吗?重置后密码将变为默认密码。`); + await resetPassWord(row); + useMessage().success('密码重置成功'); + } catch (err: any) { + if (err !== 'cancel') { + useMessage().error(err.msg || '密码重置失败'); + } + } }; // 设为班干部 const handleSetLeader = async (row: any) => { - useMessage().warning('功能开发中'); + try { + await useMessageBox().confirm(`确定要将学生【${row.realName}】设为班干部吗?`); + await editIsleader({ + id: row.id, + stuNo: row.stuNo, + isClassLeader: 1 + }); + useMessage().success('设置成功'); + getDataList(); + } catch (err: any) { + if (err !== 'cancel') { + useMessage().error(err.msg || '设置失败'); + } + } }; // 取消班干部 const handleCancelLeader = async (row: any) => { - useMessage().warning('功能开发中'); + try { + await useMessageBox().confirm(`确定要取消学生【${row.realName}】的班干部身份吗?`); + await editIsleader({ + id: row.id, + stuNo: row.stuNo, + isClassLeader: 0 + }); + useMessage().success('取消成功'); + getDataList(); + } catch (err: any) { + if (err !== 'cancel') { + useMessage().error(err.msg || '取消失败'); + } + } }; -// 禁止进出 +// 禁止进出/允许进出 const handleForbidInout = async (row: any) => { - useMessage().warning('功能开发中'); + const isForbid = row.isInout === 1 || row.isInout === '1'; + const action = isForbid ? '禁止' : '允许'; + try { + await useMessageBox().confirm(`确定要${action}学生【${row.realName}】进出吗?`); + await updateInout({ + stuNo: row.stuNo, + isInout: isForbid ? 0 : 1 + }); + useMessage().success(`${action}进出设置成功`); + getDataList(); + } catch (err: any) { + if (err !== 'cancel') { + useMessage().error(err.msg || '设置失败'); + } + } }; // 获取学院列表 diff --git a/src/views/purchase/purchasingrequisition/add.vue b/src/views/purchase/purchasingrequisition/add.vue index 2b73ca9..2c2e39b 100644 --- a/src/views/purchase/purchasingrequisition/add.vue +++ b/src/views/purchase/purchasingrequisition/add.vue @@ -399,12 +399,17 @@ - - - - {{ item.label }} - - + + + + @@ -814,7 +819,7 @@ 实施采购信息 -
实施采购方式
+
实施采购途径
{{ dataForm.implementType === '1' @@ -982,7 +987,7 @@ const dataForm = reactive({ isSpecial: '', hasAssets: '0', purchaseMode: '', - purchaseSchool: '', + implementChannel: '', // 实施采购途径:框架协议、网上商城 purchaseType: '', purchaseTypeUnion: '', purchaseChannel: '', @@ -1053,7 +1058,11 @@ const isSpecialList = ref([]); const purchaseTypeDeptList = ref([]); /** 部门采购方式字典(委托采购中心采购时使用) */ const purchaseTypeDeptDelegationList = ref([]); -const purchaseModeSchoolList = ref([]); +/** 实施采购途径选项:框架协议、网上商城 */ +const implementChannelList = ref([ + { value: '5', label: '框架协议' }, + { value: '8', label: '网上商城' }, +]); const purchaseTypeUnionList = ref([]); const businessDeptList = ref([]); const schoolLeaderList = ref([]); @@ -1219,8 +1228,8 @@ const isPurchaseTypeUnionRequired = computed(() => { return false; }); -// 学校统一采购 - 组织采购形式是否必填 -const isPurchaseSchoolRequired = computed(() => { +// 学校统一采购 - 实施采购途径是否必填 +const isImplementChannelRequired = computed(() => { // 审核阶段:采购中心必填 if (isFlowEmbed.value && isPurchaseCenter.value) { return true; @@ -1398,6 +1407,21 @@ const calcEntrustCenterType = (): 'service_online' | 'other' | '' => { return 'other'; }; +// 实施采购途径变化时,自动设置采购方式 +// 框架协议 → 采购方式自动选择"框架协议" +// 网上商城 → 采购方式自动选择"网上商城" +const handleImplementChannelChange = (value: string) => { + if (!value) { + // 清空实施采购途径时,清空采购方式 + dataForm.purchaseType = ''; + return; + } + + // 根据实施采购途径自动设置采购方式 + // value 与 PurchaseTypeEnum 编码一致:5=框架协议,8=网上商城 + dataForm.purchaseType = value; +}; + // 监听采购途径变化,清理所有与采购方式相关的材料字段,同时如果已选择品目则重新计算entrustCenterType watch( () => dataForm.purchaseChannel, @@ -1744,13 +1768,13 @@ const dataRules = reactive({ trigger: 'change', }, ], - // 学校统一采购 + 采购中心审核:采购形式必填 - purchaseSchool: [ + // 学校统一采购 + 采购中心审核:实施采购途径必填 + implementChannel: [ { validator: (_rule: any, value: string, callback: (e?: Error) => void) => { if (!isDeptPurchase.value && isFlowEmbed.value && isPurchaseCenter.value) { if (!value || String(value).trim() === '') { - callback(new Error('请选择组织采购形式')); + callback(new Error('请选择实施采购途径')); return; } } @@ -1876,8 +1900,8 @@ async function loadDetail(applyId: string | number) { budget: detail.budget != null ? Number(detail.budget) : null, isCentralized: detail.isCentralized != null ? String(detail.isCentralized) : '', isSpecial: detail.isSpecial != null ? String(detail.isSpecial) : '', - purchaseMode: detail.purchaseMode != null ? String(detail.purchaseMode) : '', - purchaseSchool: detail.purchaseSchool != null ? String(detail.purchaseSchool) : '', +purchaseMode: detail.purchaseMode != null ? String(detail.purchaseMode) : '', + implementChannel: detail.implementChannel != null ? String(detail.implementChannel) : '', purchaseType: detail.purchaseType === DEPT_PURCHASE_TYPE.ENTRUST_CENTER ? '' @@ -2232,23 +2256,6 @@ const purchaseTypeDeptOptions = computed(() => { })); }); -// 获取学校采购形式字典 -const getPurchaseModeSchoolDict = async () => { - try { - const res = await getDicts('PURCHASE_MODE_SCHOOL'); - purchaseModeSchoolList.value = - res.data && Array.isArray(res.data) - ? res.data.map((item: any) => ({ - id: item.id, - label: item.label || item.dictLabel || item.name, - value: item.value || item.dictValue || item.code, - })) - : []; - } catch (err) { - purchaseModeSchoolList.value = []; - } -}; - // 获取学校统一采购方式字典 const getPurchaseTypeUnionDict = async () => { try { @@ -2820,7 +2827,6 @@ onMounted(async () => { getIsSpecialDict(), getPurchaseTypeDeptDict(), getPurchaseTypeDeptDelegationDict(), - getPurchaseModeSchoolDict(), getPurchaseTypeUnionDict(), getBusinessDeptListData(), getSchoolLeaderListData(), diff --git a/src/views/purchase/purchasingrequisition/implement.vue b/src/views/purchase/purchasingrequisition/implement.vue index 0193ae9..700c27b 100644 --- a/src/views/purchase/purchasingrequisition/implement.vue +++ b/src/views/purchase/purchasingrequisition/implement.vue @@ -1,15 +1,15 @@