yuan
2026-09-26 b0c88e5984b6fb0cf67fee73570f81259dfb0c28
feat: 优化数量展示逻辑,增加高精度小数处理和格式化功能
已修改1个文件
60 ■■■■■ 文件已修改
src/views/inventoryManagement/stockReport/index.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockReport/index.vue
@@ -179,19 +179,35 @@
          <el-table-column label="入库数量"
                           prop="totalStockIn"
                           align="center"
                           v-if="searchForm.reportType === 'inout'" />
                           v-if="searchForm.reportType === 'inout'">
            <template #default="scope">
              {{ formatQty(scope.row.totalStockIn) }}
            </template>
          </el-table-column>
          <el-table-column label="入库数量"
                           prop="stockInNum"
                           align="center"
                           v-else />
                           v-else>
            <template #default="scope">
              {{ formatQty(scope.row.stockInNum) }}
            </template>
          </el-table-column>
          <el-table-column label="出库数量"
                           prop="totalStockOut"
                           width="100"
                           align="center"
                           v-if="searchForm.reportType === 'inout'" />
                           v-if="searchForm.reportType === 'inout'">
            <template #default="scope">
              {{ formatQty(scope.row.totalStockOut) }}
            </template>
          </el-table-column>
          <el-table-column label="现在库存"
                           prop="currentStock"
                           align="center" />
                           align="center">
            <template #default="scope">
              {{ formatQty(scope.row.currentStock) }}
            </template>
          </el-table-column>
          <el-table-column label="来源"
                           prop="recordType"
                           v-if="searchForm.reportType !== 'inout'"
@@ -267,11 +283,43 @@
  };
  const getDate = val =>{
    console.log(val)
    if(!val){
      return "--"
    }
    return dayjs(val).isValid() ? dayjs(val).format('YYYY‑MM‑DD') : '--'
    return dayjs(val).isValid() ? dayjs(val).format('YYYY-MM-DD') : '--'
  }
  // 数量展示:后端返回的是高精度小数(如 2.00000000),
  // 这里去掉无意义的末尾 0,实际有几位小数就展示几位
  const formatQty = val => {
    if (val === null || val === undefined || val === "") {
      return "--";
    }
    // 非数字原样展示,避免出现 NaN
    if (typeof val === "number" && !Number.isFinite(val)) {
      return "--";
    }
    let str = String(val).trim();
    if (!/^[-+]?\d+(\.\d+)?$/.test(str)) {
      // 科学计数法等特殊格式交给 Number 处理
      const num = Number(str);
      if (Number.isNaN(num)) {
        return str;
      }
      str = String(num);
      // 极小值会被转成 1e-7 这类科学计数法,展开成普通小数
      if (/e/i.test(str)) {
        str = num.toFixed(20);
      }
    }
    if (str.includes(".")) {
      str = str.replace(/0+$/, "").replace(/\.$/, "");
    }
    // 处理 -0 / +0
    if (/^[-+]?0$/.test(str)) {
      return "0";
    }
    return str;
  }
  // 获取来源类型选项