Browse Source

轮询地址记录增加

hejq 7 years ago
parent
commit
bbbd54e75f

+ 3 - 0
src/main/java/com/uas/platform/b2bManage/controller/AccountController.java

@@ -25,6 +25,9 @@ import java.io.UnsupportedEncodingException;
 
 /**
  * 账户信息
+ * 
+ * @author hejq
+ * @date 2018-07-04 19:14
  */
 @RestController
 public class AccountController extends BaseController {

+ 84 - 0
src/main/java/com/uas/platform/b2bManage/controller/UasSchedularController.java

@@ -0,0 +1,84 @@
+package com.uas.platform.b2bManage.controller;
+
+import com.uas.platform.b2bManage.core.util.StringUtils;
+import com.uas.platform.b2bManage.model.UasSchedular;
+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.UasSchedularService;
+import com.uas.platform.b2bManage.service.UseLogService;
+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.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * ERP轮询地址
+ *
+ * @author hejq
+ * @date 2018-07-04 18:32
+ */
+@RestController
+@RequestMapping("/schedular")
+public class UasSchedularController extends BaseController {
+
+    @Autowired
+    private UasSchedularService schedularService;
+
+    @Autowired
+    private UseLogService useLogService;
+
+    /**
+     * 设置轮询地址
+     *
+     * @param schedular 轮询信息
+     * @return
+     */
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    public ModelMap saveConfig(UasSchedular schedular) {
+        UasSchedular newSchedular = schedularService.save(schedular);
+        useLogService.appendLog(UseType.SET_UAS_SCHEDULAR.code(), schedular.getId() == null ? "新增" : "修改", AgentUtils.getIp(request));
+        return success(newSchedular);
+    }
+
+    /**
+     * 删除配置信息
+     *
+     * @param id id
+     * @return
+     */
+    @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
+    public ModelMap deleteConfig(@PathVariable("id") Long id) {
+        schedularService.deleteById(id);
+        useLogService.appendLog(UseType.DEL_UAS_SCHEDULAR.code(), "id: " + id, AgentUtils.getIp(request));
+        return success();
+    }
+
+    /**
+     * 获取分页信息
+     *
+     * @param params 分页参数
+     * @param keyword 关键字
+     * @param request 请求
+     * @return
+     */
+    @RequestMapping(value = "/list", method = RequestMethod.GET)
+    public Page<UasSchedular> findByPageInfo(PageParams params, String keyword, HttpServletRequest request) {
+        PageInfo info = new PageInfo(params);
+        Sort sort = new Sort(Sort.Direction.ASC, "id");
+        info.setSort(sort);
+        if (!StringUtils.isEmpty(keyword)) {
+            keyword = keyword.trim();
+        }
+        useLogService.appendLog(UseType.UAS_SCHEDULAR_SEARCH.code(), keyword, AgentUtils.getIp(request));
+        return schedularService.findConfigPageByKeyword(info, keyword);
+    }
+}

+ 14 - 0
src/main/java/com/uas/platform/b2bManage/dao/UasSchedularDao.java

@@ -0,0 +1,14 @@
+package com.uas.platform.b2bManage.dao;
+
+import com.uas.platform.b2bManage.model.UasSchedular;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author hejq
+ * @date 2018-07-04 18:39
+ */
+@Repository
+public interface UasSchedularDao extends JpaSpecificationExecutor<UasSchedular>, JpaRepository<UasSchedular, Long> {
+}

+ 93 - 0
src/main/java/com/uas/platform/b2bManage/model/UasSchedular.java

@@ -0,0 +1,93 @@
+package com.uas.platform.b2bManage.model;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 轮询地址管理
+ *
+ * @author hejq
+ * @date 2018-07-04 18:25
+ */
+@Table(name = "uas$schedular")
+@Entity
+public class UasSchedular implements Serializable {
+
+    /**
+     * default serialVersionUID
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    @Column(name = "us_id")
+    private Long id;
+
+    /**
+     * 账套名称
+     */
+    @Column(name = "us_name")
+    private String name = "";
+
+    /**
+     * 轮询地址
+     */
+    @Column(name = "us_url")
+    private String url = "";
+
+    /**
+     * 编辑人
+     */
+    @Column(name = "us_user")
+    private String user = "";
+
+    /**
+     * 编辑时间
+     */
+    @Column(name = "us_date")
+    private Date date = new Date(System.currentTimeMillis());
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getUser() {
+        return user;
+    }
+
+    public void setUser(String user) {
+        this.user = user;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+}

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

@@ -47,6 +47,21 @@ public enum UseType {
      */
     RESETPASSWORD("修改密码"),
 
+    /**
+     * 设置轮询地址
+     */
+    SET_UAS_SCHEDULAR("设置轮询地址"),
+
+    /**
+     * 删除轮询地址
+     */
+    DEL_UAS_SCHEDULAR("删除轮询地址"),
+
+    /**
+     * 搜索轮询地址
+     */
+    UAS_SCHEDULAR_SEARCH("搜索轮询地址"),
+
     /**
      * 空状态
      */

+ 38 - 0
src/main/java/com/uas/platform/b2bManage/service/UasSchedularService.java

@@ -0,0 +1,38 @@
+package com.uas.platform.b2bManage.service;
+
+import com.uas.platform.b2bManage.model.EnterpriseBaseInfo;
+import com.uas.platform.b2bManage.model.UasSchedular;
+import com.uas.platform.b2bManage.page.PageInfo;
+import org.springframework.data.domain.Page;
+
+/**
+ * ERP轮询地址
+ *
+ * @author hejq
+ * @date 2018-07-04 18:42
+ */
+public interface UasSchedularService {
+
+    /**
+     * 保存轮询地址配置
+     *
+     * @param schedular 轮询地址配置信息
+     * @return
+     */
+    UasSchedular save(UasSchedular schedular);
+
+    /**
+     * 通过id删除配置信息
+     *
+     * @param id id
+     */
+    void deleteById(Long id);
+
+    /**
+     * 通过关键词查询配置信息
+     * @param info 分页参数
+     * @param keyword 关键词
+     * @return
+     */
+    Page<UasSchedular> findConfigPageByKeyword(PageInfo info, String keyword);
+}

+ 85 - 0
src/main/java/com/uas/platform/b2bManage/service/impl/UasSchedularServiceImpl.java

@@ -0,0 +1,85 @@
+package com.uas.platform.b2bManage.service.impl;
+
+import com.uas.platform.b2bManage.core.support.SystemSession;
+import com.uas.platform.b2bManage.core.util.StringUtils;
+import com.uas.platform.b2bManage.dao.UasSchedularDao;
+import com.uas.platform.b2bManage.model.EnterpriseBaseInfo;
+import com.uas.platform.b2bManage.model.UasSchedular;
+import com.uas.platform.b2bManage.page.PageInfo;
+import com.uas.platform.b2bManage.page.criteria.CriterionExpression;
+import com.uas.platform.b2bManage.page.criteria.LogicalExpression;
+import com.uas.platform.b2bManage.page.criteria.SimpleExpression;
+import com.uas.platform.b2bManage.service.UasSchedularService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.Date;
+
+/**
+ * ERP轮询地址
+ *
+ * @author hejq
+ * @date 2018-07-04 18:42
+ */
+@Service
+public class UasSchedularServiceImpl implements UasSchedularService {
+
+    @Autowired
+    private UasSchedularDao schedularDao;
+
+    /**
+     * 保存轮询地址配置
+     *
+     * @param schedular 轮询地址配置信息
+     * @return
+     */
+    @Override
+    public UasSchedular save(UasSchedular schedular) {
+        schedular.setUser(SystemSession.getUser().getName());
+        schedular.setDate(new Date(System.currentTimeMillis()));
+        return schedularDao.save(schedular);
+    }
+
+    /**
+     * 通过id删除配置信息
+     *
+     * @param id id
+     */
+    @Override
+    public void deleteById(Long id) {
+        if (schedularDao.exists(id)) {
+            schedularDao.delete(id);
+        }
+    }
+
+    /**
+     * 通过关键词查询配置信息
+     *
+     * @param info    分页参数
+     * @param keyword 关键词
+     * @return
+     */
+    @Override
+    public Page<UasSchedular> findConfigPageByKeyword(final PageInfo info, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            SimpleExpression name = new SimpleExpression("name", keyword, CriterionExpression.Operator.LIKE, true);
+            SimpleExpression url = new SimpleExpression("url", keyword, CriterionExpression.Operator.LIKE, true);
+            SimpleExpression[] expressions = new SimpleExpression[]{name, url};
+            LogicalExpression logical = new LogicalExpression(expressions, CriterionExpression.Operator.OR);
+            info.expression(logical);
+        }
+        return schedularDao.findAll(new Specification<UasSchedular>() {
+            @Override
+            public Predicate toPredicate(Root<UasSchedular> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+                query.where(info.getPredicates(root, query, builder));
+                return null;
+            }
+        }, info);
+    }
+}

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

@@ -36,6 +36,7 @@
 				<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="/schedularList" class="link-mall">UAS轮询地址</a></li>
 				</ul>
 				<ul class="nav navbar-nav navbar-right x-nologin">
 					<li><a href="#" class="link-login">登录</a></li>

+ 181 - 0
src/main/webapp/WEB-INF/views/normal/schedularList.html

@@ -0,0 +1,181 @@
+<!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">
+	<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>UAS轮询地址</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;
+	}
+    #logList-body {
+        word-break: break-all;
+        word-wrap: break-word;
+    }
+    /*.modal-dialog {*/
+        /*width: 400px;*/
+    /*}*/
+    .modal-dialog .modal-header {
+        height: 45px;
+    }
+    .modal-dialog .modal-body {
+        height: 145px;
+    }
+    .modal-dialog .modal-footer {
+        height: 60px;
+        margin-top: -25px;
+    }
+    .modal-body input {
+        border-bottom: #dccaca 1px solid !important;
+        height: 34px;
+        line-height: 34px;
+        border: none;
+        width: 450px;
+        margin-left: 30px;
+        text-align: left;
+        color: #1f1f1f;
+    }
+    .modal-body label {
+        width: 50px;
+    }
+</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">
+				<span>UAS轮询地址</span>
+			</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>UAS轮询地址</h3>
+		</div>
+	</div>
+    <div class="search">
+        <div class="edit"  style="float: left">
+            <button class="btn btn-default" id="addInfo">新增</button>
+        </div>
+        <div class="search-title" style="float: right">
+			<input id="logList-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="请输入名称搜索"><span class="input-group-addon" id="p_search">搜索</span>
+        </div>
+    </div>
+	<table class="table table-striped table-hover" style="overflow: scroll">
+		<thead id="logList-head">
+            <th class="text-center" width="60">序号</th>
+            <th class="text-center" width="100">企业名称</th>
+            <th class="text-center" width="100">路径</th>
+			<th class="text-center" width="100">编辑时间</th>
+			<th class="text-center" width="100">编辑人</th>
+            <th class="text-center" width="100">操作</th>
+		</thead>
+        <tbody id="logList-body">
+        </tbody>
+        <div id="page"></div>
+    </table>
+    <div id="m-page" class="m-style"></div>
+</section>
+<!-- section end -->
+
+<!-- 参数详情 -->
+<div class="modal fade" id="schedularInfo" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+    <div class="modal-dialog">
+        <div class="modal-content" id="para-main">
+            <div class="modal-header" id="para-title">
+            </div>
+            <div class="modal-body">
+                <table>
+                    <tbody>
+                    <tr>
+                        <td><label class="text-center">名称</label></td>
+                        <td><input type="text" autocomplete="off" id="sc_name"></td>
+                    </tr>
+                    <tr>
+                        <td><label class="text-center">地址</label></td>
+                        <td><input type="text" autocomplete="off" id="sc_url"></td>
+                    </tr>
+                    </tbody>
+                </table>
+            </div>
+            <div class="modal-footer">
+                <a type="button" class="btn btn-success" data-dismiss="modal" id="okay">
+                    确认
+                </a>
+                <a type="button" class="btn btn-default" data-dismiss="modal">
+                    关闭
+                </a>
+            </div>
+        </div><!-- /.modal-content -->
+    </div><!-- /.modal-dialog -->
+</div>
+
+</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/schedular.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>

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

