From 50e95b985a72fcec4a93a2470e9efdfb2620148a Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 02 四月 2026 15:46:09 +0800
Subject: [PATCH] #i18n

---
 rsf-design/src/views/orders/wave/index.vue |  115 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 74 insertions(+), 41 deletions(-)

diff --git a/rsf-design/src/views/orders/wave/index.vue b/rsf-design/src/views/orders/wave/index.vue
index eaa0a3f..7b2a419 100644
--- a/rsf-design/src/views/orders/wave/index.vue
+++ b/rsf-design/src/views/orders/wave/index.vue
@@ -59,6 +59,7 @@
       :columns="publicTaskColumns"
       :pagination="publicTaskPagination"
       :can-submit="publicTaskCanSubmit"
+      :warning-text="publicTaskWarningText"
       @size-change="handlePublicTaskSizeChange"
       @current-change="handlePublicTaskCurrentChange"
       @submit="handleSubmitPublicTask"
@@ -69,6 +70,7 @@
 <script setup>
   import { computed, reactive, ref } from 'vue'
   import { ElMessage, ElMessageBox } from 'element-plus'
+  import { useI18n } from 'vue-i18n'
   import { useUserStore } from '@/store/modules/user'
   import { useTable } from '@/hooks/core/useTable'
   import { usePrintExportPage } from '@/views/system/common/usePrintExportPage'
@@ -82,6 +84,7 @@
     buildWaveReportMeta,
     buildWaveSearchParams,
     createWaveSearchState,
+    getWaveReportTitle,
     normalizeWaveItemRow,
     normalizeWaveRow,
     WAVE_REPORT_STYLE
@@ -107,8 +110,9 @@
 
   defineOptions({ name: 'WaveOrder' })
 
+  const { t } = useI18n()
   const userStore = useUserStore()
-  const reportTitle = '娉㈡鍗曟姤琛�'
+  const reportTitle = computed(() => getWaveReportTitle(t))
   const searchForm = ref(createWaveSearchState())
   const selectedRows = ref([])
   const detailDrawerVisible = ref(false)
@@ -135,43 +139,71 @@
   })
 
   const reportQueryParams = computed(() => buildWaveSearchParams(searchForm.value))
-  const detailColumns = computed(() => createWaveDetailItemColumns())
-  const publicTaskColumns = computed(() => createWavePreviewItemColumns())
+  const detailColumns = computed(() => createWaveDetailItemColumns(t))
+  const publicTaskColumns = computed(() => createWavePreviewItemColumns(t))
   const publicTaskCanSubmit = computed(
     () => publicTaskRows.value.length > 0 && publicTaskRows.value.every((row) => row.stockLocsText && row.stockLocsText !== '[]')
   )
