From f1ee6723d0661e23f78318fa7feac70d3c7d27d1 Mon Sep 17 00:00:00 2001 From: Qi <3194726156@qq.com> Date: Sun, 27 Apr 2025 15:44:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E6=89=B9=E9=87=8F=E5=88=86=E7=BB=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=B7=BB=E5=8A=A0=E5=88=B0=E7=A0=94=E7=A9=B6?= =?UTF-8?q?=E7=94=9F=E7=AE=A1=E7=90=86=E5=92=8C=E5=A4=96=E6=A0=A1=E6=95=99?= =?UTF-8?q?=E5=B8=88=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/cees/student/Student.api.ts | 59 ++- src/views/cees/student/StudentList.vue | 340 +++++++------ .../student/components/GroupSelectModal.vue | 84 ++++ src/views/cees/user/CeesUserList.vue | 454 +++++++++--------- .../cees/waiTeacher/CeesWaiTeacher.api.ts | 26 +- .../cees/waiTeacher/CeesWaiTeacherList.vue | 32 ++ .../components/GroupSelectModal.vue | 84 ++++ 7 files changed, 678 insertions(+), 401 deletions(-) create mode 100644 src/views/cees/student/components/GroupSelectModal.vue create mode 100644 src/views/cees/waiTeacher/components/GroupSelectModal.vue diff --git a/src/views/cees/student/Student.api.ts b/src/views/cees/student/Student.api.ts index 28d2ac0..40649b2 100644 --- a/src/views/cees/student/Student.api.ts +++ b/src/views/cees/student/Student.api.ts @@ -1,22 +1,23 @@ -import {defHttp} from '/@/utils/http/axios'; -import { useMessage } from "/@/hooks/web/useMessage"; +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from '/@/hooks/web/useMessage'; const { createConfirm } = useMessage(); enum Api { list = '/cees/student/list', - save='/cees/student/add', - edit='/cees/student/edit', + save = '/cees/student/add', + edit = '/cees/student/edit', deleteOne = '/cees/student/delete', deleteBatch = '/cees/student/deleteBatch', importExcel = '/cees/student/importExcel', exportXls = '/cees/student/exportXls', updateGroupUser = '/cees/ceesGroup/updateGroupUser', + batchGroup = '/cees/student/batchGroup', } //获取分组 export const getGroup = () => - defHttp.get({url: '/cees/ceesGroup/list'}).then((res) => { + defHttp.get({ url: '/cees/ceesGroup/list' }).then((res) => { return res.records; }); /** @@ -32,17 +33,16 @@ export const getImportUrl = Api.importExcel; * 列表接口 * @param params */ -export const list = (params) => - defHttp.get({url: Api.list, params}); +export const list = (params) => defHttp.get({ url: Api.list, params }); /** * 删除单个 */ -export const deleteOne = (params,handleSuccess) => { - return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { +export const deleteOne = (params, handleSuccess) => { + return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => { handleSuccess(); }); -} +}; /** * 批量删除 * @param params @@ -55,27 +55,46 @@ export const batchDelete = (params, handleSuccess) => { okText: '确认', cancelText: '取消', onOk: () => { - return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => { handleSuccess(); }); - } + }, }); -} +}; +/** + * 批量分组 + * @param params + */ +export const batchGroup = (params, handleSuccess) => { + console.log('params', params); + createConfirm({ + iconType: 'warning', + title: '确认分组', + content: '是否分组选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.post({ url: Api.batchGroup, data: params }, { joinParamsToUrl: true }).then(() => { + handleSuccess(); + }); + }, + }); +}; //更新分组中间表 export const updateGroupUser = (params) => { - return defHttp.post({url: Api.updateGroupUser, params}); -} + return defHttp.post({ url: Api.updateGroupUser, params }); +}; /** * 保存或者更新 * @param params */ export const saveOrUpdate = (params, isUpdate) => { - let url = isUpdate ? Api.edit : Api.save; + const url = isUpdate ? Api.edit : Api.save; // 更新分组中间表 const groupUserParams = { userId: params.userId, - groupId: params.groupId - } + groupId: params.groupId, + }; updateGroupUser(groupUserParams); - return defHttp.post({url: url, params}); -} + return defHttp.post({ url: url, params }); +}; diff --git a/src/views/cees/student/StudentList.vue b/src/views/cees/student/StudentList.vue index 9b8fcef..d63065b 100644 --- a/src/views/cees/student/StudentList.vue +++ b/src/views/cees/student/StudentList.vue @@ -14,9 +14,14 @@ 删除 + + + 分组 + - 批量操作 + 批量操作 @@ -44,165 +49,192 @@ + diff --git a/src/views/cees/student/components/GroupSelectModal.vue b/src/views/cees/student/components/GroupSelectModal.vue new file mode 100644 index 0000000..73b0483 --- /dev/null +++ b/src/views/cees/student/components/GroupSelectModal.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/views/cees/user/CeesUserList.vue b/src/views/cees/user/CeesUserList.vue index a1c16ea..cc897a5 100644 --- a/src/views/cees/user/CeesUserList.vue +++ b/src/views/cees/user/CeesUserList.vue @@ -16,16 +16,15 @@ - 批量操作 + 批量操作 - - 生成账号 - + 生成账号 diff --git a/src/views/cees/waiTeacher/CeesWaiTeacher.api.ts b/src/views/cees/waiTeacher/CeesWaiTeacher.api.ts index cf53378..b7762db 100644 --- a/src/views/cees/waiTeacher/CeesWaiTeacher.api.ts +++ b/src/views/cees/waiTeacher/CeesWaiTeacher.api.ts @@ -14,15 +14,16 @@ enum Api { updateGroupUser = '/cees/ceesGroup/updateGroupUser', updateDormitory = 'cees/ceesWaiTeacher/updateDormitory', cancelCheckIn = 'cees/ceesWaiTeacher/cancelCheckIn', - confirmCheckIn = 'cees/ceesWaiTeacher/confirmCheckIn' + confirmCheckIn = 'cees/ceesWaiTeacher/confirmCheckIn', + batchGroup = '/cees/ceesWaiTeacher/batchGroup', } export const updateDormitory = (id, dormitory) => defHttp.get({ url: Api.updateDormitory, params: { id, dormitory } }); // ✅ 将参数包装为独立的对象 }); //取消确认报到 -export const cancelCheckIn = (params) => defHttp.get({url: Api.cancelCheckIn, params}); +export const cancelCheckIn = (params) => defHttp.get({ url: Api.cancelCheckIn, params }); //确认报到 -export const confirmCheckIn = (params) => defHttp.get({url: Api.confirmCheckIn, params}); +export const confirmCheckIn = (params) => defHttp.get({ url: Api.confirmCheckIn, params }); //获取分组 export const getGroup = () => defHttp.get({ url: '/cees/ceesGroup/list' }).then((res) => { @@ -69,6 +70,25 @@ export const batchDelete = (params, handleSuccess) => { }, }); }; +/** + * 批量分组 + * @param params + */ +export const batchGroup = (params, handleSuccess) => { + console.log('params', params); + createConfirm({ + iconType: 'warning', + title: '确认分组', + content: '是否分组选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.post({ url: Api.batchGroup, data: params }, { joinParamsToUrl: true }).then(() => { + handleSuccess(); + }); + }, + }); +}; //更新分组中间表 export const updateGroupUser = (params) => { diff --git a/src/views/cees/waiTeacher/CeesWaiTeacherList.vue b/src/views/cees/waiTeacher/CeesWaiTeacherList.vue index d918edc..f6f4a45 100644 --- a/src/views/cees/waiTeacher/CeesWaiTeacherList.vue +++ b/src/views/cees/waiTeacher/CeesWaiTeacherList.vue @@ -22,6 +22,10 @@ 删除 + + + 分组 + + @@ -92,6 +97,7 @@ import { ref, reactive, computed, unref, onMounted } from 'vue'; import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { useModal } from '/@/components/Modal'; + import GroupSelectModal from './components/GroupSelectModal.vue'; import { useListPage } from '/@/hooks/system/useListPage'; import CeesWaiTeacherModal from './components/CeesWaiTeacherModal.vue'; import { columns, searchFormSchema, superQuerySchema, updateGroupOptions } from './CeesWaiTeacher.data'; @@ -105,6 +111,7 @@ updateDormitory, cancelCheckIn, confirmCheckIn, + batchGroup, } from './CeesWaiTeacher.api'; import { selectBySex } from '/@/views/cees/dormitory/CeesDormitoryInfo.api'; import { downloadFile } from '/@/utils/common/renderUtils'; @@ -121,6 +128,8 @@ //注册model const [registerModal, { openModal }] = useModal(); + const [registerGroupModal, { openModal: openGroupModal }] = useModal(); + const groupModalRef = ref(null); //注册table数据 const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({ tableProps: { @@ -255,6 +264,29 @@ async function batchHandleDelete() { await batchDelete({ ids: selectedRowKeys.value }, handleSuccess); } + + /** + * 批量分组事件 + */ + async function batchHandleGroup() { + //if (selectedRowKeys.value.length === 0) { + // return; + //} + groupModalRef.value?.setGroupOptions(groupOptions.value); + openGroupModal(true); + } + /** + * 分组选好后的确认事件 + */ + async function handleGroupSuccess(groupId) { + console.log('asdfasd'); + try { + console.log('111'); + await batchGroup({ ids: selectedRowKeys.value, groupId }, handleSuccess); + } catch (error) { + console.error('批量分组失败:', error); + } + } /** * 成功回调 */ diff --git a/src/views/cees/waiTeacher/components/GroupSelectModal.vue b/src/views/cees/waiTeacher/components/GroupSelectModal.vue new file mode 100644 index 0000000..73b0483 --- /dev/null +++ b/src/views/cees/waiTeacher/components/GroupSelectModal.vue @@ -0,0 +1,84 @@ + + + + +