|
@@ -160,7 +160,7 @@
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<div style="display: flex; justify-content: center; align-items: center; width: 100%">
|
|
<div style="display: flex; justify-content: center; align-items: center; width: 100%">
|
|
<!-- 新增配置按钮 -->
|
|
<!-- 新增配置按钮 -->
|
|
- <div style="margin-left: 12px">
|
|
|
|
|
|
+ <div style="margin-left: 12px" v-if="scope.row.status === 0">
|
|
<el-button
|
|
<el-button
|
|
link
|
|
link
|
|
type="primary"
|
|
type="primary"
|
|
@@ -169,7 +169,7 @@
|
|
{{ t('stock.DelayMaintenance') }}
|
|
{{ t('stock.DelayMaintenance') }}
|
|
</el-button>
|
|
</el-button>
|
|
</div>
|
|
</div>
|
|
- <div style="margin-left: 12px">
|
|
|
|
|
|
+ <div style="margin-left: 12px" v-if="scope.row.status === 0">
|
|
<el-button
|
|
<el-button
|
|
link
|
|
link
|
|
type="primary"
|
|
type="primary"
|
|
@@ -182,7 +182,7 @@
|
|
<el-button
|
|
<el-button
|
|
link
|
|
link
|
|
type="primary"
|
|
type="primary"
|
|
- @click="handleView(scope.row.bomNodeId)"
|
|
|
|
|
|
+ @click="handleView(scope.row)"
|
|
>
|
|
>
|
|
{{ t('bomList.materialDetail') }}
|
|
{{ t('bomList.materialDetail') }}
|
|
</el-button>
|
|
</el-button>
|
|
@@ -458,6 +458,8 @@
|
|
@update:model-value="val => drawerVisible = val"
|
|
@update:model-value="val => drawerVisible = val"
|
|
:node-id="currentBomNodeId"
|
|
:node-id="currentBomNodeId"
|
|
:materials="materialList.filter(item => item.bomNodeId === currentBomNodeId)"
|
|
:materials="materialList.filter(item => item.bomNodeId === currentBomNodeId)"
|
|
|
|
+ @delete="handleDeleteMaterial"
|
|
|
|
+ :hide-extra-columns="hideExtraColumnsInDrawer"
|
|
/>
|
|
/>
|
|
</template>
|
|
</template>
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
@@ -501,6 +503,8 @@ const deviceIds = ref<number[]>([]) // 已经选择的设备id数组
|
|
const { params, name } = useRoute() // 查询参数
|
|
const { params, name } = useRoute() // 查询参数
|
|
const id = params.id
|
|
const id = params.id
|
|
const devicePersonsMap = ref<Map<number, Set<string>>>(new Map()) // 存储设备-责任人映射
|
|
const devicePersonsMap = ref<Map<number, Set<string>>>(new Map()) // 存储设备-责任人映射
|
|
|
|
+// 控制抽屉额外列的显示
|
|
|
|
+const hideExtraColumnsInDrawer = ref(false)
|
|
|
|
|
|
const formData = ref({
|
|
const formData = ref({
|
|
id: undefined,
|
|
id: undefined,
|
|
@@ -688,10 +692,11 @@ const selectChoose = (selectedMaterial) => {
|
|
}
|
|
}
|
|
|
|
|
|
/** 查看已经选择的物料 并编辑 */
|
|
/** 查看已经选择的物料 并编辑 */
|
|
-const handleView = (nodeId) => {
|
|
|
|
- currentBomNodeId.value = nodeId
|
|
|
|
|
|
+const handleView = (row: IotMainWorkOrderBomVO) => {
|
|
|
|
+ currentBomNodeId.value = row.bomNodeId
|
|
drawerVisible.value = true
|
|
drawerVisible.value = true
|
|
- // showDrawer.value.openDrawer()
|
|
|
|
|
|
+ // 根据状态值设置是否隐藏额外列
|
|
|
|
+ hideExtraColumnsInDrawer.value = row.status === 1
|
|
console.log('当前bom节点:', currentBomNodeId.value)
|
|
console.log('当前bom节点:', currentBomNodeId.value)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -853,6 +858,7 @@ async function getDevicePersons() {
|
|
|
|
|
|
// 获取指定bomNodeId的物料数量
|
|
// 获取指定bomNodeId的物料数量
|
|
const getMaterialCount = (bomNodeId: number) => {
|
|
const getMaterialCount = (bomNodeId: number) => {
|
|
|
|
+ console.log('当前BOM节点:' + bomNodeId)
|
|
return materialList.value.filter(item => item.bomNodeId === bomNodeId).length
|
|
return materialList.value.filter(item => item.bomNodeId === bomNodeId).length
|
|
}
|
|
}
|
|
|
|
|
|
@@ -862,6 +868,22 @@ const hasDelay = (row) => {
|
|
row.delayDuration > 0
|
|
row.delayDuration > 0
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+const handleDeleteMaterial = (material) => {
|
|
|
|
+ // 根据唯一标识查找要删除的物料索引
|
|
|
|
+ const index = materialList.value.findIndex(item =>
|
|
|
|
+ item.bomNodeId === material.bomNodeId &&
|
|
|
|
+ item.factoryId === material.factoryId &&
|
|
|
|
+ item.costCenterId === material.costCenterId &&
|
|
|
|
+ item.storageLocationId === material.storageLocationId &&
|
|
|
|
+ item.materialCode === material.materialCode
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ if (index !== -1) {
|
|
|
|
+ materialList.value.splice(index, 1);
|
|
|
|
+ message.success('物料删除成功');
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
const close = () => {
|
|
const close = () => {
|
|
delView(unref(currentRoute))
|
|
delView(unref(currentRoute))
|
|
push({ name: 'IotMainWorkOrder', params:{}})
|
|
push({ name: 'IotMainWorkOrder', params:{}})
|
|
@@ -878,9 +900,15 @@ const submitForm = async () => {
|
|
// 提交请求
|
|
// 提交请求
|
|
formLoading.value = true
|
|
formLoading.value = true
|
|
try {
|
|
try {
|
|
|
|
+ const convertedList = list.value.map(item => ({
|
|
|
|
+ ...item,
|
|
|
|
+ lastNaturalDate: typeof item.lastNaturalDate === 'number'
|
|
|
|
+ ? item.lastNaturalDate
|
|
|
|
+ : (item.lastNaturalDate ? dayjs(item.lastNaturalDate).valueOf() : null)
|
|
|
|
+ }));
|
|
const data = {
|
|
const data = {
|
|
mainWorkOrder: formData.value,
|
|
mainWorkOrder: formData.value,
|
|
- mainWorkOrderBom: list.value,
|
|
|
|
|
|
+ mainWorkOrderBom: convertedList,
|
|
mainWorkOrderMaterials: materialList.value
|
|
mainWorkOrderMaterials: materialList.value
|
|
}
|
|
}
|
|
await IotMainWorkOrderApi.fillWorkOrder(data)
|
|
await IotMainWorkOrderApi.fillWorkOrder(data)
|
|
@@ -1058,12 +1086,19 @@ onMounted(async () => {
|
|
if (Array.isArray(data)) {
|
|
if (Array.isArray(data)) {
|
|
// 添加过滤逻辑:只保留 status === 0 的记录
|
|
// 添加过滤逻辑:只保留 status === 0 的记录
|
|
list.value = data
|
|
list.value = data
|
|
- .filter(item => item.status === 0) // 关键过滤代码
|
|
|
|
|
|
+ // .filter(item => item.status === 0) // 关键过滤代码
|
|
.map(item => ({
|
|
.map(item => ({
|
|
...item,
|
|
...item,
|
|
lastNaturalDate: item.lastNaturalDate
|
|
lastNaturalDate: item.lastNaturalDate
|
|
- ? dayjs(item.lastNaturalDate).format('YYYY-MM-DD')
|
|
|
|
- : null
|
|
|
|
|
|
+ }))
|
|
|
|
+ }
|
|
|
|
+ // 查询当前保养工单已经关联的所有物料
|
|
|
|
+ const materials = await IotMainWorkOrderBomMaterialApi.getWorkOrderBomMaterials(queryParams);
|
|
|
|
+ materialList.value = []
|
|
|
|
+ if (Array.isArray(materials)) {
|
|
|
|
+ materialList.value = materials
|
|
|
|
+ .map(item => ({
|
|
|
|
+ ...item,
|
|
}))
|
|
}))
|
|
}
|
|
}
|
|
} catch (error) {
|
|
} catch (error) {
|