采购订单添加应收

This commit is contained in:
z 2025-06-30 17:05:12 +08:00
parent cdbc8fdb2a
commit e7ac6592f1
10 changed files with 314 additions and 68 deletions

View File

@ -70,17 +70,17 @@ public class OrderYsDO extends BaseDO {
private BigDecimal amount; private BigDecimal amount;
@TableField(exist = false) @TableField(exist = false)
private BigDecimal shouFuKuanBiLi; private BigDecimal shouFuKuan;
@TableField(exist = false) @TableField(exist = false)
private BigDecimal twoFuKuanBiLi; private BigDecimal twoFuKuan;
@TableField(exist = false) @TableField(exist = false)
private BigDecimal threeFuKuanBiLi; private BigDecimal threeFuKuan;
@TableField(exist = false) @TableField(exist = false)
private BigDecimal fourFuKuanBiLi; private BigDecimal fourFuKuan;
@TableField(exist = false) @TableField(exist = false)
private BigDecimal fiveFuKuanBiLi; private BigDecimal fiveFuKuan;
@TableField(exist = false) @TableField(exist = false)
private BigDecimal sixFuKuanBiLi; private BigDecimal sixFuKuan;

View File

@ -50,8 +50,8 @@ public interface OrderYsMapper extends BaseMapperX<OrderYsDO> {
MPJLambdaWrapper<OrderYsDO> query = new MPJLambdaWrapper<>(); MPJLambdaWrapper<OrderYsDO> query = new MPJLambdaWrapper<>();
query.selectAll(OrderYsDO.class) query.selectAll(OrderYsDO.class)
.select("sum(i.amount) as amount") .select("sum(i.amount) as amount")
.select("p.shou_Fu_Kuan_Bi_Li as shouFuKuanBiLi","p.two_Fu_Kuan_Bi_Li as twoFuKuanBiLi","p.three_Fu_Kuan_Bi_Li as threeFuKuanBiLi") .select("p.shou_Fu_Kuan as shouFuKuan","p.two_Fu_Kuan as twoFuKuan","p.three_Fu_Kuan as threeFuKuan")
.select("p.four_Fu_Kuan_Bi_Li as fourFuKuanBiLi","p.five_Fu_Kuan_Bi_Li as fiveFuKuanBiLi","p.six_Fu_Kuan_Bi_Li as sixFuKuanBiLi") .select("p.four_Fu_Kuan as fourFuKuan","p.five_Fu_Kuan as fiveFuKuan","p.six_Fu_Kuan as sixFuKuan")
.leftJoin( .leftJoin(
"finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'") "finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'")
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getCode, OrderYsDO::getCode) .leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getCode, OrderYsDO::getCode)

View File

@ -100,8 +100,8 @@ public interface PurchaseOrderMakeMapper extends BaseMapperX<PurchaseOrderMakeDO
wrapper.selectAll(PurchaseOrderMakeDO.class) wrapper.selectAll(PurchaseOrderMakeDO.class)
.select( .select(
"CASE " + "CASE " +
"WHEN a.goods_type = 1 THEN '物料' " + "WHEN t.goods_type = 1 THEN '物料' " +
"WHEN a.goods_type = 2 THEN '加工件' " + "WHEN t.goods_type = 2 THEN '加工件' " +
"ELSE '其他' " + "ELSE '其他' " +
"END AS purchaseOrderType" "END AS purchaseOrderType"
) )

View File

@ -150,8 +150,9 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
query.selectAll(PurchaseOrderMakeDetailDO.class) query.selectAll(PurchaseOrderMakeDetailDO.class)
.select("p.name as procedureName,s.name as supplierName") .select("p.name as procedureName,s.name as supplierName")
.leftJoin(ProcedureDO.class,"p", ProcedureDO::getId, PurchaseOrderMakeDetailDO::getProcedureId) .leftJoin(ProcedureDO.class,"p", ProcedureDO::getId, PurchaseOrderMakeDetailDO::getProcedureId)
.leftJoin(SupplierDO.class,"s", SupplierDO::getId, PurchaseOrderMakeDetailDO::getSupplierId); .leftJoin(SupplierDO.class,"s", SupplierDO::getId, PurchaseOrderMakeDetailDO::getSupplierId)
.disableSubLogicDel();
query.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId,id); query.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId,id);
return selectJoinList(PurchaseOrderMakeDetailDO.class, query); return selectList(query);
} }
} }

