Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dev
zhangsiqi 4 months ago
parent
commit
b5ea7629db
  1. 2
      ruoyi-admin/src/main/java/com/ruoyi/erp/service/impl/ErpInboundOrderServiceImpl.java
  2. 31
      ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityOrderController.java
  3. 5
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityOrderService.java
  4. 15
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityOrderServiceImpl.java
  5. 14
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java
  6. 5
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java
  7. 81
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java
  8. 22
      ruoyi-admin/src/main/resources/templates/quality/qualityOrder/makeInStartingQuality.html
  9. 207
      ruoyi-admin/src/main/resources/templates/quality/qualityOrder/makeInStartingQualityDetail.html
  10. 19
      ruoyi-admin/src/main/resources/templates/quality/qualityOrder/qualityOrder.html
  11. 110
      ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeIn.html
  12. 119
      ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeInDetail.html
  13. 4
      ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageOrder.html

2
ruoyi-admin/src/main/java/com/ruoyi/erp/service/impl/ErpInboundOrderServiceImpl.java

@ -215,7 +215,7 @@ public class ErpInboundOrderServiceImpl implements IErpInboundOrderService
qualityOrderDetail.setMaterialBrand(sysMakeorderBom.getBrand()); qualityOrderDetail.setMaterialBrand(sysMakeorderBom.getBrand());
qualityOrderDetail.setMaterialDescribe(sysMakeorderBom.getDescribe()); qualityOrderDetail.setMaterialDescribe(sysMakeorderBom.getDescribe());
qualityOrderDetail.setMaterialProcessMethod(sysMakeorderBom.getProcessMethod()); qualityOrderDetail.setMaterialProcessMethod(sysMakeorderBom.getProcessMethod());
qualityOrderDetail.setMaterialDeptType(sysMakeorderBom.getMaterialType()); qualityOrderDetail.setMaterialDeptType(sysMakeorderBom.getWarehouseDept());
qualityOrderDetail.setMaterialPhotourl(sysMakeorderBom.getPhotoUrl()); qualityOrderDetail.setMaterialPhotourl(sysMakeorderBom.getPhotoUrl());
qualityOrderDetail.setMaterialUnit(sysMakeorderBom.getUnit()); qualityOrderDetail.setMaterialUnit(sysMakeorderBom.getUnit());
qualityOrderDetail.setMaterialType(sysMakeorderBom.getMaterialType()); qualityOrderDetail.setMaterialType(sysMakeorderBom.getMaterialType());

31
ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityOrderController.java

@ -168,7 +168,7 @@ public class QualityOrderController extends BaseController
@ResponseBody @ResponseBody
public AjaxResult startingQualityDetailSave(QualityOrder qualityOrder) public AjaxResult startingQualityDetailSave(QualityOrder qualityOrder)
{ {
return toAjax(qualityOrderService.updateQualityOrder(qualityOrder)); return toAjax(qualityOrderService.qualityOrderDetailSave(qualityOrder));
} }
@ -206,7 +206,6 @@ public class QualityOrderController extends BaseController
/** /**
* 修改保存品质报告按钮 * 修改保存品质报告按钮
*/ */
@RequiresPermissions("quality:qualityOrder:qualityReport")
@Log(title = "品质管理品质单", businessType = BusinessType.UPDATE) @Log(title = "品质管理品质单", businessType = BusinessType.UPDATE)
@PostMapping("/qualityReport") @PostMapping("/qualityReport")
@ResponseBody @ResponseBody
@ -240,12 +239,37 @@ public class QualityOrderController extends BaseController
} }
/**
* 委内加工品质单开始品质列表详情接口
*/
@GetMapping("/makeInStartingQualityDetail/{qualityOrderId}")
public String makeInStartingQualityDetail(@PathVariable("qualityOrderId") Long qualityOrderId, ModelMap mmap)
{
QualityOrder qualityOrder = qualityOrderService.selectQualityOrderById(qualityOrderId);
mmap.put("qualityOrder", qualityOrder);
return prefix + "/makeInStartingQualityDetail";
}
/**
* 修改保存委内加工品质单开始品质详情
*/
@RequiresPermissions("quality:qualityOrder:makeInStartingQualityDetail")
@Log(title = "品质管理品质单", businessType = BusinessType.UPDATE)
@PostMapping("/makeInStartingQualityDetail")
@ResponseBody
public AjaxResult makeInStartingQualityDetailSave(QualityOrder qualityOrder)
{
return toAjax(qualityOrderService.qualityOrderDetailSave(qualityOrder));
}
/** /**
* 委内加工品质单开始品质 物料相关信息 * 委内加工品质单开始品质 物料相关信息
*/ */
@PostMapping("/getMaterialListByQualityOrderCode") @PostMapping("/getMaterialListByQualityOrderCode")
@ResponseBody @ResponseBody
public TableDataInfo getMaterialListByOutOrderCode(QualityOrder qualityOrder) public TableDataInfo getMaterialListByQualityOrderCode(QualityOrder qualityOrder)
{ {
startPage(); startPage();
List<QualityOrderDetail> list = qualityOrderService.getMaterialListByQualityOrderCode(qualityOrder); List<QualityOrderDetail> list = qualityOrderService.getMaterialListByQualityOrderCode(qualityOrder);
@ -270,7 +294,6 @@ public class QualityOrderController extends BaseController
/** /**
* 修改保存委内加工入库单品质报告按钮 * 修改保存委内加工入库单品质报告按钮
*/ */
@RequiresPermissions("quality:qualityOrder:makeInOrderReport")
@Log(title = "品质管理品质单", businessType = BusinessType.UPDATE) @Log(title = "品质管理品质单", businessType = BusinessType.UPDATE)
@PostMapping("/makeInOrderReport") @PostMapping("/makeInOrderReport")
@ResponseBody @ResponseBody

5
ruoyi-admin/src/main/java/com/ruoyi/quality/service/IQualityOrderService.java

@ -91,4 +91,9 @@ public interface IQualityOrderService
* 查询委内加工品质单开始品质 物料相关信息 * 查询委内加工品质单开始品质 物料相关信息
*/ */
List<QualityOrderDetail> getMaterialListByQualityOrderCode(QualityOrder qualityOrder); List<QualityOrderDetail> getMaterialListByQualityOrderCode(QualityOrder qualityOrder);
/*
* 品质单详情通用保存方法
* */
int qualityOrderDetailSave(QualityOrder qualityOrder);
} }

