From 9b2838fd5b53ae5ef4aa7e082e2718cc0ccc4466 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期五, 25 八月 2023 09:30:01 +0800
Subject: [PATCH] U8接口相关功能

---
 src/main/java/com/zy/asrs/controller/OrderController.java    |   16 
 src/main/java/com/zy/asrs/service/OrderService.java          |    2 
 src/main/java/com/zy/asrs/controller/OpenController.java     |  130 ++++++---
 src/main/java/com/zy/asrs/service/OpenService.java           |   18 +
 src/main/webapp/views/order/order.html                       |    1 
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java |   67 +++++
 src/main/java/com/zy/asrs/entity/Mat.java                    |    8 
 src/main/webapp/static/js/order/order.js                     |   67 ++++
 src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java |  216 ++++++++++------
 src/main/webapp/static/js/common.js                          |   63 ++--
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java  |  168 ++++++++++++
 src/main/java/com/zy/asrs/entity/param/MatInfoParam.java     |    7 
 src/main/resources/application.yml                           |    4 
 13 files changed, 589 insertions(+), 178 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 3b752dc..93fe59d 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,12 +1,14 @@
 package com.zy.asrs.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.core.annotations.AppAuth;
-import com.core.common.*;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.param.*;
 import com.zy.asrs.service.OpenService;
-import com.zy.common.model.DetlDto;
 import com.zy.common.web.BaseController;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,8 +16,8 @@
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by vincent on 2022/4/8
@@ -233,57 +235,97 @@
         }
     }
 
-    @PostMapping("/mat/v1")
+    @PostMapping("/order/matSync/default/v1")
     public synchronized R syncMatInfoU8(@RequestHeader(required = false) String appkey,
-                                         @RequestBody(required = false) MatSyncParam param,
+                                         @RequestBody(required = false) Map<String, Object> param,
                                          HttpServletRequest request){
         auth(appkey, param, request);
         if (Cools.isEmpty(param)) {
             return R.parse(BaseRes.PARAM);
         }
 
-        return R.ok();
+        int MsgT = 0;
+        int MsgF = 0;
+        StringBuilder Msg= new StringBuilder("鍘熷洜锛�");
+
+        List<MatInfoParam> matDetails = (List<MatInfoParam>) param.get("matDetails");
+
+        for (Object matDetail : matDetails){
+            MatInfoParam matInfoParam = JSONObject.parseObject(JSON.toJSONString(matDetail),MatInfoParam.class);
+            if (Cools.isEmpty(matDetails)) {
+                MsgF++;
+                continue;
+            }
+            openService.syncMat(matInfoParam);
+            if(matInfoParam.isType()){
+                MsgT++;
+            }else {
+                MsgF++;
+                Msg.append(matInfoParam.getCinvcode()).append(":").append(matInfoParam.getMemo()).append(";");
+            }
+        }
+
+        if (MsgF==0){
+            return R.ok("鎴愬姛鎺ユ敹鐗╂枡锛�"+MsgT+"涓�");
+        }else if (MsgT==0){
+            return R.ok("鎺ユ敹鐗╂枡澶辫触锛�"+MsgF+"涓�;"+Msg);
+        }else {
+            return R.ok("鎴愬姛鎺ユ敹鐗╂枡锛�"+MsgT+"涓�;"+"鎺ユ敹鐗╂枡澶辫触锛�"+MsgF+"涓�;"+Msg);
+        }
+
     }
 
