saodiseng пре 2 година
комит
cee21c25c2
32 измењених фајлова са 1300 додато и 0 уклоњено
  1. 62 0
      com.lsw.iml
  2. 68 0
      pom.xml
  3. 74 0
      src/main/java/com/lsw/Application.java
  4. 189 0
      src/main/java/com/lsw/controller/IndexController.java
  5. 345 0
      src/main/java/com/lsw/utils/TimeUtil.java
  6. 4 0
      src/main/resources/jdbc.properites
  7. 12 0
      src/main/resources/log4j.properties
  8. 282 0
      src/main/webapp/WEB-INF/view/index.html
  9. 20 0
      src/main/webapp/WEB-INF/web.xml
  10. BIN
      src/main/webapp/static/img/empty.png
  11. 81 0
      src/main/webapp/static/js/common.js
  12. 0 0
      src/main/webapp/static/js/element-ui.css
  13. 0 0
      src/main/webapp/static/js/element-ui.js
  14. BIN
      src/main/webapp/static/js/fonts/element-icons.ttf
  15. BIN
      src/main/webapp/static/js/fonts/element-icons.woff
  16. 33 0
      src/main/webapp/static/js/fonts/iconfont.css
  17. BIN
      src/main/webapp/static/js/fonts/iconfont.ttf
  18. 1 0
      src/main/webapp/static/js/jquery.min.js
  19. 1 0
      src/main/webapp/static/js/layer/extend/layer.ext.js
  20. 1 0
      src/main/webapp/static/js/layer/layer.js
  21. 1 0
      src/main/webapp/static/js/layer/layer_mobile/layer.js
  22. 0 0
      src/main/webapp/static/js/layer/layer_mobile/need/layer.css
  23. 1 0
      src/main/webapp/static/js/layer/laypage/laypage.js
  24. 107 0
      src/main/webapp/static/js/layer/laypage/skin/laypage.css
  25. BIN
      src/main/webapp/static/js/layer/skin/default/icon-ext.png
  26. BIN
      src/main/webapp/static/js/layer/skin/default/icon.png
  27. BIN
      src/main/webapp/static/js/layer/skin/default/loading-0.gif
  28. BIN
      src/main/webapp/static/js/layer/skin/default/loading-1.gif
  29. BIN
      src/main/webapp/static/js/layer/skin/default/loading-2.gif
  30. 6 0
      src/main/webapp/static/js/layer/skin/layer.css
  31. 7 0
      src/main/webapp/static/js/layer/skin/layer.ext.css
  32. 5 0
      src/main/webapp/static/js/vue.min.js

+ 62 - 0
com.lsw.iml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="web" name="Web">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
+        </webroots>
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Maven: com.jfinal:jfinal:3.2" level="project" />
+    <orderEntry type="library" name="Maven: cglib:cglib-nodep:3.2.5" level="project" />
+    <orderEntry type="library" name="Maven: com.jfinal:jetty-server:8.1.8" level="project" />
+    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-xml:8.1.8.v20121106" level="project" />
+    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-util:8.1.8.v20121106" level="project" />
+    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-servlet:8.1.8.v20121106" level="project" />
+    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-security:8.1.8.v20121106" level="project" />
+    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-server:8.1.8.v20121106" level="project" />
+    <orderEntry type="library" name="Maven: org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016" level="project" />
+    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-continuation:8.1.8.v20121106" level="project" />
+    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-http:8.1.8.v20121106" level="project" />
+    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-io:8.1.8.v20121106" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.76" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:druid:1.0.18" level="project" />
+    <orderEntry type="module-library">
+      <library name="Maven: com.alibaba:jconsole:1.8.0">
+        <CLASSES>
+          <root url="jar://C:/Program Files/Java/jdk1.8.0_31/lib/jconsole.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library name="Maven: com.alibaba:tools:1.8.0">
+        <CLASSES>
+          <root url="jar://C:/Program Files/Java/jdk1.8.0_31/lib/tools.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-log4j12:1.7.21" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.21" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.oracle.database.jdbc:ojdbc8:21.1.0.0" level="project" />
+  </component>
+</module>

+ 68 - 0
pom.xml

@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>war</packaging>
+    <name>liug</name>
+    <groupId>com.lsw</groupId>
+    <artifactId>com.lsw</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <dependencies>
+        <dependency>
+            <groupId>com.jfinal</groupId>
+            <artifactId>jfinal</artifactId>
+            <version>3.2</version>
+        </dependency>
+        <!-- jetty -->
+        <dependency>
+            <groupId>com.jfinal</groupId>
+            <artifactId>jetty-server</artifactId>
+            <version>8.1.8</version>
+            <!-- <scope>test</scope>-->
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.76</version>
+        </dependency>
+        <!--druid连接池 -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>1.0.18</version>
+        </dependency>
+        <!-- 日志 -->
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.17</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <version>1.7.21</version>
+        </dependency>
+        <dependency>
+            <groupId>com.oracle.database.jdbc</groupId>
+            <artifactId>ojdbc8</artifactId>
+            <version>21.1.0.0</version>
+            <scope>runtime</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <finalName>liug</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <description>柳工</description>
+</project>

+ 74 - 0
src/main/java/com/lsw/Application.java