15
ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityOrderServiceImpl.java

@ -110,7 +110,7 @@ public class QualityOrderServiceImpl implements IQualityOrderService
String loginName = ShiroUtils.getLoginName(); String loginName = ShiroUtils.getLoginName();
qualityOrder.setUpdateBy(loginName); qualityOrder.setUpdateBy(loginName);
qualityOrder.setUpdateTime(new Date()); qualityOrder.setUpdateTime(new Date());
qualityOrder.setQualityEmployee(loginName);
List<QualityOrderDetail> qualityOrderDetailList = qualityOrder.getQualityOrderDetailList(); List<QualityOrderDetail> qualityOrderDetailList = qualityOrder.getQualityOrderDetailList();
if (CollectionUtils.isEmpty(qualityOrderDetailList)){ if (CollectionUtils.isEmpty(qualityOrderDetailList)){
@ -319,6 +319,10 @@ public class QualityOrderServiceImpl implements IQualityOrderService
String loginName = ShiroUtils.getLoginName(); String loginName = ShiroUtils.getLoginName();
qualityOrder.setUpdateBy(loginName); qualityOrder.setUpdateBy(loginName);
qualityOrder.setUpdateTime(new Date()); qualityOrder.setUpdateTime(new Date());
qualityOrder.setQualityEmployee(loginName);
//生成入库单号
String warehouseStorageCode = redisCache.generateBillNo("RK");
qualityOrder.setInStorageCode(warehouseStorageCode);
List<QualityOrderDetail> qualityOrderDetailList = qualityOrder.getQualityOrderDetailList(); List<QualityOrderDetail> qualityOrderDetailList = qualityOrder.getQualityOrderDetailList();
@ -437,6 +441,15 @@ public class QualityOrderServiceImpl implements IQualityOrderService
return details; return details;
} }
/**
* 品质单详情通用保存方法
* */
@Override
public int qualityOrderDetailSave(QualityOrder qualityOrder) {
return 1;
}
//品质单不合格分类表 //品质单不合格分类表
private void insertQualityOrderUnqualifiedByWarehouseStorageOrder(WarehouseStorageOrderDetail warehouseStorageOrderDetail) { private void insertQualityOrderUnqualifiedByWarehouseStorageOrder(WarehouseStorageOrderDetail warehouseStorageOrderDetail) {
QualityOrderReportUnqualified qualityOrderReportUnqualified = new QualityOrderReportUnqualified(); QualityOrderReportUnqualified qualityOrderReportUnqualified = new QualityOrderReportUnqualified();

14
ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java

@ -4,6 +4,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail; import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail;
import com.ruoyi.warehouse.service.IWarehouseStorageOrderDetailService; import com.ruoyi.warehouse.service.IWarehouseStorageOrderDetailService;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
@ -564,7 +565,7 @@ public class WarehouseStorageOrderController extends BaseController
@ResponseBody @ResponseBody
public AjaxResult storageMakeInSave(@RequestBody WarehouseStorageOrder warehouseStorageOrder) public AjaxResult storageMakeInSave(@RequestBody WarehouseStorageOrder warehouseStorageOrder)
{ {
return toAjax(warehouseStorageOrderService.updateStorageMake(warehouseStorageOrder)); return toAjax(warehouseStorageOrderService.updateStorageMakeIn(warehouseStorageOrder));
} }
/** /**
@ -591,14 +592,15 @@ public class WarehouseStorageOrderController extends BaseController
} }
/** /**
* 入库-生产订单(委内入库) 客户物料详情列表 * 入库-生产订单(委内入库) 物料详情列表
*/ */
@ResponseBody @ResponseBody
@RequestMapping("/storageMakeInDetailList") @RequestMapping("/storageMakeInDetailList")
public Map<String,List<WarehouseStorageOrderDetail>> storageMakeInDetail(String warehouseStorageCode){ public TableDataInfo storageMakeInDetailList(WarehouseStorageOrder warehouseStorageOrder){
List<WarehouseStorageOrderDetail> allDetails = storageOrderDetailService.selectStorageOrderDetailListByCode(warehouseStorageCode); startPage();
Map<String, List<WarehouseStorageOrderDetail>> groupedDetails = allDetails.stream().collect(Collectors.groupingBy(WarehouseStorageOrderDetail::getCustomerId)); String warehouseStorageCode = warehouseStorageOrder.getWarehouseStorageCode();
return groupedDetails; List<WarehouseStorageOrderDetail> list = storageOrderDetailService.selectStorageOrderDetailListByCode(warehouseStorageCode);
return getDataTable(list) ;
} }

5
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java

@ -113,4 +113,9 @@ public interface IWarehouseStorageOrderService
* 通过委内加工入库单品质后生成入库单 * 通过委内加工入库单品质后生成入库单
* */ * */
int insertWarehouseStorageOrderByMakeInQualityOrder(QualityOrder tempQualityOrder, List<QualityOrderDetail> qualityOrderDetailList); int insertWarehouseStorageOrderByMakeInQualityOrder(QualityOrder tempQualityOrder, List<QualityOrderDetail> qualityOrderDetailList);
/*
* 修改保存入库-生产订单(委内入库)
* */
int updateStorageMakeIn(WarehouseStorageOrder warehouseStorageOrder);
} }

