import { request } from '@eciol/request'; import { replaceVariables } from '@eciol/shared'; import XEUtils from 'xe-utils'; import { resolveSetting } from '@/components'; import type { CommonService } from './typing'; enum Api { GetTemplate = '/api/Common/Template', SaveTemplate = '/api/Common/Template', EditTemplate = '/api/Common/Template/{id}', DeleteTemplate = '/api/Common/Template/{id}', StartNpmnServe = '/service-activiti/task/start', } /** * 获取列表过滤项 */ async function getTemplate( params: CommonService.GetTemplateParams, ): Promise { const temp = await request.get( { url: Api.GetTemplate, params, }, { showLoading: true, }, ); const _temp = (temp ?? []).map((item) => ({ ...item, settings: resolveSetting(XEUtils.toStringJSON(item.settings)), })); const defaultTemp = _temp.find((item) => item.isDefault) ?? _temp[0] ?? {}; return { defaultTemplate: defaultTemp, templateList: _temp, }; } /** * 保存列表过滤项模板 */ function saveTemplate(data: CommonService.TemplateItem) { return request.post( { url: Api.SaveTemplate, data, }, { showLoading: true, loadingTip: 'SET', operationType: 'SET', successMessageMode: 'message', }, ); } /** * 编辑列表过滤项模板 */ function editTemplate(data: CommonService.TemplateItem) { return request.put( { url: replaceVariables(Api.EditTemplate, { id: data.id }), data, }, { showLoading: true, loadingTip: 'EDIT', operationType: 'EDIT', successMessageMode: 'message', }, ); } /** * 删除列表过滤项模板 */ function deleteTemplate(id: string) { return request.delete( { url: replaceVariables(Api.DeleteTemplate, { id }), data: { id }, }, { showLoading: true, loadingTip: 'DELETE', operationType: 'DELETE', successMessageMode: 'message', }, ); } /** * @event {function} startNpmnServe * @alias 获取流程绑定的表单 * @param bpmnId */ const startNpmnServe = (data: any) => { return request.post( { url: Api.StartNpmnServe, data, }, { showLoading: true, joinPrefix: false, isTransformResponse: false, }, ); }; /** * @description 根据指定角色ID获取有该角色的职工列表 * @param token * @param data * @returns */ const getEmpsByRole = (data: { scope: string | number; roleId: string | number }) => { return request.post( { url: `/system-admin/openapi/load-emps/${data.scope}/${data.roleId}/`, }, { joinPrefix: false, }, ); }; export { deleteTemplate, editTemplate, getEmpsByRole, getTemplate, saveTemplate, startNpmnServe }; export type { CommonService } from './typing';