export interface MaterialLike {
|
code?: string;
|
name?: string;
|
specification?: string;
|
unitMeasureName?: string;
|
categoryName?: string;
|
itemTypeName?: string;
|
itemOrProduct?: string | number;
|
itemCode?: string;
|
itemName?: string;
|
itemSpecification?: string;
|
itemUnitName?: string;
|
productCode?: string;
|
productName?: string;
|
productSpecification?: string;
|
productUnitName?: string;
|
}
|
|
function value(item: MaterialLike | undefined, keys: Array<keyof MaterialLike>) {
|
return keys.map(key => item?.[key]).find(Boolean);
|
}
|
|
function itemTypeText(value?: string | number) {
|
if (value === undefined || value === "") return "";
|
if (String(value) === "1") return "物料";
|
if (String(value) === "2") return "产品";
|
return String(value);
|
}
|
|
export function materialOptionText(item?: MaterialLike, fallback = "请选择物料") {
|
if (!item) return fallback;
|
const code = value(item, ["code", "itemCode", "productCode"]) || "--";
|
const name = value(item, ["name", "itemName", "productName"]) || "--";
|
const specification = value(item, ["specification", "itemSpecification", "productSpecification"]) || "无规格";
|
const unit = value(item, ["unitMeasureName", "itemUnitName", "productUnitName"]) || "无单位";
|
const type = itemTypeText(item.itemOrProduct);
|
const category = value(item, ["categoryName", "itemTypeName"]);
|
return [String(code), String(name), String(specification), String(unit), type, category ? String(category) : ""]
|
.filter(Boolean)
|
.join(" / ");
|
}
|
|
export function materialSelectedText(item?: MaterialLike, fallback = "请选择物料") {
|
return materialOptionText(item, fallback);
|
}
|