From d4e039545c9e97347223eb415fbba85ee01bc263 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期六, 11 四月 2026 10:10:14 +0800
Subject: [PATCH] #页面优化

---
 rsf-design/src/views/orders/transfer/transferPage.helpers.js |  336 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 304 insertions(+), 32 deletions(-)

diff --git a/rsf-design/src/views/orders/transfer/transferPage.helpers.js b/rsf-design/src/views/orders/transfer/transferPage.helpers.js
index 2b3200a..8b5a1cf 100644
--- a/rsf-design/src/views/orders/transfer/transferPage.helpers.js
+++ b/rsf-design/src/views/orders/transfer/transferPage.helpers.js
@@ -53,18 +53,23 @@
 export function createTransferSearchState() {
   return {
     condition: '',
+    timeStart: '',
+    timeEnd: '',
     code: '',
     type: '',
     source: '',
     exceStatus: '',
+    orgWareId: '',
     orgWareName: '',
+    tarWareId: '',
     tarWareName: '',
+    orgAreaId: '',
     orgAreaName: '',
+    tarAreaId: '',
     tarAreaName: '',
     memo: '',
     status: '',
-    timeStart: '',
-    timeEnd: ''
+    orderBy: 'create_time desc'
   }
 }
 
@@ -85,10 +90,18 @@
 export function buildTransferDialogModel(record = {}) {
   return {
     ...createTransferFormState(),
-    ...(record.id !== undefined && record.id !== null && record.id !== '' ? { id: Number(record.id) } : {}),
+    ...(record.id !== undefined && record.id !== null && record.id !== ''
+      ? { id: Number(record.id) }
+      : {}),
     code: normalizeText(record.code || ''),
-    type: record.type !== undefined && record.type !== null && record.type !== '' ? Number(record.type) : '',
-    source: record.source !== undefined && record.source !== null && record.source !== '' ? Number(record.source) : 2,
+    type:
+      record.type !== undefined && record.type !== null && record.type !== ''
+        ? Number(record.type)
+        : '',
+    source:
+      record.source !== undefined && record.source !== null && record.source !== ''
+        ? Number(record.source)
+        : 2,
     exceStatus:
       record.exceStatus !== undefined && record.exceStatus !== null && record.exceStatus !== ''
         ? Number(record.exceStatus)
@@ -103,6 +116,35 @@
         : void 0,
     status: record.status !== undefined && record.status !== null ? Number(record.status) : 1,
     memo: normalizeText(record.memo || '')
+  }
+}
+
+function createTransferItemRowKey(record = {}) {
+  const keySeed = [
+    record.id ?? 'new',
+    record.transferId ?? 'transfer',
+    record.matnrId ?? 'matnr',
+    record.batch ?? '',
+    record.fieldsIndex ?? ''
+  ]
+  return keySeed.join('-')
+}
+
+function resolveDynamicFieldValues(record = {}, fieldDefinitions = []) {
+  return Object.fromEntries(
+    (Array.isArray(fieldDefinitions) ? fieldDefinitions : []).map((item) => [
+      item.fields,
+      record[item.fields] ?? record.extendFields?.[item.fields] ?? ''
+    ])
+  )
+}
+
+export function buildTransferManageDialogModel(record = {}, fieldDefinitions = []) {
+  const transferRecord = record?.transfer || record || {}
+  const itemRecords = Array.isArray(record?.items) ? record.items : []
+  return {
+    transfer: buildTransferDialogModel(transferRecord),
+    items: itemRecords.map((item) => buildTransferEditableItem(item, fieldDefinitions))
   }
 }
 