81
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java

@ -403,6 +403,8 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
String warehouseStorageCode = redisCache.generateBillNo("RK"); String warehouseStorageCode = redisCache.generateBillNo("RK");
warehouseStorageOrder.setWarehouseStorageCode(warehouseStorageCode); warehouseStorageOrder.setWarehouseStorageCode(warehouseStorageCode);
warehouseStorageOrder.setRelatedOrderCode(tempQualityOrder.getRelatedOrderCode()); warehouseStorageOrder.setRelatedOrderCode(tempQualityOrder.getRelatedOrderCode());
//暂收设置为全部品质
warehouseStorageOrder.setWarehouseQualityStatus("2");
warehouseStorageOrder.setWarehouseStorageStatus("2"); warehouseStorageOrder.setWarehouseStorageStatus("2");
warehouseStorageOrder.setWarehouseStorageType("2"); warehouseStorageOrder.setWarehouseStorageType("2");
warehouseStorageOrder.setWarehouseOrderType("1"); warehouseStorageOrder.setWarehouseOrderType("1");
@ -418,9 +420,12 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
WarehouseStorageOrderDetail warehouseStorageOrderDetail = new WarehouseStorageOrderDetail(); WarehouseStorageOrderDetail warehouseStorageOrderDetail = new WarehouseStorageOrderDetail();
warehouseStorageOrderDetail.setWarehouseStorageCode(warehouseStorageCode); warehouseStorageOrderDetail.setWarehouseStorageCode(warehouseStorageCode);
warehouseStorageOrderDetail.setRelatedOrderCode(tempQualityOrder.getRelatedOrderCode()); warehouseStorageOrderDetail.setRelatedOrderCode(tempQualityOrder.getRelatedOrderCode());
warehouseStorageOrderDetail.setWarehouseOrderType("2"); warehouseStorageOrderDetail.setWarehouseQualityStatus("2");
warehouseStorageOrderDetail.setWarehouseStorageStatus("2");
warehouseStorageOrderDetail.setWarehouseStorageType("2"); warehouseStorageOrderDetail.setWarehouseStorageType("2");
warehouseStorageOrderDetail.setWarehouseOrderType("1"); warehouseStorageOrderDetail.setWarehouseOrderType("1");
//当作委内入库数
warehouseStorageOrderDetail.setMakeStorageNum(qualityOrderDetail.getMakeInNum());
warehouseStorageOrderDetail.setMaterialNo(qualityOrderDetail.getMaterialNo()); warehouseStorageOrderDetail.setMaterialNo(qualityOrderDetail.getMaterialNo());
warehouseStorageOrderDetail.setMaterialName(qualityOrderDetail.getMaterialName()); warehouseStorageOrderDetail.setMaterialName(qualityOrderDetail.getMaterialName());
warehouseStorageOrderDetail.setMaterialBrand(qualityOrderDetail.getMaterialBrand()); warehouseStorageOrderDetail.setMaterialBrand(qualityOrderDetail.getMaterialBrand());
@ -437,6 +442,80 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
return warehouseStorageOrderMapper.insertWarehouseStorageOrder(warehouseStorageOrder); return warehouseStorageOrderMapper.insertWarehouseStorageOrder(warehouseStorageOrder);
} }
/*
* 修改保存入库-生产订单(委内入库)
* */
@Transactional(rollbackFor = Exception.class)
@Override
public int updateStorageMakeIn(WarehouseStorageOrder warehouseStorageOrder) {
String loginName = ShiroUtils.getLoginName();
//假设全部入库
warehouseStorageOrder.setWarehouseStorageStatus("4");
warehouseStorageOrder.setUpdateBy(loginName);
warehouseStorageOrder.setUpdateTime(new Date());
//记录一下入库时间
warehouseStorageOrder.setStorageTime(new Date());
String warehouseCode = warehouseStorageOrder.getWarehouseCode();
String warehouseName = warehouseStorageOrder.getWarehouseName();
if (StringUtils.isNotEmpty(warehouseCode)){
warehouseStorageOrder.setWarehouseCode(warehouseCode);
}
if (StringUtils.isNotEmpty(warehouseName)){
warehouseStorageOrder.setWarehouseName(warehouseName);
}
List<WarehouseStorageOrderDetail> warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList();
if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){
log.warn("入库单详情数据为空:{}",warehouseStorageOrderDetailList);
throw new BusinessException("入库单详情数据为空");
}
//入库数
Integer storageNum = 0;
// 检查storageNum是否含有null值
boolean hasThisStorageNumNull = warehouseStorageOrderDetailList.stream()
.anyMatch(item -> item.getStorageNum() == null);
if (hasThisStorageNumNull) {
throw new BusinessException("存在入库数为空,请检查!");
}
// 计算各个字段的总和
storageNum = warehouseStorageOrderDetailList.stream()
.mapToInt(WarehouseStorageOrderDetail::getStorageNum)
.sum();
//插入主表入库数量
warehouseStorageOrder.setStorageNum(storageNum);
// //更新生产单数据
// int updateMakeOrderResult = sysMakeOrderService.updateSysMakeOrderByWarehouseStorageOrder(warehouseStorageOrder, warehouseStorageOrderDetailList);
// if (updateMakeOrderResult <= 0){
// throw new BusinessException("更新生产订单失败,未影响任何行");
// }
for (WarehouseStorageOrderDetail warehouseStorageOrderDetail : warehouseStorageOrderDetailList) {
//更新入库单详情的数据
warehouseStorageOrderDetail.setUpdateBy(loginName);
warehouseStorageOrderDetail.setUpdateTime(new Date());
//更新已入库数
warehouseStorageOrderDetail.setHasStorageNum(warehouseStorageOrderDetail.getStorageNum());
int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(warehouseStorageOrderDetail);
if (updateWarehouseStorageOrderDetailResult <= 0){
throw new BusinessException("更新仓库入库单详情失败,未影响任何行");
}
}
//更新入库单的数据
int updateResult = warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder);
if (updateResult <= 0){
log.warn("更新入库单失败,未影响任何行");
}
return updateResult;
}
/** /**
* 修改保存暂收-采购单(采购入库) 子表数据 * 修改保存暂收-采购单(采购入库) 子表数据
* */ * */

