Compare commits

...

3 Commits

@ -98,8 +98,8 @@
</template>
</el-table-column>
<!-- <el-table-column label="ID" align="center" prop="id" /> -->
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableRuleCodeColumn')" align="center" prop="ruleCode" />
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableRuleNameColumn')" align="center" prop="ruleName" />
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableRuleCodeColumn')" align="center" prop="ruleCode" sortable/>
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableRuleNameColumn')" align="center" prop="ruleName" sortable/>
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableRuleDescColumn')" align="center" prop="ruleDesc" />
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableMaxLengthColumn')" align="center" prop="maxLength" />
<el-table-column :label="t('FactoryModeling.AutocodeRule.tableIsPaddedColumn')" align="center" prop="isPadded">

@ -70,9 +70,9 @@
:default-expand-all="isExpandAll"
v-if="refreshTable"
>
<el-table-column :label="t('FactoryModeling.ProductCategory.tableCodeColumn')" align="center" prop="code" />
<el-table-column :label="t('FactoryModeling.ProductCategory.tableCodeColumn')" align="center" prop="code" sortable/>
<el-table-column :label="t('FactoryModeling.ProductCategory.tableNameColumn')" align="center" prop="name" />
<el-table-column :label="t('FactoryModeling.ProductCategory.tableSortColumn')" align="center" prop="sort" />
<el-table-column :label="t('FactoryModeling.ProductCategory.tableSortColumn')" align="center" prop="sort" sortable/>
<el-table-column :label="t('FactoryModeling.ProductCategory.tableStatusColumn')" align="center" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
@ -84,6 +84,7 @@
prop="createTime"
:formatter="dateFormatter"
width="180px"
sortable
/>
<el-table-column :label="t('FactoryModeling.ProductCategory.tableOperateColumn')" align="center">
<template #default="scope">

@ -63,11 +63,11 @@
<el-tab-pane label="其他" name="0" /> -->
</el-tabs>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column :label="t('FactoryModeling.ProductInformation.tableBarCodeColumn')" align="center" prop="barCode" />
<el-table-column :label="t('FactoryModeling.ProductInformation.tableNameColumn')" align="left" prop="name" width="220px"/>
<el-table-column :label="t('FactoryModeling.ProductInformation.tableStandardColumn')" align="center" prop="standard" />
<el-table-column :label="t('FactoryModeling.ProductInformation.tableCategoryColumn')" align="center" prop="subCategoryName" />
<el-table-column :label="t('FactoryModeling.ProductInformation.tableUnitColumn')" align="center" prop="unitName" />
<el-table-column :label="t('FactoryModeling.ProductInformation.tableBarCodeColumn')" align="center" prop="barCode" sortable/>
<el-table-column :label="t('FactoryModeling.ProductInformation.tableNameColumn')" align="left" prop="name" width="220px" sortable/>
<el-table-column :label="t('FactoryModeling.ProductInformation.tableStandardColumn')" align="center" prop="standard" sortable/>
<el-table-column :label="t('FactoryModeling.ProductInformation.tableCategoryColumn')" align="center" prop="subCategoryName" sortable/>
<el-table-column :label="t('FactoryModeling.ProductInformation.tableUnitColumn')" align="center" prop="unitName" sortable/>
<el-table-column :label="t('FactoryModeling.ProductInformation.tableStatusColumn')" align="center" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
@ -79,6 +79,7 @@
prop="createTime"
:formatter="dateFormatter"
width="180px"
sortable
/>
<el-table-column :label="t('FactoryModeling.ProductInformation.tableOperateColumn')" align="center" width="150px">
<template #default="scope">

@ -71,6 +71,7 @@
:label="t('FactoryModeling.ProductUnit.tableNameColumn')"
align="center"
prop="name"
sortable
/>
<el-table-column
:label="t('FactoryModeling.ProductUnit.tablePrimaryFlagColumn')"
@ -94,6 +95,7 @@
prop="createTime"
:formatter="dateFormatter"
width="180px"
sortable
/>
<el-table-column :label="t('FactoryModeling.ProductUnit.tableOperateColumn')" align="center">
<template #default="scope">

