Selaa lähdekoodia

增加B2B发货提醒相关查询面板

hejq 7 vuotta sitten
vanhempi
commit
fa82cab2e3
22 muutettua tiedostoa jossa 1326 lisäystä ja 14 poistoa
  1. 69 0
      src/main/java/com/uas/platform/b2bManage/controller/SaleNoticeController.java
  2. 13 0
      src/main/java/com/uas/platform/b2bManage/dao/NoticeRecordDao.java
  3. 16 0
      src/main/java/com/uas/platform/b2bManage/dao/NoticeRecordInfoDao.java
  4. 143 0
      src/main/java/com/uas/platform/b2bManage/model/NoticeRecord.java
  5. 216 0
      src/main/java/com/uas/platform/b2bManage/model/NoticeRecordDetail.java
  6. 128 0
      src/main/java/com/uas/platform/b2bManage/model/NoticeRecordInfo.java
  7. 10 0
      src/main/java/com/uas/platform/b2bManage/model/UseType.java
  8. 33 0
      src/main/java/com/uas/platform/b2bManage/service/NoticeRecordService.java
  9. 67 0
      src/main/java/com/uas/platform/b2bManage/service/impl/NoticeRecordServiceImpl.java
  10. 19 0
      src/main/java/com/uas/platform/b2bManage/utils/SearchUtils.java
  11. 0 6
      src/main/java/com/uas/platform/b2bManage/web/filter/SSOInterceptor.java
  12. 2 1
      src/main/webapp/WEB-INF/views/normal/enterprise.html
  13. 2 1
      src/main/webapp/WEB-INF/views/normal/index.html
  14. 3 2
      src/main/webapp/WEB-INF/views/normal/inviteList.html
  15. 3 2
      src/main/webapp/WEB-INF/views/normal/logs.html
  16. 134 0
      src/main/webapp/WEB-INF/views/normal/noticeDetail.html
  17. 125 0
      src/main/webapp/WEB-INF/views/normal/noticeList.html
  18. 3 2
      src/main/webapp/WEB-INF/views/normal/schedularList.html
  19. 2 0
      src/main/webapp/WEB-INF/webmvc.xml
  20. 15 0
      src/main/webapp/resources/js/common/base.js
  21. 178 0
      src/main/webapp/resources/js/common/notice.js
  22. 145 0
      src/main/webapp/resources/js/common/noticeDetail.js

+ 69 - 0
src/main/java/com/uas/platform/b2bManage/controller/SaleNoticeController.java

@@ -0,0 +1,69 @@
+package com.uas.platform.b2bManage.controller;
+
+import com.uas.platform.b2bManage.model.NoticeRecord;
+import com.uas.platform.b2bManage.model.NoticeRecordInfo;
+import com.uas.platform.b2bManage.model.UseType;
+import com.uas.platform.b2bManage.page.PageInfo;
+import com.uas.platform.b2bManage.page.PageParams;
+import com.uas.platform.b2bManage.service.NoticeRecordService;
+import com.uas.platform.b2bManage.service.UseLogService;
+import com.uas.platform.b2bManage.utils.SearchUtils;
+import com.uas.platform.b2bManage.web.BaseController;
+import com.uas.platform.core.util.AgentUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.ParseException;
+
+/**
+ * ERP提醒校验记录
+ *
+ * @author hejq
+ * @date 2018-08-24 14:26
+ */
+@RestController
+@RequestMapping("/noticeRecord")
+public class SaleNoticeController extends BaseController {
+
+    @Autowired
+    private UseLogService useLogService;
+
+    @Autowired
+    private NoticeRecordService recordService;
+
+    /**
+     * 通过分页信息获取发货提醒操作记录等
+     *
+     * @param params 分页参数
+     * @param keyword 关键词
+     * @param method 筛选条件
+     * @return Page<NoticeRecordInfo>
+     */
+    @RequestMapping(value = "/list", method = RequestMethod.GET)
+    public Page<NoticeRecordInfo> findByPageInfo(PageParams params, String keyword,
+                                                 @RequestParam(value = "method", defaultValue = SearchUtils.SEARCH_ALL, required = false) String method) throws ParseException {
+        PageInfo pageInfo = new PageInfo(params);
+        Sort sort = new Sort(Sort.Direction.DESC, "id");
+        pageInfo.setSort(sort);
+        if (!StringUtils.isEmpty(keyword)) {
+            keyword = keyword.trim();
+        }
+        useLogService.appendLog(UseType.SALE_NOTICE_SEARCH.code(), keyword, AgentUtils.getIp(request));
+        return recordService.findRecordByPageInfo(pageInfo, keyword, method);
+    }
+
+    /**
+     * 通过分页信息获取发货提醒操作记录等
+     *
+     * @return Page<NoticeRecordInfo>
+     */
+    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
+    public ModelMap findById(@PathVariable("id") Long id) {
+        useLogService.appendLog(UseType.SALE_NOTICE_DETAIL.code(), String.valueOf(id), AgentUtils.getIp(request));
+        return success(recordService.findById(id));
+    }
+}

+ 13 - 0
src/main/java/com/uas/platform/b2bManage/dao/NoticeRecordDao.java

@@ -0,0 +1,13 @@
+package com.uas.platform.b2bManage.dao;
+
+import com.uas.platform.b2bManage.model.NoticeRecord;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author hejq
+ * @date 2018-08-24 16:42
+ */
+@Repository
+public interface NoticeRecordDao extends JpaRepository<NoticeRecord, Long> {
+}

+ 16 - 0
src/main/java/com/uas/platform/b2bManage/dao/NoticeRecordInfoDao.java