@@ -0,0 +1,74 @@
+package com.lsw;
+
+import com.jfinal.config.*;
+import com.jfinal.core.JFinal;
+import com.jfinal.ext.handler.ContextPathHandler;
+import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
+import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
+import com.jfinal.plugin.activerecord.dialect.OracleDialect;
+import com.jfinal.plugin.druid.DruidPlugin;
+import com.jfinal.template.Engine;
+import com.lsw.controller.IndexController;
+
+/**
+ * @author 李书文
+ * @description 应用程序入口
+ * @time 2016年10月22日
+ */
+public class Application extends JFinalConfig {
+
+    @Override
+    public void configConstant(Constants me) {
+        loadPropertyFile("jdbc.properites");//加载配置文件
+        me.setDevMode(true);
+    }
+
+    @Override
+    public void configRoute(Routes me) {
+        me.add("/", IndexController.class, "/WEB-INF/view/");
+    }
+
+    @Override
+    public void configPlugin(Plugins me) {
+        ActiveRecordPlugin arp = null;
+        String driver = getProperty("oracle.driver");
+        String url = getProperty("oracle.url");
+        String username = getProperty("oracle.username");
+        String password = getProperty("oracle.password");
+        DruidPlugin dp = new DruidPlugin(url, username, password, driver);
+        me.add(dp);
+        arp = new ActiveRecordPlugin(dp);//设置数据库方言
+        arp.setDialect(new OracleDialect());
+        arp.setContainerFactory(new CaseInsensitiveContainerFactory());//忽略大小写
+        arp.setShowSql(true);
+        me.add(arp);
+    }
+
+    @Override
+    public void configInterceptor(Interceptors me) {
+    }
+
+    @Override
+    public void configHandler(Handlers me) {
+        me.add(new ContextPathHandler("path"));
+    }
+
+    @Override
+    public void afterJFinalStart() {
+        welcome();
+    }
+
+    private void welcome() {
+        System.out.println("系统启动完成 ");
+    }
+
+    public static void main(String[] args) {
+        JFinal.start("src/main/webapp", 9999, "/");
+    }
+
+    @Override
+    public void configEngine(Engine me) {
+
+    }
+
+}

+ 189 - 0
src/main/java/com/lsw/controller/IndexController.java

