6 месяцев назад
Родитель
Сommit
7ac2d43dbe

+ 16 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/business/order/controller/VendorOrderController.java

@@ -2,6 +2,7 @@ package com.xingxi.web.controller.business.order.controller;
 
 import com.xingxi.business.Order.domain.OrderDeliveryExpr;
 import com.xingxi.business.Order.service.IOrderDeliveryExprService;
+import com.xingxi.business.Order.service.IOrderDeliveryService;
 import com.xingxi.common.annotation.Log;
 import com.xingxi.common.core.controller.BaseController;
 import com.xingxi.common.core.domain.AjaxResult;
@@ -21,6 +22,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -41,6 +43,8 @@ public class VendorOrderController extends BaseController {
     @Resource
     private IOrderDetailVoService orderDetailVoService;
     @Resource
+    private IOrderDeliveryService orderDeliveryService;
+    @Resource
     private IOrderDeliveryExprService orderDeliveryExprService;
     @Resource
     private IOrderDeliveryExprVoService orderDeliveryExprVoService;
@@ -163,4 +167,16 @@ public class VendorOrderController extends BaseController {
         ExcelUtil<VendorOrderDetailVo> util = new ExcelUtil<>(VendorOrderDetailVo.class);
         return util.exportExcel(list, "发货订单详细");
     }
+
+    /**
+     * 导入数据
+     */
+    @PostMapping("/importData")
+    @ResponseBody
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
+        ExcelUtil<VendorOrderDetailVo> util = new ExcelUtil<>(VendorOrderDetailVo.class);
+        List<VendorOrderDetailVo> updateDataList = util.importExcel(file.getInputStream());
+        String message = orderDetailVoService.importVendorOrderDetailList(updateDataList);
+        return AjaxResult.success(message);
+    }
 }

+ 3 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/business/order/domain/OrderVo.java

@@ -26,4 +26,7 @@ public class OrderVo extends Order {
     private String prodName;
     // 快递单号
     private String expressNo;
+    // 选中的发单ID
+    private String selectedOrderDeliveryIds;
+    private String[] orderDeliveryIds;
 }

+ 5 - 2
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/business/order/domain/VendorOrderDetailVo.java

@@ -1,6 +1,7 @@
 package com.xingxi.web.controller.business.order.domain;
 
 import com.xingxi.business.Order.domain.OrderDetail;
+import com.xingxi.common.annotation.Excel;
 import lombok.Data;
 import lombok.ToString;
 
