Files
cn-rdms-web/src/service/api/product-shared.ts

84 lines
2.6 KiB
TypeScript

import { normalizeNullableStringId, normalizeStringId } from './shared';
type ProductStatusCode = Api.Product.ProductStatusCode;
type ProductStatusActionCode = Api.Product.ProductStatusActionCode;
interface ProductSettingsResponse {
baseInfo: {
id: string | number;
code: string;
directionCode: string;
name: string;
managerUserId?: string | number | null;
managerUserNickname?: string | null;
description?: string | null;
statusCode: ProductStatusCode;
lastStatusReason?: string | null;
};
lifecycle: {
statusCode: ProductStatusCode;
lastStatusReason?: string | null;
availableActions?: Array<{
actionCode: ProductStatusActionCode;
actionName: string;
needReason: boolean;
}> | null;
};
}
interface ProductMemberResponse {
id: string | number;
userId: string | number;
userNickname: string;
roleId: string | number;
roleName: string;
roleCode: string;
managerFlag: boolean;
status: 0 | 1;
joinedTime: string;
leftTime?: string | null;
remark?: string | null;
}
export function normalizeProductSettings(response: ProductSettingsResponse): Api.Product.ProductSettings {
return {
baseInfo: {
id: normalizeStringId(response.baseInfo.id),
code: response.baseInfo.code || '',
directionCode: response.baseInfo.directionCode || '',
name: response.baseInfo.name || '',
managerUserId: normalizeNullableStringId(response.baseInfo.managerUserId) ?? '',
managerUserNickname: response.baseInfo.managerUserNickname || '',
description: response.baseInfo.description ?? null,
statusCode: response.baseInfo.statusCode,
lastStatusReason: response.baseInfo.lastStatusReason ?? null
},
lifecycle: {
statusCode: response.lifecycle.statusCode,
lastStatusReason: response.lifecycle.lastStatusReason ?? null,
availableActions:
response.lifecycle.availableActions?.map(item => ({
actionCode: item.actionCode,
actionName: item.actionName,
needReason: item.needReason
})) ?? []
}
};
}
export function normalizeProductMember(response: ProductMemberResponse): Api.Product.ProductMember {
return {
id: normalizeStringId(response.id),
userId: normalizeStringId(response.userId),
userNickname: response.userNickname || '',
roleId: normalizeStringId(response.roleId),
roleName: response.roleName || '',
roleCode: response.roleCode || '',
managerFlag: Boolean(response.managerFlag),
status: response.status,
joinedTime: response.joinedTime,
leftTime: response.leftTime ?? null,
remark: response.remark ?? null
};
}