@@ -49,6 +49,7 @@
 	<mvc:view-controller path="/signIn" view-name="signIn" />
 	<mvc:view-controller path="/enterprise" view-name="enterprise" />
 	<mvc:view-controller path="/logs" view-name="logs" />
+	<mvc:view-controller path="/schedularList" view-name="schedularList" />
 	<mvc:view-controller path="/resetPassword" view-name="resetPassword" />
     <mvc:view-controller path="/invalid" view-name="invalid" />
     <mvc:view-controller path="/**#" view-name="signIn" />

+ 5 - 22
src/main/webapp/resources/js/account/enterprise.js

@@ -8,6 +8,11 @@ document.write("<script language=javascript src='static/js/common/toastr.js'></s
  */
 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>");
+
 var enterpriseList = [];
 
 /**
@@ -133,28 +138,6 @@ function getDataRow(en, i) {
     return row;
 }
 
-/**
- * 时间转换
- *
- * @param inputTime
- * @returns {string}
- */
-function formatDateTime(inputTime) {
-    var date = new Date(inputTime);
-    var y = date.getFullYear();
-    var m = date.getMonth() + 1;
-    m = m < 10 ? ('0' + m) : m;
-    var d = date.getDate();
-    d = d < 10 ? ('0' + d) : d;
-    var h = date.getHours();
-    h = h < 10 ? ('0' + h) : h;
-    var minute = date.getMinutes();
-    var second = date.getSeconds();
-    minute = minute < 10 ? ('0' + minute) : minute;
-    second = second < 10 ? ('0' + second) : second;
-    return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;
-};
-
 $(function() {
     'use strict';
 

+ 54 - 2
src/main/webapp/resources/js/common/base.js

@@ -1,7 +1,59 @@
-// 判断字符是否为空
+/**
+ * 判断字符是否为空
+ */
 function isEmpty(exp) {
     if (null == exp || typeof exp == "null" || typeof(exp) == "undefined" || !exp || "" == exp) {
         return true;
     }
     return false;
-}
+}
+
+/**
+ * 时间转换
+ *
+ * @param inputTime
+ * @returns {string}
+ */
+function formatDateTime(inputTime) {
+    var date = new Date(inputTime);
+    var y = date.getFullYear();
+    var m = date.getMonth() + 1;
+    m = m < 10 ? ('0' + m) : m;
+    var d = date.getDate();
+    d = d < 10 ? ('0' + d) : d;
+    var h = date.getHours();
+    h = h < 10 ? ('0' + h) : h;
+    var minute = date.getMinutes();
+    var second = date.getSeconds();
+    minute = minute < 10 ? ('0' + minute) : minute;
+    second = second < 10 ? ('0' + second) : second;
+    return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;
+};
+
+/**
+ * json着色
+ *
+ * @param json
+ * @returns {XML|string}
+ */
+function syntaxHighlight(json) {
+    if (typeof json != 'string') {
+        json = JSON.stringify(json, undefined, 2);
+    }
+    json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
+    return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
+        var cls = 'number';
+        if (/^"/.test(match)) {
+            if (/:$/.test(match)) {
+                cls = 'key';
+            } else {
+                cls = 'string';
+            }
+        } else if (/true|false/.test(match)) {
+            cls = 'boolean';
+        } else if (/null/.test(match)) {
+            cls = 'null';
+        }
+        return '<span class="' + cls + '">' + match + '</span>';
+    });
+}

