浏览代码

增加kmall取货码页面功能

lsp 4 年之前
父节点
当前提交
017e0497e0

+ 9 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -703,6 +703,15 @@ public class OrderController {
         return R.ok().put("order", order);
     }
 
+    @RequestMapping("/pickUpCodeList")
+    public R pickUpCodeList(@RequestBody Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        //查询列表数据
+        params.put("isOnfiilineOrder", Dict.isOnfflineOrder.item_1.getItem());
+        List<OrderEntity> orderList = orderService.queryPickUpCodeList(params);
+
+        return R.ok().put("list", orderList);
+    }
 
     @RequestMapping("/wxMicropayPay")
     @RequiresPermissions("order:wxMicropayPay")

+ 8 - 11
kmall-admin/src/main/java/com/kmall/admin/controller/statistics/MonthlyCustomersController.java

@@ -218,25 +218,23 @@ public class MonthlyCustomersController {
     @RequestMapping("/top10ForProduct")
     public R top10ForProduct(@RequestParam("month") String month, @RequestParam("week") String week){
         boolean monthFlag = false;
-        if (Objects.isNull(month) || "".equals(month)){
+        if (StringUtils.isNotEmpty(month)){
             monthFlag = true;
         }
 
-        if(monthFlag && (Objects.isNull(week)  || "".equals(week))){
-            return R.error("请选择周");
-        }else{
-            monthFlag = false;
+        boolean weekFlag = false;
+        if(StringUtils.isNotEmpty(week)){
             week = week.split("W")[1];
+            weekFlag = true;
         }
 
-        if(monthFlag ){
-            return R.error("请选择月份");
-        }
-
-        if(!"".equals(week) && !"".equals(month)){
+        if(weekFlag && monthFlag){
             return R.error("只能选择一个时间!");
         }
 
+        if(!monthFlag && !monthFlag){
+            return R.error("请选择周");
+        }
 
         String merchSn = null;
         SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
@@ -244,7 +242,6 @@ public class MonthlyCustomersController {
             merchSn = sysUser.getMerchSn();
         }
 
-
         Map<String,Object> map = monthlyCustomersService.top10ForProduct(month,week,merchSn);
 
         return R.ok(map);

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/OrderDao.java

@@ -144,4 +144,6 @@ public interface OrderDao extends BaseDao<OrderEntity> {
     void updateOrderInfo(Map orderRaram);
 
     void updateOrderProcessRecord(Map processParam);
+
+    List<OrderEntity> queryPickUpCodeList(Map<String, Object> map);
 }

+ 19 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/OrderEntity.java

@@ -63,6 +63,8 @@ public class OrderEntity implements Serializable {
     private String payId;
     //
     private String payName;
+
+    private String payMobile;
     //快递费用
     private BigDecimal shippingFee;
     //实际需要支付的金额
@@ -208,6 +210,8 @@ public class OrderEntity implements Serializable {
     //取货码
     private String pickUpCodeSn;
 
+    //取货码状态
+    private String pickUpCodeStatus;
 
     public BigDecimal getTopicPrice() {
         return topicPrice;
@@ -1128,4 +1132,19 @@ public class OrderEntity implements Serializable {
     public void setPickUpCodeSn(String pickUpCodeSn) {
         this.pickUpCodeSn = pickUpCodeSn;
     }
+
+    public String getPickUpCodeStatus() {
+        return pickUpCodeStatus;
+    }
+
+    public void setPickUpCodeStatus(String pickUpCodeStatus) {
+        this.pickUpCodeStatus = pickUpCodeStatus;
+    }
+    public String getPayMobile() {
+        return payMobile;
+    }
+
+    public void setPayMobile(String payMobile) {
+        this.payMobile = payMobile;
+    }
 }

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java

@@ -32,6 +32,8 @@ public interface OrderService {
 
     List<OrderEntity> queryOffilineOrderList(Map<String, Object> map);
 
+    List<OrderEntity> queryPickUpCodeList(Map<String, Object> map);
+
     int save(OrderEntity order);
 
     int update(OrderEntity order);

+ 5 - 1
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -76,7 +76,6 @@ import java.util.concurrent.TimeUnit;
 @Service("orderService")
 public class OrderServiceImpl implements OrderService {
 
-
     private final Logger LOGGER = LoggerFactory.getLogger(OrderServiceImpl.class);
 
     @Autowired
@@ -1476,6 +1475,11 @@ public class OrderServiceImpl implements OrderService {
     }
 
     @Override
+    public List<OrderEntity> queryPickUpCodeList(Map<String, Object> map) {
+        return orderDao.queryPickUpCodeList(map);
+    }
+
+    @Override
     public int uploadExcel(List<OrderExpressDto> orderExpressDtoList) {
         SysUserEntity user = ShiroUtils.getUserEntity();
         boolean isFail = false;

+ 52 - 27
kmall-admin/src/main/resources/mybatis/mapper/OrderDao.xml

@@ -26,6 +26,7 @@
         <result property="shippingNo" column="shipping_no"/>
         <result property="payId" column="pay_id"/>
         <result property="payName" column="pay_name"/>
+        <result property="payMobile" column="pay_mobile"/>
         <result property="shippingFee" column="shipping_fee"/>
         <result property="actualPrice" column="actual_price"/>
         <result property="integral" column="integral"/>
@@ -73,6 +74,7 @@
         <result property="campMinusId" column="camp_minus_id"/>
         <result property="campName" column="camp_name"/>
         <result property="pickUpCodeSn" column="pick_up_code_sn"/>
+        <result property="pickUpCodeStatus" column="pick_up_code_status"/>
     </resultMap>
 
     <select id="queryObject" resultType="com.kmall.admin.entity.OrderEntity">
@@ -391,23 +393,27 @@
 
     <select id="queryOffilineOrderList" resultType="com.kmall.admin.entity.OrderEntity">
         SELECT distinct
-        o.*,
-        u.username AS userName,
-        p.is_payment_send,
-        p.is_ele_order_send,
-        p.is_customs_send,
-        s.store_name storeName,
-        c.pick_up_code_sn
-        FROM
-        mall_order o
-
-        LEFT JOIN mall_order_process_record p ON o.order_sn = p.order_sn
+        o.id,
+        o.order_sn,
+        u.username as userName,
+        c.pick_up_code_sn,
+        o.pay_name,
+        o.mobile,
+        o.is_onffline_order,
+        o.order_biz_type,
+        o.order_status,
+        o.pay_status,
+        o.coupon_name,
+        o.coupon_price,
+        o.actual_price,
+        o.order_price,
+        o.pay_time,
+        o.pay_flag
+        from mall_order o
         LEFT JOIN mall_order_goods g ON o.id = g.order_id
-        left join mall_store s on o.store_id = s.id
-        LEFT JOIN mall_goods gs ON g.goods_id = gs.id
-        left join mall_sale_record record on record.order_sn = o.order_sn
+        LEFT JOIN mall_sale_record record ON record.order_sn = o.order_sn
         LEFT JOIN sys_user u ON record.saller_id = u.user_id
-        LEFT JOIN mall_pick_up_code c on o.order_sn = c.order_sn
+        LEFT JOIN mall_pick_up_code c ON o.order_sn = c.order_sn
         WHERE 1=1
         <if test="storeId != null and storeId != ''">
             AND o.store_id = #{storeId}
@@ -415,18 +421,6 @@
         <if test="merchSn != null and merchSn.trim() != ''">
             AND o.merch_sn = #{merchSn}
         </if>
-        <if test="goodsSn != null and goodsSn.trim() != ''">
-            AND gs.goods_sn = #{goodsSn}
-        </if>
-        <if test="sku != null and sku.trim() != ''">
-            AND gs.sku = #{sku}
-        </if>
-        <if test="prodBarcode != null and prodBarcode.trim() != ''">
-            AND gs.prod_barcode = #{prodBarcode}
-        </if>
-        <if test="thirdPartyMerchCode != null and thirdPartyMerchCode.trim() != ''">
-            AND s.third_party_merch_code = #{thirdPartyMerchCode}
-        </if>
         <if test="orderSn != null and orderSn.trim() != ''">
             AND o.order_sn LIKE concat('%',#{orderSn},'%')
         </if>
@@ -1940,6 +1934,37 @@
         </if>
     </select>
 
+    <select id="queryPickUpCodeList" resultType="com.kmall.admin.entity.OrderEntity">
+        SELECT distinct
+        o.*,
+        c.pick_up_code_sn,
+        c.pick_up_code_status
+        FROM mall_order o
+        LEFT JOIN mall_pick_up_code c ON c.order_sn = o.order_sn
+        WHERE 1=1
+        <if test="storeId != null and storeId != ''">
+            AND o.store_id = #{storeId}
+        </if>
+        <if test="isOnfiilineOrder != null">
+            AND o.is_onffline_order = #{isOnfiilineOrder}
+        </if>
+        <if test="orderSn != null and orderSn.trim() != ''">
+            AND o.order_sn LIKE concat('%',#{orderSn},'%')
+        </if>
+        <if test="payName != null and payName.trim() != ''">
+            AND o.pay_name = LIKE concat('%',#{payName},'%')
+        </if>
+        <if test="payMobile != null and payMobile.trim() != ''">
+            AND o.pay_mobile LIKE concat('%',#{pay_mobile},'%')
+        </if>
+        <if test="startTime != null and startTime.trim() != ''">
+            AND o.add_time &gt;= #{startTime}
+        </if>
+        <if test="endTime != null and endTime.trim() != ''">
+            AND o.add_time &lt; #{endTime}
+        </if>
+        order by o.id desc
+    </select>
 
 
     <update id="updateOrderInfo" parameterType="map">

+ 192 - 0
kmall-admin/src/main/webapp/WEB-INF/page/sale/pickupcode.html

@@ -0,0 +1,192 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title></title>
+    #parse("sys/header.html")
+</head>
+<body>
+<div id="rrapp" v-cloak>
+	<div v-show="showList" class="col-md-12">
+        <div class="col-md-12">
+        <Row :gutter="16">
+            <div class="search-group">
+                <i-col span="4">
+                    <i-input v-model="q.orderSn" @on-enter="query" placeholder="订单号"/>
+                </i-col>
+                <i-col span="4">
+                    <i-input v-model="q.payName" @on-enter="query" placeholder="购买人"/>
+                </i-col>
+                <i-col span="4">
+                    <i-input v-model="q.payMobile" @on-enter="query" placeholder="购买人电话"/>
+                </i-col>
+                <i-col span="3">
+                    <Date-picker v-model="q.startTime" placeholder="下单开始时间"/>
+                </i-col>
+                <i-col span="3">
+                    <Date-picker v-model="q.endTime" placeholder="下单结束时间"/>
+                </i-col>
+                <i-button @click="query">查询</i-button>
+                <i-button @click="reloadSearch">重置</i-button>
+            </div>
+            <!--<div class="buttons-group">
+                #if($shiro.hasPermission("pickupcode:save"))
+                <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
+                #end
+                #if($shiro.hasPermission("pickupcode:update"))
+                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
+                #end
+                #if($shiro.hasPermission("pickupcode:delete"))
+                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
+                #end
+            </div>-->
+        </Row>
+        </div>
+<!--	    <table id="jqGrid"></table>-->
+<!--	    <div id="jqGridPager"></div>-->
+        <div class="col-md-12">
+            <div class="row" style="border: white;background-color: #f0f0f0;height: 800px;overflow: auto;">
+                <div class="col-xs-2 col-sm-2" v-for="item in pickUpCodeList" style="margin-bottom: 8px;">
+                    <i-button data-toggle="modal" data-target="#orderDetail" style="width: 110px;font-family: 微软雅黑" @click="queryOrderDetail(item.orderSn,item.pickUpCodeSn)" v-if="item.pickUpCodeStatus == 0" >{{item.pickUpCodeSn}}</i-button>
+                    <i-button data-toggle="modal" data-target="#orderDetail" style="background-color:#83e7b4;width: 110px;font-family: 微软雅黑" @click="queryOrderDetail(item.orderSn,item.pickUpCodeSn)" v-if="item.pickUpCodeStatus == 1" >{{item.pickUpCodeSn}}</i-button>
+                    <i-button data-toggle="modal" data-target="#orderDetail" style="background-color:#808080;width: 110px;font-family: 微软雅黑" @click="queryOrderDetail(item.orderSn,item.pickUpCodeSn)" v-if="item.pickUpCodeStatus == 2" >{{item.pickUpCodeSn}}</i-button>
+                    <i-button data-toggle="modal" data-target="#orderDetail" style="background-color:#FF0000;width: 110px;font-family: 微软雅黑" @click="queryOrderDetail(item.orderSn,item.pickUpCodeSn)" v-if="item.pickUpCodeStatus == 4" >{{item.pickUpCodeSn}}</i-button>
+                </div>
+            </div>
+        </div>
+        <div class="modal fade " id="orderDetail"  role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+            <div class="modal-dialog modal-lg" style="width: 80%;height: 80%">
+                <div class="modal-content">
+                    <div class="modal-header">
+                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+                        <h4 class="modal-title" id="orderDetailLabel">订单详情</h4>
+                    </div>
+                    <div class="modal-body">
+
+                        <div class="row" style="border:0">
+                            <div class="col-md-3" id="orderNo">订单编号: {{orderEntity.orderSn}}</div>
+                            <div class="col-md-3" id="serialNumber">支付流水号: <span>{{orderProcessRecord.payTransactionId}}</span></div>
+                            <div class="col-md-3" id="waybillNo">运单编号: {{orderProcessRecord.logisticsNo}}</div>
+                            <div class="col-md-3" id="inventoryNo">清单编号: {{orderProcessRecord.invtNo}}</div>
+                        </div>
+                        <div class="row" style="border:0">
+                            <div class="col-md-3" id="orderDeclarationTime">订单申报时间: {{orderProcessRecord.eleOrderStartTime}}</div>
+                            <div class="col-md-3" id="payDeclarationTime">支付单申报时间: {{orderProcessRecord.paymentStartTime}}</div>
+                            <div class="col-md-3" id="waybillDeclarationTime">运单申报时间: {{orderProcessRecord.waybillStartTime}}</div>
+                            <div class="col-md-3" id="inventoryDeclarationTime">清单放行时间: {{orderProcessRecord.customsSuccTime}}</div>
+                        </div>
+                        <div class="row" style="border:0">
+                            <div class="col-md-3" id="orderSubmitTime">订单提交时间: {{orderProcessRecord.addOrderStartTime}}</div>
+                            <div class="col-md-3" id="payStatus">支付状态:
+                                <span v-if="orderEntity.payStatus == 0">未付款</span>
+                                <span v-if="orderEntity.payStatus == 1">付款中</span>
+                                <span v-if="orderEntity.payStatus == 2">已付款</span>
+                            </div>
+                            <div class="col-md-3" id="inventoryStatus">清关状态:
+                                <span v-if="orderProcessRecord.isCustomsSend == 0">失败</span>
+                                <span v-if="orderProcessRecord.isCustomsSend == 1">成功</span>
+                                <span v-if="orderProcessRecord.isCustomsSend == 2">清关中</span>
+                            </div>
+                        </div>
+                        <div class="row" style="border:0">
+                            <div class="col-md-3" id="orderDeclareStatus">订单申报状态:
+                                <span v-if="orderProcessRecord.isEleOrderSend == 0">失败</span>
+                                <span v-if="orderProcessRecord.isEleOrderSend == 1">成功</span>
+                                <span v-if="orderProcessRecord.isEleOrderSend == 2">申报中</span>
+                            </div>
+                            <div class="col-md-3" id="payOrderDeclareStatus">支付单申报状态:
+                                <span v-if="orderProcessRecord.isPaymentSend == 0">失败</span>
+                                <span v-if="orderProcessRecord.isPaymentSend == 1">成功</span>
+                                <span v-if="orderProcessRecord.isPaymentSend == 2">申报中</span>
+                            </div>
+                        </div>
+                        <div class="row" style="border:0">
+                            <div class="col-md-3" id="orderTotal">订单总金额: {{orderEntity.orderPrice}}</div>
+                            <div class="col-md-3" id="actualPrice">订单实际支付金额: {{orderEntity.actualPrice}}</div>
+                            <div class="col-md-3" id="discount">订单优惠券金额: {{orderEntity.couponPrice}}</div>
+                            <div class="col-md-3" id="orderTaxes">订单预估税费: {{tax}}</div>
+                        </div>
+                        <div class="row" style="border:0">
+                            <div class="col-md-12" id="invetoryReceipt">失败原因: {{response}}</div>
+                        </div>
+                        <table id="goodsDetailTable" class="table .table-striped" style="margin-top: 50px;">
+                            <tr style="border: white;background-color: orange">
+                                <th>商品名称</th>
+                                <th>规格</th>
+                                <th>市场价</th>
+                                <th>优惠价</th>
+                                <th>数量</th>
+                                <th>实际支付价</th>
+                                <th>预估税费</th>
+                                <th>参与活动</th>
+                            </tr>
+                            <tr v-for="(item,i) in goodsDetailList" >
+                                <td><h3>{{item.goodsName}}</h3></td>
+                                <td>{{item.specification}}</td>
+                                <td>{{item.marketPrice}}</td>
+                                <td>{{item.discountedPrice}}</td>
+                                <td>{{item.number}}</td>
+                                <td>{{item.actualPaymentAmount}}</td>
+                                <td >{{item.tax}}</td>
+                                <td >{{item.activity}}</td>
+                            </tr>
+                        </table>
+
+                    </div>
+                    <div class="modal-footer">
+                        <button type="button" style="margin:0 30px 0 20px;font-size: 20px;float: left" class="btn ivu-btn-error" @click="refundOrder()" id="refundOrder" data-dismiss="modal">退款</button>
+                        <!--                            <button type="button" style="margin:0 30px 0 20px;font-size: 30px;" class="btn btn-primary" @click="pickerUp" id="pickerUp" data-dismiss="modal">已取货</button>-->
+                        <!--                            <button type="button" style="margin:0 30px 0 20px;font-size: 30px;" class="btn btn-primary" @click="resendWaybill" id="resendWaybill" data-dismiss="modal">重发运单</button>-->
+                        <!--                            <button type="button" style="margin:0 30px 0 20px;font-size: 30px;" class="btn btn-primary" @click="resendPayment" id="resendPayment" data-dismiss="modal">重发支付单</button>-->
+                        <button type="button" style="margin:0 30px 0 20px;font-size: 30px;" class="btn btn-primary" @click="verification" id="verification" data-dismiss="modal">核销</button>
+                        <!--<button type="button" class="btn btn-primary" @click="retrySendOrder" id="retrySendOrder" data-dismiss="modal">订单重推</button>-->
+                    </div>
+                </div>
+            </div><!-- /.modal -->
+        </div>
+    </div>
+
+    <!--<Card v-show="!showList">
+        <p slot="title">{{title}}</p>
+		<i-form ref="formValidate" :model="pickUpCode" :rules="ruleValidate" :label-width="80">
+            <Form-item label="取货码" prop="pickUpCodeSn">
+                <i-input v-model="pickUpCode.pickUpCodeSn" placeholder="取货码"/>
+            </Form-item>
+            <Form-item label="商户订单编号" prop="merchOrderSn">
+                <i-input v-model="pickUpCode.merchOrderSn" placeholder="商户订单编号"/>
+            </Form-item>
+            <Form-item label="取货码状态:0:待清关,1:核销成功,2:清关成功,3:退款,4:清关失败" prop="pickUpCodeStatus">
+                <i-input v-model="pickUpCode.pickUpCodeStatus" placeholder="取货码状态:0:待清关,1:核销成功,2:清关成功,3:退款,4:清关失败"/>
+            </Form-item>
+            <Form-item label="取货码生成时间" prop="pickUpCodeCreatetime">
+                <i-input v-model="pickUpCode.pickUpCodeCreatetime" placeholder="取货码生成时间"/>
+            </Form-item>
+            <Form-item label="取货码核销时间" prop="pickUpCodeVerificationtime">
+                <i-input v-model="pickUpCode.pickUpCodeVerificationtime" placeholder="取货码核销时间"/>
+            </Form-item>
+            <Form-item label="门店id" prop="storeId">
+                <i-input v-model="pickUpCode.storeId" placeholder="门店id"/>
+            </Form-item>
+            <Form-item label="+创建时间,yyyy-MM-dd HH:mm:ss" prop="createTime">
+                <i-input v-model="pickUpCode.createTime" placeholder="+创建时间,yyyy-MM-dd HH:mm:ss"/>
+            </Form-item>
+            <Form-item label="+修改人编号" prop="moderSn">
+                <i-input v-model="pickUpCode.moderSn" placeholder="+修改人编号"/>
+            </Form-item>
+            <Form-item label="+修改时间,yyyy-MM-dd HH:mm:ss" prop="modTime">
+                <i-input v-model="pickUpCode.modTime" placeholder="+修改时间,yyyy-MM-dd HH:mm:ss"/>
+            </Form-item>
+            <Form-item label="+时间戳" prop="tstm">
+                <i-input v-model="pickUpCode.tstm" placeholder="+时间戳"/>
+            </Form-item>
+            <Form-item>
+                <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
+                <i-button type="warning" @click="reload" style="margin-left: 8px"/>返回</i-button>
+                <i-button type="ghost" @click="handleReset('formValidate')" style="margin-left: 8px">重置</i-button>
+            </Form-item>
+        </i-form>
+	</Card>-->
+</div>
+
+<script src="${rc.contextPath}/js/sale/pickupcode.js?_${date.systemTime}"></script>
+</body>
+</html>

+ 49 - 0
kmall-admin/src/main/webapp/WEB-INF/page/sale/pickupcodeView.html

@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title></title>
+    #parse("sys/header.html")
+</head>
+<body>
+<div id="rrapp" v-cloak>
+	<div v-show="showList" class="col-md-12">
+        <div class="row-fluid">
+            <div class="col-md-4">
+                <h2 class="text-center" style="border: white;background-color: #F5DCB3;padding: 8px;font-weight: 600;" >清关成功,可取货</h2><br/>
+                <div class="row" style="border: white;background-color: #f0f0f0; overflow: auto; height: 750px;">
+                    <div class="col-xs-4 col-sm-4" v-for="item in pickUpCodeList" v-if="item.pickUpCodeStatus == 1" style="margin-bottom: 12px;">
+                        <i-button data-toggle="modal" style="background-color:#83e7b4;width: 100px;font-family: 微软雅黑;height: 50px;font-size: 20px;" v-if="item.pickUpCodeStatus == 1" >{{item.pickUpCodeSn}}</i-button>
+                    </div>
+                </div>
+            </div>
+            <div class="col-md-3">
+                <h2 class="text-center" style="border: white;background-color: #F5DCB3;padding: 8px;font-weight: 600;" >清关成功,待取货</h2><br/>
+                <div class="row" style="border: white;background-color: #f0f0f0; overflow: auto; height: 750px;">
+                    <div class="col-xs-6 col-sm-6" v-for="item in pickUpCodeList" v-if="item.pickUpCodeStatus == 2" style="margin-bottom: 12px;padding-left: 10px;">
+                        <i-button data-toggle="modal" style="background-color:#808080;width: 110px;font-family: 微软雅黑;height: 50px;font-size: 20px;color: white;" v-if="item.pickUpCodeStatus == 2" >{{item.pickUpCodeSn}}</i-button>
+                    </div>
+                </div>
+            </div>
+            <div class="col-md-3">
+                <h2 class="text-center" style="border: white;background-color: #F5DCB3;padding: 8px;font-weight: 600;" >待清关,请等待</h2><br/>
+                <div class="row" style="border: white;background-color: #f0f0f0; overflow: auto; height: 750px;">
+                    <div class="col-xs-6 col-sm-6" v-for="item in pickUpCodeList" v-if="item.pickUpCodeStatus == 0" style="margin-bottom: 12px;padding-left: 10px;">
+                        <i-button data-toggle="modal" style="width: 110px;font-family: 微软雅黑;height: 50px;font-size: 20px;" v-if="item.pickUpCodeStatus == 0" >{{item.pickUpCodeSn}}</i-button>
+                    </div>
+                </div>
+            </div>
+            <div class="col-md-2">
+                <h2 class="text-center" style="border: white;background-color: #F5DCB3;padding: 8px;font-weight: 600;" >清关失败</h2><br/>
+                <div class="row" style="border: white;background-color: #f0f0f0; overflow: auto; height: 750px;">
+                    <div class="col-xs-12 col-sm-12" v-for="item in pickUpCodeList" v-if="item.pickUpCodeStatus == 4" style="margin-bottom: 12px;">
+                        <i-button data-toggle="modal" style="background-color:#FF0000;width: 110px;font-family: 微软雅黑;height: 50px;font-size: 20px;color: white;" v-if="item.pickUpCodeStatus == 4" >{{item.pickUpCodeSn}}</i-button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script src="${rc.contextPath}/js/sale/pickupcodeView.js?_${date.systemTime}"></script>
+</body>
+</html>

+ 526 - 0
kmall-admin/src/main/webapp/js/sale/pickupcode.js

@@ -0,0 +1,526 @@
+$(function () {
+	vm.query();
+    /*$("#jqGrid").jqGrid({
+        url: '../order/pickUpCodeList',
+        datatype: "json",
+        colModel: [
+			{label: 'orderSn', name: 'orderSn', index: 'order_sn', key: true, hidden: true},
+			{label: '订单号', name: 'orderSn', index: 'order_sn', align: 'center', width: 80},
+			{label: '取货码', name: 'pickUpCodeSn', index: 'pick_up_code_sn', align: 'center', width: 80},
+			{
+				label: '取货码状态', name: 'pickUpCodeStatus', index: 'pick_up_code_status', align: 'center',width: 100,
+				formatter: function (value) {
+					if (value == '0') {
+						return '待清关';
+					} else if (value == '1') {
+						return '核销成功';
+					} else if (value == '2') {
+						return '清关成功';
+					} else if (value == '3') {
+						return '退款';
+					} else if (value == '4'){
+						return '清关失败';
+					}
+					return '-';
+				}
+			},
+			{label: '购买人姓名', name: 'payName', index: 'pay_name', align: 'center', width: 100},
+			{label: '购买人电话', name: 'payMobile', index: 'pa_mobile', align: 'center', width: 100},
+			{
+				label: '订单状态', name: 'orderStatus', index: 'order_status', align: 'center',width: 180,
+				formatter: function (value) {
+					if (value == '0') {
+						return '订单创建成功等待付款';
+					} else if (value == '100') {
+						return '订单付款中';
+					} else if (value == '101') {
+						return '订单已取消';
+					} else if (value == '102') {
+						return '订单已删除';
+					} else if (value == '201') {
+						return '订单已付款';
+					} else if (value == '300') {
+						return '订单已发货';
+					} else if (value == '301') {
+						return '用户确认收货';
+					} else if (value == '401') {
+						return '没有发货,退款';
+					} else if (value == '402') {
+						return '已收货,退款退货';
+					}
+					return value;
+				}
+			},
+			{
+				label: '付款状态', name: 'payStatus', index: 'pay_status', align: 'center',width: 80,
+				formatter: function (value) {
+					if (value == '0') {
+						return '未付款';
+					} else if (value == '1') {
+						return '付款中';
+					} else if (value == '2') {
+						return '已付款';
+					} else if (value == '3') {
+						return '退款中';
+					} else if (value == '4') {
+						return '退款';
+					}
+					return value;
+				}
+			},
+			{label: '实际支付', name: 'actualPrice', index: 'actual_price', align: 'center',width: 80},
+			{label: '预计税额', name: 'tax', index: 'tax', align: 'center',width: 80},
+			{label: '订单总价', name: 'orderPrice', index: 'order_price',align: 'center', width: 80},
+			{label: '下单时间', name: 'addTime', index: 'add_time', align: 'center', width: 80,
+				formatter: function (value) {
+					return transDate(value, 'yyyy-MM-dd hh:mm:ss');
+				}
+			}
+		],
+		viewrecords: true,
+        height: 550,
+        rowNum: 10,
+        rowList: [10, 30, 50],
+        rownumbers: true,
+        rownumWidth: 25,
+        autowidth: true,
+        multiselect: true,
+        pager: "#jqGridPager",
+        jsonReader: {
+            root: "page.list",
+            page: "page.currPage",
+            total: "page.totalPage",
+            records: "page.totalCount"
+        },
+        prmNames: {
+            page: "page",
+            rows: "limit",
+            order: "order"
+        },
+        gridComplete: function () {
+            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
+        }
+    });*/
+});
+
+
+let vm = new Vue({
+	el: '#rrapp',
+	data: {
+        showList: true,
+        title: null,
+		pickUpCode: {},
+		q: {
+			orderSn: '',
+			payName: '',
+			payMobile: '',
+			startTime: '',
+			endTime: ''
+		},
+		pickUpCodeList: {},
+		orderProcessRecord: {},
+		orderEntity: {},
+		goodsDetailList: [],
+		currentOrderNo: null,
+		pickUpCode: null,
+		tax:0,
+		response: ""
+	},
+	methods: {
+		query: function () {
+			vm.reload();
+		},
+		/*add: function () {
+			vm.showList = false;
+			vm.title = "新增";
+			vm.pickUpCode = {};
+		},
+		update: function (event) {
+            let orderSn = getSelectedRow();
+			if (orderSn == null) {
+				return;
+			}
+			vm.showList = false;
+            vm.title = "修改";
+
+            vm.getInfo(orderSn)
+		},
+		saveOrUpdate: function (event) {
+            let url = vm.pickUpCode.orderSn == null ? "../pickupcode/save" : "../pickupcode/update";
+			$.ajax({
+				type: "POST",
+			    url: url,
+			    contentType: "application/json",
+			    data: JSON.stringify(vm.pickUpCode),
+                success: function (r) {
+                    if (r.code === 0) {
+                        alert('操作成功', function (index) {
+                            vm.reload();
+                        });
+                    } else {
+                        alert(r.msg);
+                    }
+                }
+			});
+		},
+		del: function (event) {
+            let orderSns = getSelectedRows();
+			if (orderSns == null){
+				return;
+			}
+
+			confirm('确定要删除选中的记录?', function () {
+				$.ajax({
+					type: "POST",
+				    url: "../pickupcode/delete",
+				    contentType: "application/json",
+				    data: JSON.stringify(orderSns),
+				    success: function (r) {
+						if (r.code == 0) {
+							alert('操作成功', function (index) {
+								$("#jqGrid").trigger("reloadGrid");
+							});
+						} else {
+							alert(r.msg);
+						}
+					}
+				});
+			});
+		},
+		getInfo: function(orderSn){
+			$.get("../pickupcode/info/"+orderSn, function (r) {
+                vm.pickUpCode = r.pickUpCode;
+            });
+		},*/
+        reloadSearch: function() {
+            vm.q = {
+				orderSn: '',
+				payName: '',
+				payMobile: '',
+				startTime: '',
+				endTime: ''
+            }
+            vm.reload();
+		},
+		reload: function () {
+			let url = "../order/pickUpCodeList";
+			let params = {
+				'orderSn': vm.q.orderSn,
+				'payName': vm.q.payName,
+				'payMobile': vm.q.payMobile,
+				'startTime': vm.timestampToDate(vm.q.startTime)/* ? vm.timestampToDate(vm.q.startTime) : new Date().toLocaleDateString().replace(/\//g, '-')*/,
+				'endTime': vm.timestampToDate(vm.q.endTime)
+			}
+			console.log(JSON.stringify(params));
+			$.ajax({
+				type: "POST",
+				url: url,
+				contentType: "application/json",
+				data: JSON.stringify(params),
+				success: function (r) {
+					if (r.code === 0) {
+						vm.pickUpCodeList = r.list;
+					} else {
+						alert(r.msg);
+					}
+				}
+			});
+			/*vm.showList = true;
+            let page = $("#jqGrid").jqGrid('getGridParam', 'page');
+			$("#jqGrid").jqGrid('setGridParam', {
+                postData: {
+                	'orderSn': vm.q.orderSn,
+					'payName': vm.q.payName,
+					'payMobile': vm.q.payMobile,
+					'startTime': vm.timestampToDate(vm.q.startTime),
+					'endTime': vm.timestampToDate(vm.q.endTime)
+				},
+                page: page
+            }).trigger("reloadGrid");
+            vm.handleReset('formValidate');*/
+		},
+        handleSubmit: function (name) {
+            handleSubmitValidate(this, name, function () {
+                vm.saveOrUpdate()
+            });
+        },
+        handleReset: function (name) {
+            handleResetForm(this, name);
+        },
+		timestampToDate: function (timestamp){
+			if(timestamp){
+				return new Date(timestamp).toLocaleDateString().replace(/\//g, '-')
+			}
+			return '';
+		},
+		//订单详情
+		queryOrderDetail:function(orderSn,pickUpCode){
+			var storeId = sessionStorage.getItem("storeId");
+			$.get("../order/orderDetail/"+orderSn, function (r) {
+				if (r.code == 0) {
+					vm.orderProcessRecord = r.resultObj.orderProcessRecordEntity;
+					vm.orderEntity = r.resultObj.orderEntity;
+					vm.goodsDetailList = r.resultObj.goodsList;
+					vm.currentOrderNo = r.resultObj.orderEntity.id;
+					vm.pickUpCode = pickUpCode;
+					vm.tax = r.resultObj.tax;
+					vm.response = r.resultObj.response;
+					if(vm.orderProcessRecord.eleOrderStartTime){
+						vm.orderProcessRecord.eleOrderStartTime = parsedate(vm.orderProcessRecord.eleOrderStartTime);
+					}
+					if(vm.orderProcessRecord.paymentStartTime){
+						vm.orderProcessRecord.paymentStartTime = parsedate(vm.orderProcessRecord.paymentStartTime);
+					}
+					if(vm.orderProcessRecord.waybillStartTime){
+						vm.orderProcessRecord.waybillStartTime = parsedate(vm.orderProcessRecord.waybillStartTime);
+					}
+					if(vm.orderProcessRecord.customsSuccTime){
+						vm.orderProcessRecord.customsSuccTime = parsedate(vm.orderProcessRecord.customsSuccTime);
+					}
+					if(vm.orderProcessRecord.addOrderStartTime){
+						vm.orderProcessRecord.addOrderStartTime = parsedate(vm.orderProcessRecord.addOrderStartTime);
+					}
+				}
+			});
+		},
+		//退款
+		refundOrder:function(){
+			confirm('确认退款吗?', function () {
+				$.ajax({
+					type: "POST",
+					url: "../order/orderRefund",
+					contentType: "application/json",
+					data: JSON.stringify({'orderId':vm.currentOrderNo,'sessionId':vm.sessionId}),
+					success: function (r) {
+						if (r.code == 0) {
+							alert("退款成功")
+						}else{
+							alert("退款失败,请联系管理员");
+						}
+					}
+				});
+			})
+		},
+		//核销
+		verification:function(){
+			if(vm.orderProcessRecord.isCustomsSend != 1){
+				alert("请等待清关完成");
+				return ;
+			}
+
+			confirm('确认核销吗?', function () {
+				$.ajax({
+					type: "POST",
+					url: "../order/printMsgAndChangeCode",
+					contentType: "application/json",
+					data: JSON.stringify({'id':vm.currentOrderNo,'sessionId':vm.sessionId}),
+					success: function (r) {
+						if (r.ticket != null) {
+							var content = getPrintContentOrder(r.ticket);
+							printArea(content);
+						}else{
+							alert("打印小票失败");
+						}
+					}
+				});
+			})
+		}
+	}
+});
+
+//填充小票样式
+function getPrintContentOrder(ticket) {
+	var content = "<div style=\"width: 250px;font-family: 微软雅黑;font-size: 8px;\">";
+	// 打印ogo
+	content += "<div style=\"text-align: center;width: 100%;height: 260px;\">";
+	content += "<img src='/statics/img/cw_logo2.png' style='width: 100%;height: 100%;' />";
+	content += "</div>";
+	//小票头
+	content += "<div style=\"text-align: center;width: 100%;font-weight:bold;font-size: 13px;\">";
+	content += ticket.ticketHead.title;
+	content += "</div>";
+	/*content += "<div style=\"width: 100%;\">";
+    content += "会员:" + ticket.ticketHead.memberId;
+    content += "</div>";*/
+	content += "<div style=\"width: 100%;font-size: 25px;\">";
+	content += "取货码:" + vm.pickUpCode;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "订单号:" + ticket.ticketHead.orderId;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "交易时间:" + ticket.ticketHead.tradeTime;
+	content += "</div>";
+	content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
+	//商品信息
+	content += "<table style=\"width: 100%;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
+	content += "<tr>";
+	content += "<td style=\"width: 40%;text-align: left;font-size: 10px;font-weight: bold;\">商品名称</td>";
+	content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">单价</td>";
+	content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">优惠</td>";
+	// content += "<td style=\"width: 16%;text-align: right;font-size: 10px;font-weight: bold;\">税费</td>";
+	content += "<td style=\"width: 15%;text-align: right;font-size: 10px;font-weight: bold;\">数量</td>";
+	content += "<td style=\"width: 18%;text-align: right;font-size: 10px;font-weight: bold;\">小计</td>";
+	content += "</tr>";
+	content += "</table>";
+	content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
+	content += "<table style=\"width: 100%;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
+	for (var i=0;i< ticket.goods.length;i++){
+		content += "<tr>";
+		content += "<td style=\"width: 40%;text-align: left;font-size: 8px;padding-top: 8px;\">";
+		content += "<table style=\"width: 100%;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
+		content += "<tr>";
+		content += "<td style=\"text-align: left;font-size: 8px;vertical-align:top;\">#</td>";
+		content += "<td style=\"text-align: left;font-size: 8px;\">" + ticket.goods[i].gname + "</td>";
+		content += "</tr>";
+		content += "</table>";
+		content += "</td>";
+		content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].uprice + "</td>";
+		content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].discountPrice + "</td>";
+		// content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].taxation + "</td>";
+		content += "<td style=\"width: 15%;text-align: center;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].num + "</td>";
+		content += "<td style=\"width: 18%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].subtotal + "</td>";
+		content += "</tr>";
+
+	}
+	content += "</table>";
+	content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
+	//收银信息
+	content += "<div style=\"width: 100%;\">";
+	content += "<span style=\"float: left;width: 50%;text-align: left;\">商品合计:</span>";
+	content += "<span style=\"float: left;width: 17%;text-align: left;\">" + ticket.cashInfo.goodsTotal + "件</span>";
+	content += "<span style=\"float: right;width: 33%;text-align: right;\">" + ticket.cashInfo.total + "元</span>";
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "<span style=\"float: left;width: 50%;text-align: left;\">税费合计:</span>";
+	content += "<span style=\"float: left;width: 17%;text-align: left;\">" + ticket.cashInfo.goodsTotal + "件</span>";
+	content += "<span style=\"float: right;width: 33%;text-align: right;\">" + ticket.cashInfo.taxTotal + "元</span>";
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "<span style=\"float: left;width: 50%;text-align: left;\">优惠合计:</span>";
+	content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.oddChange + "元</span>";
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "<span style=\"float: left;width: 50%;text-align: left;\">实收:</span>";
+	content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.receipts + "元</span>";
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "<span style=\"float: left;width: 50%;text-align: left;\">优惠券:</span>";
+	content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.coupon + "元</span>";
+	content += "</div>";
+	// content += "<div style=\"width: 100%;\">";
+	// content += "<span style=\"float: left;width: 50%;text-align: left;\">运费:</span>";
+	// content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.freight + "元</span>";
+	// content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "<span style=\"float: left;width: 50%;text-align: left;\">支付渠道:</span>";
+	// 后期改成从系统中取
+	content += "<span style=\"float: right;width: 50%;text-align: right;\">" + "支付宝支付" + "</span>";
+	content += "</div>";
+	content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
+	//海关清单信息
+	content += "<div style=\"width: 100%;\">";
+	content += "订单号:" + ticket.cusListing.orderId;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "运单编号:" + ticket.cusListing.waybillId;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "海关清单号:" + ticket.cusListing.invtNo;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "收货人:" + ticket.cusListing.consignee;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "收货人电话:" + ticket.cusListing.consigneeTel;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "始发地: 仓库地址 : 广东省深圳市南山区前海保税港区W104"  ;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "交货地:" + ticket.cusListing.deliveryAddress;
+	content += "</div>";
+	content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
+	content += "<div style=\"width: 100%;text-align: center;\">";
+	content += "购买跨境商品须知:"
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "1、凡购买跨境商品均不提供发票;<br> 2、单笔限购5000元,年交易限额2.6万元; <br> 3、所有订单经海关放行后方可提货; <br> 4、凭小票领取您的订单商品; <br> 5、非产品质量问题,跨境商品不支持无理由退换货,请及时检查。 "
+	content += "</div>";
+	content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
+	content += "<div style=\"width: 100%;\">";
+	// content += ticket.ticketFoot.summary;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	// content += "客服电话:" + ticket.ticketFoot.serviceTel;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	// content += "网址:" + ticket.ticketFoot.url1;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += ticket.ticketFoot.welcome;
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "惠州市惠城区港惠购物中心负一层";
+	content += "</div>";
+	content += "<div style=\"width: 100%;\">";
+	content += "请保管好收银小票。";
+	content += "</div>";
+	// 打印二维码
+	content += "<div style=\"text-align: center;width: 100%;height: 250px;\">";
+	content += "<img src='/statics/img/cw_qrcode.png' style='width: 100%;height: 100%;' />";
+	content += "</div>";
+	content += "<div style=\"width: 100%;text-align: center;\">";
+	content += "关注CW大药房客服号,获取更多优惠信息"
+	content += "</div>";
+	return content;
+}
+
+var printAreaCount = 0;
+//打印小票
+function printArea(content) {
+	var idPrefix = "printArea_";
+	removePrintArea(idPrefix + printAreaCount);
+	++printAreaCount;
+	var iframeId = idPrefix + printAreaCount;
+	var iframeStyle = 'width:0px;height:0px;left:0px;top:0px;';
+	iframe = document.createElement('IFRAME');
+	$(iframe).attr({
+		style: iframeStyle,
+		id: iframeId
+	});
+	document.body.appendChild(iframe);
+	var doc = iframe.contentWindow.document;
+	// doc.open();
+	doc.write('<div class="">' + content
+		+ '</div>');
+	doc.close();
+	var frameWindow = iframe.contentWindow;
+	if(!vm.firstPrint){
+		setTimeout(function() {
+			// frameWindow.close();
+			frameWindow.focus();
+			frameWindow.print();
+			frameWindow.print();
+			alert('打印小票完成');
+		},250);
+		vm.firstPrint = true;
+	}else{
+		// frameWindow.close();
+		frameWindow.focus();
+		frameWindow.print();
+		frameWindow.print();
+		alert('打印小票完成');
+	}
+}
+
+function parsedate(value){
+	var date = new Date(value);
+	var year = date.getFullYear();
+	var month = date.getMonth()+1; //月份+1
+	var day = date.getDate();
+	var hour = date.getHours();
+	var minutes = date.getMinutes();
+	var second = date.getSeconds();
+	return  year+"-"+month+"-"+day+" "+hour+":"+minutes +":"+second;
+}

+ 97 - 0
kmall-admin/src/main/webapp/js/sale/pickupcodeView.js

@@ -0,0 +1,97 @@
+$(function () {
+	openWebSocket();
+});
+
+window.onbeforeunload = function(){
+	closeWebSocket();
+}
+
+let vm = new Vue({
+	el: '#rrapp',
+	data: {
+        showList: true,
+        title: null,
+		pickUpCode: {},
+		q: {},
+		pickUpCodeList:{},
+		test: true
+	},
+	methods: {
+	}
+});
+
+
+var webSocket;
+
+function openWebSocket() {
+	var storeId = sessionStorage.getItem("storeId");
+	if ("WebSocket" in window) {
+		console.log("当前浏览器支持WebSocket");
+
+		//实现化WebSocket对象
+		//指定要连接的服务器地址与端口建立连接
+		//注意ws、wss使用不同的端口。我使用自签名的证书测试,
+		//无法使用wss,浏览器打开WebSocket时报错
+		//ws对应http、wss对应https。
+		// webSocket = new WebSocket("ws://183.62.225.124:8080/ws/server/"+storeId);
+		webSocket = new WebSocket("ws://127.0.0.1:8080//ws/server/163");
+		// webSocket = new WebSocket("wss://cb.k1net.cn/ws/server/"+storeId);
+		if (webSocket.readyState === webSocket.CONNECTING) {
+			console.log('1.连接正在打开......');
+		}
+
+		// ---------- WebSocket 对象注册事件 ----------
+
+		//连接打开事件
+		webSocket.onopen = function () {
+			if (webSocket.readyState === webSocket.OPEN) {
+				console.log('2.连接已打开');
+			}
+		};
+		//收到消息事件
+		webSocket.onmessage = function (msg) {
+			var data = Object.assign({}, JSON.parse(msg.data));
+			console.log('3.接收到服务端信息......data:'+data);
+			vm.sessionId = data.sessionId;
+
+			if(vm.test){
+				vm.pickUpCodeList = data.pickUpCodeList;
+				vm.test = false;
+			}
+		};
+		//连接关闭事件
+		webSocket.onclose = function () {
+			if (!webSocket) {
+				console.log('4.Socket连接已关闭');
+			}
+		};
+		//发生了错误事件
+		webSocket.onerror = function () {
+			console.log("5.Socket发生了错误");
+		}
+	} else {
+		console.log("当前浏览器不支持WebSocket");
+		return false;
+	}
+}
+
+function sendMessage() {
+	if(webSocket && webSocket.readyState === webSocket.OPEN) {
+		webSocket.send("client manual send message.")
+	} else {
+		console.log('6.未创建WebSocket连接');
+	}
+}
+
+function closeWebSocket() {
+	if (webSocket != null) {
+		webSocket.close();
+		webSocket = null;
+	}
+	console.log("关闭WebSocket");
+}
+
+//窗口关闭时,关闭连接
+window.unload = function () {
+	webSocket.close();
+};

+ 1 - 0
kmall-admin/src/main/webapp/js/shop/offilineOrderList.js

@@ -95,6 +95,7 @@ $(function () {
             // {label: '收货人', name: 'consignee', index: 'consignee', width: 80},
             // {label: '收货地址', name: 'address', index: 'address', width: 80},
             // {label: '联系电话', name: 'mobile', index: 'mobile', width: 80},
+            {label: '支付方式', name: 'payFlag', index: 'pay_flag', width: 80},
             {label: '是否使用优惠券', name: 'couponName', index: 'couponName', align: 'center',width: 80,
             formatter:function(value){
                     if(value != ""){