+  const publicTaskWarningText = computed(() => t('pages.orders.wave.messages.publicTaskWarning'))
   const searchItems = computed(() => [
-    { label: '鍏抽敭瀛�', key: 'condition', type: 'input', props: { clearable: true, placeholder: '璇疯緭鍏ユ尝娆″崟鍙�/澶囨敞' } },
-    { label: '娉㈡鍗曞彿', key: 'code', type: 'input', props: { clearable: true, placeholder: '璇疯緭鍏ユ尝娆″崟鍙�' } },
     {
-      label: '娉㈡绫诲瀷',
-      key: 'type',
-      type: 'select',
-      props: { clearable: true, options: [{ label: '鎵嬪姩', value: 0 }, { label: '鑷姩', value: 1 }] }
+      label: t('pages.orders.wave.search.condition'),
+      key: 'condition',
+      type: 'input',
+      props: { clearable: true, placeholder: t('pages.orders.wave.search.conditionPlaceholder') }
     },
     {
-      label: '娉㈡鐘舵��',
+      label: t('pages.orders.wave.search.code'),
+      key: 'code',
+      type: 'input',
+      props: { clearable: true, placeholder: t('pages.orders.wave.search.codePlaceholder') }
+    },
+    {
+      label: t('pages.orders.wave.search.type'),
+      key: 'type',
+      type: 'select',
+      props: {
+        clearable: true,
+        options: [
+          { label: t('pages.orders.wave.status.type.0'), value: 0 },
+          { label: t('pages.orders.wave.status.type.1'), value: 1 }
+        ]
+      }
+    },
+    {
+      label: t('pages.orders.wave.search.exceStatus'),
       key: 'exceStatus',
       type: 'select',
       props: {
         clearable: true,
         options: [
-          { label: '绛夊緟鎵ц', value: 0 },
-          { label: '姝e湪鎵ц', value: 1 },
-          { label: '鏆傚仠鎵ц', value: 2 },
-          { label: '鎵ц瀹屾垚', value: 3 }
+          { label: t('pages.orders.wave.status.exceStatus.0'), value: 0 },
+          { label: t('pages.orders.wave.status.exceStatus.1'), value: 1 },
+          { label: t('pages.orders.wave.status.exceStatus.2'), value: 2 },
+          { label: t('pages.orders.wave.status.exceStatus.3'), value: 3 }
         ]
       }
     },
     {
-      label: '鐘舵��',
+      label: t('pages.orders.wave.search.status'),
       key: 'status',
       type: 'select',
-      props: { clearable: true, options: [{ label: '姝e父', value: 1 }, { label: '绂佺敤', value: 0 }] }
+      props: {
+        clearable: true,
+        options: [
+          { label: t('common.status.normal'), value: 1 },
+          { label: t('common.status.disabled'), value: 0 }
+        ]
+      }
     },
-    { label: '澶囨敞', key: 'memo', type: 'input', props: { clearable: true, placeholder: '璇疯緭鍏ュ娉�' } },
-    { label: '寮�濮嬫椂闂�', key: 'timeStart', type: 'date', props: { clearable: true, type: 'date', valueFormat: 'YYYY-MM-DD' } },
-    { label: '缁撴潫鏃堕棿', key: 'timeEnd', type: 'date', props: { clearable: true, type: 'date', valueFormat: 'YYYY-MM-DD' } }
+    {
+      label: t('pages.orders.wave.search.memo'),
+      key: 'memo',
+      type: 'input',
+      props: { clearable: true, placeholder: t('pages.orders.wave.search.memoPlaceholder') }
+    },
+    { label: t('pages.orders.wave.search.timeStart'), key: 'timeStart', type: 'date', props: { clearable: true, type: 'date', valueFormat: 'YYYY-MM-DD' } },
+    { label: t('pages.orders.wave.search.timeEnd'), key: 'timeEnd', type: 'date', props: { clearable: true, type: 'date', valueFormat: 'YYYY-MM-DD' } }
   ])
 
   function updatePaginationState(target, response, fallbackCurrent, fallbackSize) {
@@ -188,7 +220,7 @@
   }
 
   async function openPublicTask(row) {
-    publicTaskWave.value = normalizeWaveRow(row)
+    publicTaskWave.value = normalizeWaveRow(row, t)
     publicTaskPagination.current = 1
     publicTaskDialogVisible.value = true
     await loadPublicTaskResources()
@@ -211,29 +243,29 @@
       }
       if (action.key === 'pause') {
         await fetchPauseWave(row.id)
-        ElMessage.success('娉㈡宸叉殏鍋�')
+        ElMessage.success(t('pages.orders.wave.messages.pauseSuccess'))
         await refreshData()
         return
       }
       if (action.key === 'continue') {
         await fetchContinueWave(row.id)
-        ElMessage.success('娉㈡宸茬户缁�')
+        ElMessage.success(t('pages.orders.wave.messages.continueSuccess'))
         await refreshData()
         return
       }
       if (action.key === 'stop') {
-        await ElMessageBox.confirm(`纭畾缁堟娉㈡鍗� ${row.code || ''} 鍚楋紵`, '缁堟纭', {
-          confirmButtonText: '纭畾',
-          cancelButtonText: '鍙栨秷',
+        await ElMessageBox.confirm(t('pages.orders.wave.messages.stopConfirm', { code: row.code || '' }), t('pages.orders.wave.messages.stopTitle'), {
+          confirmButtonText: t('common.confirm'),
+          cancelButtonText: t('common.cancel'),
           type: 'warning'
         })
         await fetchStopWave(row.id)
-        ElMessage.success('娉㈡宸茬粓姝�')
+        ElMessage.success(t('pages.orders.wave.messages.stopSuccess'))
         await refreshData()
       }
     } catch (error) {
       if (error === 'cancel' || error?.message === 'cancel') return
-      ElMessage.error(error?.message || '娉㈡鎿嶄綔澶辫触')
+      ElMessage.error(error?.message || t('pages.orders.wave.messages.actionFailed'))
     }
   }
 
@@ -253,10 +285,10 @@
     core: {
       apiFn: fetchWavePage,
       apiParams: buildWavePageQueryParams(searchForm.value),
-      columnsFactory: () => createWaveTableColumns({ handleActionClick })
+      columnsFactory: () => createWaveTableColumns({ handleActionClick, t })
     },
     transform: {
-      dataTransformer: (records) => (Array.isArray(records) ? records.map((item) => normalizeWaveRow(item)) : [])
+      dataTransformer: (records) => (Array.isArray(records) ? records.map((item) => normalizeWaveRow(item, t)) : [])
     }
   })
 