-
-
-    public static void main(String[] args) {
-        // 1
-        System.out.println("======================================");
-        OpenOrderPakinParam param = new OpenOrderPakinParam();
-        param.setOrderNo(String.valueOf(new SnowflakeIdWorker().nextId()));
-        param.setOrderType("鎵撳寘涓婄嚎鍗�");
-        param.setOrderTime(DateUtils.convert(new Date()));
-        List<DetlDto> orderDetails = new ArrayList<>();
-        param.setOrderDetails(orderDetails);
-        for (int i = 0; i < 3; i++) {
-            DetlDto detlDto = new DetlDto();
-            switch (i) {
-                case 0:
-                    detlDto.setMatnr("MDH020030530");
-                    detlDto.setBatch("500");
-                    detlDto.setAnfme(18.0);
-                    break;
-                case 1:
-                    detlDto.setMatnr("MDH020016416");
-                    detlDto.setBatch("500");
-                    detlDto.setAnfme(32.0);
-                    break;
-                case 2:
-                    detlDto.setMatnr("LSH90152025");
-                    detlDto.setAnfme(50.0);
-                    break;
-                default:
-                    break;
-            }
-            orderDetails.add(detlDto);
+    @PostMapping("/order/pakin/default/v1")
+    @AppAuth(memo = "鐢熸垚鍏ュ簱鍗曟嵁")
+    public synchronized R orderPakin(@RequestHeader(required = false) String appkey,
+                                        @RequestBody(required = false) Map<String, Object> param,
+                                        HttpServletRequest request){
+        auth(appkey, param, request);
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
         }
-        System.out.println(JSON.toJSONString(param));
-        // 2
-        System.out.println("======================================");
-        OpenOrderCompleteParam param1 = new OpenOrderCompleteParam();
-        param1.setOrderNo("963001846497017856");
-        System.out.println(JSON.toJSONString(param1));
+
+        openService.syncOrder(param);
+
+        return R.ok("鍏ュ簱鍗曟嵁鎺ュ彈鎴愬姛");
+
+    }
+
+    @PostMapping("/order/pakout/default/v1")
+    @AppAuth(memo = "鐢熸垚鍑哄簱鍗曟嵁")
+    public synchronized R orderPakout(@RequestHeader(required = false) String appkey,
+                                     @RequestBody(required = false) Map<String, Object> param,
+                                     HttpServletRequest request){
+
+        auth(appkey, param, request);
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+
+        openService.syncOrder(param);
+
+        return R.ok("鍑哄簱鍗曟嵁鎺ュ彈鎴愬姛");
+
+    }
+
+    @PostMapping("/order/delete/default/v1")
+    @AppAuth(memo = "鍗曟嵁鍒犻櫎瀹℃牳")
+    public synchronized R orderDelete(@RequestHeader(required = false) String appkey,
+                                      @RequestBody(required = false) Map<String, Object> param,
+                                      HttpServletRequest request){
+        auth(appkey, param, request);
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+
+        boolean success = openService.orderDelete(param.get("id").toString());
+
+        if(success){
+            return R.ok("鍗曟嵁鍒犻櫎鎴愬姛");
+        }else {
+            return R.error("鍗曟嵁姝e湪鎵ц锛屽垹闄ゅけ璐�");
+        }
+
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java
index da6c2d0..6c1d2e7 100644
--- a/src/main/java/com/zy/asrs/controller/OrderController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderController.java
@@ -356,14 +356,14 @@
     @Transactional
     public R delete(@RequestParam Long orderId){
         orderService.remove(orderId);
-//        Order order = orderService.selectById(orderId);
-//        if (order != null) {
-//            order.setStatus(0);
-//        }
-//        if (!orderService.updateById(order)) {
-//            throw new CoolException("鍒犻櫎璁㈠崟澶辫触");
-//        }
-//        orderDetlService.modifyStatus(orderId, 0);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/order/report/auth")
+    @ManagerAuth(memo = "鎵嬪姩涓婁紶璁㈠崟")
+    @Transactional
+    public R report(@RequestParam Long orderId){
+        orderService.report(orderId,getUserId());
         return R.ok();
     }
 
diff --git a/src/main/java/com/zy/asrs/entity/Mat.java b/src/main/java/com/zy/asrs/entity/Mat.java
index 82ed41d..9bd9f90 100644
--- a/src/main/java/com/zy/asrs/entity/Mat.java
+++ b/src/main/java/com/zy/asrs/entity/Mat.java
@@ -324,6 +324,14 @@
     @TableField("store_max_date")
     private Integer storeMaxDate;
 
+    //鍚姩鏃ユ湡
+    @TableField("ds_date")
+    private Date dsDate;
+
+    //寤烘。鏃ユ湡
+    @TableField("d_inv_create_datetime")
+    private Date dInvCreateDatetime;
+
     public Mat() {}
 
     public Mat(String uuid, Long tagId, String matnr, String maktx, String name, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double length, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo, Double storeMax, Double storeMin, Integer storeMaxDate) {
diff --git a/src/main/java/com/zy/asrs/entity/param/MatInfoParam.java b/src/main/java/com/zy/asrs/entity/param/MatInfoParam.java
index b95bb5c..e3feb2d 100644
--- a/src/main/java/com/zy/asrs/entity/param/MatInfoParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/MatInfoParam.java
@@ -70,4 +70,11 @@
     閫氱敤鍨嬪彿
      */
     private String cinvdefine4;
+
+    private boolean type;
+
+    private String memo;
+
 }
+
+
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index 4a05c3f..20f93db 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -6,6 +6,7 @@
 import com.zy.asrs.entity.result.StockVo;
 
 import java.util.List;
+import java.util.Map;
 
 public interface OpenService {
 
@@ -60,4 +61,21 @@
      */
     List<ViewWorkInBean> outlogERP();
 
+    /**
+     * 鍚屾鍟嗗搧淇℃伅
+     * @param param
+     */
+    boolean syncMat(MatInfoParam param);
+
+    /**
+     * 鐢熸垚鍑哄叆搴撳崟鎹�
+     * @param param
+     */
+    boolean syncOrder(Map<String, Object> param);
+
+    /**
+     * 鐢熸垚鍑哄叆搴撳崟鎹�
+     */
+    boolean orderDelete(String orderNo);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java
index a5006be..2418d98 100644
--- a/src/main/java/com/zy/asrs/service/OrderService.java
+++ b/src/main/java/com/zy/asrs/service/OrderService.java
@@ -23,6 +23,8 @@
 
     void remove(Long orderId);
 
+    void report(Long orderId, Long userId);
+
     List<Order> selectComplete();
 
     /**
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 6a7aeae..3307d90 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -13,18 +13,18 @@
 import com.zy.asrs.mapper.ReportQueryMapper;
 import com.zy.asrs.mapper.TagMapper;
 import com.zy.asrs.service.*;
-import com.zy.asrs.task.core.ReturnT;
-import com.zy.asrs.task.handler.WorkLogHandler;
 import com.zy.asrs.utils.MatUtils;
 import com.zy.common.model.DetlDto;
-import com.zy.common.utils.ListUtils;
 import com.zy.common.utils.NodeUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Created by vincent on 2022/4/9
@@ -613,4 +613,164 @@
         return viewWorkInBeans;
     }
 
+    @Transactional
+    public boolean syncMat(MatInfoParam param) {
+        if(!Cools.isEmpty(matService.selectByMatnr(param.getCinvcode()))){
+            callApiLogSave(param, "/open/asrs/mat/v1", "鎺ユ敹ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛侊紒锛佸晢鍝佸凡瀛樺湪锛侊紒锛�", false);
+            param.setType(false);
+            param.setMemo("鍟嗗搧宸插瓨鍦紒");
+            return false;
+        }
+        Date now = new Date();
+        Mat mat = new Mat();
+        //鐗╂枡鍙�
+        mat.setMatnr(param.getCinvcode());
+        //鐗╂枡鍚嶇О
+        mat.setMaktx(param.getCinvname());
+        //瑙勬牸鍨嬪彿
+        mat.setSpecs(param.getCInvStd());
+        //瀛樿揣鍒嗙被缂栫爜
+        mat.setBrand(param.getCinvccode());
+        //瀛樿揣鍒嗙被鍚嶇О
+        mat.setColor(param.getCInvCName());
+        //璁¢噺鍗曚綅
+        mat.setUnit(param.getCComUnitName());
+        //杩涢」绋�
+        mat.setPrice(param.getIImpTaxRate());
+        //閿�椤圭◣
+        mat.setUnits(param.getITaxRate());
+        //鍚敤鏃ユ湡
+        mat.setDsDate(param.getDSDate());
+        //寤烘。浜�
+        mat.setSupp(param.getCCreatePerson());
+        //寤烘。鏃ユ湡
+        mat.setDInvCreateDatetime(param.getDInvCreateDatetime());
+        //閫氱敤鍨嬪彿
+        mat.setModel(param.getCinvdefine4());
+
+        mat.setCreateTime(now);
+        mat.setUpdateTime(now);
+
+        if (matService.insert(mat)) {
+            callApiLogSave(param, "/open/asrs/mat/v1", "鎺ユ敹ERP涓嬪彂鍟嗗搧淇℃伅鎴愬姛锛佹坊鍔犲晢鍝佷俊鎭垚鍔燂紒", true);
+            param.setType(true);
+        } else {
+            callApiLogSave(param, "/open/asrs/mat/v1", "娣诲姞ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛侊紒锛佺姸鎬佸紓甯革紒锛侊紒", false);
+            param.setType(false);
+            param.setMemo("娣诲姞ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛�");
+        }
+
+        matService.insert(mat);
+
+        return true;
+    }
+
+    @Transactional
+    public boolean syncOrder(Map<String, Object> param) {
+        if(Cools.isEmpty(param) || Cools.isEmpty(param.get("orderDetails"))){
+            throw new CoolException("鍗曟嵁鍙傛暟涓虹┖鎴栬�呭崟鎹鎯呬负绌猴紝鏃犳硶鐢熸垚鍗曟嵁淇℃伅");
+        }
+
+        if(!Cools.isEmpty(orderService.selectByNo(param.get("id").toString()))){
+            throw new CoolException("璇ュ崟鎹凡瀛樺湪锛屾棤娉曠敓鎴愬崟鎹俊鎭�");
+        }
+        Order order = orderMapping(param);
+        orderService.insert(order);
+        List<Map<String, Object>> orderDetails = (List<Map<String, Object>>) param.get("orderDetails");
+        orderDetails.forEach(odParam -> {
+            OrderDetl od = orderDetlMapping(order.getOrderNo(),odParam);
+            orderDetlService.insert(od);
+        });
+
+        return true;
+    }
+
+    @Transactional
+    public boolean orderDelete(String orderNo) {
+        Order order = orderService.selectByNo(orderNo);
+        if(Cools.isEmpty(order)){
+            throw new CoolException("鍗曟嵁涓嶅瓨鍦紝鏃犳硶鍒犻櫎鍗曟嵁");
+        }
+
+        if(order.getSettle() != 1){
+            return false;
+        }
+
+        orderService.deleteById(order);
+        orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_no",orderNo));
+
+        return true;
+    }
+
+    private Order orderMapping(Map<String, Object> param){
+        Date now = new Date();
+        Order order = new Order();
+        //uuid
+        order.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+        //鏍哥畻涓讳綋
+        order.setItemName(param.get("account").toString());
+        //鍗曟嵁鍞竴琛ㄧず
+        order.setOrderNo(param.get("id").toString());
+        //涓氬姟绫诲瀷
+        order.setDefNumber(param.get("cBusType").toString());
+        //鍗曟嵁绫诲瀷
+        DocType docType = docTypeService.selectOrAdd(param.get("cVouchType").toString(), Boolean.TRUE);
+        order.setDocType(docType.getDocId());
+        //鍗曟嵁鏃ユ湡
+        order.setOrderTime(param.get("dDate").toString());
+        //渚涘簲鍟�/瀹㈡埛缂栫爜
+        order.setCstmrName(param.get("ks").toString());
+        //浠撳簱
+        order.setTel(param.get("cWhName").toString());
+        //鍑哄叆搴撶被鍒�
+        order.setOperMemb(param.get("cRdName").toString());
+        //閮ㄩ棬
+        order.setSalesman(param.get("cDepCode").toString());
+        //澶囨敞
+        order.setMemo(param.get("cMemo").toString());
+        //鍒跺崟浜�
+        order.setShipCode(param.get("cMaker").toString());
+
+        order.setCreateTime(now);
+        order.setUpdateTime(now);
+
+        //璁㈠崟鐘舵��
+        order.setSettle(1L);
+        //鐘舵��
+        order.setStatus(1);
+        return order;
+    }
+
+    private OrderDetl orderDetlMapping(String orderId, Map<String, Object> odParam){
+        OrderDetl od = new OrderDetl();
+        od.setOrderNo(orderId);
+        //琛屽敮涓�鏍囪瘑
+        od.setItemNum(odParam.get("autoId").toString());
+        //瀛樿揣缂栫爜
+        od.setMatnr(odParam.get("cInvCode").toString());
+        //瀛樿揣鍚嶇О
+        od.setMaktx(odParam.get("cInvName").toString());
+        //瑙勬牸鍨嬪彿
+        od.setSpecs(odParam.get("cInvStd").toString());
+        //璁¢噺鍗曚綅
+        od.setUnit(odParam.get("cComUnitName").toString());
+        //鏁伴噺
+        od.setAnfme(Double.parseDouble(odParam.get("iQuantity").toString()));
+        //琛屽彿
+        od.setBrand(odParam.get("irowno").toString());
+        //閿�鍞鍗曞彿
+        od.setColor(odParam.get("csocode").toString());
+        //閿�鍞鍗曡鍙�
+        od.setOrigin(odParam.get("isoseq").toString());
+
+        return od;
+    }
+
+
+    public void callApiLogSave(MatInfoParam matParam, String tableName, String response, Boolean bool) {
+        apiLogService.save("ERP涓嬪彂鍟嗗搧淇℃伅", tableName, "null", "10.10.10.1",
+                "鐗╂枡缂栫爜锛�" + matParam.getCinvcode() + "銆佺墿鏂欏悕绉帮細" + matParam.getCinvname() + "銆佽鏍硷細" + matParam.getCInvStd() + "銆佸娉細" + matParam.getMemo(),
+                response, bool);
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index 2c6449c..43bee06 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -1,5 +1,7 @@
 package com.zy.asrs.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.core.common.Cools;
@@ -16,12 +18,14 @@
 import com.zy.common.model.OrderDto;
 import com.zy.common.model.OrderMergeVo;
 import com.zy.common.service.erp.ErpService;
+import com.zy.common.utils.HttpHandler;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 @Slf4j
 @Service("orderService")
@@ -45,6 +49,14 @@
     private MatService matService;
     @Autowired
     private ErpService erpService;
+    @Autowired
+    private ApiLogService apiLogService;
+
+    @Value("${u8.url}")
+    private String url;
+
+    @Value("${u8.orderReportPath}")
+    private String orderReportPath;
 
     @Override
     public Order selectByNo(String orderNo) {
@@ -177,6 +189,22 @@
         orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", orderId));
     }
 
+    public void report(Long orderId, Long userId) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Order order = this.selectById(orderId);
+        Map<String, String> param = new HashMap<>();
+        param.put("id",order.getOrderNo());
+        param.put("dDate",sdf.format(new Date()));
+        param.put("cHandler",userId.toString());
+
+        int code = doHttpRequest(param, "鍗曟嵁瀹℃牳", url, orderReportPath, null, "127.0.0.1");
+        //int code = doHttpRequest(param, "鍗曟嵁瀹℃牳", "localhost:8080", "/test/report", null, "127.0.0.1");
+        if(code == 200){
+            order.setSettle(6L);
+            this.updateById(order);
+        }
+    }
+
     @Override
     public List<Order> selectComplete() {
         return this.baseMapper.selectComplete();
@@ -218,4 +246,39 @@
         return this.baseMapper.selectorderNoL(orderNo);
     }
 
+    private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){
+        String response = "";
+        boolean success = false;
+
+        try {
+            response = new HttpHandler.Builder()
+                    .setUri(url)
+                    .setPath(path)
+                    .setJson(JSONObject.toJSONString(requestParam))
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+
+            int code = (int) jsonObject.get("code");
+            if(code != 200){
+                throw new CoolException(jsonObject.get("msg").toString());
+            }
+            success = true;
+            return code;
+        }catch (Exception e){
+            log.error(e.getMessage());
+            throw new CoolException("璋冪敤鎺ュ彛鍝嶅簲閿欒");
+        }finally {
+            apiLogService.save(
+                    namespace,
+                    url + path,
+                    appkey,
+                    ip,
+                    JSON.toJSONString(JSONObject.toJSONString(requestParam)),
+                    response,
+                    success
+            );
+        }
+
+    }
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
index ff7cf34..0169056 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -1,12 +1,9 @@
 package com.zy.asrs.task.handler;
 
 import com.alibaba.fastjson.JSON;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
+import com.alibaba.fastjson.JSONObject;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.DocType;
 import com.zy.asrs.entity.Order;
-import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.service.ApiLogService;
 import com.zy.asrs.service.DocTypeService;
 import com.zy.asrs.service.OrderDetlService;
@@ -14,16 +11,17 @@
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.common.service.erp.ErpService;
-import com.zy.common.service.erp.entity.VoucherDetail;
+import com.zy.common.utils.HttpHandler;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.util.Date;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Created by vincent on 2020/7/7
@@ -45,85 +43,141 @@
     @Autowired
     private ErpService erpService;
 
+    @Value("${u8.url}")
+    private String url;
+
+    @Value("${u8.orderReportPath}")
+    private String orderReportPath;
+
     @Transactional
     public ReturnT<String> start(Order order) {
-        DocType docType = docTypeService.selectById(order.getDocType());
-        if (null == docType) {
-            return SUCCESS;
+
+        Map<String, Object> param = new HashMap<>();
+        param.put("id",order.getOrderNo());
+        param.put("dDate",new Date());
+        param.put("cHandler",9527);
+
+        int code = doHttpRequest(param, "鍗曟嵁瀹℃牳", url, orderReportPath, null, "127.0.0.1");
+        if(code == 200){
+            order.setSettle(6L);
+            orderService.updateById(order);
         }
-        if (!Cools.isEmpty(docType.getMemo())) {
-            if (docType.getMemo().equals("hand")) {
-                // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
-                if (!orderService.updateSettle(order.getId(), 6L, null)) {
-                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
-                }
-                return SUCCESS;
-            }
-        }
-        List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
+
+
+//        DocType docType = docTypeService.selectById(order.getDocType());
+//        if (null == docType) {
+//            return SUCCESS;
+//        }
+//        if (!Cools.isEmpty(docType.getMemo())) {
+//            if (docType.getMemo().equals("hand")) {
+//                // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
+//                if (!orderService.updateSettle(order.getId(), 6L, null)) {
+//                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+//                }
+//                return SUCCESS;
+//            }
+//        }
+
+//        List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
         // 鍏ュ簱瀹屾垚涓婃姤
-        if (docType.getPakin() == 1) {
-            try {
-                // erp 鍚屾
-                int state = 2;
-                if (!erpService.updateStateForVoucher(order.getOrderNo(), state)) {
-                    throw new CoolException(order.getOrderNo() + "璁㈠崟淇敼State涓�"+state+"澶辫触");
-                } else {
-                    erpService.updateTimeForVoucherDetail(order.getOrderNo());
-                }
-
-                // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
-                if (!orderService.updateSettle(order.getId(), 6L, null)) {
-                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
-                }
-
-            } catch (Exception e) {
-                log.error("fail", e);
-                return FAIL.setMsg(e.getMessage());
-            }
-        }
-        // 鍑哄簱瀹屾垚涓婃姤
-        if (docType.getPakout() == 1) {
-            try {
-                double TotalNum = 0.0;
-                Integer TotalCount = orderDetls.size();
-                // erp 鍚屾
-                int state = 2;
-                if (!erpService.updateStateForVoucher(order.getOrderNo(), state)) {
-                    throw new CoolException(order.getOrderNo() + "璁㈠崟淇敼State涓�"+state+"澶辫触");
-                } else {
-                    Date now = new Date();
-                    for (OrderDetl orderDetl : orderDetls) {
-                        TotalNum = TotalNum + orderDetl.getAnfme();
-                        if (null == erpService.selectVoucherDetail(order.getOrderNo(), orderDetl.getBatch())) {
-                            VoucherDetail voucherDetail = new VoucherDetail();
-                            voucherDetail.setVoucherID(order.getOrderNo());
-                            voucherDetail.setPickID("fepvnn0496");
-                            voucherDetail.setBarcode(orderDetl.getBatch());
-                            voucherDetail.setLastUpdatedDate(DateUtils.convert(now));
-                            if (!erpService.insertVoucherDetail(voucherDetail)) {
-                                throw new CoolException(order.getOrderNo() + "璁㈠崟娣诲姞VoucherDetail"+ JSON.toJSONString(voucherDetail)+"澶辫触");
-                            }
-                        }
-                    }
-                }
-                // 鏇存柊閲嶉噺鍜屾暟閲�
-                if (!erpService.updateStateForVoucher(order.getOrderNo(), TotalNum, TotalCount)) {
-                    throw new CoolException(order.getOrderNo() + "璁㈠崟淇敼閲嶉噺鍜屾暟閲忓け璐�");
-                }
-
-                // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
-                if (!orderService.updateSettle(order.getId(), 6L, null)) {
-                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
-                }
-
-            } catch (Exception e) {
-                log.error("fail", e);
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return FAIL.setMsg(e.getMessage());
-            }
-        }
+//        if (docType.getPakin() == 1) {
+//            try {
+//                // erp 鍚屾
+//                int state = 2;
+//                if (!erpService.updateStateForVoucher(order.getOrderNo(), state)) {
+//                    throw new CoolException(order.getOrderNo() + "璁㈠崟淇敼State涓�"+state+"澶辫触");
+//                } else {
+//                    erpService.updateTimeForVoucherDetail(order.getOrderNo());
+//                }
+//
+//                // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
+//                if (!orderService.updateSettle(order.getId(), 6L, null)) {
+//                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+//                }
+//
+//            } catch (Exception e) {
+//                log.error("fail", e);
+//                return FAIL.setMsg(e.getMessage());
+//            }
+//        }
+//        // 鍑哄簱瀹屾垚涓婃姤
+//        if (docType.getPakout() == 1) {
+//            try {
+//                double TotalNum = 0.0;
+//                Integer TotalCount = orderDetls.size();
+//                // erp 鍚屾
+//                int state = 2;
+//                if (!erpService.updateStateForVoucher(order.getOrderNo(), state)) {
+//                    throw new CoolException(order.getOrderNo() + "璁㈠崟淇敼State涓�"+state+"澶辫触");
+//                } else {
+//                    Date now = new Date();
+//                    for (OrderDetl orderDetl : orderDetls) {
+//                        TotalNum = TotalNum + orderDetl.getAnfme();
+//                        if (null == erpService.selectVoucherDetail(order.getOrderNo(), orderDetl.getBatch())) {
+//                            VoucherDetail voucherDetail = new VoucherDetail();
+//                            voucherDetail.setVoucherID(order.getOrderNo());
+//                            voucherDetail.setPickID("fepvnn0496");
+//                            voucherDetail.setBarcode(orderDetl.getBatch());
+//                            voucherDetail.setLastUpdatedDate(DateUtils.convert(now));
+//                            if (!erpService.insertVoucherDetail(voucherDetail)) {
+//                                throw new CoolException(order.getOrderNo() + "璁㈠崟娣诲姞VoucherDetail"+ JSON.toJSONString(voucherDetail)+"澶辫触");
+//                            }
+//                        }
+//                    }
+//                }
+//                // 鏇存柊閲嶉噺鍜屾暟閲�
+//                if (!erpService.updateStateForVoucher(order.getOrderNo(), TotalNum, TotalCount)) {
+//                    throw new CoolException(order.getOrderNo() + "璁㈠崟淇敼閲嶉噺鍜屾暟閲忓け璐�");
+//                }
+//
+//                // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
+//                if (!orderService.updateSettle(order.getId(), 6L, null)) {
+//                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+//                }
+//
+//            } catch (Exception e) {
+//                log.error("fail", e);
+//                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                return FAIL.setMsg(e.getMessage());
+//            }
+//        }
         return SUCCESS;
     }
 
+    private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){
+        String response = "";
+        boolean success = false;
+
+        try {
+            response = new HttpHandler.Builder()
+                    .setUri(url)
+                    .setPath(path)
+                    .setJson(JSONObject.toJSONString(requestParam))
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+
+            int code = (int) jsonObject.get("code");
+            if(code != 200){
+                throw new CoolException(jsonObject.get("msg").toString());
+            }
+            success = true;
+            return code;
+        }catch (Exception e){
+            log.error(e.getMessage());
+            throw new CoolException("璋冪敤鎺ュ彛鍝嶅簲閿欒");
+        }finally {
+            apiLogService.save(
+                    namespace,
+                    url + path,
+                    appkey,
+                    ip,
+                    JSON.toJSONString(JSONObject.toJSONString(requestParam)),
+                    response,
+                    success
+            );
+        }
+
+    }
+
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index c141653..d8ac8ba 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -65,3 +65,7 @@
   url: localhost:8080
   taskCreatePath: /test/task/create
   containerMoveInPath: /test/container/moveIn
+
+u8:
+  url: http://192.168.1.55:8010
+  orderReportPath: /api/RdAudit
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index 795b739..c2f1ccb 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -181,36 +181,39 @@
 }
 
 var matCols = [
-    {field: 'matnr', align: 'center',title: '鐗╂枡鍙�', width: 180}
-    ,{field: 'name', align: 'center',title: '绉诲姩绫诲瀷', hide: true}
-    ,{field: 'maktx', align: 'center',title: '鐗╂枡鍚嶇О', width: 150}
-    ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: false}
-    ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true}
-    ,{field: 'manuDate', align: 'center',title: '鍗曟嵁鏃堕棿', hide: false}
-    ,{field: 'weight', align: 'center',title: '閲嶉噺', hide: false}
-    ,{field: 'units', align: 'center',title: '鏀暟', hide: false}
-    ,{field: 'origin', align: 'center',title: '鐗╂枡鐘舵��', hide: true}
-
-    ,{field: 'color', align: 'center',title: '棰滆壊', hide: false}
-    ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
-    ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: false}
-    ,{field: 'price', align: 'center',title: '鍗曚环', hide: false}
-    ,{field: 'sku', align: 'center',title: 'sku', hide: true}
-    ,{field: 'barcode', align: 'center',title: '鏉$爜', hide: true}
-    ,{field: 'manu', align: 'center',title: '鍘傚', hide: true}
-    ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�', hide: true}
-    ,{field: 'safeQty', align: 'center',title: '瀹夊叏搴撳瓨閲�', hide: true}
-    ,{field: 'length', align: 'center',title: '鍗曠姣涢噸', hide: true}
-    ,{field: 'volume', align: 'center',title: '鍗曠浣撶Н', hide: true}
-    ,{field: 'threeCode', align: 'center',title: '绠卞瓙灏哄', hide: true}
-    ,{field: 'supp', align: 'center',title: '渚涘簲鍟�', hide: true}
-    ,{field: 'suppCode', align: 'center',title: '渚涘簲鍟嗙紪鐮�', hide: true}
-    ,{field: 'beBatch$', align: 'center',title: '鏄惁鎵规', hide: true}
-    ,{field: 'deadTime', align: 'center',title: '淇濊川鏈�', hide: true}
-    ,{field: 'deadWarn', align: 'center',title: '棰勮澶╂暟', hide: true}
-    ,{field: 'source$', align: 'center',title: '鍒惰喘', hide: true}
-    ,{field: 'check$', align: 'center',title: '瑕佹眰妫�楠�', hide: true}
-    ,{field: 'danger$', align: 'center',title: '鍗遍櫓鍝�', hide: true}
+    {field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜', width: 180}
+    //,{field: 'name', align: 'center',title: '绉诲姩绫诲瀷', hide: true}
+    ,{field: 'maktx', align: 'center',title: '瀛樿揣鍚嶇О', width: 150}
+    ,{field: 'specs', align: 'center',title: '瑙勬牸鍨嬪彿', hide: false}
+    ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: false}
+    // ,{field: 'manuDate', align: 'center',title: '鍗曟嵁鏃堕棿', hide: false}
+    // ,{field: 'weight', align: 'center',title: '閲嶉噺', hide: false}
+    // ,{field: 'units', align: 'center',title: '鏀暟', hide: false}
+    // ,{field: 'origin', align: 'center',title: '鐗╂枡鐘舵��', hide: true}
+    ,{field: 'brand', align: 'center',title: '瀛樿揣鍒嗙被缂栫爜', hide: true}
+    ,{field: 'color', align: 'center',title: '瀛樿揣鍒嗙被鍚嶇О', hide: true}
+    ,{field: 'unit', align: 'center',title: '璁¢噺鍗曚綅', hide: true}
+    ,{field: 'price', align: 'center',title: '杩涢」绋�', hide: true}
+    ,{field: 'units', align: 'center',title: '閿�椤圭◣', hide: true}
+    ,{field: 'dsDate', align: 'center',title: '鍚敤鏃ユ湡', hide: true}
+    ,{field: 'supp', align: 'center',title: '寤烘。浜�', hide: true}
+    ,{field: 'dInvCreateDatetime', align: 'center',title: '寤烘。鏃ユ湡', hide: true}
+    // ,{field: 'sku', align: 'center',title: 'sku', hide: true}
+    // ,{field: 'barcode', align: 'center',title: '鏉$爜', hide: true}
+    // ,{field: 'manu', align: 'center',title: '鍘傚', hide: true}
+    // ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�', hide: true}
+    // ,{field: 'safeQty', align: 'center',title: '瀹夊叏搴撳瓨閲�', hide: true}
+    // ,{field: 'length', align: 'center',title: '鍗曠姣涢噸', hide: true}
+    // ,{field: 'volume', align: 'center',title: '鍗曠浣撶Н', hide: true}
+    // ,{field: 'threeCode', align: 'center',title: '绠卞瓙灏哄', hide: true}
+    // ,{field: 'supp', align: 'center',title: '渚涘簲鍟�', hide: true}
+    // ,{field: 'suppCode', align: 'center',title: '渚涘簲鍟嗙紪鐮�', hide: true}
+    // ,{field: 'beBatch$', align: 'center',title: '鏄惁鎵规', hide: true}
+    // ,{field: 'deadTime', align: 'center',title: '淇濊川鏈�', hide: true}
+    // ,{field: 'deadWarn', align: 'center',title: '棰勮澶╂暟', hide: true}
+    // ,{field: 'source$', align: 'center',title: '鍒惰喘', hide: true}
+    // ,{field: 'check$', align: 'center',title: '瑕佹眰妫�楠�', hide: true}
+    // ,{field: 'danger$', align: 'center',title: '鍗遍櫓鍝�', hide: true}
     // ,{field: 'status$', align: 'center',title: '鐘舵��'}
     // ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
     // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index 5f68cdd..88dd47d 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -45,12 +45,20 @@
         cols: [[
             {type: 'numbers'},
             {field: 'orderNo', title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl'},
-            {field: 'docType$', align: 'center', title: '绫诲瀷',  minWidth: 160, width: 160},
-            {field: 'postFee', align: 'center', title: '鎬绘暟閲�',  minWidth: 130, width: 130},
+            {field: 'itemName', align: 'center', title: '鏍哥畻涓讳綋'},
+            {field: 'docType$', align: 'center', title: '鍗曟嵁绫诲瀷'},
+            {field: 'defNumber', align: 'center', title: '涓氬姟绫诲瀷'},
+            //{field: 'postFee', align: 'center', title: '鎬绘暟閲�',  minWidth: 130, width: 130},
             {align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160},
-            {field: 'createTime$', title: '鍒涘缓鏃堕棿', minWidth: 200, width: 200},
+            {field: 'createTime$', title: '鍒涘缓鏃堕棿'},
             {field: 'settle$', align: 'center', title: '鐘舵��', templet: '#settleTpl',  minWidth: 160, width: 160},
             {field: 'memo', align: 'center',title: '澶囨敞', hide: true},
+            {field: 'orderTime', align: 'center',title: '鍗曟嵁鏃ユ湡', hide: true},
+            {field: 'cstmrName', align: 'center',title: '渚涘簲鍟�/瀹㈡埛缂栫爜', hide: true},
+            {field: 'tel', align: 'center',title: '浠撳簱', hide: true},
+            {field: 'operMemb', align: 'center',title: '鍑哄叆搴撶被鍒�', hide: true},
+            {field: 'salesman', align: 'center',title: '閮ㄩ棬', hide: true},
+            {field: 'shipCode', align: 'center',title: '鍒跺崟浜�', hide: true},
             {align: 'center', title: '鎿嶄綔', toolbar: '#operate', width: 180}
         ]],
         request: {
@@ -104,6 +112,8 @@
             doDel(data.id);
         } else if (layEvent === 'complete') {
             doModify(data.id, 4);
+        } else if (layEvent === 'report'){
+            doReport(data.id);
         } else if (layEvent === 'look') {
             var $a = $(obj.tr).find('a[lay-event="look"]');
             var offset = $a.offset();
@@ -112,8 +122,8 @@
             layer.open({
                 type: 1,
                 title: false,
-                area: '820px',
-                offset: [top + 'px', (left - 530 + $a.outerWidth()) + 'px'],
+                area: '1460px',
+                offset: [top + 'px', (left - 900 + $a.outerWidth()) + 'px'],
                 shade: .01,
                 shadeClose: true,
                 fixed: false,
@@ -130,9 +140,9 @@
                         cellMinWidth: 100,
                         cols: [[
                             {type: 'numbers'},
-                            {field: 'matnr', title: '鐗╂枡鍙�', width: 160},
-                            {field: 'maktx', title: '鐗╂枡鍚嶇О', width: 160},
-                            {field: 'batch', title: '搴忓垪鐮�'},
+                            {field: 'matnr', title: '瀛樿揣缂栫爜', width: 160},
+                            {field: 'maktx', title: '瀛樿揣鍚嶇О', width: 160},
+                            {field: 'batch', title: '鎵瑰彿'},
                             {field: 'anfme', title: '鏁伴噺'},
                             {field: 'qty', title: '浣滀笟鏁伴噺', style: 'font-weight: bold'},
                             // {field: 'unit', title: '鍗曚綅'},
@@ -143,7 +153,12 @@
                             // },
                             // {field: 'inQty', title: '宸插叆搴撻噺'},
                             // {field: 'color', title: '棰滆壊'},
-                            {field: 'specs', title: '瑙勬牸'}
+                            {field: 'specs', title: '瑙勬牸鍨嬪彿'},
+                            {field: 'unit', title: '璁¢噺鍗曚綅'},
+                            {field: 'brand', title: '琛屽彿'},
+                            {field: 'color', title: '閿�鍞鍗曞彿'},
+                            {field: 'origin', title: '閿�鍞鍗曡鍙�'},
+                            {field: 'itemNum', title: '琛屽敮涓�鏍囪瘑'}
                         ]],
                         request: {
                             pageName: 'curr',
@@ -428,6 +443,40 @@
         });
     }
 
+    // 涓婁紶瀹℃牳鍗曟嵁
+    function doReport(orderId) {
+        layer.confirm('纭畾瑕佷笂浼犲崟鎹悧锛�', {
+            shade: .1,
+            skin: 'layui-layer-admin'
+        }, function (i) {
+            layer.close(i);
+            layer.load(2);
+            $.ajax({
+                url: baseUrl+"/order/report/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {
+                    orderId: orderId
+                },
+                method: 'POST',
+                success: function (res) {
+                    layer.closeAll('loading');
+                    if (res.code === 200){
+                        if (insTbCount === 0) {
+                            insTb.reload({page: {curr: 1}});
+                        } else {
+                            $(".layui-laypage-btn")[0].click();
+                        }
+                        layer.msg(res.msg, {icon: 1});
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    }else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
     // 淇敼璁㈠崟鐘舵��
     function doModify(orderId, settle) {
         layer.confirm('纭畾瑕佹墜鍔ㄥ畬缁撳悧锛�', {
diff --git a/src/main/webapp/views/order/order.html b/src/main/webapp/views/order/order.html
index 299529b..64fc2aa 100644
--- a/src/main/webapp/views/order/order.html
+++ b/src/main/webapp/views/order/order.html
@@ -109,6 +109,7 @@
         {{# } }}
     {{# } }}
     <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">鍒犻櫎</a>
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-report" lay-event="report">涓婃姤</a>
 </script>
 <!-- 琛ㄦ牸鎿嶄綔鍒� -->
 <script type="text/html" id="tbLook">

--
Gitblit v1.9.1