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 @@