@@ -268,15 +300,15 @@
     detailLoading.value = true
     try {
       const [detailResponse, previewResponse] = await Promise.all([
-        guardRequestWithMessage(fetchGetWaveDetail(activeWaveId.value), {}, { timeoutMessage: '娉㈡鍗曡鎯呭姞杞借秴鏃讹紝宸插仠姝㈢瓑寰�' }),
+        guardRequestWithMessage(fetchGetWaveDetail(activeWaveId.value), {}, { timeoutMessage: t('pages.orders.wave.messages.detailTimeout') }),
         guardRequestWithMessage(
           fetchWavePreviewPage(buildWaveDetailQueryParams({ waveId: activeWaveId.value, current: detailPagination.current, pageSize: detailPagination.size })),
           { records: [], total: 0, current: detailPagination.current, size: detailPagination.size },
-          { timeoutMessage: '娉㈡棰勮鏄庣粏鍔犺浇瓒呮椂锛屽凡鍋滄绛夊緟' }
+          { timeoutMessage: t('pages.orders.wave.messages.previewTimeout') }
         )
       ])
-      detailData.value = normalizeWaveRow(detailResponse)
-      detailTableData.value = Array.isArray(previewResponse?.records) ? previewResponse.records.map((item) => normalizeWaveItemRow(item)) : []
+      detailData.value = normalizeWaveRow(detailResponse, t)
+      detailTableData.value = Array.isArray(previewResponse?.records) ? previewResponse.records.map((item) => normalizeWaveItemRow(item, t)) : []
       updatePaginationState(detailPagination, previewResponse, detailPagination.current, detailPagination.size)
     } finally {
       detailLoading.value = false
@@ -293,9 +325,9 @@
       const previewResponse = await guardRequestWithMessage(
         fetchWavePreviewPage(buildWaveDetailQueryParams({ waveId: publicTaskWave.value.id, current: publicTaskPagination.current, pageSize: publicTaskPagination.size })),
         { records: [], total: 0, current: publicTaskPagination.current, size: publicTaskPagination.size },
-        { timeoutMessage: '娉㈡涓嬪彂棰勮鍔犺浇瓒呮椂锛屽凡鍋滄绛夊緟' }
+        { timeoutMessage: t('pages.orders.wave.messages.publicTaskTimeout') }
       )
-      publicTaskRows.value = Array.isArray(previewResponse?.records) ? previewResponse.records.map((item) => normalizeWaveItemRow(item)) : []
+      publicTaskRows.value = Array.isArray(previewResponse?.records) ? previewResponse.records.map((item) => normalizeWaveItemRow(item, t)) : []
       updatePaginationState(publicTaskPagination, previewResponse, publicTaskPagination.current, publicTaskPagination.size)
     } finally {
       publicTaskLoading.value = false
@@ -311,16 +343,16 @@
       })
       const result = defaultResponseAdapter(response)
       if (result?.code !== 200 && result?.success !== true) {
-        throw new Error(result?.message || '娉㈡涓嬪彂澶辫触')
+        throw new Error(result?.message || t('pages.orders.wave.messages.publicTaskFailed'))
       }
-      ElMessage.success(result?.message || '娉㈡宸蹭笅鍙�')
+      ElMessage.success(result?.message || t('pages.orders.wave.messages.publicTaskSuccess'))
       publicTaskDialogVisible.value = false
       await refreshData()
       if (detailDrawerVisible.value && activeWaveId.value === publicTaskWave.value.id) {
         await loadDetailResources()
       }
     } catch (error) {
-      ElMessage.error(error?.message || '娉㈡涓嬪彂澶辫触')
+      ElMessage.error(error?.message || t('pages.orders.wave.messages.publicTaskFailed'))
     } finally {
       publicTaskSubmitting.value = false
     }
@@ -390,11 +422,11 @@
         }
       }),
     resolvePrintRecords,
-    buildPreviewRows: (records) => buildWavePrintRows(records),
+    buildPreviewRows: (records) => buildWavePrintRows(records, t),
     buildPreviewMeta: (rows) => {
       const now = new Date()
       return {
-        reportTitle,
+        reportTitle: reportTitle.value,
         reportDate: now.toLocaleDateString('zh-CN'),
         printedAt: now.toLocaleString('zh-CN', { hour12: false }),
         operator: userStore.getUserInfo?.name || userStore.getUserInfo?.username || '',
@@ -410,7 +442,8 @@
     buildWaveReportMeta({
       previewMeta: rawPreviewMeta.value,
       count: previewRows.value.length,
-      orientation: rawPreviewMeta.value?.reportStyle?.orientation || WAVE_REPORT_STYLE.orientation
+      orientation: rawPreviewMeta.value?.reportStyle?.orientation || WAVE_REPORT_STYLE.orientation,
+      t
     })
   )
 </script>

--
Gitblit v1.9.1