代码修改

This commit is contained in:
liuhanqing
2026-03-25 14:32:32 +08:00
parent f4e3d2c898
commit f76c277d79
28 changed files with 589 additions and 917 deletions

View File

@@ -9,6 +9,7 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockin.domain.Material;
import com.ruoyi.in.stockin.domain.vo.InstockInVo;
import com.ruoyi.in.stockin.service.IInStockinService;
import com.ruoyi.in.stockinfinish.service.IInStockinFinishService;
@@ -17,6 +18,7 @@ import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
@@ -116,4 +118,25 @@ public class InStockinController extends BaseController
{
return inStockinService.productBack(list);
}
/**
* 导入物料数据
*/
@Log(title = "物料管理", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file) throws Exception {
ExcelUtil<Material> util = new ExcelUtil<>(Material.class);
List<Material> materialList = util.importExcel(file.getInputStream());
String message = inStockinService.importMaterial(materialList);
return AjaxResult.success(message);
}
/**
* 下载模板
*/
@PostMapping("/importTemplate")
public void importTemplate(HttpServletResponse response) {
ExcelUtil<Material> util = new ExcelUtil<>(Material.class);
util.importTemplateExcel(response, "物料数据");
}
}

View File

@@ -104,6 +104,16 @@ public class InStockin extends BaseEntity
private String materialDesc;
private List<String> typeData;
/*代号*/
private String spare9;
public String getSpare9() {
return spare9;
}
public void setSpare9(String spare9) {
this.spare9 = spare9;
}
public List<String> getTypeData() {
return typeData;

View File

@@ -0,0 +1,82 @@
package com.ruoyi.in.stockin.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 物料领用/来件对象(根据你的Excel字段生成)
*/
@Data
public class Material extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 主键ID */
private Long id;
/** 代号 */
@Excel(name = "代号")
private String code;
/** 名称 */
@Excel(name = "名称")
private String name;
/** 单重 */
@Excel(name = "单重")
private BigDecimal singleWeight;
/** 数量 */
@Excel(name = "数量")
private Integer quantity;
/** 实来数量 */
@Excel(name = "实来数量")
private Integer actualArriveQuantity;
/** 实领数量 */
@Excel(name = "实领数量")
private Integer actualReceiveQuantity;
/** 领件人 */
@Excel(name = "领件人")
private String receiver;
/** 领件日期 */
@Excel(name = "领件日期", dateFormat = "yyyy-MM-dd")
private Date receiveTime;
/** 存放地 */
@Excel(name = "存放地")
private String storageLocation;
/** 剩余数量 */
@Excel(name = "剩余数量")
private Integer remainQuantity;
/** 来件厂家 */
@Excel(name = "来件厂家")
private String supplier;
/** 来件日期 */
@Excel(name = "来件日期", dateFormat = "yyyy-MM-dd")
private Date arriveTime;
/** 备注 */
@Excel(name = "备注")
private String remark;
/** 路线 */
@Excel(name = "路线")
private String route;
/** 台次 */
@Excel(name = "台次")
private String tableNumber;
/** 项目名称 */
@Excel(name = "项目名称")
private String projectName;
}

View File

@@ -2,6 +2,7 @@ package com.ruoyi.in.stockin.service;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockin.domain.Material;
import com.ruoyi.in.stockin.domain.vo.InstockInVo;
import com.ruoyi.search.ViewOutJobFlow.domain.ViewOutJobFlow;
@@ -75,4 +76,6 @@ public interface IInStockinService
public List<InStockin> selectStockinByDetail(String stockinDetailId);
AjaxResult productBack(List<ViewOutJobFlow> list);
String importMaterial(List<Material> materialList);
}

View File

@@ -3,6 +3,8 @@ package com.ruoyi.in.stockin.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjUtil;
import com.ruoyi.bas.BasProduct.domain.BasProduct;
import com.ruoyi.bas.basJobId.service.IBasJobIdService;
import com.ruoyi.common.core.domain.AjaxResult;
@@ -13,6 +15,7 @@ import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.in.bind.domain.InStockTraycodeBindMsg;
import com.ruoyi.in.bind.mapper.InStockTraycodeBindMsgMapper;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockin.domain.Material;
import com.ruoyi.in.stockin.domain.vo.InstockInVo;
import com.ruoyi.in.stockin.mapper.InStockinMapper;
import com.ruoyi.in.stockin.service.IInStockinService;
@@ -127,7 +130,7 @@ public class InStockinServiceImpl implements IInStockinService
}
@Override
@Transactional(rollbackFor = Exception.class)
//@Transactional(rollbackFor = Exception.class)
public AjaxResult insertInStockin(InstockInVo inStockinVo) {
List<BasProduct> productVoList = inStockinVo.getProductVoList();
if (CollUtil.isEmpty(productVoList)){
@@ -159,7 +162,6 @@ public class InStockinServiceImpl implements IInStockinService
inStockin.setWarehouseId(inStockinVo.getWarehouseId());
inStockin.setStatus("1");
inStockin.setStockSource(inStockinVo.getStockSource());
//inStockin.setSpare1(inStockinVo.getProductType());
inStockin.setSpare5(inStockinVo.getRemark());
inStockinMapper.insertInStockin(inStockin);
for (int i = 1; i <= productVoList.size(); i++) {
@@ -235,12 +237,9 @@ public class InStockinServiceImpl implements IInStockinService
if (CollUtil.isEmpty(oldBasStockList) && is4DigitNumber(inStockTraycodeBindMsg.getTrayCode())) {
throw new RuntimeException(inStockTraycodeBindMsg.getTrayCode() + "尚未入库,查询不到库存");
}
//查询 合同号 产品号 代号 台次 物料编码 一致的老库存 进行数量合并
//查询 代号物料编码 一致的老库存 进行数量合并
Optional<BasStock> sameStock = oldBasStockList.stream().filter(x ->
inStockinDetail.getSpare6().equals(x.getOrderId()) &&
inStockinDetail.getSpare7().equals(x.getPower()) &&
inStockinDetail.getSpare9().equals(x.getDistribution()) &&
inStockinDetail.getSpare5().equals(x.getSpare5()) &&
inStockinDetail.getProductId().equals(x.getProductId())
).findFirst();
if (sameStock.isPresent()) {
@@ -275,7 +274,7 @@ public class InStockinServiceImpl implements IInStockinService
stock.setStockinDetailId(inStockinDetail.getStockinDetailId());
stock.setInType(old.getInType());
//stock.setLotNo(mydoJobDetail.getLotNo());
stock.setProductName(inStockinDetail.getProductName());
stock.setProductName(inStockinDetail.getSpare8());
//合同号
stock.setOrderId(inStockinDetail.getSpare6());
//产品号
@@ -286,6 +285,16 @@ public class InStockinServiceImpl implements IInStockinService
stock.setSpare5(inStockinDetail.getSpare5());
//部门
stock.setModel(SecurityUtils.getDeptId().toString());
//存货名称
stock.setProductName(inStockinDetail.getSpare8());
//单重
stock.setNetWeight(inStockinDetail.getSpare4());
//路线
stock.setGrossWeight(inStockinDetail.getSpare3());
//供应商
stock.setPhase(inStockinDetail.getSupplierId());
stock.setRemark(inStockinDetail.getRemark());
basStockList.add(stock);
}
}
@@ -440,4 +449,49 @@ public class InStockinServiceImpl implements IInStockinService
}
return AjaxResult.success();
}
@Override
public String importMaterial(List<Material> materialList) {
//未到货
List<Material> list1 = materialList.stream().filter(x -> ObjUtil.isNull(x.getActualArriveQuantity())).toList();
//生成入库单据
String warehouseId = null;
LoginUser loginUser = SecurityUtils.getLoginUser();
List<SysRole> roles = loginUser.getUser().getRoles();
if (CollUtil.isEmpty(roles)) {
//如果未设置角色 ,直接返回空列表
return "未设置角色";
}
//入库需要查看本部门任务
Optional<SysRole> first = roles.stream().filter(x -> "role1".equals(x.getRoleKey()) || "role3".equals(x.getRoleKey())).findFirst();
if (first.isPresent()) {
//二联合普通人员
warehouseId= "02";
}
Optional<SysRole> first1 = roles.stream().filter(x -> "role2".equals(x.getRoleKey()) || "role4".equals(x.getRoleKey())).findFirst();
if (first1.isPresent()) {
//三联合普通人员
warehouseId= "01";
}
for (Material material : list1) {
InstockInVo inStockinVo = new InstockInVo();
inStockinVo.setStockSource("1");
inStockinVo.setInType("1");
inStockinVo.setWarehouseId(warehouseId);
List<BasProduct> list = new ArrayList<>();
BasProduct basProduct = new BasProduct();
basProduct.setProductId(material.getCode());
basProduct.setSpare9(material.getCode());
basProduct.setSpare8(material.getName());
basProduct.setSpare4(Convert.toStr(material.getSingleWeight()));
basProduct.setQuantity(material.getQuantity());
basProduct.setSpare3(material.getRoute());
basProduct.setSpare5(material.getTableNumber());
basProduct.setSupplierId(material.getSupplier());
list.add(basProduct);
inStockinVo.setProductVoList(list);
insertInStockin(inStockinVo);
}
return "";
}
}

View File

@@ -28,7 +28,7 @@ public class InStockinDetail extends BaseEntity
/** 子单ID */
private String stockinDetailId;
/** 主单GUID */
/** 主单GUID inStockinDetail*/
@Excel(name = "主单GUID")
private String stockinGuid;

View File

