import { ProjectGroupData, ProjectGroupInfo, CreateProjectGroupQuery, CreateProjectGroupData, UpdateProjectGroupQuery, RemoveProjectGroupQuery, NotSaveGroupId, BizGroupTypeEnum, } from '@easytwin/core'; import apis from '@/constants/api.swagger-constants'; import { request } from '@/utils'; /** *************************************************************************************************** ****************************************** base *************************************************** *************************************************************************************************** */ /** * 更新业务分组 * @author xuek * @since 2022-01-25 * @param { UpdateProjectGroupQuery } query * @returns { Promise } */ export async function update(query: UpdateProjectGroupQuery): Promise { try { if (query.name === undefined) return; return await request(apis.projectGroupPatch, { params: { id: query.id, }, body: { name: query.name, }, }); } catch (error) { console.error('updateProjectGroup', error); return Promise.reject('更新分组失败'); } } /** * 删除业务分组 * @author xuek * @since 2022-01-20 * @param { RemoveProjectGroupQuery } query * @returns { Promise } */ export async function remove(query: RemoveProjectGroupQuery): Promise { try { const { ids } = query; return await Promise.all( ids.map(async (id) => { await request(apis.projectGroupDelete, { params: { id, }, }); }), ); } catch (error) { console.error('removeProjectGroup', error); return Promise.reject('删除分组失败'); } } /** *************************************************************************************************** ****************************************** project ************************************************ *************************************************************************************************** */ /** * 创建项目业务分组 * @author xuek * @since 2022-01-20 * @param { CreateProjectGroupQuery } query * @returns { Promise } */ // TODO: 替换为服务端接口 export async function createForProject( query: CreateProjectGroupQuery, ): Promise { try { const { name } = query; const result = await request(apis.projectGroupsPost, { body: { name }, }); return result; } catch (error) { console.error('createProjectGroup', error); return Promise.reject('查询分组失败'); } } /** * 获取项目业务分组列表 * @author xuek * @since 2022-01-20 * @lastUpdatedBy xuek * @lastUpdatedAt 2022-02-24 * @returns { Promise } */ // TODO: 替换为服务端接口 export async function getProjectGroupList(): Promise { try { const list: ProjectGroupData[] = await request(apis.projectGroupsGet); const allCount = list.reduce((prev, current) => current.count + prev, 0); const system = list.find((item) => item.type === 'system'); const custom = list .filter((item) => item.type === 'custom') .map((item) => ({ ...item, dataId: item.id })) .sort((a, b) => b.rank - a.rank); if (system) { return [ { ...system, id: NotSaveGroupId.ALL_GROUP_FOR_PROJECT, dataId: system.id, name: '全部项目', count: allCount, }, { ...system, id: NotSaveGroupId.NOT_GROUP_FOR_PROJECT, dataId: system.id, name: '未命名', }, ...custom, ]; } return custom; } catch (error) { console.error('getProjectGroupListForProject', error); return Promise.reject('查询分组失败'); } }