From b2ae6a27b062acc33e38f7499b6a7902356a7ee5 Mon Sep 17 00:00:00 2001 From: liutao <790864623@qq.com> Date: Mon, 13 Jul 2026 09:21:42 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E7=94=9F=E4=BA=A7=E7=8A=B6?= =?UTF-8?q?=E5=86=B5=E8=BD=AC=E8=8B=B1=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/en.ts | 16 +++++++++++++++ src/locales/zh-CN.ts | 16 +++++++++++++++ src/views/Home/Index.vue | 44 ++++++++++++++++++++++++++++++++-------- 3 files changed, 68 insertions(+), 8 deletions(-) diff --git a/src/locales/en.ts b/src/locales/en.ts index 2ef1ee19..c286c804 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -1230,6 +1230,22 @@ export default { message: 'The Besure Digital Intelligent Central Control Platform takes production operation as the core, uniformly integrating key business modules such as production planning, data collection, warehousing, equipment, energy, molds, quality, formulas and report analysis, to achieve full-process digital management from planning to execution, from equipment to products, and from data to decision-making.', productTitle: 'Overall production overview', + productionOverview: { + draftTasks: 'Draft', + submittedTasks: 'Submitted for review', + issuedTasks: 'Issued', + partiallyScheduledTasks: 'Partially scheduled', + pendingProductionTasks: 'Pending production', + inProductionTasks: 'In production', + completedTasks: 'Completed', + productionTaskCount: 'Total production tasks', + productionPlanCount: 'Production plan count', + plannedProductCount: 'Total planned products', + reportedWorkCount: 'Total reported work', + qualifiedProductCount: 'Qualified products', + unqualifiedProductCount: 'Unqualified products', + qualificationRate: 'Qualification rate' + }, placeholderCreateTimeStart: 'Start Date', placeholderCreateTimeEnd: 'End Date', productionSchedule: 'Real-time production progress', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 6ff743e2..c74144a5 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -1231,6 +1231,22 @@ export default { message: '必硕数字化智能中控平台以生产运营为核心,统一整合生产计划、数据采集、仓储、设备、能源、模具、质量、配方及报表分析等关键业务模块,实现从计划到执行、从设备到制品、从数据到决策的全流程数字化管理。', productTitle: '整体生产概况', + productionOverview: { + draftTasks: '草稿', + submittedTasks: '送审', + issuedTasks: '下达', + partiallyScheduledTasks: '部分排产', + pendingProductionTasks: '待生产', + inProductionTasks: '生产中', + completedTasks: '已完成', + productionTaskCount: '生产任务总数', + productionPlanCount: '生产计划单数', + plannedProductCount: '产品计划总数', + reportedWorkCount: '报工总数', + qualifiedProductCount: '产品合格数', + unqualifiedProductCount: '产品不合格数', + qualificationRate: '合格率' + }, placeholderCreateTimeStart: '开始日期', placeholderCreateTimeEnd: '结束日期', productionSchedule: '实时生产进度', diff --git a/src/views/Home/Index.vue b/src/views/Home/Index.vue index 80762c01..d3c0585a 100644 --- a/src/views/Home/Index.vue +++ b/src/views/Home/Index.vue @@ -23,13 +23,13 @@ v-model="productionOverviewRange" type="daterange" unlink-panels value-format="Y - +
{{ item.label }}
{{ item.value }}
- +
{{ item.label }}
{{ item.value }}
@@ -336,7 +336,7 @@ import { import { WeatherVO } from '@/api/home/info' import bannerImg from '@/assets/imgs/banner.png' -import { DashboardApi,DashboardProductVO,DeviceStatusVO } from '@/api/dashboard' +import { DashboardApi,DashboardProductVO,DeviceStatusVO,ItemVO } from '@/api/dashboard' import { formatDate } from '@/utils/formatTime' import { useRoute } from 'vue-router' defineOptions({ name: 'Home' }) @@ -380,9 +380,39 @@ const formatPercent = (value: number | undefined | null) => { return `${value}%` } -const productionOverviewLeft = ref<{ key: string; label: string; value: number; }[]>([]) +const taskOverviewLabelKeys: Record = { + '0': 'draftTasks', + '1': 'submittedTasks', + '2': 'issuedTasks', + '7': 'partiallyScheduledTasks', + '8': 'pendingProductionTasks', + '9': 'inProductionTasks', + '10': 'completedTasks', + '11': 'productionTaskCount' +} + +const planOverviewLabelKeys: Record = { + '5': 'productionPlanCount', + '6': 'plannedProductCount', + '7': 'reportedWorkCount', + '8': 'unqualifiedProductCount', + '9': 'qualificationRate', + '81': 'qualifiedProductCount' +} + +const localizeProductionOverviewItems = (items: ItemVO[] = [], labelKeys: Record) => + items.map((item) => { + const labelKey = labelKeys[item.key] + return { ...item, label: labelKey ? t(`home.productionOverview.${labelKey}`) : item.label } + }) + +const productionOverviewLeft = computed(() => + localizeProductionOverviewItems(production.value.taskItems, taskOverviewLabelKeys) +) -const productionOverviewCenter = ref<{ key: string; label: string; value: number; }[]>([]) +const productionOverviewCenter = computed(() => + localizeProductionOverviewItems(production.value.planItems, planOverviewLabelKeys) +) const plan = ref([]) @@ -571,8 +601,6 @@ const loadProductionOverview = async () => { const data = await DashboardApi.getProduction(buildProductionOverviewParams()) if (currentId !== productionOverviewRequestId) return production.value = data - productionOverviewLeft.value = production.value.taskItems - productionOverviewCenter.value = production.value.planItems } const handleProductionOverviewRangeChange = async () => { await loadProductionOverview() @@ -984,7 +1012,7 @@ getAllApi() display: flex; flex: 1; justify-content: space-between; - gap: 32px; + gap: 15px; } .production-overview-group-center {