zhou zhou
7 小时以前 a49845f424ae5b1e43e391837a55c43ce07ea62d
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 {