liuzhiwei 7 лет назад
Родитель
Сommit
6e8bf546a3

+ 61 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java

@@ -61,8 +61,69 @@ public class SalesOrder implements Serializable {
     private String companyName;             //销售公司名称
     private String storeName;               //店铺名称
 
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
+    private Date startDate;                 //开始时间
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
+    private Date endDate;                   //结束时间
+
     private List<SalesOrderItem> salesOrderItemList = new ArrayList<SalesOrderItem>();
 
+    //添加订单项属性,用于导出订单
+    private String itemProductName;     //产品名称
+    private String itemProductColor;    //产品颜色
+    private Integer itemNum;            //产品数量
+    private String itemColorBar;        //产品69码
+
+    public String getItemProductName() {
+        return itemProductName;
+    }
+
+    public void setItemProductName(String itemProductName) {
+        this.itemProductName = itemProductName;
+    }
+
+    public String getItemProductColor() {
+        return itemProductColor;
+    }
+
+    public void setItemProductColor(String itemProductColor) {
+        this.itemProductColor = itemProductColor;
+    }
+
+    public Integer getItemNum() {
+        return itemNum;
+    }
+
+    public void setItemNum(Integer itemNum) {
+        this.itemNum = itemNum;
+    }
+
+    public String getItemColorBar() {
+        return itemColorBar;
+    }
+
+    public void setItemColorBar(String itemColorBar) {
+        this.itemColorBar = itemColorBar;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
     public String getSalesDealCode() {
         return salesDealCode;
     }

+ 18 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -2,6 +2,7 @@ package com.iamberry.rst.faces.cm;
 
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
+import com.iamberry.rst.core.page.PagedResult;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 
@@ -57,6 +58,16 @@ public interface SalesOrderService {
     List<SalesOrder> listSalesOrder (SalesOrder salesOrder);
 
     /**
+     * 分页获取订单集合
+     * @param pageNO
+     * @param pageSize
+     * @param salesOrder
+     * @param isTotalNum
+     * @return
+     */
+    PagedResult<SalesOrder> listSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum);
+
+    /**
      * 获取订单项集合
      * @param salesOrderItem
      * @return
@@ -90,4 +101,11 @@ public interface SalesOrderService {
      * @return
      */
     Integer getOrderInfoCount(SalesOrder salesOrder);
+
+    /**
+     * 查询需要导出的订单信息
+     * @param salesOrder
+     * @return
+     */
+    List<SalesOrder> listOrderExcel(SalesOrder salesOrder);
 }

+ 16 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -1,16 +1,19 @@
 package com.iamberry.rst.service.cm;
 
+import com.github.pagehelper.PageHelper;
 import com.iamberry.rst.core.cm.FittingsInfo;
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
 import com.iamberry.rst.core.cm.StoreInfo;
 import com.iamberry.rst.core.order.ProductColor;
+import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.faces.cm.StoreInfoService;
 import com.iamberry.rst.faces.order.EfastOrderService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.service.cm.mapper.FittingsInfoMapper;
 import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
+import com.iamberry.rst.util.PageUtil;
 import com.iamberry.wechat.tools.DateTimeUtil;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
@@ -68,6 +71,14 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     }
 
     @Override
