zhou zhou
2026-04-17 029559f7cedded183bd1fbd09a5ebb576a9fa21d
rsf-design/src/views/basic-info/bas-station-area/basStationAreaPage.helpers.js
@@ -1,30 +1,21 @@
const STATUS_META = {
  1: { text: '正常', type: 'success', bool: true },
  0: { text: '冻结', type: 'danger', bool: false }
}
import { $t } from '@/locales'
const TYPE_OPTIONS = [
  { label: '智能站点', value: 0 },
  { label: '普通站点', value: 1 }
]
const BINARY_OPTIONS = [
  { label: '否', value: 0 },
  { label: '是', value: 1 }
]
const STATUS_OPTIONS = [
  { label: '正常', value: 1 },
  { label: '冻结', value: 0 }
]
export const BAS_STATION_AREA_REPORT_TITLE = '站点区域报表'
export const BAS_STATION_AREA_REPORT_STYLE = {
  titleAlign: 'center',
  titleLevel: 'strong',
  orientation: 'portrait',
  density: 'compact',
  showSequence: true
}
function getStatusMeta(status, t = $t) {
  if (status === true || Number(status) === 1) {
    return { text: t('common.status.normal'), type: 'success', bool: true }
  }
  if (status === false || Number(status) === 0) {
    return { text: t('common.status.frozen'), type: 'danger', bool: false }
  }
  return { text: t('common.status.unknown'), type: 'info', bool: false }
}
function normalizeText(value) {
@@ -39,14 +30,14 @@
  return Number.isNaN(parsed) ? fallback : parsed
}
function normalizeBooleanText(value) {
  if (value === 1 || value === '1' || value === true || value === '是') {
    return '是'
function normalizeBooleanText(value, t = $t) {
  if (value === 1 || value === '1' || value === true || value === t('common.status.yes')) {
    return t('common.status.yes')
  }
  if (value === 0 || value === '0' || value === false || value === '否') {
    return '否'
  if (value === 0 || value === '0' || value === false || value === t('common.status.no')) {
    return t('common.status.no')
  }
  return normalizeText(value) || '--'
  return normalizeText(value) || t('common.placeholder.empty')
}
function normalizeIdArray(values = []) {
@@ -91,22 +82,14 @@
    })
    .filter(Boolean)
  return labels.length ? labels.join('、') : '--'
}
function getStatusMeta(status) {
  if (status === true || Number(status) === 1) {
    return STATUS_META[1]
  }
  if (status === false || Number(status) === 0) {
    return STATUS_META[0]
  }
  return { text: '未知', type: 'info', bool: false }
  return labels.length ? labels.join($t('common.listSeparator')) : $t('common.placeholder.empty')
}
export function createBasStationAreaSearchState() {
  return {
    condition: '',
    timeStart: '',
    timeEnd: '',
    stationAreaName: '',
    stationAreaId: '',
    type: '',
@@ -157,16 +140,29 @@
  }
}
export function getBasStationAreaTypeOptions() {
  return TYPE_OPTIONS
export function getBasStationAreaReportTitle(t = $t) {
  return t('pages.basicInfo.basStationArea.reportTitle')
}
export function getBasStationAreaBinaryOptions() {
  return BINARY_OPTIONS
export function getBasStationAreaTypeOptions(t = $t) {
  return [
    { label: t('pages.basicInfo.basStationArea.type.smart'), value: 0 },
    { label: t('pages.basicInfo.basStationArea.type.normal'), value: 1 }
  ]
}
export function getBasStationAreaStatusOptions() {
  return STATUS_OPTIONS
export function getBasStationAreaBinaryOptions(t = $t) {
  return [
    { label: t('common.status.no'), value: 0 },
    { label: t('common.status.yes'), value: 1 }
  ]
}
export function getBasStationAreaStatusOptions(t = $t) {
  return [
    { label: t('common.status.normal'), value: 1 },
    { label: t('common.status.frozen'), value: 0 }
  ]
}
export function resolveBasStationAreaWarehouseAreaOptions(records = []) {
@@ -185,7 +181,13 @@
      }
      return {
        value: Number(value),
        label: normalizeText(item.name || item.areaName || item.code || item.areaCode || `库区 ${value}`)
        label: normalizeText(
          item.name ||
            item.areaName ||
            item.code ||
            item.areaCode ||
            `${$t('menu.warehouseAreas')} ${value}`
        )
      }
    })
    .filter(Boolean)
@@ -207,7 +209,9 @@
      }
      return {
        value: Number(value),
        label: normalizeText(item.stationName || item.stationId || item.name || `站点 ${value}`)
        label: normalizeText(
          item.stationName || item.stationId || item.name || `${$t('menu.basStation')} ${value}`
        )
      }
    })
    .filter(Boolean)
