30 行
964 B
TypeScript
30 行
964 B
TypeScript
import type { ReimbursementStatus } from "../api/reimbursements";
|
|
|
|
type ReimbursementDisplayInput = {
|
|
formNumber?: string | null;
|
|
id?: string | null;
|
|
status?: ReimbursementStatus | string | null;
|
|
reimbursementDate?: string | null;
|
|
createdAt?: string | null;
|
|
};
|
|
|
|
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
|
|
export function isUuidLike(value: string | null | undefined) {
|
|
return Boolean(value && UUID_PATTERN.test(value));
|
|
}
|
|
|
|
export function resolveReimbursementDisplayCode(item: ReimbursementDisplayInput) {
|
|
const formNumber = item.formNumber?.trim();
|
|
if (formNumber && !isUuidLike(formNumber)) {
|
|
return formNumber;
|
|
}
|
|
|
|
const date = item.reimbursementDate ?? item.createdAt?.slice(0, 10) ?? "";
|
|
if (item.status === "draft" || item.status === "rejected") {
|
|
return date ? `草稿单 · ${date}` : "草稿单";
|
|
}
|
|
|
|
return date ? `未编号报销 · ${date}` : "未编号报销";
|
|
}
|