@@ -17,8 +18,10 @@ import java.util.Date;
 public class VendorOrderDetailVo extends OrderDetail {
     private static final long serialVersionUID = 1L;
     // 订单编号
+    @Excel(name = "订单编号")
     private String orderNo;
     // 下单时间
+    @Excel(name = "下单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date orderTime;
     // 店铺名称
     private String sellerName;
@@ -40,8 +43,6 @@ public class VendorOrderDetailVo extends OrderDetail {
     private String recMobile;
     // 订单备注
     private String remark;
-    // 商品名称
-    private String prodName;
     // 商品分类名称
     private String className;
     // 快递单号
@@ -52,4 +53,6 @@ public class VendorOrderDetailVo extends OrderDetail {
     private Date confirmTime;
     // 发货单状态
     private String orderDeliveryStatus;
+    @Excel(name = "快递单号")
+    private String expressNo;
 }

+ 3 - 3
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/business/order/service/IOrderDeliveryExprVoService.java

@@ -13,7 +13,7 @@ public interface IOrderDeliveryExprVoService {
      * 新增订单商品快递明细
      *
      * @param OrderDeliveryExpr 订单商品快递明细
-     * @return 结果
+     * @return 更新行数
      */
     int insertOrderDeliveryExpr(OrderDeliveryExpr OrderDeliveryExpr);
 
@@ -21,7 +21,7 @@ public interface IOrderDeliveryExprVoService {
      * 删除订单商品快递明细信息
      *
      * @param orderDeliveryExpr 订单商品快递明细
-     * @return 结果
+     * @return 更新行数
      */
     int cancelDeliverProd(OrderDeliveryExpr orderDeliveryExpr);
 
@@ -29,7 +29,7 @@ public interface IOrderDeliveryExprVoService {
      * 更换快递单号
      *
      * @param orderDeliveryExpr 订单商品快递明细
-     * @return 结果
+     * @return 更新行数
      */
     int changeExpressNo(OrderDeliveryExpr orderDeliveryExpr);
 }

+ 8 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/business/order/service/IOrderDetailVoService.java

@@ -36,4 +36,12 @@ public interface IOrderDetailVoService {
      * @return 订单Vo 集合
      */
     List<VendorOrderDetailVo> selectVendorOrderVoList(OrderVo orderVo);
+
+    /**
+     * 导入发货单明细
+     *
+     * @param vendorOrderDetailVoList 发货单明细VO列表
+     * @return 导入结果
+     */
+    String importVendorOrderDetailList(List<VendorOrderDetailVo> vendorOrderDetailVoList);
 }

+ 76 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/business/order/service/impl/OrderDetailVoServiceImpl.java

@@ -1,13 +1,26 @@
 package com.xingxi.web.controller.business.order.service.impl;
 
+import com.xingxi.business.Order.domain.OrderDelivery;
+import com.xingxi.business.Order.domain.OrderDeliveryExpr;
+import com.xingxi.business.Order.mapper.OrderDeliveryExprMapper;
+import com.xingxi.business.Order.mapper.OrderDeliveryMapper;
+import com.xingxi.common.core.text.Convert;
+import com.xingxi.common.enums.EDelFlag;
+import com.xingxi.common.exception.BusinessException;
+import com.xingxi.common.utils.DateUtils;
+import com.xingxi.common.utils.ShiroUtils;
+import com.xingxi.common.utils.StringUtils;
 import com.xingxi.web.controller.business.order.domain.OrderDetailVo;
 import com.xingxi.web.controller.business.order.domain.OrderVo;
 import com.xingxi.web.controller.business.order.domain.VendorOrderDetailVo;
+import com.xingxi.web.controller.business.order.mapper.OrderDeliveryExprVoMapper;
 import com.xingxi.web.controller.business.order.mapper.OrderDetailVoMapper;
 import com.xingxi.web.controller.business.order.service.IOrderDetailVoService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -20,6 +33,12 @@ import java.util.List;
 public class OrderDetailVoServiceImpl implements IOrderDetailVoService {
     @Resource
     private OrderDetailVoMapper orderDetailVoMapper;
+    @Resource
+    private OrderDeliveryMapper orderDeliveryMapper;
+    @Resource
+    private OrderDeliveryExprMapper orderDeliveryExprMapper;
+    @Resource
+    private OrderDeliveryExprVoMapper orderDeliveryExprVoMapper;
 
     /**
      * 查询订单详细 信息
@@ -51,6 +70,63 @@ public class OrderDetailVoServiceImpl implements IOrderDetailVoService {
      */
     @Override
     public List<VendorOrderDetailVo> selectVendorOrderVoList(OrderVo orderVo) {
+        orderVo.setOrderDeliveryIds(Convert.toStrArray(orderVo.getSelectedOrderDeliveryIds()));
         return orderDetailVoMapper.selectVendorOrderVoList(orderVo);
     }
+
+    /**
+     * 导入发货单明细
+     *
+     * @param vendorOrderDetailVoList 发货单明细VO列表
+     * @return 导入结果
+     */
+    @Override
+    @Transactional
+    public String importVendorOrderDetailList(List<VendorOrderDetailVo> vendorOrderDetailVoList) {
+        Date nowDate = DateUtils.getNowDate();
+        if (StringUtils.isNull(vendorOrderDetailVoList) || vendorOrderDetailVoList.size() == 0) {
+            throw new BusinessException("导入数据不能为空!");
+        }
+        int successNum = 0;
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        for (VendorOrderDetailVo vendorOrderDetailVo : vendorOrderDetailVoList) {
+            try {
+                // 验证数据存在
+                OrderDelivery checkObject = orderDeliveryMapper.selectOrderDeliveryByOrderDeliveryId(vendorOrderDetailVo.getOrderDeliveryId());
+                if (checkObject != null) {
+                    orderDeliveryExprVoMapper.deleteOrderDeliveryExprByOrderDeliveryId(vendorOrderDetailVo.getOrderDeliveryId());
+                    String[] expressNos = Convert.toStrArray(vendorOrderDetailVo.getExpressNo());
+                    for (String expressNo : expressNos) {
+                        OrderDeliveryExpr orderDeliveryExpr = new OrderDeliveryExpr();
+                        orderDeliveryExpr.setOrderDetailId(checkObject.getOrderDetailId());
+                        orderDeliveryExpr.setOrderDeliveryId(checkObject.getOrderDeliveryId());
+                        orderDeliveryExpr.setExpressNo(expressNo);
+                        orderDeliveryExpr.setDelFlag(EDelFlag.NO.getVal());
+                        orderDeliveryExpr.setDeliveryTime(nowDate);
+                        orderDeliveryExpr.setUpdateUser(ShiroUtils.getLoginName());
+                        orderDeliveryExpr.setUpdateTime(nowDate);
+                        orderDeliveryExprMapper.insertOrderDeliveryExpr(orderDeliveryExpr);
+                    }
+                    successNum++;
+                    successMsg.append("<br/>" + successNum + "、发货单明细编号 " + vendorOrderDetailVo.getOrderDeliveryId() + " 导入成功");
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>" + failureNum + "、发货单明细编号 " + vendorOrderDetailVo.getOrderDeliveryId() + " 已存在");
+                }
+            } catch (Exception e) {
+                failureNum++;
+                String msg = "<br/>" + failureNum + "、发货单明细编号 " + vendorOrderDetailVo.getOrderDeliveryId() + " 导入失败:";
+                failureMsg.append(msg + e.getMessage());
+            }
+        }
+        if (failureNum > 0) {
+            failureMsg.insert(0, "导入失败!共 " + failureNum + " 条数据不正确,错误如下:");
+            throw new BusinessException(failureMsg.toString());
+        } else {
+            successMsg.insert(0, "数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+        }
+        return successMsg.toString();
+    }
 }

+ 6 - 0
08.src/Xingxi/xingxi-admin/src/main/resources/mapper/OrderDetailVoMapper.xml

@@ -190,6 +190,12 @@
                 and t_order_delivery_expr.expressNo like concat('%', #{expressNo}, '%')
                 )
             </if>
+            <if test="selectedOrderDeliveryIds != null and selectedOrderDeliveryIds != '' ">
+                and t_order_delivery.orderDeliveryId in
+                <foreach collection="orderDeliveryIds" item="deliveryId" open="(" separator="," close=")">
+                    #{deliveryId}
+                </foreach>
+            </if>
             and t_order.delFlag = '0'
         </where>
         order by t_order.orderTime, t_order.orderId, t_order_detail.orderDetailId

+ 394 - 0
08.src/Xingxi/xingxi-admin/src/main/resources/templates/business/vendorOrder/printDeliverForm.html

@@ -0,0 +1,394 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head>
+    <th:block th:include="include :: header('订单列表')" />
+</head>
+<body class="gray-bg">
+    <div class="container-div">
+        <div class="row">
+            <div class="col-sm-12 search-collapse">
+                <form id="searchConditionForm">
+					<div class="select-list">
+						<ul>
+							<li>
+								订单编号:<input type="text" name="orderNo" placeholder="订单编号"/>
+							</li>
+							<li>
+								商品名称:<input type="text" name="prodName" placeholder="商品名称"/>
+							</li>
+							<li>
+								收件人姓名:<input type="text" name="recName" placeholder="收件人姓名"/>
+							</li>
+							<li>
+								收件人手机:<input type="text" name="recMobile" placeholder="收件人手机"/>
+							</li>
+							<li>
+								快递编号:<input type="text" name="expressNo" placeholder="快递编号"/>
+							</li>
+							<li shiro:hasPermission="platform:order:show">
+								商品分类:
+								<select name="prodClass" style="width: 200px;" th:with="prodClasses=${@product.getProdClasses()}" >
+									<option value="">所有</option>
+									<option th:each="prodClass : ${prodClasses}" th:text="${prodClass.className}" th:value="${prodClass.prodClassId}"></option>
+								</select>
+							</li>
+							<li class="select-time">
+								<label>订单时间: </label>
+								<input type="text" class="time-input" placeholder="开始时间" id="orderTimeFrom" name="params[orderTimeFrom]"/>
+								<span>-</span>
+								<input type="text" class="time-input" placeholder="结束时间" id="orderTimeTo" name="params[orderTimeTo]"/>
+							</li>
+							<li class="select-time">
+								<label>取消时间: </label>
+								<input type="text" class="time-input" placeholder="开始时间" id="cancel TimeFrom" name="params[cancelTimeFrom]"/>
+								<span>-</span>
+								<input type="text" class="time-input" placeholder="结束时间" id="cancelTimeTo" name="params[cancelTimeTo]"/>
+							</li>
+							<li>
+								订单状态:
+								<select name="orderDetailStatus" th:with="type=${@dict.getType('order_detail_status')}">
+									<option value="">所有</option>
+									<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
+								</select>
+							</li>
+						</ul>
+						<ul>
+							<li>
+								<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
+								<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
+							</li>
+						</ul>
+					</div>
+                </form>
+            </div>
+            
+            <div class="btn-group-sm" id="toolbar" role="group">
+				<a class="btn btn-warning multiple" id="btnPrintPickForm" onclick="printPickForm()">
+					<i class="glyphicon glyphicon-baby-formula"></i> 打印拣货单
+				</a>
+				<a class="btn btn-info" id="btnExportOrderDetail" onclick="exportOrderDetail()">
+					<i class="glyphicon glyphicon-check"></i> 导出订单明细
+				</a>
+				<a class="btn btn-success" id="btnImportOrderDetail" onclick="importOrderDetail()">
+					<i class="glyphicon glyphicon-check"></i> 导入物流单号
+				</a>
+            </div>
+            <div class="col-sm-12 select-table table-striped">
+                <table id="bootstrap-table" data-mobile-responsive="true"></table>
+            </div>
+        </div>
+    </div>
+	<!-- 设置更换单号区域 -->
+	<script id="divInputExpressNo" type="text/template">
+		<div class="col-xs-offset-2">
+			<form id="frmInputExpressNo">
+				<div class="form-group" style="margin-top: 15px;">
+					<label th:for="expressNo">快递单号: </label>
+					<input type="text" id="expressNo" placeholder="快递单号">
+				</div>
+			</form>
+		</div>
+	</script>
+	<!-- 设置更换单号区域 -->
+	<script id="divChangeExpressNo" type="text/template">
+		<div class="col-xs-offset-2">
+			<form id="frmChangeExpressNo">
+				<div class="form-group" style="margin-top: 15px;">
+					<label th:for="newExpressNo">新快递单号: </label>
+					<input type="text" id="newExpressNo" placeholder="新快递单号">
+				</div>
+			</form>
+		</div>
+	</script>
+	<script th:src="@{/js/datatimeTool.js}"></script>
+	<script th:src="@{/ruoyi/js/currency.js}"></script>
+	<th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+		var editFlag = [[${@permission.hasPermi('platform:order:edit')}]];
+        var prefix = ctx + "business/vendorOrder";
+        var orderDetailStatusDatas = [[${@dict.getType('order_detail_status')}]];
+		var orderDeliveryStatusDatas = [[${@dict.getType('order_delivery_status')}]];
+
+		var dateFrom = DateAdd("m ", -1, new Date());
+		var dateTo = new Date();
+		$("#orderTimeFrom").val(dateFrom.Format("yyyy-MM-dd"));
+		$("#orderTimeTo").val(dateTo.Format("yyyy-MM-dd"));
+
+		$(function() {
+			var options = {
+				url: prefix + "/list",
+				createUrl: prefix + "/add",
+				updateUrl: prefix + "/edit/{id}",
+				removeUrl: prefix + "/remove",
+				exportUrl: prefix + "/export",
+				modalName: "订单明细选择",
+				showSearch: false,
+				showColumns: false,
+				clickToSelect: true,
+				pageSize: 25,
+				columns: [
+					{
+						checkbox: true
+					},
+					{
+						field : 'orderNo',
+						title : '订单编号',
+						visible: false
+					},
+					{
+						field : 'orderNo',
+						title : '订单编号',
+						sortable: false
+					},
+					{
+						field : 'orderDetailStatus',
+						title : '订单状态',
+						sortable: false,
+						formatter: function(value, row, index) {
+							return $.table.selectDictLabel(orderDetailStatusDatas, value);
+						}
+					},
+					{
+						field : 'orderDeliveryStatus',
+						title : '订单发货状态',
+						sortable: false,
+						formatter: function(value, row, index) {
+							return $.table.selectDictLabel(orderDeliveryStatusDatas, value);
+						}
+					},
+					{
+						field : 'prodName',
+						title : '商品名称',
+						sortable: false
+					},
+					{
+						field : 'prodAttrName',
+						title : '属性名称',
+						sortable: false
+					},
+					{
+						field : 'payAmount',
+						title : '支付金额',
+						sortable: false,
+						align : "right",
+						formatter: function(value, row, index) {
+							return formatCurrency(value / 100, 2);
+						}
+					},
+					{
+						field : 'quantity',
+						title : '商品数量',
+						sortable: false,
+						align : "right"
+					},
+					{
+						field : 'recName',
+						title : '收件人姓名',
+						sortable: false
+					},
+					{
+						field : 'recMobile',
+						title : '收件人手机',
+						sortable: false
+					},
+					{
+						field : 'orderTime',
+						title : '下单时间',
+						sortable: false
+					},
+					{
+						field : 'deliveryTime',
+						title : '发货时间',
+						sortable: false
+					},
+					{
+						field : 'confirmTime',
+						title : '确认收货时间',
+						sortable: false
+					},
+					{
+						field : 'cancelTime',
+						title : '取消时间',
+						sortable: false
+					},
+					{
+						title: '操作',
+						align: 'left',
+						formatter: function(value, row, index) {
+							var actions = [];
+							actions.push('<a class="btn btn-info btn-xs" href="javascript:void(0)" onclick="$.modal.openTab(\'订单详情\', \'' + prefix + '/detail/' + row.orderId + '\')"><i class="fa fa-edit"></i>查看</a> ');
+							if (row.orderDeliveryStatus === 'PENDING') {
+								actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="deliverProd(\'' + row.orderDetailId + '\', \'' + row.orderDeliveryId + '\')"><i class="fa fa-edit"></i>发货</a> ');
+							}
+							if (row.orderDeliveryStatus === 'DELIVERED') {
+								actions.push('<a class="btn btn-warning btn-xs" href="javascript:void(0)" onclick="cancelDeliverProd(\'' + row.orderDetailId + '\', \'' + row.orderDeliveryId + '\')"><i class="fa fa-edit"></i>取消发货</a> ');
+								actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="changeExpressNo(\'' + row.orderDetailId + '\', \'' + row.orderDeliveryId + '\')"><i class="fa fa-edit"></i>更换单号</a> ');
+								actions.push('<a class="btn btn-primary btn-xs" href="javascript:void(0)" onclick="showExpressNo(\'' + row.orderDetailId + '\', \'' + row.orderDeliveryId + '\')"><i class="fa fa-edit"></i>显示快递单号</a> ');
+							}
+							return actions.join('');
+						}
+					}
+				]
+			};
+			$.table.init(options);
+		});
+
+		function deliverProd(orderDetailId, orderDeliveryId) {
+			var content = $('#divInputExpressNo').html();
+			layer.open({
+				type: 1,
+				fix: false,
+				maxmin: false,
+				shade: 0.3,
+				area: ['340px', '215px'],
+				title: '输入快递单号',
+				// 弹层外区域关闭
+				shadeClose: true,
+				content: content, //捕获的元素,注意:最好该指定的元素要存放在body最外层,否则可能被其它的相对元素所影响
+				btn: ['<i class="fa fa-check"></i> 确定', '<i class="fa fa-remove"></i> 关闭'],
+				btn1: function() {
+					var expressNo = $("#expressNo").val();
+					if (expressNo === "") {
+						$.modal.alertError("请输入快递单号");
+						return;
+					}
+					var url = prefix + "/deliverProd";
+					var data = {
+						"orderDetailId": orderDetailId,
+						"orderDeliveryId": orderDeliveryId,
+						"expressNo": expressNo
+					};
+					$.post(url, data, function(result) {
+						if (result.code === web_status.SUCCESS) {
+							$.modal.closeAll();
+							$.modal.enable();
+							$.modal.alertSuccess(result.msg);
+							$.table.search();
+						} else if (result.code === web_status.WARNING) {
+							$.modal.closeAll();
+							$.modal.enable();
+							$.modal.alertWarning(result.msg)
+						} else {
+							$.modal.closeAll();
+							$.modal.enable();
+							$.modal.alertError(result.msg);
+						}
+					});
+					layer.closeAll();
+				}
+			});
+		}
+
+		function cancelDeliverProd(orderDetailId, orderDeliveryId) {
+			var url = prefix + "/cancelDeliverProd";
+			var data = {
+				"orderDetailId": orderDetailId,
+				"orderDeliveryId": orderDeliveryId,
+			};
+			$.post(url, data, function(result) {
+				if (result.code === web_status.SUCCESS) {
+					$.modal.closeAll();
+					$.modal.alertSuccess(result.msg);
+					$.table.search();
+				} else if (result.code === web_status.WARNING) {
+					$.modal.closeAll();
+					$.modal.enable();
+					$.modal.alertWarning(result.msg)
+				} else {
+					$.modal.closeAll();
+					$.modal.enable();
+					$.modal.alertError(result.msg);
+				}
+			});
+		}
+
+		function changeExpressNo(orderDetailId, orderDeliveryId) {
+			var content = $('#divChangeExpressNo').html();
+			layer.open({
+				type: 1,
+				fix: false,
+				maxmin: false,
+				shade: 0.3,
+				area: ['340px', '215px'],
+				title: '更换单号',
+				// 弹层外区域关闭
+				shadeClose: true,
+				content: content, //捕获的元素,注意:最好该指定的元素要存放在body最外层,否则可能被其它的相对元素所影响
+				btn: ['<i class="fa fa-check"></i> 确定', '<i class="fa fa-remove"></i> 关闭'],
+				btn1: function() {
+					var newExpressNo = $("#newExpressNo").val();
+					if (newExpressNo === "") {
+						$.modal.alertError("请输入新单号");
+						return;
+					}
+					var data = {};
+					var url = prefix + "/changeExpressNo";
+
+					data = {
+						"orderDetailId": orderDetailId,
+						"orderDeliveryId": orderDeliveryId,
+						"expressNo": newExpressNo
+					};
+					$.post(url, data, function(result) {
+						if (result.code === web_status.SUCCESS) {
+							$.modal.closeAll();
+							$.modal.alertSuccess("更新单号成功。");
+							$.table.search();
+						} else if (result.code === web_status.WARNING) {
+							$.modal.enable();
+							$.modal.alertWarning(result.msg);
+						} else {
+							$.modal.enable();
+							$.modal.alertError(result.msg);
+						}
+					});
+					layer.closeAll();
+				}
+			});
+		}
+
+		function showExpressNo(orderDeliveryId) {
+			$.modal.open('显示快递单号', prefix + '/showExpress/' + orderDeliveryId);
+		}
+
+		function exportOrderDetail() {
+			$.modal.confirm("确定导出所选择的订单明细吗?", function() {
+				var dataParam = $("#searchConditionForm").serializeArray();
+				dataParam.push({"name":"selectedOrderDeliveryIds", "value": $.table.selectColumns("orderDeliveryId").join()});
+				console.log(JSON.stringify(dataParam));
+				$.post(table.options.exportUrl, dataParam, function (result) {
+					if (result.code === web_status.SUCCESS) {
+						window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
+					} else if (result.code === web_status.WARNING) {
+						$.modal.alertWarning(result.msg)
+					} else {
+						$.modal.alertError(result.msg);
+					}
+					$.modal.closeLoading();
+				});
+			});
+		}
+
+		function printPickForm() {
+			var confirmMsg = "确认打印拣货单吗?";
+
+			$.modal.confirm(confirmMsg, function() {
+				var exportUrl = prefix + "/export";
+				var data = {
+					"detailIds" : $.table.selectColumns("id").join()
+				};
+				// $.post(exportUrl, data, function(result) {
+				// 	if (result.code === web_status.SUCCESS) {
+				// 		window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
+				// 	} else if (result.code === web_status.WARNING) {
+				// 		$.modal.alertWarning(result.msg)
+				// 	} else {
+				// 		$.modal.alertError(result.msg);
+				// 	}
+				// 	$.modal.closeLoading();
+				// });
+			})
+		}
+    </script>
+</body>
+</html>

+ 43 - 33
08.src/Xingxi/xingxi-admin/src/main/resources/templates/business/vendorOrder/vendorOrder.html

@@ -7,7 +7,7 @@
     <div class="container-div">
         <div class="row">
             <div class="col-sm-12 search-collapse">
-                <form id="formId">
+                <form id="searchConditionForm">
 					<div class="select-list">
 						<ul>
 							<li>
@@ -66,10 +66,10 @@
 				<a class="btn btn-warning multiple" id="btnPrintPickForm" onclick="printPickForm()">
 					<i class="glyphicon glyphicon-baby-formula"></i> 打印拣货单
 				</a>
-				<a class="btn btn-info multiple" id="btnExportOrderDetail" onclick="exportOrderDetail()">
+				<a class="btn btn-info" id="btnExportOrderDetail" onclick="exportOrderDetail()">
 					<i class="glyphicon glyphicon-check"></i> 导出订单明细
 				</a>
-				<a class="btn btn-success multiple" id="btnImportOrderDetail" onclick="importOrderDetail()">
+				<a class="btn btn-success" id="btnImportOrderDetail" onclick="importOrderDetail()">
 					<i class="glyphicon glyphicon-check"></i> 导入物流单号
 				</a>
             </div>
@@ -124,9 +124,8 @@
 				modalName: "订单明细选择",
 				showSearch: false,
 				showColumns: false,
+				clickToSelect: true,
 				pageSize: 25,
-				onUncheck: onUncheck,
-				onUncheckAll: onUncheckAll,
 				columns: [
 					{
 						checkbox: true
@@ -234,34 +233,6 @@
 			$.table.init(options);
 		});
 
-		function printPickForm() {
-			var confirmMsg = "确认打印拣货单吗?";
-
-			$.modal.confirm(confirmMsg, function() {
-				var exportUrl = prefix + "/export";
-				var data = {
-					"detailIds" : $.table.selectColumns("id").join()
-				};
-				// $.post(exportUrl, data, function(result) {
-				// 	if (result.code === web_status.SUCCESS) {
-				// 		window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
-				// 	} else if (result.code === web_status.WARNING) {
-				// 		$.modal.alertWarning(result.msg)
-				// 	} else {
-				// 		$.modal.alertError(result.msg);
-				// 	}
-				// 	$.modal.closeLoading();
-				// });
-			})
-		}
-
-
-		function onUncheck() {
-
-		}
-		function onUncheckAll() {
-		}
-
 		function deliverProd(orderDetailId, orderDeliveryId) {
 			var content = $('#divInputExpressNo').html();
 			layer.open({
@@ -379,6 +350,45 @@
 		function showExpressNo(orderDeliveryId) {
 			$.modal.open('显示快递单号', prefix + '/showExpress/' + orderDeliveryId);
 		}
+
+		function exportOrderDetail() {
+			$.modal.confirm("确定导出所选择的订单明细吗?", function() {
+				var dataParam = $("#searchConditionForm").serializeArray();
+				dataParam.push({"name":"selectedOrderDeliveryIds", "value": $.table.selectColumns("orderDeliveryId").join()});
+				console.log(JSON.stringify(dataParam));
+				$.post(table.options.exportUrl, dataParam, function (result) {
+					if (result.code === web_status.SUCCESS) {
+						window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
+					} else if (result.code === web_status.WARNING) {
+						$.modal.alertWarning(result.msg)
+					} else {
+						$.modal.alertError(result.msg);
+					}
+					$.modal.closeLoading();
+				});
+			});
+		}
+
+		function printPickForm() {
+			var confirmMsg = "确认打印拣货单吗?";
+
+			$.modal.confirm(confirmMsg, function() {
+				var exportUrl = prefix + "/export";
+				var data = {
+					"detailIds" : $.table.selectColumns("id").join()
+				};
+				// $.post(exportUrl, data, function(result) {
+				// 	if (result.code === web_status.SUCCESS) {
+				// 		window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
+				// 	} else if (result.code === web_status.WARNING) {
+				// 		$.modal.alertWarning(result.msg)
+				// 	} else {
+				// 		$.modal.alertError(result.msg);
+				// 	}
+				// 	$.modal.closeLoading();
+				// });
+			})
+		}
     </script>
 </body>
 </html>

+ 3 - 3
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/class/prodClass.html

@@ -24,13 +24,13 @@
             </div>
 
             <div class="btn-group-sm" id="toolbar" role="group">
-                <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:class:add">
+                <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="master:product:class:add">
                     <i class="fa fa-plus"></i> 添加
                 </a>
-                <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:class:edit">
+                <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="master:product:class:edit">
                     <i class="fa fa-edit"></i> 修改
                 </a>
-                <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:class:remove">
+                <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="master:product:class:remove">
                     <i class="fa fa-remove"></i> 删除
                 </a>
             </div>

+ 1 - 8
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/business/Order/domain/OrderDetail.java

@@ -23,14 +23,13 @@ public class OrderDetail extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
     // 订单明细ID
+    @Excel(name = "订单明细ID")
     private Long orderDetailId;
 
     // 订单ID
-    @Excel(name = "订单ID")
     private Long orderId;
 
     // 订单明细状态
-    @Excel(name = "订单明细状态")
     private String orderDetailStatus;
 
     // 商品ID
@@ -50,7 +49,6 @@ public class OrderDetail extends BaseEntity {
     private String prodAttrName;
 
     // 供应商ID
-    @Excel(name = "供应商ID")
     private Long vendorId;
 
     // 购买数量
@@ -58,11 +56,9 @@ public class OrderDetail extends BaseEntity {
     private Integer quantity;
 
     // 售后中数量
-    @Excel(name = "售后中数量")
     private Integer afterQty;
 
     // 已退货数量
-    @Excel(name = "已退货数量")
     private Integer returnQty;
 
     // 购买单价
@@ -79,16 +75,13 @@ public class OrderDetail extends BaseEntity {
 
     // 确认收货时间
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "确认收货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date confirmTime;
 
     // 完成时间
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date finishTime;
 
     // 删除标志(0代表存在 1代表删除)
-    @Excel(name = "删除标志", readConverterExp = "0=代表存在,1=代表删除")
     private String delFlag;
 
 }