<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 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
}
scscjhDialogVisible.value = true
}
const scjh = ref({
generalOrder:'',
divisionOrder:'',
subordinateOrder:'',
productName:'',
batch:'',
liucheng:'',
quantity:'',
nextTeam:'',
startTime:'',
endTime:'',
status:''
})
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 = {};
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)
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>
<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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步