View File

@ -10,6 +10,7 @@ import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.framework.mybatis.core.query.QueryWrapperX; import com.chanko.yunxi.mes.framework.mybatis.core.query.QueryWrapperX;
import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils;
import com.chanko.yunxi.mes.module.heli.controller.admin.orderyf.vo.OrderYfSaveReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.Log; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.Log;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageRespVO; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageRespVO;
@ -23,6 +24,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.P
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper;
@ -30,7 +32,10 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrde
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.PurchaseOrderMakeDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.PurchaseOrderMakeDetailMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.supplier.SupplierMapper;
import com.chanko.yunxi.mes.module.heli.service.orderyf.OrderYfService;
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
import com.chanko.yunxi.mes.module.heli.service.supplier.SupplierService;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.chanko.yunxi.mes.module.system.service.user.AdminUserService; import com.chanko.yunxi.mes.module.system.service.user.AdminUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -74,6 +79,10 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
private PlanSubMapper planSubMapper; private PlanSubMapper planSubMapper;
@Autowired @Autowired
private AdminUserService adminUserService; private AdminUserService adminUserService;
@Autowired
private OrderYfService orderYfService;
@Autowired
private SupplierMapper supplierMapper;
@Override @Override
public PageResult<PartPurchaseOrderPageRespVO> getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) { public PageResult<PartPurchaseOrderPageRespVO> getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) {
@ -83,24 +92,36 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
@Override @Override
public boolean submit(List<PartPurchaseOrderPageRespVO> list) { public boolean submit(List<PartPurchaseOrderPageRespVO> list) {
PurchaseOrderNoDO purchaseOrderNoDO = new PurchaseOrderNoDO();
// 返回
// 月度流水号
SerialNumberDO serialNumberDO = new SerialNumberDO();
serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
// 回写序列记录
serialNumberService.updateSerialNumber(serialNumberDO);
purchaseOrderNoDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString()));
purchaseOrderNoDO.setPurchaseType(1);
purchaseOrderNoDO.setGoodsType(2);
purchaseOrderNoDO.setSupplierId(list.get(0).getSupplierId());
purchaseOrderNoDO.setOrdDate(new Date());
purchaseOrderNoMapper.insert(purchaseOrderNoDO);
long purchaseOrderId = purchaseOrderNoDO.getId();
OrderYfSaveReqVO orderYfVO = new OrderYfSaveReqVO();
orderYfVO.setCgOrderNum(purchaseOrderNoDO.getPurchaseNo());
SupplierDO supplierDO = supplierMapper.selectById(list.get(0).getSupplierId());
if (ObjectUtil.isNotEmpty(supplierDO)){
orderYfVO.setCgGysname(supplierDO.getName());
}
BigDecimal sum = list.stream()
.filter(Objects::nonNull) // 过滤掉空对象
.map(PartPurchaseOrderPageRespVO::getEstimatedPrice)
.filter(Objects::nonNull) // 过滤掉空值
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
orderYfVO.setCgYf(sum);
orderYfService.createCg(orderYfVO);
list.forEach(detailDO -> { list.forEach(detailDO -> {
PurchaseOrderNoDO purchaseOrderNoDO = new PurchaseOrderNoDO();
// 返回
// 月度流水号
SerialNumberDO serialNumberDO = new SerialNumberDO();
serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
// 回写序列记录
serialNumberService.updateSerialNumber(serialNumberDO);
purchaseOrderNoDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString()));
purchaseOrderNoDO.setPurchaseType(1);
purchaseOrderNoDO.setGoodsType(2);
purchaseOrderNoDO.setSupplierId(detailDO.getSupplierId());
purchaseOrderNoDO.setOrdDate(new Date());
purchaseOrderNoMapper.insert(purchaseOrderNoDO);
long purchaseOrderId = purchaseOrderNoDO.getId();
// PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = new PurchaseOrderNoDetailDO(); // PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = new PurchaseOrderNoDetailDO();
// purchaseOrderNoDetailDO.setPurchaseOrderId(purchaseOrderId); // purchaseOrderNoDetailDO.setPurchaseOrderId(purchaseOrderId);
// purchaseOrderNoDetailDO.setBoomDetailId(detailDO.getBoomDetailId()); // purchaseOrderNoDetailDO.setBoomDetailId(detailDO.getBoomDetailId());
@ -309,6 +330,7 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
logList.add(log); logList.add(log);
} }
} }
orderMakeDO.setLogList(logList);
return CommonResult.success(orderMakeDO); return CommonResult.success(orderMakeDO);
} }

