|
|
|
|
@ -7,6 +7,7 @@
|
|
|
|
|
label-width="110px"
|
|
|
|
|
v-loading="formLoading"
|
|
|
|
|
>
|
|
|
|
|
<div class="section-title">计划</div>
|
|
|
|
|
<el-form-item :label="t('ProductionPlan.Plan.dialogTaskLabel')" prop="taskId">
|
|
|
|
|
<el-select
|
|
|
|
|
disabled
|
|
|
|
|
@ -146,6 +147,15 @@
|
|
|
|
|
<el-form-item :label="t('ProductionPlan.Plan.dialogRemarkLabel')" prop="remark">
|
|
|
|
|
<el-input type="textarea" v-model="formData.remark" :placeholder="t('ProductionPlan.Plan.dialogRemarkPlaceholder')" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<div class="section-title">领料</div>
|
|
|
|
|
<el-form-item label="领料人" prop="workerId">
|
|
|
|
|
<el-select v-model="formData.workerId" clearable filterable placeholder="请选择领料人">
|
|
|
|
|
<el-option v-for="item in workerList" :key="item.id" :label="item.nickname" :value="item.id" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="是否完成质检" prop="isZj">
|
|
|
|
|
<el-switch v-model="formData.isZj" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<template #footer>
|
|
|
|
|
<el-button @click="submitForm" type="primary" :disabled="formLoading">{{ t('ProductionPlan.Plan.dialogSubmitButtonText') }}</el-button>
|
|
|
|
|
@ -169,11 +179,13 @@ import { PlanApi, PlanVO } from '@/api/mes/plan'
|
|
|
|
|
import { TaskApi, TaskDetailVO, TaskVO } from '@/api/mes/task'
|
|
|
|
|
import { DeviceLedgerApi, DeviceLedgerVO } from '@/api/mes/deviceledger'
|
|
|
|
|
import TableSelectDialog from '@/components/TableSelectDialog/TableSelectDialog.vue'
|
|
|
|
|
import * as UserApi from '@/api/system/user'
|
|
|
|
|
|
|
|
|
|
/** 生产计划 表单 */
|
|
|
|
|
defineOptions({ name: 'PlanForm' })
|
|
|
|
|
const taskList = ref<TaskVO[]>([]) // 用户列表
|
|
|
|
|
const taskDetailList = ref<TaskDetailVO[]>([]) // 用户列表
|
|
|
|
|
const workerList = ref<UserApi.UserVO[]>([])
|
|
|
|
|
const deviceSelectDialogRef = ref()
|
|
|
|
|
const selectedDeviceRows = ref<DeviceLedgerVO[]>([])
|
|
|
|
|
const maxUnplannedNumber = ref<number | undefined>(undefined)
|
|
|
|
|
@ -209,7 +221,8 @@ const formData = ref({
|
|
|
|
|
isCode: undefined,
|
|
|
|
|
latestStartTime: undefined,
|
|
|
|
|
finishDate: undefined,
|
|
|
|
|
deliveryDate: undefined
|
|
|
|
|
deliveryDate: undefined,
|
|
|
|
|
isZj: true
|
|
|
|
|
})
|
|
|
|
|
const deliveryDateText = computed(() => {
|
|
|
|
|
const sourceValue = formData.value.finishDate || formData.value.deliveryDate
|
|
|
|
|
@ -231,7 +244,7 @@ const deviceColumns = [
|
|
|
|
|
{ label: '设备编号', prop: 'deviceCode', minWidth: 140 },
|
|
|
|
|
{ label: '设备名称', prop: 'deviceName', minWidth: 160 },
|
|
|
|
|
{ label: '设备型号', prop: 'deviceModel', minWidth: 140 },
|
|
|
|
|
{ label: '所属车间', prop: 'workshop', minWidth: 140 }
|
|
|
|
|
{ label: '所属车间', prop: 'workshopName', minWidth: 140 }
|
|
|
|
|
]
|
|
|
|
|
const latestStartDisabledDate = (date: Date) => {
|
|
|
|
|
if (!formData.value.finishDate) return false
|
|
|
|
|
@ -434,6 +447,7 @@ const open = async (type: string, id?: number,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
taskList.value = await TaskApi.getPlanTaskList()
|
|
|
|
|
workerList.value = await UserApi.getSimpleUserList()
|
|
|
|
|
}
|
|
|
|
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
|
|
|
|
|
|
|
|
|
@ -486,7 +500,8 @@ const resetForm = () => {
|
|
|
|
|
isCode: true,
|
|
|
|
|
latestStartTime: undefined,
|
|
|
|
|
finishDate: undefined,
|
|
|
|
|
deliveryDate: undefined
|
|
|
|
|
deliveryDate: undefined,
|
|
|
|
|
isZj: true
|
|
|
|
|
}
|
|
|
|
|
maxUnplannedNumber.value = undefined
|
|
|
|
|
selectedDeviceRows.value = []
|
|
|
|
|
@ -513,4 +528,18 @@ const handlePlanEndTimeChange = () => {
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
.section-title {
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
color: #303133;
|
|
|
|
|
margin: 16px 0 12px;
|
|
|
|
|
padding-left: 10px;
|
|
|
|
|
border-left: 3px solid #409eff;
|
|
|
|
|
}
|
|
|
|
|
.section-title:first-child {
|
|
|
|
|
margin-top: 0;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|