cl
2026-04-21 c55a86895cabc3e91c2e7aa4eab099a7287e0ae6
rsf-admin/src/utils/common.js
@@ -1,12 +1,15 @@
/** 库存/数量显示:保留最多6位小数,去掉末尾多余的0(不强制补零) */
/** 前端数量显示:统一保留2位小数(仅展示,后端不变) */
export const formatQuantity = (value) => {
    if (value == null || value === '') return '0';
    if (value == null || value === '') return '0.00';
    const n = Number(value);
    if (Number.isNaN(n)) return '0';
    if (n < 0) return '0';
    return n % 1 === 0 ? String(n) : n.toFixed(6).replace(/\.?0+$/, '');
    if (Number.isNaN(n)) return '0.00';
    if (n < 0) return '0.00';
    return n.toFixed(2);
};
/** 用于 react-admin NumberField 的数量展示 options(2位小数) */
export const QTY_NUMBER_OPTIONS = { minimumFractionDigits: 2, maximumFractionDigits: 2 };
/** 校验最多 N 位小数,用于数量类字段;超过时返回错误信息并阻止提交 */
export const maxDecimalPlaces = (maxDecimals, message) => {
@@ -38,10 +41,15 @@
    const navMenus = [];
    const traverse = (nodes) => {
        nodes.forEach((node) => {
            if (!node.children) {
                navMenus.push(node);
            // 叶子:无子或 children 为空数组;仅收集有 component 的节点(页面资源)
            const children = node.children;
            const hasChildren = Array.isArray(children) && children.length > 0;
            if (!hasChildren) {
                if (node.component) {
                    navMenus.push(node);
                }
            } else {
                traverse(node.children);
                traverse(children);
            }
        });
    };