@@ -0,0 +1,189 @@
+package com.lsw.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.jfinal.aop.Before;
+import com.jfinal.core.Controller;
+import com.jfinal.json.FastJson;
+import com.jfinal.kit.JsonKit;
+import com.jfinal.kit.StrKit;
+import com.jfinal.plugin.activerecord.Db;
+import com.jfinal.plugin.activerecord.Record;
+import com.jfinal.plugin.activerecord.tx.Tx;
+import com.lsw.utils.TimeUtil;
+import com.sun.xml.internal.bind.v2.model.core.ID;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class IndexController extends Controller {
+
+    public void index() {
+        long start = System.currentTimeMillis();
+        String table = getPara("table", "TLK_YJCS");
+        String ITEM_VALUE = getPara("ITEM_VALUE");
+        String bh = getPara("bh", "102");
+        String user = getPara("user", "基栋");
+        List<Record> all = new ArrayList<>();
+        StringBuilder sb = new StringBuilder();
+        sb.append("SELECT ID,ITEM_BH,ITEM_PX,ITEM_NAME,ITEM_UPBH,ITEM_TYPE FROM " + table);
+        sb.append(" WHERE ITEM_KEY=?");
+        sb.append(" AND ITEM_UPBH IS NOT NULL");
+        if (StrKit.notBlank(ITEM_VALUE)) {
+            sb.append(" AND ITEM_VALUE=?");
+            sb.append(" ORDER BY ITEM_PX ASC");
+            all = Db.find(sb.toString(), bh, ITEM_VALUE);
+        } else {
+            sb.append(" ORDER BY ITEM_PX ASC");
+            all = Db.find(sb.toString(), bh);
+        }
+        List<Record> list = all.stream().filter(r -> r.getStr("ITEM_UPBH").equals(bh)).collect(Collectors.toList());
+        for (Record record : list) {
+            int rowspan = 0; //总的合并行
+            record.set("type", 0);
+            //二级
+            List<Record> list2 = all.stream().filter(r -> r.getStr("ITEM_UPBH").equals(record.getStr("ITEM_BH"))).collect(Collectors.toList());
+            record.set("child", list2);
+            rowspan++;
+            for (Record record2 : list2) {
+                int rowspan2 = 0; //二级合并行
+                //三级
+                List<Record> list3 = all.stream().filter(r -> r.getStr("ITEM_UPBH").equals(record2.getStr("ITEM_BH"))).collect(Collectors.toList());
+                record2.set("child", list3);
+                rowspan++;
+                rowspan2++;
+                for (Record record3 : list3) {
+                    //四级
+                    List<Record> list4 = all.stream().filter(r -> r.getStr("ITEM_UPBH").equals(record3.getStr("ITEM_BH"))).collect(Collectors.toList());
+                    if (!list4.isEmpty()) {
+                        record.set("type", 1);
+                    }
+                    if (record3.getStr("ITEM_TYPE").equals("1")) {
+                        rowspan++;
+                        rowspan2++;
+                    }
+                    for (Record record4 : list4) {
+                        if (record4.getStr("ITEM_TYPE").equals("1")) {
+                            rowspan++;
+                            rowspan2++;
+                        }
+                        //五级
+                        List<Record> list5 = all.stream().filter(r -> r.getStr("ITEM_UPBH").equals(record4.getStr("ITEM_BH"))).collect(Collectors.toList());
+                        if (!list5.isEmpty()) {
+                            record.set("type", 1);
+                            record2.set("type", 1);
+                        }
+                        record4.set("child", list5);
+                    }
+                    record3.set("child", list4);
+                }
+                record2.set("rowspan2", rowspan2);
+            }
+            record.set("rowspan", rowspan);
+        }
+        setAttr("list", list);
+        setAttr("table", table);
+        setAttr("user", user);
+        long end = System.currentTimeMillis();
+        setAttr("time", mul((end - start), (float) 0.001) + "s");
+        render("index.html");
+    }
+
+    public void edit() {
+        if (StrKit.isBlank(getPara("ITEM_NAME")) && StrKit.isBlank(getPara("ID"))) {
+            renderJson(new Record().set("code", 500));
+            return;
+        }
+        String table = getPara("table", "TLK_YJCS");
+
+        Record record = Db.findFirst("SELECT * FROM " + table + " WHERE ID=?", getPara("ID"));
+        JSONArray log_list = new JSONArray();
+        if (record.get("ITEM_TLOG") == null) {
+            //原记录
+            Record log = new Record();
+            log.set("DAY", "原记录");
+            log.set("ITEM_NAME", record.getStr("ITEM_NAME"));
+            log_list.add(log);
+        } else {
+            log_list = JSON.parseArray(record.get("ITEM_TLOG"));
+        }
+        //编辑记录
+        Record log = new Record();
+        log.set("DAY", StrKit.isBlank(getPara("day")) ? TimeUtil.getNow() : getPara("day"));
+        log.set("ITEM_NAME", getPara("ITEM_NAME"));
+        log.set("USER", getPara("user"));
+        log_list.add(log);
+
+        Record update = new Record();
+        update.set("ITEM_NAME", getPara("ITEM_NAME"));
+        update.set("ID", getPara("ID"));
+        update.set("ITEM_TLOG", JsonKit.toJson(log_list));
+        boolean result = Db.update(table, "ID", update);
+
+        if (record.get("ITEM_FID") != null) {
+            Record TLK_MYJCS = Db.findFirst("SELECT * FROM TLK_MYJCS WHERE ID=?", record.getStr("ITEM_FID"));
+            JSONArray log_list2 = new JSONArray();
+            if (TLK_MYJCS.get("ITEM_TLOG") == null) {
+                //原记录
+                Record log2 = new Record();
+                log2.set("DAY", "原记录");
+                log2.set("ITEM_NAME", TLK_MYJCS.getStr("ITEM_NAME"));
+                log_list2.add(log2);
+            } else {
+                log_list2 = JSON.parseArray(TLK_MYJCS.get("ITEM_TLOG"));
+            }
+            update.set("ID", record.get("ITEM_FID"));
+            log_list2.add(log);
+            update.set("ITEM_TLOG", JsonKit.toJson(log_list2));
+            Db.update("TLK_MYJCS", "ID", update);
+        }
+        renderJson(new Record().set("code", result ? 200 : 500));
+    }
+
+    @Before(Tx.class)
+    public void move() {
+        String table = getPara("table", "TLK_YJCS");
+        String op = getPara("op", "add"); //操作上移,下移
+        String id = getPara("id");
+        Record up = Db.findFirst("SELECT * FROM " + table + " WHERE ID=? ", id);
+        List<Record> list = Db.find("SELECT * FROM " + table + " WHERE ITEM_UPBH=? ORDER BY ITEM_PX ASC", up.getStr("ITEM_UPBH"));
+        if (up.getStr("ITEM_PX") == null) {
+            up.set("ITEM_PX", 0);
+        }
+        for (Record r : list) {
+            if (r.getStr("ITEM_PX") == null) {
+                r.set("ITEM_PX", 0);
+            }
+        }
+        for (int i = 0; i < list.size(); i++) {
+            if (op.equals("add") && up.getStr("ID").equals(list.get(i).getStr("ID"))) {
+                Db.update("UPDATE " + table + " SET ITEM_PX=? WHERE ID=?", Integer.parseInt(up.getStr("ITEM_PX")) - 1, up.getStr("ID"));
+                Db.update("UPDATE " + table + " SET ITEM_PX=? WHERE ID=?", Integer.parseInt(list.get(i - 1).getStr("ITEM_PX")) + 1, list.get(i - 1).getStr("ID"));
+                break;
+            }
+            if (op.equals("down") && up.getStr("ID").equals(list.get(i).getStr("ID"))) {
+                System.out.println("ITEM_PX:" + list.get(i).getStr("ITEM_PX"));
+                System.out.println("索引:" + i);
+                Db.update("UPDATE " + table + " SET ITEM_PX=? WHERE ID=?", Integer.parseInt(up.getStr("ITEM_PX")) + 1, up.getStr("ID"));
+                Db.update("UPDATE " + table + " SET ITEM_PX=? WHERE ID=?", Integer.parseInt(list.get(i + 1).getStr("ITEM_PX")) - 1, list.get(i + 1).getStr("ID"));
+                break;
+            }
+        }
+        renderJson(new Record().set("code", 200));
+    }
+
+    public void log() {
+        String table = getPara("table", "TLK_YJCS");
+        Record record = Db.findFirst("SELECT * FROM " + table + " WHERE ID=?", getPara("ID"));
+        renderJson(record.getStr("ITEM_TLOG"));
+    }
+
+    private double mul(long v1, float v2) {
+        BigDecimal b1 = new BigDecimal(Float.toString(v1));
+        BigDecimal b2 = new BigDecimal(Float.toString(v2));
+        return b1.multiply(b2).doubleValue();
+    }
+}

+ 345 - 0
src/main/java/com/lsw/utils/TimeUtil.java