+    public PagedResult<SalesOrder> listSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
+        PageHelper.startPage(pageNO, pageSize, isTotalNum);
+        //查询订单列表信息
+        List<SalesOrder> orderList = salesOrderMapper.listSalesOrder(salesOrder);
+        return PageUtil.getPage(orderList);
+    }
+
+    @Override
     public boolean addOrderAndItem(SalesOrder salesOrder, List<SalesOrderItem> list) {
         if (list == null || list.size() == 0) {
             return false;
@@ -318,4 +329,9 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     public Integer getOrderInfoCount(SalesOrder salesOrder) {
         return salesOrderMapper.getOrderInfoCount(salesOrder);
     }
+
+    @Override
+    public List<SalesOrder> listOrderExcel(SalesOrder salesOrder) {
+        return salesOrderMapper.listOrderExcel(salesOrder);
+    }
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java

@@ -69,4 +69,11 @@ public interface SalesOrderMapper {
      * @return
      */
     Integer updateOrderList(List<SalesOrder> list);
+
+    /**
+     * 查询需要导出的订单信息
+     * @param salesOrder
+     * @return
+     */
+    List<SalesOrder> listOrderExcel(SalesOrder salesOrder);
 }

+ 44 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml

@@ -44,7 +44,7 @@
   <!-- 根据id查询订单信息 -->
   <select id="getSalesOrderById" resultType="SalesOrder" parameterType="java.lang.Integer" >
     select 
-    <include refid="salesOrderInfo" />
+      *
     from tb_rst_sales_order_info
     where sales_id = #{salesId,jdbcType=INTEGER}
   </select>
@@ -86,6 +86,12 @@
       <if test="salesCreateTime != null and salesCreateTime != ''">
         AND sales_create_time <![CDATA[>=]]> #{salesCreateTime}
       </if>
+      <if test="startDate != null and startDate != ''">
+        AND sales_create_time <![CDATA[>=]]> #{startDate}
+      </if>
+      <if test="endDate != null and endDate != ''">
+        AND sales_create_time <![CDATA[<=]]> #{endDate}
+      </if>
     </where>
     ORDER BY sales_create_time DESC
   </select>
@@ -115,6 +121,43 @@
       </where>
   </select>
 
+  <!-- 查询需要导出的订单信息 -->
+  <select id="listOrderExcel" parameterType="SalesOrder" resultType="SalesOrder">
+      SELECT
+        o.*,
+        trsc.company_name companyName,
+        trsi.store_name  storeName,
+        i.item_product_name itemProductName,
+        i.item_product_color itemProductColor,
+        i.item_num itemNum,
+        i.item_color_bar itemColorBar
+      FROM
+        tb_rst_sales_order_info o
+      LEFT JOIN tb_rst_sales_company trsc ON o.sales_company_id = trsc.company_id
+      LEFT JOIN tb_rst_store_info trsi ON o.sales_store_id = trsi.store_id
+      LEFT JOIN tb_rst_sales_order_item i ON o.sales_id = i.item_order_id
+      <where>
+        <if test="salesId !=null">
+          o.sales_id like CONCAT('%',#{salesId},'%')
+        </if>
+        <if test="salesOrderId !=null and salesOrderId !=''">
+          AND o.sales_orderId like CONCAT('%',#{salesOrderId},'%')
+        </if>
+        <if test="salesAddressTel !=null and salesAddressTel !=''">
+          AND o.sales_address_tel like CONCAT('%',#{salesAddressTel},'%')
+        </if>
+        <if test="salesAddressName !=null and salesAddressName !=''">
+          AND o.sales_address_name like CONCAT('%',#{salesAddressName},'%')
+        </if>
+        <if test="startDate != null and startDate != ''">
+          AND o.sales_create_time <![CDATA[>=]]> #{startDate}
+        </if>
+        <if test="endDate != null and endDate != ''">
+          AND o.sales_create_time <![CDATA[<=]]> #{endDate}
+        </if>
+      </where>
+  </select>
+
   <!-- 添加订单信息 -->
   <insert id="addSalesOrder" parameterType="SalesOrder" keyProperty="salesId" useGeneratedKeys="true" >
     insert into tb_rst_sales_order_info (sales_id, sales_orderId, sales_openId, 

+ 277 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminSalesOrderController.java

@@ -0,0 +1,277 @@
+package com.iamberry.rst.controllers.cm;
+
+import com.iamberry.rst.core.cm.CustomerInfo;
+import com.iamberry.rst.core.cm.SalesOrder;
+import com.iamberry.rst.core.cm.SalesOrderItem;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.faces.cm.SalesOrderService;
+import com.iamberry.rst.utils.StitchAttrUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 订单信息
+ * Created by liuzhiwei on 2017/12/4.
+ */
+@Controller
+@RequestMapping("admin/salesOrder")
+public class AdminSalesOrderController {
+
+    @Autowired
+    private SalesOrderService salesOrderService;
+
+    /**
+     * 分页查询订单列表信息
+     * @param request
+     * @param salesOrder
+     * @param pageSize
+     * @param pageNO
+     * @param totalNum
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/list_order_page")
+    @RequiresPermissions("salesOrder:select:salesOrder")
+    public ModelAndView listOrderPage(HttpServletRequest request, SalesOrder salesOrder,
+                                        @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
+                                        @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
+                                        @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
+        ModelAndView mv = new ModelAndView("cm/salesOrder/sales_order_list");
+        //分页获取订单信息
+        PagedResult<SalesOrder> pagedResult = salesOrderService.listSalesOrderPage(pageNO, pageSize, salesOrder, totalNum == 0);
+        if (totalNum != 0) {
+            pagedResult.setTotal(totalNum);
+        }
+        salesOrder.setSalesOrderItemList(null);
+        StitchAttrUtil.setModelAndView(salesOrder, mv, "/admin/salesOrder/list_order_page", pagedResult);
+        return mv;
+    }
+
+    /**
+     * 查询订单详情
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/select_sales_order")
+    @RequiresPermissions("salesOrder:select:salesOrder")
+    public ModelAndView selectSalesOrder(HttpServletRequest request) throws Exception {
+        ModelAndView mv = new ModelAndView("cm/salesOrder/sales_order_detail");
+        String salesId = request.getParameter("salesId");
+        if (!StringUtils.isNotEmpty(salesId)) {
+            return mv;
+        }
+        SalesOrder order = new SalesOrder();
+        order.setSalesId(Integer.parseInt(salesId));
+        //根据id查询订单数据
+        List<SalesOrder> orderList = salesOrderService.listSalesOrder(order);
+        if (orderList == null || orderList.size() == 0) {
+            return mv;
+        }
+        order = orderList.get(0);
+        SalesOrderItem item = new SalesOrderItem();
+        item.setItemOrderId(Integer.parseInt(salesId));
+        //批量获取订单项信息
+        List<SalesOrderItem> itemList = salesOrderService.listSalesOrderItem(item);
+        order.setSalesOrderItemList(itemList);
+        mv.addObject("order",order);
+        return mv;
+    }
+
+    /**
+     * 导出订单
+     * @param request
+     * @param res
+     * @param salesOrder
+     * @throws Exception
+     */
+    @RequiresPermissions("salesOrder:excel:salesOrder")
+    @RequestMapping("/sales_order_excel")
+    public void salesOrderExcel(HttpServletRequest request,HttpServletResponse res,
+                                SalesOrder salesOrder) throws Exception{
+        //根据id查询订单数据
+        List<SalesOrder> orderList = salesOrderService.listOrderExcel(salesOrder);
+        if (orderList == null || orderList.size() == 0) {
+            return;
+        }
+        String[] cells = {
+                "订单号","交易号","销售公司","店铺名称","产品名称",
+                "颜色名称","数量","产品69码","是否支付","是否发货",
+                "订单金额","支付金额","付款方式","邮费","支付时间",
+                "发货时间","收货人姓名","收货人电话","收货地址",
+                "物流公司","物流单号","用户备注"
+        };
+        //导出订单Excel并下载
+        exportExcel(request,res,cells,orderList);
+    }
+
+    /**
+     * 导出订单Excel并下载
+     * @param request
+     * @param res
+     * @param cells
+     * @param orderList
+     * @throws Exception
+     */
+    public void exportExcel(HttpServletRequest request,HttpServletResponse res,
+                            String[] cells,List<SalesOrder> orderList) throws Exception {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        //创建一个workbook,对应一个Excel文件
+        HSSFWorkbook wb = new HSSFWorkbook();
+        //在workbook中添加一个sheet,对应Excel中的一个sheet
+        HSSFSheet sheet = wb.createSheet("导出订单");
+        //在sheet中添加表头第0行,老版本poi对excel行数列数有限制short
+        HSSFRow row = sheet.createRow((int) 0);
+        //创建单元格,设置值表头,设置表头居中
+        HSSFCellStyle style = wb.createCellStyle();
+        //居中格式
+        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+        //设置表头
+
+        if (cells == null || cells.length == 0) {
+            return;
+        }
+        //循环设置表头
+        HSSFCell cell = null;
+        for (int i = 0;i < cells.length;i++) {
+            String name = cells[i];
+            cell = row.createCell(i);
+            cell.setCellValue(name);
+            cell.setCellStyle(style);
+        }
+        for (int i = 0; i < orderList.size(); i++) {
+            row = sheet.createRow((int) i + 1);
+            SalesOrder order = orderList.get(i);
+            String payType = "";
+            switch (order.getSalesPayType()) {
+                case 1:payType = "微信支付";break;
+                case 2:payType = "现金支付";break;
+                case 3:payType = "已支付定金¥99";break;
+                case 4:payType = "刷卡支付";break;
+                case 5:payType = "支付宝支付";break;
+            }
+            String payStatus = "";
+            switch (order.getSalesPayStatus()) {
+                case 0:payStatus = "未支付";break;
+                case 2:payStatus = "已支付";break;
+            }
+            String shippingStatus = "";
+            switch (order.getSalesShippingStatus()) {
+                case 0:shippingStatus = "未发货";break;
+                case 1:shippingStatus = "已发货";break;
+                case 3:shippingStatus = "备货中";break;
+            }
+            //获取快递公司
+            String postFirm = getPostFirm(order.getSalesPostFirm());
+
+            // 创建单元格,设置值
+            row.createCell(0).setCellValue(order.getSalesOrderId());
+            row.createCell(1).setCellValue(order.getSalesDealCode());
+            row.createCell(2).setCellValue(order.getCompanyName());
+            row.createCell(3).setCellValue(order.getStoreName());
+            row.createCell(4).setCellValue(order.getItemProductName());
+            row.createCell(5).setCellValue(order.getItemProductColor());
+            row.createCell(6).setCellValue(order.getItemNum());
+            row.createCell(7).setCellValue(order.getItemColorBar());
+            row.createCell(8).setCellValue(payStatus);
+            row.createCell(9).setCellValue(shippingStatus);
+            row.createCell(10).setCellValue(order.getSalesAmount()/100);
+            row.createCell(11).setCellValue(order.getSalesPayMoney()/100);
+            row.createCell(12).setCellValue(payType);
+            row.createCell(13).setCellValue(order.getSalesShippingFee());
+            row.createCell(14).setCellValue(order.getSalesPayTime()==null?"":format.format(order.getSalesPayTime()));
+            row.createCell(15).setCellValue(order.getSalesSendTime()==null?"":format.format(order.getSalesSendTime()));
+            row.createCell(16).setCellValue(order.getSalesAddressName());
+            row.createCell(17).setCellValue(order.getSalesAddressTel());
+            row.createCell(18).setCellValue(order.getSalesAddressInfo());
+            row.createCell(19).setCellValue(postFirm);
+            row.createCell(20).setCellValue(order.getSalesPostNum());
+            row.createCell(21).setCellValue(order.getSalesUserRemark());
+        }
+        //下载导出订单Excel
+        downloadOrderExcel(res,wb);
+    }
+
+    /**
+     * 下载导出订单Excel
+     * @param res
+     * @param wb
+     * @throws Exception
+     */
+    public void downloadOrderExcel(HttpServletResponse res, HSSFWorkbook wb) throws Exception{
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        String fileName = format.format(new Date()) + "订单报表";
+        ByteArrayOutputStream os = new ByteArrayOutputStream();
+        wb.write(os);
+        byte[] content = os.toByteArray();
+        InputStream is = new ByteArrayInputStream(content);
+        // 设置response参数,可以打开下载页面
+        res.reset();
+        res.setContentType("application/vnd.ms-excel;charset=utf-8");
+        res.setHeader("Content-Disposition", "attachment;filename="
+                + new String((fileName + ".xls").getBytes(), "iso-8859-1"));
+        ServletOutputStream out = res.getOutputStream();
+        BufferedInputStream bis = null;
+        BufferedOutputStream bos = null;
+        try {
+            bis = new BufferedInputStream(is);
+            bos = new BufferedOutputStream(out);
+            byte[] buff = new byte[2048];
+            int bytesRead;
+            // Simple read/write loop.
+            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
+                bos.write(buff, 0, bytesRead);
+            }
+        } catch (Exception e) {
+            // TODO: handle exception
+            e.printStackTrace();
+        } finally {
+            if (bis != null)
+                bis.close();
+            if (bos != null)
+                bos.close();
+        }
+    }
+
+    /**
+     * 获取快递公司
+     * @param firm
+     * @return
+     */
+    public String getPostFirm(String firm) {
+        String postFirm = "";
+        switch (firm) {
+            case "sto":postFirm = "申通快递";break;
+            case "yto":postFirm = "圆通快递";break;
+            case "sf":postFirm = "顺丰快递";break;
+            case "ems":postFirm = "邮政EMS";break;
+            case "zto":postFirm = "中通快递";break;
+            case "zjs":postFirm = "宅急送";break;
+            case "yunda":postFirm = "韵达快递";break;
+            case "cces":postFirm = "cces快递";break;
+            case "pick":postFirm = "上门提货";break;
+            case "htky":postFirm = "汇通快递";break;
+            case "ttkdex":postFirm = "天天快递";break;
+            case "stars":postFirm = "星晨急便";break;
+            case "jd":postFirm = "京东快递";break;
+            case "01":postFirm = "其他";break;
+            case "02":postFirm = "上门送货";break;
+            default:postFirm = "申通快递";break;
+        }
+        return postFirm;
+    }
+}

+ 288 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/salesOrder/sales_order_detail.ftl

@@ -0,0 +1,288 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+<#include "/base/add_base.ftl">
+    <link href="${path}/common/lib/jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css"/>
+    <link href="${path}/common/lib/webuploader/0.1.5/webuploader.css" rel="stylesheet" type="text/css"/>
+    <link href="${path}/common/lib/icheck/icheck.css" rel="stylesheet" type="text/css"/>
+    <style>
+        .tit{position: relative;text-align: left;font-size: 16px;padding-left: 10px;}
+        .tit:after{content: '';position: absolute;left: 0;top: 20%;height: 60%;width: 3px;background-color: #32a3d8;}
+        .tit-2{position: relative;text-align: left;font-size: 16px;padding-left: 10px;}
+        .tit-2:after{content: '';position: absolute;left: 0;top: 20%;height: 60%;width: 3px;background-color: #32a3d8;}
+        #province select{margin-right:10px; width:100px;height: 31px;-webkit-appearance:none !important;appearance:none;background: url(${path}/common/images/cm/select-1.png) right center no-repeat;background-size: auto 100%;padding-left:3px;padding-right: 25px;}
+
+        #suggest, #suggest2 {width:200px}
+        .gray {color:gray}
+        .ac_results {background:#fff;border:1px solid #7f9db9;position: absolute;z-index: 10000;display: none}
+        .ac_results li a {white-space: nowrap;text-decoration:none;display:block;color:#05a;padding:1px 3px}
+        .ac_results li {border:1px solid #fff}
+        .ac_over, .ac_results li a:hover {background:#c8e3fc}
+        .ac_results li a span {float:right}
+        .ac_result_tip {border-bottom:1px dashed #666;padding:3px}
+
+        .select-box{background: url(${path}/common/images/cm/select-1.png) right center no-repeat;background-size: auto 100%;}
+        .select-box select{-webkit-appearance:none !important;background-color: transparent; appearance:none;padding-right: 25px;}
+        .dalog-ask{position: absolute;left:60%;top:0;-webkit-transform: translateY(-30%);transform: translateY(-30%);display: none;background-color: #fff;z-index: 10;}
+        .tag{ width:300px; min-height:300px; border:1px solid #32a3d8; position:relative;background-color: #fff;line-height: 1.5;padding: 10px 12px;}
+        .tag em{display:block; border-width:15px; position:absolute; top:30%; left:-30px;border-style:solid dashed dashed; border-color:transparent  #32a3d8 transparent transparent;font-size:0; line-height:0;}
+        .dalog-ask .ask{color: #000;margin: 10px 0 5px 0;}
+        .dalog-ask .answer{color: #666;margin-bottom: 10px;}
+        .dalog-ask .answer:hover{color: #32a3d8;cursor: pointer;}
+        .time-line-list{list-style: none;width: 100%;margin-left: -20px;}
+        .time-line-list>li{position: relative;float: left; text-align: center;width: 100px;overflow: hidden;white-space: nowrap;word-break: break-all;padding: 2px 0;}
+        .time-line-list .number{display: inline-block; padding: 2px; background: #32a3d8;border: 2px solid #fff;box-shadow:0 0 0 1px #32a3d8;width: 20px;height: 20px;color: #fff;line-height: 20px;border-radius: 50%;}
+        .time-line-list .red{display: inline-block; padding: 2px; background: red;border: 2px solid #fff;box-shadow:0 0 0 1px #32a3d8;width: 20px;height: 20px;color: #fff;line-height: 20px;border-radius: 50%;}
+        .time-line-list>li:before{content:'';position: absolute;height: 1px;width: 30%;right:0;top: 15px; background-color: #32a3d8;}
+        .time-line-list>li:after{content: '';position: absolute;height: 1px;width: 30%;left: 0;top: 15px;background:#32a3d8;}
+        .time-line-list>li:first-child:after,.time-line-list>li:last-child:before{display: none;}
+        .time-line-list .arrow{border-width:7px; position:absolute; left:25%; top:9px;border-style:solid dashed dashed; border-color:transparent  transparent  transparent #32a3d8;font-size:0; line-height:0;}
+        .time-line-list>li:first-child .arrow{display: none;}
+        .table-bg th{background-color: #e2f6ff;}
+        .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+        .my-search-input{padding-left: 30px;background: url(${path}/common/images/cm/search.png) 6px center no-repeat;background-size: auto 60%; }
+        .txt-red{color:red}
+    </style>
+    <title>客诉基本信息</title>
+</head>
+<body>
+<article class="cl pd-20">
+    <form action="" method="post" class="form form-horizontal" id="form-article-add">
+        <div class="row cl">
+            <label class="form-label col-3">
+                <div class="tit-2">订单详细信息</div>
+            </label>
+            <div class="formControls col-9">
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1">订单编号:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${order.salesOrderId!''}</label>
+            </div>
+            <label class="form-label col-1 col-sm-1">交易号:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${order.salesDealCode!''}</label>
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1">销售公司:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${order.companyName!''}</label>
+            </div>
+            <label class="form-label col-1 col-sm-1">店铺:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${order.storeName!''}</label>
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1">是否支付:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>
+                <#if order.salesPayStatus == 0>
+                    未付款
+                <#elseif order.salesPayStatus == 2>
+                    已付款
+                </#if>
+                </label>
+            </div>
+            <label class="form-label col-1 col-sm-1">是否发货:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>
+                    <#if order.salesShippingStatus == 0>
+                        未发货
+                    <#elseif order.salesShippingStatus == 1>
+                        已发货
+                    <#elseif order.salesShippingStatus == 1>
+                        备货中
+                    </#if>
+                </label>
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1">订单金额:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${order.salesAmount/100!''}</label>
+            </div>
+            <label class="form-label col-1 col-sm-1">支付金额:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${order.salesPayMoney/100!''}</label>
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1">付款方式:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>
+                    <#if order.salesPayType == 1>
+                        微信支付
+                    <#elseif order.salesPayType == 2>
+                        现金支付
+                    <#elseif order.salesPayType == 3>
+                        已支付定金¥99
+                    <#elseif order.salesPayType == 4>
+                        刷卡支付
+                    <#elseif order.salesPayType == 5>
+                        支付宝支付
+                    </#if>
+                </label>
+            </div>
+            <label class="form-label col-1 col-sm-1">支付时间:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${(order.salesPayTime?string("yyyy-MM-dd HH:mm:ss"))!''}</label>
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1">发货时间:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${(order.salesSendTime?string("yyyy-MM-dd HH:mm:ss"))!''}</label>
+            </div>
+            <label class="form-label col-1 col-sm-1">邮费:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${order.salesShippingFee/100!''}</label>
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-3">
+                <div class="tit-2">
+                    购买产品
+                </div>
+            </label>
+            <div class="formControls col-10 col-sm-10">
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1">购买产品信息</label>
+            <div class="formControls col-7 col-sm-7 text-c">
+                <table class="table table-border table-bg table-bordered">
+                    <tr class="text-c">
+                        <th>产品名称</th>
+                        <th>产品颜色</th>
+                        <th>产品市场价</th>
+                        <th>产品折扣价</th>
+                        <th>产品数量</th>
+                    </tr>
+                    <#if order.salesOrderItemList?? &&  (order.salesOrderItemList?size > 0) >
+                        <#list order.salesOrderItemList as item>
+                            <tr class="text-c">
+                                <td>${item.itemProductName!''}</td>
+                                <td>${item.itemProductColor!''}</td>
+                                <td>${item.itemProductPrice/100!''}</td>
+                                <td>${item.itemProductDiscount/100!''}</td>
+                                <td>${item.itemNum}</td>
+                            </tr>
+                        </#list>
+                    </#if>
+                </table>
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1">收货人姓名:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${order.salesAddressName!''}</label>
+            </div>
+            <label class="form-label col-1 col-sm-1">收货人电话:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${order.salesAddressTel!''}</label>
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1">收货人地址:</label>
+            <div class="formControls col-9 col-sm-9">
+                <label>${order.salesAddressInfo!''}</label>
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1">快递公司:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>
+                    <#if order.salesPostFirm == 'sto'>
+                        申通快递
+                    <#elseif order.salesPostFirm == 'yto'>
+                        圆通快递
+                    <#elseif order.salesPostFirm == 'sf'>
+                        顺丰快递
+                    <#elseif order.salesPostFirm == 'ems'>
+                        邮政EMS
+                    <#elseif order.salesPostFirm == 'zto'>
+                        中通快递
+                    <#elseif order.salesPostFirm == 'zjs'>
+                        宅急送
+                    <#elseif order.salesPostFirm == 'yunda'>
+                        韵达快递
+                    <#elseif order.salesPostFirm == 'cces'>
+                        cces快递
+                    <#elseif order.salesPostFirm == 'pick'>
+                        上门提货
+                    <#elseif order.salesPostFirm == 'htky'>
+                        汇通快递
+                    <#elseif order.salesPostFirm == 'ttkdex'>
+                        天天快递
+                    <#elseif order.salesPostFirm == 'stars'>
+                        星晨急便
+                    <#elseif order.salesPostFirm == 'jd'>
+                        京东快递
+                    <#elseif order.salesPostFirm == '01'>
+                        其他
+                    <#elseif order.salesPostFirm == '02'>
+                        上门送货
+                    </#if>
+                </label>
+            </div>
+            <label class="form-label col-1 col-sm-1">快递单号:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${order.salesPostNum!''}</label>
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1">用户备注:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${order.salesUserRemark!''}</label>
+            </div>
+            <label class="form-label col-1 col-sm-1">创建时间:</label>
+            <div class="formControls col-4 col-sm-4">
+                <label>${(order.salesCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</label>
+            </div>
+        </div>
+    </form>
+    </div>
+</article>
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript" src="${path}/common/lib/webuploader/0.1.5/webuploader.min.js"></script>
+<script type="text/javascript" src="${path}/common/lib/icheck/jquery.icheck.min.js"></script>
+<script type="text/javascript" src="${path}/common/lib/cm.lib/jquery.provincesCity.js"></script>
+<script type="text/javascript" src="${path}/common/lib/cm.lib/provincesData.js"></script>
+<script type="text/javascript" src="${path}/common/lib/cm.lib/airCity.js"></script>
+<script type="text/javascript" src="${path}/common/lib/cm.lib/suggest.js"></script>
+<script type="text/javascript" charset="utf-8" src="${path}/common/lib/ueditor/1.4.3/ueditor.config.js"></script>
+<script type="text/javascript" charset="utf-8" src="${path}/common/lib/ueditor/1.4.3/ueditor.all.js"></script>
+<script type="text/javascript" charset="utf-8" src="${path}/common/lib/ueditor/1.4.3/ueditor.parse.js"></script>
+<script type="text/javascript" charset="utf-8" src="${path}/common/lib/ueditor/1.4.3/lang/zh-cn/zh-cn.js"></script>
+<script type="text/javascript">
+    $(function(){
+        $('.skin-minimal input').iCheck({
+            checkboxClass: 'icheckbox-blue',
+            radioClass: 'iradio-blue',
+            increaseArea: '20%'
+        });
+        $("#province").ProvinceCity();
+        $('.skin-minimal input').iCheck({
+            checkboxClass: 'icheckbox-blue',
+            radioClass: 'iradio-blue',
+            increaseArea: '20%'
+        });
+        $("#arrcity").suggest(citys,{hot_list:commoncitys,dataContainer:'#arrcity_3word',onSelect:function(result){
+            console.log($(this)[0].value);
+            //		$("#city2").click()
+        },
+            attachObject:'#suggest'
+        });
+    });
+
+</script>
+</body>
+</html>

+ 168 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/salesOrder/sales_order_list.ftl

@@ -0,0 +1,168 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <link rel="Bookmark" href="/favicon.ico" >
+    <link rel="Shortcut Icon" href="/favicon.ico" />
+<#include "/base/list_base.ftl">
+    <title>客诉列表</title>
+    <style>
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
+        /*.my-input::-webkit-input-placeholder,.my-select{color: #dcdcdc;}*/
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/select-1.png) right center no-repeat;background-size:auto 100%;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+        .table-bg thead th{background-color: #e2f6ff;}
+        .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+        /*input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/rst/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(/rst/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}*/
+    </style>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> 客诉管理
+    <span class="c-gray en">&gt;</span> 客诉列表
+    <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+<div class="page-container">
+    <div class="text-c">
+        <form action="${path}/admin/salesOrder/list_order_page" method="post">
+            <input type="text" class="my-input"  style="width:90px;margin-right: 0px;" value="${salesOrder.salesOrderId!}" placeholder="订单号" name="salesOrderId" id="salesOrderId">
+            <input type="text" class="my-input"  style="width:90px;margin-right: 0px;" value="${salesOrder.salesAddressName!}" placeholder="收货人姓名" name="salesAddressName" id="salesAddressName">
+            <input type="text" class="my-input"  style="width:90px;margin-right: 0px;" value="${salesOrder.salesAddressTel!}" placeholder="收货人电话" name="salesAddressTel" id="salesAddressTel">
+            <input type="text" style="width:150px;height:36px;margin-right: 0px;" name="startDate" id="startDate" class="input-text" placeholder="开始时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',skin:'whyGreen' })" value="${(salesOrder.startDate?string("yyyy-MM-dd HH:mm:ss"))!''}" readonly="readonly"/>-
+            <input type="text" style="width:150px;height:36px;margin-right: 0px;" name="endDate" id="endDate" class="input-text" placeholder="结束时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',skin:'whyGreen' })" value="${(salesOrder.endDate?string("yyyy-MM-dd HH:mm:ss"))!''}" readonly="readonly"/>
+            <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);height: 35px;" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+            <button type="button" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);height: 35px;" id="order_excel"><i class="Hui-iconfont">&#xe644;</i> 导出</button>
+        </form>
+    </div>
+
+
+    <div class="mt-20">
+        <table class="table table-border table-bg table-bordered">
+            <thead>
+            <tr class="text-c">
+                <th width="60">订单号</th>
+                <th width="70">交易号</th>
+                <th width="60">收货人姓名</th>
+                <th width="70">收货人电话</th>
+                <th width="100">收货地址</th>
+                <th width="60">物流公司</th>
+                <th width="60">物流单号</th>
+                <th width="50">订单金额</th>
+                <th width="50">支付金额</th>
+                <th width="50">是否付款</th>
+                <th width="50">是否发货</th>
+                <th width="60">创建时间</th>
+                <th width="50">操作</th>
+            </tr>
+            </thead>
+            <tbody>
+            <#if page.dataList?? &&  (page.dataList?size > 0) >
+                <#list page.dataList as order>
+                <tr class="text-c">
+                    <td>${order.salesOrderId!''}</td>
+                    <td>${order.salesDealCode!''}</td>
+                    <td>${order.salesAddressName!''}</td>
+                    <#if (order.salesAddressTel)?? && order.salesAddressTel?length gt 7>
+                        <td>${order.salesAddressTel?substring(0,3)}***${order.salesAddressTel?substring(order.salesAddressTel?length-4,order.salesAddressTel?length)}</td>
+                    <#else>
+                        <td>${order.salesAddressTel!''}</td>
+                    </#if>
+                    <td>${order.salesAddressInfo!''}</td>
+                    <td>
+                        <#if order.salesPostFirm == 'sto'>
+                            申通快递
+                        <#elseif order.salesPostFirm == 'yto'>
+                            圆通快递
+                        <#elseif order.salesPostFirm == 'sf'>
+                            顺丰快递
+                        <#elseif order.salesPostFirm == 'ems'>
+                            邮政EMS
+                        <#elseif order.salesPostFirm == 'zto'>
+                            中通快递
+                        <#elseif order.salesPostFirm == 'zjs'>
+                            宅急送
+                        <#elseif order.salesPostFirm == 'yunda'>
+                            韵达快递
+                        <#elseif order.salesPostFirm == 'cces'>
+                            cces快递
+                        <#elseif order.salesPostFirm == 'pick'>
+                            上门提货
+                        <#elseif order.salesPostFirm == 'htky'>
+                            汇通快递
+                        <#elseif order.salesPostFirm == 'ttkdex'>
+                            天天快递
+                        <#elseif order.salesPostFirm == 'stars'>
+                            星晨急便
+                        <#elseif order.salesPostFirm == 'jd'>
+                            京东快递
+                        <#elseif order.salesPostFirm == '01'>
+                            其他
+                        <#elseif order.salesPostFirm == '02'>
+                            上门送货
+                        </#if>
+                    </td>
+                    <td>${order.salesPostNum!''}</td>
+                    <td>${order.salesAmount/100!''}</td>
+                    <td>${order.salesPayMoney/100!''}</td>
+                    <td>
+                        <#if order.salesPayStatus == 0>
+                            未付款
+                        <#elseif order.salesPayStatus == 2>
+                            已付款
+                        </#if>
+                    </td>
+                    <td>
+                        <#if order.salesShippingStatus == 0>
+                            未发货
+                        <#elseif order.salesShippingStatus == 1>
+                            已发货
+                        <#elseif order.salesShippingStatus == 1>
+                            备货中
+                        </#if>
+                    </td>
+                    <td>${(order.salesCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
+                    <td>
+                        <a style="text-decoration:none" href="javascript:void(0);" title="详情" onclick="sales_order_detail(${order.salesId!''})">
+                            <font color=#06c>详情</font>
+                        </a><br/>
+                    </td>
+                </tr>
+                </#list>
+            <#else>
+            <tr><td colspan="13" class="td-manage text-c" >暂时没有客诉信息,请添加!</td></tr>
+            </#if>
+            </tbody>
+        </table>
+    </div>
+</div>
+<tfoot>
+<#include "/base/page_util.ftl">
+</tfoot>
+<script type="text/javascript">
+
+    /*进入订单详情*/
+    function sales_order_detail(salesId) {
+        window.location.href= "${path}/admin/salesOrder/select_sales_order?salesId="+salesId;
+    }
+
+    /*导出Excel*/
+    $('#order_excel').click(function (e) {
+        var salesOrderId = convertUndefinedToEmpty($('#salesOrderId').val());
+        var salesAddressName = convertUndefinedToEmpty($('#salesAddressName').val());
+        var salesAddressTel = convertUndefinedToEmpty($('#salesAddressTel').val());
+        var startDate = convertUndefinedToEmpty($('#startDate').val());
+        var endDate = convertUndefinedToEmpty($('#endDate').val());
+        window.location="${path}/admin/salesOrder/sales_order_excel?salesOrderId="+salesOrderId+
+        "&salesAddressName="+salesAddressName+"&salesAddressTel="+salesAddressTel+"&startDate="+
+        startDate+"&endDate="+endDate;
+    })
+
+</script>
+</body>
+</html>