View File

@ -1,6 +1,8 @@
package com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail; package com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.chanko.yunxi.mes.module.heli.controller.admin.orderyf.vo.OrderYfSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO;
@ -8,11 +10,14 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.Purchas
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.composition.CompositionMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.composition.CompositionMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.supplier.SupplierMapper;
import com.chanko.yunxi.mes.module.heli.service.orderyf.OrderYfService;
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
import org.checkerframework.checker.units.qual.A; import org.checkerframework.checker.units.qual.A;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -20,6 +25,7 @@ import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -61,6 +67,11 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
private MaterialMapper materialMapper; private MaterialMapper materialMapper;
@Resource @Resource
private CompositionMapper compositionMapper; private CompositionMapper compositionMapper;
@Resource
private OrderYfService orderYfService;
@Resource
private SupplierMapper supplierMapper;
@Override @Override
public Long createPurchaseOrderMakeDetail(PurchaseOrderMakeDetailSaveReqVO createReqVO) { public Long createPurchaseOrderMakeDetail(PurchaseOrderMakeDetailSaveReqVO createReqVO) {
// 插入 // 插入
@ -90,6 +101,19 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
purchaseOrderNoDO.setSupplierId(updateList.get(0).getSupplierId()); purchaseOrderNoDO.setSupplierId(updateList.get(0).getSupplierId());
purchaseOrderNoDO.setOrdDate(new Date()); purchaseOrderNoDO.setOrdDate(new Date());
purchaseOrderNoMapper.insert(purchaseOrderNoDO); purchaseOrderNoMapper.insert(purchaseOrderNoDO);
OrderYfSaveReqVO orderYfVO = new OrderYfSaveReqVO();
orderYfVO.setCgOrderNum(code);
SupplierDO supplierDO = supplierMapper.selectById(updateList.get(0).getSupplierId());
if (ObjectUtil.isNotEmpty(supplierDO)){
orderYfVO.setCgGysname(supplierDO.getName());
}
BigDecimal sum = updateList.stream()
.filter(Objects::nonNull) // 过滤掉空对象
.map(PurchaseOrderMakeDetailDO::getEstimatedPrice)
.filter(Objects::nonNull) // 过滤掉空值
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
orderYfVO.setCgYf(sum);
orderYfService.createCg(orderYfVO);
List<PurchaseOrderNoDetailDO> insertList =new ArrayList<>(); List<PurchaseOrderNoDetailDO> insertList =new ArrayList<>();
HashMap<Long,PurchaseOrderMakeDO> insertMap = new HashMap<>(); HashMap<Long,PurchaseOrderMakeDO> insertMap = new HashMap<>();
HashMap<Long, MaterialDO> insertMaterialMap = new HashMap<>(); HashMap<Long, MaterialDO> insertMaterialMap = new HashMap<>();

View File

@ -60,3 +60,10 @@ export const getDetail = async (params) => {
export const createPurchaseOrderMakeAndDetail = async (data) => { export const createPurchaseOrderMakeAndDetail = async (data) => {
return await request.post({ url: `/heli/purchase-order-make/createPurchaseOrderMakeAndDetail`, data }) return await request.post({ url: `/heli/purchase-order-make/createPurchaseOrderMakeAndDetail`, data })
} }
export const review = async (params) => {
return await request.get({ url: `/heli/purchase-order-make/review`, params })
}
export const obtainReviewDetails = async (id:number) => {
return await request.get({ url: `/heli/purchase-order-make/obtainReviewDetails?id=` +id })
}

View File

@ -68,33 +68,41 @@
<el-table-column label="子项目编码" align="center" prop="projectSubCode" min-width="150" /> <el-table-column label="子项目编码" align="center" prop="projectSubCode" min-width="150" />
<el-table-column label="物料编码" align="center" min-width="180" > <el-table-column label="物料编码" align="center" min-width="180" >
<template #header><span class="hl-table_header">*</span>物料编码</template> <template #header><span class="hl-table_header">*</span>物料编码</template>
<!-- <template #default="scope">-->
<!-- <el-select-->
<!-- v-model="scope.row.boomCode"-->
<!-- placeholder="请输入物料编码或名称"-->
<!-- :remote-method="e => remoteMethod(e,scope.row)"-->
<!-- remote-show-suffix-->
<!-- remote-->
<!-- @click="remoteMethod(scope.row.boomCode,scope.row)"-->
<!-- :disabled="scope.row.orderStatus == 2"-->
<!-- clearable-->
<!-- reserve-keyword-->
<!-- filterable-->
<!-- @change="e => changeSupp(e,scope.row)"-->
<!-- :loading="meterialLoading"-->
<!-- class="!w-150px"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in scope.row.materialSelectList"-->
<!-- :key="item.code"-->
<!-- :label="item.code"-->
<!-- :value="item"-->
<!-- >-->
<!-- <span style="float: left">{{ item.name }}</span>-->
<!-- <span style="float: right; color: #8492a6; font-size: 13px">{{ item.code }}</span>-->
<!-- </el-option>-->
<!-- </el-select>-->
<!--</template>-->
<template #default="scope"> <template #default="scope">
<el-select <el-input v-model="scope.row.boomCode" disabled>
v-model="scope.row.boomCode" <template #suffix>
placeholder="请输入物料编码或名称" <Icon @click="serachLog(scope.row)" icon="ep:search" color="primary"/>
:remote-method="e => remoteMethod(e,scope.row)" </template>
remote-show-suffix </el-input>
remote
@click="remoteMethod(scope.row.boomCode,scope.row)"
:disabled="scope.row.orderStatus == 2"
clearable
reserve-keyword
filterable
@change="e => changeSupp(e,scope.row)"
:loading="meterialLoading"
class="!w-150px"
>
<el-option
v-for="item in scope.row.materialSelectList"
:key="item.code"
:label="item.code"
:value="item"
>
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.code }}</span>
</el-option>
</el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="标准件名称" align="center" prop="boomName" min-width="150" /> <el-table-column label="标准件名称" align="center" prop="boomName" min-width="150" />
<el-table-column label="规格型号" align="center" prop="boomSpec" min-width="150" /> <el-table-column label="规格型号" align="center" prop="boomSpec" min-width="150" />
@ -150,12 +158,9 @@ import * as purchaseOrderMakeDetailApi from '@/api/heli/purchaseordermakedetail'
import { useCommonStateWithOut } from '@/store/modules/common' import { useCommonStateWithOut } from '@/store/modules/common'
import * as matApi from '@/api/heli/material' import * as matApi from '@/api/heli/material'
import { useUserStore } from '@/store/modules/user' import { useUserStore } from '@/store/modules/user'
import matLog from './storageLog.vue' import matLog from './storageLogs.vue'
import * as supplierApi from '@/api/heli/supplier' import * as supplierApi from '@/api/heli/supplier'
import UserSelect from "@/views/heli/materialplan/userSelectNew.vue";
import {inject, ref} from "vue"; import {inject, ref} from "vue";
import { update } from 'lodash-es'
import { Hash } from 'crypto'
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
const userStore = useUserStore() const userStore = useUserStore()
const username = userStore.getUser.nickname const username = userStore.getUser.nickname
@ -170,7 +175,6 @@ import {
formatDate, dateFormatter2 formatDate, dateFormatter2
} from "@/utils/formatTime"; } from "@/utils/formatTime";
const meterialLoading = ref(false) const meterialLoading = ref(false)
const matLogRef = ref()
const loading = ref(true) // const loading = ref(true) //
const list = ref([]) // const list = ref([]) //
const total = ref(0) // const total = ref(0) //
@ -200,6 +204,7 @@ const queryParams1 = reactive({
}) })
const queryFormRef = ref() // const queryFormRef = ref() //
const exportLoading = ref(false) // const exportLoading = ref(false) //
const matLogRef = ref()
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
@ -207,7 +212,7 @@ const getList = async () => {
try { try {
multipleTable.value.clearSelection(); multipleTable.value.clearSelection();
const data = await purchaseOrderMakeDetailApi.page(queryParams) const data = await purchaseOrderMakeDetailApi.page(queryParams)
list.value = data.list list.value = data.list
for (const row of list.value ) { for (const row of list.value ) {
// boomCoderemoteMethod // boomCoderemoteMethod
@ -262,7 +267,9 @@ const getMateriallist = async(row) =>{
const data = await matApi.getMaterialPage(queryMaterialParams) const data = await matApi.getMaterialPage(queryMaterialParams)
row.materialSelectList = data.list row.materialSelectList = data.list
} }
const serachLog = (row) => {
matLogRef.value.open(row.id)
}
const handleSelectionChange = (selection) => { const handleSelectionChange = (selection) => {
ids.value = selection; ids.value = selection;
} }
@ -283,13 +290,13 @@ const handleExportDetail = async () => {
exportLoading.value = false exportLoading.value = false
} }
} }
const getMat = async (rowids,amount,ids) => { const getMat = async (rowids,ids,matCodes) => {
//formData.value.boomItemDOList = arrBoom //formData.value.boomItemDOList = arrBoom
for(var i = 0 ; i < list.value.length ; i ++){ for(var i = 0 ; i < list.value.length ; i ++){
if(list.value[i].id == rowids){ if(list.value[i].id == rowids){
list.value[i].matRest = amount list.value[i].boomCode = matCodes
list.value[i].materialId = ids list.value[i].materialId = ids
await updateRow(2,list.value[i]); // await updateRow(2,list.value[i]);
break; break;
} }
} }
@ -315,14 +322,14 @@ const changeDate = async(e,row) => {
await updateRow(5,row) await updateRow(5,row)
} }
} }
const serachLog = (row) => { // const serachLog = (row) => {
matLogRef.value.open(row.id,row.matCode) // matLogRef.value.open(row.id,row.matCode)
} // }
/** 搜索按钮操作 */ /** 搜索按钮操作 */
const handleQuery = () => { const handleQuery = () => {
queryParams.pageNo = 1 queryParams.pageNo = 1
getList() getList()
} }
const opearteForm = async(type) =>{ const opearteForm = async(type) =>{
loading.value = true; loading.value = true;

View File

@ -0,0 +1,175 @@
<template>
<Dialog title="实时库存" v-model="dialogVisible" width="80%">
<el-card class="hl-card">
<ContentWrap class="borderxx">
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
<el-form-item label="物料名称" prop="matName" >
<el-input v-model="queryParams.name" placeholder="物料名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="规格型号" prop="matName" >
<el-input v-model="queryParams.spec" placeholder="规格型号" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="物料简称" prop="shortName" >
<el-input v-model="queryParams.shortName" placeholder="物料简称" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item >
<el-button @click="handleQuery" type="primary">
<Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table ref="multipleTableRef" v-loading="loading" :data="list" :stripe="true" @row-click="clickRow" @selection-change="handleCurrentChange" :show-overflow-tooltip="true" class="hl-table">
<el-table-column
type="selection"
width="55"/>
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="物料编码" align="center" prop="code" fixed min-width="120" />
<el-table-column label="物料名称" align="center" prop="name" fixed min-width="120"/>
<el-table-column label="物料类型" align="center" prop="materialType" min-width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_TYPE" :value="scope.row.materialType" />
</template>
</el-table-column>
<el-table-column label="物料简称" align="center" prop="shortName" min-width="120"/>
<el-table-column label="规格/型号" align="center" prop="spec" min-width="120"/>
</el-table>
<!-- 分页 -->
<Pagination
:total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getList" />
</ContentWrap>
</el-card>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="success">
确认
</el-button>
</span>
</template>
</Dialog>
</template>
<script setup lang="ts">
import {DICT_TYPE} from "@/utils/dict";
import * as MaterialApi from "@/api/heli/material";
defineOptions({ name: 'StorageLog' })
const printref = ref()
const whList = ref([])
const rgList = ref([])
const pnList = ref([])
const dialogVisible = ref(false)
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
code: undefined,
name: undefined,
matType: undefined,
lotNo: undefined,
whId: undefined,
rgId:undefined,
pnId: undefined,
headerNo: undefined,
spec:undefined,
materialType:undefined,
status:1,
shortName:undefined
})
const queryFormRef = ref() //
const currentRow = ref()
const multipleTableRef = ref()
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await MaterialApi.getbzjList(queryParams) ;
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
const clickItem = ref([])
const handleCurrentChange = (val) => {
clickItem.value = val;
if(val.length > 1){
multipleTableRef.value!.clearSelection()
multipleTableRef.value!.toggleRowSelection(val.pop())
}
};
const clickRow = (row) => {
if (clickItem.value==null){
clickItem.value = [];
}
//
if ( clickItem.value[0] == row) {
//
clickItem.value = [];
multipleTableRef.value!.clearSelection()
} else {
//
clickItem.value.push(row);
multipleTableRef.value!.clearSelection()
multipleTableRef.value!.toggleRowSelection(row, true);
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
const rowid = ref()
const open = async (rowids) => {
clickItem.value = null;
//multipleTableRef.value!.clearSelection()
dialogVisible.value = true
// queryParams.matName = matCode;
rowid.value = rowids
console.log(rowids)
console.log(rowid.value)
await getList();
}
defineExpose({ open }) // open
const emit = defineEmits(['success'])
// emit('success', multipleSelection.value)
const success = () => {
dialogVisible.value = false;
emit('success', rowid.value, clickItem.value[0].id, clickItem.value[0].code)
}
/** 初始化 **/
onMounted(async () => {
await getList()
})
</script>

View File

@ -63,6 +63,8 @@
size="large"> </el-button> size="large"> </el-button>
<el-button @click="reject" v-if="formData.status == 1" size="large" type="danger"> </el-button> <el-button @click="reject" v-if="formData.status == 1" size="large" type="danger"> </el-button>
<el-button @click="cancel" size="large"> </el-button> <el-button @click="cancel" size="large"> </el-button>
<!-- <el-button @click="test" size="large">测试</el-button>-->
</template> </template>
<template v-if="formData.type === 'detail'"> <template v-if="formData.type === 'detail'">
<el-button @click="cancel" size="large"> </el-button> <el-button @click="cancel" size="large"> </el-button>
@ -159,6 +161,14 @@ const reject = async() => {
const cancel = async () => { const cancel = async () => {
router.push({ path: '/purchase/PurchaseOrderMake'}); router.push({ path: '/purchase/PurchaseOrderMake'});
tagsViewStore.delVisitedView(router.currentRoute.value)
}
const test = async () => {
const data = await PartPurchaseOrderApi.obtainReviewDetails(query.id)
console.log(data)
} }
const userList = ref<UserApi.UserVO[]>([]) // const userList = ref<UserApi.UserVO[]>([]) //