From a49845f424ae5b1e43e391837a55c43ce07ea62d Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期三, 01 四月 2026 15:02:47 +0800
Subject: [PATCH] #前端

---
 rsf-design/src/views/basic-info/loc/locPage.helpers.js |  225 ++++++++++++++++----------------------------------------
 1 files changed, 64 insertions(+), 161 deletions(-)

diff --git a/rsf-design/src/views/basic-info/loc/locPage.helpers.js b/rsf-design/src/views/basic-info/loc/locPage.helpers.js
index 333ddf8..c85fc74 100644
--- a/rsf-design/src/views/basic-info/loc/locPage.helpers.js
+++ b/rsf-design/src/views/basic-info/loc/locPage.helpers.js
@@ -12,6 +12,12 @@
   F: { text: '鍦ㄥ簱', type: 'primary' }
 }
 
+const LOC_ID_FIELDS = ['id', 'version', 'warehouseId', 'areaId']
+const LOC_SIZE_FIELDS = ['length', 'height', 'width']
+const LOC_POSITION_FIELDS = ['row', 'col', 'lev', 'channel']
+const LOC_CAPACITY_FIELDS = ['maxParts', 'maxPack']
+const LOC_OPTIONAL_NUMBER_FIELDS = [...LOC_ID_FIELDS, ...LOC_SIZE_FIELDS, ...LOC_POSITION_FIELDS, ...LOC_CAPACITY_FIELDS]
+
 export const LOC_REPORT_TITLE = '搴撲綅鎶ヨ〃'
 export const LOC_REPORT_STYLE = {
   titleAlign: 'center',
@@ -25,12 +31,32 @@
   return String(value ?? '').trim()
 }
 
