import type { OfficeDocumentFile } from '#/components/GlobalOfficeDocumentModal/types';
|
|
import { defHttp } from '#/api/request';
|
|
export type TemplateStatus = 'DRAFT' | 'PUBLISHED';
|
export type TemplateEnabled = 'disabled' | 'enabled';
|
export type HealthSeverity = 'ERROR' | 'INFO' | 'WARNING';
|
export type TemplateHealthAction = 'CONFIRM_REMOVE' | 'LOCATE' | 'REPAIR';
|
|
export interface TemplatePageQuery {
|
bizEnabled?: TemplateEnabled;
|
bizStatus?: TemplateStatus;
|
currentPage: number;
|
keyword?: string;
|
mubanBianhao?: string;
|
mubanFenlei?: string;
|
pageSize: number;
|
versionScope?: 'ALL' | 'LATEST';
|
}
|
|
export interface TemplateCategoryTreeNode {
|
children?: TemplateCategoryTreeNode[];
|
f_id: string;
|
fenlei_miaoshu?: string;
|
fenlei_mingcheng: string;
|
shangji_fenlei?: string;
|
}
|
|
export interface TemplateListItem {
|
bizEnabled: TemplateEnabled;
|
bizStatus: TemplateStatus;
|
chuangjianShijian?: string;
|
gengxinShijian?: string;
|
id: string;
|
jianyanXiangmu?: string;
|
jianyanXiangmuMingcheng?: string;
|
mubanBanben: string;
|
mubanBianhao: string;
|
mubanFenlei?: string;
|
mubanFenleiMingcheng?: string;
|
mubanFile?: OfficeDocumentFile[] | string;
|
shengxiaoRiqi?: string;
|
shifouDangqian?: boolean;
|
ziduanShu?: number;
|
}
|
|
export interface TemplateCatalogItem {
|
bizEnabled?: TemplateEnabled;
|
bizStatus?: TemplateStatus;
|
chuangjianShijian?: string;
|
gengxinShijian?: string;
|
jianyanXiangmu?: string;
|
jianyanXiangmuMingcheng?: string;
|
mubanBianhao: string;
|
mubanFenlei?: string;
|
mubanFenleiMingcheng?: string;
|
shengxiaoMubanBanben?: string;
|
shengxiaoMubanId?: string;
|
shengxiaoRiqi?: string;
|
ziduanShu?: number;
|
}
|
|
export interface TemplateDetail extends TemplateListItem {
|
chuangjianRenyuan?: string;
|
chuangjianRenyuanMingcheng?: string;
|
laiyuanMubanId?: string;
|
mubanMingcheng?: string;
|
shengbanCaozuoBianma?: string;
|
shiyanBuzhou?: string;
|
}
|
|
export interface TemplatePage {
|
list: TemplateListItem[];
|
pagination: { currentPage: number; pageSize: number; total: number };
|
}
|
|
export interface TemplateDirectoryPage {
|
list: TemplateCatalogItem[];
|
pagination: { currentPage: number; pageSize: number; total: number };
|
}
|
|
export interface CreateTemplateVersionParams {
|
mubanBanben: string;
|
shengbanCaozuoBianma: string;
|
shengxiaoRiqi: string;
|
}
|
|
export interface HealthDependency {
|
code?: string;
|
label?: string;
|
message: string;
|
}
|
|
export interface TemplateHealthDiagnostic {
|
actions?: TemplateHealthAction[];
|
bindingId?: string;
|
code: string;
|
controlTag?: string;
|
dependencies?: HealthDependency[];
|
expectedVersion?: number;
|
fieldDisplayName?: string;
|
message: string;
|
partName?: string;
|
severity: HealthSeverity;
|
}
|
|
export interface TemplateHealthReport {
|
diagnostics: TemplateHealthDiagnostic[];
|
fileId: string;
|
templateId: string;
|
}
|
|
export interface TemplateStep {
|
id: string;
|
name: string;
|
order: number;
|
}
|
|
export interface TemplateStepConfiguration {
|
singleStep: boolean;
|
steps: TemplateStep[];
|
}
|
|
export interface SaveTemplateStepsParams {
|
stepMigrations: Record<string, string>;
|
steps: Array<{ id?: string; name: string }>;
|
}
|
|
interface ApiResult<T> {
|
code: number;
|
data: T;
|
msg?: string;
|
}
|
|
const TEMPLATE_CATALOG_PREFIX = '/api/eln/templateCatalog';
|
const TEMPLATE_CATEGORY_TREE_INTERFACE_ID = '855428577502430981';
|
|
export function getTemplateCategoryTree() {
|
return defHttp.post<ApiResult<string | TemplateCategoryTreeNode[]>>({
|
data: { paramList: [{ field: 'currentId', sourceType: 3 }] },
|
url: `/api/system/DataInterface/${TEMPLATE_CATEGORY_TREE_INTERFACE_ID}/Actions/Preview`,
|
});
|
}
|
|
export function getTemplatePage(data: TemplatePageQuery) {
|
return defHttp.get<ApiResult<TemplatePage>>({ data, url: TEMPLATE_CATALOG_PREFIX });
|
}
|
|
export function getTemplateDirectory(data: TemplatePageQuery) {
|
return defHttp.get<ApiResult<TemplateDirectoryPage>>({ data, url: `${TEMPLATE_CATALOG_PREFIX}/directory` });
|
}
|
|
export function getTemplateDetail(templateId: string) {
|
return defHttp.get<ApiResult<TemplateDetail>>({ url: `${TEMPLATE_CATALOG_PREFIX}/${templateId}` });
|
}
|
|
export function createTemplateVersion(sourceTemplateId: string, data: CreateTemplateVersionParams) {
|
return defHttp.post<ApiResult<TemplateDetail>>({ data, url: `${TEMPLATE_CATALOG_PREFIX}/${sourceTemplateId}/versions` }, { errorMessageMode: 'none' });
|
}
|
|
export function getTemplateHealth(templateId: string) {
|
return defHttp.get<ApiResult<TemplateHealthReport>>({ url: `${TEMPLATE_CATALOG_PREFIX}/${templateId}/health` });
|
}
|
|
export function getTemplateSteps(templateId: string) {
|
return defHttp.get<ApiResult<TemplateStepConfiguration>>({ url: `${TEMPLATE_CATALOG_PREFIX}/${templateId}/steps` });
|
}
|
|
export function saveTemplateSteps(templateId: string, data: SaveTemplateStepsParams) {
|
return defHttp.put<ApiResult<TemplateStepConfiguration>>({ data, url: `${TEMPLATE_CATALOG_PREFIX}/${templateId}/steps` });
|
}
|
|
export function publishTemplate(templateId: string, reason?: string) {
|
return defHttp.post<ApiResult<void>>({ data: { reason }, url: `${TEMPLATE_CATALOG_PREFIX}/${templateId}/publish` }, { errorMessageMode: 'none' });
|
}
|
|
export function enableTemplate(templateId: string, reason: string) {
|
return defHttp.post<ApiResult<void>>({ data: { reason }, url: `${TEMPLATE_CATALOG_PREFIX}/${templateId}/enable` });
|
}
|
|
export function disableTemplate(templateId: string, reason: string) {
|
return defHttp.post<ApiResult<void>>({ data: { reason }, url: `${TEMPLATE_CATALOG_PREFIX}/${templateId}/disable` });
|
}
|
|
export function switchCurrentTemplate(templateCode: string, templateId: string, reason: string) {
|
return defHttp.post<ApiResult<void>>({
|
data: { reason, templateCode, templateId },
|
url: `${TEMPLATE_CATALOG_PREFIX}/currentVersion`,
|
});
|
}
|
|
export function confirmRemoveMissing(bindingId: string, data: { clientReportedMissing: true; expectedVersion: number; operationCode: string; reason: string }) {
|
return defHttp.post<ApiResult<void>>({ data, url: `${TEMPLATE_CATALOG_PREFIX}/bindings/${bindingId}/confirmRemoveMissing` });
|
}
|