22
ruoyi-admin/src/main/resources/templates/quality/qualityOrder/makeInStartingQuality.html

@ -51,18 +51,6 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">仓库Id:</label>
<div class="col-sm-8">
<input name="warehouseCode" th:field="*{warehouseCode}" class="form-control" type="text">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">仓库名称:</label>
<div class="col-sm-8">
<input name="warehouseName" th:field="*{warehouseName}" class="form-control" type="text">
</div>
</div>
</form> </form>
<!--物料信息--> <!--物料信息-->
<div class="container"> <div class="container">
@ -83,10 +71,18 @@
var qualityOrderCode = [[${qualityOrder.qualityOrderCode}]] var qualityOrderCode = [[${qualityOrder.qualityOrderCode}]]
var qualityOrder = [[${qualityOrder}]] var qualityOrder = [[${qualityOrder}]]
var prefix = ctx + "quality/qualityOrder"; var prefix = ctx + "quality/qualityOrder";
$("#form-qualityOrder-edit").validate({ $("#form-makeInStartingQuality-edit").validate({
focusCleanup: true focusCleanup: true
}); });
$("input[name='deliveryInspectionTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
// 新增提交 // 新增提交
function submitHandler() { function submitHandler() {
// 获取表单数据 // 获取表单数据

207
ruoyi-admin/src/main/resources/templates/quality/qualityOrder/makeInStartingQualityDetail.html

@ -0,0 +1,207 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('委内加工单品质')" />
<th:block th:include="include :: datetimepicker-css" />
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-makeInStartingQualityDetail-edit" th:object="${qualityOrder}">
<input name="qualityOrderId" th:field="*{qualityOrderId}" type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">品质单号:</label>
<div class="col-sm-8">
<input name="qualityOrderCode" th:field="*{qualityOrderCode}" class="form-control" type="text" disabled>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">入库单号:</label>
<div class="col-sm-8">
<input name="inStorageCode" th:field="*{inStorageCode}" class="form-control" type="text" disabled>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">关联订单号:</label>
<div class="col-sm-8">
<input name="relatedOrderCode" th:field="*{relatedOrderCode}" class="form-control" type="text" disabled>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">品质单订单类型:</label>
<div class="col-sm-8">
<select name="qualityOrderType" class="form-control m-b" th:with="type=${@dict.getType('quality_order_type')}" disabled>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{qualityOrderType}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">品质单入库类型:</label>
<div class="col-sm-8">
<select name="qualityStorageStatus" class="form-control m-b" th:with="type=${@dict.getType('quality_storage_status')}" disabled>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{qualityStorageStatus}"></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">交付质检时间:</label>
<div class="col-sm-8">
<div class="input-group date">
<input name="deliveryInspectionTime" th:value="${#dates.format(qualityOrder.deliveryInspectionTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text" disabled>
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
</div>
</div>
</div>
</form>
<!--物料信息-->
<div class="container">
<div class="row">
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" />
<!--用于可以修改列表字段的插件-->
<th:block th:include="include :: bootstrap-table-editable-js" />
<script th:inline="javascript">
var qualityOrderCode = [[${qualityOrder.qualityOrderCode}]]
var qualityOrder = [[${qualityOrder}]]
var prefix = ctx + "quality/qualityOrder";
$("#form-makeInStartingQualityDetail-edit").validate({
focusCleanup: true
});
$("input[name='deliveryInspectionTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
// 新增提交
function submitHandler() {
// 获取表单数据
const qualityOrderData = $("#form-makeInStartingQualityDetail-edit").serializeArray().reduce((obj, item) => {
obj[item.name] = item.value;
return obj;
}, {});
// 获取bootstrap-table的数据,这里假设你使用bootstrap-table的API获取所有数据
var table = $('#bootstrap-table').bootstrapTable('getData');
// 将表数据转换成与complaintNoticeData格式一致的数组
var materialDataList = table.map(function(item) {
// 根据实际字段名调整
return {
"qualityOrderDetailId": item.qualityOrderDetailId,
"materialNo": item.materialNo,
"thisArrivedNum": item.thisArrivedNum,
"qualityQualifiedNum": item.qualityQualifiedNum,
"qualityUnqualifiedNum": item.qualityUnqualifiedNum
// ...其他字段
};
});
const combinedData = Object.assign({}, qualityOrderData, {
qualityOrderDetailList: materialDataList,
});
// 合并表单数据和表格数据
console.log(combinedData)
// 使用 JSON.stringify() 序列化数据
const jsonData = JSON.stringify(combinedData);
// 发送 AJAX 请求到后端接口
$.operate.saveJson(prefix + "/makeInStartingQualityDetail", jsonData);
}
//物料信息展示列表
$(function() {
var options = {
modalName: "选择物料",
url: prefix + "/getMaterialListByQualityOrderCode",
queryParams: queryParams,
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
pagination: false, // 设置不分页
columns: [{
checkbox: true
},
{
title: '品质单详情ID',
field: 'qualityOrderDetailId',
visible: false
},
{
title: '料号',
field: 'materialNo'
},
{
title: '物料名称',
field: 'materialName'
},
{
title: '物料类型',
field: 'materialType',
},
{
title: '物料图片地址',
field: 'materialPhotourl',
},
{
title: '物料描述',
field: 'materialDescribe',
},
{
title: '物料品牌',
field: 'materialBrand',
},
{
title: '物料单位',
field: 'materialUnit',
},
{
title: '物料加工方式',
field: 'materialProcessMethod',
},
{
title: '委内已完成数',
field: 'makeInNum',
},
{
title: '品质已合格数',
field: 'qualityHasqualifiedNum',
},
{
title: '本次到货数',
field: 'thisArrivedNum',
},
{
title: '品质合格数',
field: 'qualityQualifiedNum',
},
{
title: '品质不合格数',
field: 'qualityUnqualifiedNum',
}]
};
$.table.init(options);
})
function queryParams(params) {
var curParams = {
// 传递参数查询参数
qualityOrderCode: qualityOrderCode
};
console.log(curParams);
return curParams;
}
</script>
</body>
</html>

19
ruoyi-admin/src/main/resources/templates/quality/qualityOrder/qualityOrder.html

@ -58,6 +58,8 @@
var detailFlag = [[${@permission.hasPermi('quality:qualityOrder:detail')}]]; var detailFlag = [[${@permission.hasPermi('quality:qualityOrder:detail')}]];
var qualityFlag = [[${@permission.hasPermi('quality:qualityOrder:startingQuality')}]]; var qualityFlag = [[${@permission.hasPermi('quality:qualityOrder:startingQuality')}]];
var makeInStartingQualityFlag = [[${@permission.hasPermi('quality:qualityOrder:makeInStartingQuality')}]]; var makeInStartingQualityFlag = [[${@permission.hasPermi('quality:qualityOrder:makeInStartingQuality')}]];
var makeInStartingQualityDetailFlag = [[${@permission.hasPermi('quality:qualityOrder:makeInStartingQualityDetail')}]];
var qualityStatusDatas = [[${@dict.getType('qualityStatus')}]]; var qualityStatusDatas = [[${@dict.getType('qualityStatus')}]];
var qualityOrderTypeDatas = [[${@dict.getType('quality_order_type')}]]; var qualityOrderTypeDatas = [[${@dict.getType('quality_order_type')}]];
@ -157,16 +159,23 @@
align: 'center', align: 'center',
formatter: function(value, row, index) { formatter: function(value, row, index) {
var actions = []; var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.qualityOrderId + '\')"><i class="fa fa-edit"></i>详情</a> ');
//采购订单品质 //采购订单品质
if (row.qualityStatus != 2 && row.qualityStorageStatus == 0 ){ if (row.qualityStatus != 2 && row.qualityStorageStatus == 0 ){
actions.push('<a class="btn btn-success btn-xs ' + qualityFlag + '" href="javascript:void(0)" onclick="startingQuality(\'' + row.qualityOrderId + '\')"><i class="fa fa-edit"></i>品质</a> '); actions.push('<a class="btn btn-success btn-xs ' + qualityFlag + '" href="javascript:void(0)" onclick="startingQuality(\'' + row.qualityOrderId + '\')"><i class="fa fa-edit"></i>品质</a> ');
} }
//采购订单品质详情
if (row.qualityStorageStatus == 0 ){
actions.push('<a class="btn btn-success btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.qualityOrderId + '\')"><i class="fa fa-edit"></i>详情</a> ');
}
//委内入库品质 //委内入库品质
if (row.qualityStatus != 2 && row.qualityStorageStatus == 1 ){ if (row.qualityStatus != 2 && row.qualityStorageStatus == 1 ){
actions.push('<a class="btn btn-success btn-xs ' + makeInStartingQualityFlag + '" href="javascript:void(0)" onclick="makeInStartingQuality(\'' + row.qualityOrderId + '\')"><i class="fa fa-edit"></i>品质</a> '); actions.push('<a class="btn btn-success btn-xs ' + makeInStartingQualityFlag + '" href="javascript:void(0)" onclick="makeInStartingQuality(\'' + row.qualityOrderId + '\')"><i class="fa fa-edit"></i>品质</a> ');
} }
//委内入库品质详情
if (row.qualityStorageStatus == 1 ){
actions.push('<a class="btn btn-success btn-xs ' + makeInStartingQualityDetailFlag + '" href="javascript:void(0)" onclick="makeInStartingQualityDetail(\'' + row.qualityOrderId + '\')"><i class="fa fa-edit"></i>详情</a> ');
}
return actions.join(''); return actions.join('');
} }
}] }]
@ -193,6 +202,12 @@
$.modal.open("进行品质",url) $.modal.open("进行品质",url)
} }
//委内加工单品质详情
function makeInStartingQualityDetail(qualityOrderId){
var url = ctx +'quality/qualityOrder/makeInStartingQualityDetail/' + qualityOrderId;
$.modal.open("进行品质详情",url)
}
</script> </script>
</body> </body>
</html> </html>

