@ -2,9 +2,9 @@
< div class = "home-page" >
< div class = "home-page" >
< div class = "home-welcome" >
< div class = "home-welcome" >
< div class = "home-welcome-left" >
< div class = "home-welcome-left" >
< div class = "home-welcome-title text-white!" > 欢迎您使用必硕数字化智能中控平台 < / div >
< div class = "home-welcome-title text-white!" > { { t ( "home.welcome" ) } } < / div >
< div class = "home-welcome-desc text-white! opacity-80" >
< div class = "home-welcome-desc text-white! opacity-80" >
必硕数字化智能中控平台以生产运营为核心 , 统一整合生产计划 、 数据采集 、 仓储 、 设备 、 能源 、 模具 、 质量 、 配方及报表分析等关键业务模块 , 实现从计划到执行 、 从设备到制品 、 从数据到决策的全流程数字化管理 。
{ { t ( "home.message" ) } }
< / div >
< / div >
< / div >
< / div >
< div class = "home-welcome-right" >
< div class = "home-welcome-right" >
@ -15,11 +15,11 @@ alt="banner" :src="bannerImg" fit="contain" class="home-welcome-image"
< / div >
< / div >
< el -card shadow = "never" class = "home-section" >
< el -card shadow = "never" class = "home-section" >
< div class = "section-header" >
< div class = "section-header" >
< div class = "section-title" > 整体生产概况 < / div >
< div class = "section-title" > { { t ( "home.productTitle" ) } } < / div >
< div >
< div >
< el -date -picker
< el -date -picker
v - model = "productionOverviewRange" type = "daterange" unlink - panels value - format = "YYYY-MM-DD"
v - model = "productionOverviewRange" type = "daterange" unlink - panels value - format = "YYYY-MM-DD"
start - placeholder = " 开始日期" end - placeholder = "结束日期 " size = "small" @ change = "handleProductionOverviewRangeChange" / >
: start - placeholder = " t('home.placeholderCreateTimeStart')" : end - placeholder = "t('home.placeholderCreateTimeEnd') " size = "small" @ change = "handleProductionOverviewRangeChange" / >
< / div >
< / div >
< / div >
< / div >
< el -row class = "production-overview-row" :gutter ="0" >
< el -row class = "production-overview-row" :gutter ="0" >
@ -45,14 +45,14 @@ v-model="productionOverviewRange" type="daterange" unlink-panels value-format="Y
< / e l - c a r d >
< / e l - c a r d >
< el -card shadow = "never" class = "home-section" >
< el -card shadow = "never" class = "home-section" >
< div class = "section-header" >
< div class = "section-header" >
< div class = "section-title" > 实时生产进度 < / div >
< div class = "section-title" > { { t ( "home.productionSchedule" ) } } < / div >
< / div >
< / div >
< el -carousel height = "190px" arrow = "always" indicator -position = " none " :interval ="15000" class = "progress-carousel" >
< el -carousel height = "190px" arrow = "always" indicator -position = " none " :interval ="15000" class = "progress-carousel" >
< el -carousel -item v-for ="(group, index) in productionProgressGroups" :key ="index" >
< el -carousel -item v-for ="(group, index) in productionProgressGroups" :key ="index" >
< el -row :gutter ="16" >
< el -row :gutter ="16" >
< el -col v-for ="item in group" :key="item.id" :xl="8" :lg="8" :md="8" :sm="12" :xs ="24" >
< el -col v-for ="item in group" :key="item.id" :xl="8" :lg="8" :md="8" :sm="12" :xs ="24" >
< div class = "progress-card" >
< div class = "progress-card" >
< div class = "progress-card-header" > 生产计划 { { item . code } }
< div class = "progress-card-header" > { { t ( "home.productionPlan" ) } } { { item . code } }
< el -tag :type ="getPlanStatusTagType(item.status)" effect = "light" >
< el -tag :type ="getPlanStatusTagType(item.status)" effect = "light" >
{ { getPlanStatusLabel ( item . status ) } }
{ { getPlanStatusLabel ( item . status ) } }
< / e l - t a g >
< / e l - t a g >
@ -60,45 +60,45 @@ v-model="productionOverviewRange" type="daterange" unlink-panels value-format="Y
< div class = "progress-card-body" >
< div class = "progress-card-body" >
< div class = "progress-col" >
< div class = "progress-col" >
< div class = "progress-row" >
< div class = "progress-row" >
< span class = "progress-label" > 产品名称 < / span >
< span class = "progress-label" > { { t ( "home.productionName" ) } } < / span >
< span class = "progress-value" > { { item . productName } } < / span >
< span class = "progress-value" > { { item . productName } } < / span >
< / div >
< / div >
< div class = "progress-row" >
< div class = "progress-row" >
< span class = "progress-label" > 计划数量 < / span >
< span class = "progress-label" > { { t ( "home.planNumber" ) } } < / span >
< span class = "progress-value" > { { item . planNumber } } < / span >
< span class = "progress-value" > { { item . planNumber } } < / span >
< / div >
< / div >
< div class = "progress-row" >
< div class = "progress-row" >
< span class = "progress-label" > 生产线 < / span >
< span class = "progress-label" > { { t ( "home.productionLine" ) } } < / span >
< span class = "progress-value" > { { item . feedingPipelineName } } < / span >
< span class = "progress-value" > { { item . feedingPipelineName } } < / span >
< / div >
< / div >
< div class = "progress-row" >
< div class = "progress-row" >
< span class = "progress-label" > 计划开始时间 < / span >
< span class = "progress-label" > { { t ( "home.planStartTime" ) } } < / span >
< span class = "progress-value" > { { formatDate ( item . planStartTime ) } } < / span >
< span class = "progress-value" > { { formatDate ( item . planStartTime ) } } < / span >
< / div >
< / div >
< div class = "progress-row" >
< div class = "progress-row" >
< span class = "progress-label" > 计划结束时间 < / span >
< span class = "progress-label" > { { t ( "home.planEndTime" ) } } < / span >
< span class = "progress-value" > { { formatDate ( item . planEndTime ) } } < / span >
< span class = "progress-value" > { { formatDate ( item . planEndTime ) } } < / span >
< / div >
< / div >
< / div >
< / div >
< div class = "progress-col" >
< div class = "progress-col" >
< div class = "progress-row" >
< div class = "progress-row" >
< span class = "progress-label" > 完工数量 < / span >
< span class = "progress-label" > { { t ( "home.completedQuantity" ) } } < / span >
< span class = "progress-value" > { { item . wangongNumber } } < / span >
< span class = "progress-value" > { { item . wangongNumber } } < / span >
< / div >
< / div >
< div class = "progress-row" >
< div class = "progress-row" >
< span class = "progress-label" > 合格数量 < / span >
< span class = "progress-label" > { { t ( "home.qualifiedQuantity" ) } } < / span >
< span class = "progress-value" > { { item . passNumber } } < / span >
< span class = "progress-value" > { { item . passNumber } } < / span >
< / div >
< / div >
< div class = "progress-row" >
< div class = "progress-row" >
< span class = "progress-label" > 不合格数量 < / span >
< span class = "progress-label" > { { t ( "home.unqualifiedQuantity" ) } } < / span >
< span class = "progress-value" > { { item . noPassNumber } } % < / span >
< span class = "progress-value" > { { item . noPassNumber } } % < / span >
< / div >
< / div >
< div class = "progress-row" >
< div class = "progress-row" >
< span class = "progress-label" > 合格率 < / span >
< span class = "progress-label" > { { t ( "home.yieldRate" ) } } < / span >
< span class = "progress-value" > { { item . passRate } } < / span >
< span class = "progress-value" > { { item . passRate } } < / span >
< / div >
< / div >
< div class = "progress-row" >
< div class = "progress-row" >
< span class = "progress-label" > 实际结束时间 < / span >
< span class = "progress-label" > { { t ( "home.actualEndTime" ) } } < / span >
< span class = "progress-value" > { { formatDate ( item . endTime ) } } < / span >
< span class = "progress-value" > { { formatDate ( item . endTime ) } } < / span >
< / div >
< / div >
< / div >
< / div >
@ -111,7 +111,7 @@ v-model="productionOverviewRange" type="daterange" unlink-panels value-format="Y
< / e l - c a r d >
< / e l - c a r d >
< el -card shadow = "never" class = "home-section" >
< el -card shadow = "never" class = "home-section" >
< div class = "section-header" >
< div class = "section-header" >
< div class = "section-title" > 待办任务 < / div >
< div class = "section-title" > { { t ( "home.gtasks" ) } } < / div >
< / div >
< / div >
< el -carousel height = "160px" arrow = "always" indicator -position = " none " class = "todo-carousel" :interval ="15000" >
< el -carousel height = "160px" arrow = "always" indicator -position = " none " class = "todo-carousel" :interval ="15000" >
< el -carousel -item v-for ="(group, index) in todoTaskGroups" :key ="index" >
< el -carousel -item v-for ="(group, index) in todoTaskGroups" :key ="index" >
@ -119,10 +119,10 @@ v-model="productionOverviewRange" type="daterange" unlink-panels value-format="Y
< el -col v-for ="item in group" :key="item.id" :xl="6" :lg="6" :md="12" :sm="12" :xs ="24" >
< el -col v-for ="item in group" :key="item.id" :xl="6" :lg="6" :md="12" :sm="12" :xs ="24" >
< div class = "todo-card" >
< div class = "todo-card" >
< div class = "todo-title" > { { item . name } } < / div >
< div class = "todo-title" > { { item . name } } < / div >
< div class = "todo-sub" > 任务编号 : { { item . code } } < / div >
< div class = "todo-sub" > { { t ( "home.missionNumber" ) } } : { { item . code } } < / div >
< div class = "todo-sub" > 任务类型 : { { item . type } } < / div >
< div class = "todo-sub" > { { t ( "home.taskType" ) } } : { { item . type } } < / div >
< div class = "todo-sub" > 目标 : { { item . deviceName } } < / div >
< div class = "todo-sub" > { { t ( "home.target" ) } } : { { item . deviceName } } < / div >
< div class = "todo-sub" > 创建时间 : { { formatDate ( item . createTime ) } } < / div >
< div class = "todo-sub" > { { t ( "home.creationTime" ) } } : { { formatDate ( item . createTime ) } } < / div >
< / div >
< / div >
< / e l - c o l >
< / e l - c o l >
< / e l - r o w >
< / e l - r o w >
@ -133,7 +133,7 @@ v-model="productionOverviewRange" type="daterange" unlink-panels value-format="Y
< el -col :xl ="12" :lg ="12" :md ="24" :sm ="24" :xs ="24" class = "device-alarm-col" >
< el -col :xl ="12" :lg ="12" :md ="24" :sm ="24" :xs ="24" class = "device-alarm-col" >
< el -card shadow = "never" class = "device-alarm-card" >
< el -card shadow = "never" class = "device-alarm-card" >
< div class = "section-header" >
< div class = "section-header" >
< div class = "section-title" > 设备 < / div >
< div class = "section-title" > { { t ( "home.equipment" ) } } < / div >
<!-- < div class = "section-actions" >
<!-- < div class = "section-actions" >
< el -button type = "default" size = "small" > 查看文档 < / e l - b u t t o n >
< el -button type = "default" size = "small" > 查看文档 < / e l - b u t t o n >
< el -button type = "primary" size = "small" > 添加设备 < / e l - b u t t o n >
< el -button type = "primary" size = "small" > 添加设备 < / e l - b u t t o n >
@ -152,7 +152,7 @@ v-model="productionOverviewRange" type="daterange" unlink-panels value-format="Y
< el -col :xl ="12" :lg ="12" :md ="24" :sm ="24" :xs ="24" class = "device-alarm-col mt-16px xl:mt-0 lg:mt-0" >
< el -col :xl ="12" :lg ="12" :md ="24" :sm ="24" :xs ="24" class = "device-alarm-col mt-16px xl:mt-0 lg:mt-0" >
< el -card shadow = "never" class = "device-alarm-card" >
< el -card shadow = "never" class = "device-alarm-card" >
< div class = "section-header" >
< div class = "section-header" >
< div class = "section-title" > 模具 < / div >
< div class = "section-title" > { { t ( "home.mould" ) } } < / div >
< / div >
< / div >
< el -row :gutter ="12" class = "mt-16px" >
< el -row :gutter ="12" class = "mt-16px" >
< el -col v-for ="item in moldStatusCards" :key="item.key" :span ="8" >
< el -col v-for ="item in moldStatusCards" :key="item.key" :span ="8" >
@ -167,7 +167,7 @@ v-model="productionOverviewRange" type="daterange" unlink-panels value-format="Y
< / e l - r o w >
< / e l - r o w >
< el -card shadow = "never" class = "home-section" >
< el -card shadow = "never" class = "home-section" >
< div class = "section-header" >
< div class = "section-header" >
< div class = "section-title" > 采集设备整体情况 < / div >
< div class = "section-title" > { { t ( "home.equipmentTile" ) } } < / div >
<!-- < div >
<!-- < div >
< el -date -picker
< el -date -picker
v - model = "deviceOverviewRange" type = "daterange" unlink - panels value - format = "YYYY-MM-DD"
v - model = "deviceOverviewRange" type = "daterange" unlink - panels value - format = "YYYY-MM-DD"
@ -177,43 +177,43 @@ v-model="deviceOverviewRange" type="daterange" unlink-panels value-format="YYYY-
< el -row class = "device-overview-row" :gutter ="0" v -model = " formData " >
< el -row class = "device-overview-row" :gutter ="0" v -model = " formData " >
< el -col :span ="2" >
< el -col :span ="2" >
< div class = "device-overview-item" >
< div class = "device-overview-item" >
< div class = "production-overview-label" > 总设备数 < / div >
< div class = "production-overview-label" > { { t ( "home.equipmentCount" ) } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . totalDevices } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . totalDevices } } < / div >
< / div >
< / div >
< / e l - c o l >
< / e l - c o l >
< el -col :span ="2" >
< el -col :span ="2" >
< div class = "device-overview-item" >
< div class = "device-overview-item" >
< div class = "production-overview-label" > 运行 < / div >
< div class = "production-overview-label" > { { t ( "home.operation" ) } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . runningCount } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . runningCount } } < / div >
< / div >
< / div >
< / e l - c o l >
< / e l - c o l >
< el -col :span ="2" >
< el -col :span ="2" >
< div class = "device-overview-item" >
< div class = "device-overview-item" >
< div class = "production-overview-label" > 待机中 < / div >
< div class = "production-overview-label" > { { t ( "home.standbyMode" ) } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . standbyCount } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . standbyCount } } < / div >
< / div >
< / div >
< / e l - c o l >
< / e l - c o l >
< el -col :span ="2" >
< el -col :span ="2" >
< div class = "device-overview-item" >
< div class = "device-overview-item" >
< div class = "production-overview-label" > 故障中 < / div >
< div class = "production-overview-label" > { { t ( "home.malfunction" ) } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . faultCount } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . faultCount } } < / div >
< / div >
< / div >
< / e l - c o l >
< / e l - c o l >
< el -col :span ="2" >
< el -col :span ="2" >
< div class = "device-overview-item" >
< div class = "device-overview-item" >
< div class = "production-overview-label" > 报警中 < / div >
< div class = "production-overview-label" > { { t ( "home.alerting" ) } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . warningCount } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . warningCount } } < / div >
< / div >
< / div >
< / e l - c o l >
< / e l - c o l >
< el -col :span ="2" >
< el -col :span ="2" >
< div class = "device-overview-item" >
< div class = "device-overview-item" >
< div class = "production-overview-label" > 利用率 < / div >
< div class = "production-overview-label" > { { t ( "home.useRatio" ) } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . utilizationRate } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . utilizationRate } } < / div >
< / div >
< / div >
< / e l - c o l >
< / e l - c o l >
< el -col :span ="2" >
< el -col :span ="2" >
< div class = "device-overview-item" >
< div class = "device-overview-item" >
< div class = "production-overview-label" > 故障率 < / div >
< div class = "production-overview-label" > { { t ( "home.failureRate" ) } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . faultRate } } < / div >
< div class = "production-overview-value production-overview-value-primary" > { { formData ? . faultRate } } < / div >
< / div >
< / div >
< / e l - c o l >
< / e l - c o l >
@ -224,7 +224,7 @@ v-model="deviceOverviewRange" type="daterange" unlink-panels value-format="YYYY-
< el -card shadow = "never" >
< el -card shadow = "never" >
< template # header >
< template # header >
< div class = "h-3 flex justify-between" >
< div class = "h-3 flex justify-between" >
< span > 设备维修数量统计 < / span >
< span > { { t ( "home.equipmentTitle" ) } } < / span >
< / div >
< / div >
< / template >
< / template >
< Echart :options ="deviceRepairLineOptions" :height ="260" / >
< Echart :options ="deviceRepairLineOptions" :height ="260" / >
@ -234,7 +234,7 @@ v-model="deviceOverviewRange" type="daterange" unlink-panels value-format="YYYY-
< el -card shadow = "never" >
< el -card shadow = "never" >
< template # header >
< template # header >
< div class = "h-3 flex justify-between" >
< div class = "h-3 flex justify-between" >
< span > 设备分类统计 < / span >
< span > { { t ( "home.equipmentClass" ) } } < / span >
< / div >
< / div >
< / template >
< / template >
< Echart :options ="deviceCategoryPieOptionsData" :height ="260" / >
< Echart :options ="deviceCategoryPieOptionsData" :height ="260" / >
@ -244,7 +244,7 @@ v-model="deviceOverviewRange" type="daterange" unlink-panels value-format="YYYY-
< el -card shadow = "never" >
< el -card shadow = "never" >
< template # header >
< template # header >
< div class = "h-3 flex justify-between" >
< div class = "h-3 flex justify-between" >
< span > 按模具分类统计 , 取模具数量最多的前10项 < / span >
< span > { { t ( "home.equipmentMessage" ) } } < / span >
< / div >
< / div >
< / template >
< / template >
< Echart :options ="moldTypeBarOptionsData" :height ="260" / >
< Echart :options ="moldTypeBarOptionsData" :height ="260" / >