零件采购单审批

This commit is contained in:
wb_zhanghaoyuan 2025-06-24 20:31:33 +08:00
parent ceafe8a8ba
commit 6a399695ef
6 changed files with 81 additions and 37 deletions

View File

@ -19,6 +19,9 @@ public class PartPurchaseOrderPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "采购单id")
private Long purchaseOrderId;
@Schema(description = "物料计划单号")
private String projectMaterialPlanNo;
@ -68,4 +71,10 @@ public class PartPurchaseOrderPageReqVO extends PageParam {
private String ownerName;
@Schema(description = "供应商名称")
private String supplierName;
@Schema(description = "采购单号")
private String contractNo;
@Schema(description = "采购单类型1物料2加工件")
private Integer goodsType;
@Schema(description = "单据状态,0 待送审1已送审2已审核3已打回 默认是1")
private Integer documentStatus;
}

View File

@ -147,4 +147,28 @@ public class PartPurchaseOrderPageRespVO extends BaseDO {
* 工序名称
*/
private String procedureName;
/**
* 采购单号
*/
private String contractNo;
/**
* 采购单类型1物料2加工件
*/
private Integer goodsType;
/**
* 客户简码
*/
private String brief;
/**
* 项目名称
*/
private String projectName;
/**
* 项目名称简码
*/
private String projectNameSim;
/**
* 单据状态,0 待送审1已送审2已审核3已打回 默认是1
*/
private Integer status;
}

View File