110
ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeIn.html

@ -13,7 +13,7 @@
</head> </head>
<body class="white-bg"> <body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> <div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-temporaryPurchaseWarehouse-edit" th:object="${warehouseStorageOrder}"> <form class="form-horizontal m" id="form-storageMakeIn-edit" th:object="${warehouseStorageOrder}">
<input name="warehouseStorageId" th:field="*{warehouseStorageId}" type="hidden"> <input name="warehouseStorageId" th:field="*{warehouseStorageId}" type="hidden">
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">入库单号:</label> <label class="col-sm-3 control-label">入库单号:</label>
@ -74,11 +74,11 @@
</div> </div>
</div> </div>
<!--物料信息-->
<div class="container"> <div class="container">
<!--客户物料相关-->
<div class="row"> <div class="row">
<div class="col-sm-12" id="tablesContainer"> <div class="col-sm-12 select-table table-striped">
<!-- 表格将在这里动态生成 --> <table id="bootstrap-table"></table>
</div> </div>
</div> </div>
</div> </div>
@ -92,29 +92,26 @@
var warehouseStorageCode = [[${warehouseStorageOrder.warehouseStorageCode}]] var warehouseStorageCode = [[${warehouseStorageOrder.warehouseStorageCode}]]
var warehouseCode = [[${warehouseStorageOrder.warehouseCode}]] var warehouseCode = [[${warehouseStorageOrder.warehouseCode}]]
var prefix = ctx + "warehouse/storageOrder"; var prefix = ctx + "warehouse/storageOrder";
$("#form-temporaryPurchaseWarehouse-edit").validate({ $("#form-storageMakeIn-edit").validate({
focusCleanup: true focusCleanup: true
}); });
//生成的不同table的id集合
var tableDatas = [];
// 新增提交
function submitHandler() { function submitHandler() {
const storageOrderData = $("#form-temporaryPurchaseWarehouse-edit").serializeArray().reduce((obj, item) => { // 获取表单数据
const storageMakeInData = $("#form-storageMakeIn-edit").serializeArray().reduce((obj, item) => {
obj[item.name] = item.value; obj[item.name] = item.value;
return obj; return obj;
}, {}); }, {});
// 初始化一个数组用于存放所有表格的数据 // 获取bootstrap-table的数据,这里假设你使用bootstrap-table的API获取所有数据
let allMaterialDataList = []; var table = $('#bootstrap-table').bootstrapTable('getData');
for(let i in tableDatas){
$('#' + tableDatas[i]).each(function() { // 将表数据转换成与complaintNoticeData格式一致的数组
const tableData = $(this).bootstrapTable('getData'); var materialDataList = table.map(function(item) {
console.log(JSON.stringify(tableData));
// 将表数据转换成与qualityReportData格式一致的数组
var materialDataList = tableData.map(function (item) {
// 根据实际字段名调整 // 根据实际字段名调整
return { return {
"customerId": item.customerId, "warehouseStorageDetailId":item.warehouseStorageDetailId,
"materialNo": item.materialNo, "materialNo": item.materialNo,
"materialName": item.materialName, "materialName": item.materialName,
"materialType": item.materialType, "materialType": item.materialType,
@ -131,22 +128,21 @@
// ...其他字段 // ...其他字段
}; };
}); });
allMaterialDataList = allMaterialDataList.concat(materialDataList);
});
}
const combinedData = Object.assign({}, storageOrderData, { const combinedData = Object.assign({}, storageMakeInData, {
warehouseStorageOrderDetailList: allMaterialDataList warehouseStorageOrderDetailList: materialDataList,
}); });
// 合并表单数据和表格数据 // 合并表单数据和表格数据
// const combinedData = Object.assign({}, ...complaintNoticeData.array(item => ({ [item.name]: item.value })), ...materialData);
console.log(combinedData) console.log(combinedData)
// 使用 JSON.stringify() 序列化数据 // 使用 JSON.stringify() 序列化数据
const jsonData = JSON.stringify(combinedData); const jsonData = JSON.stringify(combinedData);
// 发送 AJAX 请求到后端接口 // 发送 AJAX 请求到后端接口
$.operate.saveJson(prefix + "/storageMake", jsonData); $.operate.saveJson(prefix + "/storageMakeIn", jsonData);
} }
$("input[name='arrivedTime']").datetimepicker({ $("input[name='arrivedTime']").datetimepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
minView: "month", minView: "month",
@ -159,44 +155,24 @@
autoclose: true autoclose: true
}); });
$(function() {
// 假设qualityOrderCode已经定义或者可以通过某种方式获取到
var warehouseStorageCode = [[${warehouseStorageOrder.warehouseStorageCode}]]; // 这里需要实际赋值,比如从前端某个地方读取
$.getJSON(prefix + "/storageMakeInDetailList?warehouseStorageCode=" + warehouseStorageCode, function(data) {
for (var customerId in data) {
if (data.hasOwnProperty(customerId)) {
var customerData = data[customerId];
createTableForCustomer(customerId, customerData);
}
}
});
});
function createTableForCustomer(customerId, customerData) {
var tableId = 'bootstrap-table-' + customerId.replace(/[^a-z0-9]/gi, '_').toLowerCase();
tableDatas.push(tableId);
var $tableWrapper = $('<div class="table-responsive mt-3"></div>');
// 确保customerData至少有一条记录,并从中提取客户详细信息
var customerInfo = customerData.length > 0 ? customerData[0] : {}; // 默认为空对象,以防数据不存在
// 构建含有额外客户信息的标题字符串
var headerTitle ='客户'+'</br>'+customerId + ' - ' + (customerInfo.customerName || 'N/A') +
' </br> ' + (customerInfo.customerContactPeople || 'N/A') +
' - ' + (customerInfo.customerContactNumber || 'N/A') +
' - ' + (customerInfo.customerCompanyAddress || 'N/A');
var $header = $('<h4>' + headerTitle + '</h4>'); //物料信息展示列表
var $table = $('<table id="' + tableId + '" class="table table-striped table-bordered"></table>'); $(function() {
var options = {
$table.bootstrapTable({ modalName: "选择物料",
data: customerData, url: prefix + "/storageMakeInDetailList",
queryParams: queryParams,
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
pagination: false, // 设置不分页
columns: [{ columns: [{
checkbox: true checkbox: true
}, },
{ {
title: '客户ID', title: '入库单详情Id',
field: 'customerId', field: 'warehouseStorageDetailId',
visible: false visible: false
}, },
{ {
@ -230,10 +206,6 @@
title: '物料加工方式', title: '物料加工方式',
field: 'materialProcessMethod', field: 'materialProcessMethod',
}, },
{
title: '订单数',
field: 'makeTotal',
},
{ {
title: '品质已合格数', title: '品质已合格数',
field: 'qualityHasQualifiedNum', field: 'qualityHasQualifiedNum',
@ -243,7 +215,7 @@
field: 'hasStorageNum', field: 'hasStorageNum',
}, },
{ {
title: '生产入库数', title: '委内入库数',
field: 'makeStorageNum', field: 'makeStorageNum',
}, },
{ {
@ -265,14 +237,20 @@
field: 'storageLocation', field: 'storageLocation',
editable: true editable: true
}] }]
}); };
$.table.init(options);
})
$tableWrapper.append($header).append($table); function queryParams(params) {
$('#tablesContainer').append($tableWrapper); var curParams = {
// 传递参数查询参数
warehouseStorageCode: warehouseStorageCode
};
console.log(curParams);
return curParams;
} }
//根据仓库ID查询仓库名称 //根据仓库ID查询仓库名称
$(document).ready(function() { $(document).ready(function() {
// 初始化时默认加载仓库ID列表 // 初始化时默认加载仓库ID列表

119
ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageMakeInDetail.html

@ -13,7 +13,7 @@
</head> </head>
<body class="white-bg"> <body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> <div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-temporaryPurchaseWarehouse-edit" th:object="${warehouseStorageOrder}"> <form class="form-horizontal m" id="form-storageMakeInDetail-edit" th:object="${warehouseStorageOrder}">
<input name="warehouseStorageId" th:field="*{warehouseStorageId}" type="hidden"> <input name="warehouseStorageId" th:field="*{warehouseStorageId}" type="hidden">
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">入库单号:</label> <label class="col-sm-3 control-label">入库单号:</label>
@ -74,11 +74,11 @@
</div> </div>
</div> </div>
<!--物料信息-->
<div class="container"> <div class="container">
<!--客户物料相关-->
<div class="row"> <div class="row">
<div class="col-sm-12" id="tablesContainer"> <div class="col-sm-12 select-table table-striped">
<!-- 表格将在这里动态生成 --> <table id="bootstrap-table"></table>
</div> </div>
</div> </div>
</div> </div>
@ -92,29 +92,24 @@
var warehouseStorageCode = [[${warehouseStorageOrder.warehouseStorageCode}]] var warehouseStorageCode = [[${warehouseStorageOrder.warehouseStorageCode}]]
var warehouseCode = [[${warehouseStorageOrder.warehouseCode}]] var warehouseCode = [[${warehouseStorageOrder.warehouseCode}]]
var prefix = ctx + "warehouse/storageOrder"; var prefix = ctx + "warehouse/storageOrder";
$("#form-temporaryPurchaseWarehouse-edit").validate({ $("#form-storageMakeInDetail-edit").validate({
focusCleanup: true focusCleanup: true
}); });
//生成的不同table的id集合 // 新增提交
var tableDatas = [];
function submitHandler() { function submitHandler() {
const storageOrderData = $("#form-temporaryPurchaseWarehouse-edit").serializeArray().reduce((obj, item) => { // 获取表单数据
const storageMakeInData = $("#form-storageMakeInDetail-edit").serializeArray().reduce((obj, item) => {
obj[item.name] = item.value; obj[item.name] = item.value;
return obj; return obj;
}, {}); }, {});
// 初始化一个数组用于存放所有表格的数据 // 获取bootstrap-table的数据,这里假设你使用bootstrap-table的API获取所有数据
let allMaterialDataList = []; var table = $('#bootstrap-table').bootstrapTable('getData');
for(let i in tableDatas){
$('#' + tableDatas[i]).each(function() { // 将表数据转换成与complaintNoticeData格式一致的数组
const tableData = $(this).bootstrapTable('getData'); var materialDataList = table.map(function(item) {
console.log(JSON.stringify(tableData));
// 将表数据转换成与qualityReportData格式一致的数组
var materialDataList = tableData.map(function (item) {
// 根据实际字段名调整 // 根据实际字段名调整
return { return {
"customerId": item.customerId,
"materialNo": item.materialNo, "materialNo": item.materialNo,
"materialName": item.materialName, "materialName": item.materialName,
"materialType": item.materialType, "materialType": item.materialType,
@ -131,22 +126,19 @@
// ...其他字段 // ...其他字段
}; };
}); });
allMaterialDataList = allMaterialDataList.concat(materialDataList);
});
}
const combinedData = Object.assign({}, storageOrderData, { const combinedData = Object.assign({}, storageMakeInData, {
warehouseStorageOrderDetailList: allMaterialDataList warehouseStorageOrderDetailList: materialDataList,
}); });
// 合并表单数据和表格数据 // 合并表单数据和表格数据
// const combinedData = Object.assign({}, ...complaintNoticeData.array(item => ({ [item.name]: item.value })), ...materialData);
console.log(combinedData) console.log(combinedData)
// 使用 JSON.stringify() 序列化数据 // 使用 JSON.stringify() 序列化数据
const jsonData = JSON.stringify(combinedData); const jsonData = JSON.stringify(combinedData);
// 发送 AJAX 请求到后端接口 // 发送 AJAX 请求到后端接口
$.operate.saveJson(prefix + "/storageMake", jsonData); $.operate.saveJson(prefix + "/storageMakeInDetail", jsonData);
} }
$("input[name='arrivedTime']").datetimepicker({ $("input[name='arrivedTime']").datetimepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
minView: "month", minView: "month",
@ -159,45 +151,19 @@
autoclose: true autoclose: true
}); });
//物料信息展示列表
$(function() { $(function() {
// 假设qualityOrderCode已经定义或者可以通过某种方式获取到 var options = {
var warehouseStorageCode = [[${warehouseStorageOrder.warehouseStorageCode}]]; // 这里需要实际赋值,比如从前端某个地方读取 modalName: "选择物料",
url: prefix + "/storageMakeInDetailList",
$.getJSON(prefix + "/storageMakeInDetailList?warehouseStorageCode=" + warehouseStorageCode, function(data) { queryParams: queryParams,
for (var customerId in data) { showSearch: false,
if (data.hasOwnProperty(customerId)) { showRefresh: false,
var customerData = data[customerId]; showToggle: false,
createTableForCustomer(customerId, customerData); showColumns: false,
} pagination: false, // 设置不分页
}
});
});
function createTableForCustomer(customerId, customerData) {
var tableId = 'bootstrap-table-' + customerId.replace(/[^a-z0-9]/gi, '_').toLowerCase();
tableDatas.push(tableId);
var $tableWrapper = $('<div class="table-responsive mt-3"></div>');
// 确保customerData至少有一条记录,并从中提取客户详细信息
var customerInfo = customerData.length > 0 ? customerData[0] : {}; // 默认为空对象,以防数据不存在
// 构建含有额外客户信息的标题字符串
var headerTitle ='客户'+'</br>'+customerId + ' - ' + (customerInfo.customerName || 'N/A') +
' </br> ' + (customerInfo.customerContactPeople || 'N/A') +
' - ' + (customerInfo.customerContactNumber || 'N/A') +
' - ' + (customerInfo.customerCompanyAddress || 'N/A');
var $header = $('<h4>' + headerTitle + '</h4>');
var $table = $('<table id="' + tableId + '" class="table table-striped table-bordered"></table>');
$table.bootstrapTable({
data: customerData,
columns: [{ columns: [{
checkbox: true checkbox: true
},
{
title: '客户ID',
field: 'customerId',
visible: false
}, },
{ {
title: '料号', title: '料号',
@ -230,10 +196,6 @@
title: '物料加工方式', title: '物料加工方式',
field: 'materialProcessMethod', field: 'materialProcessMethod',
}, },
{
title: '订单数',
field: 'makeTotal',
},
{ {
title: '品质已合格数', title: '品质已合格数',
field: 'qualityHasQualifiedNum', field: 'qualityHasQualifiedNum',
@ -243,25 +205,42 @@
field: 'hasStorageNum', field: 'hasStorageNum',
}, },
{ {
title: '生产入库数', title: '委内入库数',
field: 'makeStorageNum', field: 'makeStorageNum',
}, },
{ {
title: '入库数', title: '入库数',
field: 'storageNum', field: 'storageNum',
editable:{
type: 'text',
mode:'inline',
validate: function (v) {
if (!v) return '数量不能为空';
if (isNaN(v)) return '数量必须是数字';
var processBadNum = parseInt(v);
if (processBadNum <= 0) return '数量必须是正整数';
}
}
}, },
{ {
title: '存放位置', title: '存放位置',
field: 'storageLocation', field: 'storageLocation',
editable: true
}] }]
}); };
$.table.init(options);
})
$tableWrapper.append($header).append($table); function queryParams(params) {
$('#tablesContainer').append($tableWrapper); var curParams = {
// 传递参数查询参数
warehouseStorageCode: warehouseStorageCode
};
console.log(curParams);
return curParams;
} }
//根据仓库ID查询仓库名称 //根据仓库ID查询仓库名称
$(document).ready(function() { $(document).ready(function() {
// 初始化时默认加载仓库ID列表 // 初始化时默认加载仓库ID列表

4
ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageOrder.html

@ -312,12 +312,12 @@
} }
/*入库-生产订单(委内入库)*/ /*入库-生产订单(委内入库)*/
if ( row.warehouseStorageType == 2 && row.warehouseDeptType == 1 && row.warehouseOrderType == 1 && (row.warehouseStorageStatus == 2 || row.warehouseStorageStatus == 3) ){ if ( row.warehouseStorageType == 2 && row.warehouseOrderType == 1 && (row.warehouseStorageStatus == 2 || row.warehouseStorageStatus == 3) ){
actions.push('<a class="btn btn-success btn-xs ' + storageMakeInFlag + '" href="javascript:void(0)" onclick="storageMakeIn(\'' + row.warehouseStorageId + '\')"><i class="fa fa-edit"></i>入库</a> '); actions.push('<a class="btn btn-success btn-xs ' + storageMakeInFlag + '" href="javascript:void(0)" onclick="storageMakeIn(\'' + row.warehouseStorageId + '\')"><i class="fa fa-edit"></i>入库</a> ');
} }
/*入库-生产订单(委内入库) 详情*/ /*入库-生产订单(委内入库) 详情*/
if ( row.warehouseStorageType == 2 && row.warehouseDeptType == 1 && row.warehouseOrderType == 1 && (row.warehouseStorageStatus == 2 || row.warehouseStorageStatus == 3 || row.warehouseStorageStatus == 4)){ if ( row.warehouseStorageType == 2 && row.warehouseOrderType == 1 && (row.warehouseStorageStatus == 2 || row.warehouseStorageStatus == 3 || row.warehouseStorageStatus == 4)){
actions.push('<a class="btn btn-success btn-xs ' + storageMakeInDetailFlag + '" href="javascript:void(0)" onclick="storageMakeInDetail(\'' + row.warehouseStorageId + '\')"><i class="fa fa-edit"></i>详情</a> '); actions.push('<a class="btn btn-success btn-xs ' + storageMakeInDetailFlag + '" href="javascript:void(0)" onclick="storageMakeInDetail(\'' + row.warehouseStorageId + '\')"><i class="fa fa-edit"></i>详情</a> ');
} }

Loading…
Cancel
Save