<script setup lang="ts">
import { ref } from 'vue'
import {getZlService,getTeamService,addScjhService,updateZlTotalProcessService} from "@/api/scjh.js";
const zl =ref({
generalOrder:'',
divisionOrder:'',
subordinateOrder:'',
productName:'',
batch:'',
quantity:'',
startTime:'',
endTime:'',
status:'',
totalProcess:'',
currentProcess:''
})
const zls =ref([
{
generalOrder:'',
divisionOrder:'',
subordinateOrder:'',
productName:'',
batch:'',
quantity:'',
startTime:'',
endTime:'',
status:'',
totalProcess:'',
currentProcess:''
}
])
const getZl = async () => {
let result = await getZlService()
zls.value = result.data
}
getZl()
const teams =ref([
{
teamName:'',
process:'',
workshop:''
}
])
const getTeam = async () => {
let result = await getTeamService()
teams.value = result.data
}
const scscjhDialogVisible = ref(false)
/*const selectedTeams = ref([]); // 选择的团队*/
const openScscjhDialog = (row) =>{
zl.value = {
generalOrder: row.generalOrder,
divisionOrder: row.divisionOrder,
subordinateOrder: row.subordinateOrder,
productName: row.productName,
batch: row.batch,
quantity: row.quantity,
startTime: row.startTime,
endTime: row.endTime,
status: row.status,
currentProcess: row.currentProcess,
totalProcess: row.totalProcess
}
/* selectedTeams.value = []
getTeam()*/
scscjhDialogVisible.value = true
}
const scjh = ref({
generalOrder:'',
divisionOrder:'',
subordinateOrder:'',
productName:'',
batch:'',
liucheng:'',
quantity:'',
nextTeam:'',
startTime:'',
endTime:'',
status:''
})
/*const addScjh = async () => {
/!*await updateZlTotalProcessService(selectedTeams.value.join(',') , zl.value)*!/
for (const team of selectedTeams.value) {
scjh.value = {
generalOrder: zl.value.generalOrder,
divisionOrder: zl.value.divisionOrder,
subordinateOrder: zl.value.subordinateOrder,
productName: zl.value.productName,
batch: zl.value.batch,
liucheng: selectedTeams.value.join(','),
quantity: zl.value.quantity,
nextTeam: team,
startTime: zl.value.startTime,
endTime: zl.value.endTime,
status:"未分配"
};
await addScjhService(scjh.value)
}
scscjhDialogVisible.value = false
await getZl()
}*/
const addScjh = async () => {
await getTeam();
const teamProcessMap = {};
for (const team of teams.value) {
teamProcessMap[team.teamName] = team.process.split(',');
}
const steps = zl.value.totalProcess.split('->');
const teamSteps = {};
// 5. 遍历步骤,查找每个步骤属于哪个班组,并将步骤添加到对应班组的列表
for (const step of steps) {
for (const teamName in teamProcessMap) {
if (teamProcessMap[teamName].includes(step)) {
if (!teamSteps[teamName]) {
teamSteps[teamName] = []; // 初始化班组的步骤列表
}
teamSteps[teamName].push(step); // 将步骤添加到对应班组的列表
break; // 退出循环,因为每个步骤只能属于一个班组
}
}
}
console.log(teamSteps)
// 6. 遍历每个班组,生成 scjh 对象并添加到数据库
for (const team of teams.value) {
const teamName = team.teamName; // 获取班组名称
const teamProcess = teamSteps[teamName] || [];
if (teamProcess.length > 0) {
scjh.value = {
generalOrder: zl.value.generalOrder,
divisionOrder: zl.value.divisionOrder,
subordinateOrder: zl.value.subordinateOrder,
productName: zl.value.productName,
batch: zl.value.batch,
liucheng: teamProcess.join(','), // 将步骤按顺序用逗号隔开
quantity: zl.value.quantity,
nextTeam: teamName,
startTime: zl.value.startTime,
endTime: zl.value.endTime,
status: "未分配"
};
await addScjhService(scjh.value);
}
}
scscjhDialogVisible.value = false;
await getZl();
}
</script>
<template>
<h1>生产计划</h1>
<el-table :data="zls" border style="width: 100%">
<el-table-column prop="generalOrder" label="总制令" />
<el-table-column prop="divisionOrder" label="分制令" />
<el-table-column prop="subordinateOrder" label="子制令" />
<el-table-column prop="productName" label="产品名" />
<el-table-column prop="batch" label="批次" />
<el-table-column prop="quantity" label="数量" />
<el-table-column prop="startTime" label="开始时间" />
<el-table-column prop="endTime" label="结束时间" />
<el-table-column prop="status" label="状态" />
<el-table-column label="操作">
<template #default="{row}">
<el-button
type="primary"
@click="openScscjhDialog(row)"
:disabled="row.status !== '待生成生产计划'"
>生成生产计划</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog v-model="scscjhDialogVisible" title="生成生产计划" width="500" draggable center>
<el-form label-position="left" label-width="auto">
<el-form-item label="总制令" >
<el-input v-model="zl.generalOrder" disabled />
</el-form-item>
<el-form-item label="分制令">
<el-input v-model="zl.divisionOrder" disabled />
</el-form-item>
<el-form-item label="子制令">
<el-input v-model="zl.subordinateOrder" disabled />
</el-form-item>
<el-form-item label="产品名">
<el-input v-model="zl.productName" disabled />
</el-form-item>
<el-form-item label="批次">
<el-input v-model="zl.batch" disabled />
</el-form-item>
<el-form-item label="数量">
<el-input v-model="zl.quantity" disabled />
</el-form-item>
<!-- <el-form-item label="确定流程">
<el-select
v-model="selectedTeams"
multiple
placeholder="选择流程"
@change="selectedTeams = $event"
>
<el-option
v-for="(team, index) in teams"
:key="index"
:label="team.teamName"
:value="team.teamName"
/>
</el-select>
</el-form-item>-->
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="scscjhDialogVisible = false">关闭</el-button>
<el-button type="primary" @click="addScjh" >生成</el-button>
</div>
</template>
</el-dialog>
</template>
<style scoped >
.demo-form-inline .el-select {
--el-select-width: 220px;
}
</style>