@ -68,6 +68,12 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
default PageResult<PartPurchaseOrderPageRespVO> selectPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) {
MPJLambdaWrapper<PurchaseOrderMakeDetailDO> query = new MPJLambdaWrapper<>();
query.selectAll(PurchaseOrderMakeDetailDO.class)
.select(PurchaseOrderMakeDO::getContractNo,
PurchaseOrderMakeDO::getGoodsType,
PurchaseOrderMakeDO::getBrief,
PurchaseOrderMakeDO::getProjectName,
PurchaseOrderMakeDO::getProjectNameSim,
PurchaseOrderMakeDO::getStatus)
.select("c.nickname as duEmpName")
.select("d.name as supplierName")
.select("e.name as procedureName")
@ -79,6 +85,9 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
.disableLogicDel()
.disableSubLogicDel()
.eq(PurchaseOrderMakeDO::getGoodsType, 2)
.eq(Objects.nonNull(pageReqVO.getPurchaseOrderId()), PurchaseOrderMakeDO::getId, pageReqVO.getPurchaseOrderId())
.eq(StringUtils.isNotBlank(pageReqVO.getContractNo()), PurchaseOrderMakeDO::getContractNo, pageReqVO.getContractNo())
.eq(Objects.nonNull(pageReqVO.getDocumentStatus()), PurchaseOrderMakeDO::getStatus, pageReqVO.getDocumentStatus())
.like(StringUtils.isNotBlank(pageReqVO.getProjectName()), PurchaseOrderMakeDO::getProjectName, pageReqVO.getProjectName())
.like(StringUtils.isNotBlank(pageReqVO.getProjectSubName()), PurchaseOrderMakeDetailDO::getName, pageReqVO.getProjectSubName())
.like(StringUtils.isNotBlank(pageReqVO.getMaterialName()), PurchaseOrderMakeDetailDO::getBoomName, pageReqVO.getMaterialName())

View File

@ -24,3 +24,8 @@ export const getPartPage = async (params) => {
export const submitForm = async (data) => {
return await request.post({ url: `/heli/purchase-order-no/submit`, data })
}
// 查询采购单主分页
export const getPurchaseOrderMake = async (id: number) => {
return await request.get({ url: `/heli/purchase-order-make/get?id=` + id })
}

View File

@ -17,22 +17,12 @@
<el-col :span="6">
<el-row>
<el-col :span="24">
<el-form-item label="需求计划号" prop="projectMaterialPlanNo">
<el-input class="!w-300px" placeholder="系统自动生成" v-model="formData.projectMaterialPlanNo" disabled />
<el-form-item label="采购单号" prop="contractNo">
<el-input class="!w-300px" placeholder="系统自动生成" v-model="formData.contractNo" disabled />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="6">
<el-form-item label="项目名称" prop="projectName">
<el-input class="!w-300px" placeholder="项目名称" v-model="formData.projectName" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="子项目名称" prop="name">
<el-input class="!w-300px" placeholder="项目名称" v-model="formData.name" disabled />
</el-form-item>
</el-col>
</el-row>
</el-col>
</el-row>
@ -41,24 +31,26 @@
<!-- 需求单信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">需求单信息</span>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">采购单信息</span>
</template>
<el-row>
<el-col>
<el-card class="hl-incard">
<el-table :data="formData.matBoomDOList" class="hl-table" v-loading="loading">
<el-table-column type="index" label="序号" fixed align="center" min-width="60" />
<el-table-column prop="matName" min-width="200" label="物料名称" align="center"/>
<el-table-column prop="nickname" min-width="120" label="责任人" align="center"/>
<el-table-column prop="projectName" min-width="200" label="项目名称" align="center"/>
<el-table-column prop="projectName" min-width="200" label="子项目编码" align="center"/>
<el-table-column prop="boomName" min-width="200" label="物料名称" align="center"/>
<el-table-column prop="procedureName" min-width="120" label="工序" align="center"/>
<el-table-column prop="composition" min-width="120" label="材质" align="center"/>
<el-table-column prop="boomAmount" min-width="100" label="需求数量" align="center"/>
<el-table-column prop="boomArriveDate" min-width="200" label="需求到货日期" align="center" :formatter="dateFormatter1"/>
<el-table-column prop="boomSpec" min-width="200" label="规格类型" align="center"/>
<el-table-column prop="mplanStatus" min-width="100" label="需求状态" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_PROJECT_MATERIAL_PLAN_BOOM_STATUS" :value="scope.row.mplanStatus" />
</template>
</el-table-column>
<el-table-column prop="description" min-width="200" label="备注" align="center"/>
<el-table-column prop="purchaseAmount" min-width="100" label="采购数量" align="center"/>
<el-table-column prop="requireTime" min-width="200" label="需要完成日期" align="center" :formatter="dateFormatter1"/>
<el-table-column prop="arriveTime" min-width="200" label="预计到货日期" align="center" :formatter="dateFormatter1"/>
<el-table-column prop="supplierName" min-width="100" label="供应商" align="center"/>
<el-table-column prop="description" min-width="200" label="技术要求" align="center"/>
<el-table-column prop="theWeight" min-width="100" label="理论重量(吨)" align="center"/>
<el-table-column prop="estimatedPrice" min-width="100" label="预估总价" align="center"/>
</el-table>
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getList" />
@ -68,7 +60,8 @@
</el-card>
</el-form>
<div class="hl-footer text-center">
<el-button @click="closeForm" size="large"> </el-button>
<el-button @click="closeForm" size="large"> </el-button>
<el-button @click="closeForm" size="large"> </el-button>
</div>
</el-card>
@ -93,6 +86,8 @@ import { useUserStore } from '@/store/modules/user'
import { useTagsViewStore } from '@/store/modules/tagsView'
import MaterialSelect from '@/views/heli/hlvuestyle/materialSelect.vue'
import booms from './boom.vue'
import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
import {getPartPage} from "@/api/heli/partpurchaseorder";
const reload: any = inject('reload')
const { t } = useI18n() //
@ -105,7 +100,7 @@ const dialogVisible = ref(false) // 弹窗的是否展示
const formLoading = ref(false) // 12
const formData = ref({
id: undefined,
projectMaterialPlanNo: undefined,
contractNo: undefined,
projectId: undefined,
projectPlanId: undefined,
projectPlanNo: undefined,
@ -142,18 +137,18 @@ const userList = ref<UserApi.UserVO[]>([]) // 用户列表
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
projectMaterialPlanId: query.id
purchaseOrderId: query.id
})
//
onMounted(async () => {
//
formData.value = await MaterialPlanApi.getMaterialPlan(query.id)
formData.value = await PartPurchaseOrderApi.getPurchaseOrderMake(query.id)
getList();
})
const getList = async () => {
loading.value = true
try {
const data = await MaterialPlanBoomApi.getMaterialPlanBoomPages(queryParams)
const data = await PartPurchaseOrderApi.getPartPage(queryParams)
formData.value.matBoomDOList = data.list
total.value = data.total
} finally {

View File

@ -25,8 +25,8 @@
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PART_PURCHASE_ORDER_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="单据状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择单据状态" clearable class="!w-240px">
<el-form-item label="单据状态" prop="documentStatus">
<el-select v-model="queryParams.documentStatus" placeholder="请选择单据状态" clearable class="!w-240px">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_DOCUMENT_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
@ -48,12 +48,12 @@
<el-table-column label="序号" type="index" align="center" fixed min-width="70px" />
<el-table-column label="采购单号" align="center" prop="contractNo" min-width="180" fixed>
<template #default="scope">
<el-button text type="primary" @click="openForm('detail', scope.row.id)">
<el-button text type="primary" @click="openForm('detail', scope.row.purchaseOrderId)">
{{ scope.row.contractNo }}
</el-button>
</template>
</el-table-column>
<el-table-column label="采购单类型" align="center" prop="goodType" min-width="180px" />
<el-table-column label="采购单类型" align="center" prop="goodsType" min-width="180px" />
<el-table-column label="客户简码" align="center" prop="brief" min-width="180px" />
<el-table-column label="项目名称" align="center" prop="projectName" min-width="180px" />
<el-table-column label="项目简码" align="center" prop="projectNameSim" min-width="180px" />
@ -61,13 +61,14 @@
<el-table-column label="操作" align="center" fixed="right" min-width="180">
<template #default="scope">
<el-button
v-if="scope.row.status === 1"
link
type="primary"
@click="openForm('detail', scope.row.id)"
@click="openForm('detail', scope.row.purchaseOrderId)"
>
去审核
</el-button>
<el-button link type="primary" @click="openForm('detail', scope.row.id)">
<el-button link type="primary" @click="openForm('detail', scope.row.purchaseOrderId)">
查看详情
</el-button>
</template>
@ -86,6 +87,7 @@
import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
import { dateFormatter1} from '@/utils/formatTime'
import * as MaterialPlanApi from '@/api/heli/materialplan'
import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
defineOptions({ name: 'MaterialPlan' })
@ -114,7 +116,7 @@ const queryParams = reactive({
description: undefined,
createTime: [],
matType:0,
status:1
documentStatus:1
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
@ -123,7 +125,7 @@ const exportLoading = ref(false) // 导出的加载中
const getList = async () => {
loading.value = true
try {
const data = await MaterialPlanApi.getMaterialPlanPages(queryParams)
const data = await PartPurchaseOrderApi.getPartPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
@ -155,7 +157,7 @@ const openForm = (type: string, id?: number) => {
router.push({ path: '/purchase/materialplanedit', query: { id: id } })
break;
case 'detail':
router.push({ path: '/purchase/managementdetail', query: { id: id } })
router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id } })
break;
default:
break;