change(mes): 修改生产信息页面功能

- 为计量单位编号标签设置宽度
- 添加下拉选择功能替换部分输入框
- 新增用户、班次、班组、工装、单位和计划信息的获取及显示
master
zch 3 months ago
parent 9756b93a9e
commit 6893baac23

@ -139,6 +139,13 @@ export interface ProductPlanDetailVO {
*/
remark: string;
toolingName: string;
shiftName: string;
teamName: string;
}
export interface ProductPlanDetailForm extends BaseEntity {
@ -284,6 +291,12 @@ export interface ProductPlanDetailForm extends BaseEntity {
workshopId?: string | number;
toolingName?: string;
shiftName?: string;
teamName?: string;
}
export interface ProductPlanDetailQuery extends PageQuery {
@ -427,6 +440,13 @@ export interface ProductPlanDetailQuery extends PageQuery {
*
*/
params?: any;
toolingName?: string;
shiftName?: string;
teamName?: string;
}

@ -10,7 +10,7 @@
<el-form-item label="父级标识" prop="parentId">
<el-input v-model="queryParams.parentId" placeholder="请输入父级标识" clearable @keyup.enter="handleQuery" />
</el-form-item>-->
<el-form-item label="计量单位编号" prop="unitCode">
<el-form-item label="计量单位编号" prop="unitCode" label-width="100px">
<el-input v-model="queryParams.unitCode" placeholder="请输入计量单位编号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<!-- <el-form-item label="计量单位名称" prop="unitName">

@ -11,12 +11,12 @@
<el-form-item label='计划编号' prop='planCode'>
<el-input v-model='queryParams.planCode' placeholder='请输入计划编号' clearable @keyup.enter='handleQuery' />
</el-form-item>
<el-form-item label='班次名称' prop='shiftId'>
<!-- <el-form-item label='班次名称' prop='shiftId'>
<el-input v-model='queryParams.shiftId' placeholder='请输入班次名称' clearable @keyup.enter='handleQuery' />
</el-form-item>
<el-form-item label='班组名称' prop='classTeamId'>
<el-input v-model='queryParams.classTeamId' placeholder='请输入班组名称' clearable @keyup.enter='handleQuery' />
</el-form-item>
</el-form-item>-->
<!-- <el-form-item label="实际开始时间" prop="realBeginTime">-->
<!-- <el-date-picker clearable-->
<!-- v-model="queryParams.realBeginTime"-->
@ -99,10 +99,10 @@
<el-table-column label='明细编号' align='center' prop='planDetailCode' v-if='columns[2].visible' />
<el-table-column label='生产计划ID' align='center' prop='planId' v-if='columns[3].visible' />
<el-table-column label='计划编号' align='center' prop='planCode' v-if='columns[4].visible' width='100'/>
<el-table-column label='操作人员ID' align='center' prop='userId' v-if='columns[5].visible' />
<!-- <el-table-column label='操作人员' align='center' prop='userId' v-if='columns[5].visible' />-->
<el-table-column label='操作人员名称' align='center' prop='userName' v-if='columns[6].visible' width='110' />
<el-table-column label='班次名称' align='center' prop='shiftId' v-if='columns[7].visible' />
<el-table-column label='班组名称' align='center' prop='classTeamId' v-if='columns[8].visible' />
<el-table-column label='班次名称' align='center' prop='shiftName' v-if='columns[7].visible' />
<el-table-column label='班组名称' align='center' prop='teamName' v-if='columns[8].visible' />
<el-table-column label='完成数量' align='center' prop='completeAmount' v-if='columns[9].visible' />
<el-table-column label='单位ID' align='center' prop='unitId' v-if='columns[10].visible' />
<el-table-column label='单位名称' align='center' prop='unitName' v-if='columns[11].visible' />
@ -120,12 +120,12 @@
<el-table-column label='物料条码' align='center' prop='materialBarcode' v-if='columns[15].visible' />
<el-table-column label='流转条码' align='center' prop='returnBarcode' v-if='columns[16].visible' />
<el-table-column label='车次' align='center' prop='trainNumber' v-if='columns[17].visible' />
<el-table-column label='工装名称' align='center' prop='toolingId' v-if='columns[18].visible' />
<el-table-column label='胶囊ID' align='center' prop='capsuleId' v-if='columns[19].visible' />
<el-table-column label='接班ID' align='center' prop='shiftChangeId' v-if='columns[20].visible' />
<el-table-column label='半制品明细ID' align='center' prop='sfpDetailId' v-if='columns[21].visible' />
<el-table-column label='成型明细ID' align='center' prop='formingDetailId' v-if='columns[22].visible' />
<el-table-column label='硫化明细ID' align='center' prop='vulDetailId' v-if='columns[23].visible' />
<el-table-column label='工装名称' align='center' prop='toolingName' v-if='columns[18].visible' />
<el-table-column label='胶囊' align='center' prop='capsuleId' v-if='columns[19].visible' />
<el-table-column label='接班' align='center' prop='shiftChangeId' v-if='columns[20].visible' />
<el-table-column label='半制品明细' align='center' prop='sfpDetailId' v-if='columns[21].visible' />
<el-table-column label='成型明细' align='center' prop='formingDetailId' v-if='columns[22].visible' />
<el-table-column label='硫化明细' align='center' prop='vulDetailId' v-if='columns[23].visible' />
<el-table-column label='明细状态' align='center' prop='planDetailStatus' v-if='columns[24].visible'>
<template #default='scope'>
<dict-tag :options='mes_plan_detail_status' :value='scope.row.planDetailStatus' />
@ -164,39 +164,78 @@
<pagination v-show='total > 0' :total='total' v-model:page='queryParams.pageNum'
v-model:limit='queryParams.pageSize' @pagination='getList' />
</el-card>
<!-- 添加或修改生产信息对话框 -->
<el-dialog :title='dialog.title' v-model='dialog.visible' width='500px' append-to-body>
<el-form ref='productPlanDetailFormRef' :model='form' :rules='rules' label-width='100px'>
<el-form-item label='明细编号' prop='planDetailCode'>
<!-- <el-form-item label='明细编号' prop='planDetailCode'>
<el-input v-model='form.planDetailCode' placeholder='请输入明细编号' />
</el-form-item>-->
<el-form-item label='生产计划' prop='planId'>
<!-- <el-input v-model='form.planId' placeholder='请输入生产计划ID' />-->
<el-select v-model='form.planId' placeholder='请选择生产计划ID' style='width: 220px'
@change="handlePlanChange">
<el-option v-for='item in planCodeOptions'
:key='item.planId'
:label='item.planCode'
:value='item.planId'
/>
</el-select>
</el-form-item>
<el-form-item label='生产计划ID' prop='planId'>
<el-input v-model='form.planId' placeholder='请输入生产计划ID' />
</el-form-item>
<el-form-item label='计划编号' prop='planCode'>
<!-- <el-form-item label='计划编号' prop='planCode'>
<el-input v-model='form.planCode' placeholder='请输入计划编号' />
</el-form-item>-->
<el-form-item label='操作人员' prop='userId'>
<!-- <el-input v-model='form.userId' placeholder='请输入操作人员ID' />-->
<el-select v-model='form.userId' placeholder='请选择操作人员ID' style='width: 220px'
@change="handleUserChange">
<el-option v-for='item in userOptions'
:key='item.userId'
:label='item.userName'
:value='item.userId'
/>
</el-select>
</el-form-item>
<el-form-item label='操作人员ID' prop='userId'>
<el-input v-model='form.userId' placeholder='请输入操作人员ID' />
</el-form-item>
<el-form-item label='操作人员名称' prop='userName'>
<!-- <el-form-item label='操作人员名称' prop='userName'>
<el-input v-model='form.userName' placeholder='请输入操作人员名称' />
</el-form-item>
</el-form-item>-->
<el-form-item label='班次名称' prop='shiftId'>
<el-input v-model='form.shiftId' placeholder='请输入班次名称' />
<!-- <el-input v-model='form.shiftId' placeholder='请输入班次名称' />-->
<el-select v-model='form.shiftId' placeholder='请选择班次名称' style='width: 220px' >
<el-option v-for='item in shiftOptions'
:key='item.shiftId'
:label='item.shiftName'
:value='item.shiftId'
/>
</el-select>
</el-form-item>
<el-form-item label='班组名称' prop='classTeamId'>
<el-input v-model='form.classTeamId' placeholder='请输入班组名称' />
<!-- <el-input v-model='form.classTeamId' placeholder='请输入班组名称' />-->
<el-select v-model='form.classTeamId' placeholder='请选择班组名称' style='width: 220px' >
<el-option v-for='item in classTeamOptions'
:key='item.classTeamId'
:label='item.teamName'
:value='item.classTeamId'
/>
</el-select>
</el-form-item>
<el-form-item label='完成数量' prop='completeAmount'>
<el-input-number v-model='form.completeAmount' placeholder='请输入完成数量' style='width: 220px' />
</el-form-item>
<!-- <el-form-item label='单位ID' prop='unitId'>-->
<!-- <el-input v-model='form.unitId' placeholder='请输入单位ID' />-->
<!-- </el-form-item>-->
<el-form-item label='单位名称' prop='unitName'>
<el-form-item label='单位' prop='unitId'>
<!-- <el-input v-model='form.unitId' placeholder='请输入单位' />-->
<el-select v-model='form.unitId' placeholder='请选择单位' style='width: 220px'
@change="handleUnitChange">
<el-option v-for='item in unitOptions'
:key='item.unitId'
:label='item.unitName'
:value='item.unitId'
/>
</el-select>
</el-form-item>
<!-- <el-form-item label='单位名称' prop='unitName'>
<el-input v-model='form.unitName' placeholder='请输入单位名称' />
</el-form-item>
</el-form-item>-->
<el-form-item label='实际开始时间' prop='realBeginTime'>
<el-date-picker clearable
v-model='form.realBeginTime'
@ -226,24 +265,31 @@
<el-input v-model='form.trainNumber' placeholder='请输入车次' />
</el-form-item>
<el-form-item label='工装名称' prop='toolingId'>
<el-input v-model='form.toolingId' placeholder='请输入工装名称' />
<!-- <el-input v-model='form.toolingId' placeholder='请输入工装名称' />-->
<el-select v-model='form.toolingId' placeholder='请选择工装名称' style='width: 220px' >
<el-option v-for='item in toolingOptions'
:key='item.toolingId'
:label='item.toolingName'
:value='item.toolingId'
/>
</el-select>
</el-form-item>
<!-- <el-form-item label='胶囊ID' prop='capsuleId'>-->
<!-- <el-input v-model='form.capsuleId' placeholder='请输入胶囊ID' />-->
<!-- </el-form-item>-->
<el-form-item label='接班ID' prop='shiftChangeId'>
<!-- <el-form-item label='接班ID' prop='shiftChangeId'>
<el-input v-model='form.shiftChangeId' placeholder='请输入接班ID' />
</el-form-item>-->
<el-form-item label='明细状态' prop='planDetailStatus'>
<el-select v-model='form.planDetailStatus' placeholder='请选择明细状态'>
<el-option
v-for='dict in mes_plan_detail_status'
:key='dict.value'
:label='dict.label'
:value='dict.value'
></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label='明细状态' prop='planDetailStatus'>-->
<!-- <el-select v-model='form.planDetailStatus' placeholder='请选择明细状态'>-->
<!-- <el-option-->
<!-- v-for='dict in mes_plan_detail_status'-->
<!-- :key='dict.value'-->
<!-- :label='dict.label'-->
<!-- :value='dict.value'-->
<!-- ></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label='备注' prop='remark'>
<el-input v-model='form.remark' placeholder='请输入备注' />
</el-form-item>
@ -267,6 +313,12 @@ import {
updateProductPlanDetail
} from '@/api/mes/productPlanDetail';
import { ProductPlanDetailVO, ProductPlanDetailQuery, ProductPlanDetailForm } from '@/api/mes/productPlanDetail/types';
import {getUserList} from "@/api/system/user";
import {getBaseShiftInfoList} from "@/api/mes/baseShiftInfo";
import {getBaseClassTeamInfoList} from "@/api/mes/baseClassTeamInfo";
import {getBaseToolingInfoList} from "@/api/mes/baseToolingInfo";
import {getBaseMeasurementUnitInfoList} from "@/api/mes/baseMeasurementUnitInfo";
import {getPlanInfoList} from "@/api/mes/planInfo";
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { mes_plan_detail_status, active_flag } = toRefs<any>(proxy?.useDict('mes_plan_detail_status', 'active_flag'));
@ -300,14 +352,14 @@ const columns = ref<FieldOption[]>([
{ key: 0, label: `主键标识`, visible: false },
{ key: 1, label: `租户编号`, visible: false },
{ key: 2, label: `明细编号`, visible: true },
{ key: 3, label: `生产计划ID`, visible: false },
{ key: 3, label: `生产计划`, visible: false },
{ key: 4, label: `计划编号`, visible: true },
{ key: 5, label: `操作人员ID`, visible: false },
{ key: 5, label: `操作人员`, visible: false },
{ key: 6, label: `操作人员名称`, visible: true },
{ key: 7, label: `班次名称`, visible: true },
{ key: 8, label: `班组名称`, visible: true },
{ key: 9, label: `完成数量`, visible: true },
{ key: 10, label: `单位ID`, visible: false },
{ key: 10, label: `单位`, visible: false },
{ key: 11, label: `单位名称`, visible: true },
{ key: 12, label: `实际开始时间`, visible: true },
{ key: 13, label: `实际完成时间`, visible: true },
@ -316,11 +368,11 @@ const columns = ref<FieldOption[]>([
{ key: 16, label: `流转条码`, visible: true },
{ key: 17, label: `车次`, visible: true },
{ key: 18, label: `工装名称`, visible: true },
{ key: 19, label: `胶囊ID`, visible: false },
{ key: 20, label: `接班ID`, visible: false },
{ key: 21, label: `半制品明细ID`, visible: false },
{ key: 22, label: `成型明细ID`, visible: false },
{ key: 23, label: `硫化明细ID`, visible: false },
{ key: 19, label: `胶囊`, visible: false },
{ key: 20, label: `接班`, visible: false },
{ key: 21, label: `半制品明细`, visible: false },
{ key: 22, label: `成型明细`, visible: false },
{ key: 23, label: `硫化明细`, visible: false },
{ key: 24, label: `明细状态`, visible: true },
{ key: 25, label: `首件标识`, visible: true },
{ key: 26, label: `报警胎标识`, visible: false },
@ -363,7 +415,10 @@ const initFormData: ProductPlanDetailForm = {
alarmFlag: '0',
suppleFlag: '1',
remark: undefined,
workshopId: undefined
workshopId: undefined,
toolingName: undefined,
shiftName: undefined,
teamName: undefined,
};
const data = reactive<PageData<ProductPlanDetailForm, ProductPlanDetailQuery>>({
form: { ...initFormData },
@ -398,6 +453,9 @@ const data = reactive<PageData<ProductPlanDetailForm, ProductPlanDetailQuery>>({
alarmFlag: undefined,
suppleFlag: undefined,
workshopId: undefined,
toolingName: undefined,
shiftName: undefined,
teamName: undefined,
params: {}
},
rules: {
@ -407,7 +465,7 @@ const data = reactive<PageData<ProductPlanDetailForm, ProductPlanDetailQuery>>({
planId: [
{ required: true, message: '生产计划ID不能为空', trigger: 'blur' }
],
planDetailCode: [
/* planDetailCode: [
{ required: true, message: '明细编号不能为空', trigger: 'blur' }
],
planCode: [
@ -421,7 +479,7 @@ const data = reactive<PageData<ProductPlanDetailForm, ProductPlanDetailQuery>>({
],
completeAmount: [
{ required: true, message: '完成数量不能为空', trigger: 'blur' }
]
]*/
}
});
@ -471,6 +529,12 @@ const handleSelectionChange = (selection: ProductPlanDetailVO[]) => {
/** 新增按钮操作 */
const handleAdd = () => {
reset();
getPlanCodeSelect();
getUnitSelect();
getToolingSelect();
getClassTeamSelect();
getShiftSelect();
getUserSelect();
dialog.visible = true;
dialog.title = '添加生产信息';
};
@ -478,6 +542,12 @@ const handleAdd = () => {
/** 修改按钮操作 */
const handleUpdate = async (row?: ProductPlanDetailVO) => {
reset();
getPlanCodeSelect();
getUnitSelect();
getToolingSelect();
getClassTeamSelect();
getShiftSelect();
getUserSelect();
const _planDetailId = row?.planDetailId || ids.value[0];
const res = await getProductPlanDetail(_planDetailId, form.value.workshopId);
Object.assign(form.value, res.data);
@ -518,6 +588,68 @@ const handleExport = () => {
}, `productPlanDetail_${new Date().getTime()}.xlsx`);
};
let userOptions = ref([]);
const getUserSelect = async () => {
let res = await getUserList(null);
userOptions.value = res.data;
};
let shiftOptions = ref([]);
const getShiftSelect = async () => {
let res = await getBaseShiftInfoList(null);
shiftOptions.value = res.data;
};
let classTeamOptions = ref([]);
const getClassTeamSelect = async () => {
let res = await getBaseClassTeamInfoList(null);
classTeamOptions.value = res.data;
};
let toolingOptions = ref([]);
const getToolingSelect = async () => {
let res = await getBaseToolingInfoList(null);
toolingOptions.value = res.data;
};
let unitOptions = ref([]);
const getUnitSelect = async () => {
let res = await getBaseMeasurementUnitInfoList(null);
unitOptions.value = res.data;
};
let planCodeOptions = ref([]);
const getPlanCodeSelect = async () => {
let res = await getPlanInfoList(null);
planCodeOptions.value = res.data;
};
/** 用户选择变化时更新用户名 */
const handleUserChange = (userId: string | number) => {
const selectedUser = userOptions.value.find(user => user.userId === userId);
if (selectedUser) {
form.value.userName = selectedUser.userName;
}
};
/** 单位选择变化时更新单位名 */
const handleUnitChange = (unitId: string | number) => {
const selectedUnit = unitOptions.value.find(unit => unit.unitId === unitId);
if (selectedUnit) {
form.value.unitName = selectedUnit.unitName;
}
};
/** 计划选择变化时更新计划名 */
const handlePlanChange = (planId: string | number) => {
const selectedPlan = planCodeOptions.value.find(plan => plan.planId === planId);
if (selectedPlan) {
form.value.planCode = selectedPlan.planCode;
}
};
onMounted(() => {
getWorkshopId();
getList();

Loading…
Cancel
Save