@@ -0,0 +1,345 @@
+package com.lsw.utils;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author 李书文
+ * @description 时间工具类
+ * @time 2016年8月13日
+ */
+public class TimeUtil {
+    private static final long ONE_MINUTE = 60;
+    private static final long ONE_HOUR = 3600;
+    private static final long ONE_DAY = 86400;
+    private static final long ONE_MONTH = 2592000;
+    private static final long ONE_YEAR = 31104000;
+    public static List<Map<String, Object>> list;
+    private final static ThreadLocal<SimpleDateFormat> timeFormater = new ThreadLocal<SimpleDateFormat>() {
+        @Override
+        protected SimpleDateFormat initialValue() {
+            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        }
+    };
+    private final static ThreadLocal<SimpleDateFormat> dateFormater = new ThreadLocal<SimpleDateFormat>() {
+        @Override
+        protected SimpleDateFormat initialValue() {
+            return new SimpleDateFormat("yyyy-MM-dd");
+        }
+    };
+
+    /**
+     * 格式化日期(精确到秒)
+     *
+     * @return
+     */
+    public static String getNow() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        return format.format(System.currentTimeMillis());
+    }
+
+    /**
+     * 格式化日期(精确到秒)
+     *
+     * @return
+     */
+    public static String getMonth() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy");
+        return format.format(System.currentTimeMillis());
+    }
+
+    /**
+     * 格式化日期(精确到秒)
+     *
+     * @return
+     */
+    public static String getTIME() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
+        return format.format(System.currentTimeMillis());
+    }
+
+    /**
+     * 格式化日期(精确到天)
+     *
+     * @return
+     */
+    public static String getDay() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        return format.format(new Date());
+    }
+
+    public static String getDayFormat() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
+        return format.format(new Date());
+    }
+
+    //获取时分
+    public static String getHour() {
+        SimpleDateFormat format = new SimpleDateFormat("HH:mm");
+        return format.format(System.currentTimeMillis());
+    }
+
+    public static List<Map<String, Object>> printWeekdays() {
+        list = new ArrayList<Map<String, Object>>();
+        Calendar calendar = Calendar.getInstance();
+        for (int i = 0; i < 7; i++) {
+            printDay(calendar);
+            calendar.add(Calendar.DATE, 1);
+        }
+        return list;
+    }
+
+    public static String daysToDate(String createDate, int day) {
+        String endDate = null;
+        try {
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+            Date date = format.parse(createDate);
+            Calendar ca = Calendar.getInstance();
+            ca.setTime(date);
+            ca.add(Calendar.DATE, day);
+            endDate = format.format(ca.getTime());
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return endDate;
+    }
+
+    private static String printDay(Calendar calendar) {
+        SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat dateFormat2 = new SimpleDateFormat("MM");
+        SimpleDateFormat dateFormat3 = new SimpleDateFormat("dd");
+        SimpleDateFormat dateFormat4 = new SimpleDateFormat("EE");
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("year", dateFormat1.format(calendar.getTime()));
+        map.put("month", dateFormat2.format(calendar.getTime()).replaceAll("^(0+)", "") + "月");
+        map.put("day", dateFormat3.format(calendar.getTime()));
+        map.put("week", dateFormat4.format(calendar.getTime()).replaceAll("^(星期+)", ""));
+        list.add(map);
+        return null;
+    }
+
+    /**
+     * 将日期格式转换成yyyy-MM-dd的字符串格式 返回值如:2016-8-13
+     *
+     * @param time 要转换的日期
+     * @return
+     */
+    public static <T> T dateToString(Date time) {
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); // 定义将日期格式要换成的格式
+        String stringTime = formatter.format(time);
+        return (T) stringTime;
+    }
+
+
+    /**
+     * 将字符串转为日期类型
+     *
+     * @param date
+     * @return
+     */
+    public static Date toDate(String date) {
+        return toDate(date, dateFormater.get());
+    }
+
+    public static Date toDate(String date, SimpleDateFormat dateFormater) {
+        try {
+            return dateFormater.parse(date);
+        } catch (ParseException e) {
+            return null;
+        }
+    }
+
+    /**
+     * 距离今天多久
+     *
+     * @param date
+     * @return
+     */
+    public static String fromToday(Date date) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+
+        long time = date.getTime() / 1000;
+        long now = new Date().getTime() / 1000;
+        long ago = now - time;
+        if (ago <= ONE_HOUR)
+            return ago / ONE_MINUTE + "分钟前";
+        else if (ago <= ONE_DAY)
+            return ago / ONE_HOUR + "小时前";
+        else if (ago <= ONE_DAY * 2)
+            return "昨天";
+        else if (ago <= ONE_DAY * 3)
+            return "前天";
+        else if (ago <= ONE_MONTH) {
+            long day = ago / ONE_DAY;
+            return day + "天前";
+        } else if (ago <= ONE_YEAR) {
+            long month = ago / ONE_MONTH;
+            long day = ago % ONE_MONTH / ONE_DAY;
+            return month + "个月前";
+        } else {
+            long year = ago / ONE_YEAR;
+            int month = calendar.get(Calendar.MONTH) + 1;// JANUARY which is 0 so month+1
+            return year + "年前";
+        }
+
+    }
+
+    /**
+     * 获取时间差
+     *
+     * @param startTime 开始时间
+     * @param endTime   结束时间
+     * @param format    时间格式 例如:yyyy-MM-dd HH:mm:ss
+     * @param str       计算 d:计算天数,h:计算小时,m:计算分钟
+     * @return
+     */
+    public static Long dateDiff(String startTime, String endTime, String format, String str) {
+        // 按照传入的格式生成一个simpledateformate对象
+        SimpleDateFormat sd = new SimpleDateFormat(format);
+        long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数
+        long nh = 1000 * 60 * 60;// 一小时的毫秒数
+        long nm = 1000 * 60;// 一分钟的毫秒数
+        long ns = 1000;// 一秒钟的毫秒数
+        long diff;
+        long day = 0;
+        long hour = 0;
+        long min = 0;
+        long sec = 0;
+        // 获得两个时间的毫秒时间差异
+        try {
+            diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime();
+            day = diff / nd;// 计算差多少天
+            hour = diff % nd / nh + day * 24;// 计算差多少小时
+            min = diff % nd % nh / nm + day * 24 * 60;// 计算差多少分钟
+            sec = diff % nd % nh % nm / ns;// 计算差多少秒
+            // 输出结果
+            System.out.println(
+                    "时间相差:" + day + "天" + (hour - day * 24) + "小时" + (min - day * 24 * 60) + "分钟" + sec + "秒。");
+            System.out.println("hour=" + hour + ",min=" + min);
+            if (str.equalsIgnoreCase("d")) {
+                return day;
+            } else if (str.equalsIgnoreCase("h")) {
+                return hour;
+            } else {
+                return min;
+            }
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        if (str.equalsIgnoreCase("h")) {
+            return hour;
+        } else {
+            return min;
+        }
+    }
+
+    /**
+     * 判断给定字符串时间是否为今日
+     *
+     * @param date
+     * @return boolean
+     */
+    public static boolean isToday(String date) {
+        boolean b = false;
+        Date time = toDate(date);
+        Date today = new Date();
+        if (time != null) {
+            String nowDate = dateFormater.get().format(today);
+            String timeDate = dateFormater.get().format(time);
+            if (nowDate.equals(timeDate)) {
+                b = true;
+            }
+        }
+        return b;
+    }
+
+    /**
+     * 获取当前日期是星期几
+     *
+     * @param date
+     * @return
+     */
+    public static int getWeekOfDate(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
+        if (w < 0)
+            w = 0;
+        return w;
+    }
+
+    /**
+     * 判断当前日期是否是本周
+     *
+     * @param date
+     * @return
+     */
+    public static boolean isThisWeek(Date date) {
+        Calendar calendar = Calendar.getInstance();
+        int currentWeek = calendar.get(Calendar.WEEK_OF_YEAR);
+        calendar.setTime(date);
+        int paramWeek = calendar.get(Calendar.WEEK_OF_YEAR);
+        if (paramWeek == currentWeek) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 判断用户的设备时区是否为东八区(中国) 2016年8月15日
+     *
+     * @return
+     */
+    public static boolean isInEasternEightZones() {
+        boolean defaultVaule = true;
+        if (TimeZone.getDefault() == TimeZone.getTimeZone("GMT+08"))
+            defaultVaule = true;
+        else
+            defaultVaule = false;
+        return defaultVaule;
+    }
+
+    /**
+     * 根据不同时区,转换时间 2016年8月15日
+     *
+     * @return
+     */
+    public static Date transformTime(Date date, TimeZone oldZone, TimeZone newZone) {
+        Date finalDate = null;
+        if (date != null) {
+            int timeOffset = oldZone.getOffset(date.getTime()) - newZone.getOffset(date.getTime());
+            finalDate = new Date(date.getTime() - timeOffset);
+        }
+        return finalDate;
+    }
+
+    /**
+     * 判断是否是过去的日期
+     *
+     * @param str 输入的日期
+     * @return true 早于现在,false 晚于现在
+     */
+    public static boolean isLaterThanNow(String str) {
+
+        boolean flag = false;
+        Date nowDate = new Date();
+        Date pastDate = null;
+        //格式化日期
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm", Locale.CHINA);
+        //在日期字符串非空时执行
+        try {
+            //将字符串转为日期格式,如果此处字符串为非合法日期就会抛出异常。
+            pastDate = sdf.parse(str);
+            //调用Date里面的before方法来做判断
+            flag = pastDate.before(nowDate);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return flag;
+    }
+
+    public static void main(String[] args) {
+    }
+}

+ 4 - 0
src/main/resources/jdbc.properites

@@ -0,0 +1,4 @@
+oracle.driver=oracle.jdbc.driver.OracleDriver
+oracle.url=jdbc:oracle:thin:@192.168.0.250:1521:lgdev
+oracle.username=lgtdm
+oracle.password=lgTDMTEST

+ 12 - 0
src/main/resources/log4j.properties

@@ -0,0 +1,12 @@
+# log4j.rootLogger=WARN, stdout, file
+log4j.rootLogger=ERROR, stdout, file
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
+
+# Output to the File
+log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.file.DatePattern='_'yyyy-MM-dd'.log'
+log4j.appender.file.File=./debug.log
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n

+ 282 - 0
src/main/webapp/WEB-INF/view/index.html

@@ -0,0 +1,282 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit"/><!-- 360浏览器默认选择webkit内核 -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>样机</title>
+    <link href="#(path)/static/js/element-ui.css" rel="stylesheet"/>
+    <link href="#(path)/static/js/fonts/iconfont.css" rel="stylesheet"/>
+</head>
+<style>
+    @font-face {
+        font-family: 'iconfont';
+    }
+    .bg {padding: 50px 10%;overflow: hidden;}
+    table {margin: 0 auto;background-color: white;border-collapse: collapse;width: 100%;}
+    td {padding: 15px;text-align: center;position: relative;}
+    .bar{width: 100%;text-align: left;margin: 0 auto}
+    button{margin-bottom: 10px;padding: 5px 20px;cursor: pointer;}
+    .edit{float: right;font-size: 13px;margin-top: 10px}
+    input{border: 0px;padding-right: 13px;padding-left: 13px;max-width: 150px; background-color: white;box-shadow: none!important;outline: none;text-align: center;font-size: 15px}
+    .jly {font-family: iconfont;position: absolute;cursor: pointer;right: 7px;color: #72767b;}
+    .yd{position: absolute;left: 7px;color: #72767b;margin-top: -6px;}
+    .sy{font-family: iconfont;cursor: pointer;left: 7px;display: block}
+    .xy{font-family: iconfont;cursor: pointer;left: 7px;display: block}
+    .block{padding-right: 20px}
+    .rzz{text-align: center;color: #72767b;}
+    .img{width: 50%;}
+    .picker{float: left;margin-left: 40px;margin-top: -5px;}
+    .el-input__inner{max-width: 300px!important;}
+</style>
+<body>
+<div id="app">
+    <div class="bg">
+        <div class="bar">
+           <div style="float: left;">
+               <button onclick="window.history.go(-1)">返回上级</button>
+               <span>时间: #(day)</span>
+           </div>
+            <el-date-picker
+                    class="picker"
+                    v-model="day"
+                    type="datetime"
+                    value-format="yyyy-MM-dd HH:mm:ss"
+                    placeholder="选择修改日期时间">
+            </el-date-picker>
+            <span class="edit">点击表格内容可编辑</span>
+        </div>
+        <table border="1">
+            <tbody>
+            <tr>
+                <td colspan="7" style="font-weight: bold">样机</td>
+            </tr>
+            <tr>
+                <td style="width: 10%">序号</td>
+                <td style="width: 30%" colspan="3">项目</td>
+                <td style="width: 40%" colspan="2">内容</td>
+                <td style="width: 20%">备注</td>
+            </tr>
+            #for(a:list)
+
+            <!--一级-->
+            #if(a.type==0)
+            <tr>
+                <td rowspan="#(a.child.size()+1)">#(for.index+1)</td>
+                <td colspan="2" rowspan="#(a.child.size()+1)">
+                    <div class="yd">
+                        <span class="sy" title="上移" @click="move('#(a.ID)','add')">&#xe637;</span>
+                        <span class="xy" title="下移" @click="move('#(a.ID)','down')">&#xe636;</span>
+                    </div>
+                    <input value="#(a.ITEM_NAME)" name="#(a.ITEM_NAME)" id="#(a.ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(a.ID)')">&#xe6df;</span>
+                </td>
+            </tr>
+            #for(b:a.child)
+            <tr>
+                <td>
+                    <div class="yd">
+                        <span class="sy" title="上移" @click="move('#(b.ID)','add')">&#xe637;</span>
+                        <span class="xy" title="下移" @click="move('#(b.ID)','down')">&#xe636;</span>
+                    </div>
+                    <input value="#(b.ITEM_NAME)" name="#(b.ITEM_NAME)" id="#(b.ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(b.ID)')">&#xe6df;</span>
+                </td>
+                <td colspan="2">
+                    #if(b.child.size()>0)
+                    <input value="#(b.child[0].ITEM_NAME)" name="#(b.child[0].ITEM_NAME)" id="#(b.child[0].ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(b.child[0].ID)')">&#xe6df;</span>
+                    #end
+                </td>
+                <td>
+                    #if(b.child.size()>1)
+                    <input value="#(b.child[1].ITEM_NAME)" name="#(b.child[1].ITEM_NAME)" id="#(b.child[1].ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(b.child[1].ID)')">&#xe6df;</span>
+                    #end
+                </td>
+            </tr>
+            #end
+            #end
+
+            <!--二级以上-->
+            #if(a.type==1)
+            <tr>
+                <td rowspan="#(a.rowspan)">#(for.index+1)</td>
+                <td rowspan="#(a.rowspan)">
+                    <div class="yd">
+                        <span class="sy" title="上移" @click="move('#(a.ID)','add')">&#xe637;</span>
+                        <span class="xy" title="下移" @click="move('#(a.ID)','down')">&#xe636;</span>
+                    </div>
+                    <input value="#(a.ITEM_NAME)" name="#(a.ITEM_NAME)" id="#(a.ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(a.ID)')">&#xe6df;</span>
+                </td>
+            </tr>
+
+            #for(b:a.child)
+
+            <!--二级以上-->
+            #if(b.type==1)
+            <tr>
+                <td rowspan="#(b.rowspan2)">
+                    <div class="yd">
+                        <span class="sy" title="上移" @click="move('#(b.ID)','add')">&#xe637;</span>
+                        <span class="xy" title="下移" @click="move('#(b.ID)','down')">&#xe636;</span>
+                    </div>
+                    <input value="#(b.ITEM_NAME)" name="#(b.ITEM_NAME)" id="#(b.ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(b.ID)')">&#xe6df;</span>
+                </td>
+            </tr>
+            #for(c:b.child)
+            <tr>
+                <td rowspan="#(c.child.size()+1)">
+                    <div class="yd">
+                        <span class="sy" title="上移" @click="move('#(c.ID)','add')">&#xe637;</span>
+                        <span class="xy" title="下移" @click="move('#(c.ID)','down')">&#xe636;</span>
+                    </div>
+                    <input value="#(c.ITEM_NAME)" name="#(c.ITEM_NAME)" id="#(c.ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(c.ID)')">&#xe6df;</span>
+                </td>
+            </tr>
+            #for(d:c.child)
+            <tr>
+                <td>
+                    <div class="yd">
+                        <span class="sy" title="上移" @click="move('#(d.ID)','add')">&#xe637;</span>
+                        <span class="xy" title="下移" @click="move('#(d.ID)','down')">&#xe636;</span>
+                    </div>
+                    <input value="#(d.ITEM_NAME)" name="#(d.ITEM_NAME)" id="#(d.ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(d.ID)')">&#xe6df;</span>
+                </td>
+                <td colspan="1">
+                    #if(d.child.size()>0)
+                    <input value="#(d.child[0].ITEM_NAME)" name="#(d.child[0].ITEM_NAME)" id="#(d.child[0].ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(d.child[0].ID)')">&#xe6df;</span>
+                    #end
+                </td>
+                <td>
+                    #if(d.child.size()>1)
+                    <input value="#(d.child[1].ITEM_NAME)" name="#(d.child[1].ITEM_NAME)" id="#(d.child[1].ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(d.child[1].ID)')">&#xe6df;</span>
+                    #end
+                </td>
+            </tr>
+            #end
+            #end
+            #else
+            <!--二级-->
+            <tr>
+                <td rowspan="#(b.child.size()+1)">
+                    <div class="yd">
+                        <span class="sy" title="上移" @click="move('#(b.ID)','add')">&#xe637;</span>
+                        <span class="xy" title="下移" @click="move('#(b.ID)','down')">&#xe636;</span>
+                    </div>
+                    <input value="#(b.ITEM_NAME)" name="#(b.ITEM_NAME)" id="#(b.ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(b.ID)')">&#xe6df;</span>
+                </td>
+            </tr>
+            #for(c:b.child)
+            <tr>
+                <td>
+                    <div class="yd">
+                        <span class="sy" title="上移" @click="move('#(b.ID)','add')">&#xe637;</span>
+                        <span class="xy" title="下移" @click="move('#(b.ID)','down')">&#xe636;</span>
+                    </div>
+                    <input value="#(c.ITEM_NAME)" name="#(c.ITEM_NAME)" id="#(c.ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(c.ID)')">&#xe6df;</span>
+                </td>
+                <td colspan="2">
+                    #if(c.child.size()>0)
+                    <input value="#(c.child[0].ITEM_NAME)" name="#(c.child[0].ITEM_NAME)" id="#(c.child[0].ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(c.child[0].ID)')">&#xe6df;</span>
+                    #end
+                </td>
+                <td>
+                    #if(c.child.size()>1)
+                    <input value="#(c.child[1].ITEM_NAME)" name="#(c.child[1].ITEM_NAME)" id="#(c.child[1].ID)" @blur="blur($event)">
+                    <span class="jly" title="修改记录" @click="record('#(c.child[1].ID)')">&#xe6df;</span>
+                    #end
+                </td>
+            </tr>
+            #end
+            #end
+
+            #end
+            #end
+            #end
+            </tbody>
+        </table>
+    </div>
+    <el-drawer title="编辑记录" :visible.sync="drawer">
+            <div class="block">
+                <el-timeline reverse="reverse">
+                    <el-timeline-item :timestamp="item.USER?item.USER+':'+item.DAY:item.DAY" placement="top" v-for="(item, index) in log_list" :key="index">
+                        <el-card>
+                            <h4>{{item.ITEM_NAME}}</h4>
+                        </el-card>
+                    </el-timeline-item>
+                </el-timeline>
+                <div class="rzz" v-if="!log_list">
+                    <img class="img" src="#(path)/static/img/empty.png">
+                    <div>无记录</div>
+                </div>
+            </div>
+    </el-drawer>
+</div>
+<script src="#(path)/static/js/jquery.min.js"></script>
+<script src="#(path)/static/js/layer/layer.js"></script>
+<script src="#(path)/static/js/vue.min.js"></script>
+<script src="#(path)/static/js/common.js"></script>
+<script src="#(path)/static/js/element-ui.js"></script>
+<script>
+    let vm = new Vue({
+        el: "#app",
+        data: {
+            day:'',
+            drawer: false,
+            log_list:[]
+        },
+        mounted() {
+        },
+        methods: {
+            change (date) {
+                vm.day= date;
+                console.log("aaaasd:"+date);
+            },
+            //失去焦点保存分数
+            blur(event) {
+                if (!event.target.value) {
+                    showToastError("名称不能为空");
+                    event.target.value=event.target.name;
+                    return;
+                }
+                if(event.target.value==event.target.name){
+                    return;
+                }
+                sendAjax("#(path)/edit", {table: '#(table)',day:vm.day,user:'#(user)',ITEM_NAME: event.target.value, ID: event.target.id}, res => {
+                    event.target.name=event.target.value;
+                    vm.$notify({title: '编辑成功', type: 'success'});
+                    cancelLoding();
+                })
+            },
+            record(id) {
+                sendAjax("#(path)/log", {table: '#(table)',ID:id}, res => {
+                    console.log("asd:"+JSON.stringify(res));
+                    vm.drawer = true;
+                    vm.log_list=res;
+                    cancelLoding();
+                })
+            },
+            move(id,op) {
+                console.log("id:"+id);
+                console.log("op:"+op);
+                sendAjax("#(path)/move", {table: '#(table)',id:id,op:op}, res => {
+                    console.log("asd:"+JSON.stringify(res));
+                    window.location.reload();
+                    cancelLoding();
+                })
+            }
+        }
+    })
+</script>
+</body>
+</html>

+ 20 - 0
src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="2.4"
+         xmlns="http://java.sun.com/xml/ns/j2ee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+    <display-name>ladder</display-name>
+    <filter>
+        <filter-name>jfinal</filter-name>
+        <filter-class>com.jfinal.core.JFinalFilter</filter-class>
+        <init-param>
+            <param-name>configClass</param-name>
+            <param-value>com.lsw.Application</param-value>
+        </init-param>
+    </filter>
+    <filter-mapping>
+        <filter-name>jfinal</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+</web-app>
+        

BIN
src/main/webapp/static/img/empty.png


+ 81 - 0
src/main/webapp/static/js/common.js

@@ -0,0 +1,81 @@
+/**
+ * @author lishuwen
+ * @time 2016-5-18:22:16
+ * @describe 一些常用的工具类
+ */
+
+/**
+ * 弹出一个提示信息
+ * @param content
+ */
+function showMessage(content) {
+    layer.alert(content, {
+        skin: 'layui-layer-molv', // 样式类名
+        closeBtn: 0,
+        shade: 0.5,
+    });
+}
+
+/**
+ * 关闭弹出框
+ */
+function closeView(time = 0) {
+    let index = parent.layer.getFrameIndex(window.name); // 先得到当前iframe层的索引
+    if (time == 0) {
+        setTimeout(() => {
+            parent.layer.close(index); // 再执行关闭
+        }, 700)
+    } else {
+        parent.layer.close(index); // 再执行关闭
+    }
+}
+
+/**
+ * 显示loading动画
+ */
+function showLoding() {
+    layer.msg('请稍等!', {icon: 16, shade: 0.3, time: false});
+}
+
+/**
+ * 隐藏loading动画
+ */
+function cancelLoding() {
+    let index = layer.msg('请稍等!', {icon: 16, shade: 0.2});//换了种风格
+    setTimeout(()=>{
+        layer.close(index);
+    },300)
+}
+/**
+ * 弹出一个成功吐司
+ * @param title
+ */
+function showToast(title) {
+    layer.msg(title, {time: 1500, shade: 0.3, icon: 1});
+}
+
+/**
+ * 弹出一个错误吐司
+ * @param title
+ */
+function showToastError(title) {
+    layer.msg(title, {
+        time: 1500,
+        icon: 2,
+        shade: 0.3
+    });
+}
+function sendAjax(url, param, callback) {
+    showLoding();
+    $.ajax({
+        type: "post",
+        url: url,
+        data: param,
+        dataType: "json",
+        success: callback,
+        error: function () {
+            showMessage("服务异常")
+            cancelLoding();
+        }
+    });
+}

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/main/webapp/static/js/element-ui.css


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/main/webapp/static/js/element-ui.js


BIN
src/main/webapp/static/js/fonts/element-icons.ttf


BIN
src/main/webapp/static/js/fonts/element-icons.woff


+ 33 - 0
src/main/webapp/static/js/fonts/iconfont.css

@@ -0,0 +1,33 @@
+@font-face {
+  font-family: "iconfont"; /* Project id  */
+  src: url('iconfont.ttf?t=1661331074258') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-jilu:before {
+  content: "\e631";
+}
+
+.icon-jilu1:before {
+  content: "\e6df";
+}
+
+.icon-xiayi:before {
+  content: "\e636";
+}
+
+.icon-shangyi:before {
+  content: "\e637";
+}
+
+.icon-jilu2:before {
+  content: "\e61b";
+}
+

BIN
src/main/webapp/static/js/fonts/iconfont.ttf


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
src/main/webapp/static/js/jquery.min.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
src/main/webapp/static/js/layer/extend/layer.ext.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
src/main/webapp/static/js/layer/layer.js


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
src/main/webapp/static/js/layer/layer_mobile/layer.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/main/webapp/static/js/layer/layer_mobile/need/layer.css


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
src/main/webapp/static/js/layer/laypage/laypage.js


+ 107 - 0
src/main/webapp/static/js/layer/laypage/skin/laypage.css

@@ -0,0 +1,107 @@
+/*!
+ laypage默认样式
+*/
+.laypage_main a, .laypage_main input, .laypage_main span {
+	height: 26px;
+	line-height: 26px
+}
+
+.laypage_main button, .laypage_main input, .laypageskin_default a {
+	border: 1px solid #ccc;
+	background-color: #fff
+}
+
+.laypage_main {
+	font-size: 0;
+	clear: both;
+	color: #666
+}
+
+.laypage_main * {
+	display: inline-block;
+	vertical-align: top;
+	font-size: 20px;
+}
+
+.laypage_main a {
+	text-decoration: none;
+	color: #666
+}
+
+.laypage_main a, .laypage_main span {
+	margin: 0 3px 6px;
+	padding: 0 10px
+}
+
+.laypage_main input {
+	width: 40px;
+	margin: 0 5px;
+	padding: 0 5px
+}
+
+.laypage_main button {
+	height: 28px;
+	line-height: 28px;
+	margin-left: 5px;
+	padding: 0 10px;
+	color: #666
+}
+
+.laypageskin_default span {
+	height: 28px;
+	line-height: 28px;
+	color: #999
+}
+
+.laypageskin_default .laypage_curr {
+	font-weight: 700;
+	color: #666
+}
+
+.laypageskin_molv a, .laypageskin_molv span {
+	padding: 0 12px;
+	border-radius: 2px
+}
+
+.laypageskin_molv a {
+	background-color: #f1eff0
+}
+
+.laypageskin_molv .laypage_curr {
+	background-color: #00AA91;
+	color: #fff
+}
+
+.laypageskin_molv input {
+	height: 24px;
+	line-height: 24px
+}
+
+.laypageskin_molv button {
+	height: 26px;
+	line-height: 26px
+}
+
+.laypageskin_yahei {
+	color: #333
+}
+
+.laypageskin_yahei a, .laypageskin_yahei span {
+	padding: 0 13px;
+	border-radius: 2px;
+	color: #333
+}
+
+.laypageskin_yahei .laypage_curr {
+	background-color: #333;
+	color: #fff
+}
+
+.laypageskin_flow {
+	text-align: center;
+	margin-top:10px
+}
+
+.laypageskin_flow .page_nomore {
+	color: #999
+}

BIN
src/main/webapp/static/js/layer/skin/default/icon-ext.png


BIN
src/main/webapp/static/js/layer/skin/default/icon.png


BIN
src/main/webapp/static/js/layer/skin/default/loading-0.gif


BIN
src/main/webapp/static/js/layer/skin/default/loading-1.gif


BIN
src/main/webapp/static/js/layer/skin/default/loading-2.gif


Разлика између датотеке није приказан због своје велике величине
+ 6 - 0
src/main/webapp/static/js/layer/skin/layer.css


Разлика између датотеке није приказан због своје велике величине
+ 7 - 0
src/main/webapp/static/js/layer/skin/layer.ext.css


Разлика између датотеке није приказан због своје велике величине
+ 5 - 0
src/main/webapp/static/js/vue.min.js


Неке датотеке нису приказане због велике количине промена