+ 6 - 45
src/main/webapp/resources/js/common/log.js

@@ -8,6 +8,11 @@ document.write("<script language=javascript src='static/js/common/toastr.js'></s
  */
 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>");
+
 var logList = [];
 
 /**
@@ -49,7 +54,6 @@ function getLogList(count, page, keyword, fromDate, endDate) {
                 (function(i) {
                     $("#pa_detail_" + logList[i].id ).click(function () {
                         getDetail(logList[i].detail, logList[i].enName);
-                        $('#loadingDiv').show();
                     });
                 })(i);
                 // 查询错误列表
@@ -127,6 +131,7 @@ function getDetail(detail, name) {
     $("<p style='font-size: 16px; font-weight: bold'>").text(name).appendTo("#para-title");
     var result = JSON.stringify(JSON.parse(detail), null, 4);
     $("<pre>").html(syntaxHighlight(result)).appendTo("#para-content");
+    $('#loadingDiv').hide();
     $('#paraDetail').modal('show');
 }
 
@@ -145,28 +150,6 @@ function getNotExistData(uuid, msg, name) {
     });
 }
 
-function syntaxHighlight(json) {
-    if (typeof json != 'string') {
-        json = JSON.stringify(json, undefined, 2);
-    }
-    json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
-    return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
-        var cls = 'number';
-        if (/^"/.test(match)) {
-            if (/:$/.test(match)) {
-                cls = 'key';
-            } else {
-                cls = 'string';
-            }
-        } else if (/true|false/.test(match)) {
-            cls = 'boolean';
-        } else if (/null/.test(match)) {
-            cls = 'null';
-        }
-        return '<span class="' + cls + '">' + match + '</span>';
-    });
-}
-
 /**
  * 建立表格数据
  *
@@ -232,28 +215,6 @@ function getDataRow(log, i) {
     return row;
 }
 
-/**
- * 时间转换
- *
- * @param inputTime
- * @returns {string}
- */
-function formatDateTime(inputTime) {
-    var date = new Date(inputTime);
-    var y = date.getFullYear();
-    var m = date.getMonth() + 1;
-    m = m < 10 ? ('0' + m) : m;
-    var d = date.getDate();
-    d = d < 10 ? ('0' + d) : d;
-    var h = date.getHours();
-    h = h < 10 ? ('0' + h) : h;
-    var minute = date.getMinutes();
-    var second = date.getSeconds();
-    minute = minute < 10 ? ('0' + minute) : minute;
-    second = second < 10 ? ('0' + second) : second;
-    return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;
-};
-
 $(function() {
     'use strict';
 

+ 242 - 0
src/main/webapp/resources/js/common/schedular.js

@@ -0,0 +1,242 @@
+/**
+ * 引入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>");
+
+var schedularList = [];
+
+/**
+ * 获取日志列表
+ */
+function getList(count, page, keyword) {
+    $('#loadingDiv').show();
+    $("#logList-body").empty();
+    logList = [];
+    $.get('schedular/list', {
+        count: count,
+        page: page,
+        keyword: keyword,
+    }, function (data) {
+        $('#loadingDiv').hide();
+        schedularList = data.content;
+        var pageNumber = data.number;
+        var pageSize = data.size;
+        var total = data.totalElements;
+        var totalPage = data.totalPages;
+        var tbody = document.getElementById("logList-body");
+        var page = document.getElementById("page");
+        //noinspection JSAnnotator
+        $('#logList-total').val('共 ' + total + ' 条');
+        if (schedularList.length > 0) {
+            for (var i = 0; i < schedularList.length; i++) {
+                var trow = getDataRow(schedularList[i], i); //定义一个方法,返回tr数据
+                tbody.appendChild(trow);
+                // 编辑
+                (function(i) {
+                    $("#edit_" + schedularList[i].id ).click(function () {
+                        editInfo(schedularList[i]);
+                    });
+                })(i);
+                // 访问
+                (function(i) {
+                    $("#link_schedular_" + schedularList[i].id ).click(function () {
+                       window.open(schedularList[i].url);
+                    });
+                })(i);
+                // 删除
+                (function(i) {
+                    $("#delete_" + schedularList[i].id ).click(function () {
+                        deleteInfo(schedularList[i].id);
+                    });
+                })(i);
+            }
+
+            // 点击搜索
+            $('#p_search').unbind('click').click(function () {// 每次先解除上次绑定的事件,防止重复发送请求
+                $("#logList-body").load(location.href + " #logList-body");
+                getList(count, 1, $('#keyword').val());
+            });
+
+            // 键盘确认按钮搜索
+            document.onkeydown = function(event) {
+                var e = event || window.event;
+                if (e && e.keyCode == 13) { // enter 键
+                    $("#logList-body").load(location.href + " #logList-body");
+                    getList(count, 1, $('#keyword').val());
+                }
+            };
+        }
+        $('#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());
+                $("#logList-body").load(location.href + " #logList-body");
+                getList(count, api.getCurrent(), $('#keyword').val());
+            }
+        }, function (api) {
+            $('.now').text(api.getCurrent());
+        });
+    })
+}
+
+/**
+ * 编辑
+ *
+ * @param id 主表id
+ */
+var id = null;
+function editInfo(schedular) {
+    $('#para-title').empty();
+    $("<p style='font-size: 16px; font-weight: bold'>").text(schedular.name).appendTo("#para-title");
+    $('#schedularInfo').modal('show');
+    $("#sc_name").val(schedular.name);
+    $("#sc_url").val(schedular.url);
+    id = schedular.id;
+}
+
+/**
+ * 删除
+ *
+ * @param id id
+ */
+function deleteInfo(id) {
+    $.ajax('schedular/delete/' + id, {
+        method: 'POST',
+        async: false,
+        success: function() {
+            alert('删除成功');
+            getList(20, 1, null);
+        },
+        error: function (error) {
+            alert('删除失败');
+        }
+    });
+}
+
+/**
+ * 新增
+ */
+$('#addInfo').click(function () {
+    $('#para-title').empty();
+    $('#sc_url').val('');
+    $('#sc_name').val('');
+    $('#schedularInfo').modal('show');
+    id = null;
+    $("<p style='font-size: 16px; font-weight: bold'>").text('新增地址信息').appendTo("#para-title");
+});
+
+$('#okay').click(function () {
+    var schedular = {
+        name: $('#sc_name').val(),
+        url: $('#sc_url').val(),
+        id: id
+    };
+    $.ajax('schedular/save', {
+        data: schedular,
+        method: 'POST',
+        async: false,
+        success: function() {
+            if (id == null) {
+                alert('添加成功');
+            } else {
+                alert('修改成功');
+            }
+            getList(20, 1, null);
+        },
+        error: function (error) {
+            alert('注册失败');
+        }
+    });
+});
+
+/**
+ * 建立表格数据
+ *
+ * @param log 日志
+ * @param i 行号
+ * @returns {Element}
+ */
+function getDataRow(schedular, i) {
+    var row = document.createElement('tr'); //创建行
+
+    var indexCell = document.createElement('td'); //序号
+    indexCell.setAttribute("class", "text-center");
+    indexCell.innerHTML = i + 1; //填充数据
+    row.appendChild(indexCell);
+
+    var nameCell = document.createElement('td'); //enName
+    nameCell.setAttribute("class", "text-center");
+    nameCell.innerHTML = schedular.name; //填充数据
+    row.appendChild(nameCell);
+
+    var urlCell = document.createElement('td'); //访问路径
+    urlCell.setAttribute("class", "text-center");
+    urlCell.innerHTML = schedular.url;
+    urlCell.setAttribute("id", "link_schedular_" + schedular.id);
+    row.appendChild(urlCell);
+
+    var dateCell = document.createElement('td'); //最近一次编辑时间
+    dateCell.setAttribute("class", "text-center");
+    dateCell.innerHTML = formatDateTime(schedular.date); //填充数据
+    row.appendChild(dateCell);
+
+    var uuCell = document.createElement('td'); //最近一次编辑人员
+    uuCell.setAttribute("class", "text-center");
+    uuCell.innerHTML = schedular.user; //填充数据
+    row.appendChild(uuCell);
+
+    var handleCell = document.createElement('td'); //msg
+    handleCell.setAttribute("class", "text-center");
+    var editButton = document.createElement("button");
+    editButton.setAttribute("class", "btn btn-info btn-sm");
+    editButton.setAttribute("id", 'edit_' + schedular.id);
+    editButton.innerHTML = '编辑';
+    handleCell.appendChild(editButton);
+    var deleteButton = document.createElement("button");
+    deleteButton.setAttribute("class", "btn btn-danger btn-sm");
+    deleteButton.setAttribute("id", 'delete_' + schedular.id);
+    deleteButton.setAttribute("style", "margin-left: 5px");
+    deleteButton.innerHTML = '删除';
+    handleCell.appendChild(deleteButton);
+    row.appendChild(handleCell);
+
+    return row;
+}
+
+$(function() {
+    'use strict';
+
+    // 监听页面滚动
+    $(window).scroll(function() {
+        if($(window).scrollTop() >= 400) {
+            $('#nav').addClass('on');
+        } else {
+            $('#nav').removeClass('on');
+        }
+    });
+
+    // 设置分页大小
+    var count = 20;
+    getList(count, 1, null);
+
+});