<script setup lang="ts">
import {computed, onMounted, ref} from "vue";
import {getScjhService, getWorkerService, getProcessService, addWorkInfoService} from "@/api/fprw.js";
//响应式数据--生产计划
const scjh = ref({
generalOrder: '',
divisionOrder: '',
subordinateOrder: '',
productName: '',
batch: '',
liucheng: '',
quantity: '',
nextTeam: '',
startTime: '',
endTime: ''
})
const scjhs = ref([
{
generalOrder: '',
divisionOrder: '',
subordinateOrder: '',
productName: '',
batch: '',
liucheng: '',
quantity: '',
nextTeam: '',
startTime: '',
endTime: ''
}
])
/*获取生产计划*/
const getScjh = async () => {
let result = await getScjhService()
scjhs.value = result.data
}
getScjh()
//获取工人信息
//scjh.value.nextTeam
const workers = ref([])
const getWorker = async () => {
let result = await getWorkerService()
workers.value = result.data
}
//分布任务小页面是否开启的标志
const fprwDialogVisible = ref(false)
//工序步骤
const processSteps = ref([])
//为工序选择的人
const selectedWorkerForProcess = ref({})
//工作数量
const workerQuantities = ref({})
const getProcess = async () => {
let result = await getProcessService(scjh.value.nextTeam)
//这里将工序获得,并根据,分隔开存储到processSteps
processSteps.value = result.data.split(',')
processSteps.value.forEach(step => {
selectedWorkerForProcess.value[step] = null
workerQuantities.value[step] = 0
})
}
//根据你的选择,将信息加入到后端数据库中
const addWorkInfo = async () => {
for (let step of processSteps.value) {
const selectedWorker = selectedWorkerForProcess.value[step]
const assignedQuantity = workerQuantities.value[step]
if (selectedWorker && assignedQuantity > 0) {
workInfo.value = {
generalOrder: scjh.value.generalOrder,
divisionOrder: scjh.value.divisionOrder,
subordinateOrder: scjh.value.subordinateOrder,
productName: scjh.value.productName,
batch: scjh.value.batch,
liucheng: scjh.value.liucheng,
process: step,
startTime: scjh.value.startTime,
endTime: scjh.value.endTime,
id: selectedWorker.id,
name: selectedWorker.name,
quantity: assignedQuantity,
status: step
}
await addWorkInfoService(workInfo.value)
}
}
fprwDialogVisible.value = false
}
const fetchProcess = async (teamName) => {
try {
const result = await getProcessService(teamName);
if (result && result.data) {
// 分割工序数据,并去除空白项
processSteps.value = result.data.split(',').filter((step) => step.trim() !== "");
}
} catch (error) {
console.error("获取工序失败:", error);
}
};
// 假设 teamName 从其他地方传递,可以通过 props 传入
onMounted(() => {
fetchProcess("射蜡班组"); // 替换为实际的班组名称
getWorker()
getProcess()
});
</script>
<template>
<h2>班组工序</h2>
<el-table v-if="processSteps.length" :data="processSteps" border style="width: 100%">
<!-- 工序列 -->
<el-table-column prop="step" label="工序" width="180">
<template #default="{ row }">
{{ row }}
</template>
</el-table-column>
<!-- 选择员工列 -->
<el-table-column label="选择员工" width="250">
<template #default="{ row }">
<el-select v-model="selectedWorkerForProcess[row]" placeholder="选择员工">
<el-option
v-for="worker in workers"
:key="worker.id"
:label="worker.name"
:value="worker"
/>
</el-select>
</template>
</el-table-column>
<!-- 任务数量列 -->
<el-table-column label="任务数量" width="200">
<template #default="{ row }">
<el-input-number
v-model="workerQuantities[row]"
:min="0"
:max="scjh.quantity"
controls-position="right"
/>
</template>
</el-table-column>
<!-- 操作列 -->
<el-table-column label="操作">
<template #default="{ row }">
<el-button type="primary" @click="addWorkInfo">分配任务</el-button>
</template>
</el-table-column>
</el-table>
<!-- 当没有工序时,展示暂无工序的提示 -->
<el-empty v-else description="该班组暂无工序" />
</template>
<style scoped>
.demo-form-inline .el-input {
--el-input-width: 220px;
}
.demo-form-inline .el-select {
--el-select-width: 220px;
}
</style>