+function hasValue(value) {
+  return value !== '' && value !== null && value !== undefined
+}
+
 function normalizeNumber(value, fallback = void 0) {
-  if (value === '' || value === null || value === undefined) {
+  if (!hasValue(value)) {
     return fallback
   }
   const parsed = Number(value)
   return Number.isNaN(parsed) ? fallback : parsed
+}
+
+function toOptionalNumber(value) {
+  return hasValue(value) ? Number(value) : void 0
+}
+
+function toNumberOr(value, fallback) {
+  return hasValue(value) ? Number(value) : fallback
+}
+
+function buildNumberField(key, value) {
+  return hasValue(value) ? { [key]: Number(value) } : {}
+}
+
+function buildOptionalNumberFields(source = {}, fields = []) {
+  return Object.fromEntries(fields.map((field) => [field, toOptionalNumber(source[field])]).filter(([, value]) => hasValue(value)))
 }
 
 function normalizeFlagText(value) {
@@ -45,19 +71,27 @@
 
 function normalizeTypeIds(typeIds = []) {
   if (Array.isArray(typeIds)) {
-    return typeIds
-      .map((item) => normalizeNumber(item, void 0))
-      .filter((item) => item !== void 0 && item !== null)
+    return typeIds.map((item) => normalizeNumber(item, void 0)).filter(hasValue)
   }
 
   if (typeof typeIds === 'string' && typeIds.trim()) {
-    return typeIds
-      .split(',')
-      .map((item) => normalizeNumber(item, void 0))
-      .filter((item) => item !== void 0 && item !== null)
+    return typeIds.split(',').map((item) => normalizeNumber(item, void 0)).filter(hasValue)
   }
 
   return []
+}
+
+export function filterLocAreaOptionsByWarehouse(options = [], warehouseId) {
+  if (!warehouseId) {
+    return options
+  }
+
+  return options.filter((item) => {
+    if (!hasValue(item?.warehouseId)) {
+      return true
+    }
+    return Number(item.warehouseId) === Number(warehouseId)
+  })
 }
 
 export function createLocSearchState() {
@@ -158,43 +192,20 @@
 export function buildLocSearchParams(params = {}) {
   const searchParams = {
     condition: normalizeText(params.condition),
-    warehouseId:
-      params.warehouseId !== undefined && params.warehouseId !== null && params.warehouseId !== ''
-        ? Number(params.warehouseId)
-        : void 0,
-    areaId:
-      params.areaId !== undefined && params.areaId !== null && params.areaId !== ''
-        ? Number(params.areaId)
-        : void 0,
+    warehouseId: toOptionalNumber(params.warehouseId),
+    areaId: toOptionalNumber(params.areaId),
     code: normalizeText(params.code),
     useStatus: normalizeText(params.useStatus),
-    row:
-      params.row !== undefined && params.row !== null && params.row !== ''
-        ? Number(params.row)
-        : void 0,
-    col:
-      params.col !== undefined && params.col !== null && params.col !== ''
-        ? Number(params.col)
-        : void 0,
-    lev:
-      params.lev !== undefined && params.lev !== null && params.lev !== ''
-        ? Number(params.lev)
-        : void 0,
-    channel:
-      params.channel !== undefined && params.channel !== null && params.channel !== ''
-        ? Number(params.channel)
-        : void 0,
-    status:
-      params.status !== undefined && params.status !== null && params.status !== ''
-        ? Number(params.status)
-        : void 0,
+    row: toOptionalNumber(params.row),
+    col: toOptionalNumber(params.col),
+    lev: toOptionalNumber(params.lev),
+    channel: toOptionalNumber(params.channel),
+    status: toOptionalNumber(params.status),
     barcode: normalizeText(params.barcode),
     memo: normalizeText(params.memo)
   }
 
-  return Object.fromEntries(
-    Object.entries(searchParams).filter(([, value]) => value !== '' && value !== void 0 && value !== null)
-  )
+  return Object.fromEntries(Object.entries(searchParams).filter(([, value]) => hasValue(value)))
 }
 
 export function buildLocPageQueryParams(params = {}) {
@@ -207,62 +218,18 @@
 
 export function buildLocSavePayload(formData = {}) {
   return {
-    ...(formData.id !== undefined && formData.id !== null && formData.id !== ''
-      ? { id: Number(formData.id) }
-      : {}),
-    ...(formData.version !== undefined && formData.version !== null && formData.version !== ''
-      ? { version: Number(formData.version) }
-      : {}),
-    ...(formData.warehouseId !== undefined && formData.warehouseId !== null && formData.warehouseId !== ''
-      ? { warehouseId: Number(formData.warehouseId) }
-      : {}),
-    ...(formData.areaId !== undefined && formData.areaId !== null && formData.areaId !== ''
-      ? { areaId: Number(formData.areaId) }
-      : {}),
+    ...buildOptionalNumberFields(formData, LOC_ID_FIELDS),
     code: normalizeText(formData.code) || '',
     typeIds: normalizeTypeIds(formData.typeIds),
-    ...(formData.flagLogic !== undefined && formData.flagLogic !== null && formData.flagLogic !== ''
-      ? { flagLogic: Number(formData.flagLogic) }
-      : {}),
+    ...buildNumberField('flagLogic', formData.flagLogic),
     fucAtrrs: normalizeText(formData.fucAtrrs) || '',
     barcode: normalizeText(formData.barcode) || '',
     unit: normalizeText(formData.unit) || '',
-    ...(formData.length !== undefined && formData.length !== null && formData.length !== ''
-      ? { length: Number(formData.length) }
-      : {}),
-    ...(formData.height !== undefined && formData.height !== null && formData.height !== ''
-      ? { height: Number(formData.height) }
-      : {}),
-    ...(formData.width !== undefined && formData.width !== null && formData.width !== ''
-      ? { width: Number(formData.width) }
-      : {}),
-    ...(formData.row !== undefined && formData.row !== null && formData.row !== ''
-      ? { row: Number(formData.row) }
-      : {}),
-    ...(formData.col !== undefined && formData.col !== null && formData.col !== ''
-      ? { col: Number(formData.col) }
-      : {}),
-    ...(formData.lev !== undefined && formData.lev !== null && formData.lev !== ''
-      ? { lev: Number(formData.lev) }
-      : {}),
-    ...(formData.channel !== undefined && formData.channel !== null && formData.channel !== ''
-      ? { channel: Number(formData.channel) }
-      : {}),
-    ...(formData.maxParts !== undefined && formData.maxParts !== null && formData.maxParts !== ''
-      ? { maxParts: Number(formData.maxParts) }
-      : {}),
-    ...(formData.maxPack !== undefined && formData.maxPack !== null && formData.maxPack !== ''
-      ? { maxPack: Number(formData.maxPack) }
-      : {}),
+    ...buildOptionalNumberFields(formData, [...LOC_SIZE_FIELDS, ...LOC_POSITION_FIELDS, ...LOC_CAPACITY_FIELDS]),
     useStatus: normalizeText(formData.useStatus) || 'O',
-    ...(formData.flagLabelMange !== undefined && formData.flagLabelMange !== null && formData.flagLabelMange !== ''
-      ? { flagLabelMange: Number(formData.flagLabelMange) }
-      : {}),
+    ...buildNumberField('flagLabelMange', formData.flagLabelMange),
     locAttrs: normalizeText(formData.locAttrs) || '',
-    status:
-      formData.status !== undefined && formData.status !== null && formData.status !== ''
-        ? Number(formData.status)
-        : 1,
+    status: toNumberOr(formData.status, 1),
     memo: normalizeText(formData.memo) || ''
   }
 }
@@ -270,70 +237,17 @@
 export function buildLocDialogModel(record = {}) {
   return {
     ...createLocFormState(),
-    ...(record.id !== undefined && record.id !== null && record.id !== '' ? { id: Number(record.id) } : {}),
-    ...(record.version !== undefined && record.version !== null && record.version !== ''
-      ? { version: Number(record.version) }
-      : {}),
-    warehouseId:
-      record.warehouseId !== undefined && record.warehouseId !== null && record.warehouseId !== ''
-        ? Number(record.warehouseId)
-        : void 0,
-    areaId:
-      record.areaId !== undefined && record.areaId !== null && record.areaId !== ''
-        ? Number(record.areaId)
-        : void 0,
+    ...buildOptionalNumberFields(record, LOC_OPTIONAL_NUMBER_FIELDS),
     code: normalizeText(record.code || ''),
     typeIds: normalizeTypeIds(record.typeIds ?? record.type ?? ''),
-    flagLogic:
-      record.flagLogic !== undefined && record.flagLogic !== null && record.flagLogic !== ''
-        ? Number(record.flagLogic)
-        : 0,
+    flagLogic: toNumberOr(record.flagLogic, 0),
     fucAtrrs: normalizeText(record.fucAtrrs || ''),
     barcode: normalizeText(record.barcode || ''),
     unit: normalizeText(record.unit || ''),
-    length:
-      record.length !== undefined && record.length !== null && record.length !== ''
-        ? Number(record.length)
-        : void 0,
-    height:
-      record.height !== undefined && record.height !== null && record.height !== ''
-        ? Number(record.height)
-        : void 0,
-    width:
-      record.width !== undefined && record.width !== null && record.width !== ''
-        ? Number(record.width)
-        : void 0,
-    row:
-      record.row !== undefined && record.row !== null && record.row !== ''
-        ? Number(record.row)
-        : void 0,
-    col:
-      record.col !== undefined && record.col !== null && record.col !== ''
-        ? Number(record.col)
-        : void 0,
-    lev:
-      record.lev !== undefined && record.lev !== null && record.lev !== ''
-        ? Number(record.lev)
-        : void 0,
-    channel:
-      record.channel !== undefined && record.channel !== null && record.channel !== ''
-        ? Number(record.channel)
-        : void 0,
-    maxParts:
-      record.maxParts !== undefined && record.maxParts !== null && record.maxParts !== ''
-        ? Number(record.maxParts)
-        : void 0,
-    maxPack:
-      record.maxPack !== undefined && record.maxPack !== null && record.maxPack !== ''
-        ? Number(record.maxPack)
-        : void 0,
     useStatus: normalizeText(record.useStatus || 'O') || 'O',
-    flagLabelMange:
-      record.flagLabelMange !== undefined && record.flagLabelMange !== null && record.flagLabelMange !== ''
-        ? Number(record.flagLabelMange)
-        : 0,
+    flagLabelMange: toNumberOr(record.flagLabelMange, 0),
     locAttrs: normalizeText(record.locAttrs || ''),
-    status: record.status !== undefined && record.status !== null ? Number(record.status) : 1,
+    status: toNumberOr(record.status, 1),
     memo: normalizeText(record.memo || '')
   }
 }
@@ -344,6 +258,7 @@
   const typeIds = normalizeTypeIds(record.typeIds ?? record.type ?? '')
   return {
     ...record,
+    ...buildOptionalNumberFields(record, [...LOC_SIZE_FIELDS, ...LOC_POSITION_FIELDS, ...LOC_CAPACITY_FIELDS]),
     warehouseName: normalizeText(record.warehouseId$ || record.warehouseName || ''),
     areaName: normalizeText(record.areaId$ || record.areaName || ''),
     typeIds,
@@ -361,15 +276,6 @@
     statusText: statusMeta.text,
     statusType: statusMeta.type,
     statusBool: record.statusBool !== void 0 ? Boolean(record.statusBool) : statusMeta.bool,
-    row: record.row !== undefined && record.row !== null ? Number(record.row) : void 0,
-    col: record.col !== undefined && record.col !== null ? Number(record.col) : void 0,
-    lev: record.lev !== undefined && record.lev !== null ? Number(record.lev) : void 0,
-    channel: record.channel !== undefined && record.channel !== null ? Number(record.channel) : void 0,
-    length: record.length !== undefined && record.length !== null ? Number(record.length) : void 0,
-    height: record.height !== undefined && record.height !== null ? Number(record.height) : void 0,
-    width: record.width !== undefined && record.width !== null ? Number(record.width) : void 0,
-    maxParts: record.maxParts !== undefined && record.maxParts !== null ? Number(record.maxParts) : void 0,
-    maxPack: record.maxPack !== undefined && record.maxPack !== null ? Number(record.maxPack) : void 0,
     createByText: normalizeText(record.createBy$ || record.createByText || ''),
     createTimeText: normalizeText(record.createTime$ || record.createTime || ''),
     updateByText: normalizeText(record.updateBy$ || record.updateByText || ''),
@@ -417,7 +323,7 @@
         return null
       }
       const value = item.id ?? item.value
-      if (value === void 0 || value === null || value === '') {
+      if (!hasValue(value)) {
         return null
       }
       return {
@@ -439,16 +345,13 @@
         return null
       }
       const value = item.id ?? item.value
-      if (value === void 0 || value === null || value === '') {
+      if (!hasValue(value)) {
         return null
       }
       return {
         value: Number(value),
         label: normalizeText(item.name || item.code || `搴撳尯 ${value}`),
-        warehouseId:
-          item.warehouseId !== undefined && item.warehouseId !== null && item.warehouseId !== ''
-            ? Number(item.warehouseId)
-            : void 0
+        warehouseId: toOptionalNumber(item.warehouseId)
       }
     })
     .filter(Boolean)
@@ -465,7 +368,7 @@
         return null
       }
       const value = item.id ?? item.value
-      if (value === void 0 || value === null || value === '') {
+      if (!hasValue(value)) {
         return null
       }
       return {

--
Gitblit v1.9.1