| | |
| | | @close="closeDia" |
| | | > |
| | | <el-button type="primary" @click="addRow" style="margin-bottom: 10px;">新增</el-button> |
| | | <span style="font-size: 18px;margin-left: 10px">待排产数量:{{pendingNum}}</span> |
| | | <el-table :data="tableData" border style="width: 100%" :summary-method="summarizeMainTable" show-summary :row-key="row => row.id"> |
| | | <span style="font-size: 18px;margin-left: 10px">待排产数量:{{pendingNum}}</span> |
| | | <el-table :data="tableData" border style="width: 100%" :summary-method="summarizeMainTable" show-summary :row-key="row => row.id" stripe> |
| | | <el-table-column label="序号" width="60"> |
| | | <template #default="scope"> |
| | | {{ scope.$index + 1 }} |
| | |
| | | </el-table-column> |
| | | <el-table-column label="工序" prop="process"> |
| | | <template #default="scope"> |
| | | <el-input v-model="scope.row.process" placeholder="请输入工序" /> |
| | | <el-input |
| | | v-model="scope.row.process" |
| | | placeholder="请输入工序" |
| | | clearable |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="单位" prop="unit"> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="排产数量" width="200" prop="schedulingNum"> |
| | | <template #default="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.schedulingNum" |
| | | placeholder="请输入" |
| | | :min="0" |
| | | :step="0.1" |
| | | :precision="2" |
| | | clearable |
| | | style="width: 100%" |
| | | /> |
| | | <el-input-number |
| | | v-model="scope.row.schedulingNum" |
| | | placeholder="请输入" |
| | | :min="0" |
| | | :step="0.1" |
| | | :precision="2" |
| | | clearable |
| | | style="width: 100%" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="工时定额" width="200" prop="workHours"> |
| | | <template #default="scope"> |
| | | <el-input-number |
| | | v-model="scope.row.workHours" |
| | | placeholder="请输入" |
| | | :min="0" |
| | | :step="0.1" |
| | | :precision="2" |
| | | clearable |
| | | style="width: 100%" |
| | | /> |
| | | <el-input-number |
| | | v-model="scope.row.workHours" |
| | | placeholder="请输入" |
| | | :min="0" |
| | | :step="0.1" |
| | | :precision="2" |
| | | clearable |
| | | style="width: 100%" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="排产日期" prop="schedulingDate"> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="排产人" prop="schedulingUserId"> |
| | | <template #default="scope"> |
| | | <el-select |
| | | v-model="scope.row.schedulingUserId" |
| | | placeholder="选择人员" |
| | | style="width: 100%;" |
| | | > |
| | | <el-option |
| | | v-for="user in userList" |
| | | :key="user.userId" |
| | | :label="user.nickName" |
| | | :value="user.userId" |
| | | /> |
| | | </el-select> |
| | | <el-select |
| | | v-model="scope.row.schedulingUserId" |
| | | placeholder="选择人员" |
| | | style="width: 100%;" |
| | | > |
| | | <el-option |
| | | v-for="user in userList" |
| | | :key="user.userId" |
| | | :label="user.nickName" |
| | | :value="user.userId" |
| | | /> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" width="80"> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" @click="submitForm">确认</el-button> |
| | | <el-button @click="closeDia">取消</el-button> |
| | | </div> |
| | | </template> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" @click="submitForm">确认</el-button> |
| | | <el-button @click="closeDia">取消</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | |
| | | import {userListNoPageByTenantId} from "@/api/system/user.js"; |
| | | import {processScheduling} from "@/api/productionManagement/operationScheduling.js"; |
| | | const { proxy } = getCurrentInstance() |
| | | const { work_step } = proxy.useDict("work_step") |
| | | const emit = defineEmits(['close']) |
| | | |
| | | const dialogFormVisible = ref(false); |
| | | const operationType = ref('') |
| | | const tableData = ref([ |
| | | { process: '', schedulingDate: '', schedulingNum: '', schedulingUserId: '', workHours: '', unit: '' } |
| | | { process: '', schedulingDate: '', schedulingNum: '', schedulingUserId: '', workHours: '', unit: '' } |
| | | ]); |
| | | const unitFromRow = ref(''); |
| | | const idFromRow = ref(''); |
| | |
| | | const openDialog = (type, row) => { |
| | | operationType.value = type; |
| | | dialogFormVisible.value = true; |
| | | userListNoPageByTenantId().then((res) => { |
| | | userList.value = res.data; |
| | | }); |
| | | pendingNum.value = row.pendingNum |
| | | userListNoPageByTenantId().then((res) => { |
| | | userList.value = res.data; |
| | | }); |
| | | pendingNum.value = row.pendingNum |
| | | if (row && row.unit !== undefined) { |
| | | unitFromRow.value = row.unit; |
| | | idFromRow.value = row.id; |
| | |
| | | } |
| | | } |
| | | const submitForm = () => { |
| | | // 1. 检查每一行是否填写完整 |
| | | for (let i = 0; i < tableData.value.length; i++) { |
| | | const row = tableData.value[i]; |
| | | if ( |
| | | !row.process || |
| | | !row.schedulingDate || |
| | | row.schedulingNum === '' || row.schedulingNum === null || |
| | | !row.schedulingUserId || |
| | | row.workHours === '' || row.workHours === null || |
| | | !row.unit |
| | | ) { |
| | | proxy.$modal.msgError(`第${i + 1}行数据未填写完整`); |
| | | return; |
| | | } |
| | | } |
| | | // 2. 合计排产数量 |
| | | const totalSchedulingNum = tableData.value.reduce((sum, row) => { |
| | | return sum + Number(row.schedulingNum || 0); |
| | | }, 0); |
| | | if (totalSchedulingNum > Number(pendingNum.value)) { |
| | | proxy.$modal.msgError('排产数量合计不能超过待排产数量'); |
| | | return; |
| | | } |
| | | processScheduling(tableData.value).then((res) => { |
| | | proxy.$modal.msgSuccess("提交成功"); |
| | | closeDia(); |
| | | }) |
| | | // 1. 检查每一行是否填写完整 |
| | | for (let i = 0; i < tableData.value.length; i++) { |
| | | const row = tableData.value[i]; |
| | | if ( |
| | | !row.process || |
| | | !row.schedulingDate || |
| | | row.schedulingNum === '' || row.schedulingNum === null || |
| | | !row.schedulingUserId || |
| | | row.workHours === '' || row.workHours === null || |
| | | !row.unit |
| | | ) { |
| | | proxy.$modal.msgError(`第${i + 1}行数据未填写完整`); |
| | | return; |
| | | } |
| | | } |
| | | // 2. 合计排产数量 |
| | | const totalSchedulingNum = tableData.value.reduce((sum, row) => { |
| | | return sum + Number(row.schedulingNum || 0); |
| | | }, 0); |
| | | if (totalSchedulingNum > Number(pendingNum.value)) { |
| | | proxy.$modal.msgError('排产数量合计不能超过待排产数量'); |
| | | return; |
| | | } |
| | | processScheduling(tableData.value).then((res) => { |
| | | proxy.$modal.msgSuccess("提交成功"); |
| | | closeDia(); |
| | | }) |
| | | } |
| | | const summarizeMainTable = (param) => { |
| | | return proxy.summarizeTable(param, ['schedulingNum']); |
| | | return proxy.summarizeTable(param, ['schedulingNum']); |
| | | }; |
| | | // 关闭弹框 |
| | | const closeDia = () => { |
| | |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | | </style> |