1.0.60 合同添加页面,新增SAP物料信息

dev
yinq 5 days ago
parent ce744ddaee
commit 148c349760

@ -88,3 +88,15 @@ export const listMaterialInfoWithRelation = (query?: MaterialInfoQuery): AxiosPr
params: query
});
};
/**
* SAP
* @param data
*/
export const contractAddMaterialInfo = (data: MaterialInfoForm) => {
return request({
url: '/oa/base/materialInfo/contractAdd',
method: 'post',
data: data
});
};

@ -221,8 +221,11 @@
<!-- 合同物料表格 -->
<div style="margin-bottom: 16px">
<el-button type="primary" icon="Plus" v-if="routeParams.type !== 'view' && routeParams.type != 'approval'" @click="handleAddMaterial"
>新增物料
<el-button type="primary" icon="Plus" v-if="!isFormDisabled" @click="handleAddMaterial"
>新增合同物料
</el-button>
<el-button type="success" icon="Plus" v-if="!isFormDisabled" @click="handleAddMaterialInfo" v-hasPermi="['oa/base:materialInfo:contractAdd']"
>添加SAP物料
</el-button>
</div>
@ -259,7 +262,7 @@
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" min-width="100" />
<el-table-column label="操作" align="center" fixed="right" width="150" v-if="routeParams.type !== 'view' && routeParams.type != 'approval'">
<el-table-column label="操作" align="center" fixed="right" width="150" v-if="!isFormDisabled">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleEditMaterial(scope.row)"></el-button>
<el-button link type="danger" icon="Delete" @click="handleDeleteMaterial(scope.row)"></el-button>
@ -404,6 +407,52 @@
</el-dialog>
<!-- 销售物料选择 -->
<SaleMaterialSelect ref="saleMaterialSelectRef" :multiple="false" @confirm-call-back="saleMaterialSelectCallBack"></SaleMaterialSelect>
<!-- 添加SAP物料对话框 -->
<el-dialog title="添加SAP物料" v-model="materialInfoDialog.visible" width="800px" append-to-body>
<el-form ref="materialInfoFormRef" :model="materialInfoForm" :rules="materialInfoRules" label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="SAP物料名称" prop="materialName">
<el-input v-model="materialInfoForm.materialName" placeholder="请输入SAP物料名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料品牌" prop="materialBrand">
<el-input v-model="materialInfoForm.materialBrand" placeholder="请输入物料品牌" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料型号" prop="materialModel">
<el-input v-model="materialInfoForm.materialModel" placeholder="请输入物料型号" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料单位" prop="unitId">
<el-select v-model="materialInfoForm.unitId" placeholder="请选择物料单位" style="width: 100%">
<el-option v-for="item in unitInfoList" :key="item.unitId" :label="item.unitName" :value="item.unitId" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料参数" prop="materialParameter">
<el-input v-model="materialInfoForm.materialParameter" placeholder="请输入物料参数" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="materialInfoForm.remark" type="textarea" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitMaterialInfoForm" :loading="materialInfoLoading"> </el-button>
<el-button @click="cancelMaterialInfo"> </el-button>
</div>
</template>
</el-dialog>
<!-- 添加或修改OSS对象存储对话框 -->
<el-dialog v-model="dialog.visible" :title="dialog.title" width="500px" append-to-body>
<el-form ref="ossFormRef" :model="form" :rules="rules" label-width="80px">
@ -447,6 +496,8 @@ import { getUserList } from '@/api/system/user';
import { CodeRuleEnum, FlowCodeEnum } from '@/enums/OAEnum';
import { getInfo } from '@/api/login';
import FileUpload from '@/components/FileUpload/index.vue';
import { contractAddMaterialInfo } from '@/api/oa/base/materialInfo';
import { MaterialInfoForm } from '@/api/oa/base/materialInfo/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const route = useRoute();
@ -668,6 +719,33 @@ const generateContractCode = async () => {
const saleMaterialSelectRef = ref<InstanceType<typeof SaleMaterialSelect>>();
//
const materialInfoDialog = reactive({
visible: false,
title: '添加SAP物料'
});
//
const materialInfoForm = ref<MaterialInfoForm>({
materialName: undefined,
materialBrand: undefined,
materialModel: undefined,
unitId: undefined,
materialParameter: undefined,
stockingPeriod: undefined,
remark: undefined,
addMethod: '2', // 2
activeFlag: '1'
});
//
const materialInfoRules = {
materialName: [{ required: true, message: 'SAP物料名称不能为空', trigger: 'blur' }]
};
const materialInfoFormRef = ref<ElFormInstance>();
const materialInfoLoading = ref(false);
//
const openSaleMaterialSelect = () => {
saleMaterialSelectRef.value.open();
@ -1004,4 +1082,90 @@ watch(
}
}
);
// SAP
const handleAddMaterialInfo = () => {
materialInfoForm.value = {
materialName: undefined,
materialBrand: undefined,
materialModel: undefined,
unitId: undefined,
materialParameter: undefined,
stockingPeriod: undefined,
remark: undefined,
addMethod: '2',
activeFlag: '1'
};
materialInfoFormRef.value?.resetFields();
materialInfoDialog.visible = true;
};
// SAP
const cancelMaterialInfo = () => {
materialInfoForm.value = {
materialName: undefined,
materialBrand: undefined,
materialModel: undefined,
unitId: undefined,
materialParameter: undefined,
stockingPeriod: undefined,
remark: undefined,
addMethod: '2',
activeFlag: '1'
};
materialInfoFormRef.value?.resetFields();
materialInfoDialog.visible = false;
};
//
const submitMaterialInfoForm = async () => {
materialInfoFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
try {
materialInfoLoading.value = true;
const res = await contractAddMaterialInfo(materialInfoForm.value);
const newMaterial = res.data;
//
if (!(form.value as any).contractMaterialList) {
(form.value as any).contractMaterialList = [];
}
//
// const newContractMaterial = {
// contractMaterialId: Date.now(), // ID
// contractId: form.value.contractId,
// materialFlag: '1', //
// materialId: newMaterial.materialId,
// materialCode: newMaterial.materialCode || '',
// materialName: newMaterial.materialName,
// productName: newMaterial.materialName, // 使
// specificationDescription: '',
// saleMaterialName: newMaterial.materialName,
// amount: undefined,
// unitId: newMaterial.unitId,
// unitName: unitInfoList.value.find((item: any) => item.unitId === newMaterial.unitId)?.unitName || '',
// beforePrice: undefined,
// taxRate: undefined,
// includingPrice: undefined,
// subtotal: undefined,
// remark: '',
// activeFlag: '1'
// };
//
// (form.value as any).contractMaterialList.push(newContractMaterial);
//
// proxy?.$modal.msgSuccess('');
materialInfoDialog.visible = false;
cancelMaterialInfo();
} catch (error) {
console.error('添加SAP物料失败:', error);
proxy?.$modal.msgError('添加SAP物料失败');
} finally {
materialInfoLoading.value = false;
}
}
});
};
</script>

Loading…
Cancel
Save