黄伟杰 9 hours ago
commit 05218a4b01

@ -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',

@ -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: '实时生产进度',

@ -23,13 +23,13 @@ v-model="productionOverviewRange" type="daterange" unlink-panels value-format="Y
</div>
</div>
<el-row class="production-overview-row" :gutter="0">
<el-col :span="10" class="production-overview-group production-overview-group-left">
<el-col class="production-overview-group production-overview-group-left">
<div v-for="item in productionOverviewLeft" :key="item.key" class="production-overview-item">
<div class="production-overview-label">{{ item.label }}</div>
<div class="production-overview-value">{{ item.value }}</div>
</div>
</el-col>
<el-col :span="10" class="production-overview-group production-overview-group-center">
<el-col class="production-overview-group production-overview-group-center">
<div v-for="item in productionOverviewCenter" :key="item.key" class="production-overview-item">
<div class="production-overview-label">{{ item.label }}</div>
<div class="production-overview-value production-overview-value-primary">{{ item.value }}</div>
@ -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<string, string> = {
'0': 'draftTasks',
'1': 'submittedTasks',
'2': 'issuedTasks',
'7': 'partiallyScheduledTasks',
'8': 'pendingProductionTasks',
'9': 'inProductionTasks',
'10': 'completedTasks',
'11': 'productionTaskCount'
}
const planOverviewLabelKeys: Record<string, string> = {
'5': 'productionPlanCount',
'6': 'plannedProductCount',
'7': 'reportedWorkCount',
'8': 'unqualifiedProductCount',
'9': 'qualificationRate',
'81': 'qualifiedProductCount'
}
const localizeProductionOverviewItems = (items: ItemVO[] = [], labelKeys: Record<string, string>) =>
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<ProductionProgressItem[]>([])
@ -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 {

Loading…
Cancel
Save