From 011d500186c793144caf3d232eb1359bdef32daa Mon Sep 17 00:00:00 2001
From: Xubx <1827135378@qq.com>
Date: Thu, 6 Mar 2025 14:39:23 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=86=E7=BB=84=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/cees/group/CeesGroup.api.ts | 80 +++++
src/views/cees/group/CeesGroup.data.ts | 88 ++++++
src/views/cees/group/CeesGroupList.vue | 194 ++++++++++++
.../cees/group/components/CeesGroupForm.vue | 70 +++++
.../cees/group/components/CeesGroupModal.vue | 66 ++++
.../cees/localTeacher/CeesLocalTeacher.api.ts | 19 ++
.../localTeacher/CeesLocalTeacher.data.ts | 26 +-
.../localTeacher/CeesLocalTeacherList.vue | 25 +-
src/views/cees/student/Student.api.ts | 17 ++
src/views/cees/student/Student.data.ts | 33 +-
src/views/cees/student/StudentList.vue | 287 +++++++++---------
.../cees/waiTeacher/CeesWaiTeacher.api.ts | 18 ++
.../cees/waiTeacher/CeesWaiTeacher.data.ts | 27 +-
.../cees/waiTeacher/CeesWaiTeacherList.vue | 25 +-
14 files changed, 821 insertions(+), 154 deletions(-)
create mode 100644 src/views/cees/group/CeesGroup.api.ts
create mode 100644 src/views/cees/group/CeesGroup.data.ts
create mode 100644 src/views/cees/group/CeesGroupList.vue
create mode 100644 src/views/cees/group/components/CeesGroupForm.vue
create mode 100644 src/views/cees/group/components/CeesGroupModal.vue
diff --git a/src/views/cees/group/CeesGroup.api.ts b/src/views/cees/group/CeesGroup.api.ts
new file mode 100644
index 0000000..429affb
--- /dev/null
+++ b/src/views/cees/group/CeesGroup.api.ts
@@ -0,0 +1,80 @@
+import {defHttp} from '/@/utils/http/axios';
+import { useMessage } from "/@/hooks/web/useMessage";
+
+const { createConfirm } = useMessage();
+
+enum Api {
+ list = '/cees/ceesGroup/list',
+ save='/cees/ceesGroup/add',
+ edit='/cees/ceesGroup/edit',
+ deleteOne = '/cees/ceesGroup/delete',
+ deleteBatch = '/cees/ceesGroup/deleteBatch',
+ importExcel = '/cees/ceesGroup/importExcel',
+ exportXls = '/cees/ceesGroup/exportXls',
+ getRowUser = '/cees/ceesGroup/getRowUser',
+}
+/**
+ * 导出api
+ * @param params
+ */
+export const getExportUrl = Api.exportXls;
+/**
+ * 导入api
+ */
+export const getImportUrl = Api.importExcel;
+/**
+ * 列表接口
+ * @param params
+ */
+export const list = (params) =>
+ defHttp.get({url: Api.list, params}).then((res) => {
+ //添加组员信息
+ res.records.map((item) => {
+ getRowUser({id: item.id}).then((data) => {
+ item.rowUser = data.map((item) => item).join(',');
+ }).catch((error) => {
+ item.rowUser = '加载失败';
+ });
+ });
+ console.log(res.records);
+ return res.records;
+});
+
+//查询组员
+export const getRowUser = (params) =>
+ defHttp.get({url: Api.getRowUser, params});
+
+/**
+ * 删除单个
+ */
+export const deleteOne = (params,handleSuccess) => {
+ return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => {
+ handleSuccess();
+ });
+}
+/**
+ * 批量删除
+ * @param params
+ */
+export const batchDelete = (params, handleSuccess) => {
+ createConfirm({
+ iconType: 'warning',
+ title: '确认删除',
+ content: '是否删除选中数据',
+ okText: '确认',
+ cancelText: '取消',
+ onOk: () => {
+ return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => {
+ handleSuccess();
+ });
+ }
+ });
+}
+/**
+ * 保存或者更新
+ * @param params
+ */
+export const saveOrUpdate = (params, isUpdate) => {
+ let url = isUpdate ? Api.edit : Api.save;
+ return defHttp.post({url: url, params});
+}
diff --git a/src/views/cees/group/CeesGroup.data.ts b/src/views/cees/group/CeesGroup.data.ts
new file mode 100644
index 0000000..02c32b7
--- /dev/null
+++ b/src/views/cees/group/CeesGroup.data.ts
@@ -0,0 +1,88 @@
+import {BasicColumn} from '/@/components/Table';
+import {FormSchema} from '/@/components/Table';
+import { rules} from '/@/utils/helper/validator';
+import { render } from '/@/utils/common/renderUtils';
+//import { getRowUser } from '/@/views/cees/group/CeesGroup.api';
+//列表数据
+export const columns: BasicColumn[] = [
+ {
+ title: '组名',
+ align:"center",
+ dataIndex: 'name'
+ },
+ // {
+ // title: '操作',
+ // align: 'center',
+ // width: 150,
+ // slots: { customRender: 'action2' }, // 使用插槽自定义操作列
+ //},
+ {
+ title: '组员信息',
+ align: 'center',
+ dataIndex: 'rowUser',
+ //customRender: ({ record }) => {
+ // // 使用Promise处理异步操作
+ // return getRowUser({ id: record.id }).then((data) => {
+ // console.log(data);
+ // // 假设getRowUser返回的数据是一个字符串数组
+ // return data.map((item) => item).join(',');
+ // }).catch((error) => {
+ // console.error(error);
+ // return '加载失败';
+ // });
+ //},
+ }
+ // {
+ // title: '专业id',
+ // align:"center",
+ // dataIndex: 'majorId'
+ // },
+];
+//查询数据
+export const searchFormSchema: FormSchema[] = [
+];
+//表单数据
+export const formSchema: FormSchema[] = [
+ {
+ label: '组名',
+ field: 'name',
+ component: 'Input',
+ dynamicRules: ({model,schema}) => {
+ return [
+ { required: true, message: '请输入分组名!'},
+ ];
+ },
+ },
+ {
+ label: '专业id',
+ field: 'majorId',
+ component: 'InputNumber',
+ dynamicRules: ({model,schema}) => {
+ return [
+ { required: true, message: '请输入专业id!'},
+ ];
+ },
+ },
+ // TODO 主键隐藏字段,目前写死为ID
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ show: false
+ },
+];
+
+// 高级查询数据
+export const superQuerySchema = {
+ name: {title: '组名',order: 0,view: 'text', type: 'string',},
+ majorId: {title: '专业id',order: 1,view: 'number', type: 'number',},
+};
+
+/**
+* 流程表单调用这个方法获取formSchema
+* @param param
+*/
+export function getBpmFormSchema(_formData): FormSchema[]{
+ // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema
+ return formSchema;
+}
\ No newline at end of file
diff --git a/src/views/cees/group/CeesGroupList.vue b/src/views/cees/group/CeesGroupList.vue
new file mode 100644
index 0000000..29123dc
--- /dev/null
+++ b/src/views/cees/group/CeesGroupList.vue
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+ 新增
+ 导出
+ 导入
+
+
+
+
+
+ 删除
+
+
+
+ 批量操作
+
+
+
+
+
+
+
+
+ 分组
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/cees/group/components/CeesGroupForm.vue b/src/views/cees/group/components/CeesGroupForm.vue
new file mode 100644
index 0000000..dd7caa3
--- /dev/null
+++ b/src/views/cees/group/components/CeesGroupForm.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/cees/group/components/CeesGroupModal.vue b/src/views/cees/group/components/CeesGroupModal.vue
new file mode 100644
index 0000000..31bf248
--- /dev/null
+++ b/src/views/cees/group/components/CeesGroupModal.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/cees/localTeacher/CeesLocalTeacher.api.ts b/src/views/cees/localTeacher/CeesLocalTeacher.api.ts
index e9bfd19..6ae2ebd 100644
--- a/src/views/cees/localTeacher/CeesLocalTeacher.api.ts
+++ b/src/views/cees/localTeacher/CeesLocalTeacher.api.ts
@@ -11,7 +11,14 @@ enum Api {
deleteBatch = '/CEES/ceesLocalTeacher/deleteBatch',
importExcel = '/CEES/ceesLocalTeacher/importExcel',
exportXls = '/CEES/ceesLocalTeacher/exportXls',
+ updateGroupUser = '/cees/ceesGroup/updateGroupUser',
}
+
+//获取分组
+export const getGroup = () =>
+ defHttp.get({url: '/cees/ceesGroup/list'}).then((res) => {
+ return res.records;
+ });
/**
* 导出api
* @param params
@@ -54,11 +61,23 @@ export const batchDelete = (params, handleSuccess) => {
}
});
}
+
+//更新分组中间表
+export const updateGroupUser = (params) => {
+ return defHttp.post({url: Api.updateGroupUser, params});
+}
+
/**
* 保存或者更新
* @param params
*/
export const saveOrUpdate = (params, isUpdate) => {
let url = isUpdate ? Api.edit : Api.save;
+ // 更新分组中间表
+ const groupUserParams = {
+ userId: params.userId,
+ groupId: params.groupId
+ }
+ updateGroupUser(groupUserParams);
return defHttp.post({url: url, params});
}
diff --git a/src/views/cees/localTeacher/CeesLocalTeacher.data.ts b/src/views/cees/localTeacher/CeesLocalTeacher.data.ts
index ca99188..b86551a 100644
--- a/src/views/cees/localTeacher/CeesLocalTeacher.data.ts
+++ b/src/views/cees/localTeacher/CeesLocalTeacher.data.ts
@@ -2,6 +2,16 @@ import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import { rules } from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
+import { ref, onMounted,reactive } from 'vue';
+
+const groupOptions=ref()
+// 创建一个简单的事件总线
+export const updateGroupOptions = reactive({
+ updateGroupOptions(newOptions: any) {
+ groupOptions.value = newOptions;
+ },
+});
+
//列表数据
export const columns: BasicColumn[] = [
{
@@ -32,7 +42,14 @@ export const columns: BasicColumn[] = [
{
title: '所属分组',
align: 'center',
- dataIndex: 'groupId',
+ //dataIndex: 'groupId',
+ customRender: ({ text }) => {
+ const group = groupOptions.value.find(item => item.value === text.groupId);
+ if (group) {
+ return group.label;
+ }
+ return '未知分组';
+ },
},
{
title: '是否第一次阅卷',
@@ -115,9 +132,12 @@ export const formSchema: FormSchema[] = [
{
label: '所属分组',
field: 'groupId',
- component: 'InputNumber',
+ component: 'Select',
+ componentProps: {
+ options: groupOptions, // 动态设置分组选项
+ },
dynamicRules: ({ model, schema }) => {
- return [{ required: true, message: '请输入所属分组!' }];
+ return [{ required: true, message: '请选择分组!' }];
},
},
{
diff --git a/src/views/cees/localTeacher/CeesLocalTeacherList.vue b/src/views/cees/localTeacher/CeesLocalTeacherList.vue
index 55e9867..02d0a07 100644
--- a/src/views/cees/localTeacher/CeesLocalTeacherList.vue
+++ b/src/views/cees/localTeacher/CeesLocalTeacherList.vue
@@ -41,13 +41,13 @@
diff --git a/src/views/cees/waiTeacher/CeesWaiTeacher.api.ts b/src/views/cees/waiTeacher/CeesWaiTeacher.api.ts
index df8811a..91fc0f7 100644
--- a/src/views/cees/waiTeacher/CeesWaiTeacher.api.ts
+++ b/src/views/cees/waiTeacher/CeesWaiTeacher.api.ts
@@ -11,7 +11,14 @@ enum Api {
deleteBatch = '/cees/ceesWaiTeacher/deleteBatch',
importExcel = '/cees/ceesWaiTeacher/importExcel',
exportXls = '/cees/ceesWaiTeacher/exportXls',
+ updateGroupUser = '/cees/ceesGroup/updateGroupUser',
}
+
+//获取分组
+export const getGroup = () =>
+ defHttp.get({url: '/cees/ceesGroup/list'}).then((res) => {
+ return res.records;
+ });
/**
* 导出api
* @param params
@@ -54,11 +61,22 @@ export const batchDelete = (params, handleSuccess) => {
}
});
}
+
+//更新分组中间表
+export const updateGroupUser = (params) => {
+ return defHttp.post({url: Api.updateGroupUser, params});
+}
/**
* 保存或者更新
* @param params
*/
export const saveOrUpdate = (params, isUpdate) => {
let url = isUpdate ? Api.edit : Api.save;
+ // 更新分组中间表
+ const groupUserParams = {
+ userId: params.userId,
+ groupId: params.groupId
+ }
+ updateGroupUser(groupUserParams);
return defHttp.post({url: url, params});
}
diff --git a/src/views/cees/waiTeacher/CeesWaiTeacher.data.ts b/src/views/cees/waiTeacher/CeesWaiTeacher.data.ts
index f91ca43..168110b 100644
--- a/src/views/cees/waiTeacher/CeesWaiTeacher.data.ts
+++ b/src/views/cees/waiTeacher/CeesWaiTeacher.data.ts
@@ -2,6 +2,17 @@ import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import { rules } from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
+import { ref, onMounted,reactive } from 'vue';
+
+const groupOptions=ref()
+
+// 创建一个简单的事件总线
+export const updateGroupOptions = reactive({
+ updateGroupOptions(newOptions: any) {
+ groupOptions.value = newOptions;
+ },
+});
+
//列表数据
export const columns: BasicColumn[] = [
{
@@ -47,7 +58,14 @@ export const columns: BasicColumn[] = [
{
title: '所属分组',
align: 'center',
- dataIndex: 'groupId',
+ //dataIndex: 'groupId',
+ customRender: ({ text }) => {
+ const group = groupOptions.value.find(item => item.value === text.groupId);
+ if (group) {
+ return group.label;
+ }
+ return '未知分组';
+ },
},
{
title: '住宿信息',
@@ -314,9 +332,12 @@ export const formSchema: FormSchema[] = [
{
label: '所属分组',
field: 'groupId',
- component: 'InputNumber',
+ component: 'Select',
+ componentProps: {
+ options: groupOptions, // 动态设置分组选项
+ },
dynamicRules: ({ model, schema }) => {
- return [{ required: true, message: '请输入组id!' }];
+ return [{ required: true, message: '请选择分组!' }];
},
},
{
diff --git a/src/views/cees/waiTeacher/CeesWaiTeacherList.vue b/src/views/cees/waiTeacher/CeesWaiTeacherList.vue
index bcf482f..2fb6f6d 100644
--- a/src/views/cees/waiTeacher/CeesWaiTeacherList.vue
+++ b/src/views/cees/waiTeacher/CeesWaiTeacherList.vue
@@ -82,13 +82,13 @@