posts - 296,comments - 1,views - 2865
<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>
posted on   leapss  阅读(2)  评论(0编辑  收藏  举报
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示