@@ -0,0 +1,16 @@
+package com.uas.platform.b2bManage.dao;
+
+import com.uas.platform.b2bManage.model.NoticeRecordInfo;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * ERP提醒校验记录
+ *
+ * @author hejq
+ * @date 2018-08-24 14:30
+ */
+@Repository
+public interface NoticeRecordInfoDao extends JpaRepository<NoticeRecordInfo, Long>, JpaSpecificationExecutor<NoticeRecordInfo> {
+}

+ 143 - 0
src/main/java/com/uas/platform/b2bManage/model/NoticeRecord.java

@@ -0,0 +1,143 @@
+package com.uas.platform.b2bManage.model;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * ERP提醒校验记录,方便查询两边数据
+ *
+ * @author hejq
+ * @date 2018-08-24 11:05
+ */
+@Entity
+@Table(name = "purc$notice$record", indexes = {
+        @Index(name = "purc$notice$record_enuu_IDX", columnList = "no_enuu")
+})
+public class NoticeRecord implements Serializable {
+
+    /**
+     * 序列号
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Id
+    @Column(name = "no_id")
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long id;
+
+    /**
+     * 企业UU
+     */
+    @Column(name = "no_enuu")
+    @NotNull
+    private Long enUU;
+
+    /**
+     * 企业名称
+     */
+    @Column(name = "no_enname")
+    private String enName = "";
+
+    /**
+     * 录入时间
+     */
+    @Column(name = "no_date")
+    private Date date = new Date(System.currentTimeMillis());
+
+    /**
+     * 描述
+     */
+    @Column(name = "no_describe")
+    private String describe = "";
+
+    /**
+     * 单据类型
+     *  <pre>
+     *      结案、发货
+     *  </pre>
+     */
+    @Column(name = "no_kind")
+    private String kind = "";
+
+    /**
+     * 对应的采购单详情List
+     */
+    @OneToMany(mappedBy = "record", cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.EAGER)
+    private List<NoticeRecordDetail> details;
+
+    /**
+     * 明细异常数据条数
+     */
+    @Column(name = "no_errcount")
+    private Integer errorCount = 0;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getEnUU() {
+        return enUU;
+    }
+
+    public void setEnUU(Long enUU) {
+        this.enUU = enUU;
+    }
+
+    public String getEnName() {
+        return enName;
+    }
+
+    public void setEnName(String enName) {
+        this.enName = enName;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public String getDescribe() {
+        return describe;
+    }
+
+    public void setDescribe(String describe) {
+        this.describe = describe;
+    }
+
+    public String getKind() {
+        return kind;
+    }
+
+    public void setKind(String kind) {
+        this.kind = kind;
+    }
+
+    public List<NoticeRecordDetail> getDetails() {
+        return details;
+    }
+
+    public void setDetails(List<NoticeRecordDetail> details) {
+        this.details = details;
+    }
+
+    public Integer getErrorCount() {
+        return errorCount;
+    }
+
+    public void setErrorCount(Integer errorCount) {
+        this.errorCount = errorCount;
+    }
+}

+ 216 - 0
src/main/java/com/uas/platform/b2bManage/model/NoticeRecordDetail.java

@@ -0,0 +1,216 @@
+package com.uas.platform.b2bManage.model;
+
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.uas.platform.core.model.Constant;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * ERP操作发货提醒记录明细
+ *
+ * @author hejq
+ * @date 2018-08-24 11:19
+ */
+@Entity
+@Table(name = "purc$notice$record$detail", indexes = {
+        @Index(name = "purc$notice$record$detail_noid_IDX", columnList = "nod_noid"),
+        @Index(name = "purc$notice$record$detail_b2bid_IDX", columnList = "nod_b2bid"),
+        @Index(name = "purc$notice$record$detail_okstatus_IDX", columnList = "nod_okstatus")
+})
+public class NoticeRecordDetail implements Serializable {
+
+    /**
+     * 序列号
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Id
+    @Column(name = "nod_id")
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long id;
+
+    /**
+     * 主记录
+     */
+    @ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.PERSIST })
+    @JoinColumn(name = "nod_noid")
+    private NoticeRecord record;
+
+    /**
+     * erpID
+     */
+    @Column(name = "nod_erpid")
+    @NotNull
+    private Long erpId;
+
+    /**
+     * b2bID
+     * <pre>
+     *     -1标识B2B未找到相应的ID,为异常数据
+     * </pre>
+     */
+    @Column(name = "nod_b2bid")
+    private Long b2bId = -1L;
+
+    /**
+     * 发货状态
+     */
+    @Column(name = "nod_status")
+    private Short status = 200;
+
+    /**
+     * 结案状态
+     * <per>
+     *     1. 结案
+     *     0. 未结案
+     * </per>
+     */
+    @Column(name = "nod_end")
+    private Short end = 0;
+
+    /**
+     * 需求数量
+     */
+    @Column(name = "nod_needqty")
+    private Double needQty = 0.00;
+
+    /**
+     * 已发货数量
+     */
+    @Column(name = "nod_sendqty")
+    private Double sendQty = 0.00;
+
+    /**
+     * 记录日期
+     */
+    @Column(name = "nod_date")
+    private Date date = new Date(System.currentTimeMillis());
+
+    /**
+     * 状态,是否正常
+     *  <pre>
+     *      1. YES
+     *      0. NO
+     *  </pre>
+     */
+    @Column(name = "nod_okstatus")
+    private Short okStatus = Constant.YES;
+
+    /**
+     * 发货提醒单录入时间
+     */
+    @Column(name = "nod_nodate")
+    private Date noDate;
+
+    /**
+     * 单据操作备注
+     */
+    @Column(name = "nod_remark")
+    private String remark = "";
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @JSONField(serialize = false)
+    @JsonIgnore
+    public NoticeRecord getRecord() {
+        return record;
+    }
+
+    public void setRecord(NoticeRecord record) {
+        this.record = record;
+    }
+
+    public Long getErpId() {
+        return erpId;
+    }
+
+    public void setErpId(Long erpId) {
+        this.erpId = erpId;
+    }
+
+    public Long getB2bId() {
+        return b2bId;
+    }
+
+    public void setB2bId(Long b2bId) {
+        this.b2bId = b2bId;
+    }
+
+    public Short getStatus() {
+        return status;
+    }
+
+    public void setStatus(Short status) {
+        this.status = status;
+    }
+
+    public Short getEnd() {
+        return end;
+    }
+
+    public void setEnd(Short end) {
+        this.end = end;
+    }
+
+    public Double getNeedQty() {
+        return needQty;
+    }
+
+    public void setNeedQty(Double needQty) {
+        this.needQty = needQty;
+    }
+
+    public Double getSendQty() {
+        return sendQty;
+    }
+
+    public void setSendQty(Double sendQty) {
+        this.sendQty = sendQty;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public Short getOkStatus() {
+        return okStatus;
+    }
+
+    public void setOkStatus(Short okStatus) {
+        this.okStatus = okStatus;
+    }
+
+    public Date getNoDate() {
+        return noDate;
+    }
+
+    public void setNoDate(Date noDate) {
+        this.noDate = noDate;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+}

+ 128 - 0
src/main/java/com/uas/platform/b2bManage/model/NoticeRecordInfo.java

@@ -0,0 +1,128 @@
+package com.uas.platform.b2bManage.model;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * ERP提醒校验记录,方便查询两边数据
+ *
+ * @author hejq
+ * @date 2018-08-24 11:05
+ */
+@Entity
+@Table(name = "purc$notice$record", indexes = {
+        @Index(name = "purc$notice$record_enuu_IDX", columnList = "no_enuu")
+})
+public class NoticeRecordInfo implements Serializable {
+
+    /**
+     * 序列号
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Id
+    @Column(name = "no_id")
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long id;
+
+    /**
+     * 企业UU
+     */
+    @Column(name = "no_enuu")
+    @NotNull
+    private Long enUU;
+
+    /**
+     * 企业名称
+     */
+    @Column(name = "no_enname")
+    private String enName = "";
+
+    /**
+     * 录入时间
+     */
+    @Column(name = "no_date")
+    private Date date = new Date(System.currentTimeMillis());
+
+    /**
+     * 描述
+     */
+    @Column(name = "no_describe")
+    private String describe = "";
+
+    /**
+     * 单据类型
+     *  <pre>
+     *      结案、发货
+     *  </pre>
+     */
+    @Column(name = "no_kind")
+    private String kind = "";
+
+    /**
+     * 明细异常数据条数
+     */
+    @Column(name = "no_errcount")
+    private Integer errorCount = 0;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getEnUU() {
+        return enUU;
+    }
+
+    public void setEnUU(Long enUU) {
+        this.enUU = enUU;
+    }
+
+    public String getEnName() {
+        return enName;
+    }
+
+    public void setEnName(String enName) {
+        this.enName = enName;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public String getDescribe() {
+        return describe;
+    }
+
+    public void setDescribe(String describe) {
+        this.describe = describe;
+    }
+
+    public String getKind() {
+        return kind;
+    }
+
+    public void setKind(String kind) {
+        this.kind = kind;
+    }
+
+    public Integer getErrorCount() {
+        return errorCount;
+    }
+
+    public void setErrorCount(Integer errorCount) {
+        this.errorCount = errorCount;
+    }
+}

+ 10 - 0
src/main/java/com/uas/platform/b2bManage/model/UseType.java

@@ -82,6 +82,16 @@ public enum UseType {
      */
     DELETE_INVITE("清除邀请记录"),
 
+    /**
+     * 查询发货提醒
+     */
+    SALE_NOTICE_SEARCH("查询发货提醒"),
+
+    /**
+     * 查询发货提醒详情
+     */
+    SALE_NOTICE_DETAIL("查询发货提醒详情"),
+
     /**
      * 空状态
      */

+ 33 - 0
src/main/java/com/uas/platform/b2bManage/service/NoticeRecordService.java

@@ -0,0 +1,33 @@
+package com.uas.platform.b2bManage.service;
+
+import com.uas.platform.b2bManage.model.NoticeRecord;
+import com.uas.platform.b2bManage.model.NoticeRecordInfo;
+import com.uas.platform.b2bManage.page.PageInfo;
+import org.springframework.data.domain.Page;
+
+/**
+ * ERP提醒校验记录
+ *
+ * @author hejq
+ * @date 2018-08-24 14:31
+ */
+public interface NoticeRecordService {
+
+    /**
+     * 通过分页信息及搜索条件查询发货提醒记录
+     *
+     * @param pageInfo 分页信息
+     * @param keyword 关键字
+     * @param method 搜索分类
+     * @return Page<NoticeRecordInfo>
+     */
+    Page<NoticeRecordInfo> findRecordByPageInfo(PageInfo pageInfo, String keyword, String method);
+
+    /**
+     * 通过id查询详情
+     *
+     * @param id id
+     * @return NoticeRecord
+     */
+    NoticeRecord findById(Long id);
+}

+ 67 - 0
src/main/java/com/uas/platform/b2bManage/service/impl/NoticeRecordServiceImpl.java

@@ -0,0 +1,67 @@
+package com.uas.platform.b2bManage.service.impl;
+
+import com.uas.platform.b2bManage.core.util.StringUtils;
+import com.uas.platform.b2bManage.dao.NoticeRecordDao;
+import com.uas.platform.b2bManage.dao.NoticeRecordInfoDao;
+import com.uas.platform.b2bManage.model.NoticeRecord;
+import com.uas.platform.b2bManage.model.NoticeRecordInfo;
+import com.uas.platform.b2bManage.page.PageInfo;
+import com.uas.platform.b2bManage.page.criteria.PredicateUtils;
+import com.uas.platform.b2bManage.service.NoticeRecordService;
+import com.uas.platform.b2bManage.utils.SearchUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.stereotype.Service;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Root;
+
+/**
+ * ERP提醒校验记录
+ *
+ * @author hejq
+ * @date 2018-08-24 14:31
+ */
+@Service
+public class NoticeRecordServiceImpl implements NoticeRecordService {
+
+    @Autowired
+    private NoticeRecordInfoDao recordInfoDao;
+
+    @Autowired
+    private NoticeRecordDao recordDao;
+
+    /**
+     * 通过分页信息及搜索条件查询发货提醒记录
+     *
+     * @param pageInfo 分页信息
+     * @param keyword  关键字
+     * @param method   搜索分类
+     * @return Page<NoticeRecordInfo>
+     */
+    @Override
+    public Page<NoticeRecordInfo> findRecordByPageInfo(final PageInfo pageInfo, final String keyword, final String method) {
+        if (!StringUtils.isEmpty(keyword)) {
+            pageInfo.expression(PredicateUtils.like("enName", keyword, true));
+        }
+        if (!StringUtils.isEmpty(method)) {
+            if (SearchUtils.SEARCH_ERROR.equals(method)) {
+                pageInfo.expression(PredicateUtils.lt("errorCount", 0, true));
+            }
+        }
+        return recordInfoDao.findAll((Root<NoticeRecordInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder)
+                -> query.where(pageInfo.getPredicates(root, query, builder)).getRestriction(), pageInfo);
+    }
+
+    /**
+     * 通过id查询详情
+     *
+     * @param id id
+     * @return NoticeRecord
+     */
+    @Override
+    public NoticeRecord findById(Long id) {
+        return recordDao.findOne(id);
+    }
+}

+ 19 - 0
src/main/java/com/uas/platform/b2bManage/utils/SearchUtils.java

@@ -0,0 +1,19 @@
+package com.uas.platform.b2bManage.utils;
+
+/**
+ * @author hejq
+ * @date 2018-08-24 14:38
+ */
+public class SearchUtils {
+
+    /**
+     * 查询全部
+     */
+    public static final String SEARCH_ALL = "all";
+
+    /**
+     * 查询异常数据
+     */
+    public static final String SEARCH_ERROR = "error";
+
+}

+ 0 - 6
src/main/java/com/uas/platform/b2bManage/web/filter/SSOInterceptor.java

@@ -3,17 +3,11 @@ package com.uas.platform.b2bManage.web.filter;
 import com.alibaba.fastjson.JSON;
 import com.uas.platform.b2bManage.core.support.SystemSession;
 import com.uas.platform.b2bManage.model.User;
-import com.uas.platform.b2bManage.service.UserService;
 import com.uas.platform.b2bManage.support.SecurityConstant;
 import com.uas.platform.core.util.AgentUtils;
-import com.uas.platform.core.util.serializer.FlexJsonUtils;
-import com.uas.sso.SSOHelper;
-import com.uas.sso.SSOToken;
 import org.apache.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
-import org.springframework.util.StringUtils;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 

+ 2 - 1
src/main/webapp/WEB-INF/views/normal/enterprise.html

@@ -62,9 +62,10 @@
 		<div class="collapse navbar-collapse">
 			<div class="nav navbar-nav navbar-left">
 				<li><span>企业列表</span></li>
-				<li><a href="/logs" class="link-mall">UAS-API日志</a></li>
+				<li><a href="/logs" class="link-mall">B2B日志</a></li>
                 <li><a href="/schedularList" class="link-mall">UAS轮询地址</a></li>
                 <li><a href="/invite" class="link-mall">邀请注册记录</a></li>
+				<li><a href="/notice" class="link-mall">发货提醒</a></li>
             </div>
             <ul class="nav navbar-nav navbar-right x-login">
                 <li class="dropdown">

+ 2 - 1
src/main/webapp/WEB-INF/views/normal/index.html

@@ -38,9 +38,10 @@
                 </div>
 				<ul class="nav navbar-nav navbar-left">
 					<li><a href="/enterprise" class="link-b2b">企业列表</a></li>
-					<li><a href="/logs" class="link-mall">UAS-API日志</a></li>
+					<li><a href="/logs" class="link-mall">B2B日志</a></li>
 					<li><a href="/schedularList" class="link-mall">UAS轮询地址</a></li>
 					<li><a href="/invite" class="link-mall">邀请注册记录</a></li>
+					<li><a href="/notice" class="link-mall">发货提醒</a></li>
 				</ul>
 				<ul class="nav navbar-nav navbar-right x-nologin">
 					<li><a href="#" class="link-login">登录</a></li>

+ 3 - 2
src/main/webapp/WEB-INF/views/normal/inviteList.html

@@ -113,10 +113,11 @@
 		<div class="collapse navbar-collapse">
 			<div class="nav navbar-nav navbar-left">
 				<li><span>邀请注册记录</span></li>
-				<li><a href="/logs" class="link-mall">UAS-API日志</a></li>
+				<li><a href="/logs" class="link-mall">B2B日志</a></li>
 				<li><a href="/enterprise" class="link-b2b">企业列表</a></li>
 				<li><a href="/schedularList" class="link-mall">UAS轮询地址</a></li>
-			</div>
+                <li><a href="/notice" class="link-mall">发货提醒</a></li>
+            </div>
             <ul class="nav navbar-nav navbar-right x-login">
                 <li class="dropdown">
                     <a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>

+ 3 - 2
src/main/webapp/WEB-INF/views/normal/logs.html

@@ -23,7 +23,7 @@
 	<link rel="stylesheet" href="static/css/common.css" />
 	<link rel="stylesheet" href="static/css/enterprise.css" />
     <link rel="stylesheet" href="static/css/pagination.css">
-	<title>UAS-API日志</title>
+	<title>B2B日志</title>
 </head>
 <body>
 <style>
@@ -81,10 +81,11 @@
 		</div>
 		<div class="collapse navbar-collapse">
 			<div class="nav navbar-nav navbar-left">
-				<li><span>UAS-API日志</span></li>
+				<li><span>B2B日志</span></li>
 				<li><a href="/enterprise" class="link-b2b">企业列表</a></li>
 				<li><a href="/schedularList" class="link-mall">UAS轮询地址</a></li>
 				<li><a href="/invite" class="link-mall">邀请注册记录</a></li>
+				<li><a href="/notice" class="link-mall">发货提醒</a></li>
 			</div>
             <ul class="nav navbar-nav navbar-right x-login">
                 <li class="dropdown">

+ 134 - 0
src/main/webapp/WEB-INF/views/normal/noticeDetail.html

@@ -0,0 +1,134 @@
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="Content-Language" Content="zh-CN">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软科技">
+	<meta name="Keywords" content="优软,优软云,优企云服,SAAS,UAS,ERP,企业管理">
+	<meta name="baidu-site-verification" content="tamBdrxeYx" />
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=8">
+	<meta http-equiv="Expires" content="0">
+	<meta http-equiv="Pragma" content="no-cache">
+	<meta http-equiv="Cache-control" content="no-cache, must-revalidate">
+	<meta http-equiv="Cache" content="no-cache">
+	<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet" href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<title>发货提醒详情</title>
+</head>
+<body>
+<style>
+    .section-title{
+        height: 55px;
+    }
+	.section-title .title {
+        height: 26px;
+        margin-top: 50px;
+    }
+    #nav {
+        height: 71px;
+    }
+    #logo {
+        margin-top: 10px;
+    }
+</style>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header" >
+			<a href="/" id="logo"><img src="static/img/logo.png" alt="" height="25px" /></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<div class="nav navbar-nav navbar-left">
+				<li><a href="/notice" class="link-mall" style="font-size: 16px; color: #fff">发货提醒</a></li>
+				<li><a href="/enterprise" class="link-b2b">企业列表</a></li>
+				<li><a href="/logs" class="link-mall">B2B日志</a></li>
+				<li><a href="/schedularList" class="link-mall">UAS轮询地址</a></li>
+				<li><a href="/invite" class="link-mall">邀请注册记录</a></li>
+			</div>
+			<ul class="nav navbar-nav navbar-right x-login">
+				<li class="dropdown">
+					<a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+				</li>
+				<li><a href="#" class="link-logout">退出</a></li>
+			</ul>
+		</div>
+	</div>
+</nav>
+
+<!-- nav end -->
+
+<!-- section start -->
+<section>
+	<div class="container">
+		<div class="section-title">
+			<h3 class="title text-center">发货提醒详情</h3>
+		</div>
+        <div class="panel panel-default">
+            <div class="panel-heading">
+                <h3 class="panel-title">基础信息</h3>
+            </div>
+            <div class="panel-body">
+                <form class="form-horizontal" role="form">
+                    <div class="form-group col-sm-6">
+                        <label class="col-sm-2 control-label">企业名称</label>
+                        <div class="col-sm-10">
+                            <p class="form-control-static" id="enName"></p>
+                        </div>
+                    </div>
+                    <div class="form-group col-sm-6">
+                        <label class="col-sm-2 control-label">UU</label>
+                        <div class="col-sm-10">
+                            <p class="form-control-static" id="UU"></p>
+                        </div>
+                    </div>
+                    <div class="form-group col-sm-6">
+                        <label class="col-sm-2 control-label">备注</label>
+                        <div class="col-sm-10">
+                            <p class="form-control-static" id="remark"></p>
+                        </div>
+                    </div>
+                    <div class="form-group col-sm-6">
+                        <label class="col-sm-2 control-label">时间</label>
+                        <div class="col-sm-10">
+                            <p class="form-control-static" id="date"></p>
+                        </div>
+                    </div>
+                </form>
+            </div>
+            <div class="panel-heading">
+                <h3 class="panel-title">详情</h3>
+            </div>
+            <div class="panel-body">
+                <table class="table table-striped table-hover" style="overflow: scroll">
+                    <thead id="detail-head">
+                    <th class="text-center" width="50">序号</th>
+                    <th class="text-center" width="50">erpId</th>
+                    <th class="text-center" width="50">b2bId</th>
+                    <th class="text-center" width="100">需求数量</th>
+                    <th class="text-center" width="100">已发数量</th>
+                    <th class="text-center" width="50">结案状态</th>
+                    <th class="text-center" width="50">发货状态</th>
+                    <th class="text-center" width=100">录单时间</th>
+                    <th class="text-center" width=100">备注</th>
+                    </thead>
+                    <tbody id="detail-body">
+                    </tbody>
+                    <div id="page"></div>
+                </table>
+            </div>
+        </div>
+	</div>
+</section>
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/lib/bootstrap/js/bootstrap.min.js"></script>
+<script type="text/javascript" src="static/lib/bootstrap-tour/js/bootstrap-tour.min.js"></script>
+<script type="text/javascript" src="static/js/common/noticeDetail.js"></script>
+<script type="text/javascript" src="static/js/index/app.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+</html>

+ 125 - 0
src/main/webapp/WEB-INF/views/normal/noticeList.html

@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="Content-Language" Content="zh-CN">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软科技">
+	<meta name="Keywords" content="优软,优软云,优企云服,SAAS,UAS,ERP,企业管理">
+	<meta name="baidu-site-verification" content="tamBdrxeYx" />
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=8">
+	<meta http-equiv="Expires" content="0">
+	<meta http-equiv="Pragma" content="no-cache">
+	<meta http-equiv="Cache-control" content="no-cache, must-revalidate">
+	<meta http-equiv="Cache" content="no-cache">
+	<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet"
+		  href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/enterprise.css" />
+    <link rel="stylesheet" href="static/css/pagination.css">
+	<title>发货提醒</title>
+</head>
+<body>
+<style>
+	#loadingDiv {
+		position: absolute;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		top: 0;
+		/*background: #000000;*/
+		opacity: 0.3;
+		filter: alpha(opacity=80);
+		z-index: 10000;
+        display: none;
+	}
+	#loadingImg {
+		position: absolute;
+		cursor: wait;
+		left: 45%;
+		top: 50%;
+		width: auto;
+        height: auto;
+	}
+    #pa_detail pre {
+        outline: 1px solid #ccc; padding: 5px; margin: 5px;
+    }
+
+</style>
+<div id="loadingDiv">
+	<div id="loadingImg">
+		<img src="../static/images/waiting.gif"/>
+	</div>
+</div>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="/" id="logo"><img src="static/img/logo.png" alt="" height="25px" /></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<div class="nav navbar-nav navbar-left">
+				<li><span>发货提醒</span></li>
+				<li><a href="/enterprise" class="link-b2b">企业列表</a></li>
+				<li><a href="/logs" class="link-mall">B2B日志</a></li>
+				<li><a href="/schedularList" class="link-mall">UAS轮询地址</a></li>
+				<li><a href="/invite" class="link-mall">邀请注册记录</a></li>
+			</div>
+            <ul class="nav navbar-nav navbar-right x-login">
+                <li class="dropdown">
+                    <a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+                </li>
+                <li><a href="#" class="link-logout">退出</a></li>
+            </ul>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- section start -->
+<section>
+	<div class="container">
+		<div class="section-title">
+			<h3>发货提醒</h3>
+		</div>
+	</div>
+    <div class="search">
+        <div class="search-title" style="float: right">
+			<input id="noticeList-total" style="width: 100px; border:0;outline:0;background: #F7F7F8" readonly>
+		</div>
+        <div class="input-group">
+            <input type="text" id="keyword" class="form-control" placeholder="请输入名称或UU号搜索"><span class="input-group-addon" id="p_search">搜索</span>
+        </div>
+    </div>
+	<table class="table table-striped table-hover" style="overflow: scroll">
+		<thead id="noticeList-head">
+            <th class="text-center" width="50">序号</th>
+            <th class="text-center" width="100">时间</th>
+            <th class="text-center" width="80">企业UU</th>
+            <th class="text-center" width="150">企业名称</th>
+            <th class="text-center" width="150">备注</th>
+			<th class="text-center" width="120">提示</th>
+            <th class="text-center" width="50">操作</th>
+		</thead>
+        <tbody id="noticeList-body">
+        </tbody>
+        <div id="page"></div>
+    </table>
+    <div id="m-page" class="m-style"></div>
+</section>
+<!-- section end -->
+
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/lib/bootstrap/js/bootstrap.min.js"></script>
+<script type="text/javascript" src="static/lib/bootstrap-tour/js/bootstrap-tour.min.js"></script>
+<script type="text/javascript" src="static/js/common/notice.js"></script>
+<script type="text/javascript" src="static/js/index/app.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+</html>

