Browse Source

2025-10-30

生产派工单列表支持拖拽
master
fengyuan_yang 3 months ago
parent
commit
f09bee24a5
  1. 63
      src/views/modules/shopOrder/productionOrderScheduling/searchProductionDispatchList.vue

63
src/views/modules/shopOrder/productionOrderScheduling/searchProductionDispatchList.vue

@ -95,6 +95,7 @@
</el-form-item>
</el-form>
<el-table
ref="dispatchTable"
:height="height"
:data="dataList"
border
@ -1005,9 +1006,6 @@ export default {
handleDragEnd(evt) {
const { oldIndex, newIndex } = evt;
console.log('=== 拖拽开始 ===');
console.log('oldIndex:', oldIndex, 'newIndex:', newIndex);
//
if (oldIndex === newIndex) {
return;
@ -1017,27 +1015,19 @@ export default {
const movedItem = this.dataList[oldIndex];
const targetSerialNumber = this.dataList[newIndex].serialNumber;
console.log('被拖拽项:', movedItem.orderNo, '原序号:', movedItem.serialNumber);
console.log('目标位置序号:', targetSerialNumber);
//
this.draggedItem = {
site: movedItem.site,
orderNo: movedItem.orderNo,
itemNo: movedItem.itemNo,
seqNo: movedItem.seqNo, // 使 seqNo
newSerialNumber: targetSerialNumber //
seqNo: movedItem.seqNo,
newSerialNumber: targetSerialNumber
};
//
this.dataList.splice(oldIndex, 1);
this.dataList.splice(newIndex, 0, movedItem);
console.log('移动后的dataList顺序:');
this.dataList.forEach((item, idx) => {
console.log(` 位置${idx}: ${item.orderNo}-工序${item.itemNo} | SeqNo:${item.seqNo} | serial_number:${item.serialNumber}`);
});
//
this.reassignSerialNumbers(oldIndex, newIndex);
},
@ -1066,12 +1056,11 @@ export default {
//
if (item.serialNumber !== newSerialNumber) {
console.log(`更新序号: ${item.orderNo}-工序${item.itemNo}-SeqNo${item.seqNo}${item.serialNumber} 改为 ${newSerialNumber}`);
updateList.push({
site: item.site,
orderNo: item.orderNo,
itemNo: item.itemNo,
scheduleSeqNo: item.seqNo, // 使 seqNo sScheduledSeqNo
scheduleSeqNo: item.seqNo,
resourceId: item.sResourceID,
serialNumber: newSerialNumber,
});
@ -1079,40 +1068,27 @@ export default {
});
});
console.log('需要更新的记录数:', updateList.length);
console.log('更新列表:', updateList);
//
if (updateList.length > 0) {
this.saveSortOrder(updateList);
} else {
console.log('没有需要更新的记录');
}
},
/*保存排序到后端*/
saveSortOrder(updateList) {
console.log('调用后端接口,更新序号...');
console.log('请求数据:', JSON.stringify(updateList, null, 2));
batchUpdateSerialNumber(updateList).then(({data}) => {
console.log('后端响应:', data);
if (data.code === 0) {
this.$message.success('排序保存成功');
console.log('排序保存成功,准备刷新列表');
//
this.refreshAndLocate();
} else {
console.error('排序保存失败:', data.msg);
this.$message.error(data.msg || '排序保存失败');
//
this.getData();
this.draggedItem = null;
}
}).catch(error => {
console.error('后端接口调用异常:', error);
this.$message.error('排序保存失败: ' + error.message);
this.$message.error('排序保存失败');
//
this.getData();
this.draggedItem = null;
@ -1121,17 +1097,11 @@ export default {
/*刷新列表并定位到拖拽的行*/
refreshAndLocate() {
console.log('开始刷新列表并定位...');
//
this.getData().then(() => {
console.log('数据刷新完成,开始定位');
// DOM
this.$nextTick(() => {
if (this.draggedItem) {
console.log('查找拖拽项:', this.draggedItem);
//
const targetIndex = this.dataList.findIndex(item =>
item.site === this.draggedItem.site &&
@ -1140,11 +1110,8 @@ export default {
item.seqNo === this.draggedItem.seqNo
);
console.log('找到目标行索引:', targetIndex);
if (targetIndex !== -1) {
const targetItem = this.dataList[targetIndex];
console.log('目标行信息:', targetItem.orderNo, '序号:', targetItem.serialNumber);
//
this.scheduleRow = targetItem;
@ -1163,12 +1130,9 @@ export default {
//
rows[targetIndex].click();
console.log('已定位到目标行');
}
}
});
} else {
console.log('未找到目标行');
}
//
@ -1176,7 +1140,6 @@ export default {
}
});
}).catch(error => {
console.error('刷新数据失败:', error);
this.draggedItem = null;
});
},
@ -1224,13 +1187,19 @@ export default {
_timestamp: new Date().getTime()
};
return searchProductionDispatchList(searchDataWithTimestamp).then(({data}) => {
//
this.dataList = [];
// tick
this.$nextTick(() => {
this.dataList = data.rows;
console.log('数据加载完成,共', data.rows.length, '条记录');
// 10
console.log('前10条记录的序号:');
data.rows.slice(0, 10).forEach((item, idx) => {
console.log(` ${idx}: ${item.orderNo}-工序${item.itemNo} | SeqNo:${item.seqNo} | serial_number:${item.serialNumber} | S_ScheduledSeqNo:${item.sScheduledSeqNo}`);
// tickDOM
this.$nextTick(() => {
if (this.$refs.dispatchTable) {
this.$refs.dispatchTable.clearSort();
}
});
});
return data.rows;

Loading…
Cancel
Save