@@ -494,7 +494,6 @@ public class MydoJobServiceImpl implements IMydoJobService {
stock.setStockStatus("1");
stock.setOutQuantity("0");
stock.setProductStatus(productStatus);
stock.setLotNo(mydoJobDetail.getLotNo());
stock.setInDate(DateUtil.formatDateTime(new Date()));
stock.setProductGuid(mydoJobDetail.getProductGuid());
stock.setQuantity(mydoJobDetail.getInQuantity());
@@ -506,20 +505,14 @@ public class MydoJobServiceImpl implements IMydoJobService {
stock.setStockinDetailId(mydoJobDetail.getInOrOutDId());
stock.setInType(mydoJob.getInOrOut());
stock.setLotNo(mydoJobDetail.getLotNo());
stock.setProductName(mydoJobDetail.getProductName());
stock.setSpare1(mydoJobDetail.getSpare1());
stock.setSpare3(mydoJobDetail.getSpare3());
stock.setSpare4(mydoJobDetail.getSpare4());
stock.setSpare5(mydoJobDetail.getSpare5());
stock.setSpare6(mydoJobDetail.getPrintDate());
stock.setSpare8(mydoJobDetail.getSpare8());
stock.setVoltage(mydoJobDetail.getSpare2());
stock.setPower(mydoJobDetail.getSpare7());
stock.setPhase(mydoJobDetail.getSupplierId());
stock.setDistribution(mydoJobDetail.getSpare9());
stock.setInClassId(mydoJobDetail.getUnit());
stock.setProductName(mydoJobDetail.getSpare1());
stock.setOrderId(mydoJobDetail.getSpare6());
//stock.setNetWeight(mydoJob.getLineId());
stock.setPower(mydoJobDetail.getSpare7());
stock.setDistribution(mydoJobDetail.getSpare9());
stock.setSpare5(mydoJobDetail.getSpare5());
stock.setNetWeight(mydoJobDetail.getSpare2());
stock.setGrossWeight(mydoJobDetail.getSpare3());
stock.setPhase(mydoJobDetail.getSupplierId());
return stock;
}

View File

@@ -137,8 +137,8 @@ public class OutStockoutController extends BaseController {
@Log(title = "出库主单状态改变", businessType = BusinessType.OTHER)
@RequestMapping("/changeStatus")
@ResponseBody
public String changeStatus(@RequestParam("stockoutIds") String[] stockoutIds, @RequestParam("status") String status,@RequestParam("newStatus")String newStatus,@RequestParam(value = "exitId",required = false)String exitId) {
String s = outStockoutService.updateOutStockoutStatus(stockoutIds, status, newStatus,exitId);
public String changeStatus(@RequestParam("stockoutIds") String[] stockoutIds, @RequestParam("status") String status,@RequestParam("newStatus")String newStatus,@RequestParam(value = "exitId",required = false)String exitId,@RequestParam(value = "pickUser",required = false)String pickUser) {
String s = outStockoutService.updateOutStockoutStatus(stockoutIds, status, newStatus,exitId,pickUser);
return s;
}

View File

@@ -67,7 +67,7 @@ public interface IOutStockoutService
*/
public String saveBill(OutStockoutVo outStockoutVo);
public String updateOutStockoutStatus(String[] stockoutIds, String status,String newStatus,String exitId);
public String updateOutStockoutStatus(String[] stockoutIds, String status,String newStatus,String exitId,String pickUser);
AjaxResult autoAllot(String stockoutId);

View File

@@ -129,13 +129,11 @@ public class OutStockoutServiceImpl implements IOutStockoutService {
outStockout.setStockoutId(stockOutId);
outStockout.setStockoutGuid(UUID.randomUUID().toString());
outStockout.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
String username = SecurityContextHolder.getContext().getAuthentication().getName();
outStockout.setCreateManId(username);
outStockout.setStatus("1");
outStockout.setStockoutSource(outStockoutVo.getOutStockout().getStockoutSource());
try {
if ("1".equals(outStockoutVo.getOutStockout().getStockoutSource())) {
outStockout.setCreateManId(com.ruoyi.common.core.text.Convert.toStr(SecurityUtils.getUserId()));
outStockout.setCreateManId(Convert.toStr(SecurityUtils.getUserId()));
outStockout.setDepartmentNo(Convert.toStr(SecurityUtils.getDeptId()));
} else if ("2".equals(outStockoutVo.getOutStockout().getStockoutSource())) {
outStockout.setCreateManId("1");
@@ -164,7 +162,7 @@ public class OutStockoutServiceImpl implements IOutStockoutService {
}
@Override
public String updateOutStockoutStatus(String[] stockoutIds, String status, String newStatus, String exitId) {
public String updateOutStockoutStatus(String[] stockoutIds, String status, String newStatus, String exitId,String pickUser) {
HashMap<String, String> map = new HashMap<>();
StringBuilder stringBuilder = new StringBuilder();
for (String stockoutId : stockoutIds) {
@@ -173,6 +171,7 @@ public class OutStockoutServiceImpl implements IOutStockoutService {
map.put("newStatus", newStatus);
map.put("exitId", exitId);
map.put("userName", SecurityUtils.getUsername());
map.put("pickUser", pickUser);
outStockoutMapper.updateOutStockoutStatus(map);
stringBuilder.append(",").append(map.get("v_resultString"));
}

View File

@@ -153,11 +153,11 @@ public class OutStockoutDetail
/** 净重 */
@Excel(name = "净重")
private BigDecimal netWeight;
private String netWeight;
/** 毛重 */
@Excel(name = "毛重")
private BigDecimal grossWeight;
private String grossWeight;
/** 分销 */
@Excel(name = "分销")
@@ -313,19 +313,19 @@ public class OutStockoutDetail
this.phase = phase;
}
public BigDecimal getNetWeight() {
public String getNetWeight() {
return netWeight;
}
public void setNetWeight(BigDecimal netWeight) {
public void setNetWeight(String netWeight) {
this.netWeight = netWeight;
}
public BigDecimal getGrossWeight() {
public String getGrossWeight() {
return grossWeight;
}
public void setGrossWeight(BigDecimal grossWeight) {
public void setGrossWeight(String grossWeight) {
this.grossWeight = grossWeight;
}

View File

@@ -25,7 +25,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
* 库存物资Controller
*
* @author ruoyi
* @date 2025-09-12
* @date 2026-03-25
*/
@RestController
@RequestMapping("/out/productAndStock")
@@ -45,17 +45,6 @@ public class ViewProductAndStockController extends BaseController
List<ViewProductAndStock> list = viewProductAndStockService.selectViewProductAndStockList(viewProductAndStock);
return getDataTable(list);
}
/**
* 查询库存物资列表
*/
@PreAuthorize("@ss.hasPermi('out:productAndStock:list')")
@GetMapping("/pd/list")
public TableDataInfo pdList(ViewProductAndStock viewProductAndStock)
{
startPage();
List<ViewProductAndStock> list = viewProductAndStockService.selectViewProductAndStockPdList(viewProductAndStock);
return getDataTable(list);
}
/**
* 导出库存物资列表

View File

@@ -9,143 +9,63 @@ import com.ruoyi.common.core.domain.BaseEntity;
* 库存物资对象 view_product_and_stock
*
* @author ruoyi
* @date 2025-10-21
* @date 2026-03-25
*/
public class ViewProductAndStock
public class ViewProductAndStock extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 序号 */
@Excel(name = "序号")
/** id */
@Excel(name = "id")
private Long onlyIdentity;
/** 物料编码 */
@Excel(name = "物料编码")
private String productId;
/** 批次 */
@Excel(name = "批次")
private String lotNo;
/** 物料名称 */
@Excel(name = "物料名称")
private String productName;
/** 库存数量 */
@Excel(name = "库存数量")
/** 数量 */
@Excel(name = "数量")
private String quantity;
/** 仓库 */
@Excel(name = "仓库")
/** 仓库id */
@Excel(name = "仓库id")
private String warehouseId;
/** 来源 */
@Excel(name = "来源")
private String spare1;
/** 套账 */
@Excel(name = "套账")
private String spare3;
/** 用途 */
@Excel(name = "用途")
private String spare4;
/** 台次 */
@Excel(name = "台次")
private String spare5;
/** 入库单价 */
@Excel(name = "入库单价")
private String spare6;
/** 状态 */
@Excel(name = "状态")
private String voltage;
/** 件次 */
@Excel(name = "件次")
private String power;
/** 供应商 */
// @Excel(name = "供应商")
private String phase;
private String supplierName;
/** 管理号 */
@Excel(name = "管理号")
private String distribution;
/** 合同号 */
@Excel(name = "合同号")
private String orderId;
/** 质量等级 */
@Excel(name = "质量等级")
private String spare8;
/** 产品号 */
@Excel(name = "产品号")
private String power;
/** 单价 */
@Excel(name = "单价")
private String price;
/** 代号 */
@Excel(name = "代号")
private String distribution;
/** 图号 */
@Excel(name = "图号")
private String cargoNo;
/** 台次 */
@Excel(name = "台次")
private String spare5;
/** 物料状态 */
@Excel(name = "物料状态")
private String productStatus;
/** 单重 */
@Excel(name = "单重")
private String netWeight;
/** 常用编码 */
@Excel(name = "常用编码")
private String parentId;
/** 路线 */
@Excel(name = "路线")
private String grossWeight;
/** 启用标识 */
@Excel(name = "启用标识")
private String spare7;
/** 供应商 */
@Excel(name = "供应商")
private String phase;
@Excel(name = "创建时间")
private String createTime;
/** 创建用户 */
@Excel(name = "创建用户")
private String createSys;
/** 规格型号 */
@Excel(name = "规格型号")
private String spec;
/** 单位 */
@Excel(name = "单位")
private String unit;
@Excel(name = "仓库")
private String warehouseName;
public String getWarehouseName() {
return warehouseName;
}
public void setWarehouseName(String warehouseName) {
this.warehouseName = warehouseName;
}
public String getSupplierName() {
return supplierName;
}
public void setSupplierName(String supplierName) {
this.supplierName = supplierName;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
/** 部门 */
@Excel(name = "部门")
private String model;
public void setOnlyIdentity(Long onlyIdentity)
{
@@ -167,16 +87,6 @@ public class ViewProductAndStock
return productId;
}
public void setLotNo(String lotNo)
{
this.lotNo = lotNo;
}
public String getLotNo()
{
return lotNo;
}
public void setProductName(String productName)
{
this.productName = productName;
@@ -207,64 +117,14 @@ public class ViewProductAndStock
return warehouseId;
}
public void setSpare1(String spare1)
public void setOrderId(String orderId)
{
this.spare1 = spare1;
this.orderId = orderId;
}
public String getSpare1()
public String getOrderId()
{
return spare1;
}
public void setSpare3(String spare3)
{
this.spare3 = spare3;
}
public String getSpare3()
{
return spare3;
}
public void setSpare4(String spare4)
{
this.spare4 = spare4;
}
public String getSpare4()
{
return spare4;
}
public void setSpare5(String spare5)
{
this.spare5 = spare5;
}
public String getSpare5()
{
return spare5;
}
public void setSpare6(String spare6)
{
this.spare6 = spare6;
}
public String getSpare6()
{
return spare6;
}
public void setVoltage(String voltage)
{
this.voltage = voltage;
}
public String getVoltage()
{
return voltage;
return orderId;
}
public void setPower(String power)
@@ -277,16 +137,6 @@ public class ViewProductAndStock
return power;
}
public void setPhase(String phase)
{
this.phase = phase;
}
public String getPhase()
{
return phase;
}
public void setDistribution(String distribution)
{
this.distribution = distribution;
@@ -297,104 +147,54 @@ public class ViewProductAndStock
return distribution;
}
public void setOrderId(String orderId)
public void setSpare5(String spare5)
{
this.orderId = orderId;
this.spare5 = spare5;
}
public String getOrderId()
public String getSpare5()
{
return orderId;
return spare5;
}
public void setSpare8(String spare8)
public void setNetWeight(String netWeight)
{
this.spare8 = spare8;
this.netWeight = netWeight;
}
public String getSpare8()
public String getNetWeight()
{
return spare8;
return netWeight;
}
public void setPrice(String price)
public void setGrossWeight(String grossWeight)
{
this.price = price;
this.grossWeight = grossWeight;
}
public String getPrice()
public String getGrossWeight()
{
return price;
return grossWeight;
}
public void setCargoNo(String cargoNo)
public void setPhase(String phase)
{
this.cargoNo = cargoNo;
this.phase = phase;
}
public String getCargoNo()
public String getPhase()
{
return cargoNo;
return phase;
}
public void setProductStatus(String productStatus)
public void setModel(String model)
{
this.productStatus = productStatus;
this.model = model;
}
public String getProductStatus()
public String getModel()
{
return productStatus;
}
public void setParentId(String parentId)
{
this.parentId = parentId;
}
public String getParentId()
{
return parentId;
}
public void setSpare7(String spare7)
{
this.spare7 = spare7;
}
public String getSpare7()
{
return spare7;
}
public void setCreateSys(String createSys)
{
this.createSys = createSys;
}
public String getCreateSys()
{
return createSys;
}
public void setSpec(String spec)
{
this.spec = spec;
}
public String getSpec()
{
return spec;
}
public void setUnit(String unit)
{
this.unit = unit;
}
public String getUnit()
{
return unit;
return model;
}
@Override
@@ -402,30 +202,17 @@ public class ViewProductAndStock
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("onlyIdentity", getOnlyIdentity())
.append("productId", getProductId())
.append("lotNo", getLotNo())
.append("productName", getProductName())
.append("quantity", getQuantity())
.append("warehouseId", getWarehouseId())
.append("spare1", getSpare1())
.append("spare3", getSpare3())
.append("spare4", getSpare4())
.append("spare5", getSpare5())
.append("spare6", getSpare6())
.append("voltage", getVoltage())
.append("power", getPower())
.append("phase", getPhase())
.append("distribution", getDistribution())
.append("orderId", getOrderId())
.append("spare8", getSpare8())
.append("price", getPrice())
.append("cargoNo", getCargoNo())
.append("productStatus", getProductStatus())
.append("parentId", getParentId())
.append("spare7", getSpare7())
.append("createTime", getCreateTime())
.append("createSys", getCreateSys())
.append("spec", getSpec())
.append("unit", getUnit())
.append("power", getPower())
.append("distribution", getDistribution())
.append("spare5", getSpare5())
.append("netWeight", getNetWeight())
.append("grossWeight", getGrossWeight())
.append("phase", getPhase())
.append("model", getModel())
.toString();
}
}

View File

@@ -7,7 +7,7 @@ import com.ruoyi.out.productAndStock.domain.ViewProductAndStock;
* 库存物资Mapper接口
*
* @author ruoyi
* @date 2025-09-12
* @date 2026-03-25
*/
public interface ViewProductAndStockMapper
{
@@ -58,6 +58,4 @@ public interface ViewProductAndStockMapper
* @return 结果
*/
public int deleteViewProductAndStockByOnlyIdentitys(Long[] onlyIdentitys);
List<ViewProductAndStock> selectViewProductAndStockPdList(ViewProductAndStock viewProductAndStock);
}

View File

@@ -7,7 +7,7 @@ import com.ruoyi.out.productAndStock.domain.ViewProductAndStock;
* 库存物资Service接口
*
* @author ruoyi
* @date 2025-09-12
* @date 2026-03-25
*/
public interface IViewProductAndStockService
{
@@ -58,6 +58,4 @@ public interface IViewProductAndStockService
* @return 结果
*/
public int deleteViewProductAndStockByOnlyIdentity(Long onlyIdentity);
List<ViewProductAndStock> selectViewProductAndStockPdList(ViewProductAndStock viewProductAndStock);
}

View File

@@ -11,7 +11,7 @@ import com.ruoyi.out.productAndStock.service.IViewProductAndStockService;
* 库存物资Service业务层处理
*
* @author ruoyi
* @date 2025-09-12
* @date 2026-03-25
*/
@Service
public class ViewProductAndStockServiceImpl implements IViewProductAndStockService
@@ -90,10 +90,4 @@ public class ViewProductAndStockServiceImpl implements IViewProductAndStockServi
{
return viewProductAndStockMapper.deleteViewProductAndStockByOnlyIdentity(onlyIdentity);
}
@Override
public List<ViewProductAndStock> selectViewProductAndStockPdList(ViewProductAndStock viewProductAndStock) {
return viewProductAndStockMapper.selectViewProductAndStockPdList(viewProductAndStock);
}
}

View File

@@ -85,8 +85,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialDesc !=null and materialDesc!=''">
and is2.stockin_id in (
select distinct stockin_id from in_stockin_detail isd
left join bas_product bp on isd.product_id = bp.product_id
where bp.product_name like concat('%',#{materialDesc},'%')
where isd.spare8 like concat('%',#{materialDesc},'%')
)
</if>
<if test="spare9 !=null and spare9!=''">
and is2.stockin_id in (
select stockin_id from in_stockin_detail isd
where isd.spare9 like concat('%',#{spare9},'%')
)
</if>
<if test="lotNo !=null and lotNo!=''">

View File

@@ -40,7 +40,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join out_stockout_detail d on d.stockout_id = o.stockout_id
left join bas_customer bc on bc.customer_no = d.out_id
left join bas_warehouse bw on bw.warehouse_id = d.warehouse_id
left join bas_supplier bs on bs.supplier_no = d.supplier_id
left join bas_product bp on bp.product_id = d.product_id
left join sys_user su on su.user_id = o.create_man_id
<where>
@@ -157,6 +156,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{newStatus,mode=IN,jdbcType=VARCHAR},
#{exitId,mode=IN,jdbcType=VARCHAR},
#{userName,mode=IN,jdbcType=VARCHAR},
#{pickUser,mode=IN,jdbcType=VARCHAR},
#{v_result,mode=OUT,jdbcType=VARCHAR},
#{v_resultString,mode=OUT,jdbcType=VARCHAR}
)

View File

@@ -7,36 +7,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="ViewProductAndStock" id="ViewProductAndStockResult">
<result property="onlyIdentity" column="only_identity" />
<result property="productId" column="product_id" />
<result property="lotNo" column="lot_no" />
<result property="productName" column="product_name" />
<result property="quantity" column="quantity" />
<result property="warehouseId" column="warehouse_id" />
<result property="spare1" column="spare1" />
<result property="spare3" column="spare3" />
<result property="spare4" column="spare4" />
<result property="spare5" column="spare5" />
<result property="spare6" column="spare6" />
<result property="voltage" column="voltage" />
<result property="power" column="power" />
<result property="phase" column="phase" />
<result property="distribution" column="distribution" />
<result property="orderId" column="order_id" />
<result property="spare8" column="spare8" />
<result property="price" column="price" />
<result property="cargoNo" column="cargo_no" />
<result property="productStatus" column="product_status" />
<result property="parentId" column="parent_id" />
<result property="spare7" column="spare7" />
<result property="createTime" column="create_time" />
<result property="createSys" column="create_sys" />
<result property="spec" column="spec" />
<result property="unit" column="unit" />
<result property="supplierName" column="supplier_name" />
<result property="warehouseName" column="warehouse_name" />
<result property="power" column="power" />
<result property="distribution" column="distribution" />
<result property="spare5" column="spare5" />
<result property="netWeight" column="net_weight" />
<result property="grossWeight" column="gross_weight" />
<result property="phase" column="phase" />
<result property="model" column="model" />
</resultMap>
<sql id="selectViewProductAndStockVo">
select only_identity, product_id, lot_no, product_name, quantity, warehouse_id, spare1, spare3, spare4, spare5, spare6, voltage, power, phase, distribution, order_id, spare8, price, cargo_no, product_status, parent_id, spare7, create_time, create_sys, spec, unit,supplier_name,warehouse_name from view_product_and_stock
select only_identity, product_id, product_name, quantity, warehouse_id, order_id, power, distribution, spare5, net_weight, gross_weight, phase, model from view_product_and_stock
</sql>
<select id="selectViewProductAndStockList" parameterType="ViewProductAndStock" resultMap="ViewProductAndStockResult">
@@ -44,30 +29,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<where>
<if test="onlyIdentity != null "> and only_identity = #{onlyIdentity}</if>
<if test="productId != null and productId != ''"> and product_id like concat('%', #{productId}, '%')</if>
<if test="lotNo != null and lotNo != ''"> and lot_no = #{lotNo}</if>
<if test="productName != null and productName != ''"> and product_name like concat('%', #{productName}, '%')</if>
<if test="quantity != null and quantity != ''"> and quantity = #{quantity}</if>
<if test="warehouseId != null and warehouseId != ''"> and warehouse_id = #{warehouseId}</if>
<if test="spare1 != null and spare1 != ''"> and spare1 = #{spare1}</if>
<if test="spare3 != null and spare3 != ''"> and spare3 = #{spare3}</if>
<if test="spare4 != null and spare4 != ''"> and spare4 = #{spare4}</if>
<if test="spare5 != null and spare5 != ''"> and spare5 like concat('%',#{spare5}, '%')</if>
<if test="spare6 != null and spare6 != ''"> and spare6 = #{spare6}</if>
<if test="voltage != null and voltage != ''"> and voltage = #{voltage}</if>
<if test="power != null and power != ''"> and power like concat('%',#{power}, '%')</if>
<if test="phase != null and phase != ''"> and phase like concat('%',#{phase}, '%')</if>
<if test="distribution != null and distribution != ''"> and distribution like concat('%', #{distribution}, '%')</if>
<if test="orderId != null and orderId != ''"> and order_id like concat('%', #{orderId}, '%')</if>
<if test="spare8 != null and spare8 != ''"> and spare8 = #{spare8}</if>
<if test="price != null and price != ''"> and price = #{price}</if>
<if test="cargoNo != null and cargoNo != ''"> and cargo_no like concat('%', #{cargoNo}, '%')</if>
<if test="productStatus != null and productStatus != ''"> and product_status = #{productStatus}</if>
<if test="parentId != null and parentId != ''"> and parent_id = #{parentId}</if>
<if test="spare7 != null and spare7 != ''"> and spare7 = #{spare7}</if>
<if test="createSys != null and createSys != ''"> and create_sys like concat('%', #{createSys}, '%')</if>
<if test="spec != null and spec != ''"> and spec like concat('%', #{spec}, '%')</if>
<if test="unit != null and unit != ''"> and unit like concat('%', #{unit}, '%')</if>
<if test="power != null and power != ''"> and power = #{power}</if>
<if test="distribution != null and distribution != ''"> and distribution like concat('%', #{distribution}, '%')</if>
<if test="spare5 != null and spare5 != ''"> and spare5 = #{spare5}</if>
<if test="netWeight != null and netWeight != ''"> and net_weight = #{netWeight}</if>
<if test="grossWeight != null and grossWeight != ''"> and gross_weight = #{grossWeight}</if>
<if test="phase != null and phase != ''"> and phase = #{phase}</if>
<if test="model != null and model != ''"> and model = #{model}</if>
</where>
</select>
@@ -81,60 +53,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="onlyIdentity != null">only_identity,</if>
<if test="productId != null">product_id,</if>
<if test="lotNo != null">lot_no,</if>
<if test="productName != null">product_name,</if>
<if test="quantity != null">quantity,</if>
<if test="warehouseId != null">warehouse_id,</if>
<if test="spare1 != null">spare1,</if>
<if test="spare3 != null">spare3,</if>
<if test="spare4 != null">spare4,</if>
<if test="spare5 != null">spare5,</if>
<if test="spare6 != null">spare6,</if>
<if test="voltage != null">voltage,</if>
<if test="power != null">power,</if>
<if test="phase != null">phase,</if>
<if test="distribution != null">distribution,</if>
<if test="orderId != null">order_id,</if>
<if test="spare8 != null">spare8,</if>
<if test="price != null">price,</if>
<if test="cargoNo != null">cargo_no,</if>
<if test="productStatus != null">product_status,</if>
<if test="parentId != null">parent_id,</if>
<if test="spare7 != null">spare7,</if>
<if test="createTime != null">create_time,</if>
<if test="createSys != null">create_sys,</if>
<if test="spec != null">spec,</if>
<if test="unit != null">unit,</if>
<if test="supplierName != null">supplier_name,</if>
<if test="power != null">power,</if>
<if test="distribution != null">distribution,</if>
<if test="spare5 != null">spare5,</if>
<if test="netWeight != null">net_weight,</if>
<if test="grossWeight != null">gross_weight,</if>
<if test="phase != null">phase,</if>
<if test="model != null">model,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="onlyIdentity != null">#{onlyIdentity},</if>
<if test="productId != null">#{productId},</if>
<if test="lotNo != null">#{lotNo},</if>
<if test="productName != null">#{productName},</if>
<if test="quantity != null">#{quantity},</if>
<if test="warehouseId != null">#{warehouseId},</if>
<if test="spare1 != null">#{spare1},</if>
<if test="spare3 != null">#{spare3},</if>
<if test="spare4 != null">#{spare4},</if>
<if test="spare5 != null">#{spare5},</if>
<if test="spare6 != null">#{spare6},</if>
<if test="voltage != null">#{voltage},</if>
<if test="power != null">#{power},</if>
<if test="phase != null">#{phase},</if>
<if test="distribution != null">#{distribution},</if>
<if test="orderId != null">#{orderId},</if>
<if test="spare8 != null">#{spare8},</if>
<if test="price != null">#{price},</if>
<if test="cargoNo != null">#{cargoNo},</if>
<if test="productStatus != null">#{productStatus},</if>
<if test="parentId != null">#{parentId},</if>
<if test="spare7 != null">#{spare7},</if>
<if test="createTime != null">#{createTime},</if>
<if test="createSys != null">#{createSys},</if>
<if test="spec != null">#{spec},</if>
<if test="unit != null">#{unit},</if>
<if test="supplierName != null">#{supplierName},</if>
<if test="power != null">#{power},</if>
<if test="distribution != null">#{distribution},</if>
<if test="spare5 != null">#{spare5},</if>
<if test="netWeight != null">#{netWeight},</if>
<if test="grossWeight != null">#{grossWeight},</if>
<if test="phase != null">#{phase},</if>
<if test="model != null">#{model},</if>
</trim>
</insert>
@@ -142,31 +86,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update view_product_and_stock
<trim prefix="SET" suffixOverrides=",">
<if test="productId != null">product_id = #{productId},</if>
<if test="lotNo != null">lot_no = #{lotNo},</if>
<if test="productName != null">product_name = #{productName},</if>
<if test="quantity != null">quantity = #{quantity},</if>
<if test="warehouseId != null">warehouse_id = #{warehouseId},</if>
<if test="spare1 != null">spare1 = #{spare1},</if>
<if test="spare3 != null">spare3 = #{spare3},</if>
<if test="spare4 != null">spare4 = #{spare4},</if>
<if test="spare5 != null">spare5 = #{spare5},</if>
<if test="spare6 != null">spare6 = #{spare6},</if>
<if test="voltage != null">voltage = #{voltage},</if>
<if test="power != null">power = #{power},</if>
<if test="phase != null">phase = #{phase},</if>
<if test="distribution != null">distribution = #{distribution},</if>
<if test="orderId != null">order_id = #{orderId},</if>
<if test="spare8 != null">spare8 = #{spare8},</if>
<if test="price != null">price = #{price},</if>
<if test="cargoNo != null">cargo_no = #{cargoNo},</if>
<if test="productStatus != null">product_status = #{productStatus},</if>
<if test="parentId != null">parent_id = #{parentId},</if>
<if test="spare7 != null">spare7 = #{spare7},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="createSys != null">create_sys = #{createSys},</if>
<if test="spec != null">spec = #{spec},</if>
<if test="unit != null">unit = #{unit},</if>
<if test="supplierName != null">supplier_name = #{supplierName},</if>
<if test="power != null">power = #{power},</if>
<if test="distribution != null">distribution = #{distribution},</if>
<if test="spare5 != null">spare5 = #{spare5},</if>
<if test="netWeight != null">net_weight = #{netWeight},</if>
<if test="grossWeight != null">gross_weight = #{grossWeight},</if>
<if test="phase != null">phase = #{phase},</if>
<if test="model != null">model = #{model},</if>
</trim>
where only_identity = #{onlyIdentity}
</update>

View File

@@ -67,29 +67,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bs.cargo_space_id, --库位编码
bs.tray_code, --托盘
bs.product_id, --产品编码
bp.product_name,--产品名称
bp.spec, -- 规格
bs.product_name,--产品名称
bs.quantity, -- 数量
bs.spare6, -- 金额
bp.price, --单价
bp.spare1 as productType, --产品状态
bp.unit, -- 单位
bp.cargo_no, --图号
bs.order_id, --合同号
bs.spare5, --台次
bs.power, --件次
bs.spare8, --质量
bp.parent_id, --常用编码
bs.stockin_id, --入库单号
bs2.supplier_name, --供应商名称
bs2.supplier_no, --供应商编号
bs.phase as supplier_name, --供应商名称
bw.warehouse_id, --仓库编码
bw.warehouse_name, --仓库名称
bs.in_date, --入库时间
bs.stacking_id, --出库时间
bs.spare7, --盘点标识
bs.back_date, --盘点时间
bp.remark, --备注
bs.stock_id, --库存编码
bs.stock_status, --库存状态
bs.lot_no, --批次号
@@ -98,13 +90,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bs.spare1, --用途
bs.distribution, --用途
bs.model, --用途
bcs.the_type as net_weight, --重量
bs.stockin_detail_id --入库子单
bs.net_weight , --重量
bs.stockin_detail_id, --入库子单
bs.gross_weight--路线
from bas_stock bs
left join bas_product bp on bs.product_id = bp.product_id
left join bas_warehouse bw on bs.warehouse_id = bw.warehouse_id
left join bas_cargo_space bcs on bs.cargo_space_id = bcs.cargo_space_id
left join bas_supplier bs2 on bs.phase = bs2.supplier_no
</sql>
<select id="selectBasStockList" parameterType="BasStock" resultMap="BasStockResult">
@@ -151,14 +142,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="theFloor != null and theFloor != ''"> and bcs.the_floor = #{theFloor}</if>
<if test="thePlatoon != null and thePlatoon != ''"> and bcs.the_platoon = #{thePlatoon}</if>
<if test="theColumn != null and theColumn != ''"> and bcs.the_column = #{theColumn}</if>
<if test="spec != null and spec != ''"> and bp.spec = #{spec}</if>
<if test="parentId != null and parentId != ''"> and bp.parent_id = #{parentId}</if>
<if test="supplierId != null and supplierId != ''"> and bs2.supplier_no = #{supplierId}</if>
<if test="supplierName != null and supplierName != ''"> and bs2.supplier_name = #{supplierName}</if>
<if test="price != null and price != ''"> and bp.price = #{price}</if>
<if test="inDateStart != null and inDateStart != ''"> and bs.in_date &gt;= #{inDateStart}</if>
<if test="inDateEnd != null and inDateEnd != ''"> and bs.in_date &lt;= #{inDateEnd}</if>
<if test="productType != null and productType != ''"> and bp.spare1 = #{productType}</if>
</where>

View File

@@ -76,4 +76,21 @@ export function productBack(data) {
})
}
// 导入数据
export function importData(data) {
return request({
url: '/in/stockIn/importData',
method: 'post',
data: data
})
}
// 下载导入模板
export function importTemplate() {
return request({
url: '/in/stockIn/importTemplate',
method: 'get'
})
}

View File

@@ -53,6 +53,9 @@ export function getOutStockoutDetail(query) {
if (params.exitId) {
searchParams.append('exitId', params.exitId);
}
if (params.pickUser) {
searchParams.append('pickUser', params.pickUser);
}
return request({
url: '/out/outStockout/changeStatus?' + searchParams.toString(),
method: 'get'

View File

@@ -73,6 +73,26 @@ export function delManagement(stockId) {
method: 'delete'
})
}
// 模拟生成出库任务
export function createOutboundTask(data) {
return request({
url: '/stock/management/createOutboundTask',
method: 'post',
data: data
})
}
// 模拟导出个人出库Excel
export function exportPersonalOutbound(data) {
return request({
url: '/stock/management/exportPersonalOutbound',
method: 'post',
data: data,
responseType: 'blob'
})
}
//重置盘点记录
export function resetPdRecord() {
return request({

View File

@@ -9,6 +9,9 @@
<el-form-item label="物料名称" prop="materialDesc">
<el-input v-model="queryParams.materialDesc" placeholder="请输入物料名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="代号" prop="spare9">
<el-input v-model="queryParams.spare9" placeholder="请输入代号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="入库类型" prop="inType">
<el-select v-model="queryParams.inType" placeholder="请选择入库类型" clearable>
<el-option v-for="dict in dict.type.in_bill_type" :key="dict.value" :label="dict.label" :value="dict.value" />
@@ -35,6 +38,7 @@
<el-button type="primary" plain icon="el-icon-plus" size="mini" :disabled="single" @click="handleReview" v-hasPermi="['in:stockIn:edit']">单据审核</el-button>
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleConfirmation" v-hasPermi="['in:stockIn:edit']">单据确认</el-button>
<el-button type="info" plain icon="el-icon-download" size="mini" :disabled="detailMultiple" @click="handleBarcodePrinting" v-hasPermi="['in:stockIn:barcodePrinting']">打印条码</el-button>
<el-button type="text" icon="el-icon-upload2" @click="handleImport">导入</el-button>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" style="margin-left: 10px;"></right-toolbar>
</div>
</div>
@@ -42,7 +46,7 @@
<el-table v-loading="loading" :data="stockInList" @selection-change="handleSelectionChange"
@row-click="handleRowClick" max-height="300" border highlight-current-row :row-class-name="tableRowClassName">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="入库订单" align="left" prop="stockinId" width="150"/>
<el-table-column label="入库订单" align="left" prop="stockinId" width="160"/>
<el-table-column label="入库类型" align="left" prop="inType">
<template slot-scope="scope">
<dict-tag :options="dict.type.in_bill_type" :value="scope.row.inType"/>
@@ -79,11 +83,13 @@
<div style="float: right; display: flex; align-items: center;">
<el-button type="primary" size="mini" icon="el-icon-check" @click="handleBatchSave" v-hasPermi="['in:stockIn:edit']">保存子单明细</el-button>
<div style="width: 1px; height: 20px; background: #eee; margin: 0 15px;"></div>
<el-input v-model="batchTrayCode" placeholder="批量条码" size="mini" style="width: 120px; margin-right: 5px;" clearable />
<el-input v-model="batchTrayCode" placeholder="条码 或 条码=位置" size="mini" style="width: 150px; margin-right: 5px;" clearable />
<el-button type="warning" size="mini" icon="el-icon-copy-document" @click="handleBatchFillTrayCode">批量填充</el-button>
</div>
</div>
<el-table
v-loading="detailLoading"
:data="stockInDetailList"
@@ -131,8 +137,10 @@
<el-table-column label="产品号" align="left" prop="spare7" width="160"/>
<el-table-column label="代号" align="left" prop="spare9" width="160"/>
<el-table-column label="台次" align="left" prop="spare5" />
<el-table-column label="物料编码" align="left" prop="productId" />
<el-table-column label="物料名称" align="left" prop="productName" show-overflow-tooltip/>
<el-table-column label="供应商" align="left" prop="supplierId" />
<el-table-column label="路线" align="left" prop="spare3" />
<!-- <el-table-column label="物料编码" align="left" prop="productId" width="160"/>-->
<el-table-column label="物料名称" align="left" prop="spare8" show-overflow-tooltip/>
<el-table-column label="计划数量" align="center" prop="quantity" width="100"/>
<el-table-column label="实际数量" align="center" width="100">
<template slot-scope="scope">
@@ -161,6 +169,11 @@
<el-tag v-else size="mini" type="info" effect="plain">未分配托盘</el-tag>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark">
<template slot-scope="scope">
<el-input v-model="scope.row.remark" placeholder="请输入备注" size="mini" clearable />
</template>
</el-table-column>
</el-table>
<pagination
@@ -215,11 +228,42 @@
</div>
</div>
</vue-easy-print>
<!-- 入库导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" :true-label="1" :false-label="0" /> 是否更新已经存在的单据数据
</div>
<span>仅允许导入xls、xlsx格式文件。</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {confirmationStockIn, invalidatedStockIn, listStockIn, reviewStockIn} from "@/api/in/stockIn"
import { getToken } from "@/utils/auth";
import {listStockInDetail, updateStockInDetailBatch} from "@/api/in/stockInDetail"
import {listWarehouse} from "@/api/bas/warehouse";
import vueEasyPrint from 'vue-easy-print'
@@ -231,7 +275,7 @@ export default {
dicts: ['bill_resource','product_type', 'in_bill_status', 'in_bill_type','bill_resource','product_type','origin_type','account_type','turnover_type','purpose_type','quality_type'],
components: {
vueEasyPrint,
VueQr
VueQr,
},
data() {
return {
@@ -289,6 +333,21 @@ export default {
title: "",
// 是否显示弹出层
open: false,
// 入库导入参数
upload: {
// 是否显示弹出层(入库导入)
open: false,
// 弹出层标题(入库导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + "/in/stockIn/importData"
},
// 批量填充托盘条码
batchTrayCode: '',
// 查询参数
@@ -334,6 +393,32 @@ export default {
this.getWarehouseList()
},
methods: {
/** 导入按钮操作 */
handleImport() {
this.upload.title = "入库导入";
this.upload.open = true;
},
/** 下载模板操作 */
importTemplate() {
this.download('in/stockIn/importTemplate', {
}, `stock_in_template_${new Date().getTime()}.xlsx`)
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
this.getList();
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
},
/** 获取仓库列表 */
getWarehouseList() {
listWarehouse(this.queryWarehouseParams).then(response => {
@@ -527,13 +612,23 @@ export default {
/** 批量填充托盘条码 */
handleBatchFillTrayCode() {
if (!this.batchTrayCode) {
this.$modal.msgWarning("请输入批量托盘条码");
this.$modal.msgWarning("请输入批量填充内容(格式:1003 或 1003=A1)");
return;
}
if (this.stockInDetailListSelected.length === 0) {
this.$modal.msgWarning("请选择要填充的子单据");
return;
}
// 解析输入:1003=A1 或 1003
let trayCode = this.batchTrayCode;
let location = '';
if (this.batchTrayCode.includes('=')) {
const parts = this.batchTrayCode.split('=');
trayCode = parts[0].trim();
location = parts[1] ? parts[1].trim() : '';
}
// 批量填充逻辑:为每个选中行添加或设置一个托盘,数量默认为计划数量或剩余数量
this.stockInDetailList.forEach((item, index) => {
if (this.stockInDetailListSelected.some(selected => selected.stockinDetailId === item.stockinDetailId)) {
@@ -543,15 +638,18 @@ export default {
}
const remain = Math.max(0, (item.quantity || 0) - (item.assignNum || 0));
// 查找是否已有该托盘,没有则添加,有则更新数量
const existingTray = item.trayList.find(t => t.trayCode === this.batchTrayCode);
const existingTray = item.trayList.find(t => t.trayCode === trayCode);
if (!existingTray) {
item.trayList.push({
trayCode: this.batchTrayCode,
trayCode: trayCode,
quantity: remain, // 默认填入剩余计划数量
location: ''
location: location
});
} else {
existingTray.quantity = (existingTray.quantity || 0) + remain;
if (location) {
existingTray.location = location; // 如果输入了位置,则更新
}
}
this.calculateAssignNum(item);
}

View File

@@ -177,38 +177,8 @@
<el-table-column label="代号" align="left" prop="spare9" width="160"/>
<el-table-column label="台次" align="left" prop="spare5" />
<el-table-column label="物料编码" align="left" prop="productId" />
<el-table-column label="物料名称" align="left" prop="productName" />
<!-- <el-table-column label="供应商" align="left" prop="supplierName" />-->
<el-table-column label="物料名称" align="left" prop="spare1" />
<el-table-column label="出库数量" align="right" prop="outQuantity" /> <!-- 出库数量 -->
<!-- <el-table-column label="批号" align="left" prop="lotNo" />-->
<!-- <el-table-column label="单价" align="left" prop="printDate" />-->
<!-- <el-table-column label="来源" align="left" prop="spare1" >&lt;!&ndash;来源&ndash;&gt;
<template slot-scope="scope">
<dict-tag :options="dict.type.origin_type" :value="scope.row.spare1"/>
</template>
</el-table-column>
<el-table-column label="状态" align="left" prop="spare2" >&lt;!&ndash;用途&ndash;&gt;
<template slot-scope="scope">
<dict-tag :options="dict.type.turnover_type" :value="scope.row.spare2"/>
</template>
</el-table-column>
<el-table-column label="套账" align="left" prop="spare3" >&lt;!&ndash;用途&ndash;&gt;
<template slot-scope="scope">
<dict-tag :options="dict.type.account_type" :value="scope.row.spare3"/>
</template>
</el-table-column>
<el-table-column label="用途" align="left" prop="spare4" >&lt;!&ndash;用途&ndash;&gt;
<template slot-scope="scope">
<dict-tag :options="dict.type.purpose_type" :value="scope.row.spare4"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="质量等级" align="left" prop="spare8" >&lt;!&ndash;用途&ndash;&gt;
<template slot-scope="scope">
<dict-tag :options="dict.type.quality_type" :value="scope.row.spare8"/>
</template>
</el-table-column>-->
</el-table>
<pagination

View File

@@ -22,7 +22,7 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="'备注'" prop="remark"><!--客户-->
<el-form-item :label="'备注'" prop="remark">
<el-input
v-model="formData.remark"
:placeholder="'请输入备注'"
@@ -43,78 +43,22 @@
<!-- 物资明细表格 -->
<el-table v-loading="loading" :data="materialList">
<!-- <el-table-column label="仓库编码" align="center" prop="warehouseId" />-->
<el-table-column label="仓库" align="center" prop="warehouseName" />
<el-table-column label="合同号" align="center" prop="cargoNo" width="160"/>
<el-table-column label="产品号" align="center" prop="phase" width="160"/>
<el-table-column label="代号" align="center" prop="fid" width="160"/>
<el-table-column label="台次" align="center" prop="power" width="160"/>
<el-table-column label="物料编码" align="center" prop="productId" /><!--物资编号-->
<el-table-column label="物料名称" align="center" prop="productName" /><!--物资名称-->
<!-- <el-table-column label="批次" align="center" prop="lotNo" />-->
<!-- <el-table-column label="规格型号" align="center" prop="productSpec" />-->
<!-- <el-table-column label="供应商" align="center" prop="supplierName" />-->
<!-- <el-table-column label="客户编码" align="center" prop="outId" />-->
<!-- <el-table-column label="客户名称" align="center" prop="customerName" width="230">-->
<!-- <template slot-scope="scope">-->
<!-- <el-input-->
<!-- v-model="scope.row.customerName"-->
<!-- placeholder="点击选择客户"-->
<!-- readonly-->
<!-- size="mini"-->
<!-- @focus="openRowCustomerSelector(scope.row)"-->
<!-- />-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column :label="'数量'" align="center" prop="quantity" width="150"><!--数量-->
<el-table-column label="合同号" align="center" prop="orderId" width="160"/>
<el-table-column label="产品号" align="center" prop="power" width="160"/>
<el-table-column label="代号" align="center" prop="distribution" width="160"/>
<el-table-column label="台次" align="center" prop="spec" width="160"/>
<el-table-column label="物料编码" align="center" prop="productId" />
<el-table-column label="物料名称" align="center" prop="productName" />
<el-table-column label="单重" align="center" prop="netWeight" />
<el-table-column label="路线" align="center" prop="grossWeight" />
<el-table-column label="供应商" align="center" prop="phase" />
<el-table-column label="部门" align="center" prop="model" />
<el-table-column label="数量" align="center" prop="quantity" width="150">
<template slot-scope="scope">
<el-input-number v-model="scope.row.quantity" :min="1" size="mini" @change="handleQuantityChange(scope.row)" />
</template>
</el-table-column>
<!-- <el-table-column label="状态" align="center" prop="spec">
<template slot-scope="scope">
<dict-tag :options="dict.type.turnover_type" :value="scope.row.spec"/>
</template>
</el-table-column>
<el-table-column label="来源" align="center" prop="unit" >
<template slot-scope="scope">
<dict-tag :options="dict.type.origin_type" :value="scope.row.unit"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="入库单价" align="center" prop="price" />-->
<!-- <el-table-column label="产品质量" align="center" prop="voltage" >
<template slot-scope="scope">
<dict-tag :options="dict.type.quality_type" :value="scope.row.voltage"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="用途" align="center" prop="model" >
<template slot-scope="scope">
<dict-tag :options="dict.type.purpose_type" :value="scope.row.model"/>
</template>
</el-table-column>
<el-table-column label="套账" align="center" prop="entryid" >
<template slot-scope="scope">
<dict-tag :options="dict.type.account_type" :value="scope.row.entryid"/>
</template>
</el-table-column>
<el-table-column label="单位" align="center" prop="productUnit" />
<el-table-column label="图号" align="center" prop="productDrawNo" />-->
<!-- <el-table-column label="物料状态" align="center" prop="productStatus" >
<template slot-scope="scope">
<dict-tag :options="dict.type.product_type" :value="scope.row.productStatus"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="常用编码" align="center" prop="parentId" />
<el-table-column label="是否启用" align="center" prop="isUsed" >
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isUsed"/>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" />
<el-table-column label="创建用户" align="center" prop="createSys" />-->
<el-table-column :label="'操作'" align="center" class-name="small-padding fixed-width"><!--操作-->
<template slot-scope="scope">
@@ -124,7 +68,7 @@
</el-table>
<!-- 选择物资弹窗 -->
<el-dialog :title="'选择物资'" :visible.sync="materialDialog" width="1700px" append-to-body><!--选择物资-->
<el-dialog :title="'选择物资'" :visible.sync="materialDialog" width="80%" custom-class="material-dialog" append-to-body><!--选择物资-->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="合同号" prop="orderId">
@@ -159,14 +103,6 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="物料编码" prop="productId">&lt;!&ndash;物资编码&ndash;&gt;
<el-input
v-model="queryParams.productId"
:placeholder="'请输入物料编码'"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
<el-form-item label="物料名称" prop="productName"><!--物资名称-->
<el-input
v-model="queryParams.productName"
@@ -175,15 +111,6 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规格型号" prop="spec">
<el-input
v-model="queryParams.spec"
placeholder="请输入规格型号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{'搜索'}}<!--搜索--></el-button>
@@ -193,65 +120,19 @@
<el-table v-loading="materialLoading" :data="materialOptions" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" prop="onlyIdentity" />
<el-table-column label="仓库编码" align="center" prop="warehouseId" />
<el-table-column label="仓库" align="center" prop="warehouseName" />
<el-table-column label="id" align="center" prop="onlyIdentity" />
<el-table-column label="物料编码" align="center" prop="productId" />
<el-table-column label="物料名称" align="center" prop="productName" />
<el-table-column label="数量" align="center" prop="quantity" />
<el-table-column label="仓库id" align="center" prop="warehouseId" />
<el-table-column label="合同号" align="center" prop="orderId" />
<el-table-column label="产品号" align="center" prop="power" />
<el-table-column label="代号" align="center" prop="distribution" />
<el-table-column label="台次" align="center" prop="spare5" />
<el-table-column label="物料编码" align="center" prop="productId" />
<!-- <el-table-column label="批次" align="center" prop="lotNo" />-->
<el-table-column label="物料名称" align="center" prop="productName" />
<el-table-column label="规格型号" align="center" prop="spec" />
<!-- <el-table-column label="图号" align="center" prop="cargoNo" />-->
<el-table-column label="库存数量" align="center" prop="quantity" />
<!-- <el-table-column label="来源" align="center" prop="spare1">
<template slot-scope="scope">
<dict-tag :options="dict.type.origin_type" :value="scope.row.spare1"/>
</template>
</el-table-column>
<el-table-column label="套账" align="center" prop="spare3">
<template slot-scope="scope">
<dict-tag :options="dict.type.account_type" :value="scope.row.spare3"/>
</template>
</el-table-column>
<el-table-column label="用途" align="center" prop="spare4">
<template slot-scope="scope">
<dict-tag :options="dict.type.purpose_type" :value="scope.row.spare4"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="入库单价" align="center" prop="spare6" />-->
<!-- <el-table-column label="状态" align="center" prop="voltage">
<template slot-scope="scope">
<dict-tag :options="dict.type.turnover_type" :value="scope.row.voltage"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="供应商" align="center" prop="phase" />-->
<!-- <el-table-column label="供应商" align="center" prop="supplierName" />-->
<!-- <el-table-column label="质量等级" align="center" prop="spare8">
<template slot-scope="scope">
<dict-tag :options="dict.type.quality_type" :value="scope.row.spare8"/>
</template>
</el-table-column>
<el-table-column label="单价" align="center" prop="price" />
<el-table-column label="物料状态" align="center" prop="productStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.product_type" :value="scope.row.productStatus"/>
</template>
</el-table-column>
<el-table-column label="常用编码" align="center" prop="parentId" />
<el-table-column label="启用标识" align="center" prop="spare7">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.spare7"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="创建用户" align="center" prop="createSys" />-->
<!-- <el-table-column label="单位" align="center" prop="unit" />-->
<el-table-column label="单重" align="center" prop="netWeight" />
<el-table-column label="路线" align="center" prop="grossWeight" />
<el-table-column label="供应商" align="center" prop="phase" />
<el-table-column label="部门" align="center" prop="model" />
</el-table>
<pagination
@@ -268,104 +149,6 @@
</div>
</el-dialog>
<!-- 选择客户弹窗 -->
<el-dialog :title="'客户管理'" :visible.sync="customerDialog" width="800px" append-to-body>
<el-form :model="customerQueryParams" ref="customerQueryForm" size="small" :inline="true" label-width="100px">
<el-form-item :label="'客户编号'" prop="customerNo"><!--客户编号-->
<el-input
v-model="customerQueryParams.customerNo"
:placeholder="'请输入客户编号'"
clearable
@keyup.enter.native="handleCustomerQuery"
/>
</el-form-item>
<el-form-item :label="'客户名称'" prop="customerName"><!--客户名称-->
<el-input
v-model="customerQueryParams.customerName"
:placeholder="'请输入客户名称'"
clearable
@keyup.enter.native="handleCustomerQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleCustomerQuery">搜索<!--搜索--></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetCustomerQuery">重置<!--重置--></el-button>
</el-form-item>
</el-form>
<el-table ref="customerTable" v-loading="customerLoading" :data="customerList" @row-click="handleCustomerRowClick" highlight-current-row>
<el-table-column :label="'客户编号'" align="left" prop="customerNo" /><!--客户编号-->
<el-table-column :label="'客户名称'" align="left" prop="customerName" /><!--客户名称-->
<!-- <el-table-column :label="$t('basCustomer.simpleName')" align="left" prop="simpleName" />客户简称 -->
<el-table-column :label="'是否可用'" align="left" prop="useable">
<template slot-scope="scope">
<dict-tag :options="dict.type.is_available" :value="scope.row.useable"/>
</template>
</el-table-column><!--是否可用-->
</el-table>
<pagination
v-show="customerTotal > 0"
:total="customerTotal"
:page.sync="customerQueryParams.pageNum"
:limit.sync="customerQueryParams.pageSize"
@pagination="getCustomerList"
/>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirmSelectCustomer">确定<!--确 定--></el-button>
<el-button @click="cancelSelectCustomer">取消<!--取 消--></el-button>
</div>
</el-dialog>
<!-- 选择供应商弹窗 -->
<el-dialog :title="'选择供应商'" :visible.sync="supplierDialog" width="800px" append-to-body>
<el-form :model="supplierQueryParams" ref="supplierQueryForm" size="small" :inline="true" label-width="100px">
<el-form-item :label="'供应商编号'" prop="supplierNo">
<el-input
v-model="supplierQueryParams.supplierNo"
:placeholder="'请输入供应商编号'"
clearable
@keyup.enter.native="handleSupplierQuery"
/>
</el-form-item>
<el-form-item :label="'供应商名称'" prop="supplierName">
<el-input
v-model="supplierQueryParams.supplierName"
:placeholder="'请输入供应商名称'"
clearable
@keyup.enter.native="handleSupplierQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleSupplierQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetSupplierQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table ref="supplierTable" v-loading="supplierLoading" :data="supplierList" @row-click="handleSupplierRowClick" highlight-current-row>
<el-table-column :label="'供应商编号'" align="left" prop="supplierNo" />
<el-table-column :label="'供应商名称'" align="left" prop="supplierName" />
<el-table-column :label="'是否可用'" align="left" prop="useable">
<template slot-scope="scope">
<dict-tag :options="dict.type.is_available" :value="scope.row.useable"/>
</template>
</el-table-column>
</el-table>
<pagination
v-show="supplierTotal > 0"
:total="supplierTotal"
:page.sync="supplierQueryParams.pageNum"
:limit.sync="supplierQueryParams.pageSize"
@pagination="getSupplierListForDialog"
/>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirmSelectSupplier">确定</el-button>
<el-button @click="cancelSelectSupplier">取消</el-button>
</div>
</el-dialog>
</div>
</template>
@@ -642,36 +425,21 @@ export default {
this.materialList = this.materialList.concat(
newMaterials.map(item => ({
onlyIdentity: item.onlyIdentity,
productId: item.productId,
productName: item.productName,
quantity: item.quantity,
quantityOrignal: item.quantity,
spec: item.voltage,
supplierId: item.phase,
supplierName: item.supplierName,
phase: item.power,
fid: item.distribution,
cargoNo: item.orderId,
entryid: item.spare3,
unit: item.spare1,
model: item.spare4,
price:item.spare6,
power:item.spare5,
warehouseId: item.warehouseId,
warehouseName: item.warehouseName,
lotNo: item.lotNo,
voltage:item.spare8,
onlyIdentity: item.onlyIdentity,
productPrice:item.price,
productSpec:item.spec,
productUnit:item.unit,
productDrawNo:item.cargoNo,
productStatus:item.productStatus,
parentId: item.parentId,
isUsed:item.spare7,
createTime: item.createTime,
createSys:item.createSys
orderId: item.orderId,
power: item.power,
distribution: item.distribution,
spec: item.spare5,
netWeight: item.netWeight,
grossWeight: item.grossWeight,
phase: item.phase,
model: item.model,
}))
);
@@ -759,4 +527,14 @@ export default {
width: auto;
min-width: fit-content;
}
.material-dialog {
height: 50vh;
overflow: hidden;
display: flex;
flex-direction: column;
}
.material-dialog >>> .el-dialog__body {
flex: 1;
overflow-y: auto;
}
</style>

View File

@@ -152,11 +152,15 @@
<dict-tag :options="dict.type.bill_resource" :value="scope.row.stockoutSource"/>
</template>
</el-table-column>
<el-table-column label="上位单号" align="left" prop="erpStockoutId" width="150"/><!--入库订单-->
<!-- <el-table-column :label="'出口'" align="left" prop="exitId" />-->
<!-- <el-table-column :label="'客户编码'" align="left" prop="customerNo" />&lt;!&ndash; 客户编码 &ndash;&gt;-->
<!-- <el-table-column label="客户名称" align="left" prop="customerName" />-->
<el-table-column label="建单人" align="left" prop="createManName" /> <!-- 建单人 -->
<el-table-column label="上位单号" align="left" prop="erpStockoutId" width="150"/><!--入库订单-->
<el-table-column label="出口" align="left" prop="exitId" ><!--出口-->
<template slot-scope="scope">
<dict-tag :options="dict.type.exit_type" :value="scope.row.exitId"/>
</template>
</el-table-column>
<el-table-column label="领料人" align="left" prop="classNowId" />
<!-- <el-table-column label="客户名称" align="left" prop="customerName" />-->
<el-table-column label="创建时间" align="left" prop="createDate" width="160"/><!-- 创建时间 -->
<el-table-column label="开始时间" align="left" prop="startDate" width="160"/><!-- 开始时间 -->
<el-table-column label="确认时间" align="left" prop="finishDate" width="160"/> <!-- 确认时间 -->
@@ -176,88 +180,31 @@
<el-table v-loading="detailLoading" :data="outStockDetailList" style="margin-top: 20px;" @selection-change="handleDetailSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column :label="'出库子单编号'" align="center" prop="stockoutDetailId" width="160" /> <!-- 出库子单编号 -->
<!-- <el-table-column label="仓库" align="center" prop="warehouseId" >
<template slot-scope="scope">
<dict-tag :options="dict.type.warehouse" :value="scope.row.warehouseId"/>
</template>
</el-table-column>-->
<el-table-column label="合同号" align="center" prop="cargoNo" width="160"/>
<el-table-column label="产品号" align="center" prop="phase" width="160"/>
<el-table-column label="代号" align="center" prop="fid" width="160"/>
<el-table-column label="台次" align="center" prop="power" width="160"/>
<el-table-column label="物料编码" align="center" prop="productId" /> <!-- 物资编码 -->
<el-table-column label="合同号" align="center" prop="orderId" width="160"/>
<el-table-column label="产品号" align="center" prop="power" width="160"/>
<el-table-column label="代号" align="center" prop="distribution" width="160"/>
<el-table-column label="台次" align="center" prop="spec" width="160"/>
<el-table-column label="单重" align="center" prop="netWeight" />
<el-table-column label="路线" align="center" prop="grossWeight" width="160"/>
<el-table-column label="供应商" align="center" prop="phase" width="160"/>
<el-table-column label="物料编码" align="center" prop="productId" />
<el-table-column label="物料名称" align="center" prop="productName" />
<!-- <el-table-column :label="'批次'" align="center" prop="lotNo"/>-->
<!-- <el-table-column label="规格型号" align="center" prop="productSpec" />-->
<!-- <el-table-column label="供应商" align="center" prop="supplierName" />-->
<!-- <el-table-column label="客户" align="center" prop="customerName" />-->
<el-table-column label="计划数量" align="center" prop="quantity" /> <!-- 计划数量 -->
<el-table-column label="分配数量" align="center" prop="allotQuantity" /> <!-- 分配数量 -->
<el-table-column label="实际数量" align="center" prop="assignNum" /> <!-- 实际数量 -->
<!-- <el-table-column label="回传状态" align="center" prop="swStatus" >
<template slot-scope="scope">
<dict-tag :options="dict.type.sw_status" :value="scope.row.swStatus"/>
</template>
</el-table-column>-->
<!-- <el-table-column :label="'入库单价'" align="center" prop="price"/>-->
<!-- <el-table-column :label="'来源'" align="center" prop="unit">
<template slot-scope="scope">
<dict-tag :options="dict.type.origin_type" :value="scope.row.unit"/>
</template>
</el-table-column>
<el-table-column :label="'状态'" align="center" prop="spec">
<template slot-scope="scope">
<dict-tag :options="dict.type.turnover_type" :value="scope.row.spec"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="产品质量" align="center" prop="voltage" >
<template slot-scope="scope">
<dict-tag :options="dict.type.quality_type" :value="scope.row.voltage"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="分销" align="center" prop="distribution" />-->
<!-- <el-table-column label="用途" align="center" prop="model" >
<template slot-scope="scope">
<dict-tag :options="dict.type.purpose_type" :value="scope.row.model"/>
</template>
</el-table-column>
<el-table-column label="套账" align="center" prop="entryid" >
<template slot-scope="scope">
<dict-tag :options="dict.type.account_type" :value="scope.row.entryid"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="单位" align="center" prop="productUnit" />-->
<!-- <el-table-column label="图号" align="center" prop="productDrawNo" />-->
<!-- <el-table-column label="物料状态" align="center" prop="productStatus" >
<template slot-scope="scope">
<dict-tag :options="dict.type.product_type" :value="scope.row.productStatus"/>
</template>
</el-table-column>
<el-table-column label="常用编码" align="center" prop="parentId" />
<el-table-column label="是否启用" align="center" prop="isUsed" >
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isUsed"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="创建时间" align="center" prop="createTime" />
<el-table-column label="创建用户" align="center" prop="createSys" />-->
<el-table-column label="计划数量" align="center" prop="quantity" />
<el-table-column label="分配数量" align="center" prop="allotQuantity" />
<el-table-column label="实际数量" align="center" prop="assignNum" />
</el-table>
<!-- <pagination-->
<!-- v-show="detailTotal>0"-->
<!-- :total="detailTotal"-->
<!-- :page.sync="detailQueryParams.pageNum"-->
<!-- :limit.sync="detailQueryParams.pageSize"-->
<!-- @pagination="getDetailList"-->
<!-- />-->
<!-- 审核弹窗 -->
<el-dialog :title="'审核'" :visible.sync="auditDialogVisible" width="400px" append-to-body>
<el-form ref="auditForm" :model="auditForm" :rules="auditRules" label-width="80px">
<el-form-item label="领料人" prop="pickUser">
<el-input
v-model="auditForm.pickUser"
placeholder="请输入领料人"
clearable
/>
</el-form-item>
<el-form-item :label="'选择出口'" prop="exitId">
<el-select v-model="auditForm.exitId" :placeholder="'请选择出口'" clearable>
<el-option
@@ -401,7 +348,7 @@ import {listWarehouse} from "@/api/bas/warehouse";
export default {
name: "OutStockWithDetail",
dicts: ['bill_resource','sw_status','out_bill_type', 'out_bill_status', 'product_type', 'quality_type', 'turnover_type', 'sys_yes_no','account_type','origin_type','purpose_type','warehouse'],
dicts: ['bill_resource','out_bill_type', 'out_bill_status','exit_type'],
data() {
return {
// 遮罩层
@@ -428,7 +375,8 @@ export default {
auditDialogVisible: false,
// 审核表单数据
auditForm: {
exitId: null
exitId: null,
pickUser:null
},
// 库存明细弹窗显示状态
stockDialogVisible: false,
@@ -448,8 +396,8 @@ export default {
},
// 出口选项
exitOptions: [
{ exitId: '1', exitName: '北端'},
{ exitId: '2', exitName: '南端'},
{ exitId: '1', exitName: '入库端'},
{ exitId: '2', exitName: '出库端'},
],
@@ -624,6 +572,7 @@ export default {
this.auditDialogVisible = true
this.auditForm.exitId = null
this.auditForm.pickUser = null
return
}
@@ -726,7 +675,8 @@ export default {
stockoutIds: this.selectedRows.map(row => row.stockoutId),
status: this.selectedRows[0].status,
newStatus: this.currentAuditStatus,
exitId: this.auditForm.exitId
exitId: this.auditForm.exitId,
pickUser: this.auditForm.pickUser
}
// console.log("单据状态修改(含出口信息):", params)

View File

@@ -194,35 +194,19 @@
<el-table v-loading="detailLoading" :data="detailList" @selection-change="handleSelectionChange" max-height="650">
<el-table-column type="selection" align="center" />
<!-- <el-table-column label="仓库名称" align="center" prop="warehouseName"/>-->
<el-table-column label="库存编码" align="center" prop="stockId" width="160"/>
<!-- <el-table-column label="库位" align="center" prop="cargoSpaceId" width="160"/>-->
<!-- <el-table-column label="托盘" align="center" prop="trayCode" width="160"/>-->
<el-table-column label="合同号" align="center" prop="orderId" width="160"/>
<el-table-column label="产品号" align="center" prop="power" width="160"/>
<el-table-column label="代号" align="center" prop="distribution" width="160"/>
<el-table-column label="台次" align="center" prop="spare5"/>
<el-table-column label="物料编码" align="center" prop="productId"/>
<el-table-column label="物料名称" align="center" prop="productName" width="160" />
<!-- <el-table-column label="规格" align="center" prop="spec" width="160"/>-->
<el-table-column label="库存状态" align="center" prop="stockStatus" >
<template slot-scope="scope">
<dict-tag :options="dict.type.stock_status" :value="scope.row.stockStatus"/>
</template>
</el-table-column>
<el-table-column label="单重" align="center" prop="netWeight"/>
<el-table-column label="路线" align="center" prop="grossWeight" width="160" show-overflow-tooltip />
<el-table-column label="物料名称" align="center" prop="productName" width="160" show-overflow-tooltip />
<el-table-column label="数量" align="center" prop="quantity"/>
<!-- <el-table-column label="重量" align="center" prop="netWeight" width="160"/>-->
<!-- <el-table-column label="入库单号" align="center" prop="stockinId" width="160"/>-->
<el-table-column label="首次入库时间" align="center" prop="inDate" width="160"/>
<el-table-column label="最后出库时间" align="center" prop="stackingId" width="160"/>
<!-- <el-table-column label="盘点标识" align="center" prop="spare7">
<template slot-scope="scope">
<dict-tag :options="dict.type.check_flag" :value="scope.row.spare7"/>
</template>
</el-table-column>-->
<!-- <el-table-column label="盘点时间" align="center" prop="backDate" width="160"/>-->
<el-table-column label="备注" align="center" prop="remark"/>
<el-table-column width=120 label="操作" align="center" class-name="small-padding fixed-width"> <!-- 操作 -->
<!-- <el-table-column width=120 label="操作" align="center" class-name="small-padding fixed-width"> &lt;!&ndash; 操作 &ndash;&gt;
<template slot-scope="scope">
<el-button
size="mini"
@@ -230,16 +214,16 @@
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['stock:management:edit']"
>修改 <!-- 修改 --></el-button>
>修改 &lt;!&ndash; 修改 &ndash;&gt;</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['stock:management:remove']"
>删除 <!-- 删除 --></el-button>
>删除 &lt;!&ndash; 删除 &ndash;&gt;</el-button>
</template>
</el-table-column>
</el-table-column>-->
</el-table>
<pagination