+ 3 - 2
src/main/webapp/WEB-INF/views/normal/schedularList.html

@@ -93,9 +93,10 @@
 			<div class="nav navbar-nav navbar-left">
                 <li><span>UAS轮询地址</span></li>
                 <li><a href="/enterprise" class="link-b2b">企业列表</a></li>
-                <li><a href="/logs" class="link-mall">UAS-API日志</a></li>
+                <li><a href="/logs" class="link-mall">B2B日志</a></li>
                 <li><a href="/invite" class="link-mall">邀请注册记录</a></li>
-			</div>
+                <li><a href="/notice" class="link-mall">发货提醒</a></li>
+            </div>
             <ul class="nav navbar-nav navbar-right x-login">
                 <li class="dropdown">
                     <a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>

+ 2 - 0
src/main/webapp/WEB-INF/webmvc.xml

@@ -54,6 +54,8 @@
     <mvc:view-controller path="/invalid" view-name="invalid" />
     <mvc:view-controller path="/**#" view-name="signIn" />
 	<mvc:view-controller path="/invite" view-name="inviteList" />
+	<mvc:view-controller path="/notice" view-name="noticeList" />
+    <mvc:view-controller path="/notice_detail" view-name="noticeDetail" />
 	<mvc:interceptors>
 		<!-- SSO过滤 -->
 		<mvc:interceptor>

