style:修改任务单排产-新增计划及生产计划详情字段

pull/1/head
黄伟杰 1 month ago
parent 3ac5ee7183
commit a0c5768efa

@ -88,7 +88,7 @@
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="设备" prop="feedingPipeline">
<el-form-item label="设备" prop="deviceId">
<el-input
:model-value="deviceDisplayText"
placeholder="点击选择设备"
@ -214,18 +214,20 @@ const formData = ref({
remark: undefined,
groupType: undefined,
isEnable: undefined,
feedingPipeline: undefined,
feedingPipelineName: undefined,
deviceId: undefined,
deviceName: undefined,
workerId: undefined,
isPreProduction: undefined,
isCode: undefined,
latestStartTime: undefined,
finishDate: undefined
finishDate: undefined,
deliveryDate: undefined
})
const deliveryDateText = computed(() => {
if (!formData.value.finishDate) return ''
const value = dayjs(formData.value.finishDate)
if (!value.isValid()) return String(formData.value.finishDate)
const sourceValue = formData.value.finishDate || formData.value.deliveryDate
if (!sourceValue) return ''
const value = dayjs(sourceValue)
if (!value.isValid()) return String(sourceValue)
return value.format('YYYY-MM-DD')
})
const deviceDisplayText = computed(() => {
@ -234,7 +236,7 @@ const deviceDisplayText = computed(() => {
.map((item: any) => item.deviceName || item.name || item.code || `ID:${item.id}`)
.join('、')
}
if (formData.value.feedingPipelineName) return String(formData.value.feedingPipelineName)
if (formData.value.deviceName) return String(formData.value.deviceName)
return ''
})
const deviceColumns = [
@ -317,7 +319,7 @@ const formRules = reactive({
{ required: true, message: t('ProductionPlan.Plan.validatorPlanEndRequired'), trigger: 'blur' },
{ validator: validatePlanEndTime, trigger: 'change' }
],
feedingPipeline: [{ required: true, message: '请选择设备', trigger: 'change' }],
deviceId: [{ required: true, message: '请选择设备', trigger: 'change' }],
isPreProduction: [{ required: true, message: t('ProductionPlan.Plan.validatorPreProductionRequired'), trigger: 'blur' }],
latestStartTime: [
{ required: true, message: '请选择最晚开工时间', trigger: 'blur' },
@ -338,11 +340,11 @@ const fetchDeviceLedgerPage = (params: Record<string, any>) => {
const openDeviceSelectDialog = () => {
const rows = selectedDeviceRows.value.length
? selectedDeviceRows.value.map((item: any) => ({ ...item, id: Number(item.id) }))
: formData.value.feedingPipeline
: formData.value.deviceId
? [
{
id: Number(formData.value.feedingPipeline),
deviceName: formData.value.feedingPipelineName
id: Number(formData.value.deviceId),
deviceName: formData.value.deviceName
}
]
: []
@ -354,8 +356,8 @@ const handleDeviceSelectConfirm = (payload: { ids: (number | string)[]; rows: an
if (!row) return
const deviceId = Number(row.id)
if (!Number.isFinite(deviceId)) return
formData.value.feedingPipeline = deviceId
formData.value.feedingPipelineName = row.deviceName || row.name || row.code || `设备ID:${deviceId}`
formData.value.deviceId = deviceId
formData.value.deviceName = row.deviceName || row.name || row.code || `设备ID:${deviceId}`
selectedDeviceRows.value = [row]
}
@ -366,11 +368,13 @@ const syncFinishDateByTaskDetail = () => {
/** 打开弹窗 */
const open = async (type: string, id?: number,
taskId?: number, productId?: number, number?: number, taskDetailId?:string) => {
taskId?: number, productId?: number, number?: number, taskDetailId?:string,
taskDeliveryDate?: string | number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
formData.value.deliveryDate = taskDeliveryDate || undefined
if(taskId) {
formData.value.taskId = taskId
taskDetailList.value =await TaskApi.getTaskDetailListByTaskId(formData.value.taskId)
@ -378,7 +382,8 @@ const open = async (type: string, id?: number,
const taskDetails = taskDetailList.value.filter(item => item.id === taskDetailId)
if(taskDetails && taskDetails.length > 0 && taskDetails[0].id) {
formData.value.taskDetailId = taskDetails[0].id
formData.value.finishDate = (taskDetails[0] as any).finishDate || (taskDetails[0] as any).deliveryDate || undefined
formData.value.finishDate = (taskDetails[0] as any).finishDate || undefined
formData.value.deliveryDate = (taskDetails[0] as any).deliveryDate || taskDeliveryDate || undefined
}
}
}
@ -393,11 +398,11 @@ const open = async (type: string, id?: number,
formLoading.value = true
try {
formData.value = await PlanApi.getPlan(id)
if (formData.value.feedingPipeline) {
if (formData.value.deviceId) {
selectedDeviceRows.value = [
{
id: Number(formData.value.feedingPipeline),
deviceName: formData.value.feedingPipelineName
id: Number(formData.value.deviceId),
deviceName: formData.value.deviceName
} as DeviceLedgerVO
]
}
@ -452,12 +457,13 @@ const resetForm = () => {
remark: undefined,
groupType: undefined,
isEnable: undefined,
feedingPipeline: undefined,
feedingPipelineName: undefined,
deviceId: undefined,
deviceName: undefined,
isPreProduction: 0,
isCode: true,
latestStartTime: undefined,
finishDate: undefined
finishDate: undefined,
deliveryDate: undefined
}
selectedDeviceRows.value = []
formRef.value?.resetFields()

@ -7,11 +7,24 @@
label-width="100px"
v-loading="formLoading"
>
<el-form-item :label="t('ProductionPlan.Plan.dialogTaskLabel')" prop="taskId">
<el-input disabled v-model="formData.taskId" :placeholder="t('ProductionPlan.Plan.dialogTaskPlaceholder')" />
<el-form-item :label="t('ProductionPlan.Plan.dialogTaskLabel')" prop="taskCode">
<el-input disabled v-model="formData.taskCode" :placeholder="t('ProductionPlan.Plan.dialogTaskPlaceholder')" />
</el-form-item>
<el-form-item :label="t('ProductionPlan.Plan.dialogTaskDetailLabel')" prop="taskDetailId">
<el-input disabled v-model="formData.taskDetailId" :placeholder="t('ProductionPlan.Plan.dialogTaskDetailPlaceholder')" />
<el-select
disabled
v-model="formData.taskDetailId"
clearable
filterable
:placeholder="t('ProductionPlan.Plan.dialogTaskDetailPlaceholder')"
>
<el-option
v-for="item in taskDetailList"
:key="item.id"
:label="item.productName + '-未计划:' + (item.number - item.planNumber)"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item prop="code">
<template #label>
@ -95,6 +108,7 @@
<script setup lang="ts">
import { PlanApi } from '@/api/mes/plan'
import { TaskApi, TaskDetailVO } from '@/api/mes/task'
import dayjs from 'dayjs'
import {DICT_TYPE, getIntDictOptions} from "@/utils/dict";
@ -108,12 +122,14 @@ const dialogVisible = ref(false) // 弹窗的是否展示
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formRules = reactive({})
const taskDetailList = ref<TaskDetailVO[]>([])
const formData = ref({
id: undefined,
code: undefined,
productId: undefined,
taskDetailId: undefined,
taskId: undefined,
taskDetailId: undefined,
taskCode: undefined,
planNumber: undefined,
reyaNumber: undefined,
finishNumber: undefined,
@ -127,6 +143,7 @@ const formData = ref({
groupType: undefined,
isEnable: undefined,
feedingPipeline: undefined,
deviceName: undefined,
feedingPipelineName: undefined,
workerId: undefined,
isPreProduction: undefined,
@ -143,10 +160,7 @@ const deliveryDateText = computed(() => {
return value.format('YYYY-MM-DD')
})
const deviceDisplayText = computed(() => {
if (formData.value.feedingPipelineName) return String(formData.value.feedingPipelineName)
if (formData.value.feedingPipeline !== undefined && formData.value.feedingPipeline !== null) {
return `设备ID:${formData.value.feedingPipeline}`
}
if (formData.value.deviceName) return String(formData.value.deviceName)
return ''
})
@ -158,6 +172,9 @@ const open = async (id?: number) => {
dialogTitle.value = t('ProductionPlan.Plan.detailDialogTitle')
resetForm()
formData.value = await PlanApi.getPlan(id)
if (formData.value.taskId) {
taskDetailList.value = await TaskApi.getTaskDetailListByTaskId(formData.value.taskId)
}
}
defineExpose({ open }) // open
@ -168,8 +185,9 @@ const resetForm = () => {
id: undefined,
code: undefined,
productId: undefined,
taskDetailId: undefined,
taskId: undefined,
taskDetailId: undefined,
taskCode: undefined,
planNumber: 0,
finishNumber: 0,
status: undefined,
@ -182,6 +200,7 @@ const resetForm = () => {
groupType: undefined,
isEnable: undefined,
feedingPipeline: undefined,
deviceName: undefined,
isPreProduction: 0,
feedingPipelineName: undefined,
isCode: true,
@ -189,6 +208,7 @@ const resetForm = () => {
deliveryDate: undefined,
finishDate: undefined
}
taskDetailList.value = []
formRef.value?.resetFields()
}

@ -64,6 +64,7 @@ const message = useMessage() // 消息弹窗
const { push } = useRouter()
const props = defineProps<{
taskId?: number // task ID
taskDeliveryDate?: string | number
}>()
const emit = defineEmits(['success'])
const loading = ref(false) //
@ -112,7 +113,7 @@ const addPlanForm = (taskId: number, productId: number, number?: number, taskDet
message.error(t('ProductionPlan.TaskSummary.detailSelectTaskTip'))
return
}
formRef.value.open('create', undefined, taskId, productId, number,taskDetailIds)
formRef.value.open('create', undefined, taskId, productId, number, taskDetailIds, props.taskDeliveryDate)
}
const handlePlanSuccess = () => {
getList()

@ -113,7 +113,7 @@ link type="info" @click="openItemNeed(scope.row.code, scope.row.id)"
<ContentWrap>
<el-tabs model-value="taskDetail">
<el-tab-pane :label="t('ProductionPlan.TaskSummary.detailTabSummaryLabel')" name="taskDetail">
<TaskDetailList :task-id="currentRow.id" @success="getList" />
<TaskDetailList :task-id="currentRow.id" :task-delivery-date="currentRow.deliveryDate" @success="getList" />
</el-tab-pane>
</el-tabs>
</ContentWrap>

Loading…
Cancel
Save