Browse Source

[feat] 售后管理

售后维护设备出库前端列表页面新增详情按钮
新增售后维护设备出库详情
售后单前端列表页面操作栏按钮按照统一样式调整
新增售后维护设备出库详情后端接口
新增修改保存售后维护设备出库详情后端接口
dev
liuxiaoxu 2 months ago
parent
commit
0c049d1667
  1. 37
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java
  2. 7
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java
  3. 9
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java
  4. 9
      ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/aftersalesOrder.html
  5. 6
      ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html
  6. 225
      ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/detail.html

37
ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java

@ -467,6 +467,43 @@ public String addShippingDevicesOne(@RequestParam("outOrderDetailId") Long outOr
return getDataTable(list); return getDataTable(list);
} }
/**
* 售后维护设备出库详情
*/
@GetMapping("/detail/{outOrderId}")
public String detail(@PathVariable("outOrderId") Long outOrderId, ModelMap mmap)
{
AftersalesOutOrder aftersalesOutOrder = aftersalesOutOrderService.selectAftersalesOutOrderById(outOrderId);
String outOrderCode = aftersalesOutOrder.getOutOrderCode();
SysSalesShippingInform sysSalesShippingInform = shippingInformService.selectSysSalesShippingInformByCode(outOrderCode);
List<SysSalesOrder> sysSalesOrders = new ArrayList<>();
String salesOrderCode = sysSalesShippingInform.getSalesOrderCode();
List<String> salesOrderCodes = new ArrayList<>();
if (StringUtils.isNotEmpty(salesOrderCode)){
String[] splitSalesOrderCode = salesOrderCode.split(",");
salesOrderCodes = Arrays.asList(splitSalesOrderCode);
}
sysSalesOrders = sysSalesOrderService.selectSysSalesOrderListByCodeList(salesOrderCodes);
mmap.put("sysSalesOrders", sysSalesOrders);
mmap.put("sysSalesShippingInform", sysSalesShippingInform);
return prefix + "/detail";
}
/**
* 修改保存售后维护设备出库详情
*/
@Log(title = "售后维护设备出库", businessType = BusinessType.UPDATE)
@PostMapping("/detail")
@ResponseBody
public AjaxResult detailSave(AftersalesOutOrder aftersalesOutOrder)
{
return toAjax(aftersalesOutOrderService.updateDetailAftersalesOutOrder(aftersalesOutOrder));
}
} }

7
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java

@ -151,4 +151,11 @@ public interface IAftersalesOutOrderService
* @return * @return
*/ */
List<ConfirmCheckDetailVo> aftersalesConfirmCheckDetailList(SysSalesShippingInform sysSalesShippingInform); List<ConfirmCheckDetailVo> aftersalesConfirmCheckDetailList(SysSalesShippingInform sysSalesShippingInform);
/**
* 售后维护设备出库详情保存
* @param aftersalesOutOrder
* @return
*/
int updateDetailAftersalesOutOrder(AftersalesOutOrder aftersalesOutOrder);
} }

9
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java

@ -1057,4 +1057,13 @@ public class AftersalesOutOrderServiceImpl implements IAftersalesOutOrderService
return confirmCheckDetailVos; return confirmCheckDetailVos;
} }
/**
* 售后维护设备出库详情保存
* */
@Override
public int updateDetailAftersalesOutOrder(AftersalesOutOrder aftersalesOutOrder) {
return 1;
}
} }

9
ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOrder/aftersalesOrder.html

@ -180,15 +180,16 @@
// 编辑 // 编辑
// actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i> 编辑</a> '); // actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i> 编辑</a> ');
if (row.aftersalesStatus == 0){ if (row.aftersalesStatus == 0){
actions.push('<a class="btn btn-success btn-xs ' + sendOrdersFlag + '" href="javascript:void(0)" onclick="sendOrders(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>派单</a> '); actions.push('<a class=" ' + sendOrdersFlag + '" href="javascript:void(0)" onclick="sendOrders(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>派单</a> ');
} }
if (row.aftersalesStatus == 1) { if (row.aftersalesStatus == 1) {
actions.push('<a class="btn btn-success btn-xs ' + uploadReportFlag + '" href="javascript:void(0)" onclick="uploadReport(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>上传报告</a> '); actions.push('<a class=" ' + uploadReportFlag + '" href="javascript:void(0)" onclick="uploadReport(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>上传报告</a> ');
} }
// 详情 // 详情
actions.push('<a class="btn btn-success btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>详情</a> '); actions.push('<a class=" ' + detailFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.aftersalesOrderId + '\')"><i class="fa fa-edit"></i>详情</a> ');
return actions.join(''); var actionLinks = actions.join('');
return $.table.dropdownToggle(actionLinks);
} }
} }

6
ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html

