|
|
|
@ -154,19 +154,20 @@
|
|
|
|
|
v-loading="subFormLoading" label-width="0">
|
|
|
|
|
<el-table :data="formData.matItemDOList" class="hl-table">
|
|
|
|
|
<el-table-column type="index" label="序号" :width="80" />
|
|
|
|
|
<el-table-column prop="matCode" label="物料编码" min-width="120" align="center" />
|
|
|
|
|
<el-table-column prop="matId" min-width="140" align="center">
|
|
|
|
|
<template #header> <span class="hl-table_header">*</span>物料名称 </template>
|
|
|
|
|
<template #header> <span class="hl-table_header">*</span>物料编码 </template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-form-item :prop="`${scope.$index}.matId`" :rules="subFormRules.matId" class="mb-0px!">
|
|
|
|
|
<el-select v-model="scope.row.matId" placeholder="物料名称" :remote-method="remoteMatNameSearch"
|
|
|
|
|
remote-show-suffix remote clearable reserve-keyword filterable :loading="matSelectLoading"
|
|
|
|
|
@change="(val) => handleMatName(scope, val)" class="!w-180px">
|
|
|
|
|
<el-option v-for="item in matList" :key="item.id" :label="item.name" :value="item.id" />
|
|
|
|
|
<el-option v-for="item in matList" :key="item.id" :label="item.code" :value="item.id" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="matName" label="物料名称" min-width="120" align="center" />
|
|
|
|
|
|
|
|
|
|
<el-table-column prop="matType" label="物料类型" min-width="120" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_TYPE" :value="scope.row.matType"
|
|
|
|
@ -180,31 +181,36 @@
|
|
|
|
|
v-if="scope.row.matUnit ? true : false" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="requireAmount" min-width="120" align="center">
|
|
|
|
|
<template #header><span class="hl-table_header">*</span>需求数量</template>
|
|
|
|
|
<el-table-column prop="purchaseAmount" min-width="120" align="center">
|
|
|
|
|
<template #header><span class="hl-table_header">*</span>采购数量</template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-form-item :prop="`${scope.$index}.requireAmount`" :rules="subFormRules.requireAmount" class="mb-0px!">
|
|
|
|
|
<el-input v-model="scope.row.requireAmount" />
|
|
|
|
|
<el-form-item :prop="`${scope.$index}.purchaseAmount`" :rules="subFormRules.purchaseAmount" class="mb-0px!">
|
|
|
|
|
<el-input v-model="scope.row.purchaseAmount" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column min-width="150" align="center">
|
|
|
|
|
<template #header> <span class="hl-table_header">*</span>需求到货日期 </template>
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.requireArriveTime`" :rules="subFormRules.requireArriveTime" class="mb-0px!">
|
|
|
|
|
<el-date-picker class="!w-265px" v-model="row.requireArriveTime" type="date" value-format="x"
|
|
|
|
|
placeholder="需求到货日期" />
|
|
|
|
|
<el-table-column prop="estimatedPrice" min-width="120" align="center">
|
|
|
|
|
<template #header><span class="hl-table_header">*</span>暂估价金额</template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-form-item :prop="`${scope.$index}.estimatedPrice`" :rules="subFormRules.estimatedPrice" class="mb-0px!">
|
|
|
|
|
<el-input v-model="scope.row.estimatedPrice" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="actualPrice" min-width="120" align="center">
|
|
|
|
|
<template #header>实际价金额</template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-form-item :prop="`${scope.$index}.actualPrice`" class="mb-0px!">
|
|
|
|
|
<el-input v-model="scope.row.actualPrice" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column min-width="150" align="center">
|
|
|
|
|
<template #header><span class="hl-table_header">*</span>子项目编号</template>
|
|
|
|
|
<template #header> <span class="hl-table_header">*</span>预计到货日期 </template>
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.projectSubId`" :rules="subFormRules.projectSubId" class="mb-0px!">
|
|
|
|
|
<el-select class="!w-265px" v-model="row.projectSubId" filterable clearable>
|
|
|
|
|
<el-option v-for="dict in formData.projectOrderSubs" :key="dict.projectSubId"
|
|
|
|
|
:label="dict.projectSubCode" :value="dict.projectSubId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
<el-form-item :prop="`${$index}.arriveTime`" class="mb-0px!">
|
|
|
|
|
<el-date-picker class="!w-265px" v-model="row.arriveTime" type="date" value-format="x"
|
|
|
|
|
placeholder="预计到货日期" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
@ -329,7 +335,7 @@
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
|
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
|
|
|
|
import * as PurchaseOrderApi from '@/api/heli/purchaseorder'
|
|
|
|
|
// import * as MaterialPlanDetailApi from '@/api/heli/materialplandetail'
|
|
|
|
|
import * as PurchaseOrderMaterialApi from '@/api/heli/purchaseordermaterial'
|
|
|
|
|
import * as UserApi from '@/api/system/user'
|
|
|
|
|
import * as MaterialApi from '@/api/heli/material'
|
|
|
|
|
import * as SupplierApi from '@/api/heli/supplier'
|
|
|
|
@ -367,13 +373,12 @@ const formData = ref({
|
|
|
|
|
attachments: []
|
|
|
|
|
})
|
|
|
|
|
const formRules = reactive({
|
|
|
|
|
projectPlanId: [{ required: true, message: '生产计划单号不能为空', trigger: 'blur' }],
|
|
|
|
|
currencyType: [{ required: true, message: '结算币种不能为空', trigger: 'blur' }],
|
|
|
|
|
})
|
|
|
|
|
const subFormRules = reactive({
|
|
|
|
|
matId: [{ required: true, message: '物料编码不能为空', trigger: 'blur' }],
|
|
|
|
|
requireAmount: [{ required: true, message: '需求数量不能为空', trigger: 'blur' }],
|
|
|
|
|
requireArriveTime: [{ required: true, message: '需求到货日期不能为空', trigger: 'blur' }],
|
|
|
|
|
projectSubId: [{ required: true, message: '子项目编号不能为空', trigger: 'blur' }],
|
|
|
|
|
estimatedPrice: [{ required: true, message: '暂估价金额不能为空', trigger: 'blur' }],
|
|
|
|
|
purchaseAmount: [{ required: true, message: '采购数量不能为空', trigger: 'blur' }],
|
|
|
|
|
})
|
|
|
|
|
const formRef = ref() // 表单 Ref
|
|
|
|
|
const subFormRef = ref() // 表单 Ref
|
|
|
|
@ -474,7 +479,7 @@ const getMatList = async (name) => {
|
|
|
|
|
status: '1'
|
|
|
|
|
}
|
|
|
|
|
if (name.length > 0) {
|
|
|
|
|
matParams.name = name
|
|
|
|
|
matParams.code = name
|
|
|
|
|
}
|
|
|
|
|
const dataMat = await MaterialApi.getMaterialPage(matParams)
|
|
|
|
|
matList.value = dataMat.list
|
|
|
|
@ -501,16 +506,17 @@ const handleMatName = async (scope, matid) => {
|
|
|
|
|
const onAddItem = () => {
|
|
|
|
|
const newData = {
|
|
|
|
|
// 新数据的属性
|
|
|
|
|
stockId: 0,
|
|
|
|
|
purchaseOrderId: 0,
|
|
|
|
|
matId: '',
|
|
|
|
|
matName: '',
|
|
|
|
|
matCode: '',
|
|
|
|
|
matType: '',
|
|
|
|
|
matSpec: '',
|
|
|
|
|
matUnit: '',
|
|
|
|
|
requireAmount: '',
|
|
|
|
|
requireArriveTime: '',
|
|
|
|
|
projectSubId: '',
|
|
|
|
|
purchaseAmount: '',
|
|
|
|
|
estimatedPrice:'',
|
|
|
|
|
actualPrice:'',
|
|
|
|
|
arriveTime: '',
|
|
|
|
|
description: ''
|
|
|
|
|
}
|
|
|
|
|
formData.value.matItemDOList.push(newData)
|
|
|
|
@ -520,27 +526,25 @@ const handleDelete2 = (index: number) => {
|
|
|
|
|
formData.value.matItemRemoveList.push(formData.value.matItemDOList[index])
|
|
|
|
|
formData.value.matItemDOList.splice(index, 1)
|
|
|
|
|
}
|
|
|
|
|
const handleInitPlanSub = async () => {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// 保存物料信息
|
|
|
|
|
const saveMaterials = async () =>{
|
|
|
|
|
// formData.value.matItemDOList.forEach(item => {
|
|
|
|
|
// var subData = item as unknown as MaterialPlanDetailApi.MaterialPlanDetailVO
|
|
|
|
|
// subData.materialId = item.matId
|
|
|
|
|
// subData.projectMaterialPlanId = formData.value.id
|
|
|
|
|
// if (subData.id == undefined) {
|
|
|
|
|
// MaterialPlanDetailApi.createMaterialPlanDetail(subData)
|
|
|
|
|
// } else {
|
|
|
|
|
// MaterialPlanDetailApi.updateMaterialPlanDetail(subData)
|
|
|
|
|
// }
|
|
|
|
|
// })
|
|
|
|
|
// formData.value.matItemRemoveList.forEach(item =>{
|
|
|
|
|
// if (item.id != undefined) {
|
|
|
|
|
// MaterialPlanDetailApi.deleteMaterialPlanDetail(item.id)
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// })
|
|
|
|
|
formData.value.matItemDOList.forEach(item => {
|
|
|
|
|
var subData = item as unknown as PurchaseOrderMaterialApi.PurchaseOrderMaterialVO
|
|
|
|
|
subData.materialId = item.matId
|
|
|
|
|
subData.purchaseOrderId = formData.value.id
|
|
|
|
|
if (subData.id == undefined) {
|
|
|
|
|
PurchaseOrderMaterialApi.createPurchaseOrderMaterial(subData)
|
|
|
|
|
} else {
|
|
|
|
|
PurchaseOrderMaterialApi.updatePurchaseOrderMaterial(subData)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
formData.value.matItemRemoveList.forEach(item =>{
|
|
|
|
|
if (item.id != undefined) {
|
|
|
|
|
PurchaseOrderMaterialApi.deletePurchaseOrderMaterial(item.id)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
// 保存按钮数据提交
|
|
|
|
|
const saveForm = async () => {
|
|
|
|
@ -589,23 +593,31 @@ const submitForm = async () => {
|
|
|
|
|
}
|
|
|
|
|
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
|
|
|
|
const supplierInit = ref()
|
|
|
|
|
const matSimpList = ref([]) // 物料基本信息列表
|
|
|
|
|
|
|
|
|
|
const queryParams = reactive({
|
|
|
|
|
pageNo: 1,
|
|
|
|
|
pageSize: 99,
|
|
|
|
|
purchaseId: query.id,
|
|
|
|
|
purchaseOrderId: query.id,
|
|
|
|
|
})
|
|
|
|
|
// 页面数据加载初始化
|
|
|
|
|
onMounted(async () => {
|
|
|
|
|
// 获取采购订单信息
|
|
|
|
|
formData.value = await PurchaseOrderApi.getPurchaseOrder(query.id)
|
|
|
|
|
|
|
|
|
|
// 获取原始物料信息
|
|
|
|
|
matSimpList.value = await MaterialApi.getSimpList()
|
|
|
|
|
|
|
|
|
|
// 获取物料需求计划的物料列表
|
|
|
|
|
formData.value.matItemDOList = []
|
|
|
|
|
//(await MaterialPlanDetailApi.getMaterialPlanDetailPage(queryParams)).list
|
|
|
|
|
formData.value.matItemDOList = (await PurchaseOrderMaterialApi.getPurchaseOrderMaterialPage(queryParams)).list
|
|
|
|
|
formData.value.matItemDOList.forEach(item=>{
|
|
|
|
|
matList.value.push({id:item.matId,name:item.matName})
|
|
|
|
|
|
|
|
|
|
item.matId = matSimpList.value.find((record) => record.id === item.materialId)?.id
|
|
|
|
|
item.matCode = matSimpList.value.find((record) => record.id === item.materialId)?.code
|
|
|
|
|
item.matName = matSimpList.value.find((record) => record.id === item.materialId)?.name
|
|
|
|
|
item.matSpec = matSimpList.value.find((record) => record.id === item.materialId)?.spec
|
|
|
|
|
item.matType = matSimpList.value.find((record) => record.id === item.materialId)?.material_type
|
|
|
|
|
item.matUnit = matSimpList.value.find((record) => record.id === item.materialId)?.unit
|
|
|
|
|
matList.value.push({id:item.materialId,code:item.matCode})
|
|
|
|
|
})
|
|
|
|
|
formData.value.matItemRemoveList = []
|
|
|
|
|
|
|
|
|
|