@@ -260,6 +264,8 @@
export function buildBasStationAreaSearchParams(params = {}) {
  const searchParams = {
    condition: normalizeText(params.condition),
    timeStart: normalizeText(params.timeStart),
    timeEnd: normalizeText(params.timeEnd),
    stationAreaName: normalizeText(params.stationAreaName),
    stationAreaId: normalizeText(params.stationAreaId),
    type:
@@ -292,7 +298,9 @@
    containerType: normalizeText(params.containerType),
    barcode: normalizeText(params.barcode),
    autoTransfer:
      params.autoTransfer !== undefined && params.autoTransfer !== null && params.autoTransfer !== ''
      params.autoTransfer !== undefined &&
      params.autoTransfer !== null &&
      params.autoTransfer !== ''
        ? Number(params.autoTransfer)
        : void 0,
    stationAlias: normalizeText(params.stationAlias),
@@ -304,7 +312,9 @@
  }
  return Object.fromEntries(
    Object.entries(searchParams).filter(([, value]) => value !== '' && value !== void 0 && value !== null)
    Object.entries(searchParams).filter(
      ([, value]) => value !== '' && value !== void 0 && value !== null
    )
  )
}
@@ -312,6 +322,7 @@
  return {
    current: params.current || 1,
    pageSize: params.pageSize || params.size || 20,
    orderBy: normalizeText(params.orderBy) || 'create_time desc',
    ...buildBasStationAreaSearchParams(params)
  }
}
@@ -358,7 +369,9 @@
    ...(formData.area !== void 0 && formData.area !== null && formData.area !== ''
      ? { area: Number(formData.area) }
      : {}),
    ...(formData.isCrossZone !== void 0 && formData.isCrossZone !== null && formData.isCrossZone !== ''
    ...(formData.isCrossZone !== void 0 &&
    formData.isCrossZone !== null &&
    formData.isCrossZone !== ''
      ? { isCrossZone: Number(formData.isCrossZone) }
      : {}),
    ...(Array.isArray(formData.crossZoneArea) && formData.crossZoneArea.length
@@ -372,7 +385,9 @@
      ? { containerType: normalizeIdArray(formData.containerType) }
      : {}),
    barcode: normalizeText(formData.barcode) || '',
    ...(formData.autoTransfer !== void 0 && formData.autoTransfer !== null && formData.autoTransfer !== ''
    ...(formData.autoTransfer !== void 0 &&
    formData.autoTransfer !== null &&
    formData.autoTransfer !== ''
      ? { autoTransfer: Number(formData.autoTransfer) }
      : {}),
    ...(Array.isArray(formData.stationAlias) && formData.stationAlias.length
@@ -386,10 +401,12 @@
  }
}
export function buildBasStationAreaDialogModel(record = {}, resolvers = {}) {
export function buildBasStationAreaDialogModel(record = {}) {
  return {
    ...createBasStationAreaFormState(),
    ...(record.id !== void 0 && record.id !== null && record.id !== '' ? { id: Number(record.id) } : {}),
    ...(record.id !== void 0 && record.id !== null && record.id !== ''
      ? { id: Number(record.id) }
      : {}),
    stationAreaName: normalizeText(record.stationAreaName || ''),
    stationAreaId: normalizeText(record.stationAreaId || ''),
    type: normalizeIdValue(record.type),
@@ -397,13 +414,17 @@
    outAble: record.outAble !== void 0 && record.outAble !== null ? Number(record.outAble) : 0,
    useStatus: normalizeText(record.useStatus || ''),
    area: normalizeIdValue(record.area),
    isCrossZone: record.isCrossZone !== void 0 && record.isCrossZone !== null ? Number(record.isCrossZone) : 0,
    isCrossZone:
      record.isCrossZone !== void 0 && record.isCrossZone !== null ? Number(record.isCrossZone) : 0,
    crossZoneArea: normalizeIdArray(record.crossZoneArea),
    isWcs: record.isWcs !== void 0 && record.isWcs !== null ? Number(record.isWcs) : 0,
    wcsData: normalizeText(record.wcsData || ''),
    containerType: normalizeIdArray(record.containerType ?? record.containerTypes),
    barcode: normalizeText(record.barcode || ''),
    autoTransfer: record.autoTransfer !== void 0 && record.autoTransfer !== null ? Number(record.autoTransfer) : 0,
    autoTransfer:
      record.autoTransfer !== void 0 && record.autoTransfer !== null
        ? Number(record.autoTransfer)
        : 0,
    stationAlias: normalizeIdArray(record.stationAlias),
    status: record.status !== void 0 && record.status !== null ? Number(record.status) : 1,
    memo: normalizeText(record.memo || '')
@@ -411,7 +432,8 @@
}
export function normalizeBasStationAreaDetailRecord(record = {}, resolvers = {}) {
  const statusMeta = getStatusMeta(record.statusBool ?? record.status)
  const t = resolvers.t || $t
  const statusMeta = getStatusMeta(record.statusBool ?? record.status, t)
  const typeValue = record.type$ ?? record.type
  const areaId = record.area ?? record.areaId ?? record.area$
  const crossZoneAreaIds = normalizeIdArray(record.crossZoneArea)
@@ -422,53 +444,101 @@
  return {
    ...record,
    id: normalizeIdValue(record.id),
    stationAreaName: normalizeText(record.stationAreaName) || '--',
    stationAreaId: normalizeText(record.stationAreaId) || '--',
    stationAreaName: normalizeText(record.stationAreaName) || t('common.placeholder.empty'),
    stationAreaId: normalizeText(record.stationAreaId) || t('common.placeholder.empty'),
    type: normalizeIdValue(record.type),
    typeText: normalizeText(
      record.type$ || record.typeText || resolvers.resolveTypeLabel?.(typeValue) || typeValue
    ) || '--',
    typeText:
      normalizeText(
        record.type$ || record.typeText || resolvers.resolveTypeLabel?.(typeValue) || typeValue
      ) || t('common.placeholder.empty'),
    inAble: normalizeIdValue(record.inAble),
    inAbleText: normalizeBooleanText(record.inAble),
    inAbleText: normalizeBooleanText(record.inAble, t),
    outAble: normalizeIdValue(record.outAble),
    outAbleText: normalizeBooleanText(record.outAble),
    outAbleText: normalizeBooleanText(record.outAble, t),
    useStatus: normalizeText(record.useStatus),
    useStatusText: normalizeText(record.useStatus$ || record.useStatusText || resolvers.resolveUseStatusLabel?.(record.useStatus) || record.useStatus) || '--',
    useStatusText:
      normalizeText(
        record.useStatus$ ||
          record.useStatusText ||
          resolvers.resolveUseStatusLabel?.(record.useStatus) ||
          record.useStatus
      ) || t('common.placeholder.empty'),
    area: normalizeIdValue(areaId),
    areaText: normalizeText(record.area$ || record.areaText || resolvers.resolveAreaLabel?.(areaId) || '') || '--',
    areaText:
      normalizeText(
        record.area$ || record.areaText || resolvers.resolveAreaLabel?.(areaId) || ''
      ) || t('common.placeholder.empty'),
    isCrossZone: normalizeIdValue(record.isCrossZone),
    isCrossZoneText: normalizeBooleanText(record.isCrossZone),
    isCrossZoneText: normalizeBooleanText(record.isCrossZone, t),
    crossZoneArea: crossZoneAreaIds,
    crossZoneAreaText:
      resolveOptionText(crossZoneAreaIds, resolvers.resolveCrossZoneAreaLabel, record.crossZoneAreaText || []) || '--',
      resolveOptionText(
        crossZoneAreaIds,
        resolvers.resolveCrossZoneAreaLabel,
        record.crossZoneAreaText || []
      ) || t('common.placeholder.empty'),
    isWcs: normalizeIdValue(record.isWcs),
    isWcsText: normalizeBooleanText(record.isWcs),
    wcsData: normalizeText(record.wcsData) || '--',
    isWcsText: normalizeBooleanText(record.isWcs, t),
    wcsData: normalizeText(record.wcsData) || t('common.placeholder.empty'),
    containerType: containerTypeIds,
    containerTypeText:
      resolveOptionText(containerTypeIds, resolvers.resolveContainerTypeLabel, record.containerTypesText || []) || '--',
    barcode: normalizeText(record.barcode) || '--',
      resolveOptionText(
        containerTypeIds,
        resolvers.resolveContainerTypeLabel,
        record.containerTypesText || []
      ) || t('common.placeholder.empty'),
    barcode: normalizeText(record.barcode) || t('common.placeholder.empty'),
    autoTransfer: normalizeIdValue(record.autoTransfer),
    autoTransferText: normalizeBooleanText(record.autoTransfer),
    autoTransferText: normalizeBooleanText(record.autoTransfer, t),
    stationAlias: stationAliasIds,
    stationAliasText:
      resolveOptionText(
        stationAliasIds,
        resolvers.resolveStationAliasLabel,
        stationAliasNames.length ? stationAliasNames : record.stationAliasText || []
      ) || '--',
      ) || t('common.placeholder.empty'),
    status: normalizeIdValue(record.status),
    statusText: statusMeta.text,
    statusType: statusMeta.type,
    statusBool: record.statusBool !== void 0 ? Boolean(record.statusBool) : statusMeta.bool,
    memo: normalizeText(record.memo) || '--',
    createByText: normalizeText(record.createBy$ || record.createByText || ''),
    createTimeText: normalizeText(record.createTime$ || record.createTime || ''),
    updateByText: normalizeText(record.updateBy$ || record.updateByText || ''),
    updateTimeText: normalizeText(record.updateTime$ || record.updateTime || '')
    memo: normalizeText(record.memo) || t('common.placeholder.empty'),
    createByText:
      normalizeText(record.createBy$ || record.createByText || '') || t('common.placeholder.empty'),
    createTimeText:
      normalizeText(record.createTime$ || record.createTime || '') || t('common.placeholder.empty'),
    updateByText:
      normalizeText(record.updateBy$ || record.updateByText || '') || t('common.placeholder.empty'),
    updateTimeText:
      normalizeText(record.updateTime$ || record.updateTime || '') || t('common.placeholder.empty')
  }
}
export function normalizeBasStationAreaListRow(record = {}, resolvers = {}) {
  return normalizeBasStationAreaDetailRecord(record, resolvers)
}
export function buildBasStationAreaPrintRows(records = [], resolvers = {}) {
  if (!Array.isArray(records)) {
    return []
  }
  return records.map((record) => normalizeBasStationAreaListRow(record, resolvers))
}
export function buildBasStationAreaReportMeta({
  previewMeta = {},
  count = 0,
  orientation = BAS_STATION_AREA_REPORT_STYLE.orientation,
  t = $t
} = {}) {
  return {
    reportTitle: getBasStationAreaReportTitle(t),
    reportDate: previewMeta.reportDate,
    printedAt: previewMeta.printedAt,
    operator: previewMeta.operator,
    count,
    reportStyle: {
      ...BAS_STATION_AREA_REPORT_STYLE,
      orientation
    }
  }
}