@ -15,6 +15,7 @@
v-loading="treeLoading"
:data="treeData"
:props="treeProps"
:default-expanded-keys="defaultExpandedKeys"
node-key="id"
show-checkbox
check-strictly
@ -98,6 +99,7 @@ type DeviceTreeNode = {
label: string
type: TreeNodeType
children?: DeviceTreeNode[]
orgClass?: string
deviceId?: number
modelId?: number
paramKey?: string
@ -135,6 +137,7 @@ const treeLoading = ref(false)
const keyword = ref('')
const treeProps = { children: 'children', label: 'label', disabled: 'disabled' }
const treeData = ref<DeviceTreeNode[]>([])
const defaultExpandedKeys = ref<string[]>([])
const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss'
const MAX_DATE_RANGE_HOURS = 8
@ -309,6 +312,7 @@ const buildTreeFromApi = (orgs: ApiTreeOrg[]): DeviceTreeNode[] => {
id: `org-${org.id}`,
label: org?.name ?? String(org?.id ?? ''),
type: 'device',
orgClass: org?.orgClass ? String(org.orgClass) : undefined,
children: children.length ? children : undefined,
disabled: true
}
@ -317,6 +321,32 @@ const buildTreeFromApi = (orgs: ApiTreeOrg[]): DeviceTreeNode[] => {
return Array.isArray(orgTree) ? orgTree.map(toOrgNode) : []
}
const hasOrgClassInSubtree = (node: DeviceTreeNode, targetOrgClass: string): boolean => {
const children = Array.isArray(node?.children) ? node.children : []
for (const child of children) {
if (child?.orgClass === targetOrgClass) return true
if (hasOrgClassInSubtree(child, targetOrgClass)) return true
}
return false
}
const buildDefaultExpandedKeys = (nodes: DeviceTreeNode[], stopOrgClass: string): string[] => {
const keys: string[] = []
const walk = (list: DeviceTreeNode[]) => {
for (const node of list) {
if (node?.type === 'device' && node?.orgClass && node.orgClass !== stopOrgClass) {
if (hasOrgClassInSubtree(node, stopOrgClass)) {
keys.push(node.id)
}
}
const children = Array.isArray(node?.children) ? node.children : []
if (children.length) walk(children)
}
}
walk(nodes)
return Array.from(new Set(keys))
}
const extractApiOrgs = (res: any): ApiTreeOrg[] => {
if (Array.isArray(res)) return res as ApiTreeOrg[]
if (Array.isArray(res?.data)) return res.data as ApiTreeOrg[]
@ -330,6 +360,9 @@ const loadTree = async () => {
try {
const res = await OrganizationApi.deviceParameterAnalysis({ keyword: keyword.value || undefined, showDevices: 1 })
treeData.value = buildTreeFromApi(extractApiOrgs(res))
defaultExpandedKeys.value = buildDefaultExpandedKeys(treeData.value, 'pipeline')
await nextTick()
treeRef.value?.setExpandedKeys?.(defaultExpandedKeys.value)
if (keyword.value) {
treeRef.value?.setCurrentKey?.(undefined)
treeRef.value?.setCheckedKeys?.([])

@ -91,11 +91,27 @@
min-width="140px"
/> -->
<el-table-column
:label="t('DataCollection.RunReport.tableUtilizationRateColumn')"
align="center"
prop="utilizationRate"
min-width="120px"
/>
>
<template #header>
<span>{{ t('DataCollection.RunReport.tableUtilizationRateColumn') }}</span>
<el-tooltip placement="top" :offset="10">
<template #content>
<div style="white-space: pre-line;">
开机率 = 在线时间 / 总的时间<br/>
在线时间 = 运行时间 + 空闲时间 + 故障时间<br/>
稼动率 = 运行时间 / 在线时间<br/>
开机率 =运行时间 + 空闲时间 + 故障时间/ 总的时间
</div>
</template>
<el-icon style="margin-left: 4px; cursor: pointer; color: #909399; vertical-align: middle;">
<QuestionFilled />
</el-icon>
</el-tooltip>
</template>
</el-table-column>
<el-table-column
:label="t('DataCollection.RunReport.tablePowerOnRateColumn')"
align="center"
@ -125,6 +141,7 @@
import dayjs from 'dayjs'
import download from '@/utils/download'
import { DeviceOperationRecordApi, type DeviceOperationRecordVO, type DeviceOperationRecordPageParams } from '@/api/iot/deviceOperationRecord'
import {QuestionFilled} from "@element-plus/icons-vue";
defineOptions({ name: 'IotRunReport' })

@ -92,11 +92,11 @@
</template>
</el-table-column>
<!-- <el-table-column label="ID" align="center" prop="id" /> -->
<el-table-column :label="t('FactoryModeling.ProductBOM.tableCodeColumn')" align="center" prop="code" />
<el-table-column :label="t('FactoryModeling.ProductBOM.tableCodeColumn')" align="center" prop="code" sortable/>
<el-table-column :label="t('FactoryModeling.ProductBOM.tableVersionColumn')" align="center" prop="version" />
<el-table-column :label="t('FactoryModeling.ProductBOM.tableProductColumn')" align="center" prop="productName" />
<el-table-column :label="t('FactoryModeling.ProductBOM.tableUnitColumn')" align="center" prop="unitName" />
<el-table-column :label="t('FactoryModeling.ProductBOM.tableYieldRateColumn')" align="center" prop="yieldRate" />
<el-table-column :label="t('FactoryModeling.ProductBOM.tableYieldRateColumn')" align="center" prop="yieldRate" sortable/>
<el-table-column :label="t('FactoryModeling.ProductBOM.tableRemarkColumn')" align="center" prop="remark" />
<el-table-column :label="t('FactoryModeling.ProductBOM.tableEnableColumn')" align="center" prop="isEnable">
<template #default="scope">
@ -109,6 +109,7 @@
prop="createTime"
:formatter="dateFormatter"
width="180px"
sortable
/>
<el-table-column :label="t('FactoryModeling.ProductBOM.tableOperateColumn')" align="center" fixed="right" width="150">
<template #default="scope">

@ -123,6 +123,7 @@
prop="actualFeedingTime"
:formatter="dateFormatter"
width="180px"
sortable
/>
<el-table-column
:label="t('ProductionPlan.FeedingRecord.tableFeedingTimeColumn')"

@ -126,7 +126,7 @@
<el-table-column :label="t('FactoryModeling.FactoryStructure.tableCodeColumn')" align="center" prop="code" />
<el-table-column :label="t('FactoryModeling.FactoryStructure.tableNameColumn')" align="center" prop="name" />
<el-table-column :label="t('FactoryModeling.FactoryStructure.tableSortColumn')" align="center" prop="sort" />
<el-table-column :label="t('FactoryModeling.FactoryStructure.tableSortColumn')" align="center" prop="sort" sortable />
<!-- <el-table-column label="负责人" align="center" prop="workerUserId" />-->
<el-table-column :label="t('FactoryModeling.FactoryStructure.tableMachineColumn')" align="center" prop="machineName" />
<!-- <el-table-column label="组织状态" align="center" prop="status">
@ -150,6 +150,7 @@
prop="createTime"
:formatter="dateFormatter"
width="180px"
sortable
/>
<el-table-column :label="t('FactoryModeling.FactoryStructure.tableOperateColumn')" align="center" fixed="right" width="150">
<template #default="scope">

@ -162,13 +162,13 @@
</el-tabs>
</template>
</el-table-column>
<el-table-column :label="t('ProductionPlan.Plan.tableCodeColumn')" align="center" prop="code" min-width="180px" />
<el-table-column :label="t('ProductionPlan.Plan.tableCodeColumn')" align="center" prop="code" min-width="180px" sortable/>
<el-table-column :label="t('ProductionPlan.Plan.tableProductColumn')" align="center" prop="productName" min-width="200px" sortable/>
<!-- <el-table-column label="任务单" align="center" prop="taskCode" min-width="150px" />-->
<el-table-column :label="t('ProductionPlan.Plan.tableFeedingPipelineColumn')" align="center" prop="feedingPipelineName"/>
<el-table-column :label="t('ProductionPlan.Plan.tablePlanNumberColumn')" align="center" prop="planNumber" />
<el-table-column :label="t('ProductionPlan.Plan.tableFinishNumberColumn')" align="center" prop="wangongNumber" />
<el-table-column :label="t('ProductionPlan.Plan.tablePassRateColumn')" align="center" prop="passRate" />
<el-table-column :label="t('ProductionPlan.Plan.tablePlanNumberColumn')" align="center" prop="planNumber" sortable/>
<el-table-column :label="t('ProductionPlan.Plan.tableFinishNumberColumn')" align="center" prop="wangongNumber" sortable/>
<el-table-column :label="t('ProductionPlan.Plan.tablePassRateColumn')" align="center" prop="passRate" sortable/>
<!-- <el-table-column label="热压数量" align="center" prop="reyaNumber" /> -->
<el-table-column :label="t('ProductionPlan.Plan.tableStatusColumn')" align="center" prop="status" sortable>
<template #default="scope">
@ -181,8 +181,8 @@
</template>
</el-table-column> -->
<!-- <el-table-column label="领料人" align="center" prop="productionManagerName" /> -->
<el-table-column :label="t('ProductionPlan.Plan.tablePlanStartTimeColumn')" align="center" sortable prop="planStartTime" :formatter="dateFormatter2" width="150px"/>
<el-table-column :label="t('ProductionPlan.Plan.tablePlanEndTimeColumn')" align="center" sortable prop="planEndTime" :formatter="dateFormatter2" width="150px"/>
<el-table-column :label="t('ProductionPlan.Plan.tablePlanStartTimeColumn')" align="center" sortable prop="planStartTime" :formatter="dateFormatter2" width="150px" sortable/>
<el-table-column :label="t('ProductionPlan.Plan.tablePlanEndTimeColumn')" align="center" sortable prop="planEndTime" :formatter="dateFormatter2" width="150px" sortable/>
<el-table-column :label="t('ProductionPlan.Plan.tableIsZjColumn')" align="center" prop="isZj" v-if="activeName === '6'">
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_ZJ_PRODUCT" :value="scope.row.isZj" />

@ -107,9 +107,9 @@
highlight-current-row
@current-change="handleCurrentChange"
>
<el-table-column :label="t('ProductionPlan.Task.tableCodeColumn')" align="center" prop="code" width="150px"/>
<el-table-column :label="t('ProductionPlan.Task.tableOrderDateColumn')" align="center" prop="orderDate" :formatter="dateFormatter2" />
<el-table-column :label="t('ProductionPlan.Task.tableDeliveryDateColumn')" align="center" prop="deliveryDate" :formatter="dateFormatter2"/>
<el-table-column :label="t('ProductionPlan.Task.tableCodeColumn')" align="center" prop="code" width="150px" sortable/>
<el-table-column :label="t('ProductionPlan.Task.tableOrderDateColumn')" align="center" prop="orderDate" :formatter="dateFormatter2" sortable/>
<el-table-column :label="t('ProductionPlan.Task.tableDeliveryDateColumn')" align="center" prop="deliveryDate" :formatter="dateFormatter2" sortable/>
<el-table-column :label="t('ProductionPlan.Task.tableTaskTypeColumn')" align="center" prop="taskType">
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_TASK_TYPE" :value="scope.row.taskType" />

@ -98,9 +98,9 @@
highlight-current-row
@current-change="handleCurrentChange"
>
<el-table-column :label="t('ProductionPlan.TaskSummary.tableTaskCodeColumn')" align="center" prop="code" width="200px"/>
<el-table-column :label="t('ProductionPlan.TaskSummary.tableOrderDateColumn')" align="center" prop="orderDate" :formatter="dateFormatter2" />
<el-table-column :label="t('ProductionPlan.TaskSummary.tableDeliveryDateColumn')" align="center" prop="deliveryDate" :formatter="dateFormatter2"/>
<el-table-column :label="t('ProductionPlan.TaskSummary.tableTaskCodeColumn')" align="center" prop="code" width="200px" sortable/>
<el-table-column :label="t('ProductionPlan.TaskSummary.tableOrderDateColumn')" align="center" prop="orderDate" :formatter="dateFormatter2" sortable/>
<el-table-column :label="t('ProductionPlan.TaskSummary.tableDeliveryDateColumn')" align="center" prop="deliveryDate" :formatter="dateFormatter2" sortable/>
<el-table-column :label="t('ProductionPlan.TaskSummary.tableStatusColumn')" align="center" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_TASK_STATUS" :value="scope.row.status" />

@ -83,14 +83,14 @@
@current-change="handleCurrentChange"
>
<!-- <el-table-column label="ID" align="center" prop="id" /> -->
<el-table-column :label="t('FactoryModeling.WorkTeam.tableTeamNameColumn')" align="center" prop="teamName" />
<el-table-column :label="t('FactoryModeling.WorkTeam.tableTeamNameColumn')" align="center" prop="teamName" sortable/>
<el-table-column :label="t('FactoryModeling.WorkTeam.tableLeaderColumn')" align="center" prop="teamLeaderName" />
<el-table-column :label="t('FactoryModeling.WorkTeam.tableGroupTypeColumn')" align="center" prop="groupType">
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_GROUP_TYPE" :value="scope.row.groupType" />
</template>
</el-table-column>
<el-table-column :label="t('FactoryModeling.WorkTeam.tableWorkTimeColumn')" align="center" prop="startTime">
<el-table-column :label="t('FactoryModeling.WorkTeam.tableWorkTimeColumn')" align="center" prop="startTime" sortable>
<template #default="scope">
<el-text>{{getHour(scope.row.startTime)+'-'+getHour(scope.row.endTime)}}</el-text>
</template>
@ -112,6 +112,7 @@
prop="createTime"
:formatter="dateFormatter"
width="180px"
sortable
/>
<el-table-column :label="t('FactoryModeling.WorkTeam.tableOperateColumn')" align="center">
<template #default="scope">

Loading…
Cancel
Save