|
@@ -33,10 +33,18 @@
|
|
|
-->
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
+ <el-form-item label="保养费用" prop="cost">
|
|
|
+ <el-input
|
|
|
+ v-model="formData.cost"
|
|
|
+ placeholder="根据物料消耗自动生成"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <!--
|
|
|
<el-form-item label="责任人" prop="devicePersons">
|
|
|
<el-input type="text" v-model="formData.devicePersons" disabled/>
|
|
|
</el-form-item>
|
|
|
- <!--
|
|
|
+
|
|
|
<el-form-item label="责任人" prop="responsiblePerson">
|
|
|
<el-select v-model="formData.responsiblePerson" filterable clearable style="width: 100%">
|
|
|
<el-option
|
|
@@ -71,20 +79,6 @@
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="保养费用" prop="cost">
|
|
|
- <el-input
|
|
|
- v-model="formData.cost"
|
|
|
- placeholder="根据物料消耗自动生成"
|
|
|
- disabled
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="16">
|
|
|
- <el-form-item label="备注" prop="remark">
|
|
|
- <el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="其他费用" prop="otherCost">
|
|
|
<el-input
|
|
@@ -94,6 +88,11 @@
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="备注" prop="remark">
|
|
|
+ <el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
</el-form>
|
|
@@ -214,6 +213,12 @@
|
|
|
<ContentWrap>
|
|
|
<el-table v-loading="false" :data="materialList" :stripe="true" :show-overflow-tooltip="true" v-if="false">
|
|
|
<el-table-column label="bom节点" align="center" prop="bomNodeId" />
|
|
|
+ <el-table-column label="工厂id" align="center" prop="factoryId" v-if="false"/>
|
|
|
+ <el-table-column label="工厂名称" align="center" prop="factory" v-if="false"/>
|
|
|
+ <el-table-column label="成本中心id" align="center" prop="costCenterId" v-if="false"/>
|
|
|
+ <el-table-column label="成本中心名称" align="center" prop="costCenter" v-if="false"/>
|
|
|
+ <el-table-column label="库存地点id" align="center" prop="storageLocationId" v-if="false"/>
|
|
|
+ <el-table-column label="库存地点名称" align="center" prop="projectDepartment" v-if="false"/>
|
|
|
<el-table-column label="物料编码" align="center" prop="materialCode" />
|
|
|
<el-table-column label="物料名称" align="center" prop="materialName" />
|
|
|
<el-table-column label="单位" align="center" prop="unit" />
|
|
@@ -238,166 +243,208 @@
|
|
|
:title="`设备 ${configDialog.current?.deviceCode+'-'+configDialog.current?.name} 保养配置`"
|
|
|
width="600px"
|
|
|
>
|
|
|
+ <!-- 使用header插槽自定义标题 -->
|
|
|
+ <template #header>
|
|
|
+ <span>设备 <strong>{{ configDialog.current?.deviceCode }}-{{ configDialog.current?.name }}</strong> 保养项配置</span>
|
|
|
+ </template>
|
|
|
<el-form :model="configDialog.form" label-width="200px" :rules="configFormRules" ref="configFormRef">
|
|
|
- <!-- 里程配置 -->
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.mileageRule === 0"
|
|
|
- label="上次保养里程数(KM)"
|
|
|
- prop="lastRunningKilometers"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="configDialog.form.lastRunningKilometers"
|
|
|
- :precision="2"
|
|
|
- :min="0"
|
|
|
- controls-position="right"
|
|
|
- :disabled="true"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <!-- 推迟公里数 -->
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.mileageRule === 0"
|
|
|
- label="推迟公里数(KM)"
|
|
|
- prop="delayKilometers"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="configDialog.form.delayKilometers"
|
|
|
- :precision="2"
|
|
|
- :min="0"
|
|
|
- controls-position="right"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <!-- 运行时间配置 -->
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.runningTimeRule === 0"
|
|
|
- label="上次保养运行时间(H)"
|
|
|
- prop="lastRunningTime"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="configDialog.form.lastRunningTime"
|
|
|
- :precision="1"
|
|
|
- :min="0"
|
|
|
- controls-position="right"
|
|
|
- :disabled="true"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <!-- 推迟时长 -->
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.runningTimeRule === 0"
|
|
|
- label="推迟时长(H)"
|
|
|
- prop="delayDuration"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="configDialog.form.delayDuration"
|
|
|
- :precision="2"
|
|
|
- :min="0"
|
|
|
- controls-position="right"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <!-- 自然日期配置 -->
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.naturalDateRule === 0"
|
|
|
- label="上次保养自然日期(D)"
|
|
|
- prop="lastNaturalDate"
|
|
|
- >
|
|
|
- <el-date-picker
|
|
|
- v-model="configDialog.form.lastNaturalDate"
|
|
|
- type="date"
|
|
|
- placeholder="选择日期"
|
|
|
- format="YYYY-MM-DD"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
- :disabled="true"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <!-- 推迟自然日期 -->
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.naturalDateRule === 0"
|
|
|
- label="推迟自然日期(D)"
|
|
|
- prop="delayNaturalDate"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="configDialog.form.delayNaturalDate"
|
|
|
- :precision="2"
|
|
|
- :min="0"
|
|
|
- controls-position="right"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <!-- 保养规则周期值 + 提前量 -->
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.mileageRule === 0"
|
|
|
- label="运行里程周期(KM)"
|
|
|
- prop="nextRunningKilometers"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="configDialog.form.nextRunningKilometers"
|
|
|
- :precision="2"
|
|
|
- :min="0"
|
|
|
- controls-position="right"
|
|
|
- :disabled="true"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.mileageRule === 0"
|
|
|
- label="运行里程周期-提前量(KM)"
|
|
|
- prop="kiloCycleLead"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="configDialog.form.kiloCycleLead"
|
|
|
- :precision="2"
|
|
|
- :min="0"
|
|
|
- controls-position="right"
|
|
|
- :disabled="true"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.runningTimeRule === 0"
|
|
|
- label="运行时间周期(H)"
|
|
|
- prop="nextRunningTime"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="configDialog.form.nextRunningTime"
|
|
|
- :precision="1"
|
|
|
- :min="0"
|
|
|
- controls-position="right"
|
|
|
- :disabled="true"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.runningTimeRule === 0"
|
|
|
- label="运行时间周期-提前量(H)"
|
|
|
- prop="timePeriodLead"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="configDialog.form.timePeriodLead"
|
|
|
- :precision="1"
|
|
|
- :min="0"
|
|
|
- controls-position="right"
|
|
|
- :disabled="true"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.naturalDateRule === 0"
|
|
|
- label="自然日周期(D)"
|
|
|
- prop="nextNaturalDate"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="configDialog.form.nextNaturalDate"
|
|
|
- :min="0"
|
|
|
- controls-position="right"
|
|
|
- :disabled="true"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- v-if="configDialog.current?.naturalDateRule === 0"
|
|
|
- label="自然日周期-提前量(D)"
|
|
|
- prop="naturalDatePeriodLead"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="configDialog.form.naturalDatePeriodLead"
|
|
|
- :min="0"
|
|
|
- controls-position="right"
|
|
|
- :disabled="true"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
+ <div class="form-group">
|
|
|
+ <div class="group-title">基础保养记录</div>
|
|
|
+ <!-- 里程配置 -->
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.mileageRule === 0"
|
|
|
+ label="上次保养里程数(KM)"
|
|
|
+ prop="lastRunningKilometers"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="configDialog.form.lastRunningKilometers"
|
|
|
+ :precision="2"
|
|
|
+ :min="0"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 60%"
|
|
|
+ :disabled="true"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <!-- 推迟公里数 -->
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.mileageRule === 0"
|
|
|
+ label="推迟公里数(KM)"
|
|
|
+ prop="delayKilometers"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="configDialog.form.delayKilometers"
|
|
|
+ :precision="2"
|
|
|
+ :min="0"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 60%"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <!-- 运行时间配置 -->
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.runningTimeRule === 0"
|
|
|
+ label="上次保养运行时间(H)"
|
|
|
+ prop="lastRunningTime"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="configDialog.form.lastRunningTime"
|
|
|
+ :precision="1"
|
|
|
+ :min="0"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 60%"
|
|
|
+ :disabled="true"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <!-- 推迟时长 -->
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.runningTimeRule === 0"
|
|
|
+ label="推迟时长(H)"
|
|
|
+ prop="delayDuration"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="configDialog.form.delayDuration"
|
|
|
+ :precision="2"
|
|
|
+ :min="0"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 60%"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <!-- 自然日期配置 -->
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.naturalDateRule === 0"
|
|
|
+ label="上次保养自然日期"
|
|
|
+ prop="lastNaturalDate"
|
|
|
+ >
|
|
|
+ <el-date-picker
|
|
|
+ v-model="configDialog.form.lastNaturalDate"
|
|
|
+ type="date"
|
|
|
+ placeholder="选择日期"
|
|
|
+ format="YYYY-MM-DD"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
+ style="width: 60%"
|
|
|
+ :disabled="true"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <!-- 推迟自然日期 -->
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.naturalDateRule === 0"
|
|
|
+ label="推迟自然日期(D)"
|
|
|
+ prop="delayNaturalDate"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="configDialog.form.delayNaturalDate"
|
|
|
+ :precision="2"
|
|
|
+ :min="0"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 60%"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="form-group" v-if="configDialog.current?.mileageRule === 0">
|
|
|
+ <div class="group-title">运行里程规则配置</div>
|
|
|
+ <!-- 保养规则周期值 + 提前量 -->
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.mileageRule === 0"
|
|
|
+ label="运行里程周期(KM)"
|
|
|
+ prop="nextRunningKilometers"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="configDialog.form.nextRunningKilometers"
|
|
|
+ :precision="2"
|
|
|
+ :min="0"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 60%"
|
|
|
+ :disabled="true"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.mileageRule === 0"
|
|
|
+ label="运行里程周期-提前量(KM)"
|
|
|
+ prop="kiloCycleLead"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="configDialog.form.kiloCycleLead"
|
|
|
+ :precision="2"
|
|
|
+ :min="0"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 60%"
|
|
|
+ :disabled="true"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="form-group" v-if="configDialog.current?.runningTimeRule === 0">
|
|
|
+ <div class="group-title">运行时间规则配置</div>
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.runningTimeRule === 0"
|
|
|
+ label="运行时间周期(H)"
|
|
|
+ prop="nextRunningTime"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="configDialog.form.nextRunningTime"
|
|
|
+ :precision="1"
|
|
|
+ :min="0"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 60%"
|
|
|
+ :disabled="true"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.runningTimeRule === 0"
|
|
|
+ label="运行时间周期-提前量(H)"
|
|
|
+ prop="timePeriodLead"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="configDialog.form.timePeriodLead"
|
|
|
+ :precision="1"
|
|
|
+ :min="0"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 60%"
|
|
|
+ :disabled="true"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="form-group" v-if="configDialog.current?.naturalDateRule === 0">
|
|
|
+ <div class="group-title">自然日规则配置</div>
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.naturalDateRule === 0"
|
|
|
+ label="自然日周期(D)"
|
|
|
+ prop="nextNaturalDate"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="configDialog.form.nextNaturalDate"
|
|
|
+ :min="0"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 60%"
|
|
|
+ :disabled="true"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ v-if="configDialog.current?.naturalDateRule === 0"
|
|
|
+ label="自然日周期-提前量(D)"
|
|
|
+ prop="naturalDatePeriodLead"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="configDialog.form.naturalDatePeriodLead"
|
|
|
+ :min="0"
|
|
|
+ controls-position="right"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 60%"
|
|
|
+ :disabled="true"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
<el-button @click="configDialog.visible = false">取消</el-button>
|
|
@@ -556,10 +603,13 @@ const selectChoose = (selectedMaterial) => {
|
|
|
|
|
|
// 避免重复添加
|
|
|
processedMaterials.forEach(newMaterial => {
|
|
|
- // 检查是否已存在相同 bomNodeId + materialCode 的条目
|
|
|
+ // 检查是否已存在相同 工厂+成本中心+库存地点+bomNodeId + materialCode 的条目
|
|
|
const isExist = materialList.value.some(item =>
|
|
|
item.bomNodeId === bomNodeId.value &&
|
|
|
- item.materialCode === newMaterial.materialCode
|
|
|
+ item.materialCode === newMaterial.materialCode &&
|
|
|
+ item.factoryId === newMaterial.factoryId &&
|
|
|
+ item.costCenterId === newMaterial.costCenterId &&
|
|
|
+ item.storageLocationId === newMaterial.storageLocationId
|
|
|
);
|
|
|
|
|
|
if (!isExist) {
|
|
@@ -878,7 +928,7 @@ onMounted(async () => {
|
|
|
lastNaturalDate: item.lastNaturalDate ? dayjs(item.lastNaturalDate).format('YYYY-MM-DD') : null
|
|
|
}))
|
|
|
// 同时查询所有设备的责任人
|
|
|
- await getDevicePersons();
|
|
|
+ // await getDevicePersons();
|
|
|
}
|
|
|
} catch (error) {
|
|
|
console.error('数据加载失败:', error)
|
|
@@ -892,4 +942,31 @@ onMounted(async () => {
|
|
|
overflow: hidden; /* 隐藏溢出的内容 */
|
|
|
transition: max-height 0.3s ease; /* 平滑过渡效果 */
|
|
|
}
|
|
|
+
|
|
|
+:deep(.el-input-number .el-input__inner) {
|
|
|
+ text-align: left !important;
|
|
|
+ padding-left: 10px; /* 保持左侧间距 */
|
|
|
+}
|
|
|
+
|
|
|
+/* 分组容器样式 */
|
|
|
+.form-group {
|
|
|
+ position: relative;
|
|
|
+ border: 1px solid #dcdfe6;
|
|
|
+ border-radius: 4px;
|
|
|
+ padding: 20px 15px 10px;
|
|
|
+ margin-bottom: 18px;
|
|
|
+ transition: border-color 0.2s;
|
|
|
+}
|
|
|
+
|
|
|
+/* 分组标题样式 */
|
|
|
+.group-title {
|
|
|
+ position: absolute;
|
|
|
+ top: -10px;
|
|
|
+ left: 20px;
|
|
|
+ background: white;
|
|
|
+ padding: 0 8px;
|
|
|
+ color: #606266;
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: 500;
|
|
|
+}
|
|
|
</style>
|