批次以及批次的生产安排

This commit is contained in:
砂糖
2025-08-15 10:12:50 +08:00
parent 916d64c1ca
commit 7f0b243c7f
4 changed files with 285 additions and 22 deletions

View File

@@ -3,7 +3,7 @@
<el-row style="margin-bottom: 10px;">
<div v-for="(item, index) in taskList" style="display: flex; flex-wrap: wrap; gap: 10px; align-items: center;"
:key="index">
<ProductInfo :productId="item[0].productId" />
<ProductInfo :productId="item && item[0] && item[0].productId" />
<div v-for="process in item" :key="process.processId">
<CraftInfo :craftId="process.processId" />
</div>
@@ -75,7 +75,7 @@
<!-- 添加或修改批次合并相同工艺的任务对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="批次编号" prop="batchNo">
<el-input v-model="form.batchNo" placeholder="请输入批次编号" />
</el-form-item>
@@ -86,7 +86,13 @@
<el-input v-model="form.totalQuantity" placeholder="请输入批次总数量" />
</el-form-item> -->
<el-form-item label="合并来源" prop="mergeSource">
<el-input v-model="form.mergeSource" type="textarea" placeholder="请输入内容" />
<merge-source-selector
v-model="form.mergeSource"
:unmerged-tasks="unmergedTaskList"
:all-tasks="allTasks"
@change="handleMergeSourceChange"
/>
<!-- <el-input v-model="form.mergeSource" type="textarea" placeholder="请输入内容" /> -->
</el-form-item>
<el-form-item label="预计开始时间" prop="estimatedStartTime">
<el-date-picker clearable v-model="form.estimatedStartTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
@@ -152,14 +158,17 @@
import { listBatch, getBatch, delBatch, addBatch, updateBatch, generateBatch } from "@/api/wms/batch";
import { listProcessTask } from "@/api/wms/processTask";
import CraftInfo from '@/components/KLPService/Renderer/CraftInfo.vue';
import ProductInfo from '@/components/KLPService/Renderer/ProductInfo.vue';
import MergeSourceSelector from "../components/MergeSourceSelector.vue";
export default {
name: "Batch",
components: {
CraftInfo,
ProductInfo
ProductInfo,
MergeSourceSelector
},
dicts: ['batch_status'],
props: {
@@ -168,6 +177,16 @@ export default {
required: true
}
},
computed: {
// 所有还没有被合并的任务
unmergedTaskList() {
// 也就是不在batchList.mergeSource中的
return this.allTasks.filter(item => !this.batchList.some(batch => batch.mergeSource.split(',').includes(item.taskId)));
},
allTasks() {
return this.taskList.flat(1);
},
},
data() {
return {
// 按钮loading
@@ -233,8 +252,14 @@ export default {
this.taskList = Object.values(productIdToProcessTaskList);
},
getTaskInfo(taskId) {
const task = this.taskList.flat(1).find(item => item.taskId == taskId);
console.log(task, taskId);
const task = this.allTasks.find(item => item.taskId == taskId);
// console.log(task, taskId);
if (!task) {
return {
productId: '',
processId: ''
};
}
return task;
},
/** 查询批次(合并相同工艺的任务)列表 */
@@ -276,6 +301,12 @@ export default {
this.queryParams.pageNum = 1;
this.getList();
},
// 处理合并来源变化的回调
handleMergeSourceChange(mergeSource, selectedTasks) {
console.log('合并来源变化:', mergeSource);
console.log('选中的任务:', selectedTasks);
// 可以在这里做一些额外处理,比如计算总数量等
},
async handleInitBatch() {
generateBatch(this.taskList).then(res => {
console.log(res)
@@ -283,7 +314,7 @@ export default {
this.generateBatchList = res.data.map(item => {
let totalQuantity = 0;
for (const taskId of item.taskIds) {
const task = this.taskList.flat(1).find(item => item.taskId == taskId);
const task = this.allTasks.find(item => item.taskId == taskId);
totalQuantity += task.taskQuantity;
}
return {