+ 15 - 0
src/main/webapp/resources/js/common/base.js

@@ -138,4 +138,19 @@ function highLightKeywords(text, words, tag) {
  */
 function trimStr(str) {
     return str.replace(/(^\s*)|(\s*$)/g, "");
+}
+
+/**
+ * 获取地址栏参数
+ *
+ * @param name 参数名
+ * @returns {string}
+ */
+function getQueryString(name) {
+    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
+    var r = window.location.search.substr(1).match(reg);
+    if (r != null)  {
+        return decodeURI(r[2]);
+    }
+    return "";
 }

+ 178 - 0
src/main/webapp/resources/js/common/notice.js

@@ -0,0 +1,178 @@
+/**
+ * 引入toaster方法
+ */
+document.write("<script language=javascript src='static/js/common/toastr.js'></script>");
+
+/**
+ * 引入分页
+ */
+document.write("<script language=javascript src='static/lib/jquery/jquery.pagination.js'></script>");
+
+/**
+ * 引入base方法
+ */
+document.write("<script language=javascript src='static/js/common/base.js'></script>");
+
+/**
+ * 初始化noticeList
+ *
+ * @type {Array}
+ */
+var noticeList = [];
+/**
+ * 获取日志列表
+ */
+function getNoticeList(count, page, keyword, method) {
+    $('#loadingDiv').show();
+    $("#noticeList-body").empty();
+    logList = [];
+    $.get('noticeRecord/list', {
+        count: count,
+        page: page,
+        keyword: keyword,
+        method: method
+    }, function (data) {
+        $('#loadingDiv').hide();
+        noticeList = data.content;
+        var pageNumber = data.number;
+        var pageSize = data.size;
+        var total = data.totalElements;
+        var totalPage = data.totalPages;
+        var tbody = document.getElementById("noticeList-body");
+        var page = document.getElementById("page");
+        var method = document.getElementById("method");
+        //noinspection JSAnnotator
+        $('#noticeList-total').val('共 ' + total + ' 条');
+        if (noticeList.length > 0) {
+            for (var i = 0; i < noticeList.length; i++) {
+                var trow = getDataRow(noticeList[i], i); //定义一个方法,返回tr数据
+                tbody.appendChild(trow);
+                // 查询详情
+                (function(i) {
+                    $("#notice_detail_" + noticeList[i].id ).click(function () {
+                        getDetail(noticeList[i].id);
+                        $('#loadingDiv').show();
+                    });
+                })(i);
+            }
+
+            // 点击搜索
+            $('#p_search').unbind('click').click(function () {// 每次先解除上次绑定的事件,防止重复发送请求
+                $("#noticeList-body").load(location.href + " #logList-body");
+                getNoticeList(count, 1, $('#keyword').val(), method);
+            });
+
+            // 键盘确认按钮搜索
+            document.onkeydown = function(event) {
+                var e = event || window.event;
+                if (e && e.keyCode == 13) { // enter 键
+                    $("#logList-body").load(location.href + " #logList-body");
+                    getNoticeList(count, 1, $('#keyword').val(), method);
+                }
+            };
+        }
+        $('#m-page').pagination({
+            pageCount: totalPage,
+            totalData: total,
+            current: pageNumber,
+            showData: pageSize,
+            coping: true,
+            homePage: '首页',
+            endPage: '末页',
+            prevContent: '<<',
+            nextContent: '>>',
+            jump: true,
+            jumpBtn: '跳转',
+            callback: function (api) {
+                $('.now').text(api.getCurrent());
+                $("#noticeList-body").load(location.href + " #logList-body");
+                getNoticeList(count, api.getCurrent(), $('#keyword').val(), method);
+            }
+        }, function (api) {
+            $('.now').text(api.getCurrent());
+        });
+    })
+}
+
+/**
+ * 获取详情
+ */
+function getDetail(id) {
+    window.location.href = "/notice_detail?id=" + id;
+}
+
+/**
+ * 建立表格数据
+ *
+ * @param notice 内容
+ * @param i 行数
+ * @returns {Element}
+ */
+function getDataRow(notice, i) {
+    var keyword = $('#keyword').val();
+
+    var row = document.createElement('tr'); //创建行
+    /*if (notice.errorCount > 0) {
+        row.setAttribute('class', 'danger');
+    }*/
+
+    var indexCell = document.createElement('td'); //序号
+    indexCell.setAttribute("class", "text-center");
+    indexCell.innerHTML = i + 1; //填充数据
+    row.appendChild(indexCell);
+
+    var dateCell = document.createElement('td'); //时间
+    dateCell.setAttribute("class", "text-center");
+    dateCell.innerHTML = formatDateTime(notice.date); //填充数据
+    row.appendChild(dateCell);
+
+    var uuCell = document.createElement('td'); //enUU
+    uuCell.setAttribute("class", "text-center");
+    uuCell.innerHTML = highLightKeywords(notice.enUU, keyword, null); //填充数据
+    row.appendChild(uuCell);
+
+    var nameCell = document.createElement('td'); //enName
+    nameCell.setAttribute("class", "text-center");
+    nameCell.innerHTML = highLightKeywords(notice.enName, keyword, null); //填充数据
+    row.appendChild(nameCell);
+
+    var describeCell = document.createElement('td'); //备注
+    describeCell.setAttribute("class", "text-center");
+    describeCell.innerHTML = notice.describe; //填充数据
+    row.appendChild(describeCell);
+
+    var msgCell = document.createElement('td'); //msg
+    msgCell.setAttribute("class", "text-center");
+    if (notice.errorCount == 0) {
+        msgCell.innerHTML = '数据正常';
+    } else  {
+        msgCell.innerHTML = '存在异常数据' + '<span style="color: red;"><strong>' + notice.errorCount  + '</strong></span>' + '条,请注意查看';
+    }
+    row.appendChild(msgCell);
+
+    var hanldeCell = document.createElement('td'); //parameters
+    hanldeCell.setAttribute("class", "text-center");
+    hanldeCell.setAttribute("title", "查看参数详情");
+    hanldeCell.innerHTML = "详情"; //填充数据
+    hanldeCell.setAttribute("id", "notice_detail_" + notice.id)
+    row.appendChild(hanldeCell);
+
+    return row;
+}
+
+$(function() {
+    'use strict';
+
+    // 监听页面滚动
+    $(window).scroll(function() {
+        if($(window).scrollTop() >= 400) {
+            $('#nav').addClass('on');
+        } else {
+            $('#nav').removeClass('on');
+        }
+    });
+
+    // 设置分页大小
+    var count = 20;
+    getNoticeList(count, 1, null, "all");
+});

+ 145 - 0
src/main/webapp/resources/js/common/noticeDetail.js

@@ -0,0 +1,145 @@
+/**
+ * 引入toaster方法
+ */
+document.write("<script language=javascript src='static/js/common/toastr.js'></script>");
+
+/**
+ * 引入分页
+ */
+document.write("<script language=javascript src='static/lib/jquery/jquery.pagination.js'></script>");
+
+/**
+ * 引入base方法
+ */
+document.write("<script language=javascript src='static/js/common/base.js'></script>");
+
+/**
+ * 获取详情
+ */
+function getDetail(id) {
+    $.ajax('noticeRecord/' + id, {
+        method: 'GET',
+        async: false,
+        success: function(data) {
+            if (data.content) {
+                var notice = data.content;
+                $('#enName').text(notice.enName);
+                $('#UU').text(notice.enUU);
+                $('#remark').text(notice.describe);
+                $('#date').text(formatDateTime(notice.date));
+                var details = notice.details;
+                var tbody = document.getElementById("detail-body");
+                if (details.length > 0) {
+                    for (var i = 0; i < details.length; i++) {
+                        var trow = getDataRow(details[i], i); //定义一个方法,返回tr数据
+                        tbody.appendChild(trow);
+                    }
+                }
+            }
+        },
+        error: function (error) {
+            alert(error.responseText);
+        }
+    });
+}
+
+/**
+ * 建立表格数据
+ *
+ * @param notice 内容
+ * @param i 行数
+ * @returns {Element}
+ */
+function getDataRow(detail, i) {
+    var keyword = $('#keyword').val();
+
+    var row = document.createElement('tr'); //创建行
+
+    var indexCell = document.createElement('td'); //序号
+    indexCell.setAttribute("class", "text-center");
+    indexCell.innerHTML = i + 1; //填充数据
+    row.appendChild(indexCell);
+
+    var erpIdCell = document.createElement('td'); //erpID
+    erpIdCell.setAttribute("class", "text-center");
+    erpIdCell.innerHTML = detail.erpId; //填充数据
+    row.appendChild(erpIdCell);
+
+    var b2bIdCell = document.createElement('td'); //b2bId
+    b2bIdCell.setAttribute("class", "text-center");
+    b2bIdCell.innerHTML = detail.b2bId; //填充数据
+    row.appendChild(b2bIdCell);
+
+    var needQtyCell = document.createElement('td'); //needQty
+    needQtyCell.setAttribute("class", "text-center");
+    needQtyCell.innerHTML = detail.needQty; //填充数据
+    row.appendChild(needQtyCell);
+
+    var sendQtyCell = document.createElement('td'); //sendQty
+    sendQtyCell.setAttribute("class", "text-center");
+    sendQtyCell.innerHTML = detail.sendQty; //填充数据
+    row.appendChild(sendQtyCell);
+
+    var endCell = document.createElement('td'); //endStatus
+    endCell.setAttribute("class", "text-center");
+    endCell.innerHTML = detail.end == 1 ? '已结案' : '未结案';
+    row.appendChild(endCell);
+
+    var sendCell = document.createElement('td'); //sendStatus
+    sendCell.setAttribute("class", "text-center");
+    sendCell.setAttribute("title", "查看参数详情");
+    sendCell.innerHTML = detail.status == 201 ? '已发货' : '未发货';
+    row.appendChild(sendCell);
+
+    var dateCell = document.createElement('td'); //时间
+    dateCell.setAttribute("class", "text-center");
+    dateCell.innerHTML = detail.noDate == null ? '-' : formatDateTime(detail.noDate); //填充数据
+    row.appendChild(dateCell);
+
+    var remarkCell = document.createElement('td'); //时间
+    remarkCell.setAttribute("class", "text-center");
+    if (detail.okStatus == 1) {
+        remarkCell.innerHTML = '正常';
+    } else {
+        if (detail.b2bId == -1) {
+            remarkCell.innerHTML = '<span style="color: red;">B2B未找到对应单据</span>';
+        } else {
+            remarkCell.innerHTML = '<span style="color: red;">异常</span>'; //填充数据
+        }
+    }
+    row.appendChild(remarkCell);
+
+    return row;
+}
+
+/**
+ * 获取参数值
+ *
+ * @param name 参数名
+ * @returns {*}
+ */
+function getQueryString(name) {
+    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
+    var r = window.location.search.substr(1).match(reg);
+    if (r != null)  {
+        return decodeURI(r[2]);
+    }
+    return "";
+}
+
+$(function() {
+    'use strict';
+
+    // 监听页面滚动
+    $(window).scroll(function() {
+        if($(window).scrollTop() >= 400) {
+            $('#nav').addClass('on');
+        } else {
+            $('#nav').removeClass('on');
+        }
+    });
+
+    var idParam = "id";
+    var id = getQueryString(idParam);
+    getDetail(id);
+});