Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X
This commit is contained in:
@@ -55,6 +55,12 @@ public class EqpMaintenancePlanDetail extends BaseEntity {
|
|||||||
* 维修内容描述
|
* 维修内容描述
|
||||||
*/
|
*/
|
||||||
private String repairContent;
|
private String repairContent;
|
||||||
|
private String lineExecutor;
|
||||||
|
private String equipmentExecutor;
|
||||||
|
private String plannedCompleteTime;
|
||||||
|
private String actualCompleteTime;
|
||||||
|
private String totalHours;
|
||||||
|
private String acceptanceUser;
|
||||||
/**
|
/**
|
||||||
* 维修负责人
|
* 维修负责人
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -62,6 +62,12 @@ public class EqpMaintenancePlanDetailBo extends BaseEntity {
|
|||||||
* 维修内容描述
|
* 维修内容描述
|
||||||
*/
|
*/
|
||||||
private String repairContent;
|
private String repairContent;
|
||||||
|
private String lineExecutor;
|
||||||
|
private String equipmentExecutor;
|
||||||
|
private String plannedCompleteTime;
|
||||||
|
private String actualCompleteTime;
|
||||||
|
private String totalHours;
|
||||||
|
private String acceptanceUser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 维修负责人
|
* 维修负责人
|
||||||
|
|||||||
@@ -25,80 +25,92 @@ public class EqpMaintenancePlanDetailVo {
|
|||||||
/**
|
/**
|
||||||
* 明细ID
|
* 明细ID
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "明细ID")
|
@ExcelProperty(value = "编号")
|
||||||
private Long detailId;
|
private Long detailId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 维修计划ID
|
* 维修计划ID
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "维修计划ID")
|
|
||||||
private Long planId;
|
private Long planId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产线名称
|
* 产线名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "产线名称")
|
|
||||||
private String productionLine;
|
private String productionLine;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备部件名称
|
* 设备部件名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "设备部件名称")
|
|
||||||
private String componentName;
|
private String componentName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单条维修项计划执行日期
|
* 单条维修项计划执行日期
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "单条维修项计划执行日期")
|
@ExcelProperty(value = "时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date itemPlanDate;
|
private Date itemPlanDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 明细类型:0=保养 1=维修
|
* 明细类型:0=保养 1=维修
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "明细类型:0=保养 1=维修")
|
@ExcelProperty(value = "明细类型", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(readConverterExp = "0=保养,1=维修")
|
||||||
private Long maintenanceCategory;
|
private Long maintenanceCategory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 明细完成状态:0=未开始 1=进行中 2=已完成
|
* 明细完成状态:0=未开始 1=进行中 2=已完成
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "明细完成状态:0=未开始 1=进行中 2=已完成")
|
@ExcelProperty(value = "是否完成", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(readConverterExp = "0=否,1=否,2=是")
|
||||||
private Long detailStatus;
|
private Long detailStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 维修内容描述
|
* 维修内容描述
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "维修内容描述")
|
@ExcelProperty(value = "具体工作内容")
|
||||||
private String repairContent;
|
private String repairContent;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "产线执行人员")
|
||||||
|
private String lineExecutor;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "设备执行人员")
|
||||||
|
private String equipmentExecutor;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "预计完成时间")
|
||||||
|
private String plannedCompleteTime;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "实际完成时间")
|
||||||
|
private String actualCompleteTime;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "总耗时(h)")
|
||||||
|
private String totalHours;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "验收人")
|
||||||
|
private String acceptanceUser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 维修负责人
|
* 维修负责人
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "维修负责人")
|
|
||||||
private String repairUser;
|
private String repairUser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 完成时间(打勾时记录)
|
* 完成时间(打勾时记录)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "完成时间", converter = ExcelDictConvert.class)
|
|
||||||
@ExcelDictFormat(readConverterExp = "打=勾时记录")
|
|
||||||
private Date completeTime;
|
private Date completeTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 实际支出金额(元)
|
* 实际支出金额(元)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "实际支出金额(元)")
|
|
||||||
private BigDecimal actualCost;
|
private BigDecimal actualCost;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 完成进度百分比(0-100)
|
* 完成进度百分比(0-100)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "完成进度百分比(0-100)")
|
|
||||||
private Long progressRate;
|
private Long progressRate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 目标厂家
|
* 目标厂家
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "目标厂家")
|
|
||||||
private String targetManufacturer;
|
private String targetManufacturer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -13,6 +13,12 @@
|
|||||||
<result property="maintenanceCategory" column="maintenance_category"/>
|
<result property="maintenanceCategory" column="maintenance_category"/>
|
||||||
<result property="detailStatus" column="detail_status"/>
|
<result property="detailStatus" column="detail_status"/>
|
||||||
<result property="repairContent" column="repair_content"/>
|
<result property="repairContent" column="repair_content"/>
|
||||||
|
<result property="lineExecutor" column="line_executor"/>
|
||||||
|
<result property="equipmentExecutor" column="equipment_executor"/>
|
||||||
|
<result property="plannedCompleteTime" column="planned_complete_time"/>
|
||||||
|
<result property="actualCompleteTime" column="actual_complete_time"/>
|
||||||
|
<result property="totalHours" column="total_hours"/>
|
||||||
|
<result property="acceptanceUser" column="acceptance_user"/>
|
||||||
<result property="repairUser" column="repair_user"/>
|
<result property="repairUser" column="repair_user"/>
|
||||||
<result property="completeTime" column="complete_time"/>
|
<result property="completeTime" column="complete_time"/>
|
||||||
<result property="actualCost" column="actual_cost"/>
|
<result property="actualCost" column="actual_cost"/>
|
||||||
|
|||||||
@@ -12,4 +12,14 @@ export const MemoInputStorageKey = {
|
|||||||
packagingRequirement: 'packagingRequirement', // 打包要求
|
packagingRequirement: 'packagingRequirement', // 打包要求
|
||||||
coilSpec: 'coilSpec', // 钢卷规格
|
coilSpec: 'coilSpec', // 钢卷规格
|
||||||
coatingType: 'coatingType', // 钢卷镀层种类
|
coatingType: 'coatingType', // 钢卷镀层种类
|
||||||
|
transferNo: 'transferNo', // 调拨单号
|
||||||
|
transferName: 'transferName', // 调拨单名称
|
||||||
|
maintenanceRepairContent: 'maintenanceRepairContent', // 维修明细-具体工作内容
|
||||||
|
maintenanceLineExecutor: 'maintenanceLineExecutor', // 维修明细-产线执行人员
|
||||||
|
maintenanceEquipmentExecutor: 'maintenanceEquipmentExecutor', // 维修明细-设备执行人员
|
||||||
|
maintenancePlannedCompleteTime: 'maintenancePlannedCompleteTime', // 维修明细-预计完成时间
|
||||||
|
maintenanceActualCompleteTime: 'maintenanceActualCompleteTime', // 维修明细-实际完成时间
|
||||||
|
maintenanceTotalHours: 'maintenanceTotalHours', // 维修明细-总耗时
|
||||||
|
maintenanceAcceptanceUser: 'maintenanceAcceptanceUser', // 维修明细-验收人
|
||||||
|
maintenanceRemark: 'maintenanceRemark', // 维修明细-备注
|
||||||
}
|
}
|
||||||
@@ -103,20 +103,23 @@
|
|||||||
<span>维修明细 <span class="en-sub">· Maintenance Details</span></span>
|
<span>维修明细 <span class="en-sub">· Maintenance Details</span></span>
|
||||||
</div>
|
</div>
|
||||||
<el-table :data="detailList" border size="small" style="width:100%">
|
<el-table :data="detailList" border size="small" style="width:100%">
|
||||||
<el-table-column label="设备部件" align="center" prop="componentName" width="130" />
|
<el-table-column label="编号" align="center" width="60">
|
||||||
<el-table-column label="产线" align="center" prop="productionLine" width="110" />
|
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
|
||||||
<el-table-column label="类型" align="center" width="70">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<el-tag v-if="scope.row.maintenanceCategory === 0" size="mini">保养</el-tag>
|
|
||||||
<el-tag v-else-if="scope.row.maintenanceCategory === 1" size="mini" type="warning">维修</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="维修内容" align="center" prop="repairContent" min-width="150" show-overflow-tooltip />
|
<el-table-column label="时间" align="center" width="130">
|
||||||
<el-table-column label="负责人" align="center" prop="repairUser" width="90" />
|
<template slot-scope="scope">{{ parseTime(scope.row.itemPlanDate, '{y}/{m}/{d}') || '-' }}</template>
|
||||||
<el-table-column label="计划日期" align="center" width="100">
|
|
||||||
<template slot-scope="scope">{{ parseTime(scope.row.itemPlanDate, '{y}-{m}-{d}') }}</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="目标厂家" align="center" prop="targetManufacturer" width="110" />
|
<el-table-column label="具体工作内容" align="center" prop="repairContent" min-width="220" show-overflow-tooltip />
|
||||||
|
<el-table-column label="产线执行人员" align="center" prop="lineExecutor" min-width="150" show-overflow-tooltip />
|
||||||
|
<el-table-column label="设备执行人员" align="center" prop="equipmentExecutor" min-width="150" show-overflow-tooltip />
|
||||||
|
<el-table-column label="预计完成时间" align="center" prop="plannedCompleteTime" min-width="140" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实际完成时间" align="center" prop="actualCompleteTime" min-width="140" show-overflow-tooltip />
|
||||||
|
<el-table-column label="总耗时(h)" align="center" prop="totalHours" min-width="110" show-overflow-tooltip />
|
||||||
|
<el-table-column label="验收人" align="center" prop="acceptanceUser" min-width="110" show-overflow-tooltip />
|
||||||
|
<el-table-column label="是否完成" align="center" width="100">
|
||||||
|
<template slot-scope="scope">{{ scope.row.detailStatus === 2 ? '是' : '否' }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" min-width="180" show-overflow-tooltip />
|
||||||
</el-table>
|
</el-table>
|
||||||
<div v-if="detailList.length === 0" class="empty-data" style="margin-top:8px;">暂无维修明细</div>
|
<div v-if="detailList.length === 0" class="empty-data" style="margin-top:8px;">暂无维修明细</div>
|
||||||
|
|
||||||
|
|||||||
@@ -92,16 +92,19 @@
|
|||||||
<span>维修明细进度 <span class="en-sub">· Detail Progress</span></span>
|
<span>维修明细进度 <span class="en-sub">· Detail Progress</span></span>
|
||||||
</div>
|
</div>
|
||||||
<el-table :data="detailList" border size="small" style="width:100%">
|
<el-table :data="detailList" border size="small" style="width:100%">
|
||||||
<el-table-column label="设备部件" align="center" prop="componentName" width="120" />
|
<el-table-column label="编号" align="center" width="60">
|
||||||
<el-table-column label="产线" align="center" prop="productionLine" width="100" />
|
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
|
||||||
<el-table-column label="类型" align="center" width="60">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<el-tag v-if="scope.row.maintenanceCategory === 0" size="mini">保养</el-tag>
|
|
||||||
<el-tag v-else-if="scope.row.maintenanceCategory === 1" size="mini" type="warning">维修</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="维修内容" align="center" prop="repairContent" min-width="130" show-overflow-tooltip />
|
<el-table-column label="时间" align="center" width="130">
|
||||||
<el-table-column label="负责人" align="center" prop="repairUser" width="80" />
|
<template slot-scope="scope">{{ parseTime(scope.row.itemPlanDate, '{y}/{m}/{d}') || '-' }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="具体工作内容" align="center" prop="repairContent" min-width="200" show-overflow-tooltip />
|
||||||
|
<el-table-column label="产线执行人员" align="center" prop="lineExecutor" min-width="130" show-overflow-tooltip />
|
||||||
|
<el-table-column label="设备执行人员" align="center" prop="equipmentExecutor" min-width="130" show-overflow-tooltip />
|
||||||
|
<el-table-column label="预计完成时间" align="center" prop="plannedCompleteTime" min-width="120" show-overflow-tooltip />
|
||||||
|
<el-table-column label="实际完成时间" align="center" prop="actualCompleteTime" min-width="120" show-overflow-tooltip />
|
||||||
|
<el-table-column label="总耗时(h)" align="center" prop="totalHours" min-width="100" show-overflow-tooltip />
|
||||||
|
<el-table-column label="验收人" align="center" prop="acceptanceUser" min-width="100" show-overflow-tooltip />
|
||||||
<el-table-column label="进度" align="center" width="160">
|
<el-table-column label="进度" align="center" width="160">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-progress :percentage="scope.row.progressRate || 0" :status="scope.row.detailStatus === 2 ? 'success' : ''" :stroke-width="12" style="padding: 4px 0;" />
|
<el-progress :percentage="scope.row.progressRate || 0" :status="scope.row.detailStatus === 2 ? 'success' : ''" :stroke-width="12" style="padding: 4px 0;" />
|
||||||
|
|||||||
@@ -73,7 +73,7 @@
|
|||||||
<span class="section-title">检修记录 <span class="en-sub">· Inspection Records</span></span>
|
<span class="section-title">检修记录 <span class="en-sub">· Inspection Records</span></span>
|
||||||
<span class="section-count" v-if="inspectionRecords.length">共 {{ inspectionTotal }} 条</span>
|
<span class="section-count" v-if="inspectionRecords.length">共 {{ inspectionTotal }} 条</span>
|
||||||
</div>
|
</div>
|
||||||
<el-table :data="inspectionRecords" border size="small" v-loading="inspectionLoading" max-height="300"
|
<el-table :data="inspectionRecords" border size="small" v-loading="inspectionLoading" height="100%"
|
||||||
@selection-change="handleInspectionSelectionChange" ref="inspectionTable">
|
@selection-change="handleInspectionSelectionChange" ref="inspectionTable">
|
||||||
<el-table-column type="selection" width="40" />
|
<el-table-column type="selection" width="40" />
|
||||||
<el-table-column label="设备部件" align="center" prop="partName" min-width="120" show-overflow-tooltip />
|
<el-table-column label="设备部件" align="center" prop="partName" min-width="120" show-overflow-tooltip />
|
||||||
@@ -113,25 +113,141 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-table :data="detailList" border size="small" v-loading="detailLoading" max-height="300">
|
<el-table :data="detailList" border size="small" v-loading="detailLoading" height="100%">
|
||||||
<el-table-column label="设备部件" align="center" prop="componentName" min-width="120" show-overflow-tooltip />
|
<el-table-column label="编号" align="center" width="60">
|
||||||
<el-table-column label="产线" align="center" prop="productionLine" width="110" />
|
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
|
||||||
<el-table-column label="类型" align="center" width="70">
|
</el-table-column>
|
||||||
|
<el-table-column label="时间" align="center" width="130">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tag v-if="scope.row.maintenanceCategory === 0" size="mini">保养</el-tag>
|
<el-date-picker
|
||||||
<el-tag v-else-if="scope.row.maintenanceCategory === 1" size="mini" type="warning">维修</el-tag>
|
v-if="scope.row._editing"
|
||||||
|
v-model="scope.row.itemPlanDate"
|
||||||
|
type="date"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
placeholder="选择日期"
|
||||||
|
style="width: 118px;" />
|
||||||
|
<span v-else>{{ parseTime(scope.row.itemPlanDate, '{y}/{m}/{d}') || '-' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="维修内容" align="center" prop="repairContent" min-width="150" show-overflow-tooltip />
|
<el-table-column label="具体工作内容" align="center" min-width="220">
|
||||||
<el-table-column label="负责人" align="center" prop="repairUser" width="90" />
|
|
||||||
<el-table-column label="计划日期" align="center" width="100">
|
|
||||||
<template slot-scope="scope">{{ parseTime(scope.row.itemPlanDate, '{y}-{m}-{d}') }}</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="目标厂家" align="center" prop="targetManufacturer" width="110" />
|
|
||||||
<el-table-column label="操作" align="center" width="100" fixed="right">
|
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleEditDetail(scope.row)"></el-button>
|
<MemoInput
|
||||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDeleteDetail(scope.row)"></el-button>
|
v-if="scope.row._editing"
|
||||||
|
v-model="scope.row.repairContent"
|
||||||
|
storageKey="maintenanceRepairContent"
|
||||||
|
matchRule="contain"
|
||||||
|
triggerMode="focus"
|
||||||
|
placeholder="请输入具体工作内容" />
|
||||||
|
<div v-else class="cell-pre-wrap">{{ scope.row.repairContent || '-' }}</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="产线执行人员" align="center" min-width="150">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<MemoInput
|
||||||
|
v-if="scope.row._editing"
|
||||||
|
v-model="scope.row.lineExecutor"
|
||||||
|
storageKey="maintenanceLineExecutor"
|
||||||
|
matchRule="contain"
|
||||||
|
triggerMode="focus"
|
||||||
|
placeholder="请输入产线执行人员" />
|
||||||
|
<div v-else class="cell-pre-wrap">{{ scope.row.lineExecutor || '-' }}</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="设备执行人员" align="center" min-width="150">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<MemoInput
|
||||||
|
v-if="scope.row._editing"
|
||||||
|
v-model="scope.row.equipmentExecutor"
|
||||||
|
storageKey="maintenanceEquipmentExecutor"
|
||||||
|
matchRule="contain"
|
||||||
|
triggerMode="focus"
|
||||||
|
placeholder="请输入设备执行人员" />
|
||||||
|
<div v-else class="cell-pre-wrap">{{ scope.row.equipmentExecutor || '-' }}</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="预计完成时间" align="center" min-width="140">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<MemoInput
|
||||||
|
v-if="scope.row._editing"
|
||||||
|
v-model="scope.row.plannedCompleteTime"
|
||||||
|
storageKey="maintenancePlannedCompleteTime"
|
||||||
|
matchRule="contain"
|
||||||
|
triggerMode="focus"
|
||||||
|
placeholder="如 7:00-18:30" />
|
||||||
|
<span v-else>{{ scope.row.plannedCompleteTime || '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="实际完成时间" align="center" min-width="140">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<MemoInput
|
||||||
|
v-if="scope.row._editing"
|
||||||
|
v-model="scope.row.actualCompleteTime"
|
||||||
|
storageKey="maintenanceActualCompleteTime"
|
||||||
|
matchRule="contain"
|
||||||
|
triggerMode="focus"
|
||||||
|
placeholder="如 7:00-18:30" />
|
||||||
|
<span v-else>{{ scope.row.actualCompleteTime || '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="总耗时(h)" align="center" min-width="110">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<MemoInput
|
||||||
|
v-if="scope.row._editing"
|
||||||
|
v-model="scope.row.totalHours"
|
||||||
|
storageKey="maintenanceTotalHours"
|
||||||
|
matchRule="contain"
|
||||||
|
triggerMode="focus"
|
||||||
|
placeholder="如 9.5小时" />
|
||||||
|
<span v-else>{{ scope.row.totalHours || '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="验收人" align="center" min-width="110">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<MemoInput
|
||||||
|
v-if="scope.row._editing"
|
||||||
|
v-model="scope.row.acceptanceUser"
|
||||||
|
storageKey="maintenanceAcceptanceUser"
|
||||||
|
matchRule="contain"
|
||||||
|
triggerMode="focus"
|
||||||
|
placeholder="请输入验收人" />
|
||||||
|
<span v-else>{{ scope.row.acceptanceUser || '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="是否完成" align="center" width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-select
|
||||||
|
v-if="scope.row._editing"
|
||||||
|
v-model="scope.row.detailStatus"
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 80px;">
|
||||||
|
<el-option label="否" :value="0" />
|
||||||
|
<el-option label="是" :value="2" />
|
||||||
|
</el-select>
|
||||||
|
<span v-else>{{ scope.row.detailStatus === 2 ? '是' : '否' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="备注" align="center" min-width="180">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<MemoInput
|
||||||
|
v-if="scope.row._editing"
|
||||||
|
v-model="scope.row.remark"
|
||||||
|
storageKey="maintenanceRemark"
|
||||||
|
matchRule="contain"
|
||||||
|
triggerMode="focus"
|
||||||
|
placeholder="请输入备注" />
|
||||||
|
<div v-else class="cell-pre-wrap">{{ scope.row.remark || '-' }}</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" align="center" width="140" fixed="right">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<template v-if="scope.row._editing">
|
||||||
|
<el-button size="mini" type="text" icon="el-icon-check" @click="saveDetailRow(scope.row)">保存</el-button>
|
||||||
|
<el-button size="mini" type="text" icon="el-icon-close" @click="cancelEditDetail(scope.row)">取消</el-button>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleEditDetail(scope.row)">编辑</el-button>
|
||||||
|
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDeleteDetail(scope.row)">删除</el-button>
|
||||||
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -196,41 +312,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 明细编辑弹窗 -->
|
|
||||||
<el-dialog :title="detailDialogTitle" :visible.sync="detailDialogVisible" width="550px" append-to-body>
|
|
||||||
<el-form ref="detailForm" :model="detailForm" label-width="110px">
|
|
||||||
<el-form-item label="设备部件" prop="componentName">
|
|
||||||
<el-input v-model="detailForm.componentName" placeholder="请输入设备部件名称" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="产线" prop="productionLine">
|
|
||||||
<el-select v-model="detailForm.productionLine" placeholder="请选择" clearable style="width:100%">
|
|
||||||
<el-option v-for="item in lineList" :key="item.lineId" :label="item.lineName" :value="item.lineName" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="明细类型" prop="maintenanceCategory">
|
|
||||||
<el-select v-model="detailForm.maintenanceCategory" placeholder="请选择" style="width:100%">
|
|
||||||
<el-option label="保养" :value="0" />
|
|
||||||
<el-option label="维修" :value="1" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="维修内容" prop="repairContent">
|
|
||||||
<el-input v-model="detailForm.repairContent" type="textarea" :rows="2" placeholder="请输入维修内容" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="负责人" prop="repairUser">
|
|
||||||
<el-input v-model="detailForm.repairUser" placeholder="请输入维修负责人" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="计划日期" prop="itemPlanDate">
|
|
||||||
<el-date-picker clearable v-model="detailForm.itemPlanDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择" style="width:100%" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="目标厂家" prop="targetManufacturer">
|
|
||||||
<el-input v-model="detailForm.targetManufacturer" placeholder="请输入目标厂家" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<div slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="detailDialogVisible = false">取 消</el-button>
|
|
||||||
<el-button type="primary" :loading="detailButtonLoading" @click="submitDetailForm">确 定</el-button>
|
|
||||||
</div>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -240,18 +321,18 @@ import { listMaintenancePlanDetail, addMaintenancePlanDetail, updateMaintenanceP
|
|||||||
import { listEquipmentInspectionRecord } from "@/api/mes/eqp/equipmentInspectionRecord";
|
import { listEquipmentInspectionRecord } from "@/api/mes/eqp/equipmentInspectionRecord";
|
||||||
import { listProductionLine } from "@/api/wms/productionLine";
|
import { listProductionLine } from "@/api/wms/productionLine";
|
||||||
import DragResizePanel from "@/components/DragResizePanel/index.vue";
|
import DragResizePanel from "@/components/DragResizePanel/index.vue";
|
||||||
|
import MemoInput from "@/components/MemoInput/index.vue";
|
||||||
import { parseTime } from '@/utils/klp'
|
import { parseTime } from '@/utils/klp'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "EqpMaintenance",
|
name: "EqpMaintenance",
|
||||||
components: { DragResizePanel },
|
components: { DragResizePanel, MemoInput },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
detailLoading: false,
|
detailLoading: false,
|
||||||
buttonLoading: false,
|
buttonLoading: false,
|
||||||
inspectionLoading: false,
|
inspectionLoading: false,
|
||||||
detailButtonLoading: false,
|
|
||||||
total: 0,
|
total: 0,
|
||||||
dataList: [],
|
dataList: [],
|
||||||
currentRow: null,
|
currentRow: null,
|
||||||
@@ -273,11 +354,7 @@ export default {
|
|||||||
inspectionQueried: false,
|
inspectionQueried: false,
|
||||||
selectedInspectionRows: [],
|
selectedInspectionRows: [],
|
||||||
// 维修明细
|
// 维修明细
|
||||||
detailList: [],
|
detailList: []
|
||||||
detailDialogVisible: false,
|
|
||||||
detailDialogTitle: "",
|
|
||||||
detailForm: {},
|
|
||||||
editingDetailId: null
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -324,7 +401,9 @@ export default {
|
|||||||
loadDetailList(planId) {
|
loadDetailList(planId) {
|
||||||
var self = this;
|
var self = this;
|
||||||
listMaintenancePlanDetail({ planId: planId, pageNum: 1, pageSize: 999 }).then(function(r) {
|
listMaintenancePlanDetail({ planId: planId, pageNum: 1, pageSize: 999 }).then(function(r) {
|
||||||
self.detailList = r.rows || [];
|
self.detailList = (r.rows || []).map(function(item) {
|
||||||
|
return self.decorateDetailRow(item);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// ---- 检修记录查询 ----
|
// ---- 检修记录查询 ----
|
||||||
@@ -373,9 +452,17 @@ export default {
|
|||||||
componentName: rec.partName || '',
|
componentName: rec.partName || '',
|
||||||
productionLine: self.currentRow.productionLine || rec.productionLine || '',
|
productionLine: self.currentRow.productionLine || rec.productionLine || '',
|
||||||
maintenanceCategory: 1,
|
maintenanceCategory: 1,
|
||||||
|
itemPlanDate: rec.inspectTime ? parseTime(rec.inspectTime, '{y}-{m}-{d}') : parseTime(new Date(), '{y}-{m}-{d}'),
|
||||||
repairContent: rec.abnormalDesc || '',
|
repairContent: rec.abnormalDesc || '',
|
||||||
|
lineExecutor: rec.inspector || '',
|
||||||
|
equipmentExecutor: '',
|
||||||
|
plannedCompleteTime: '',
|
||||||
|
actualCompleteTime: '',
|
||||||
|
totalHours: '',
|
||||||
|
acceptanceUser: '',
|
||||||
repairUser: rec.inspector || '',
|
repairUser: rec.inspector || '',
|
||||||
detailStatus: 0
|
detailStatus: 0,
|
||||||
|
remark: rec.remark || ''
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
Promise.all(promises).then(function() {
|
Promise.all(promises).then(function() {
|
||||||
@@ -464,56 +551,139 @@ export default {
|
|||||||
},
|
},
|
||||||
// ---- 明细管理 ----
|
// ---- 明细管理 ----
|
||||||
handleAddDetail() {
|
handleAddDetail() {
|
||||||
this.detailForm = {
|
if (!this.currentRow || !this.currentRow.planId) return;
|
||||||
planId: this.currentRow.planId,
|
if (this.getEditingDetailRow()) {
|
||||||
componentName: '',
|
this.$modal.msgWarning("请先保存或取消当前编辑行");
|
||||||
productionLine: this.currentRow.productionLine || '',
|
|
||||||
maintenanceCategory: 1,
|
|
||||||
repairContent: '',
|
|
||||||
repairUser: '',
|
|
||||||
itemPlanDate: undefined,
|
|
||||||
targetManufacturer: '',
|
|
||||||
detailStatus: 0
|
|
||||||
};
|
|
||||||
this.editingDetailId = null;
|
|
||||||
this.detailDialogTitle = "添加维修明细";
|
|
||||||
this.detailDialogVisible = true;
|
|
||||||
},
|
|
||||||
handleEditDetail(row) {
|
|
||||||
this.detailForm = Object.assign({}, row);
|
|
||||||
this.editingDetailId = row.detailId;
|
|
||||||
this.detailDialogTitle = "编辑维修明细";
|
|
||||||
this.detailDialogVisible = true;
|
|
||||||
},
|
|
||||||
submitDetailForm() {
|
|
||||||
if (!this.detailForm.componentName) {
|
|
||||||
this.$modal.msgWarning("请输入设备部件名称");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var self = this;
|
var row = this.decorateDetailRow(this.getDefaultDetailRow());
|
||||||
this.detailButtonLoading = true;
|
row._isNew = true;
|
||||||
if (this.editingDetailId) {
|
row._editing = true;
|
||||||
updateMaintenancePlanDetail(this.detailForm).then(function() {
|
row._origin = null;
|
||||||
self.$modal.msgSuccess("修改成功");
|
this.detailList.unshift(row);
|
||||||
self.detailDialogVisible = false;
|
},
|
||||||
self.loadDetailList(self.currentRow.planId);
|
handleEditDetail(row) {
|
||||||
}).finally(function() { self.detailButtonLoading = false; });
|
if (!row) return;
|
||||||
} else {
|
var editing = this.getEditingDetailRow();
|
||||||
addMaintenancePlanDetail(this.detailForm).then(function() {
|
if (editing && editing !== row) {
|
||||||
self.$modal.msgSuccess("添加成功");
|
this.$modal.msgWarning("请先保存或取消当前编辑行");
|
||||||
self.detailDialogVisible = false;
|
return;
|
||||||
self.loadDetailList(self.currentRow.planId);
|
|
||||||
}).finally(function() { self.detailButtonLoading = false; });
|
|
||||||
}
|
}
|
||||||
|
this.beginDetailEdit(row);
|
||||||
|
},
|
||||||
|
beginDetailEdit(row) {
|
||||||
|
if (!row) return;
|
||||||
|
row._origin = JSON.parse(JSON.stringify({
|
||||||
|
itemPlanDate: row.itemPlanDate,
|
||||||
|
repairContent: row.repairContent,
|
||||||
|
lineExecutor: row.lineExecutor,
|
||||||
|
equipmentExecutor: row.equipmentExecutor,
|
||||||
|
plannedCompleteTime: row.plannedCompleteTime,
|
||||||
|
actualCompleteTime: row.actualCompleteTime,
|
||||||
|
totalHours: row.totalHours,
|
||||||
|
acceptanceUser: row.acceptanceUser,
|
||||||
|
detailStatus: row.detailStatus,
|
||||||
|
remark: row.remark
|
||||||
|
}));
|
||||||
|
row._editing = true;
|
||||||
|
},
|
||||||
|
cancelEditDetail(row) {
|
||||||
|
if (!row) return;
|
||||||
|
if (row._isNew) {
|
||||||
|
this.detailList = this.detailList.filter(function(r) { return r !== row; });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (row._origin) {
|
||||||
|
row.itemPlanDate = row._origin.itemPlanDate;
|
||||||
|
row.repairContent = row._origin.repairContent;
|
||||||
|
row.lineExecutor = row._origin.lineExecutor;
|
||||||
|
row.equipmentExecutor = row._origin.equipmentExecutor;
|
||||||
|
row.plannedCompleteTime = row._origin.plannedCompleteTime;
|
||||||
|
row.actualCompleteTime = row._origin.actualCompleteTime;
|
||||||
|
row.totalHours = row._origin.totalHours;
|
||||||
|
row.acceptanceUser = row._origin.acceptanceUser;
|
||||||
|
row.detailStatus = row._origin.detailStatus;
|
||||||
|
row.remark = row._origin.remark;
|
||||||
|
}
|
||||||
|
row._editing = false;
|
||||||
|
row._origin = null;
|
||||||
},
|
},
|
||||||
handleDeleteDetail(row) {
|
handleDeleteDetail(row) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
if (!row) return;
|
||||||
|
if (row._isNew) {
|
||||||
|
this.detailList = this.detailList.filter(function(r) { return r !== row; });
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.$modal.confirm('确认删除该维修明细?').then(function() {
|
this.$modal.confirm('确认删除该维修明细?').then(function() {
|
||||||
return delMaintenancePlanDetail(row.detailId);
|
return delMaintenancePlanDetail(row.detailId);
|
||||||
}).then(function() {
|
}).then(function() {
|
||||||
self.$modal.msgSuccess("删除成功");
|
self.$modal.msgSuccess("删除成功");
|
||||||
self.loadDetailList(self.currentRow.planId);
|
self.loadDetailList(self.currentRow.planId);
|
||||||
}).catch(function() { });
|
}).catch(function() { });
|
||||||
|
},
|
||||||
|
getEditingDetailRow() {
|
||||||
|
return this.detailList.find(function(r) { return r && r._editing; }) || null;
|
||||||
|
},
|
||||||
|
decorateDetailRow(row) {
|
||||||
|
var r = row || {};
|
||||||
|
if (!r._rowKey) r._rowKey = r.detailId ? ("detail_" + r.detailId) : ("tmp_" + Date.now() + "_" + Math.random().toString(16).slice(2));
|
||||||
|
if (typeof r._editing !== 'boolean') r._editing = false;
|
||||||
|
if (typeof r._isNew !== 'boolean') r._isNew = false;
|
||||||
|
if (!r._origin) r._origin = null;
|
||||||
|
if (r.detailStatus === undefined || r.detailStatus === null) r.detailStatus = 0;
|
||||||
|
return r;
|
||||||
|
},
|
||||||
|
getDefaultDetailRow() {
|
||||||
|
return {
|
||||||
|
planId: this.currentRow.planId,
|
||||||
|
componentName: '',
|
||||||
|
productionLine: this.currentRow.productionLine || '',
|
||||||
|
maintenanceCategory: 1,
|
||||||
|
itemPlanDate: parseTime(new Date(), '{y}-{m}-{d}'),
|
||||||
|
repairContent: '',
|
||||||
|
lineExecutor: '',
|
||||||
|
equipmentExecutor: '',
|
||||||
|
plannedCompleteTime: '',
|
||||||
|
actualCompleteTime: '',
|
||||||
|
totalHours: '',
|
||||||
|
acceptanceUser: '',
|
||||||
|
detailStatus: 0,
|
||||||
|
remark: ''
|
||||||
|
};
|
||||||
|
},
|
||||||
|
buildDetailPayload(row) {
|
||||||
|
return {
|
||||||
|
detailId: row.detailId,
|
||||||
|
planId: this.currentRow.planId,
|
||||||
|
componentName: row.componentName,
|
||||||
|
productionLine: this.currentRow.productionLine || row.productionLine || '',
|
||||||
|
maintenanceCategory: row.maintenanceCategory === undefined ? 1 : row.maintenanceCategory,
|
||||||
|
itemPlanDate: row.itemPlanDate,
|
||||||
|
repairContent: row.repairContent,
|
||||||
|
lineExecutor: row.lineExecutor,
|
||||||
|
equipmentExecutor: row.equipmentExecutor,
|
||||||
|
plannedCompleteTime: row.plannedCompleteTime,
|
||||||
|
actualCompleteTime: row.actualCompleteTime,
|
||||||
|
totalHours: row.totalHours,
|
||||||
|
acceptanceUser: row.acceptanceUser,
|
||||||
|
detailStatus: row.detailStatus,
|
||||||
|
remark: row.remark
|
||||||
|
};
|
||||||
|
},
|
||||||
|
saveDetailRow(row) {
|
||||||
|
if (!row) return;
|
||||||
|
if (!row.repairContent) {
|
||||||
|
this.$modal.msgWarning("请输入具体工作内容");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var self = this;
|
||||||
|
var payload = this.buildDetailPayload(row);
|
||||||
|
var api = row._isNew || !row.detailId ? addMaintenancePlanDetail : updateMaintenancePlanDetail;
|
||||||
|
api(payload).then(function() {
|
||||||
|
self.$modal.msgSuccess(row._isNew || !row.detailId ? "添加成功" : "修改成功");
|
||||||
|
self.loadDetailList(self.currentRow.planId);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -530,6 +700,11 @@ export default {
|
|||||||
.search-row { display: flex; align-items: center; gap: 6px; padding: 0 14px 10px; background: #f5f7fa; }
|
.search-row { display: flex; align-items: center; gap: 6px; padding: 0 14px 10px; background: #f5f7fa; }
|
||||||
.search-row .el-input { flex: 1; }
|
.search-row .el-input { flex: 1; }
|
||||||
.list-body { flex: 1; overflow-y: auto; padding: 0 6px; }
|
.list-body { flex: 1; overflow-y: auto; padding: 0 6px; }
|
||||||
|
.list-body { scrollbar-width: thin; scrollbar-color: rgba(144, 147, 153, 0.45) transparent; }
|
||||||
|
.list-body::-webkit-scrollbar { width: 8px; height: 8px; }
|
||||||
|
.list-body::-webkit-scrollbar-track { background: transparent; }
|
||||||
|
.list-body::-webkit-scrollbar-thumb { background: rgba(144, 147, 153, 0.35); border-radius: 6px; }
|
||||||
|
.list-body::-webkit-scrollbar-thumb:hover { background: rgba(144, 147, 153, 0.55); }
|
||||||
.list-item { display: flex; align-items: center; padding: 10px 12px; margin-bottom: 2px; cursor: pointer; border-radius: 6px; transition: all 0.15s; }
|
.list-item { display: flex; align-items: center; padding: 10px 12px; margin-bottom: 2px; cursor: pointer; border-radius: 6px; transition: all 0.15s; }
|
||||||
.list-item:hover { background: #ebeef5; }
|
.list-item:hover { background: #ebeef5; }
|
||||||
.list-item.active { background: #d9ecff; }
|
.list-item.active { background: #d9ecff; }
|
||||||
@@ -546,7 +721,7 @@ export default {
|
|||||||
/* ========== 右侧面板 ========== */
|
/* ========== 右侧面板 ========== */
|
||||||
.right-panel { height: 100%; overflow: hidden; display: flex; flex-direction: column; background: #faf8f5; }
|
.right-panel { height: 100%; overflow: hidden; display: flex; flex-direction: column; background: #faf8f5; }
|
||||||
.empty-tip { display: flex; align-items: center; justify-content: center; height: 100%; color: #909399; font-size: 14px; gap: 8px; }
|
.empty-tip { display: flex; align-items: center; justify-content: center; height: 100%; color: #909399; font-size: 14px; gap: 8px; }
|
||||||
.right-content { flex: 1; display: flex; flex-direction: column; overflow: hidden; padding: 12px 16px; }
|
.right-content { flex: 1; min-height: 0; display: flex; flex-direction: column; overflow: hidden; padding: 12px 16px; }
|
||||||
|
|
||||||
/* 基本信息栏 */
|
/* 基本信息栏 */
|
||||||
.info-bar { display: flex; align-items: center; justify-content: space-between; padding: 8px 16px; background: #fff; border: 1px solid #e4e7ed; border-radius: 4px; margin-bottom: 10px; flex-shrink: 0; }
|
.info-bar { display: flex; align-items: center; justify-content: space-between; padding: 8px 16px; background: #fff; border: 1px solid #e4e7ed; border-radius: 4px; margin-bottom: 10px; flex-shrink: 0; }
|
||||||
@@ -563,10 +738,25 @@ export default {
|
|||||||
.section-count { font-size: 12px; color: #909399; }
|
.section-count { font-size: 12px; color: #909399; }
|
||||||
.section-actions { display: flex; align-items: center; gap: 6px; }
|
.section-actions { display: flex; align-items: center; gap: 6px; }
|
||||||
.inspection-section .el-table { flex: 1; overflow-y: auto; }
|
.inspection-section .el-table { flex: 1; overflow-y: auto; }
|
||||||
|
.inspection-section .el-table { scrollbar-width: thin; scrollbar-color: rgba(144, 147, 153, 0.45) transparent; }
|
||||||
|
.detail-section .el-table { scrollbar-width: thin; scrollbar-color: rgba(144, 147, 153, 0.45) transparent; }
|
||||||
|
.inspection-section ::v-deep .el-table,
|
||||||
|
.detail-section ::v-deep .el-table { display: flex; flex-direction: column; height: 100%; }
|
||||||
|
.inspection-section ::v-deep .el-table__body-wrapper,
|
||||||
|
.detail-section ::v-deep .el-table__body-wrapper { flex: 1; min-height: 0; }
|
||||||
|
.inspection-section ::v-deep .el-table__body-wrapper::-webkit-scrollbar,
|
||||||
|
.detail-section ::v-deep .el-table__body-wrapper::-webkit-scrollbar { width: 8px; height: 8px; }
|
||||||
|
.inspection-section ::v-deep .el-table__body-wrapper::-webkit-scrollbar-track,
|
||||||
|
.detail-section ::v-deep .el-table__body-wrapper::-webkit-scrollbar-track { background: transparent; }
|
||||||
|
.inspection-section ::v-deep .el-table__body-wrapper::-webkit-scrollbar-thumb,
|
||||||
|
.detail-section ::v-deep .el-table__body-wrapper::-webkit-scrollbar-thumb { background: rgba(144, 147, 153, 0.35); border-radius: 6px; }
|
||||||
|
.inspection-section ::v-deep .el-table__body-wrapper::-webkit-scrollbar-thumb:hover,
|
||||||
|
.detail-section ::v-deep .el-table__body-wrapper::-webkit-scrollbar-thumb:hover { background: rgba(144, 147, 153, 0.55); }
|
||||||
|
|
||||||
/* 下半部分:维修明细 */
|
/* 下半部分:维修明细 */
|
||||||
.detail-section { flex: 1; min-height: 0; display: flex; flex-direction: column; overflow: hidden; background: #fff; border: 1px solid #e4e7ed; border-radius: 4px; }
|
.detail-section { flex: 1; min-height: 0; display: flex; flex-direction: column; overflow: hidden; background: #fff; border: 1px solid #e4e7ed; border-radius: 4px; }
|
||||||
.detail-section .el-table { flex: 1; overflow-y: auto; }
|
.detail-section .el-table { flex: 1; overflow-y: auto; }
|
||||||
|
.cell-pre-wrap { white-space: pre-wrap; word-break: break-all; line-height: 18px; }
|
||||||
|
|
||||||
.empty-data { padding: 24px 0; text-align: center; color: #c0c4cc; font-size: 13px; }
|
.empty-data { padding: 24px 0; text-align: center; color: #c0c4cc; font-size: 13px; }
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
ALTER TABLE eqp_maintenance_plan_detail
|
||||||
|
ADD COLUMN line_executor varchar(64) NULL,
|
||||||
|
ADD COLUMN equipment_executor varchar(64) NULL,
|
||||||
|
ADD COLUMN planned_complete_time varchar(64) NULL,
|
||||||
|
ADD COLUMN actual_complete_time varchar(64) NULL,
|
||||||
|
ADD COLUMN total_hours varchar(64) NULL,
|
||||||
|
ADD COLUMN acceptance_user varchar(64) NULL;
|
||||||
|
|
||||||
Reference in New Issue
Block a user