@@ -136,11 +178,28 @@
 
 export function buildTransferSearchParams(params = {}) {
   const result = {}
-  ;['condition', 'code', 'orgWareName', 'tarWareName', 'orgAreaName', 'tarAreaName', 'memo'].forEach((key) => {
+  ;[
+    'condition',
+    'code',
+    'orgWareName',
+    'tarWareName',
+    'orgAreaName',
+    'tarAreaName',
+    'memo'
+  ].forEach((key) => {
     const value = normalizeText(params[key])
     if (value) result[key] = value
   })
-  ;['type', 'source', 'exceStatus', 'status', 'orgWareId', 'tarWareId', 'orgAreaId', 'tarAreaId'].forEach((key) => {
+  ;[
+    'type',
+    'source',
+    'exceStatus',
+    'status',
+    'orgWareId',
+    'tarWareId',
+    'orgAreaId',
+    'tarAreaId'
+  ].forEach((key) => {
     if (params[key] !== '' && params[key] !== undefined && params[key] !== null) {
       result[key] = normalizeNumber(params[key])
     }
@@ -158,16 +217,21 @@
   return {
     current: params.current || 1,
     pageSize: params.pageSize || params.size || 20,
+    orderBy: normalizeText(params.orderBy) || 'create_time desc',
     ...buildTransferSearchParams(params)
   }
 }
 
 export function buildTransferDetailOrderQueryParams(params = {}) {
   return {
+    ...(normalizeNumber(params.id, void 0) !== void 0
+      ? { id: normalizeNumber(params.id, void 0) }
+      : {}),
     condition: normalizeText(params.code || params.condition),
     code: normalizeText(params.code || params.condition),
     current: params.current || 1,
-    pageSize: params.pageSize || params.size || 20
+    pageSize: params.pageSize || params.size || 20,
+    orderBy: normalizeText(params.orderBy) || 'create_time desc'
   }
 }
 
@@ -186,8 +250,14 @@
   const tarAreaId = normalizeNumber(formData.tarAreaId, void 0)
   const orgArea = optionMap.get(orgAreaId) || {}
   const tarArea = optionMap.get(tarAreaId) || {}
-  const orgWareId = normalizeNumber(orgArea.warehouseId ?? orgArea.warehouse_id ?? orgArea.warehouseIdValue, void 0)
-  const tarWareId = normalizeNumber(tarArea.warehouseId ?? tarArea.warehouse_id ?? tarArea.warehouseIdValue, void 0)
+  const orgWareId = normalizeNumber(
+    orgArea.warehouseId ?? orgArea.warehouse_id ?? orgArea.warehouseIdValue,
+    void 0
+  )
+  const tarWareId = normalizeNumber(
+    tarArea.warehouseId ?? tarArea.warehouse_id ?? tarArea.warehouseIdValue,
+    void 0
+  )
 
   return {
     ...(formData.id !== undefined && formData.id !== null && formData.id !== ''
@@ -200,17 +270,27 @@
     ...(formData.source !== undefined && formData.source !== null && formData.source !== ''
       ? { source: normalizeNumber(formData.source) }
       : {}),
-    ...(formData.exceStatus !== undefined && formData.exceStatus !== null && formData.exceStatus !== ''
+    ...(formData.exceStatus !== undefined &&
+    formData.exceStatus !== null &&
+    formData.exceStatus !== ''
       ? { exceStatus: normalizeNumber(formData.exceStatus) }
       : {}),
     ...(orgAreaId !== void 0 ? { orgAreaId } : {}),
     ...(tarAreaId !== void 0 ? { tarAreaId } : {}),
     ...(orgWareId !== void 0 ? { orgWareId } : {}),
     ...(tarWareId !== void 0 ? { tarWareId } : {}),
-    ...(normalizeText(orgArea.name || orgArea.areaName) ? { orgAreaName: normalizeText(orgArea.name || orgArea.areaName) } : {}),
-    ...(normalizeText(tarArea.name || tarArea.areaName) ? { tarAreaName: normalizeText(tarArea.name || tarArea.areaName) } : {}),
-    ...(normalizeText(orgArea.warehouseId$ || orgArea.warehouseName) ? { orgWareName: normalizeText(orgArea.warehouseId$ || orgArea.warehouseName) } : {}),
-    ...(normalizeText(tarArea.warehouseId$ || tarArea.warehouseName) ? { tarWareName: normalizeText(tarArea.warehouseId$ || tarArea.warehouseName) } : {}),
+    ...(normalizeText(orgArea.name || orgArea.areaName)
+      ? { orgAreaName: normalizeText(orgArea.name || orgArea.areaName) }
+      : {}),
+    ...(normalizeText(tarArea.name || tarArea.areaName)
+      ? { tarAreaName: normalizeText(tarArea.name || tarArea.areaName) }
+      : {}),
+    ...(normalizeText(orgArea.warehouseId$ || orgArea.warehouseName)
+      ? { orgWareName: normalizeText(orgArea.warehouseId$ || orgArea.warehouseName) }
+      : {}),
+    ...(normalizeText(tarArea.warehouseId$ || tarArea.warehouseName)
+      ? { tarWareName: normalizeText(tarArea.warehouseId$ || tarArea.warehouseName) }
+      : {}),
     ...(formData.status !== undefined && formData.status !== null && formData.status !== ''
       ? { status: normalizeNumber(formData.status) }
       : { status: 1 }),
@@ -219,16 +299,34 @@
 }
 
 function resolveAreaText(record = {}, key) {
-  return normalizeText(record[`${key}AreaName$`] || record[`${key}AreaName`] || record[`${key}AreaId$`] || record[`${key}AreaId`])
+  return normalizeText(
+    record[`${key}AreaName$`] ||
+      record[`${key}AreaName`] ||
+      record[`${key}AreaId$`] ||
+      record[`${key}AreaId`]
+  )
 }
 
 function resolveWarehouseText(record = {}, key) {
-  return normalizeText(record[`${key}WareName$`] || record[`${key}WareName`] || record[`${key}WareId$`] || record[`${key}WareId`])
+  return normalizeText(
+    record[`${key}WareName$`] ||
+      record[`${key}WareName`] ||
+      record[`${key}WareId$`] ||
+      record[`${key}WareId`]
+  )
 }
 
 export function normalizeTransferRow(record = {}, t = $t) {
-  const statusMeta = metaByValue(record.statusBool ?? record.status, getTransferStatusMetaMap(t), t('common.status.unknown'))
-  const exceStatusMeta = metaByValue(record.exceStatus, getTransferExceStatusMetaMap(t), record.exceStatusText)
+  const statusMeta = metaByValue(
+    record.statusBool ?? record.status,
+    getTransferStatusMetaMap(t),
+    t('common.status.unknown')
+  )
+  const exceStatusMeta = metaByValue(
+    record.exceStatus,
+    getTransferExceStatusMetaMap(t),
+    record.exceStatusText
+  )
   const sourceMeta = metaByValue(record.source, getTransferSourceMetaMap(t), record.sourceText)
   return {
     ...record,
@@ -237,7 +335,8 @@
     typeLabel: normalizeText(record['type$'] || record.type) || '--',
     sourceText: sourceMeta.text,
     sourceTagType: sourceMeta.type,
-    exceStatusText: normalizeText(record['exceStatus$'] || record.exceStatusText) || exceStatusMeta.text,
+    exceStatusText:
+      normalizeText(record['exceStatus$'] || record.exceStatusText) || exceStatusMeta.text,
     exceStatusTagType: exceStatusMeta.type,
     orgWareName: resolveWarehouseText(record, 'org') || '--',
     tarWareName: resolveWarehouseText(record, 'tar') || '--',
@@ -247,9 +346,11 @@
     statusType: statusMeta.type,
     statusBool: record.statusBool !== void 0 ? Boolean(record.statusBool) : statusMeta.bool,
     createByText: normalizeText(record['createBy$'] || record.createByText) || '--',
-    createTimeText: normalizeText(record['createTime$'] || record.createTimeText || record.createTime) || '--',
+    createTimeText:
+      normalizeText(record['createTime$'] || record.createTimeText || record.createTime) || '--',
     updateByText: normalizeText(record['updateBy$'] || record.updateByText) || '--',
-    updateTimeText: normalizeText(record['updateTime$'] || record.updateTimeText || record.updateTime) || '--',
+    updateTimeText:
+      normalizeText(record['updateTime$'] || record.updateTimeText || record.updateTime) || '--',
     memo: normalizeText(record.memo) || '--'
   }
 }
@@ -259,8 +360,16 @@
 }
 
 export function normalizeTransferOrderRow(record = {}, t = $t) {
-  const statusMeta = metaByValue(record.statusBool ?? record.status, getTransferStatusMetaMap(t), t('common.status.unknown'))
-  const exceStatusMeta = metaByValue(record.exceStatus, getTransferExceStatusMetaMap(t), record.exceStatusText)
+  const statusMeta = metaByValue(
+    record.statusBool ?? record.status,
+    getTransferStatusMetaMap(t),
+    t('common.status.unknown')
+  )
+  const exceStatusMeta = metaByValue(
+    record.exceStatus,
+    getTransferExceStatusMetaMap(t),
+    record.exceStatusText
+  )
   return {
     ...record,
     id: record.id ?? null,
@@ -268,7 +377,8 @@
     poCode: normalizeText(record.poCode) || '--',
     typeLabel: normalizeText(record['type$'] || record.type) || '--',
     wkTypeLabel: normalizeText(record['wkType$'] || record.wkType) || '--',
-    exceStatusText: normalizeText(record['exceStatus$'] || record.exceStatusText) || exceStatusMeta.text,
+    exceStatusText:
+      normalizeText(record['exceStatus$'] || record.exceStatusText) || exceStatusMeta.text,
     exceStatusTagType: exceStatusMeta.type,
     statusText: statusMeta.text,
     statusType: statusMeta.type,
@@ -277,12 +387,153 @@
     workQty: record.workQty ?? '--',
     qty: record.qty ?? '--',
     stationId: normalizeText(record.stationId) || '--',
-    businessTimeText: normalizeText(record['businessTime$'] || record.businessTimeText || record.businessTime) || '--',
+    businessTimeText:
+      normalizeText(record['businessTime$'] || record.businessTimeText || record.businessTime) ||
+      '--',
     createByText: normalizeText(record['createBy$'] || record.createByText) || '--',
-    createTimeText: normalizeText(record['createTime$'] || record.createTimeText || record.createTime) || '--',
+    createTimeText:
+      normalizeText(record['createTime$'] || record.createTimeText || record.createTime) || '--',
     updateByText: normalizeText(record['updateBy$'] || record.updateByText) || '--',
-    updateTimeText: normalizeText(record['updateTime$'] || record.updateTimeText || record.updateTime) || '--',
+    updateTimeText:
+      normalizeText(record['updateTime$'] || record.updateTimeText || record.updateTime) || '--',
     memo: normalizeText(record.memo) || '--'
+  }
+}
+
+export function buildTransferEditableItem(record = {}, fieldDefinitions = []) {
+  return {
+    __rowKey: createTransferItemRowKey(record),
+    id: normalizeNumber(record.id, void 0),
+    transferId: normalizeNumber(record.transferId, void 0),
+    transferCode: normalizeText(record.transferCode || ''),
+    matnrId: normalizeNumber(record.matnrId, void 0),
+    maktx: normalizeText(record.maktx || ''),
+    matnrCode: normalizeText(record.matnrCode || ''),
+    anfme: normalizeNumber(record.anfme, 0) ?? 0,
+    splrCode: normalizeText(record.splrCode || ''),
+    splrName: normalizeText(record.splrName || ''),
+    batch: normalizeText(record.batch || ''),
+    unit: normalizeText(record.unit || record.stockUnit || ''),
+    stockUnit: normalizeText(record.stockUnit || record.unit || ''),
+    spec: normalizeText(record.spec || ''),
+    model: normalizeText(record.model || ''),
+    fieldsIndex: normalizeText(record.fieldsIndex || ''),
+    platItemId: normalizeText(record.platItemId || ''),
+    platOrderCode: normalizeText(record.platOrderCode || ''),
+    platWorkCode: normalizeText(record.platWorkCode || ''),
+    projectCode: normalizeText(record.projectCode || ''),
+    status: normalizeNumber(record.status, 1) ?? 1,
+    memo: normalizeText(record.memo || ''),
+    ...resolveDynamicFieldValues(record, fieldDefinitions)
+  }
+}
+
+export function createTransferEditableItemFromMaterial(record = {}, fieldDefinitions = []) {
+  return {
+    __rowKey: createTransferItemRowKey({
+      ...record,
+      id: void 0,
+      matnrId: record.matnrId ?? record.id
+    }),
+    id: void 0,
+    transferId: void 0,
+    transferCode: '',
+    matnrId: normalizeNumber(record.matnrId ?? record.id, void 0),
+    maktx: normalizeText(record.maktx || ''),
+    matnrCode: normalizeText(record.matnrCode || ''),
+    anfme: normalizeNumber(record.anfme, 0) ?? 0,
+    splrCode: '',
+    splrName: '',
+    batch: normalizeText(record.batch || ''),
+    unit: normalizeText(record.unit || record.stockUnit || ''),
+    stockUnit: normalizeText(record.stockUnit || record.unit || ''),
+    spec: normalizeText(record.spec || ''),
+    model: normalizeText(record.model || ''),
+    fieldsIndex: normalizeText(record.fieldsIndex || ''),
+    platItemId: '',
+    platOrderCode: '',
+    platWorkCode: '',
+    projectCode: '',
+    status: 1,
+    memo: '',
+    ...resolveDynamicFieldValues(record, fieldDefinitions)
+  }
+}
+
+export function buildTransferItemsSavePayload(
+  formData = {},
+  areaOptions = [],
+  fieldDefinitions = []
+) {
+  const transfer = buildTransferSavePayload(formData.transfer || formData, areaOptions)
+  const rows = Array.isArray(formData.items) ? formData.items : []
+  return {
+    transfer,
+    items: rows.map((item) => {
+      const payload = {
+        ...(item.id !== undefined && item.id !== null && item.id !== ''
+          ? { id: normalizeNumber(item.id, void 0) }
+          : {}),
+        ...(item.transferId !== undefined && item.transferId !== null && item.transferId !== ''
+          ? { transferId: normalizeNumber(item.transferId, void 0) }
+          : {}),
+        ...(normalizeText(item.transferCode)
+          ? { transferCode: normalizeText(item.transferCode) }
+          : {}),
+        ...(item.matnrId !== undefined && item.matnrId !== null && item.matnrId !== ''
+          ? { matnrId: normalizeNumber(item.matnrId, void 0) }
+          : {}),
+        ...(normalizeText(item.maktx) ? { maktx: normalizeText(item.maktx) } : {}),
+        ...(normalizeText(item.matnrCode) ? { matnrCode: normalizeText(item.matnrCode) } : {}),
+        ...(item.anfme !== undefined && item.anfme !== null && item.anfme !== ''
+          ? { anfme: normalizeNumber(item.anfme, 0) }
+          : {}),
+        ...(normalizeText(item.splrCode) ? { splrCode: normalizeText(item.splrCode) } : {}),
+        ...(normalizeText(item.splrName) ? { splrName: normalizeText(item.splrName) } : {}),
+        ...(normalizeText(item.batch) ? { batch: normalizeText(item.batch) } : {}),
+        ...(normalizeText(item.unit || item.stockUnit)
+          ? {
+              unit: normalizeText(item.unit || item.stockUnit),
+              stockUnit: normalizeText(item.stockUnit || item.unit)
+            }
+          : {}),
+        ...(normalizeText(item.spec) ? { spec: normalizeText(item.spec) } : {}),
+        ...(normalizeText(item.model) ? { model: normalizeText(item.model) } : {}),
+        ...(normalizeText(item.fieldsIndex)
+          ? { fieldsIndex: normalizeText(item.fieldsIndex) }
+          : {}),
+        ...(normalizeText(item.platItemId) ? { platItemId: normalizeText(item.platItemId) } : {}),
+        ...(normalizeText(item.platOrderCode)
+          ? { platOrderCode: normalizeText(item.platOrderCode) }
+          : {}),
+        ...(normalizeText(item.platWorkCode)
+          ? { platWorkCode: normalizeText(item.platWorkCode) }
+          : {}),
+        ...(normalizeText(item.projectCode)
+          ? { projectCode: normalizeText(item.projectCode) }
+          : {}),
+        ...(item.status !== undefined && item.status !== null && item.status !== ''
+          ? { status: normalizeNumber(item.status, 1) }
+          : { status: 1 }),
+        memo: normalizeText(item.memo || '')
+      }
+
+      fieldDefinitions.forEach((field) => {
+        const value = item[field.fields]
+        if (value !== undefined && value !== null && String(value).trim() !== '') {
+          payload[field.fields] = value
+        }
+      })
+
+      return payload
+    })
+  }
+}
+
+export function createTransferMaterialSearchState() {
+  return {
+    maktx: '',
+    matnrCode: ''
   }
 }
 
@@ -321,8 +572,17 @@
     { key: 'edit', label: $t('pages.orders.transfer.actions.edit'), icon: 'ri:pencil-line' }
   ]
   if (Number(normalizedRow.exceStatus) === 0) {
-    actions.push({ key: 'publish', label: $t('pages.orders.transfer.actions.publish'), icon: 'ri:send-plane-line' })
-    actions.push({ key: 'delete', label: $t('pages.orders.transfer.actions.delete'), icon: 'ri:delete-bin-5-line', color: 'var(--art-error)' })
+    actions.push({
+      key: 'publish',
+      label: $t('pages.orders.transfer.actions.publish'),
+      icon: 'ri:send-plane-line'
+    })
+    actions.push({
+      key: 'delete',
+      label: $t('pages.orders.transfer.actions.delete'),
+      icon: 'ri:delete-bin-5-line',
+      color: 'var(--art-error)'
+    })
   }
   return actions
 }
@@ -336,7 +596,14 @@
       if (value === void 0) return null
       return {
         value,
-        label: normalizeText(item.name || item.areaName || item.code || item.warehouseId$ || item.warehouseName || `${$t('menu.warehouseAreas')} ${value}`),
+        label: normalizeText(
+          item.name ||
+            item.areaName ||
+            item.code ||
+            item.warehouseId$ ||
+            item.warehouseName ||
+            `${$t('menu.warehouseAreas')} ${value}`
+        ),
         raw: item
       }
     })
@@ -352,7 +619,12 @@
       if (value === void 0) return null
       return {
         value,
-        label: normalizeText(item.label || item.name || item.dictLabel || `${$t('pages.orders.transfer.dialog.type')} ${value}`)
+        label: normalizeText(
+          item.label ||
+            item.name ||
+            item.dictLabel ||
+            `${$t('pages.orders.transfer.dialog.type')} ${value}`
+        )
       }
     })
     .filter(Boolean)

--
Gitblit v1.9.1