From c54a8d05bb008902c397053f7dafdcbb2dff1f9f Mon Sep 17 00:00:00 2001
From: yaojian <1161995598@qq.com>
Date: Thu, 12 Mar 2026 10:45:02 +0800
Subject: [PATCH 1/6] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=AD=90=E9=A1=B9?=
=?UTF-8?q?=E5=AF=BC=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/stuwork/activityinfo.ts | 14 +++++++++++++-
src/views/stuwork/activityinfo/index.vue | 23 +++++++++++++++++++++--
2 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/src/api/stuwork/activityinfo.ts b/src/api/stuwork/activityinfo.ts
index d45ff47..6955d3d 100644
--- a/src/api/stuwork/activityinfo.ts
+++ b/src/api/stuwork/activityinfo.ts
@@ -69,11 +69,23 @@ export const importSub = (id: string, file: File) => {
const formData = new FormData();
formData.append('file', file);
return request({
- url: `/stuwork/activityinfo/importSub/${id}`,
+ url: '/stuwork/file/importActivityInfoSub',
method: 'post',
data: formData,
+ params: { activityInfoId: id },
headers: {
'Content-Type': 'multipart/form-data',
},
});
};
+
+/**
+ * 下载活动子项导入模板
+ */
+export const downloadImportTemplate = () => {
+ return request({
+ url: '/stuwork/file/getActivityInfoSubImportTemplate',
+ method: 'get',
+ responseType: 'blob',
+ });
+};
diff --git a/src/views/stuwork/activityinfo/index.vue b/src/views/stuwork/activityinfo/index.vue
index b456d6a..0d994cc 100644
--- a/src/views/stuwork/activityinfo/index.vue
+++ b/src/views/stuwork/activityinfo/index.vue
@@ -123,7 +123,10 @@
将文件拖到此处,或点击上传
- 只能上传 xlsx/xls 文件
+
+ 只能上传 xlsx/xls 文件,
+ 下载导入模板
+
@@ -139,7 +142,7 @@
\ No newline at end of file
diff --git a/src/views/basic/basicstudent/index.vue b/src/views/basic/basicstudent/index.vue
index 24e1b8b..b77f975 100644
--- a/src/views/basic/basicstudent/index.vue
+++ b/src/views/basic/basicstudent/index.vue
@@ -299,6 +299,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -392,6 +421,14 @@ const workYearList = ref([]);
const applyInternshipForm = reactive({
year: '',
});
+// 证书导出相关
+const exportCertificateDialogVisible = ref(false);
+const exportCertificateLoading = ref(false);
+const majorLevelList = ref([]);
+const exportCertificateForm = reactive({
+ classCode: '',
+ exportType: '' as string | null,
+});
// 表格列配置
const tableColumns = [
@@ -817,14 +854,45 @@ const handleExportStudentCard = async () => {
// 证书导出
const handleExportCertificate = async () => {
+ // 获取导出类型字典
+ if (majorLevelList.value.length === 0) {
+ try {
+ const res = await getDicts('major_level');
+ if (res.data && Array.isArray(res.data)) {
+ majorLevelList.value = res.data.map((item: any) => ({
+ label: item.label || item.dictLabel || item.name,
+ value: item.value || item.dictValue || item.code,
+ }));
+ }
+ } catch (err) {
+ majorLevelList.value = [];
+ }
+ }
+ // 重置表单
+ exportCertificateForm.classCode = searchForm.classCode || '';
+ exportCertificateForm.exportType = null;
+ exportCertificateDialogVisible.value = true;
+};
+
+// 确认证书导出
+const handleExportCertificateConfirm = async () => {
+ if (!exportCertificateForm.classCode) {
+ useMessage().warning('请选择班级');
+ return;
+ }
+
+ exportCertificateLoading.value = true;
try {
await makeExportSkillLevelTask({
- deptCode: searchForm.deptCode,
- classCode: searchForm.classCode,
+ classCode: exportCertificateForm.classCode,
+ exportType: exportCertificateForm.exportType || null,
});
useMessage().success('导出任务已创建,请在文件管理中下载');
+ exportCertificateDialogVisible.value = false;
} catch (err: any) {
useMessage().error(err.msg || '创建导出任务失败');
+ } finally {
+ exportCertificateLoading.value = false;
}
};
From ff2023709b4ddf63871c00548741e1fb5b59694e Mon Sep 17 00:00:00 2001
From: yaojian <1161995598@qq.com>
Date: Thu, 12 Mar 2026 17:39:13 +0800
Subject: [PATCH 4/6] 1
---
src/views/basic/basicstudent/components/StudentDetail.vue | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/views/basic/basicstudent/components/StudentDetail.vue b/src/views/basic/basicstudent/components/StudentDetail.vue
index 270ac60..a337339 100644
--- a/src/views/basic/basicstudent/components/StudentDetail.vue
+++ b/src/views/basic/basicstudent/components/StudentDetail.vue
@@ -316,7 +316,7 @@
-
+
@@ -816,7 +816,7 @@ const loadDictData = async () => {
const dictTypes = [
'family_member_type', // 家庭成员关系
'political_family', // 家庭成员政治面貌
- 'eye_status', // 辨色力
+ 'color_discrimination', // 辨色力
'veteran_status', // 是否退伍军人
'pre_school_education', // 入学前文化程度
'school_province', // 毕业学校省市
@@ -846,8 +846,8 @@ const loadDictData = async () => {
}));
}
// 辨色力
- if (dictMap['eye_status'] && Array.isArray(dictMap['eye_status'])) {
- eyeStatusList.value = dictMap['eye_status'].map((item: any) => ({
+ if (dictMap['color_discrimination'] && Array.isArray(dictMap['color_discrimination'])) {
+ eyeStatusList.value = dictMap['color_discrimination'].map((item: any) => ({
label: item.label,
value: item.value,
}));
From d9f7f85422b1f3e01e03fbae8a5e4e89a3f9363b Mon Sep 17 00:00:00 2001
From: yaojian <1161995598@qq.com>
Date: Thu, 12 Mar 2026 18:32:54 +0800
Subject: [PATCH 5/6] =?UTF-8?q?=E6=AF=8F=E5=91=A8=E8=AE=A1=E5=88=92?=
=?UTF-8?q?=E6=97=A5=E5=8D=AB=E7=94=9F=E6=9C=88=E5=8D=AB=E7=94=9F=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E7=BB=9F=E8=AE=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/stuwork/classroomhygienedaily.ts | 13 ++
src/api/stuwork/classroomhygienemonthly.ts | 13 ++
src/api/stuwork/weekplan.ts | 13 ++
.../stuwork/classroomhygienedaily/index.vue | 116 +++++++++++++++-
.../stuwork/classroomhygienemonthly/index.vue | 78 ++++++++++-
src/views/stuwork/weekplan/index.vue | 130 +++++++++++++++---
6 files changed, 340 insertions(+), 23 deletions(-)
diff --git a/src/api/stuwork/classroomhygienedaily.ts b/src/api/stuwork/classroomhygienedaily.ts
index 78e06c8..883e7b8 100644
--- a/src/api/stuwork/classroomhygienedaily.ts
+++ b/src/api/stuwork/classroomhygienedaily.ts
@@ -96,3 +96,16 @@ export function validateExist(rule: any, value: any, callback: any, isEdit: bool
}
});
}
+
+/**
+ * 获取日卫生学年学期统计
+ * @param {Object} [query] - 查询参数(schoolYear, schoolTerm)
+ * @returns {Promise} 请求的 Promise 对象。
+ */
+export function summary(query?: Object) {
+ return request({
+ url: '/stuwork/classRoomHygieneDaily/summary',
+ method: 'get',
+ params: query,
+ });
+}
diff --git a/src/api/stuwork/classroomhygienemonthly.ts b/src/api/stuwork/classroomhygienemonthly.ts
index bc555a3..a936a45 100644
--- a/src/api/stuwork/classroomhygienemonthly.ts
+++ b/src/api/stuwork/classroomhygienemonthly.ts
@@ -57,3 +57,16 @@ export const importData = (data: FormData) => {
},
});
};
+
+/**
+ * 获取月卫生学年学期统计
+ * @param {Object} [query] - 查询参数(schoolYear, schoolTerm)
+ * @returns {Promise} 请求的 Promise 对象。
+ */
+export const monthlySummaryByYearTerm = (query?: Object) => {
+ return request({
+ url: '/stuwork/classroomhygienemonthly/monthlySummaryByYearTerm',
+ method: 'get',
+ params: query,
+ });
+};
diff --git a/src/api/stuwork/weekplan.ts b/src/api/stuwork/weekplan.ts
index 3ca70b2..bda79f9 100644
--- a/src/api/stuwork/weekplan.ts
+++ b/src/api/stuwork/weekplan.ts
@@ -96,3 +96,16 @@ export function validateExist(rule: any, value: any, callback: any, isEdit: bool
}
});
}
+
+/**
+ * 获取班级班主任查看状况统计
+ * @param {Object} [query] - 查询参数(schoolYear, schoolTerm)
+ * @returns {Promise} 请求的 Promise 对象。
+ */
+export function readStatistics(query?: Object) {
+ return request({
+ url: '/stuwork/weekPlan/readStatistics',
+ method: 'get',
+ params: query,
+ });
+}
diff --git a/src/views/stuwork/classroomhygienedaily/index.vue b/src/views/stuwork/classroomhygienedaily/index.vue
index d055904..dfe69bd 100644
--- a/src/views/stuwork/classroomhygienedaily/index.vue
+++ b/src/views/stuwork/classroomhygienedaily/index.vue
@@ -59,6 +59,7 @@
diff --git a/src/views/stuwork/classroomhygienemonthly/index.vue b/src/views/stuwork/classroomhygienemonthly/index.vue
index c7e9e3c..f512af1 100644
--- a/src/views/stuwork/classroomhygienemonthly/index.vue
+++ b/src/views/stuwork/classroomhygienemonthly/index.vue
@@ -59,6 +59,7 @@
@@ -199,7 +234,7 @@
import { ref, reactive, defineAsyncComponent, computed, onMounted } from 'vue';
import { useRoute } from 'vue-router';
import { BasicTableProps, useTable } from '/@/hooks/table';
-import { fetchList, delObjs, checkClassRoomHygieneMonthly } from '/@/api/stuwork/classroomhygienemonthly';
+import { fetchList, delObjs, checkClassRoomHygieneMonthly, monthlySummaryByYearTerm } from '/@/api/stuwork/classroomhygienemonthly';
import { makeExportClassRoomHygieneMonthlyTask } from '/@/api/stuwork/file';
import { useMessage, useMessageBox } from '/@/hooks/message';
import { queryAllSchoolYear } from '/@/api/basic/basicyear';
@@ -244,6 +279,16 @@ const checkDialogVisible = ref(false);
// 模板文件URL - 使用后端接口
const templateUrl = ref('/stuwork/classroomhygienemonthly/import/template');
+// 统计相关变量
+const summaryVisible = ref(false);
+const summaryLoading = ref(false);
+const summaryData = ref([]);
+const summaryForm = reactive({
+ schoolYear: '',
+ schoolTerm: '',
+ deptCode: ''
+});
+
// 表格列配置
const tableColumns = [
{ prop: 'schoolYear', label: '学年' },
@@ -524,6 +569,37 @@ const formatSchoolTerm = (value: string | number) => {
return dictItem ? dictItem.label : value;
};
+// 打开统计弹窗
+const handleOpenSummary = () => {
+ summaryVisible.value = true;
+ summaryForm.schoolYear = '';
+ summaryForm.schoolTerm = '';
+ summaryForm.deptCode = '';
+ summaryData.value = [];
+};
+
+// 查询统计数据
+const handleQuerySummary = async () => {
+ if (!summaryForm.schoolYear || !summaryForm.schoolTerm) {
+ useMessage().warning('请选择学年和学期');
+ return;
+ }
+ summaryLoading.value = true;
+ try {
+ const res = await monthlySummaryByYearTerm({
+ schoolYear: summaryForm.schoolYear,
+ schoolTerm: summaryForm.schoolTerm,
+ deptCode: summaryForm.deptCode
+ });
+ summaryData.value = Array.isArray(res.data) ? res.data : [];
+ } catch (err: any) {
+ useMessage().error(err.msg || '获取统计数据失败');
+ summaryData.value = [];
+ } finally {
+ summaryLoading.value = false;
+ }
+};
+
// 初始化
onMounted(() => {
getSchoolYearList();
diff --git a/src/views/stuwork/weekplan/index.vue b/src/views/stuwork/weekplan/index.vue
index cbfc1be..9c6d92e 100644
--- a/src/views/stuwork/weekplan/index.vue
+++ b/src/views/stuwork/weekplan/index.vue
@@ -62,16 +62,16 @@
每周工作计划列表
From 9ccbe8b524efd21519c1d4a8aeb2058a8e2bc236 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=90=B4=E7=BA=A2=E5=85=B5?= <374362909@qq.com>
Date: Thu, 12 Mar 2026 21:47:41 +0800
Subject: [PATCH 6/6] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../purchase/purchasingrequisition/add.vue | 36 +++++++++----------
.../purchase/purchasingrequisition/form.vue | 2 +-
2 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/src/views/purchase/purchasingrequisition/add.vue b/src/views/purchase/purchasingrequisition/add.vue
index 5109eb4..efccca2 100644
--- a/src/views/purchase/purchasingrequisition/add.vue
+++ b/src/views/purchase/purchasingrequisition/add.vue
@@ -153,7 +153,7 @@
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.deptSelfMeetingMinutes }"
upload-file-url="/purchase/purchasingfiles/upload"
- :disabled="flowFieldDisabled('deptSelfMeetingMinutes')"
+ :disabled="isViewMode || flowFieldDisabled('deptSelfMeetingMinutes')"
/>
@@ -249,7 +249,7 @@
:file-type="['doc', 'docx']"
:data="{ fileType: FILE_TYPE_MAP.serviceDirectSelect }"
upload-file-url="/purchase/purchasingfiles/upload"
- :disabled="flowFieldDisabled('serviceDirectSelect')"
+ :disabled="isViewMode || flowFieldDisabled('serviceDirectSelect')"
/>
支持上传zip格式的压缩包文件
@@ -391,7 +391,7 @@
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.deptSelfMeetingMinutes }"
upload-file-url="/purchase/purchasingfiles/upload"
- :disabled="flowFieldDisabled('deptSelfMeetingMinutes')"
+ :disabled="isViewMode || flowFieldDisabled('deptSelfMeetingMinutes')"
/>
@@ -499,7 +499,7 @@
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.feasibilityReport }"
upload-file-url="/purchase/purchasingfiles/upload"
- :disabled="flowFieldDisabled('feasibilityReport')"
+ :disabled="isViewMode || flowFieldDisabled('feasibilityReport')"
/>
@@ -533,7 +533,7 @@
:file-type="['pdf', 'jpg', 'jpeg', 'png']"
:data="{ fileType: FILE_TYPE_MAP.singleSourceProof }"
upload-file-url="/purchase/purchasingfiles/upload"
- :disabled="flowFieldDisabled('singleSourceProof')"
+ :disabled="isViewMode || flowFieldDisabled('singleSourceProof')"
/>
支持上传zip格式的压缩包文件
diff --git a/src/views/purchase/purchasingrequisition/form.vue b/src/views/purchase/purchasingrequisition/form.vue
index d99fe01..051eff3 100644
--- a/src/views/purchase/purchasingrequisition/form.vue
+++ b/src/views/purchase/purchasingrequisition/form.vue
@@ -2,7 +2,7 @@