@ -201,6 +201,7 @@
if (row.warehouseOutStatus=="10" || row.warehouseOutStatus=="11"){ if (row.warehouseOutStatus=="10" || row.warehouseOutStatus=="11"){
actions.push('<a class="' + aftersalesConfirmCheckFlag + '" href="javascript:void(0)" onclick="aftersalesConfirmCheck(\'' + row.outOrderId + '\')"><i class="fa fa-edit"></i>确认验收</a> '); actions.push('<a class="' + aftersalesConfirmCheckFlag + '" href="javascript:void(0)" onclick="aftersalesConfirmCheck(\'' + row.outOrderId + '\')"><i class="fa fa-edit"></i>确认验收</a> ');
} }
actions.push('<a class="' + maintenanceEquipmentTwoFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.outOrderId + '\')"><i class="fa fa-edit"></i>详情</a> ');
var actionLinks = actions.join(''); var actionLinks = actions.join('');
return $.table.dropdownToggle(actionLinks); return $.table.dropdownToggle(actionLinks);
@ -232,6 +233,11 @@
$.modal.open("售后确认验收",url); $.modal.open("售后确认验收",url);
} }
//详情
function detail(outOrderId) {
var url = ctx + 'aftersales/aftersalesOutOrder/detail/'+outOrderId;
$.modal.open("售后出库单详情",url);
}
</script> </script>
</body> </body>

225
ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/detail.html

@ -0,0 +1,225 @@
<!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" />
<th:block th:include="include :: bootstrap-editable-css"/>
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-aftersalesOutOrder-detail" th:object="${sysSalesShippingInform}">
<div class="form-group">
<label class="col-sm-3 control-label">出库单号:</label>
<div class="col-sm-8">
<input name="outOrderCode" th:field="*{outOrderCode}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">出库类型:</label>
<div class="col-sm-8">
<select name="warehouseOutType" class="form-control m-b" th:with="type=${@dict.getType('warehouse_out_type')}" readonly>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{warehouseOutType}"></option>
</select>
</div>
</div>
<div th:each="order : ${sysSalesOrders}" class="col-sm-12" style="margin-left: -35px;">
<div class="col-sm-6">
<label class="col-sm-3 control-label">订单类型:</label>
<div class="col-sm-8">
<select name="salesOrderType" class="form-control m-b" readonly>
<option value="0" th:selected="${order.salesOrderType} == '0'">客户订单</option>
<option value="1" th:selected="${order.salesOrderType} == '1'">研发订单</option>
<option value="2" th:selected="${order.salesOrderType} == '2'">其他订单</option>
</select>
</div>
</div>
<div class="col-sm-6" >
<label class="col-sm-3 control-label">销售单号:</label>
<div class="col-sm-8">
<input name="salesOrderCode" th:value="${order.salesOrderCode}" class="form-control" type="text" readonly>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户ID:</label>
<div class="col-sm-8">
<input name="customerId" th:field="*{customerId}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">客户名称:</label>
<div class="col-sm-8">
<input name="customerName" th:field="*{customerName}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收货联系人(Ship To):</label>
<div class="col-sm-8">
<input name="customerContact" th:field="*{customerContact}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收货电话(Ship To):</label>
<div class="col-sm-8">
<input name="contactNumber" th:field="*{contactNumber}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收货地址(Ship To):</label>
<div class="col-sm-8">
<input name="customerContactAddress" th:field="*{customerContactAddress}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收货联系人(Bill To):</label>
<div class="col-sm-8">
<input name="customerContactBillto" th:field="*{customerContactBillto}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收货电话(Bill To):</label>
<div class="col-sm-8">
<input name="contactNumberBillto" th:field="*{contactNumberBillto}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收货地址(Bill To):</label>
<div class="col-sm-8">
<input name="contactAddressBillto" th:field="*{contactAddressBillto}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">备注:</label>
<div class="col-sm-8">
<input name="remark" th:field="*{remark}" class="form-control" type="text" readonly>
</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 sysSalesShippingInform = [[${sysSalesShippingInform}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var prefix = ctx + "aftersales/aftersalesOutOrder";
$("#form-aftersalesOutOrder-detail").validate({
focusCleanup: true
});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/detail", $('#form-aftersalesOutOrder-detail').serialize());
}
}
//物料信息展示列表
$(function() {
var options = {
modalName: "选择物料",
url: prefix + "/aftersalesConfirmCheckDetailList",
queryParams: queryParams,
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
pagination: false, // 设置不分页
columns: [{
checkbox: true
},
{
title: '销售出货通知单详情Id',
field: 'shippingInformDetailId',
visible: false
},
{
title: '料号',
field: 'materialNo',
},
{
title: '物料名称',
field: 'materialName',
},
{
title: '物料类型',
field: 'materialType',
formatter: function(value, row, index) {
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
},
{
title: '加工方式',
field: 'materialProcessMethod',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{
title: '型号',
field: 'materialModel',
},
{
title: '出货设备ID',
field: 'shippingDeviceId',
},
{
title: 'SN码',
field: 'snCode',
},
{
title: '本次出货数',
field: 'thisShippingNum',
},
{
title: '已出库数',
field: 'hasOutOrderNum',
},
{
title: '已收货数',
field: 'hasReceivingNum',
},
{
title: '已验收数',
field: 'hasCheckNum',
},
{
title: '本次验收数',
field: 'thisCheckNum',
},
]
};
$.table.init(options);
})
function queryParams(params) {
var curParams = {
// 传递参数查询参数
outOrderCode: sysSalesShippingInform.outOrderCode
};
return curParams;
}
</script>
</body>
</html>
Loading…
Cancel
Save