diff --git a/src/api/oa/base/materialInfo/index.ts b/src/api/oa/base/materialInfo/index.ts
index b5ed6eb..fbf2de1 100644
--- a/src/api/oa/base/materialInfo/index.ts
+++ b/src/api/oa/base/materialInfo/index.ts
@@ -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
+ });
+};
diff --git a/src/views/oa/erp/contractInfo/edit.vue b/src/views/oa/erp/contractInfo/edit.vue
index 25f13a8..5a2e1f4 100644
--- a/src/views/oa/erp/contractInfo/edit.vue
+++ b/src/views/oa/erp/contractInfo/edit.vue
@@ -221,8 +221,11 @@
- 新增物料
+ 新增合同物料
+
+ 添加SAP物料
@@ -259,7 +262,7 @@
-
+
编辑
删除
@@ -404,6 +407,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -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>();
+// 物料信息对话框
+const materialInfoDialog = reactive({
+ visible: false,
+ title: '添加SAP物料'
+});
+
+// 物料信息表单数据
+const materialInfoForm = ref({
+ 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();
+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;
+ }
+ }
+ });
+};
+