|
|
|
@ -238,17 +238,7 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<!-- <el-form-item label="归属部门" prop="deptId">-->
|
|
|
|
|
<!-- <el-tree-select-->
|
|
|
|
|
<!-- v-model="form.materialBomVersion"-->
|
|
|
|
|
<!-- :data="materialBomVersionOptions"-->
|
|
|
|
|
<!-- :props="{ value: 'id', label: 'label', children: 'children' }"-->
|
|
|
|
|
<!-- value-key="id"-->
|
|
|
|
|
<!-- placeholder="请选择归属部门"-->
|
|
|
|
|
<!-- check-strictly-->
|
|
|
|
|
<!-- @change="handleMaterialBomChange"-->
|
|
|
|
|
<!-- />-->
|
|
|
|
|
<!-- </el-form-item>-->
|
|
|
|
|
|
|
|
|
|
<el-form-item label='BOM版本' prop='materialBomVersion'>
|
|
|
|
|
<el-select v-model='form.materialBomVersion' placeholder='请选择BOM版本'>
|
|
|
|
|
<el-option
|
|
|
|
@ -378,14 +368,14 @@
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
|
|
<!-- 添加物料BOM信息对话框 -->
|
|
|
|
|
<el-dialog title='选择物料BOM信息' v-model='materialBomOpen' append-to-body>
|
|
|
|
|
<BomSelect @selection='handleSelection' ref='bomSelectRef' v-if='materialBomOpen'
|
|
|
|
|
:materialIdForm='materialIdForm'></BomSelect>
|
|
|
|
|
<div slot='footer' class='dialog-footer'>
|
|
|
|
|
<el-button type='primary' @click='submitMaterialBomForm'>确 定</el-button>
|
|
|
|
|
<el-button @click='materialBomOpen = false'>取 消</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
<!-- <el-dialog title='选择物料BOM信息' v-model='materialBomOpen' append-to-body>-->
|
|
|
|
|
<!-- <BomSelect @selection='handleSelection' ref='bomSelectRef' v-if='materialBomOpen'-->
|
|
|
|
|
<!-- :materialIdForm='materialIdForm'></BomSelect>-->
|
|
|
|
|
<!-- <div slot='footer' class='dialog-footer'>-->
|
|
|
|
|
<!-- <el-button type='primary' @click='submitMaterialBomForm'>确 定</el-button>-->
|
|
|
|
|
<!-- <el-button @click='materialBomOpen = false'>取 消</el-button>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- </el-dialog>-->
|
|
|
|
|
|
|
|
|
|
<!-- 添加物料信息对话框 -->
|
|
|
|
|
<el-dialog title='选择物料信息' v-model='materialOpen' width='1200px' append-to-body>
|
|
|
|
@ -956,7 +946,7 @@ const columns = ref<FieldOption[]>([
|
|
|
|
|
{ key: 24, label: `计划状态`, visible: true },
|
|
|
|
|
{ key: 25, label: `导入类型`, visible: false },
|
|
|
|
|
{ key: 26, label: `完成标识`, visible: true },
|
|
|
|
|
{ key: 27, label: `优先级`, visible: true },
|
|
|
|
|
{ key: 27, label: `优先级`, visible: false },
|
|
|
|
|
{ key: 28, label: `班次`, visible: true },
|
|
|
|
|
{ key: 29, label: `班组`, visible: true },
|
|
|
|
|
{ key: 30, label: `模号`, visible: true },
|
|
|
|
@ -1001,7 +991,26 @@ const initFormData: PlanInfoForm = {
|
|
|
|
|
modelCode: undefined,
|
|
|
|
|
remark: undefined,
|
|
|
|
|
materialBoMName: undefined,
|
|
|
|
|
workshopId: undefined
|
|
|
|
|
workshopId: undefined,
|
|
|
|
|
// 批量计划相关字段
|
|
|
|
|
planAmount1: undefined,
|
|
|
|
|
planAmount2: undefined,
|
|
|
|
|
planAmount3: undefined,
|
|
|
|
|
planAmount4: undefined,
|
|
|
|
|
planAmount5: undefined,
|
|
|
|
|
planAmount6: undefined,
|
|
|
|
|
materialIdL: undefined,
|
|
|
|
|
materialNameL: undefined,
|
|
|
|
|
materialIdR: undefined,
|
|
|
|
|
materialNameR: undefined,
|
|
|
|
|
materialBomVersion: undefined,
|
|
|
|
|
materialBomVersionL: undefined,
|
|
|
|
|
materialBomVersionR: undefined,
|
|
|
|
|
materialBoMNameL: undefined,
|
|
|
|
|
materialBoMNameR: undefined,
|
|
|
|
|
materialBoMIdL: undefined,
|
|
|
|
|
materialBoMIdR: undefined,
|
|
|
|
|
shiftName: '',
|
|
|
|
|
};
|
|
|
|
|
const data = reactive<PageData<PlanInfoForm, PlanInfoQuery>>({
|
|
|
|
|
form: { ...initFormData },
|
|
|
|
@ -1039,7 +1048,11 @@ const data = reactive<PageData<PlanInfoForm, PlanInfoQuery>>({
|
|
|
|
|
classTeamId: undefined,
|
|
|
|
|
modelCode: undefined,
|
|
|
|
|
workshopId: undefined,
|
|
|
|
|
params: {}
|
|
|
|
|
params: {},
|
|
|
|
|
planRangeTime: undefined,
|
|
|
|
|
materialName: undefined,
|
|
|
|
|
shiftName: '',
|
|
|
|
|
shifitId: undefined,
|
|
|
|
|
},
|
|
|
|
|
rules: {
|
|
|
|
|
materialId: [
|
|
|
|
@ -1060,15 +1073,15 @@ const data = reactive<PageData<PlanInfoForm, PlanInfoQuery>>({
|
|
|
|
|
planBeginTime: [
|
|
|
|
|
{ required: true, message: '计划日期不能为空', trigger: 'blur' }
|
|
|
|
|
],
|
|
|
|
|
planAmount1: [
|
|
|
|
|
{ required: true, message: '早班数量不能为空', trigger: 'blur' }
|
|
|
|
|
],
|
|
|
|
|
planAmount2: [
|
|
|
|
|
{ required: true, message: '中班数量不能为空', trigger: 'blur' }
|
|
|
|
|
],
|
|
|
|
|
planAmount3: [
|
|
|
|
|
{ required: true, message: '晚班数量不能为空', trigger: 'blur' }
|
|
|
|
|
]
|
|
|
|
|
// planAmount1: [
|
|
|
|
|
// { required: true, message: '早班数量不能为空', trigger: 'blur' }
|
|
|
|
|
// ],
|
|
|
|
|
// planAmount2: [
|
|
|
|
|
// { required: true, message: '中班数量不能为空', trigger: 'blur' }
|
|
|
|
|
// ],
|
|
|
|
|
// planAmount3: [
|
|
|
|
|
// { required: true, message: '晚班数量不能为空', trigger: 'blur' }
|
|
|
|
|
// ]
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
@ -1186,7 +1199,14 @@ const handleUpdate = async (row?: PlanInfoVO) => {
|
|
|
|
|
const _planId = row?.planId || ids.value[0];
|
|
|
|
|
const res = await getPlanInfo(_planId);
|
|
|
|
|
Object.assign(form.value, res.data);
|
|
|
|
|
form.value.finishFlag = form.value.finishFlag.split(',');
|
|
|
|
|
// finishFlag 类型守卫
|
|
|
|
|
if (Array.isArray(form.value.finishFlag)) {
|
|
|
|
|
// do nothing
|
|
|
|
|
} else if (typeof form.value.finishFlag === 'string') {
|
|
|
|
|
form.value.finishFlag = form.value.finishFlag.split(',').filter(Boolean).join(',');
|
|
|
|
|
} else {
|
|
|
|
|
form.value.finishFlag = [];
|
|
|
|
|
}
|
|
|
|
|
dialog.visible = true;
|
|
|
|
|
dialog.title = '修改生产计划信息';
|
|
|
|
|
};
|
|
|
|
@ -1209,12 +1229,14 @@ const submitForm = () => {
|
|
|
|
|
planInfoFormRef.value?.validate(async (valid: boolean) => {
|
|
|
|
|
if (valid) {
|
|
|
|
|
buttonLoading.value = true;
|
|
|
|
|
form.value.finishFlag = form.value.finishFlag !== null ? form.value.finishFlag.join(',') : null;
|
|
|
|
|
// if (form.value.planId) {
|
|
|
|
|
// await updatePlanInfo(form.value).finally(() => buttonLoading.value = false);
|
|
|
|
|
// } else {
|
|
|
|
|
// await addPlanInfo(form.value).finally(() => buttonLoading.value = false);
|
|
|
|
|
// }
|
|
|
|
|
// finishFlag 类型守卫
|
|
|
|
|
if (Array.isArray(form.value.finishFlag)) {
|
|
|
|
|
form.value.finishFlag = form.value.finishFlag.join(',');
|
|
|
|
|
} else if (typeof form.value.finishFlag === 'string') {
|
|
|
|
|
// do nothing
|
|
|
|
|
} else {
|
|
|
|
|
form.value.finishFlag = '';
|
|
|
|
|
}
|
|
|
|
|
//半制品、成型、硫化新增
|
|
|
|
|
let assemblyData = batchesAddAssemblyData();
|
|
|
|
|
if (machineIds.value.length == 0) {
|
|
|
|
@ -1239,60 +1261,61 @@ const submitForm = () => {
|
|
|
|
|
/** 批量新增组装数据 */
|
|
|
|
|
const batchesAddAssemblyData = () => {
|
|
|
|
|
const formData = form.value;
|
|
|
|
|
formData.workshopId = workshopId.value;//车间
|
|
|
|
|
// 统一workshopId类型为字符串,保证比较安全
|
|
|
|
|
const workshopIdStr = formData.workshopId != null ? String(formData.workshopId) : '';
|
|
|
|
|
let list = [];
|
|
|
|
|
if (formData.planAmount1 > 0) {
|
|
|
|
|
if (typeof formData.planAmount1 === 'number' && formData.planAmount1 > 0) {
|
|
|
|
|
let data = { ...formData };
|
|
|
|
|
data.modelCode = formData.workshopId === '4' ? 'L' : null;
|
|
|
|
|
data.materialId = formData.workshopId === '4' ? formData.materialIdL : formData.materialId;
|
|
|
|
|
data.materialBomVersion = formData.workshopId === '4' ? formData.materialBomVersionL : formData.materialBomVersion;
|
|
|
|
|
data.modelCode = workshopIdStr === '4' ? 'L' : null;
|
|
|
|
|
data.materialId = workshopIdStr === '4' ? formData.materialIdL : formData.materialId;
|
|
|
|
|
data.materialBomVersion = workshopIdStr === '4' ? formData.materialBomVersionL : formData.materialBomVersion;
|
|
|
|
|
data.shiftId = '1';
|
|
|
|
|
data.planAmount = formData.planAmount1;
|
|
|
|
|
list.push(data);
|
|
|
|
|
}
|
|
|
|
|
if (formData.planAmount2 > 0) {
|
|
|
|
|
if (typeof formData.planAmount2 === 'number' && formData.planAmount2 > 0) {
|
|
|
|
|
let data = { ...formData };
|
|
|
|
|
data.modelCode = formData.workshopId === '4' ? 'L' : null;
|
|
|
|
|
data.modelCode = workshopIdStr === '4' ? 'L' : null;
|
|
|
|
|
data.shiftId = '2';
|
|
|
|
|
data.planAmount = formData.planAmount2;
|
|
|
|
|
data.materialId = formData.workshopId === '4' ? formData.materialIdL : formData.materialId;
|
|
|
|
|
data.materialBomVersion = formData.workshopId === '4' ? formData.materialBomVersionL : formData.materialBomVersion;
|
|
|
|
|
data.materialId = workshopIdStr === '4' ? formData.materialIdL : formData.materialId;
|
|
|
|
|
data.materialBomVersion = workshopIdStr === '4' ? formData.materialBomVersionL : formData.materialBomVersion;
|
|
|
|
|
list.push(data);
|
|
|
|
|
}
|
|
|
|
|
if (formData.planAmount3 > 0) {
|
|
|
|
|
if (typeof formData.planAmount3 === 'number' && formData.planAmount3 > 0) {
|
|
|
|
|
let data = { ...formData };
|
|
|
|
|
data.modelCode = formData.workshopId === '4' ? 'L' : null;
|
|
|
|
|
data.modelCode = workshopIdStr === '4' ? 'L' : null;
|
|
|
|
|
data.shiftId = '3';
|
|
|
|
|
data.planAmount = formData.planAmount3;
|
|
|
|
|
data.materialId = formData.workshopId === '4' ? formData.materialIdL : formData.materialId;
|
|
|
|
|
data.materialBomVersion = formData.workshopId === '4' ? formData.materialBomVersionL : formData.materialBomVersion;
|
|
|
|
|
data.materialId = workshopIdStr === '4' ? formData.materialIdL : formData.materialId;
|
|
|
|
|
data.materialBomVersion = workshopIdStr === '4' ? formData.materialBomVersionL : formData.materialBomVersion;
|
|
|
|
|
list.push(data);
|
|
|
|
|
}
|
|
|
|
|
if (formData.planAmount4 > 0) {
|
|
|
|
|
if (typeof formData.planAmount4 === 'number' && formData.planAmount4 > 0) {
|
|
|
|
|
let data = { ...formData };
|
|
|
|
|
data.modelCode = 'R';
|
|
|
|
|
data.shiftId = '1';
|
|
|
|
|
data.planAmount = formData.planAmount4;
|
|
|
|
|
data.materialId = formData.workshopId === '4' ? formData.materialIdR : formData.materialId;
|
|
|
|
|
data.materialBomVersion = formData.workshopId === '4' ? formData.materialBomVersionR : formData.materialBomVersion;
|
|
|
|
|
data.materialId = workshopIdStr === '4' ? formData.materialIdR : formData.materialId;
|
|
|
|
|
data.materialBomVersion = workshopIdStr === '4' ? formData.materialBomVersionR : formData.materialBomVersion;
|
|
|
|
|
list.push(data);
|
|
|
|
|
}
|
|
|
|
|
if (formData.planAmount5 > 0) {
|
|
|
|
|
if (typeof formData.planAmount5 === 'number' && formData.planAmount5 > 0) {
|
|
|
|
|
let data = { ...formData };
|
|
|
|
|
data.modelCode = 'R';
|
|
|
|
|
data.shiftId = '2';
|
|
|
|
|
data.planAmount = formData.planAmount5;
|
|
|
|
|
data.materialId = formData.workshopId === '4' ? formData.materialIdR : formData.materialId;
|
|
|
|
|
data.materialBomVersion = formData.workshopId === '4' ? formData.materialBomVersionR : formData.materialBomVersion;
|
|
|
|
|
data.materialId = workshopIdStr === '4' ? formData.materialIdR : formData.materialId;
|
|
|
|
|
data.materialBomVersion = workshopIdStr === '4' ? formData.materialBomVersionR : formData.materialBomVersion;
|
|
|
|
|
list.push(data);
|
|
|
|
|
}
|
|
|
|
|
if (formData.planAmount6 > 0) {
|
|
|
|
|
if (typeof formData.planAmount6 === 'number' && formData.planAmount6 > 0) {
|
|
|
|
|
let data = { ...formData };
|
|
|
|
|
data.modelCode = 'R';
|
|
|
|
|
data.shiftId = '3';
|
|
|
|
|
data.planAmount = formData.planAmount6;
|
|
|
|
|
data.materialId = formData.workshopId === '4' ? formData.materialIdR : formData.materialId;
|
|
|
|
|
data.materialBomVersion = formData.workshopId === '4' ? formData.materialBomVersionR : formData.materialBomVersion;
|
|
|
|
|
data.materialId = workshopIdStr === '4' ? formData.materialIdR : formData.materialId;
|
|
|
|
|
data.materialBomVersion = workshopIdStr === '4' ? formData.materialBomVersionR : formData.materialBomVersion;
|
|
|
|
|
list.push(data);
|
|
|
|
|
}
|
|
|
|
|
return list;
|
|
|
|
@ -1351,15 +1374,15 @@ const submitMaterialForm = () => {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/** 新增物料BOM按钮操作 */
|
|
|
|
|
const handleMaterialBomAdd = (modelCode) => {
|
|
|
|
|
if (form.value.materialId == null && form.value.materialIdL == null
|
|
|
|
|
&& form.value.materialIdR == null) {
|
|
|
|
|
proxy?.$modal.msgWarning('请先选择物料!');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
modelCodeRef.value = modelCode;
|
|
|
|
|
materialBomOpen.value = true;
|
|
|
|
|
};
|
|
|
|
|
// const handleMaterialBomAdd = (modelCode) => {
|
|
|
|
|
// if (form.value.materialId == null && form.value.materialIdL == null
|
|
|
|
|
// && form.value.materialIdR == null) {
|
|
|
|
|
// proxy?.$modal.msgWarning('请先选择物料!');
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// modelCodeRef.value = modelCode;
|
|
|
|
|
// materialBomOpen.value = true;
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
|
|
/** 提交物料BOM信息按钮 */
|
|
|
|
|
const submitMaterialBomForm = () => {
|
|
|
|
@ -1425,12 +1448,6 @@ const getTreeSelect = async () => {
|
|
|
|
|
materialBomVersionOptions.value = res.data;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
async function handleMaterialBomChange(value: number | string) {
|
|
|
|
|
const response = await optionselect(value);
|
|
|
|
|
postOptions.value = response.data;
|
|
|
|
|
form.value.postIds = [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
getWorkshopId();
|
|
|
|
|