|
@@ -67,7 +67,17 @@
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="24">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="t('iotDevice.code')" prop="deviceCode">
|
|
|
+ <el-input type="text" v-model="formData.deviceCode" disabled/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="t('iotDevice.name')" prop="deviceName">
|
|
|
+ <el-input type="text" v-model="formData.deviceName" disabled/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
<el-form-item :label="t('faultForm.remark')" prop="remark">
|
|
|
<el-input v-model="formData.remark" type="textarea" :placeholder="t('faultForm.rHolder')" />
|
|
|
</el-form-item>
|
|
@@ -90,20 +100,35 @@
|
|
|
fixed="left"
|
|
|
/>
|
|
|
<el-table-column :label="t('bomList.bomNode')" align="center" prop="bomNodeId" v-if="false"/>
|
|
|
- <el-table-column :label="t('iotDevice.code')" align="center" prop="deviceCode" :width="columnWidths.deviceCode" fixed="left">
|
|
|
+ <el-table-column :label="t('iotDevice.code')" align="center" prop="deviceCode" :width="columnWidths.deviceCode" fixed="left" v-if="false">
|
|
|
<template #default="{ row }">
|
|
|
<div class="full-content-cell"> <!-- 自定义样式 -->
|
|
|
{{ row.deviceCode }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column :label="t('iotDevice.name')" align="center" prop="deviceName" :width="columnWidths.deviceName" fixed="left">
|
|
|
+ <el-table-column :label="t('iotDevice.name')" align="center" prop="deviceName" :width="columnWidths.deviceName" fixed="left" v-if="false">
|
|
|
<template #default="{ row }">
|
|
|
<div class="full-content-cell"> <!-- 自定义样式 -->
|
|
|
{{ row.deviceName }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+ <!-- 保养项组列 -->
|
|
|
+ <el-table-column
|
|
|
+ v-if="hasGroupInCurrentPage"
|
|
|
+ :label="t('mainPlan.MaintItemsGroup')"
|
|
|
+ align="center"
|
|
|
+ prop="group"
|
|
|
+ fixed="left"
|
|
|
+ :width="columnWidths.group"
|
|
|
+ >
|
|
|
+ <template #default="{ row }">
|
|
|
+ <div class="full-content-cell">
|
|
|
+ {{ row.group }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column :label="t('mainPlan.MaintItems')" align="center" prop="name"
|
|
|
:show-overflow-tooltip="false" :width="columnWidths.name" fixed="left">
|
|
|
<template #default="{ row }">
|
|
@@ -684,6 +709,8 @@ const maintItemsWidth = ref('auto')
|
|
|
const lastNaturalDateWatchers = ref(new Map())
|
|
|
|
|
|
const columnWidths = ref<Record<string, string>>({});
|
|
|
+// 响应式变量
|
|
|
+const currentPageSpanArr = ref<number[]>([])
|
|
|
|
|
|
const formData = ref({
|
|
|
id: undefined,
|
|
@@ -699,6 +726,8 @@ const formData = ref({
|
|
|
remark: undefined,
|
|
|
status: undefined,
|
|
|
devicePersons: '',
|
|
|
+ deviceCode: '',
|
|
|
+ deviceName: ''
|
|
|
})
|
|
|
|
|
|
const formRules = reactive({
|
|
@@ -1334,8 +1363,9 @@ const calculateAllColumnsWidth = () => {
|
|
|
// 需要自适应的列配置
|
|
|
const autoColumns = [
|
|
|
{ prop: 'serial', label: t('iotDevice.serial') },
|
|
|
- { prop: 'deviceCode', label: t('iotMaintain.deviceCode') },
|
|
|
- { prop: 'deviceName', label: t('iotMaintain.deviceName') },
|
|
|
+ // { prop: 'deviceCode', label: t('iotMaintain.deviceCode') },
|
|
|
+ // { prop: 'deviceName', label: t('iotMaintain.deviceName') },
|
|
|
+ { prop: 'group', label: t('mainPlan.MaintItemsGroup') },
|
|
|
{
|
|
|
prop: 'totalRunTime',
|
|
|
label: t('operationFillForm.sumTime'),
|
|
@@ -1407,7 +1437,7 @@ const calculateAllColumnsWidth = () => {
|
|
|
});
|
|
|
|
|
|
// 固定列特殊处理 - 增加额外空间
|
|
|
- ['serial', 'deviceCode', 'deviceName', 'name'].forEach(prop => {
|
|
|
+ ['serial', 'name'].forEach(prop => {
|
|
|
if (newWidths[prop]) {
|
|
|
newWidths[prop] += FIXED_COLUMN_PADDING;
|
|
|
}
|
|
@@ -1601,6 +1631,11 @@ onMounted(async () => {
|
|
|
list.value = []
|
|
|
if (Array.isArray(data)) {
|
|
|
list.value = data.map(item => {
|
|
|
+ // 提取分组名称
|
|
|
+ const group = item.name && item.name.includes('->')
|
|
|
+ ? item.name.split('->')[0].trim()
|
|
|
+ : '';
|
|
|
+
|
|
|
if (item.mileageRule === 0) {
|
|
|
item.nextMaintenanceKm = calculateNextMaintenanceKm(item);
|
|
|
item.remainKm = calculateRemainKm(item);
|
|
@@ -1616,9 +1651,16 @@ onMounted(async () => {
|
|
|
setupNaturalDateSync(item);
|
|
|
return {
|
|
|
...item,
|
|
|
+ group,
|
|
|
lastNaturalDate: item.lastNaturalDate
|
|
|
}
|
|
|
})
|
|
|
+ // 设备信息提取逻辑
|
|
|
+ if (list.value.length > 0) {
|
|
|
+ // 从第一个保养项提取设备信息(所有保养项共享相同设备)
|
|
|
+ formData.value.deviceCode = list.value[0].deviceCode;
|
|
|
+ formData.value.deviceName = list.value[0].deviceName;
|
|
|
+ }
|
|
|
}
|
|
|
// 查询当前保养工单已经关联的所有物料
|
|
|
const materials = await IotMainWorkOrderBomMaterialApi.getWorkOrderBomMaterials(queryParams);
|