作者 蔺文领

初次提交

正在显示 68 个修改的文件 包含 3911 行增加0 行删除

要显示太多修改。

为保证性能只显示 68 of 68+ 个文件。

不能预览此文件类型
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<projectDescription>
  3 + <name>air-server</name>
  4 + <comment></comment>
  5 + <projects>
  6 + </projects>
  7 + <buildSpec>
  8 + <buildCommand>
  9 + <name>org.eclipse.wst.common.project.facet.core.builder</name>
  10 + <arguments>
  11 + </arguments>
  12 + </buildCommand>
  13 + <buildCommand>
  14 + <name>org.eclipse.m2e.core.maven2Builder</name>
  15 + <arguments>
  16 + </arguments>
  17 + </buildCommand>
  18 + </buildSpec>
  19 + <natures>
  20 + <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
  21 + <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
  22 + <nature>org.eclipse.m2e.core.maven2Nature</nature>
  23 + <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
  24 + </natures>
  25 +</projectDescription>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<classpath>
  3 + <classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="WebContent"/>
  4 + <classpathentry kind="output" path=""/>
  5 +</classpath>
  1 +activeProfiles=
  2 +eclipse.preferences.version=1
  3 +resolveWorkspaceProjects=true
  4 +version=1
  1 +<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
  2 + <wb-module deploy-name="air-server">
  3 + <wb-resource deploy-path="/WEB-INF/classes" source-path="/air-admin/src/main/java"/>
  4 + <wb-resource deploy-path="/WEB-INF/classes" source-path="/air-api/src/main/java"/>
  5 + <wb-resource deploy-path="/WEB-INF/classes" source-path="/air-common/src/test/java"/>
  6 + <wb-resource deploy-path="/WEB-INF/classes" source-path="/air-model/src/main/java"/>
  7 + <wb-resource deploy-path="/WEB-INF/classes" source-path="/air-model/src/test/java"/>
  8 + <property name="context-root" value="air-server"/>
  9 + <property name="java-output-path" value="/air-server/bin"/>
  10 + </wb-module>
  11 +</project-modules>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<faceted-project>
  3 +</faceted-project>
  1 +org.eclipse.wst.jsdt.launching.baseBrowserLibrary
不能预览此文件类型
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<classpath>
  3 + <classpathentry kind="src" output="target/classes" path="src/main/java">
  4 + <attributes>
  5 + <attribute name="optional" value="true"/>
  6 + <attribute name="maven.pomderived" value="true"/>
  7 + </attributes>
  8 + </classpathentry>
  9 + <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
  10 + <attributes>
  11 + <attribute name="maven.pomderived" value="true"/>
  12 + </attributes>
  13 + </classpathentry>
  14 + <classpathentry kind="src" output="target/test-classes" path="src/test/java">
  15 + <attributes>
  16 + <attribute name="optional" value="true"/>
  17 + <attribute name="maven.pomderived" value="true"/>
  18 + <attribute name="test" value="true"/>
  19 + </attributes>
  20 + </classpathentry>
  21 + <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
  22 + <attributes>
  23 + <attribute name="maven.pomderived" value="true"/>
  24 + <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
  25 + </attributes>
  26 + </classpathentry>
  27 + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
  28 + <attributes>
  29 + <attribute name="maven.pomderived" value="true"/>
  30 + </attributes>
  31 + </classpathentry>
  32 + <classpathentry kind="output" path="target/classes"/>
  33 +</classpath>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<projectDescription>
  3 + <name>air-admin</name>
  4 + <comment></comment>
  5 + <projects>
  6 + </projects>
  7 + <buildSpec>
  8 + <buildCommand>
  9 + <name>org.eclipse.jdt.core.javabuilder</name>
  10 + <arguments>
  11 + </arguments>
  12 + </buildCommand>
  13 + <buildCommand>
  14 + <name>org.eclipse.wst.common.project.facet.core.builder</name>
  15 + <arguments>
  16 + </arguments>
  17 + </buildCommand>
  18 + <buildCommand>
  19 + <name>org.eclipse.wst.validation.validationbuilder</name>
  20 + <arguments>
  21 + </arguments>
  22 + </buildCommand>
  23 + <buildCommand>
  24 + <name>org.eclipse.m2e.core.maven2Builder</name>
  25 + <arguments>
  26 + </arguments>
  27 + </buildCommand>
  28 + </buildSpec>
  29 + <natures>
  30 + <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
  31 + <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
  32 + <nature>org.eclipse.jdt.core.javanature</nature>
  33 + <nature>org.eclipse.m2e.core.maven2Nature</nature>
  34 + <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
  35 + <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
  36 + </natures>
  37 +</projectDescription>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<classpath>
  3 + <classpathentry kind="src" path="src/main/webapp"/>
  4 + <classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="target/m2e-wtp/web-resources"/>
  5 + <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
  6 + <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
  7 + <attributes>
  8 + <attribute name="hide" value="true"/>
  9 + </attributes>
  10 + </classpathentry>
  11 + <classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
  12 + <classpathentry kind="output" path=""/>
  13 +</classpath>
  1 +eclipse.preferences.version=1
  2 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
  3 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
  4 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
  5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
  6 +org.eclipse.jdt.core.compiler.compliance=1.8
  7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate
  8 +org.eclipse.jdt.core.compiler.debug.localVariable=generate
  9 +org.eclipse.jdt.core.compiler.debug.sourceFile=generate
  10 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
  11 +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
  12 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
  13 +org.eclipse.jdt.core.compiler.release=disabled
  14 +org.eclipse.jdt.core.compiler.source=1.8
  1 +activeProfiles=
  2 +eclipse.preferences.version=1
  3 +resolveWorkspaceProjects=true
  4 +version=1
  1 +<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
  2 +
  3 + <wb-module deploy-name="air-admin-0.0.1-SNAPSHOT">
  4 +
  5 + <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
  6 +
  7 + <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
  8 +
  9 + <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
  10 +
  11 + <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
  12 + <dependent-module archiveName="air-model-0.0.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/air-model/air-model">
  13 + <dependency-type>uses</dependency-type>
  14 + </dependent-module>
  15 + <dependent-module archiveName="air-kit-0.0.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/air-kit/air-kit">
  16 + <dependency-type>uses</dependency-type>
  17 + </dependent-module>
  18 + <dependent-module archiveName="air-common-0.1.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/air-common/air-common">
  19 + <dependency-type>uses</dependency-type>
  20 + </dependent-module>
  21 +
  22 + <property name="context-root" value="air-admin"/>
  23 +
  24 + <property name="java-output-path" value="/air-admin/target/classes"/>
  25 +
  26 + </wb-module>
  27 +
  28 +</project-modules>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<faceted-project>
  3 + <fixed facet="wst.jsdt.web"/>
  4 + <installed facet="jst.web" version="2.5"/>
  5 + <installed facet="wst.jsdt.web" version="1.0"/>
  6 + <installed facet="java" version="1.8"/>
  7 +</faceted-project>
  1 +org.eclipse.wst.jsdt.launching.baseBrowserLibrary
  1 +disabled=06target
  2 +eclipse.preferences.version=1
  1 +
  2 +2017-07-25 23:24:14
  3 +[WARN]-[Thread: main]-[org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed()]: FAILED jfinal: java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  4 +java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  5 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:102)
  6 + at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:47)
  7 + at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
  8 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  9 + at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
  10 + at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
  11 + at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
  12 + at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
  13 + at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
  14 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  15 + at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
  16 + at org.eclipse.jetty.server.Server.doStart(Server.java:277)
  17 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  18 + at com.jfinal.server.JettyServer.doStart(JettyServer.java:131)
  19 + at com.jfinal.server.JettyServer.start(JettyServer.java:70)
  20 + at com.jfinal.core.JFinal.start(JFinal.java:159)
  21 + at com.air.config.AirAdminConfig.main(AirAdminConfig.java:82)
  22 +Caused by: java.lang.ClassNotFoundException: com.teplot.air.common.AirAdminConfig
  23 + at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  24 + at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  25 + at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  26 + at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  27 + at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
  28 + at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
  29 + at java.lang.Class.forName0(Native Method)
  30 + at java.lang.Class.forName(Class.java:264)
  31 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:100)
  32 + ... 16 more
  33 +
  34 +2017-07-25 23:24:14
  35 +[WARN]-[Thread: main]-[org.eclipse.jetty.webapp.WebAppContext.doStart()]: Failed startup of context o.e.j.w.WebAppContext{/air-api,file:/Users/Kevin/Documents/workspace/javaweb/air-server/air-admin/src/main/webapp/}
  36 +java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  37 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:102)
  38 + at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:47)
  39 + at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
  40 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  41 + at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
  42 + at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
  43 + at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
  44 + at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
  45 + at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
  46 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  47 + at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
  48 + at org.eclipse.jetty.server.Server.doStart(Server.java:277)
  49 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  50 + at com.jfinal.server.JettyServer.doStart(JettyServer.java:131)
  51 + at com.jfinal.server.JettyServer.start(JettyServer.java:70)
  52 + at com.jfinal.core.JFinal.start(JFinal.java:159)
  53 + at com.air.config.AirAdminConfig.main(AirAdminConfig.java:82)
  54 +Caused by: java.lang.ClassNotFoundException: com.teplot.air.common.AirAdminConfig
  55 + at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  56 + at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  57 + at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  58 + at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  59 + at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
  60 + at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
  61 + at java.lang.Class.forName0(Native Method)
  62 + at java.lang.Class.forName(Class.java:264)
  63 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:100)
  64 + ... 16 more
  65 +
  66 +2017-07-25 23:24:14
  67 +[WARN]-[Thread: main]-[org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed()]: FAILED o.e.j.w.WebAppContext{/air-api,file:/Users/Kevin/Documents/workspace/javaweb/air-server/air-admin/src/main/webapp/}: java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  68 +java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  69 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:102)
  70 + at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:47)
  71 + at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
  72 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  73 + at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
  74 + at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
  75 + at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
  76 + at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
  77 + at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
  78 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  79 + at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
  80 + at org.eclipse.jetty.server.Server.doStart(Server.java:277)
  81 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  82 + at com.jfinal.server.JettyServer.doStart(JettyServer.java:131)
  83 + at com.jfinal.server.JettyServer.start(JettyServer.java:70)
  84 + at com.jfinal.core.JFinal.start(JFinal.java:159)
  85 + at com.air.config.AirAdminConfig.main(AirAdminConfig.java:82)
  86 +Caused by: java.lang.ClassNotFoundException: com.teplot.air.common.AirAdminConfig
  87 + at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  88 + at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  89 + at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  90 + at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  91 + at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
  92 + at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
  93 + at java.lang.Class.forName0(Native Method)
  94 + at java.lang.Class.forName(Class.java:264)
  95 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:100)
  96 + ... 16 more
  97 +
  98 +2017-07-25 23:24:14
  99 +[WARN]-[Thread: main]-[org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed()]: FAILED org.eclipse.jetty.server.Server@ed9d034: java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  100 +java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  101 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:102)
  102 + at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:47)
  103 + at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
  104 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  105 + at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
  106 + at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
  107 + at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
  108 + at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
  109 + at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
  110 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  111 + at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
  112 + at org.eclipse.jetty.server.Server.doStart(Server.java:277)
  113 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  114 + at com.jfinal.server.JettyServer.doStart(JettyServer.java:131)
  115 + at com.jfinal.server.JettyServer.start(JettyServer.java:70)
  116 + at com.jfinal.core.JFinal.start(JFinal.java:159)
  117 + at com.air.config.AirAdminConfig.main(AirAdminConfig.java:82)
  118 +Caused by: java.lang.ClassNotFoundException: com.teplot.air.common.AirAdminConfig
  119 + at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  120 + at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  121 + at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  122 + at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  123 + at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
  124 + at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
  125 + at java.lang.Class.forName0(Native Method)
  126 + at java.lang.Class.forName(Class.java:264)
  127 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:100)
  128 + ... 16 more
  129 +
  130 +2017-07-25 23:24:14
  131 +[ERROR]-[Thread: main]-[com.jfinal.kit.LogKit.error()]: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  132 +java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  133 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:102)
  134 + at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:47)
  135 + at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
  136 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  137 + at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
  138 + at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
  139 + at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
  140 + at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
  141 + at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
  142 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  143 + at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
  144 + at org.eclipse.jetty.server.Server.doStart(Server.java:277)
  145 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  146 + at com.jfinal.server.JettyServer.doStart(JettyServer.java:131)
  147 + at com.jfinal.server.JettyServer.start(JettyServer.java:70)
  148 + at com.jfinal.core.JFinal.start(JFinal.java:159)
  149 + at com.air.config.AirAdminConfig.main(AirAdminConfig.java:82)
  150 +Caused by: java.lang.ClassNotFoundException: com.teplot.air.common.AirAdminConfig
  151 + at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  152 + at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  153 + at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  154 + at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  155 + at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
  156 + at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
  157 + at java.lang.Class.forName0(Native Method)
  158 + at java.lang.Class.forName(Class.java:264)
  159 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:100)
  160 + ... 16 more
  161 +
  162 +2017-07-25 23:34:34
  163 +[WARN]-[Thread: main]-[org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed()]: FAILED jfinal: java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  164 +java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  165 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:102)
  166 + at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:47)
  167 + at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
  168 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  169 + at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
  170 + at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
  171 + at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
  172 + at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
  173 + at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
  174 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  175 + at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
  176 + at org.eclipse.jetty.server.Server.doStart(Server.java:277)
  177 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  178 + at com.jfinal.server.JettyServer.doStart(JettyServer.java:131)
  179 + at com.jfinal.server.JettyServer.start(JettyServer.java:70)
  180 + at com.jfinal.core.JFinal.start(JFinal.java:159)
  181 + at com.air.config.AirAdminConfig.main(AirAdminConfig.java:82)
  182 +Caused by: java.lang.ClassNotFoundException: com.teplot.air.common.AirAdminConfig
  183 + at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  184 + at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  185 + at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  186 + at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  187 + at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
  188 + at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
  189 + at java.lang.Class.forName0(Native Method)
  190 + at java.lang.Class.forName(Class.java:264)
  191 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:100)
  192 + ... 16 more
  193 +
  194 +2017-07-25 23:34:34
  195 +[WARN]-[Thread: main]-[org.eclipse.jetty.webapp.WebAppContext.doStart()]: Failed startup of context o.e.j.w.WebAppContext{/air-api,file:/Users/Kevin/Documents/workspace/javaweb/air-server/air-admin/src/main/webapp/}
  196 +java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  197 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:102)
  198 + at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:47)
  199 + at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
  200 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  201 + at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
  202 + at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
  203 + at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
  204 + at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
  205 + at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
  206 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  207 + at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
  208 + at org.eclipse.jetty.server.Server.doStart(Server.java:277)
  209 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  210 + at com.jfinal.server.JettyServer.doStart(JettyServer.java:131)
  211 + at com.jfinal.server.JettyServer.start(JettyServer.java:70)
  212 + at com.jfinal.core.JFinal.start(JFinal.java:159)
  213 + at com.air.config.AirAdminConfig.main(AirAdminConfig.java:82)
  214 +Caused by: java.lang.ClassNotFoundException: com.teplot.air.common.AirAdminConfig
  215 + at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  216 + at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  217 + at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  218 + at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  219 + at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
  220 + at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
  221 + at java.lang.Class.forName0(Native Method)
  222 + at java.lang.Class.forName(Class.java:264)
  223 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:100)
  224 + ... 16 more
  225 +
  226 +2017-07-25 23:34:34
  227 +[WARN]-[Thread: main]-[org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed()]: FAILED o.e.j.w.WebAppContext{/air-api,file:/Users/Kevin/Documents/workspace/javaweb/air-server/air-admin/src/main/webapp/}: java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  228 +java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  229 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:102)
  230 + at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:47)
  231 + at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
  232 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  233 + at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
  234 + at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
  235 + at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
  236 + at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
  237 + at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
  238 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  239 + at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
  240 + at org.eclipse.jetty.server.Server.doStart(Server.java:277)
  241 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  242 + at com.jfinal.server.JettyServer.doStart(JettyServer.java:131)
  243 + at com.jfinal.server.JettyServer.start(JettyServer.java:70)
  244 + at com.jfinal.core.JFinal.start(JFinal.java:159)
  245 + at com.air.config.AirAdminConfig.main(AirAdminConfig.java:82)
  246 +Caused by: java.lang.ClassNotFoundException: com.teplot.air.common.AirAdminConfig
  247 + at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  248 + at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  249 + at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  250 + at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  251 + at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
  252 + at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
  253 + at java.lang.Class.forName0(Native Method)
  254 + at java.lang.Class.forName(Class.java:264)
  255 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:100)
  256 + ... 16 more
  257 +
  258 +2017-07-25 23:34:34
  259 +[WARN]-[Thread: main]-[org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed()]: FAILED org.eclipse.jetty.server.Server@ed9d034: java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  260 +java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  261 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:102)
  262 + at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:47)
  263 + at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
  264 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  265 + at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
  266 + at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
  267 + at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
  268 + at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
  269 + at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
  270 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  271 + at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
  272 + at org.eclipse.jetty.server.Server.doStart(Server.java:277)
  273 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  274 + at com.jfinal.server.JettyServer.doStart(JettyServer.java:131)
  275 + at com.jfinal.server.JettyServer.start(JettyServer.java:70)
  276 + at com.jfinal.core.JFinal.start(JFinal.java:159)
  277 + at com.air.config.AirAdminConfig.main(AirAdminConfig.java:82)
  278 +Caused by: java.lang.ClassNotFoundException: com.teplot.air.common.AirAdminConfig
  279 + at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  280 + at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  281 + at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  282 + at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  283 + at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
  284 + at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
  285 + at java.lang.Class.forName0(Native Method)
  286 + at java.lang.Class.forName(Class.java:264)
  287 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:100)
  288 + ... 16 more
  289 +
  290 +2017-07-25 23:34:34
  291 +[ERROR]-[Thread: main]-[com.jfinal.kit.LogKit.error()]: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  292 +java.lang.RuntimeException: Can not create instance of class: com.teplot.air.common.AirAdminConfig
  293 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:102)
  294 + at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:47)
  295 + at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:119)
  296 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  297 + at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)
  298 + at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
  299 + at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
  300 + at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:706)
  301 + at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
  302 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  303 + at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
  304 + at org.eclipse.jetty.server.Server.doStart(Server.java:277)
  305 + at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
  306 + at com.jfinal.server.JettyServer.doStart(JettyServer.java:131)
  307 + at com.jfinal.server.JettyServer.start(JettyServer.java:70)
  308 + at com.jfinal.core.JFinal.start(JFinal.java:159)
  309 + at com.air.config.AirAdminConfig.main(AirAdminConfig.java:82)
  310 +Caused by: java.lang.ClassNotFoundException: com.teplot.air.common.AirAdminConfig
  311 + at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  312 + at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  313 + at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  314 + at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  315 + at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
  316 + at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
  317 + at java.lang.Class.forName0(Native Method)
  318 + at java.lang.Class.forName(Class.java:264)
  319 + at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:100)
  320 + ... 16 more
  321 +
  322 +2017-08-01 17:37:52
  323 +[ERROR]-[Thread: qtp1265210847-19]-[com.air.model.SysMenu.getMenus()]: role-->{"level":1,"name":"超级管理员","id":1,"menu":"1,2,3,4,5,6,7,8,9,11,12,13,14"}
  324 +
  325 +2017-08-01 17:42:11
  326 +[ERROR]-[Thread: qtp1265210847-21]-[com.air.model.SysMenu.getMenus()]: role-->{"level":4,"name":"货代","id":4,"menu":"1,10"}
  327 +
  328 +2017-08-01 17:42:56
  329 +[ERROR]-[Thread: qtp1265210847-16]-[com.air.model.SysMenu.getMenus()]: role-->{"level":1,"name":"超级管理员","id":1,"menu":"1,2,3,4,5,6,7,8,9,11,12,13,14"}
  330 +
  331 +2017-08-01 17:49:08
  332 +[ERROR]-[Thread: qtp1265210847-23]-[com.air.model.SysMenu.getMenus()]: role-->{"level":2,"name":"管理员","id":2,"menu":"1,2,3,4,5,6,7,8,9,11,12,13,14"}
  333 +
  334 +2017-08-22 15:34:59
  335 +[ERROR]-[Thread: qtp1631862159-18]-[com.air.model.SysMenu.getMenus()]: role-->{"level":1,"name":"超级管理员","id":1,"menu":"1,2,3,4,5,6,7,8,9,11,12,13,14"}
  336 +
  337 +2017-08-22 15:37:00
  338 +[ERROR]-[Thread: qtp1631862159-18]-[com.air.model.SysMenu.getMenus()]: role-->{"level":1,"name":"超级管理员","id":1,"menu":"1,2,3,4,5,6,7,8,9,11,12,13,14"}
  339 +
  340 +2017-08-22 16:50:08
  341 +[ERROR]-[Thread: qtp1631862159-21]-[com.air.model.SysMenu.getMenus()]: role-->{"level":1,"name":"超级管理员","id":1,"menu":"1,2,3,4,5,6,7,8,9,11,12,13,14"}
  342 +
  343 +2017-12-25 11:17:08
  344 +[ERROR]-[Thread: qtp530737374-23]-[com.air.model.SysMenu.getMenus()]: role-->{"level":1,"name":"超级管理员","id":1,"menu":"1,2,3,4,5,6,7,8,9,11,12,13,14"}
  345 +
  346 +2017-12-25 11:48:25
  347 +[ERROR]-[Thread: qtp530737374-24]-[com.air.model.SysMenu.getMenus()]: role-->{"level":1,"name":"超级管理员","id":1,"menu":"1,2,3,4,5,6,7,8,9,11,12,13,14"}
  348 +
  349 +2017-12-25 14:02:43
  350 +[ERROR]-[Thread: qtp530737374-21]-[com.air.model.SysMenu.getMenus()]: role-->{"level":1,"name":"超级管理员","id":1,"menu":"1,2,3,4,5,6,7,8,9,11,12,13,14"}
  351 +
  352 +2017-12-25 15:38:41
  353 +[ERROR]-[Thread: qtp530737374-25]-[com.air.model.SysMenu.getMenus()]: role-->{"level":1,"name":"超级管理员","id":1,"menu":"1,2,3,4,5,6,7,8,9,11,12,13,14"}
  1 +<?xml version="1.0"?>
  2 +<project
  3 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  4 + xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  5 + <modelVersion>4.0.0</modelVersion>
  6 + <parent>
  7 + <groupId>com.air</groupId>
  8 + <artifactId>air-server</artifactId>
  9 + <version>0.0.1-SNAPSHOT</version>
  10 + </parent>
  11 + <artifactId>air-admin</artifactId>
  12 + <packaging>war</packaging>
  13 + <name>air-admin Maven Webapp</name>
  14 + <url>http://maven.apache.org</url>
  15 + <dependencies>
  16 + <dependency>
  17 + <groupId>junit</groupId>
  18 + <artifactId>junit</artifactId>
  19 + <version>3.8.1</version>
  20 + <scope>test</scope>
  21 + </dependency>
  22 + <dependency>
  23 + <groupId>com.air</groupId>
  24 + <artifactId>air-model</artifactId>
  25 + <version>0.0.1-SNAPSHOT</version>
  26 + </dependency>
  27 + <dependency>
  28 + <groupId>com.air</groupId>
  29 + <artifactId>air-kit</artifactId>
  30 + <version>0.0.1-SNAPSHOT</version>
  31 + </dependency>
  32 + </dependencies>
  33 +</project>
不能预览此文件类型
不能预览此文件类型
不能预览此文件类型
不能预览此文件类型
  1 +package com.air.config;
  2 +
  3 +import com.air.model.StationMap;
  4 +import com.air.model.SysRole;
  5 +import com.air.model.SysUser;
  6 +import com.jfinal.log.Log;
  7 +import com.teplot.common.BaseController;
  8 +import com.teplot.common.Utils;
  9 +
  10 +/**
  11 + * Depiction:
  12 + * <p>
  13 + * Modify:
  14 + * <p>
  15 + * Author: Kevin Lynn
  16 + * <p>
  17 + * Create Date:2017年3月29日 上午10:46:31
  18 + *
  19 + */
  20 +public class AbsController extends BaseController {
  21 + @Override
  22 + public void render(String view) {
  23 + setAttr("host", Utils.host());
  24 + setAttr("version", System.currentTimeMillis());
  25 + super.render(view);
  26 + }
  27 +
  28 + /**
  29 + * 当前登录用户
  30 + *
  31 + * @return
  32 + */
  33 + protected SysUser getLoginUser() {
  34 + return getSessionAttr("user");
  35 + }
  36 +
  37 + /**
  38 + * 获取当前后台登录用户的角色
  39 + *
  40 + * @return
  41 + */
  42 + protected SysRole getRole() {
  43 + SysRole role = null;
  44 + SysUser user = getLoginUser();
  45 + if (user == null || user.getInt("status") != 0) {
  46 + // 账户过期或者未启用
  47 + Log.getLog(getClass()).error("the user is null");
  48 + redirect("/login");
  49 + return role;
  50 + }
  51 +
  52 + // 存在该账户,并且该账户处于启用状态
  53 + int roleLevel = user.getInt("roleLevel");
  54 + role = SysRole.dao.searchFirst("level", roleLevel);
  55 + return role;
  56 + }
  57 +
  58 + protected String getStationArea() {
  59 + StationMap station = getLoginUser().get("station");
  60 + if (station != null) {
  61 + return station.getAreaCode();
  62 + }
  63 +
  64 + return null;
  65 + }
  66 +}
  1 +package com.air.config;
  2 +
  3 +import com.air.controller.AdminController;
  4 +import com.air.controller.AgentController;
  5 +import com.air.controller.CarController;
  6 +import com.air.controller.HomeController;
  7 +import com.air.controller.LogAdminController;
  8 +import com.air.controller.LogApiController;
  9 +import com.air.controller.PortController;
  10 +import com.air.controller.SysUserController;
  11 +import com.air.controller.UploadController;
  12 +import com.jfinal.config.Routes;
  13 +
  14 +/**
  15 + * Depiction:后台路由规则配置
  16 + * <p>
  17 + * Modify:
  18 + * <p>
  19 + * Author: Kevin Lynn
  20 + * <p>
  21 + * Create Date:2016年7月22日 上午1:48:05
  22 + * <p>
  23 + *
  24 + * @version 1.0
  25 + * @since 1.0
  26 + */
  27 +public class AdminRoutes extends Routes {
  28 +
  29 + public AdminRoutes() {
  30 + }
  31 +
  32 + @Override
  33 + public void config() {
  34 + setBaseViewPath("WEB-INF/admin");
  35 + add("/", AdminController.class, "/");
  36 + add("/home", HomeController.class, "/");
  37 + add("/car", CarController.class, "/");
  38 + add("/port", PortController.class, "/");
  39 + add("/agent", AgentController.class, "/");
  40 + add("/sysUser", SysUserController.class, "/");
  41 + add("/sysLog", LogAdminController.class, "/");
  42 + add("/apiLog", LogApiController.class, "/");
  43 + add("/upload", UploadController.class, "/");
  44 + }
  45 +
  46 +}
  1 +package com.air.config;
  2 +
  3 +import com.air.interceptor.AuthInterceptor;
  4 +import com.air.model._MappingKit;
  5 +import com.jfinal.config.Constants;
  6 +import com.jfinal.config.Handlers;
  7 +import com.jfinal.config.Interceptors;
  8 +import com.jfinal.config.JFinalConfig;
  9 +import com.jfinal.config.Plugins;
  10 +import com.jfinal.config.Routes;
  11 +import com.jfinal.core.JFinal;
  12 +import com.jfinal.ext.handler.ContextPathHandler;
  13 +import com.jfinal.kit.PathKit;
  14 +import com.jfinal.kit.PropKit;
  15 +import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
  16 +import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
  17 +import com.jfinal.plugin.c3p0.C3p0Plugin;
  18 +import com.jfinal.render.ViewType;
  19 +import com.jfinal.template.Engine;
  20 +import com.teplot.common.Utils;
  21 +
  22 +public class AirAdminConfig extends JFinalConfig {
  23 +
  24 + @Override
  25 + public void configConstant(Constants me) {
  26 + Utils.loadConfig();
  27 +
  28 + me.setEncoding("utf-8");
  29 + me.setDevMode(PropKit.getBoolean("devMode"));
  30 + me.setViewType(ViewType.JFINAL_TEMPLATE);
  31 + me.setBaseUploadPath("upload");
  32 + }
  33 +
  34 + @Override
  35 + public void configRoute(Routes me) {
  36 + me.add(new AdminRoutes());
  37 + }
  38 +
  39 + @Override
  40 + public void configPlugin(Plugins me) {
  41 + C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get("jdbc.url"), PropKit.get("jdbc.user"),
  42 + PropKit.get("jdbc.password"));
  43 +
  44 + ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
  45 + Utils.loadSqls(arp, PathKit.getRootClassPath());
  46 +
  47 + arp.setShowSql(PropKit.getBoolean("devMode"));
  48 + arp.setDialect(new MysqlDialect());
  49 + _MappingKit.mapping(arp);
  50 +
  51 + // 添加到插件列表中
  52 + me.add(c3p0Plugin);
  53 + me.add(arp);
  54 + }
  55 +
  56 + @Override
  57 + public void configInterceptor(Interceptors me) {
  58 + me.add(new AuthInterceptor());
  59 + }
  60 +
  61 + @Override
  62 + public void configHandler(Handlers me) {
  63 + me.add(new ContextPathHandler("contextPath"));
  64 + }
  65 +
  66 + @Override
  67 + public void configEngine(Engine me) {
  68 + me.addSharedFunction("/WEB-INF/admin/_header.html");
  69 + me.addSharedFunction("/WEB-INF/admin/_pagination.html");
  70 + }
  71 +
  72 + @Override
  73 + public void afterJFinalStart() {
  74 + }
  75 +
  76 + @Override
  77 + public void beforeJFinalStop() {
  78 + }
  79 +
  80 + public static void main(String[] args) {
  81 + Utils.loadConfig();
  82 + JFinal.start("src/main/webapp", 8081, Utils.contextPathAdmin(), 5);
  83 + }
  84 +
  85 +}
  1 +package com.air.controller;
  2 +
  3 +import com.air.config.AbsController;
  4 +import com.air.model.SysMenu;
  5 +import com.jfinal.aop.Clear;
  6 +
  7 +/**
  8 + * Depiction:后台界面控制器
  9 + * <p>
  10 + * Modify:
  11 + * <p>
  12 + * Author: Kevin Lynn
  13 + * <p>
  14 + * Create Date:2016年6月3日 下午11:02:05
  15 + * <p>
  16 + *
  17 + * @version 1.0
  18 + * @since 1.0
  19 + */
  20 +public class AdminController extends AbsController {
  21 +
  22 + public void index() {
  23 + setAttr("loginName", getLoginUser().getStr("realName"));
  24 + setAttr("menuList", SysMenu.dao.getMenus(getRole()));
  25 + render("index.html");
  26 + }
  27 +
  28 + @Clear
  29 + public void login() {
  30 + render("login.html");
  31 + }
  32 +
  33 + @Clear
  34 + public void verifyCode() {
  35 + renderCaptcha();
  36 + }
  37 +}
  1 +package com.air.controller;
  2 +
  3 +import com.air.config.AbsController;
  4 +import com.air.model.Agent;
  5 +import com.jfinal.plugin.activerecord.Page;
  6 +
  7 +/**
  8 + * Depiction:
  9 + * <p>
  10 + * Modify:
  11 + * <p>
  12 + * Author: Kevin Lynn
  13 + * <p>
  14 + * Create Date:2016年6月3日 下午11:02:05
  15 + * <p>
  16 + *
  17 + * @version 1.0
  18 + * @since 1.0
  19 + */
  20 +public class AgentController extends AbsController {
  21 +
  22 + public void list() {
  23 + String key = getPara("key");
  24 + int page = this.getParaToInt("page", 1);
  25 + int pageNum = this.getParaToInt("pageNum", 10);
  26 + Page<Agent> pageData = Agent.dao.search(page, pageNum, key);
  27 + setAttr("dataList", pageData.getList());
  28 + setAttr("curPage", pageData.getPageNumber());
  29 + setAttr("totalSize", pageData.getTotalRow());
  30 + setAttr("totalPage", pageData.getTotalPage());
  31 + setAttr("searchKey", key);
  32 + render("agentList.html");
  33 + }
  34 +
  35 + public void edit() {
  36 + int id = getParaToInt("id", 0);
  37 + Agent model = Agent.dao.findById(id);
  38 + setAttr("agent", model);
  39 + render("agentEdit.html");
  40 + }
  41 +
  42 + public void details() {
  43 + String agentName = getPara("name");
  44 + String sql = "select * from " + Agent.dao.table() + " where nameCN='" + agentName + "'";
  45 + Agent model = Agent.dao.findFirst(sql);
  46 + setAttr("agent", model);
  47 + render("agentDetails.html");
  48 + }
  49 +
  50 + public void submit() {
  51 + Agent model = getModel(Agent.class, "agent");
  52 + if (model != null) {
  53 + if (model.getId() != null) {
  54 + // 更新
  55 + if (model.update()) {
  56 + setAttr("flag", "操作成功");
  57 + } else {
  58 + setAttr("flag", "操作失败");
  59 + }
  60 + } else {
  61 + // 新建
  62 + String name = model.getNameCN();
  63 + Agent temp = Agent.dao.searchFirst("nameCN", name);
  64 + if (temp != null) {
  65 + setAttr("flag", "该货代已经存在");
  66 + } else {
  67 + if (model.save()) {
  68 + setAttr("flag", "操作成功");
  69 + } else {
  70 + setAttr("flag", "操作失败");
  71 + }
  72 + }
  73 + }
  74 + }
  75 + render("agentEdit.html");
  76 + }
  77 +
  78 + public void delete() {
  79 + int id = getParaToInt("id", 0);
  80 + Agent model = Agent.dao.findById(id);
  81 + if (model != null) {
  82 + if (model.delete()) {
  83 + setAttr("flag", "操作成功");
  84 + } else {
  85 + setAttr("flag", "操作失败");
  86 + }
  87 + } else {
  88 + setAttr("flag", "该货代不存在");
  89 + }
  90 +
  91 + list();
  92 + }
  93 +}
  1 +package com.air.controller;
  2 +
  3 +import java.util.Date;
  4 +import java.util.HashMap;
  5 +import java.util.Map;
  6 +
  7 +import com.air.config.AbsController;
  8 +import com.air.model.AirPortCar;
  9 +import com.air.model.AirPortCarStatus;
  10 +import com.air.model.StationMap;
  11 +import com.jfinal.kit.StrKit;
  12 +import com.jfinal.plugin.activerecord.Page;
  13 +
  14 +/**
  15 + * Depiction:车辆进出场控制器
  16 + * <p>
  17 + * Modify:
  18 + * <p>
  19 + * Author: Kevin Lynn
  20 + * <p>
  21 + * Create Date:2016年6月3日 下午11:02:05
  22 + * <p>
  23 + *
  24 + * @version 1.0
  25 + * @since 1.0
  26 + */
  27 +public class CarController extends AbsController {
  28 +
  29 + public void applyList() {
  30 + String key = getPara("key");
  31 + int page = this.getParaToInt("page", 1);
  32 + int pageNum = this.getParaToInt("pageNum", 10);
  33 +
  34 + Page<AirPortCar> pageData = AirPortCar.dao.search(page, pageNum, key, AirPortCarStatus.APPLY, getStationArea());
  35 + if (pageData.getList() != null) {
  36 + for (AirPortCar car : pageData.getList()) {
  37 + String stationArea = car.getStationArea();
  38 + StationMap station = StationMap.dao.searchFirst("areaCode", stationArea);
  39 + car.put("station", station);
  40 + }
  41 + }
  42 + setAttr("dataList", pageData.getList());
  43 + setAttr("curPage", pageData.getPageNumber());
  44 + setAttr("totalSize", pageData.getTotalRow());
  45 + setAttr("totalPage", pageData.getTotalPage());
  46 + setAttr("searchKey", key);
  47 + setAttr("role", getRole().getLevel());
  48 + render("applyList.html");
  49 + }
  50 +
  51 + public void enterList() {
  52 + String key = getPara("key");
  53 + int page = this.getParaToInt("page", 1);
  54 + int pageNum = this.getParaToInt("pageNum", 10);
  55 + Page<AirPortCar> pageData = AirPortCar.dao.search(page, pageNum, key, AirPortCarStatus.ENTER, getStationArea());
  56 + if (pageData.getList() != null) {
  57 + for (AirPortCar car : pageData.getList()) {
  58 + String stationArea = car.getStationArea();
  59 + StationMap station = StationMap.dao.searchFirst("areaCode", stationArea);
  60 + car.put("station", station);
  61 + }
  62 + }
  63 + setAttr("dataList", pageData.getList());
  64 + setAttr("curPage", pageData.getPageNumber());
  65 + setAttr("totalSize", pageData.getTotalRow());
  66 + setAttr("totalPage", pageData.getTotalPage());
  67 + setAttr("searchKey", key);
  68 + setAttr("role", getRole().getLevel());
  69 + render("enterList.html");
  70 + }
  71 +
  72 + public void historyList() {
  73 + String key = getPara("key");
  74 + int page = this.getParaToInt("page", 1);
  75 + int pageNum = this.getParaToInt("pageNum", 10);
  76 + Page<AirPortCar> pageData = AirPortCar.dao.search(page, pageNum, key, null, getStationArea());
  77 + if (pageData.getList() != null) {
  78 + for (AirPortCar car : pageData.getList()) {
  79 + String stationArea = car.getStationArea();
  80 + StationMap station = StationMap.dao.searchFirst("areaCode", stationArea);
  81 + car.put("station", station);
  82 + }
  83 + }
  84 + setAttr("dataList", pageData.getList());
  85 + setAttr("curPage", pageData.getPageNumber());
  86 + setAttr("totalSize", pageData.getTotalRow());
  87 + setAttr("totalPage", pageData.getTotalPage());
  88 + setAttr("searchKey", key);
  89 + setAttr("role", getRole().getLevel());
  90 + render("historyList.html");
  91 + }
  92 +
  93 + public void checkList() {
  94 + String key = getPara("key");
  95 + int page = this.getParaToInt("page", 1);
  96 + int pageNum = this.getParaToInt("pageNum", 10);
  97 + Page<AirPortCar> pageData = AirPortCar.dao.search(page, pageNum, key, null, getStationArea());
  98 +
  99 + if (pageData != null && pageData.getList() != null) {
  100 + for (AirPortCar data : pageData.getList()) {
  101 + String stationArea = data.getStationArea();
  102 + StationMap station = StationMap.dao.searchFirst("areaCode", stationArea);
  103 + data.put("station", station);
  104 +
  105 + if (data.getEnterTime() != null) {
  106 + if (data.getLeaveTime() == null) {
  107 + data.put("checkResult", "有进无出");
  108 + } else {
  109 + data.put("checkResult", "正常");
  110 + }
  111 + } else {
  112 + if (data.getLeaveTime() == null) {
  113 + data.put("checkResult", "待进场");
  114 + } else {
  115 + data.put("checkResult", "无进有出");
  116 + }
  117 + }
  118 + }
  119 + }
  120 + setAttr("dataList", pageData.getList());
  121 + setAttr("curPage", pageData.getPageNumber());
  122 + setAttr("totalSize", pageData.getTotalRow());
  123 + setAttr("totalPage", pageData.getTotalPage());
  124 + setAttr("searchKey", key);
  125 + setAttr("role", getRole().getLevel());
  126 + render("checkList.html");
  127 + }
  128 +
  129 + public void applyPre() {
  130 + String key = getPara("key");
  131 + int page = this.getParaToInt("page", 1);
  132 + int pageNum = this.getParaToInt("pageNum", 10);
  133 +
  134 + Page<AirPortCar> pageData = AirPortCar.dao.searchPre(page, pageNum, key, getLoginUser().getId());
  135 +
  136 + if (pageData.getList() != null) {
  137 + for (AirPortCar car : pageData.getList()) {
  138 + String stationArea = car.getStationArea();
  139 + StationMap station = StationMap.dao.searchFirst("areaCode", stationArea);
  140 + car.put("station", station);
  141 + }
  142 + }
  143 +
  144 + setAttr("dataList", pageData.getList());
  145 + setAttr("curPage", pageData.getPageNumber());
  146 + setAttr("totalSize", pageData.getTotalRow());
  147 + setAttr("totalPage", pageData.getTotalPage());
  148 + setAttr("searchKey", key);
  149 + render("applyPre.html");
  150 + }
  151 +
  152 + public void applyPreEdit() {
  153 + setAttr("stationList", StationMap.dao.searchAll());
  154 + render("applyPreEdit.html");
  155 + }
  156 +
  157 + public void submitPre() {
  158 + AirPortCar model = getModel(AirPortCar.class, "car");
  159 + if (model != null) {
  160 + String carNo = model.getCarNo();
  161 + if (StrKit.notBlank(carNo)) {
  162 + carNo = carNo.toUpperCase();
  163 + }
  164 +
  165 + Map<String, Object> maps = new HashMap<String, Object>();
  166 + maps.put("carNo", carNo);
  167 + AirPortCar tmp = AirPortCar.dao.searchFirst(maps);
  168 + if (tmp == null || (tmp.getStatus() == AirPortCarStatus.LEFT.ordinal())) {
  169 + model.setApplyTime(new Date());
  170 + model.setSysUserId(getLoginUser().getId());
  171 +
  172 + String agentName = getLoginUser().getAgentName();
  173 + if (StrKit.isBlank(agentName)) {
  174 + agentName = "无货代公司";
  175 + }
  176 +
  177 + model.setAgentName(agentName);
  178 +
  179 + if (model.save()) {
  180 + setAttr("flag", "操作成功");
  181 + } else {
  182 + setAttr("flag", "操作失败");
  183 + }
  184 + } else {
  185 + setAttr("flag", "不能重复录入");
  186 + }
  187 + } else {
  188 + setAttr("flag", "操作失败,参数错误");
  189 + }
  190 +
  191 + applyPre();
  192 + }
  193 +}
  1 +package com.air.controller;
  2 +
  3 +import com.air.config.AbsController;
  4 +import com.air.model.SysLoginLog;
  5 +import com.air.model.SysUser;
  6 +
  7 +/**
  8 + * Depiction:后台系统桌面控制器
  9 + * <p>
  10 + * Modify:
  11 + * <p>
  12 + * Author: Kevin Lynn
  13 + * <p>
  14 + * Create Date:2016年6月3日 下午11:02:05
  15 + * <p>
  16 + *
  17 + * @version 1.0
  18 + * @since 1.0
  19 + */
  20 +public class HomeController extends AbsController {
  21 +
  22 + public void index() {
  23 + SysUser user = getLoginUser();
  24 + setAttr("user", user);
  25 +
  26 + Integer uid = user.getId();
  27 + setAttr("loginTime", SysLoginLog.dao.loginTime(uid));
  28 + setAttr("lastTime", SysLoginLog.dao.lastTime(uid));
  29 +
  30 + render("home.html");
  31 + }
  32 +
  33 +}
  1 +package com.air.controller;
  2 +
  3 +import com.air.config.AbsController;
  4 +import com.air.model.SysLoginLog;
  5 +import com.jfinal.plugin.activerecord.Page;
  6 +
  7 +/**
  8 + * Depiction:
  9 + * <p>
  10 + * Modify:
  11 + * <p>
  12 + * Author: Kevin Lynn
  13 + * <p>
  14 + * Create Date:2016年6月3日 下午11:02:05
  15 + * <p>
  16 + *
  17 + * @version 1.0
  18 + * @since 1.0
  19 + */
  20 +public class LogAdminController extends AbsController {
  21 +
  22 + public void list() {
  23 + int page = this.getParaToInt("page", 1);
  24 + int pageNum = this.getParaToInt("pageNum", 10);
  25 +
  26 + Page<SysLoginLog> pageData = SysLoginLog.dao.search(page, pageNum);
  27 + setAttr("dataList", pageData.getList());
  28 + setAttr("pageNumber", pageData.getPageNumber());
  29 + setAttr("totalRow", pageData.getTotalRow());
  30 + setAttr("totalPage", pageData.getTotalPage());
  31 +
  32 + render("logAdminList.html");
  33 + }
  34 +
  35 + public void delete() {
  36 + String msg = "操作成功";
  37 + Integer logId = getParaToInt("logId");
  38 + SysLoginLog model = SysLoginLog.dao.findById(logId);
  39 + if (model != null) {
  40 + try {
  41 + model.delete();
  42 + } catch (Exception e) {
  43 + msg = "操作失败";
  44 + }
  45 + } else {
  46 + msg = "不存在该日志";
  47 + }
  48 +
  49 + setAttr("flag", msg);
  50 + list();
  51 + }
  52 +}
  1 +package com.air.controller;
  2 +
  3 +import com.air.config.AbsController;
  4 +import com.air.model.SysApiLog;
  5 +import com.jfinal.plugin.activerecord.Page;
  6 +
  7 +/**
  8 + * Depiction:
  9 + * <p>
  10 + * Modify:
  11 + * <p>
  12 + * Author: Kevin Lynn
  13 + * <p>
  14 + * Create Date:2016年6月3日 下午11:02:05
  15 + * <p>
  16 + *
  17 + * @version 1.0
  18 + * @since 1.0
  19 + */
  20 +public class LogApiController extends AbsController {
  21 +
  22 + public void list() {
  23 + String key = getPara("key");
  24 + int page = this.getParaToInt("page", 1);
  25 + int pageNum = this.getParaToInt("pageNum", 10);
  26 +
  27 + Page<SysApiLog> pageData = SysApiLog.dao.search(page, pageNum, key);
  28 + setAttr("dataList", pageData.getList());
  29 + setAttr("pageNumber", pageData.getPageNumber());
  30 + setAttr("totalRow", pageData.getTotalRow());
  31 + setAttr("totalPage", pageData.getTotalPage());
  32 + setAttr("searchKey", key);
  33 +
  34 + render("logApiList.html");
  35 + }
  36 +
  37 + public void delete() {
  38 + String msg = "操作成功";
  39 + Integer logId = getParaToInt("logId");
  40 + SysApiLog model = SysApiLog.dao.findById(logId);
  41 + if (model != null) {
  42 + try {
  43 + model.delete();
  44 + } catch (Exception e) {
  45 + msg = "操作失败";
  46 + }
  47 + } else {
  48 + msg = "不存在该日志";
  49 + }
  50 +
  51 + setAttr("flag", msg);
  52 + list();
  53 + }
  54 +
  55 + public void details() {
  56 +
  57 + }
  58 +}
  1 +package com.air.controller;
  2 +
  3 +import java.util.Date;
  4 +import java.util.HashMap;
  5 +import java.util.List;
  6 +import java.util.Map;
  7 +
  8 +import com.air.config.AbsController;
  9 +import com.air.led.LedKit;
  10 +import com.air.model.AirPort;
  11 +import com.air.model.AirPortCar;
  12 +import com.air.model.AirPortCarStatus;
  13 +import com.air.model.StationMap;
  14 +import com.air.model.SysRoleType;
  15 +import com.jfinal.kit.StrKit;
  16 +import com.jfinal.plugin.activerecord.Page;
  17 +
  18 +/**
  19 + * Depiction: 码头管理
  20 + * <p>
  21 + * Modify:
  22 + * <p>
  23 + * Author: Kevin Lynn
  24 + * <p>
  25 + * Create Date:2017年7月31日 下午3:17:35
  26 + *
  27 + */
  28 +public class PortController extends AbsController {
  29 +
  30 + public void arrivalList() {
  31 + String key = getPara("key");
  32 + int page = this.getParaToInt("page", 1);
  33 + int pageNum = this.getParaToInt("pageNum", 30);
  34 + int portNo = getParaToInt("portNo", 0);
  35 +
  36 + setAttr("searchKey", key);
  37 + setAttr("role", getRole().getLevel());
  38 +
  39 + List<AirPort> portList = AirPort.dao.getAirPortList(getStationArea(), true);
  40 + setAttr("portList", portList);
  41 +
  42 + List<StationMap> stationList = null;
  43 + int roleLevel = getRole().getLevel();
  44 + if (roleLevel == SysRoleType.SUPER.ordinal()) {
  45 + stationList = StationMap.dao.searchAll();
  46 + } else {
  47 + stationList = StationMap.dao.search("areaCode", getStationArea());
  48 + }
  49 + setAttr("stationList", stationList);
  50 +
  51 + String stationArea = getPara("stationArea",
  52 + (stationList != null && !stationList.isEmpty()) ? stationList.get(0).getAreaCode() : null);
  53 + setAttr("portNo", portNo);
  54 + setAttr("stationArea", stationArea);
  55 +
  56 + Page<AirPortCar> pageData = AirPortCar.dao.search(page, pageNum, key, portNo, stationArea, true);
  57 + if (pageData.getList() != null) {
  58 + for (AirPortCar car : pageData.getList()) {
  59 + StationMap station = StationMap.dao.searchFirst("areaCode", stationArea);
  60 + car.put("station", station);
  61 + }
  62 + }
  63 + setAttr("dataList", pageData.getList());
  64 + setAttr("curPage", pageData.getPageNumber());
  65 + setAttr("totalSize", pageData.getTotalRow());
  66 + setAttr("totalPage", pageData.getTotalPage());
  67 +
  68 + render("portArrivalList.html");
  69 + }
  70 +
  71 + public void leftList() {
  72 + String key = getPara("key");
  73 + int page = this.getParaToInt("page", 1);
  74 + int pageNum = this.getParaToInt("pageNum", 30);
  75 + int portNo = getParaToInt("portNo", 0);
  76 +
  77 + setAttr("searchKey", key);
  78 + setAttr("role", getRole().getLevel());
  79 +
  80 + List<AirPort> portList = AirPort.dao.getAirPortList(getStationArea(), false);
  81 + setAttr("portList", portList);
  82 +
  83 + List<StationMap> stationList = null;
  84 + int roleLevel = getRole().getLevel();
  85 + if (roleLevel == SysRoleType.SUPER.ordinal()) {
  86 + stationList = StationMap.dao.searchAll();
  87 + } else {
  88 + stationList = StationMap.dao.search("areaCode", getStationArea());
  89 + }
  90 + setAttr("stationList", stationList);
  91 +
  92 + String stationArea = getPara("stationArea",
  93 + (stationList != null && !stationList.isEmpty()) ? stationList.get(0).getAreaCode() : null);
  94 +
  95 + setAttr("portNo", portNo);
  96 + setAttr("stationArea", stationArea);
  97 +
  98 + Page<AirPortCar> pageData = AirPortCar.dao.search(page, pageNum, key, portNo, stationArea, false);
  99 + if (pageData.getList() != null) {
  100 + for (AirPortCar car : pageData.getList()) {
  101 + StationMap station = StationMap.dao.searchFirst("areaCode", stationArea);
  102 + car.put("station", station);
  103 + }
  104 + }
  105 + setAttr("dataList", pageData.getList());
  106 + setAttr("curPage", pageData.getPageNumber());
  107 + setAttr("totalSize", pageData.getTotalRow());
  108 + setAttr("totalPage", pageData.getTotalPage());
  109 +
  110 + render("portLeftList.html");
  111 + }
  112 +
  113 + // 车辆置顶
  114 + public void editCar() {
  115 + Boolean isPickup = getParaToBoolean("isPickup", null);
  116 + if (isPickup != null) {
  117 + List<AirPort> arrivalList = AirPort.dao.getAirPortList(getStationArea(), true);
  118 + setAttr("arrivalList", arrivalList);
  119 +
  120 + List<AirPort> leftList = AirPort.dao.getAirPortList(getStationArea(), false);
  121 + setAttr("leftList", leftList);
  122 + render("carEdit.html");
  123 + } else {
  124 + render("portArrivalList.html");
  125 + }
  126 + }
  127 +
  128 + public void submitCar() {
  129 + boolean isPickup = getParaToBoolean("car.isPickup");
  130 + boolean isStick = getPara("car.isStick", null) != null ? true : false;
  131 + String driverName = getPara("car.driverName");
  132 + String phone = getPara("car.phone");
  133 + String carNo = getPara("car.carNo");
  134 + int portNo = getParaToInt("car.portNo", 1);
  135 +
  136 + if (StrKit.notBlank(carNo)) {
  137 + carNo = carNo.toUpperCase();
  138 + }
  139 +
  140 + AirPortCar model = new AirPortCar();
  141 + Map<String, Object> maps = new HashMap<String, Object>();
  142 + maps.put("carNo", carNo);
  143 + maps.put("status", AirPortCarStatus.ENTER.ordinal());
  144 + AirPortCar tmp = AirPortCar.dao.searchFirst(maps);
  145 +
  146 + if (tmp == null) {
  147 + model.setIsPickup(isPickup);
  148 + model.setDriverName(driverName);
  149 + model.setPhone(phone);
  150 + model.setCarNo(carNo);
  151 + model.setPortNo(portNo);
  152 + if(isStick) {
  153 + model.setSort(0);
  154 + }
  155 + model.setSysUserId(getLoginUser().getId());
  156 + model.setStationArea(getStationArea());
  157 + model.setApplyTime(new Date());
  158 + model.setEnterTime(new Date());
  159 + model.setStatus(AirPortCarStatus.ENTER.ordinal());
  160 +
  161 + if (model.save()) {
  162 + setAttr("flag", "操作成功");
  163 + LedKit.sendBigLedScreen(LedKit.bigLedText(portNo, isPickup, carNo, getStationArea()), getStationArea());
  164 + LedKit.nextCar(getStationArea(), portNo, isPickup);
  165 + }
  166 + } else {
  167 + setAttr("flag", "不能重复录入");
  168 + }
  169 +
  170 + if (isPickup) {
  171 + arrivalList();
  172 + } else {
  173 + leftList();
  174 + }
  175 + }
  176 +}
  1 +package com.air.controller;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.List;
  5 +
  6 +import com.air.config.AbsController;
  7 +import com.air.model.Agent;
  8 +import com.air.model.StationMap;
  9 +import com.air.model.SysLoginLog;
  10 +import com.air.model.SysMenu;
  11 +import com.air.model.SysRole;
  12 +import com.air.model.SysRoleType;
  13 +import com.air.model.SysUser;
  14 +import com.google.gson.Gson;
  15 +import com.jfinal.aop.Clear;
  16 +import com.jfinal.kit.HashKit;
  17 +import com.jfinal.kit.HttpKit;
  18 +import com.jfinal.kit.Kv;
  19 +import com.jfinal.plugin.activerecord.Page;
  20 +import com.teplot.common.Encrypt;
  21 +import com.teplot.common.Response;
  22 +
  23 +/**
  24 + * Depiction:后台用户管理
  25 + * <p>
  26 + * Modify:
  27 + * <p>
  28 + * Author: Kevin Lynn
  29 + * <p>
  30 + * Create Date:2016年6月3日 下午11:02:05
  31 + * <p>
  32 + *
  33 + * @version 1.0
  34 + * @since 1.0
  35 + */
  36 +public class SysUserController extends AbsController {
  37 + private static final String VERIFY_CODE = "verifyCode";
  38 +
  39 + @Clear
  40 + public void logout() {
  41 + if (getLoginUser() != null) {
  42 + SysLoginLog.dao.log(getLoginUser().getId(), false);
  43 +
  44 + setSessionAttr("user", null);
  45 + }
  46 +
  47 + redirect("/");
  48 + }
  49 +
  50 + // 用户登录
  51 + @Clear
  52 + public void login() {
  53 + Response ret = new Response(CODE_SUCCESS);
  54 +
  55 + if (!validateCaptcha(VERIFY_CODE)) {
  56 + ret = new Response(VERIFY_CODE_ERROR);
  57 + renderJson(ret);
  58 + return;
  59 + }
  60 +
  61 + String username = this.getPara("username");
  62 + String password = this.getPara("password");
  63 +
  64 + SysUser sysUser = SysUser.dao.searchFirst("username", username);
  65 +
  66 + if (sysUser == null) {
  67 + ret = new Response(CODE_FAILURE);
  68 + ret.setMsg("用户不存在");
  69 + renderJson(ret);
  70 + } else if (!sysUser.getStr("password").equalsIgnoreCase(Encrypt.encrypt(username, password))) {
  71 + ret = new Response(CODE_FAILURE);
  72 + ret.setMsg("密码不正确");
  73 + renderJson(ret);
  74 + } else {
  75 + SysLoginLog.dao.log(sysUser.getId(), true);
  76 + int role = sysUser.getRoleLevel();
  77 + if (role != SysRoleType.SUPER.ordinal() && role != SysRoleType.AGENT.ordinal()) {
  78 + String stationArea = sysUser.getStationArea();
  79 + StationMap station = StationMap.dao.searchFirst("areaCode", stationArea);
  80 + sysUser.put("station", station);
  81 + }
  82 + setSessionAttr("user", sysUser);
  83 + ret = new Response(CODE_SUCCESS);
  84 + renderJson(ret);
  85 + }
  86 + }
  87 +
  88 + @Clear
  89 + public void doLogin() {
  90 + Response ret = new Response(CODE_FAILURE);
  91 + String url = "http://10.5.13.25/services/rest/token/verifySAMLResponse";
  92 + String SAMLResponse = getPara("SAMLResponse");
  93 + String providerId = getPara("providerId");
  94 + String param = "SAMLResponse=" + SAMLResponse + "&providerId=" + providerId;
  95 + String json = HttpKit.post(url, param);
  96 + Gson gson = new Gson();
  97 + Kv map = gson.fromJson(json, Kv.class);
  98 + if (map != null) {
  99 + String status = map.getStr("status");
  100 + if ("0x0000".equalsIgnoreCase(status)) {
  101 + // 成功获取账号密码
  102 + String username = map.getStr("appLoginID");
  103 + String password = HashKit.sha256(map.getStr("appLoginPass"));
  104 + SysUser sysUser = SysUser.dao.searchFirst("username", username);
  105 + if (sysUser == null) {
  106 + ret.setMsg("用户不存在");
  107 + renderJson(ret);
  108 + } else if (!sysUser.getStr("password").equalsIgnoreCase(Encrypt.encrypt(username, password))) {
  109 + ret = new Response(CODE_FAILURE);
  110 + ret.setMsg("密码不正确");
  111 + renderJson(ret);
  112 + } else {
  113 + //登录成功
  114 + int role = sysUser.getRoleLevel();
  115 + if (role != SysRoleType.SUPER.ordinal() && role != SysRoleType.AGENT.ordinal()) {
  116 + String stationArea = sysUser.getStationArea();
  117 + StationMap station = StationMap.dao.searchFirst("areaCode", stationArea);
  118 + sysUser.put("station", station);
  119 + }
  120 + setSessionAttr("user", sysUser);
  121 + setAttr("loginName", sysUser.getStr("realName"));
  122 + setAttr("menuList", SysMenu.dao.getMenus(getRole()));
  123 + render("index.html");
  124 + return;
  125 + }
  126 +
  127 + } else {
  128 + ret.setMsg("登录失败");
  129 + }
  130 + } else {
  131 + ret.setMsg("账号密码不能为空");
  132 + }
  133 +
  134 + renderJson(ret);
  135 + }
  136 +
  137 + public void list() {
  138 + String key = getPara("key");
  139 + int page = this.getParaToInt("page", 1);
  140 + int pageNum = this.getParaToInt("pageNum", 10);
  141 + Page<SysUser> pageData = SysUser.dao.search(page, pageNum, key, getRole().getLevel(), getStationArea());
  142 + setAttr("dataList", pageData.getList());
  143 + setAttr("curPage", pageData.getPageNumber());
  144 + setAttr("totalSize", pageData.getTotalRow());
  145 + setAttr("totalPage", pageData.getTotalPage());
  146 + setAttr("searchKey", key);
  147 + render("sysUserList.html");
  148 + }
  149 +
  150 + public void edit() {
  151 + Integer staffId = getParaToInt("staffId");
  152 + SysUser model = SysUser.dao.findById(staffId);
  153 + setAttr("sysUser", model);
  154 + setAttr("station", model != null ? model.get("station") : null);
  155 +
  156 + List<SysRole> roleList = SysRole.dao.list(getRole().getLevel());
  157 + setAttr("roleList", roleList);
  158 +
  159 + setAttr("agentList", Agent.dao.searchAll());
  160 + List<StationMap> stationList = null;
  161 + if (getRole().getLevel() == 1) {
  162 + // 超级管理员,显示所有货站
  163 + stationList = StationMap.dao.searchAll();
  164 + StationMap sm = new StationMap();
  165 + sm.setName("选择货站");
  166 + sm.setAreaCode("");
  167 + } else {
  168 + // 普通管理员或者员工,仅显示所属的货站
  169 + stationList = new ArrayList<StationMap>();
  170 + String areaCode = getLoginUser().getStationArea();
  171 + StationMap sm = StationMap.dao.searchFirst("areaCode", areaCode);
  172 + stationList.add(sm);
  173 + }
  174 + setAttr("stationList", stationList);
  175 +
  176 + render("sysUserEdit.html");
  177 + }
  178 +
  179 + public void submit() {
  180 + SysUser model = getModel(SysUser.class, "sysUser");
  181 + String msg = "操作成功";
  182 + SysUser staffTemp = SysUser.dao.searchFirst("username", model.getStr("username"));
  183 + Integer staffId = model.getInt("id");
  184 + Integer roleLevel = model.getInt("roleLevel");
  185 +
  186 + if (staffId != null && SysUser.dao.findById(staffId) != null) {
  187 + // 更新资料
  188 + if (staffTemp != null && staffId != staffTemp.getInt("id")) {
  189 + msg = "该账号已经存在,请更换";
  190 + } else {
  191 + // 账号没有重复
  192 + String password = HashKit.sha256(model.getStr("password"));
  193 + password = Encrypt.encrypt(model.getStr("username"), password);
  194 + model.set("password", password);
  195 +
  196 + if (roleLevel != null) {
  197 + model.set("job", getJob(roleLevel));
  198 + }
  199 +
  200 + if (!model.update()) {
  201 + msg = "操作失败";
  202 + }
  203 + }
  204 + } else {
  205 + // 新建员工
  206 + if (staffTemp == null) {
  207 + String password = HashKit.sha256(model.getStr("password"));
  208 + password = Encrypt.encrypt(model.getStr("username"), password);
  209 + model.set("password", password);
  210 +
  211 + if (roleLevel != null) {
  212 + model.set("job", getJob(roleLevel));
  213 + }
  214 +
  215 + if (!model.save()) {
  216 + msg = "操作失败";
  217 + }
  218 + } else {
  219 + msg = "该账号已经存在,请更换其它账号";
  220 + }
  221 + }
  222 +
  223 + if (!msg.equalsIgnoreCase("操作成功")) {
  224 + setAttr("staff", model);
  225 + }
  226 +
  227 + setAttr("flag", msg);
  228 + render("sysUserEdit.html");
  229 + }
  230 +
  231 + private String getJob(int roleLevel) {
  232 + SysRole role = SysRole.dao.searchFirst("level", roleLevel);
  233 + if (role != null) {
  234 + return role.getName();
  235 + }
  236 + return "Unknown";
  237 + }
  238 +
  239 + public void modifyPassword() {
  240 + render("modifyPassword.html");
  241 + }
  242 +
  243 + public void modifyPasswordAction() {
  244 + String msg = "操作成功";
  245 + String paramOldPassword = getPara("oldPassword");
  246 + String password1 = getPara("password1");
  247 + String password2 = getPara("password2");
  248 +
  249 + if (!password1.equalsIgnoreCase(password2)) {
  250 + // 密码不一致
  251 + msg = "新密码不一致!";
  252 + } else {
  253 + // 密码一致
  254 + if (password2.length() < 6) {
  255 + // 密码太短
  256 + msg = "密码太短,长度不能小于6位!";
  257 + } else {
  258 + SysUser loginUser = getLoginUser();
  259 + String username = loginUser.getStr("username");
  260 + String oldPassword = Encrypt.encrypt(username, HashKit.sha256(paramOldPassword));
  261 + if (!oldPassword.equals(loginUser.getStr("password"))) {
  262 + msg = "旧密码错误";
  263 + } else {
  264 + loginUser.set("password", Encrypt.encrypt(username, HashKit.sha256(password1)));
  265 + if (!loginUser.update()) {
  266 + msg = "操作失败";
  267 + }
  268 + }
  269 + }
  270 + }
  271 +
  272 + setAttr("flag", msg);
  273 +
  274 + if (!msg.equalsIgnoreCase("操作成功")) {
  275 + setAttr("oldPassword", paramOldPassword);
  276 + setAttr("password1", password1);
  277 + setAttr("password2", password2);
  278 +
  279 + modifyPassword();
  280 + } else {
  281 + setSessionAttr("user", null);
  282 + redirect("/login");
  283 + }
  284 + }
  285 +
  286 + public void delete() {
  287 + Integer staffId = getParaToInt("staffId", 0);
  288 + SysUser staff = SysUser.dao.findById(staffId);
  289 + if (staff != null) {
  290 + if (staff.delete()) {
  291 + setAttr("flag", "操作成功");
  292 + } else {
  293 + setAttr("flag", "操作失败");
  294 + }
  295 + } else {
  296 + setAttr("flag", "该账号不存在");
  297 + }
  298 +
  299 + list();
  300 + }
  301 +}
  1 +package com.air.controller;
  2 +
  3 +import java.io.File;
  4 +import java.io.FileFilter;
  5 +import java.text.SimpleDateFormat;
  6 +import java.util.ArrayList;
  7 +import java.util.Arrays;
  8 +import java.util.List;
  9 +
  10 +import com.air.config.AbsController;
  11 +import com.jfinal.kit.Kv;
  12 +import com.teplot.common.Response;
  13 +import com.teplot.common.Utils;
  14 +
  15 +/**
  16 + * Depiction:文件上传控制器
  17 + * <p>
  18 + * Modify:
  19 + * <p>
  20 + * Author: Kevin Lynn
  21 + * <p>
  22 + * Create Date:2016年6月3日 下午11:02:05
  23 + * <p>
  24 + *
  25 + * @version 1.0
  26 + * @since 1.0
  27 + */
  28 +public class UploadController extends AbsController {
  29 +
  30 + // 仅仅后台umeditor上传图片使用
  31 + public void uploadImg() {
  32 + getResponse().setContentType("text/html;charset=utf-8");
  33 + String destDir = Utils.getImgDir();
  34 + String fileName = Utils.productNo();
  35 + Response ret = upload("upfile", 2 * 1024 * 1024, "图片大小不能超过2MB,仅支持jpg和png格式", destDir, fileName);
  36 + renderHtml(ret.toJson());
  37 + }
  38 +
  39 + // 仅仅后台kindeditor上传图片使用
  40 + public void uploadImage() {
  41 + getResponse().setContentType("text/html;charset=utf-8");
  42 + String destDir = Utils.getImgDir();
  43 + String fileName = Utils.productNo();
  44 + Response ret = upload("imgFile", 2 * 1024 * 1024, "图片大小不能超过2MB,仅支持jpg和png格式", destDir, fileName);
  45 + renderHtml(ret.toJson());
  46 + }
  47 +
  48 + // 返回图片目录的所有图片
  49 + public void imageManager() {
  50 + String dirName = Utils.getImgDir();
  51 + String rootUrl = Utils.host() + "/upload/img/";
  52 + String[] fileTypes = new String[] { "gif", "jpg", "jpeg", "png", "bmp" };
  53 + File currentPathFile = new File(dirName);
  54 +
  55 + List<Kv> fileList = new ArrayList<Kv>();
  56 + File[] files = currentPathFile.listFiles(new ImageFilter());
  57 + if (files != null) {
  58 + for (File file : files) {
  59 + Kv hash = new Kv();
  60 + String fileName = file.getName();
  61 + String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
  62 + hash.set("is_dir", false);
  63 + hash.set("has_file", false);
  64 + hash.set("filesize", file.length());
  65 + hash.set("is_photo", Arrays.<String>asList(fileTypes).contains(fileExt));
  66 + hash.set("filetype", fileExt);
  67 +
  68 + hash.set("filename", fileName);
  69 + hash.set("datetime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.lastModified()));
  70 +
  71 + fileList.add(hash);
  72 + }
  73 + }
  74 +
  75 + Kv result = new Kv();
  76 + result.set("moveup_dir_path", dirName);
  77 + result.set("current_dir_path", dirName);
  78 + result.set("current_url", rootUrl);
  79 + result.set("total_count", fileList.size());
  80 + result.set("file_list", fileList);
  81 +
  82 + getResponse().setContentType("application/json; charset=UTF-8");
  83 + renderHtml(result.toJson());
  84 + }
  85 +
  86 + class ImageFilter implements FileFilter {
  87 + String[] fileTypes = new String[] { "gif", "jpg", "jpeg", "png", "bmp" };
  88 +
  89 + public boolean accept(File file) {
  90 + String fileExt = file.getName().substring(file.getName().lastIndexOf(".") + 1).toLowerCase();
  91 + return Arrays.<String>asList(fileTypes).contains(fileExt);
  92 + }
  93 +
  94 + }
  95 +}
  1 +package com.air.interceptor;
  2 +
  3 +import com.air.model.SysUser;
  4 +import com.jfinal.aop.Interceptor;
  5 +import com.jfinal.aop.Invocation;
  6 +
  7 +/**
  8 + * Depiction: 权限校验拦截器
  9 + * <p>
  10 + * Modify:
  11 + * <p>
  12 + * Author: Kevin Lynn
  13 + * <p>
  14 + * Create Date:2016年8月14日 下午7:38:02
  15 + * <p>
  16 + *
  17 + * @version 1.0
  18 + * @since 1.0
  19 + */
  20 +public class AuthInterceptor implements Interceptor {
  21 +
  22 + public void intercept(Invocation inv) {
  23 + // 不是登录或者登出请求,则需要判断用户是否已经登录,如果没有登录,则跳转到登录界面
  24 + SysUser user = inv.getController().getSessionAttr("user");
  25 + if (user == null) {
  26 + inv.getController().redirect("/login");
  27 + } else {
  28 + inv.invoke();
  29 + }
  30 + }
  31 +
  32 +}
  1 +package com.air.push;
  2 +
  3 +import java.util.Date;
  4 +import java.util.HashMap;
  5 +import java.util.Map;
  6 +import java.util.Random;
  7 +
  8 +import com.jfinal.log.Log;
  9 +
  10 +import cn.jiguang.common.ClientConfig;
  11 +import cn.jiguang.common.resp.APIConnectionException;
  12 +import cn.jiguang.common.resp.APIRequestException;
  13 +import cn.jpush.api.JPushClient;
  14 +import cn.jpush.api.push.PushResult;
  15 +import cn.jpush.api.push.model.Platform;
  16 +import cn.jpush.api.push.model.PushPayload;
  17 +import cn.jpush.api.push.model.audience.Audience;
  18 +import cn.jpush.api.push.model.notification.Notification;
  19 +
  20 +public class PushKit {
  21 + // 康爱思
  22 + private final static String APP_KEY = "aced41f410cced7e08982f2c";
  23 + private final static String MASTER_SECRET = "0eda135e4bbba17f7e7a11d3";
  24 +
  25 + public static void main(String[] args) {
  26 + Random random = new Random(System.currentTimeMillis());
  27 +
  28 + Map<String, String> extras = new HashMap<String, String>();
  29 + extras.put("title", "title by kevin " + random.nextInt());
  30 + extras.put("summary", "summary " + random.nextInt());
  31 + extras.put("content", "content " + random.nextInt());
  32 + extras.put("createTime", new Date().toString());
  33 + extras.put("updateTime", new Date().toString());
  34 + extras.put("pushId", String.valueOf(10001));
  35 + extras.put("pushType", String.valueOf(PushType.PUSH_MESSAGE));
  36 +
  37 + String alert = "alert by kevin " + random.nextInt();
  38 + String title = extras.get("title");
  39 + boolean flag = PushKit.push(PushKit.allAndroid(alert, title, extras));
  40 +
  41 + Log.getLog(new PushKit().getClass()).error("flag-->" + flag);
  42 + }
  43 +
  44 + private PushKit() {
  45 + }
  46 +
  47 + public static boolean push(PushPayload payload) {
  48 + JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY, null, ClientConfig.getInstance());
  49 +
  50 + PushResult result = null;
  51 + try {
  52 + result = jpushClient.sendPush(payload);
  53 + Log.getLog(new PushKit().getClass()).error("Got result - " + result);
  54 +
  55 + } catch (APIConnectionException e) {
  56 + // Connection error, should retry later
  57 + Log.getLog(new PushKit().getClass()).error("Connection error, should retry later", e);
  58 +
  59 + } catch (APIRequestException e) {
  60 + // Should review the error, and fix the request
  61 + Log.getLog(new PushKit().getClass()).error("Should review the error, and fix the request", e);
  62 + Log.getLog(new PushKit().getClass()).error("HTTP Status: " + e.getStatus());
  63 + Log.getLog(new PushKit().getClass()).error("Error Code: " + e.getErrorCode());
  64 + Log.getLog(new PushKit().getClass()).error("Error Message: " + e.getErrorMessage());
  65 + }
  66 +
  67 + if (result != null) {
  68 + if (result.isResultOK()) {
  69 + return true;
  70 + }
  71 + }
  72 +
  73 + return false;
  74 + }
  75 +
  76 + public static PushPayload allAndroid(String alert, String title, Map<String, String> extras) {
  77 + return PushPayload.newBuilder().setPlatform(Platform.android()).setAudience(Audience.all())
  78 + .setNotification(Notification.android(alert, title, extras)).build();
  79 + }
  80 +
  81 + public static PushPayload allIos(String alert, String title, Map<String, String> extras) {
  82 + return PushPayload.newBuilder().setPlatform(Platform.ios()).setAudience(Audience.all())
  83 + .setNotification(Notification.android(alert, title, extras)).build();
  84 + }
  85 +
  86 +}
  1 +package com.air.push;
  2 +
  3 +/**
  4 + * Depiction:
  5 + * <p>
  6 + * Modify:
  7 + * <p>
  8 + * Author: Kevin Lynn
  9 + * <p>
  10 + * Create Date:2017年6月27日 下午4:02:35
  11 + *
  12 + */
  13 +public class PushType {
  14 +
  15 + public final static int PUSH_ACTIVITY = 100;
  16 + public final static int PUSH_MESSAGE = 101;
  17 + public final static int PUSH_ORDER = 102;
  18 +
  19 + private PushType() {
  20 + }
  21 +
  22 +}
不能预览此文件类型
  1 +#define header()
  2 +<head>
  3 +<meta charset="utf-8" />
  4 +<meta http-equiv="pragma" content="no-cache">
  5 +<meta http-equiv="cache-control" content="no-cache, must-revalidate">
  6 +<meta http-equiv="expires" content="0">
  7 +
  8 +<title>郑州机场航空物流信息平台——码头管理调度系统</title>
  9 +<meta content="width=device-width, initial-scale=1.0" name="viewport" />
  10 +<meta content="teplot.com" name="author" />
  11 +<link rel="shortcut icon" href="#(contextPath)/img/logo.ico?ver=#(version)" />
  12 +
  13 +<link rel="stylesheet" href="#(contextPath)/res/bootstrap/3.3.7/css/bootstrap.min.css" />
  14 +<script src="#(contextPath)/res/jquery/jquery.min-1.9.1.js"></script>
  15 +<script src="#(contextPath)/res/jquery/jquery.validate.min.js"></script>
  16 +<script src="#(contextPath)/res/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  17 +
  18 +<link rel="stylesheet" href="#(contextPath)/res/font-awesome/css/font-awesome.css" />
  19 +
  20 +<link rel="stylesheet" href="#(contextPath)/css/common.css?ver=#(version)" />
  21 +<script type="text/javascript" src="#(contextPath)/js/common.js?ver=#(version)"></script>
  22 +
  23 +#@res?()
  24 +
  25 +</head>
  26 +#end
  1 +#define menu()
  2 +<div id="side-menu-bar">
  3 + <div id="jquery-accordion-menu" class="jquery-accordion-menu red">
  4 + <!-- <div class="jquery-accordion-menu-header" id="form">
  5 + <span>功能菜单</span>
  6 + </div> -->
  7 + <ul id="side-menu">
  8 + #for(menu : menuList)
  9 + <li class="#(for.index==0?'active':'')">
  10 + #if(menu.url!='#')
  11 + <a href="#(contextPath)#(menu.url)" target="contentPage">
  12 + <i class="fa #(menu.icon)"></i>#(menu.title)
  13 + </a>
  14 + #else
  15 + <a href="" target="contentPage">
  16 + <i class="fa #(menu.icon)"></i>#(menu.title)
  17 + </a>
  18 + #end
  19 +
  20 + <!-- submenu -->
  21 +
  22 + #if(menu.child)
  23 + <ul class="submenu">
  24 + #for(subMenu : menu.child)
  25 + <li>
  26 + <a href="#(contextPath)#(subMenu.url)" target="contentPage">#(subMenu.title)</a>
  27 + </li>
  28 + #end
  29 + </ul>
  30 + #end
  31 + </li>
  32 + #end
  33 + </ul>
  34 + </div>
  35 +</div>
  36 +#end
  1 +#define page(url,curPage,totalPage,totalSize,key,cid,extra)
  2 +<div>
  3 +<table class="table table-condensed table-advance" style="width: 800px; height: 20px;">
  4 + <tr>
  5 + <td>
  6 + <a style="text-decoration: none;">每页10条,共#(totalSize??0)条数据,当前第#(curPage??0)页,共#(totalPage??0)页。</a>
  7 + </td>
  8 + #if((curPage??0)>1)
  9 + <td>
  10 + <a href="#(url)?page=1&key=#(key)&cid=#(cid)&#(extra)" style="cursor: pointer;">首页</a>
  11 + </td>
  12 + <td>
  13 + <a href="#(url)?page=#(curPage-1)&key=#(key)&cid=#(cid)&#(extra)" style="cursor: pointer;">上一页</a>
  14 + </td>
  15 + #end
  16 +
  17 + #if((curPage??0) < (totalPage??0))
  18 + <td>
  19 + <a href="#(url)?page=#(curPage+1)&key=#(key)&cid=#(cid)&#(extra)" style="cursor: pointer;">下一页</a>
  20 + </td>
  21 + #end
  22 +
  23 + #if((curPage??0) !=(totalPage??0))
  24 + <td>
  25 + <a href="#(url)?page=#(totalPage)&key=#(key)&cid=#(cid)&#(extra)" style="cursor: pointer;">尾页</a>
  26 + </td>
  27 + #end
  28 +
  29 + #if((totalPage??0) > 1)
  30 + <td>
  31 + <a style="text-decoration: none; margin-left: 10px;">查看 </a>
  32 + <input style="width: 80px; height: 20px; margin-top: -15px;" id="inputPage" type="number">
  33 + <a style="text-decoration: none;"></a>
  34 + <a style="margin-left: 10px; cursor: pointer;" onclick="onGoToPage()">跳转</a>
  35 + </td>
  36 + #end
  37 + </tr>
  38 +</table>
  39 +</div>
  40 +#end
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>货代管理</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li>
  14 + <a href="#(contextPath)/agent/list">货代列表</a>
  15 + </li>
  16 + <li>
  17 + <a style="color: gray;">/</a>
  18 + </li>
  19 + <li class="active">新建货代</li>
  20 + </ol>
  21 +
  22 + <div style="margin: 10px;">
  23 + <table class="table table-bordered table-advance table-hover">
  24 + #if(agent)
  25 + <tr style="display: none;">
  26 + <td>货代ID</td>
  27 + <td><input class="form-control" type="text" name="agent.id" value="#(agent.id)" /></td>
  28 + </tr>
  29 + #end
  30 + <tr>
  31 + <td>公司</td>
  32 + <td><input class="form-control" name="agent.nameCN" type="text" value="#(agent.nameCN??)"
  33 + required /></td>
  34 + </tr>
  35 + <tr>
  36 + <td>负责人</td>
  37 + <td><input class="form-control" name="agent.manager" type="text"
  38 + value="#(agent.manager??)" required /></td>
  39 + </tr>
  40 + <tr>
  41 + <td>手机号</td>
  42 + <td><input class="form-control" name="agent.phone" type="text" value="#(agent.phone??)"
  43 + min-lenght="11" /></td>
  44 + </tr>
  45 + </table>
  46 +
  47 + <div class="form-actions" style="margin-top: 10px; margin-left: 40%;">
  48 + <a class="btn" type="button" href="javascript:history.go(-1)" style="margin-left: 30px;">&nbsp;&nbsp;&nbsp;&nbsp;</a>
  49 + </div>
  50 + </div>
  51 + </div>
  52 +
  53 + <script type="text/javascript">
  54 + #if(flag)
  55 + showTip('#(flag)');
  56 + #end
  57 + </script>
  58 +</body>
  59 +</html>
  60 +
  61 +
  62 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>货代管理</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li>
  14 + <a href="#(contextPath)/agent/list">货代列表</a>
  15 + </li>
  16 + <li>
  17 + <a style="color: gray;">/</a>
  18 + </li>
  19 + <li class="active">新建货代</li>
  20 + </ol>
  21 +
  22 + <div style="margin: 10px;">
  23 + <form action="#(contextPath)/agent/submit" method="post">
  24 + <table class="table table-bordered table-advance table-hover">
  25 + #if(agent)
  26 + <tr style="display: none;">
  27 + <td>货代ID</td>
  28 + <td><input class="form-control" type="text" name="agent.id" value="#(agent.id)" /></td>
  29 + </tr>
  30 + #end
  31 + <tr>
  32 + <td>公司</td>
  33 + <td><input class="form-control" name="agent.nameCN" type="text" value="#(agent.nameCN??)"
  34 + required /></td>
  35 + </tr>
  36 + <tr>
  37 + <td>负责人</td>
  38 + <td><input class="form-control" name="agent.manager" type="text"
  39 + value="#(agent.manager??)" required /></td>
  40 + </tr>
  41 + <tr>
  42 + <td>手机号</td>
  43 + <td><input class="form-control" name="agent.phone" type="text" value="#(agent.phone??)"
  44 + min-lenght="11" required /></td>
  45 + </tr>
  46 + </table>
  47 +
  48 + <div class="form-actions" style="margin-top: 10px; margin-left: 40%;">
  49 + <button class="btn btn-success" type="submit">&nbsp;&nbsp;&nbsp;&nbsp;</button>
  50 + <a class="btn" type="button" href="javascript:history.go(-1)" style="margin-left: 30px;">&nbsp;&nbsp;&nbsp;&nbsp;</a>
  51 + </div>
  52 + </form>
  53 + </div>
  54 + </div>
  55 +
  56 + <script type="text/javascript">
  57 + #if(flag)
  58 + showTip('#(flag)');
  59 + #end
  60 + </script>
  61 +</body>
  62 +</html>
  63 +
  64 +
  65 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>货代管理</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li class="active">货代列表</li>
  14 + </ol>
  15 +
  16 + <div style="margin-left: 10px;">
  17 + <table>
  18 + <tr>
  19 + <td><input id="searchInput" class="form-control" type="text" placeholder="公司名称/负责人/手机号" value="#(searchKey)" style="width: 300px;"/></td>
  20 + <td><button class="btn btn-success" onclick="onSearchAction()" style="margin-left: 5px;">搜索</button></td>
  21 + <td><button class="btn btn-primary" onclick="onAddAction()" style="margin-left: 30px;">新建货代</button></td>
  22 + </tr>
  23 + </table>
  24 + </div>
  25 +
  26 + <div style="margin: 10px;">
  27 + <table class="table table-bordered table-advance table-hover">
  28 + <thead>
  29 + <tr>
  30 + <th>公司</th>
  31 + <th>负责人</th>
  32 + <th>手机号</th>
  33 + <th>添加时间</th>
  34 + <th>更新时间</th>
  35 + <th>操作</th>
  36 + </tr>
  37 + </thead>
  38 + <tbody>
  39 + #for(agent : dataList)
  40 + <tr>
  41 + <td>#(agent.nameCN??)</td>
  42 + <td>#(agent.manager??)</td>
  43 + <td>#(agent.phone??)</td>
  44 + <td>#date(agent.createTime??,'yyyy-MM-dd HH:mm:ss')</td>
  45 + <td>#date(agent.updateTime??,'yyyy-MM-dd HH:mm:ss')</td>
  46 + <td>
  47 + <button class="btn btn-primary" onclick="onModifyAction(#(agent.id))">
  48 + <i class="icon-pencil"></i> 编辑
  49 + </button>
  50 + <button class="btn btn-danger" onclick="onDeleteAction(#(agent.id))">
  51 + <i class="icon-trash "></i> 删除
  52 + </button>
  53 + </td>
  54 + </tr>
  55 + #end
  56 + </tbody>
  57 + </table>
  58 +
  59 + #@page(contextPath+'/agent/list',curPage,totalPage,totalSize,searchKey,'','')
  60 + </div>
  61 + </div>
  62 +
  63 + <!-- Modal -->
  64 + <div id="delModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
  65 + aria-hidden="true">
  66 + <div class="modal-dialog">
  67 + <div class="modal-header">
  68 + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  69 + <h3 id="modal-title">温馨提示</h3>
  70 + </div>
  71 + <div class="modal-body">
  72 + <div class="control-group">
  73 + <label class="control-label" id="deleteId" style="display: none;">-1</label>
  74 + <label class="control-label" id="deleteTip">此操作将会删除所有和该货代相关的信息,是否继续删除?</label>
  75 + </div>
  76 + </div>
  77 + <div class="modal-footer form-actions">
  78 + <button class="btn btn-danger" onclick="onDeleteFromModal()">删除</button>
  79 + <button class="btn" data-dismiss="modal" aria-hidden="true">取消</button>
  80 + </div>
  81 + </div>
  82 + </div>
  83 + <!-- End Modal -->
  84 +
  85 + <script type="text/javascript" src="#(contextPath)/js/agent.js?ver=#(version)"></script>
  86 +
  87 + <script type="text/javascript">
  88 + #if(flag)
  89 + showTip('#(flag)');
  90 + #end
  91 + </script>
  92 +</body>
  93 +</html>
  94 +
  95 +
  96 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>报表中心</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li class="active">待进场车辆</li>
  14 + </ol>
  15 +
  16 + <div style="margin-left: 10px;">
  17 + <table>
  18 + <tr>
  19 + <td><input id="searchInput" class="form-control" type="text" placeholder="货代/车牌号/司机/手机号"
  20 + value="#(searchKey)" style="margin-left: 1px; width: 300px;" /></td>
  21 + <td><button class="btn btn-success" onclick="onSearchAction()" style="margin-left: 5px;">搜索</button></td>
  22 + </tr>
  23 + </table>
  24 + </div>
  25 +
  26 + <div style="margin: 10px;">
  27 + <table class="table table-bordered table-advance table-hover">
  28 + <thead>
  29 + <tr>
  30 + <th>车牌号</th>
  31 + <th>司机姓名</th>
  32 + <th>司机手机号</th>
  33 + <th>代理公司</th>
  34 + #if(role==1)
  35 + <th>货站</th>
  36 + #end
  37 + <th>业务类型</th>
  38 + <th>申请时间</th>
  39 + </tr>
  40 + </thead>
  41 + <tbody>
  42 + #for(data : dataList)
  43 + <tr>
  44 + <td>#(data.carNo??)</td>
  45 + <td>#(data.driverName??)</td>
  46 + <td>#(data.phone??)</td>
  47 + <td><a href="#(contextPath)/agent/details?name=#(data.agentName)">#(data.agentName??)</a> </td>
  48 + #if(role==1)
  49 + <td>#(data.station.name??)</td>
  50 + #end
  51 + <td>#(data.isPickup?'提货':'卸货')</td>
  52 + <td>#date(data.applyTime??,'yyyy-MM-dd HH:mm:ss')</td>
  53 + </tr>
  54 + #end
  55 + </tbody>
  56 + </table>
  57 +
  58 + #@page(contextPath+'/car/applyList',curPage,totalPage,totalSize,searchKey,0,'')
  59 + </div>
  60 + </div>
  61 +
  62 + <script type="text/javascript" src="#(contextPath)/js/applyList.js"></script>
  63 +
  64 + <script type="text/javascript">
  65 + #if(flag)
  66 + showTip('#(flag)');
  67 + #end
  68 + </script>
  69 +</body>
  70 +</html>
  71 +
  72 +
  73 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>进场预申请</a>
  9 + </li>
  10 + </ol>
  11 +
  12 + <div style="margin-left: 10px;">
  13 + <table>
  14 + <tr>
  15 + <td><input id="searchInput" class="form-control" type="text" placeholder="车牌号/司机/手机号"
  16 + value="#(searchKey)" style="margin-left: 1px; width: 300px;" /></td>
  17 + <td><button class="btn btn-success" onclick="onSearchAction()" style="margin-left: 5px;">搜索</button></td>
  18 + <td><button class="btn btn-primary" onclick="onAddAction()" style="margin-left: 30px;">新建预申请</button></td>
  19 + </tr>
  20 + </table>
  21 + </div>
  22 +
  23 + <div style="margin: 10px;">
  24 + <table class="table table-bordered table-advance table-hover">
  25 + <thead>
  26 + <tr>
  27 + <th>车牌号</th>
  28 + <th>泊位号</th>
  29 + <th>司机姓名</th>
  30 + <th>司机手机号</th>
  31 + <th>货站</th>
  32 + <th>业务类型</th>
  33 + <th>申请时间</th>
  34 + <th>进场时间</th>
  35 + <th>离场时间</th>
  36 + <th>状态</th>
  37 + </tr>
  38 + </thead>
  39 + <tbody>
  40 + #for(data : dataList)
  41 + <tr>
  42 + <td>#(data.carNo??)</td>
  43 + <td>#(data.portNo??"未分配")</td>
  44 + <td>#(data.driverName??)</td>
  45 + <td>#(data.phone??)</td>
  46 + <td>#(data.station.name??)</td>
  47 + <td>#(data.isPickup?'提货':'卸货')</td>
  48 + <td>#date(data.applyTime??,'yyyy-MM-dd HH:mm:ss')</td>
  49 + <td>#date(data.enterTime??,'yyyy-MM-dd HH:mm:ss')</td>
  50 + <td>#date(data.leaveTime??,'yyyy-MM-dd HH:mm:ss')</td>
  51 + <td>#if(data.enterTime&&data.leaveTime) <span
  52 + style="color: #1cb93b; font: bold; font-size: 1.1em;">已离场</span>
  53 + #elseif(data.enterTime&&!data.leaveTime) <span
  54 + style="color: red; font: bold; font-size: 1.1em;">作业中</span> #else <span
  55 + style="color: blue; font: bold; font-size: 1.1em;">待进场</span> #end
  56 + </td>
  57 + </tr>
  58 + #end
  59 + </tbody>
  60 + </table>
  61 +
  62 + #@page(contextPath+'/car/applyPre',curPage,totalPage,totalSize,searchKey,0,'')
  63 + </div>
  64 + </div>
  65 +
  66 + <script type="text/javascript" src="#(contextPath)/js/applyPre.js?ver=#(version)"></script>
  67 +
  68 + <script type="text/javascript">
  69 + #if(flag)
  70 + showTip('#(flag)');
  71 + #end
  72 + </script>
  73 +</body>
  74 +</html>
  75 +
  76 +
  77 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +
  5 +<body>
  6 + <div>
  7 + <ol class="breadcrumb">
  8 + <li>
  9 + <a>进场预申请</a>
  10 + </li>
  11 + <li>
  12 + <a style="color: gray;">/</a>
  13 + </li>
  14 + <li class="active">新建预申请</li>
  15 + </ol>
  16 +
  17 + <div style="margin: 10px;">
  18 + <form action="#(contextPath)/car/submitPre" method="post">
  19 + <table class="table table-bordered table-advance table-hover">
  20 + <tbody>
  21 + #if(car)
  22 + <tr style="display: none;">
  23 + <td>ID</td>
  24 + <td colspan="2"><input class="form-control" type="text" name="car.id" value="#(car.id)" /></td>
  25 + </tr>
  26 + #end
  27 +
  28 + <tr>
  29 + <td>司机名称</td>
  30 + <td colspan="2"><input class="form-control" name="car.driverName" type="text"
  31 + value="#(car.driverName??)" required /></td>
  32 + </tr>
  33 + <tr>
  34 + <td>司机手机号</td>
  35 + <td colspan="2"><input class="form-control" name="car.phone" type="text"
  36 + value="#(car.phone??)" required /></td>
  37 + </tr>
  38 + <tr>
  39 + <td>车牌号</td>
  40 + <td colspan="2"><input class="form-control" name="car.carNo" type="text"
  41 + value="#(car.carNo??)" required /></td>
  42 + </tr>
  43 + <tr>
  44 + <td>航班号</td>
  45 + <td colspan="2"><input class="form-control" name="car.flightNumber" type="text"
  46 + value="#(car.flightNumber??)" /></td>
  47 + </tr>
  48 + <tr>
  49 + <td>业务类型</td>
  50 + <td><select class="input-small m-wrap" tabindex="1" style="width: 200px;"
  51 + name="car.isPickup" required>
  52 + <option value="">选择业务</option>
  53 + <option value="1">提货</option>
  54 + <option value="0">卸货</option>
  55 + </select></td>
  56 + </tr>
  57 +
  58 + <tr>
  59 + <td>货站</td>
  60 + <td><select class="input-small m-wrap" tabindex="1" style="width: 200px;"
  61 + name="car.stationArea" required>
  62 + <!-- <option value="">选择货站</option> -->
  63 + #for(station : stationList)
  64 + <option value="#(station.areaCode)"
  65 + #if(car.stationArea??==station.areaCode)
  66 + selected
  67 + #end
  68 + >
  69 + #(station.name)
  70 + </option>
  71 + #end
  72 + </select></td>
  73 + </tr>
  74 +
  75 + </tbody>
  76 + </table>
  77 + <div class="form-actions" style="margin-top: 10px; margin-left: 40%;">
  78 + <button class="btn btn-success" type="submit">&nbsp;&nbsp;&nbsp;&nbsp;</button>
  79 + <a class="btn" type="button" href="javascript:history.go(-1)" style="margin-left: 30px;">&nbsp;&nbsp;&nbsp;&nbsp;</a>
  80 + </div>
  81 + </form>
  82 + </div>
  83 + </div>
  84 +
  85 + <script type="text/javascript">
  86 + #if(flag)
  87 + showTip('#(flag)');
  88 + #end
  89 + </script>
  90 +</body>
  91 +</html>
  92 +
  93 +
  94 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +
  5 +<body>
  6 + <div>
  7 + <ol class="breadcrumb">
  8 + <li>
  9 + <a>码头管理</a>
  10 + </li>
  11 + <li>
  12 + <a style="color: gray;">/</a>
  13 + </li>
  14 + <li class="active">码头分配</li>
  15 + </ol>
  16 +
  17 + <div style="margin: 10px;">
  18 + <form action="#(contextPath)/port/submitCar" method="post">
  19 + <table class="table table-bordered table-advance table-hover">
  20 + <tbody>
  21 + #if(car)
  22 + <tr style="display: none;">
  23 + <td>ID</td>
  24 + <td colspan="2"><input class="form-control" type="text" name="car.id" value="#(car.id)" /></td>
  25 + </tr>
  26 + #end
  27 +
  28 + <tr>
  29 + <td>司机名称</td>
  30 + <td colspan="2"><input class="form-control" name="car.driverName" type="text"
  31 + value="#(car.driverName??)" required /></td>
  32 + </tr>
  33 + <tr>
  34 + <td>司机手机号</td>
  35 + <td colspan="2"><input class="form-control" name="car.phone" type="text"
  36 + value="#(car.phone??)" required /></td>
  37 + </tr>
  38 + <tr>
  39 + <td>车牌号</td>
  40 + <td colspan="2"><input class="form-control" name="car.carNo" type="text"
  41 + value="#(car.carNo??)" required /></td>
  42 + </tr>
  43 + <tr>
  44 + <td>业务类型</td>
  45 + <td><select id="typeList" class="input-small m-wrap" tabindex="1" style="width: 160px;"
  46 + name="car.isPickup" onchange="onChangeType()" required>
  47 + <option value="1">提货</option>
  48 + <option value="0">卸货</option>
  49 + </select></td>
  50 + </tr>
  51 +
  52 + <tr id="arrivalPortTr" style="width: 100%;">
  53 + <td>码头</td>
  54 + <td><select id="arrivalList" class="input-small m-wrap" tabindex="1" style="width: 160px;"
  55 + name="car.portNo" required>
  56 + <option value="">选择进港码头</option>
  57 + #for(port : arrivalList)
  58 + <option value="#(port.portNo)"
  59 + #if(car.portNo??==port.portNo)
  60 + selected
  61 + #end
  62 + >
  63 + #(port.portNo)
  64 + </option>
  65 + #end
  66 + </select>
  67 + </td>
  68 + </tr>
  69 +
  70 + <tr id="leftPortTr" style="display:none;width: 100%;">
  71 + <td>码头</td>
  72 + <td><select id="leftList" class="input-small m-wrap" tabindex="1" style="width: 160px;"
  73 + name="car.portNo" required>
  74 + <option value="">选择离港码头</option>
  75 + #for(port : leftList)
  76 + <option value="#(port.portNo)"
  77 + #if(car.portNo??==port.portNo)
  78 + selected
  79 + #end
  80 + >
  81 + #(port.portNo)
  82 + </option>
  83 + #end
  84 + </select>
  85 + </td>
  86 + </tr>
  87 +
  88 + <tr>
  89 + <td>特殊</td>
  90 + <td colspan="2">
  91 + <label style="padding-right: 20px;color: red;">
  92 + <input name="car.isStick" style="margin-right: 5px;" type="checkbox">
  93 + 优先排队
  94 + </label>
  95 + </td>
  96 + </tr>
  97 +
  98 + </tbody>
  99 + </table>
  100 + <div class="form-actions" style="margin-top: 10px; margin-left: 40%;">
  101 + <button class="btn btn-success" type="submit">&nbsp;&nbsp;&nbsp;&nbsp;</button>
  102 + <a class="btn" type="button" href="javascript:history.go(-1)" style="margin-left: 30px;">&nbsp;&nbsp;&nbsp;&nbsp;</a>
  103 + </div>
  104 + </form>
  105 + </div>
  106 + </div>
  107 +
  108 +<script type="text/javascript" src="#(contextPath)/js/portCarEdit.js?ver=#(version)"></script>
  109 +
  110 + <script type="text/javascript">
  111 + #if(flag)
  112 + showTip('#(flag)');
  113 + #end
  114 + </script>
  115 +</body>
  116 +</html>
  117 +
  118 +
  119 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>数据核对</a>
  9 + </li>
  10 + </ol>
  11 +
  12 + <div style="margin-left: 10px;">
  13 + <table>
  14 + <tr>
  15 + <td><input id="searchInput" class="form-control" type="text" placeholder="货代/车牌号/司机/手机号"
  16 + value="#(searchKey)" style="margin-left: 1px; width: 300px;" /></td>
  17 + <td><button class="btn btn-success" onclick="onSearchAction()" style="margin-left: 5px;">搜索</button></td>
  18 + </tr>
  19 + </table>
  20 + </div>
  21 +
  22 + <div style="margin: 10px;">
  23 + <table class="table table-bordered table-advance table-hover">
  24 + <thead>
  25 + <tr>
  26 + <th>车牌号</th>
  27 + <th>泊位号</th>
  28 + <th>司机姓名</th>
  29 + <th>司机手机号</th>
  30 + <th>代理公司</th>
  31 + #if(role==1)
  32 + <th>货站</th>
  33 + #end
  34 + <th>业务类型</th>
  35 + <th>进场时间</th>
  36 + <th>离场时间</th>
  37 + <th>核碰情况</th>
  38 + </tr>
  39 + </thead>
  40 + <tbody>
  41 + #for(data : dataList)
  42 + <tr>
  43 + <td>#(data.carNo??)</td>
  44 + <td>#(data.portNo??"未分配")</td>
  45 + <td>#(data.driverName??)</td>
  46 + <td>#(data.phone??)</td>
  47 + <td><a href="#(contextPath)/agent/details?name=#(data.agentName)">#(data.agentName??)</a> </td>
  48 + #if(role==1)
  49 + <td>#(data.station.name??)</td>
  50 + #end
  51 + <td>#(data.isPickup?'提货':'卸货')</td>
  52 + <td>#date(data.enterTime??,'yyyy-MM-dd HH:mm:ss')</td>
  53 + <td>#date(data.leaveTime??,'yyyy-MM-dd HH:mm:ss')</td>
  54 + <!-- <td>#(data.checkResult??'正常')</td> -->
  55 + <td>
  56 + #if(data.checkResult=='正常')
  57 + <span style="color: #1cb93b; font: bold;font-size: 1.1em;">#(data.checkResult)</span>
  58 + #elseif(data.checkResult=='待进场')
  59 + <span style="color: blue;font: bold;font-size: 1.1em;">#(data.checkResult)</span>
  60 + #else
  61 + <span style="color: red;font: bold;font-size: 1.1em;">#(data.checkResult)</span>
  62 + #end
  63 + </td>
  64 + </tr>
  65 + #end
  66 + </tbody>
  67 + </table>
  68 +
  69 + #@page(contextPath+'/car/checkList',curPage,totalPage,totalSize,searchKey,0,'')
  70 + </div>
  71 + </div>
  72 +
  73 + <script type="text/javascript" src="#(contextPath)/js/checkList.js"></script>
  74 +
  75 + <script type="text/javascript">
  76 + #if(flag)
  77 + showTip('#(flag)');
  78 + #end
  79 + </script>
  80 +</body>
  81 +</html>
  82 +
  83 +
  84 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>报表中心</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li class="active">已进场车辆</li>
  14 + </ol>
  15 +
  16 + <div style="margin-left: 10px;">
  17 + <table>
  18 + <tr>
  19 + <td><input id="searchInput" class="form-control" type="text" placeholder="货代/车牌号/司机/手机号"
  20 + value="#(searchKey)" style="margin-left: 1px; width: 300px;" /></td>
  21 + <td><button class="btn btn-success" onclick="onSearchAction()" style="margin-left: 5px;">搜索</button></td>
  22 + </tr>
  23 + </table>
  24 + </div>
  25 +
  26 + <div style="margin: 10px;">
  27 + <table class="table table-bordered table-advance table-hover">
  28 + <thead>
  29 + <tr>
  30 + <th>车牌号</th>
  31 + <th>泊位号</th>
  32 + <th>司机姓名</th>
  33 + <th>司机手机号</th>
  34 + <th>代理公司</th>
  35 + #if(role==1)
  36 + <th>货站</th>
  37 + #end
  38 + <th>业务类型</th>
  39 + <th>进场时间</th>
  40 + </tr>
  41 + </thead>
  42 + <tbody>
  43 + #for(data : dataList)
  44 + <tr>
  45 + <td>#(data.carNo??)</td>
  46 + <td>#(data.portNo??"未分配")</td>
  47 + <td>#(data.driverName??)</td>
  48 + <td>#(data.phone??)</td>
  49 + <td><a href="#(contextPath)/agent/details?name=#(data.agentName)">#(data.agentName??)</a> </td>
  50 + #if(role==1)
  51 + <td>#(data.station.name??)</td>
  52 + #end
  53 + <td>#(data.isPickup?'提货':'卸货')</td>
  54 + <td>#date(data.enterTime??,'yyyy-MM-dd HH:mm:ss')</td>
  55 + </tr>
  56 + #end
  57 + </tbody>
  58 + </table>
  59 +
  60 + #@page(contextPath+'/car/enterList',curPage,totalPage,totalSize,searchKey,0,'')
  61 + </div>
  62 + </div>
  63 +
  64 + <script type="text/javascript" src="#(contextPath)/js/enterList.js"></script>
  65 +
  66 + <script type="text/javascript">
  67 + #if(flag)
  68 + showTip('#(flag)');
  69 + #end
  70 + </script>
  71 +</body>
  72 +</html>
  73 +
  74 +
  75 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>报表中心</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li class="active">车辆总表</li>
  14 + </ol>
  15 +
  16 + <div style="margin-left: 10px;">
  17 + <table>
  18 + <tr>
  19 + <td><input id="searchInput" class="form-control" type="text" placeholder="货代/车牌号/司机/手机号"
  20 + value="#(searchKey)" style="margin-left: 1px; width: 300px;" /></td>
  21 + <td><button class="btn btn-success" onclick="onSearchAction()" style="margin-left: 5px;">搜索</button></td>
  22 + </tr>
  23 + </table>
  24 + </div>
  25 +
  26 + <div style="margin: 10px;">
  27 + <table class="table table-bordered table-advance table-hover">
  28 + <thead>
  29 + <tr>
  30 + <th>车牌号</th>
  31 + <th>泊位号</th>
  32 + <th>司机姓名</th>
  33 + <th>司机手机号</th>
  34 + <th>代理公司</th>
  35 + #if(role==1)
  36 + <th>货站</th>
  37 + #end
  38 + <th>业务类型</th>
  39 + <th>进场时间</th>
  40 + <th>离场时间</th>
  41 + </tr>
  42 + </thead>
  43 + <tbody>
  44 + #for(data : dataList)
  45 + <tr>
  46 + <td>#(data.carNo??)</td>
  47 + <td>#(data.portNo??"未分配")</td>
  48 + <td>#(data.driverName??)</td>
  49 + <td>#(data.phone??)</td>
  50 + <td><a href="#(contextPath)/agent/details?name=#(data.agentName)">#(data.agentName??)</a> </td>
  51 + #if(role==1)
  52 + <td>#(data.station.name??)</td>
  53 + #end
  54 + <td>#(data.isPickup?'提货':'卸货')</td>
  55 + <td>#date(data.enterTime??,'yyyy-MM-dd HH:mm:ss')</td>
  56 + <td>#date(data.leaveTime??,'yyyy-MM-dd HH:mm:ss')</td>
  57 + </tr>
  58 + #end
  59 + </tbody>
  60 + </table>
  61 +
  62 + #@page(contextPath+'/car/historyList',curPage,totalPage,totalSize,searchKey,0,'')
  63 + </div>
  64 + </div>
  65 +
  66 + <script type="text/javascript" src="#(contextPath)/js/historyList.js"></script>
  67 +
  68 + <script type="text/javascript">
  69 + #if(flag)
  70 + showTip('#(flag)');
  71 + #end
  72 + </script>
  73 +</body>
  74 +</html>
  75 +
  76 +
  77 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header() #define res()
  4 +<style type="text/css">
  5 +.welcome-title {
  6 + text-align: center;
  7 + font-size: 2.8em;
  8 + color: #000000;
  9 + margin-top: 60px;
  10 +}
  11 +
  12 +</style>
  13 +#end
  14 +</head>
  15 +
  16 +<body>
  17 + <div id="main-content">
  18 + <div class="welcome-title">欢迎登录码头管理调度系统!</div>
  19 +
  20 + <div class="widget-body" style="width: 60%; margin-left: 20%; margin-top: 40px;">
  21 + <table class="table table-striped table-bordered table-advance table-hover">
  22 + <tbody>
  23 + #if(user.station)
  24 + <tr>
  25 + <td style="width: 100px;">货站:</td>
  26 + <td>#(user.station.name)</td>
  27 + </tr>
  28 + #end
  29 + <tr>
  30 + <td style="width: 100px;">姓名:</td>
  31 + <td>#(user.realName)</td>
  32 + </tr>
  33 + <tr>
  34 + <td>角色:</td>
  35 + <td>#(user.job)</td>
  36 + </tr>
  37 + <tr>
  38 + <td>登录时间:</td>
  39 + <td>#date(loginTime??,'yyyy-MM-dd HH:mm:ss')</td>
  40 + </tr>
  41 +
  42 + <tr>
  43 + <td>上次登录:</td>
  44 + <td>#date(lastTime??,'yyyy-MM-dd HH:mm:ss')</td>
  45 + </tr>
  46 + </tbody>
  47 + </table>
  48 + </div>
  49 + </div>
  50 +
  51 +</body>
  52 +</html>
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#include("_menu.html") #@header() #define res()
  4 +<link href="#(contextPath)/res/jquery-3d-menu/css/jquery-accordion-menu.css?ver=#(version)"
  5 + rel="stylesheet" type="text/css" />
  6 +<link href="#(contextPath)/res/jquery-3d-menu/css/font-awesome.css" rel="stylesheet" type="text/css" />
  7 +<script src="#(contextPath)/res/jquery-3d-menu/js/jquery-accordion-menu.js?ver=#(version)"
  8 + type="text/javascript"></script>
  9 +
  10 +<link rel="stylesheet" href="#(contextPath)/css/index.css?ver=#(version)">
  11 +
  12 +<style>
  13 +#header {
  14 + background: url('#(contextPath)/img/title-bg.png?ver=#(version)');
  15 +}
  16 +</style>
  17 +#end
  18 +
  19 +<body>
  20 + <div id="header">
  21 + <table class="header-table">
  22 + <tr>
  23 + <td class="logo-layout" style="text-align: center;"><img style="vertical-align: middle;"
  24 + class="logo" src="#(contextPath)/img/logo-title.png?ver=#(version)"
  25 + onclick="onMenuIconAction()"></td>
  26 + <td class="profile-layout"><img style="vertical-align: middle;" class="portrait"
  27 + src="#(contextPath)/img/login_portrait.jpg?ver=#(version)"> <label class="loginName">#(loginName)</label>
  28 + <a class="btn btn-warning quit-btn" type="button" href="#(contextPath)/sysUser/logout">退出登录</a></td>
  29 + </tr>
  30 + </table>
  31 + </div>
  32 +
  33 + #@menu()
  34 +
  35 + <div id="section">
  36 + <iframe id="contentFrame" name="contentPage" scrolling="auto" frameborder="0"
  37 + onload="loadFrame(this)" src="#(contextPath)/home"></iframe>
  38 + </div>
  39 +
  40 + <div id="tipDialog" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
  41 + <div class="modal-dialog">
  42 + <div class="modal-content">
  43 + <div class="modal-header">
  44 + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  45 + <h4 class="modal-title" id="myModalLabel">温馨提示</h4>
  46 + </div>
  47 + <div class="modal-body">
  48 + <h5 id="tipView"></h5>
  49 + </div>
  50 + <div class="modal-footer">
  51 + <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
  52 + </div>
  53 + </div>
  54 + </div>
  55 + </div>
  56 +
  57 + <div id="bigImageDialog" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
  58 + <div class="modal-dialog">
  59 + <div class="modal-content">
  60 + <div class="modal-header">
  61 + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  62 + </div>
  63 + <div class="modal-body" style="text-align: center;">
  64 + <img alt="pic" src="" id="bigImage"
  65 + style="max-width: 100%; max-height: 100%; min-width: 200px; min-height: 200px;">
  66 + </div>
  67 + </div>
  68 + </div>
  69 + </div>
  70 +
  71 + <script type="text/javascript" src="#(contextPath)/js/index.js?ver=#(version)"></script>
  72 + <script type="text/javascript">
  73 + jQuery("#jquery-accordion-menu").jqueryAccordionMenu();
  74 + </script>
  75 +
  76 +</body>
  77 +
  78 +</html>
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>日志管理</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li class="active">后台日志列表</li>
  14 + </ol>
  15 +
  16 + <div style="margin: 10px;">
  17 + <table class="table table-bordered table-advance table-hover">
  18 + <thead>
  19 + <tr>
  20 + <th><input id="checkboxAll" value="" type="checkbox" /></th>
  21 + <th>用户账号</th>
  22 + <th>用户角色</th>
  23 + <th>真实姓名</th>
  24 + <th>动作</th>
  25 + <th>时间</th>
  26 + <th>操作</th>
  27 + </tr>
  28 + </thead>
  29 + <tbody>
  30 + #for(adminLog : dataList)
  31 + <tr>
  32 + <td><input id="checkbox_#(adminLog.id)" value="#(adminLog.id)" type="checkbox" /></td>
  33 + <td style="font-size: 12px;">#(adminLog.username??)</td>
  34 + <td style="font-size: 12px;">#(adminLog.job??)</td>
  35 + <td style="font-size: 12px;">#(adminLog.realName??)</td>
  36 + <td style="font-size: 12px;">#if(adminLog.isLogin) 登录 #else 退出 #end</td>
  37 + <td style="font-size: 12px;">#date(adminLog.createTime??,'yyyy-MM-dd HH:mm:ss')</td>
  38 + <td>
  39 + <button class="btn btn-primary" onclick="onOpenAction(#(adminLog.id))"
  40 + style="font-size: 12px; display: none;">
  41 + <i class="icon-eye-open"></i> 详情
  42 + </button>
  43 + <button class="btn btn-danger" onclick="onDeleteAction(#(adminLog.id))"
  44 + style="font-size: 12px;">
  45 + <i class="icon-trash "></i> 删除
  46 + </button>
  47 + </td>
  48 + </tr>
  49 + #end
  50 + </tbody>
  51 + </table>
  52 +
  53 + #@page(contextPath+'/sysLog/list',pageNumber,totalPage,totalRow,searchKey,'','')
  54 + </div>
  55 + </div>
  56 +
  57 + <!-- Modal -->
  58 + <div id="delModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
  59 + aria-hidden="true">
  60 + <div class="modal-dialog">
  61 + <div class="modal-header">
  62 + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  63 + <h3 id="modal-title">温馨提示</h3>
  64 + </div>
  65 + <div class="modal-body">
  66 + <div class="control-group">
  67 + <label class="control-label" id="deleteId" style="display: none;">-1</label>
  68 + <label class="control-label" id="deleteTip">此操作将会删除所有和该日志相关的信息,是否继续删除?</label>
  69 + </div>
  70 + </div>
  71 + <div class="modal-footer form-actions">
  72 + <button class="btn btn-danger" onclick="onDeleteFromModal()">删除</button>
  73 + <button class="btn" data-dismiss="modal" aria-hidden="true">取消</button>
  74 + </div>
  75 + </div>
  76 + </div>
  77 + <!-- End Modal -->
  78 +
  79 + <script type="text/javascript" src="#(contextPath)/js/logAdminList.js?ver=#(version)"></script>
  80 +
  81 + <script type="text/javascript">
  82 + #if(flag)
  83 + showTip('#(flag)');
  84 + #end
  85 + </script>
  86 +</body>
  87 +</html>
  88 +
  89 +
  90 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>日志管理</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li class="active">接口日志列表</li>
  14 + </ol>
  15 +
  16 + <div style="margin-left: 10px;">
  17 + <table>
  18 + <tr>
  19 + <td><input id="searchInput" class="form-control" type="text" placeholder="输入关键字"
  20 + value="#(searchKey)" style="margin-left: 1px; width: 300px;" /></td>
  21 + <td><button class="btn btn-success" onclick="onSearchAction()" style="margin-left: 5px;">搜索</button></td>
  22 + </tr>
  23 + </table>
  24 + </div>
  25 +
  26 + <div style="margin: 10px;">
  27 + <table class="table table-bordered table-advance table-hover">
  28 + <thead>
  29 + <tr>
  30 + <th><input id="checkboxAll" value="" type="checkbox" /></th>
  31 + <th>用户ID</th>
  32 + <th style="min-width: 60px;">昵称</th>
  33 + <th>接口</th>
  34 + <th>参数</th>
  35 + <th>时间</th>
  36 + <th>操作</th>
  37 + </tr>
  38 + </thead>
  39 + <tbody>
  40 + #for(log : dataList)
  41 + <tr>
  42 + <td><input id="checkbox_#(log.id)" value="#(log.id)" type="checkbox" /></td>
  43 + <td style="font-size: 12px;">#(log.uid??)</td>
  44 + <td style="font-size: 12px;">#(log.nickname??)</td>
  45 + <td style="font-size: 12px;">#(log.actionKey??)</td>
  46 + <td style="font-size: 12px;">#(log.params??)</td>
  47 + <td style="font-size: 12px;">#date(log.createTime??,'yyyy-MM-dd HH:mm:ss')</td>
  48 + <td>
  49 + <button class="btn btn-primary" onclick="onDetailsAction(#(log.id))"
  50 + style="font-size: 12px; display: none;">
  51 + <i class="icon-eye-open"></i> 详情
  52 + </button>
  53 + <button class="btn btn-danger" onclick="onDeleteAction(#(log.id))" style="font-size: 12px;">
  54 + <i class="icon-trash "></i> 删除
  55 + </button>
  56 + </td>
  57 + </tr>
  58 + #end
  59 + </tbody>
  60 + </table>
  61 +
  62 + #@page(contextPath+'/apiLog/list',pageNumber,totalPage,totalRow,searchKey,'','')
  63 + </div>
  64 + </div>
  65 +
  66 + <!-- Modal -->
  67 + <div id="delModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
  68 + aria-hidden="true">
  69 + <div class="modal-dialog">
  70 + <div class="modal-header">
  71 + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  72 + <h3 id="modal-title">温馨提示</h3>
  73 + </div>
  74 + <div class="modal-body">
  75 + <div class="control-group">
  76 + <label class="control-label" id="deleteId" style="display: none;">-1</label>
  77 + <label class="control-label" id="deleteTip">此操作将会删除所有和该日志相关的信息,是否继续删除?</label>
  78 + </div>
  79 + </div>
  80 + <div class="modal-footer form-actions">
  81 + <button class="btn btn-danger" onclick="onDeleteFromModal()">删除</button>
  82 + <button class="btn" data-dismiss="modal" aria-hidden="true">取消</button>
  83 + </div>
  84 + </div>
  85 + </div>
  86 + <!-- End Modal -->
  87 +
  88 + <script type="text/javascript" src="#(contextPath)/js/logApiList.js?ver=#(version)"></script>
  89 +
  90 + <script type="text/javascript">
  91 + #if(flag)
  92 + showTip('#(flag)');
  93 + #end
  94 + </script>
  95 +</body>
  96 +</html>
  97 +
  98 +
  99 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +#define res()
  5 +<style>
  6 +body {
  7 + background: url('#(contextPath)/img/login_bg.jpg?ver=#(version)') no-repeat fixed
  8 + center center;
  9 + background-size: cover;
  10 + font-family: Montserrat;
  11 +}
  12 +
  13 +.logo {
  14 + width: 1036px;
  15 + height: 84px;
  16 + background: url('#(contextPath)/img/login-logo.png?ver=#(version)') no-repeat;
  17 + margin: 20px auto;
  18 + margin-top: 130px;
  19 + margin-bottom: 35px;
  20 +}
  21 +
  22 +.login-block {
  23 + width: 360px;
  24 + padding: 20px;
  25 + background: #fff;
  26 + border-radius: 5px;
  27 + border-top: 5px solid #a463ce;
  28 + margin: 0 auto;
  29 +}
  30 +
  31 +.login-block h1 {
  32 + text-align: center;
  33 + color: #000;
  34 + font-size: 18px;
  35 + text-transform: uppercase;
  36 + margin-top: 0;
  37 + margin-bottom: 20px;
  38 +}
  39 +
  40 +.login-block input {
  41 + width: 100%;
  42 + height: 42px;
  43 + box-sizing: border-box;
  44 + border-radius: 5px;
  45 + border: 1px solid #ccc;
  46 + margin-bottom: 10px;
  47 + font-size: 14px;
  48 + font-family: Montserrat;
  49 + padding: 0 20px 0 50px;
  50 + outline: none;
  51 +}
  52 +
  53 +.login-block input#username {
  54 + background: #fff url('#(contextPath)/img/username.png') 20px top
  55 + no-repeat;
  56 + background-size: 16px 80px;
  57 +}
  58 +
  59 +.login-block input#username:focus {
  60 + background: #fff url('#(contextPath)/img/username.png') 20px bottom
  61 + no-repeat;
  62 + background-size: 16px 80px;
  63 +}
  64 +
  65 +.login-block input#password {
  66 + background: #fff url('#(contextPath)/img/password.png') 20px top
  67 + no-repeat;
  68 + background-size: 16px 80px;
  69 +}
  70 +
  71 +.login-block input#password:focus {
  72 + background: #fff url('#(contextPath)/img/password.png') 20px bottom
  73 + no-repeat;
  74 + background-size: 16px 80px;
  75 +}
  76 +
  77 +.login-block input:active, .login-block input:focus {
  78 + border: 1px solid #621d8e;
  79 +}
  80 +
  81 +.login-block button {
  82 + width: 100%;
  83 + height: 40px;
  84 + background: #621d8e;
  85 + box-sizing: border-box;
  86 + border-radius: 5px;
  87 + border: 1px solid #a463ce;
  88 + color: #fff;
  89 + font-weight: bold;
  90 + text-transform: uppercase;
  91 + font-size: 14px;
  92 + font-family: Montserrat;
  93 + outline: none;
  94 + cursor: pointer;
  95 +}
  96 +
  97 +.login-block button:hover {
  98 + background: #a463ce;
  99 +}
  100 +</style>
  101 +
  102 +#end
  103 +
  104 +<body>
  105 +
  106 + <div class="logo"></div>
  107 + <div class="login-block">
  108 + <h1>码头管理调度系统</h1>
  109 + <input type="text" value="" placeholder="用户名" id="username" />
  110 + <input type="password" value="" placeholder="密码" id="password" />
  111 + <table>
  112 + <tbody>
  113 + <tr>
  114 + <td>
  115 + <input type="text" value="" placeholder="请输入验证码" id="verifyCode" />
  116 + </td>
  117 +
  118 + <td>
  119 + <img id="codeImage" alt="验证码" src="#(contextPath)/verifyCode" onclick="this.src='#(contextPath)/verifyCode?x='+Math.random()" style="margin-top: -10px;height: 42px;">
  120 + </td>
  121 + </tr>
  122 + </tbody>
  123 + </table>
  124 + <button type="button" onclick="onLoginAction()">&nbsp;&nbsp;&nbsp;&nbsp;</button>
  125 + </div>
  126 +
  127 + <div id="tipDialog" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
  128 + <div class="modal-dialog">
  129 + <div class="modal-content">
  130 + <div class="modal-header">
  131 + <h4 class="modal-title" id="myModalLabel">温馨提示</h4>
  132 + </div>
  133 + <div class="modal-body">
  134 + <h5 id="tipView"></h5>
  135 + </div>
  136 + <div class="modal-footer">
  137 + <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
  138 + </div>
  139 + </div>
  140 + </div>
  141 + </div>
  142 +
  143 + <div id="loadModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
  144 + aria-hidden="true"></div>
  145 +
  146 + <script src="#(contextPath)/res/jquery/jQuery.md5.js" type="text/javascript"></script>
  147 + <script src="#(contextPath)/res/common/sha256.js" type="text/javascript"></script>
  148 + <script src="#(contextPath)/js/common.js?ver=#(version)" type="text/javascript"></script>
  149 + <script src="#(contextPath)/js/login.js?ver=#(version)" type="text/javascript"></script>
  150 +</body>
  151 +
  152 +</html>
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>系统管理</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li class="active">修改密码</li>
  14 + </ol>
  15 +
  16 + <div style="margin: 10px;">
  17 + <form action="#(contextPath)/sysUser/modifyPasswordAction" method="post">
  18 + <table class="table table-bordered table-advance table-hover">
  19 + <tr>
  20 + <td>旧密码</td>
  21 + <td><input class="form-control" name="oldPassword" type="password" value="#(oldPassword)" required /></td>
  22 + </tr>
  23 + <tr>
  24 + <td>新密码1</td>
  25 + <td><input class="form-control" name="password1" type="password" value="#(password1)" required /></td>
  26 + </tr>
  27 + <tr>
  28 + <td>新密码2</td>
  29 + <td><input class="form-control" name="password2" type="password" value="#(password2)" required /></td>
  30 + </tr>
  31 + </table>
  32 + <label style="color: red; font-size: 16px;">#(errorMsg??)</label>
  33 + <div class="form-actions" style="margin-top: 10px; margin-left: 40%;">
  34 + <button class="btn btn-success" type="submit">&nbsp;&nbsp;&nbsp;&nbsp;</button>
  35 + <a class="btn" type="button" onclick="javascript:history.back(-1);" style="margin-left: 30px;">&nbsp;&nbsp;&nbsp;&nbsp;</a>
  36 + </div>
  37 + </form>
  38 + </div>
  39 + </div>
  40 +
  41 + <script type="text/javascript">
  42 + #if(flag)
  43 + showTip('#(flag)');
  44 + #end
  45 + </script>
  46 +</body>
  47 +</html>
  48 +
  49 +
  50 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>码头管理</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li class="active">进港码头</li>
  14 + </ol>
  15 +
  16 + <div style="margin-left: 10px;">
  17 + <table>
  18 + <tr>
  19 + <td><span style="margin-left: 3px;">货站</span></td>
  20 + <td>
  21 + <select id="stationList" style="margin-left: 3px;width: 200px;">
  22 + #for(station : stationList)
  23 + <option value="#(station.areaCode)"
  24 + #if(stationArea??==station.areaCode)
  25 + selected
  26 + #end
  27 + >
  28 + #(station.name)
  29 + </option>
  30 + #end
  31 + </select>
  32 + </td>
  33 +
  34 + <td><span style="margin-left: 20px;">进港码头编号</span></td>
  35 + <td>
  36 + <select id="portList" style="margin-left: 3px;width: 100px;">
  37 + <option value="0">全部</option>
  38 + #for(port : portList)
  39 + <option value="#(port.portNo)"
  40 + #if(portNo??==port.portNo)
  41 + selected
  42 + #end
  43 + >
  44 + #(port.portNo)
  45 + </option>
  46 + #end
  47 + </select>
  48 + </td>
  49 + <td><input id="searchInput" class="form-control" type="text" placeholder="货代/车牌号/司机/手机号"
  50 + value="#(searchKey)" style="margin-left: 20px; width: 300px;" /></td>
  51 + <td><button class="btn btn-success" onclick="onSearchAction()" style="margin-left: 5px;">搜索</button></td>
  52 + <td><button class="btn btn-primary" onclick="onAddAction()" style="margin-left: 30px;">码头分配</button></td>
  53 + </tr>
  54 + </table>
  55 + </div>
  56 +
  57 + <div style="margin: 10px;">
  58 + <table class="table table-bordered table-advance table-hover">
  59 + <thead>
  60 + <tr>
  61 + <th>货站</th>
  62 + <th>泊位号</th>
  63 + <th>车牌号</th>
  64 + <th>司机姓名</th>
  65 + <th>司机手机号</th>
  66 + <th>代理公司</th>
  67 + <th>业务类型</th>
  68 + <th>进场时间</th>
  69 + <th>状态</th>
  70 + </tr>
  71 + </thead>
  72 + <tbody>
  73 + #for(data : dataList)
  74 + <tr>
  75 + <td>#(data.station.name??)</td>
  76 + <td>#(data.portNo??"未分配")</td>
  77 + <td>#(data.carNo??)</td>
  78 + <td>#(data.driverName??)</td>
  79 + <td>#(data.phone??)</td>
  80 + <td><a href="#(contextPath)/agent/details?name=#(data.agentName)">#(data.agentName??)</a> </td>
  81 + <td>#(data.isPickup?'提货':'卸货')</td>
  82 + <td>#date(data.enterTime??,'yyyy-MM-dd HH:mm:ss')</td>
  83 + <th><span style="color: blue;font: bold;font-size: 1.1em;">排队中</span> </th>
  84 + </tr>
  85 + #end
  86 + </tbody>
  87 + </table>
  88 +
  89 + <!-- #@page(contextPath+'/port/arrivalList',curPage,totalPage,totalSize,searchKey,0,'') -->
  90 + </div>
  91 + </div>
  92 +
  93 + <script type="text/javascript" src="#(contextPath)/js/portArrivalList.js"></script>
  94 +
  95 + <script type="text/javascript">
  96 + #if(flag)
  97 + showTip('#(flag)');
  98 + #end
  99 + </script>
  100 +</body>
  101 +</html>
  102 +
  103 +
  104 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>码头管理</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li class="active">离港码头</li>
  14 + </ol>
  15 +
  16 + <div style="margin-left: 10px;">
  17 + <table>
  18 + <tr>
  19 + <td><span style="margin-left: 3px;">货站</span></td>
  20 + <td>
  21 + <select id="stationList" style="margin-left: 3px;width: 200px;">
  22 + #for(station : stationList)
  23 + <option value="#(station.areaCode)"
  24 + #if(stationArea??==station.areaCode)
  25 + selected
  26 + #end
  27 + >
  28 + #(station.name)
  29 + </option>
  30 + #end
  31 + </select>
  32 + </td>
  33 +
  34 + <td><span style="margin-left: 20px;">离港码头编号</span></td>
  35 + <td>
  36 + <select id="portList" style="margin-left: 3px;width: 100px;">
  37 + <option value="0">全部</option>
  38 + #for(port : portList)
  39 + <option value="#(port.portNo)"
  40 + #if(portNo??==port.portNo)
  41 + selected
  42 + #end
  43 + >
  44 + #(port.portNo)
  45 + </option>
  46 + #end
  47 + </select>
  48 + </td>
  49 + <td><input id="searchInput" class="form-control" type="text" placeholder="货代/车牌号/司机/手机号"
  50 + value="#(searchKey)" style="margin-left: 20px; width: 300px;" /></td>
  51 + <td><button class="btn btn-success" onclick="onSearchAction()" style="margin-left: 5px;">搜索</button></td>
  52 + <td><button class="btn btn-primary" onclick="onAddAction()" style="margin-left: 30px;">码头分配</button></td>
  53 + </tr>
  54 + </table>
  55 + </div>
  56 +
  57 + <div style="margin: 10px;">
  58 + <table class="table table-bordered table-advance table-hover">
  59 + <thead>
  60 + <tr>
  61 + <th>货站</th>
  62 + <th>泊位号</th>
  63 + <th>车牌号</th>
  64 + <th>司机姓名</th>
  65 + <th>司机手机号</th>
  66 + <th>代理公司</th>
  67 + <th>业务类型</th>
  68 + <th>进场时间</th>
  69 + <th>状态</th>
  70 + </tr>
  71 + </thead>
  72 + <tbody>
  73 + #for(data : dataList)
  74 + <tr>
  75 + <td>#(data.station.name??)</td>
  76 + <td>#(data.portNo??"未分配")</td>
  77 + <td>#(data.carNo??)</td>
  78 + <td>#(data.driverName??)</td>
  79 + <td>#(data.phone??)</td>
  80 + <td><a href="#(contextPath)/agent/details?name=#(data.agentName)">#(data.agentName??)</a> </td>
  81 + <td>#(data.isPickup?'提货':'卸货')</td>
  82 + <td>#date(data.enterTime??,'yyyy-MM-dd HH:mm:ss')</td>
  83 + <th><span style="color: blue;font: bold;font-size: 1.1em;">排队中</span> </th>
  84 + </tr>
  85 + #end
  86 + </tbody>
  87 + </table>
  88 +
  89 + <!-- #@page(contextPath+'/port/arrivalList',curPage,totalPage,totalSize,searchKey,0,'') -->
  90 + </div>
  91 + </div>
  92 +
  93 + <script type="text/javascript" src="#(contextPath)/js/portLeftList.js"></script>
  94 +
  95 + <script type="text/javascript">
  96 + #if(flag)
  97 + showTip('#(flag)');
  98 + #end
  99 + </script>
  100 +</body>
  101 +</html>
  102 +
  103 +
  104 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>用户管理</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li>
  14 + <a href="#(contextPath)/sysUser/list">用户列表</a>
  15 + </li>
  16 + <li>
  17 + <a style="color: gray;">/</a>
  18 + </li>
  19 + <li class="active">新建用户</li>
  20 + </ol>
  21 +
  22 + <div style="margin: 10px;">
  23 + <form action="#(contextPath)/sysUser/submit" method="post">
  24 + <table class="table table-bordered table-advance table-hover">
  25 + #if(sysUser)
  26 + <tr style="display: none;">
  27 + <td>用户ID</td>
  28 + <td>
  29 + <input class="form-control" type="text" name="sysUser.id"
  30 + value="#(sysUser.id)" />
  31 + </td>
  32 + </tr>
  33 + #end
  34 + <tr>
  35 + <td>姓名</td>
  36 + <td><input class="form-control" name="sysUser.realName" type="text"
  37 + value="#(sysUser.realName??)" required /></td>
  38 + </tr>
  39 + <tr>
  40 + <td>手机</td>
  41 + <td><input class="form-control" name="sysUser.phone" type="text"
  42 + value="#(sysUser.phone??)" min-lenght="11" />
  43 + </td>
  44 + </tr>
  45 + <tr>
  46 + <td>账号</td>
  47 + <td><input class="form-control" name="sysUser.username" type="text"
  48 + value="#(sysUser.username??)" required /></td>
  49 + </tr>
  50 + <tr>
  51 + <td>密码</td>
  52 + <td><input class="form-control" name="sysUser.password" type="text" required /></td>
  53 + </tr>
  54 +
  55 + #if(roleList)
  56 + <tr>
  57 + <td>角色</td>
  58 + <td>
  59 + <select id="roleList" style="padding-top: 5px;width: 400px;" name="sysUser.roleLevel" onchange="onChangeRole()" required>
  60 + <option value="">请选择角色</option>
  61 + #for(role : roleList)
  62 + <option value="#(role.level)"
  63 + #if(sysUser.roleLevel??==role.level)
  64 + selected
  65 + #end
  66 + >
  67 + #(role.name)
  68 + </option>
  69 + #end
  70 + </select>
  71 + </td>
  72 + </tr>
  73 + #end
  74 +
  75 + #if(agentList)
  76 + <tr id="agentTr" style="display:none;width: 100%;">
  77 + <td>公司</td>
  78 + <td>
  79 + <select id="agentList" style="padding-top: 5px;width: 400px;" name="sysUser.agentName" required>
  80 + <option value="">选择货代公司</option>
  81 + <option value="无">无货代公司</option>
  82 + #for(agent : agentList)
  83 + <option value="#(agent.nameCN)"
  84 + #if(sysUser.agentName??==agent.nameCN)
  85 + selected
  86 + #end
  87 + >
  88 + #(agent.nameCN)
  89 + </option>
  90 + #end
  91 + </select>
  92 + </td>
  93 + </tr>
  94 + #end
  95 +
  96 + #if(stationList)
  97 + <tr id="stationTr" style="display:none; width: 100%;">
  98 + <td>货站</td>
  99 + <td>
  100 + <select id="stationList" style="padding-top: 5px;width: 400px;" name="sysUser.stationArea" required>
  101 + #for(station : stationList)
  102 + <option value="#(station.areaCode)"
  103 + #if(sysUser.stationArea??==station.areaCode)
  104 + selected
  105 + #end
  106 + >
  107 + #(station.name)
  108 + </option>
  109 + #end
  110 + </select>
  111 + </td>
  112 + </tr>
  113 + #end
  114 +
  115 + <tr>
  116 + <td>备注</td>
  117 + <td><input class="form-control" name="sysUser.remark" type="text"
  118 + value="#(sysUser.remark??)" /></td>
  119 + </tr>
  120 + </table>
  121 + <label style="color: red; font-size: 16px;">#(errorMsg??)</label>
  122 + <div class="form-actions" style="margin-top: 10px; margin-left: 40%;">
  123 + <button class="btn btn-success" type="submit">&nbsp;&nbsp;&nbsp;&nbsp;</button>
  124 + <a class="btn" type="button" href="#(contextPath)/sysUser/list" style="margin-left: 30px;">&nbsp;&nbsp;&nbsp;&nbsp;</a>
  125 + </div>
  126 + </form>
  127 + </div>
  128 + </div>
  129 +
  130 + <script type="text/javascript" src="#(contextPath)/js/sysUser.js?ver=#(version)"></script>
  131 +
  132 + <script type="text/javascript">
  133 + onChangeRole();
  134 +
  135 + #if(flag)
  136 + showTip('#(flag)');
  137 + #end
  138 + </script>
  139 +</body>
  140 +</html>
  141 +
  142 +
  143 +
  1 +<!DOCTYPE html>
  2 +<html lang="zh">
  3 +#@header()
  4 +<body>
  5 + <div>
  6 + <ol class="breadcrumb">
  7 + <li>
  8 + <a>用户管理</a>
  9 + </li>
  10 + <li>
  11 + <a style="color: gray;">/</a>
  12 + </li>
  13 + <li class="active">用户列表</li>
  14 + </ol>
  15 +
  16 + <div style="margin-left: 10px;">
  17 + <table>
  18 + <tr>
  19 + <td><input id="searchInput" class="form-control" type="text" placeholder="账号" value="#(searchKey)" style="width: 300px;"/></td>
  20 + <td><button class="btn btn-success" onclick="onSearchAction()" style="margin-left: 5px;">搜索</button></td>
  21 + <td><button class="btn btn-primary" onclick="onAddAction()" style="margin-left: 30px;">新建用户</button></td>
  22 + </tr>
  23 + </table>
  24 + </div>
  25 +
  26 + <div style="margin: 10px;">
  27 + <table class="table table-bordered table-advance table-hover">
  28 + <thead>
  29 + <tr>
  30 + <th>账号</th>
  31 + <th>姓名</th>
  32 + <th>手机</th>
  33 + <th>角色</th>
  34 + <th>公司</th>
  35 + <th>创建时间</th>
  36 + <th>操作</th>
  37 + </tr>
  38 + </thead>
  39 + <tbody>
  40 + #for(sysUser : dataList)
  41 + <tr>
  42 + <td>#(sysUser.username??)</td>
  43 + <td>#(sysUser.realName??)</td>
  44 + <td>#(sysUser.phone??)</td>
  45 + <td>#(sysUser.job??)</td>
  46 + <td>#(sysUser.agentName??)</td>
  47 + <td>#date(sysUser.createTime??,'yyyy-MM-dd HH:mm:ss')</td>
  48 + <td>
  49 + <button class="btn btn-primary" onclick="onModifyAction(#(sysUser.id))">
  50 + <i class="icon-pencil"></i> 编辑
  51 + </button>
  52 + <button class="btn btn-danger" onclick="onDeleteAction(#(sysUser.id))">
  53 + <i class="icon-trash "></i> 删除
  54 + </button>
  55 + </td>
  56 + </tr>
  57 + #end
  58 + </tbody>
  59 + </table>
  60 +
  61 + #@page(contextPath+'/sysUser/list',curPage,totalPage,totalSize,searchKey,'','')
  62 + </div>
  63 + </div>
  64 +
  65 + <!-- Modal -->
  66 + <div id="delModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
  67 + aria-hidden="true">
  68 + <div class="modal-dialog">
  69 + <div class="modal-header">
  70 + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  71 + <h3 id="modal-title">温馨提示</h3>
  72 + </div>
  73 + <div class="modal-body">
  74 + <div class="control-group">
  75 + <label class="control-label" id="deleteId" style="display: none;">-1</label>
  76 + <label class="control-label" id="deleteTip">此操作将会删除所有和该用户相关的信息,是否继续删除?</label>
  77 + </div>
  78 + </div>
  79 + <div class="modal-footer form-actions">
  80 + <button class="btn btn-danger" onclick="onDeleteFromModal()">删除</button>
  81 + <button class="btn" data-dismiss="modal" aria-hidden="true">取消</button>
  82 + </div>
  83 + </div>
  84 + </div>
  85 + <!-- End Modal -->
  86 +
  87 + <script type="text/javascript" src="#(contextPath)/js/sysUser.js?ver=#(version)"></script>
  88 +
  89 + <script type="text/javascript">
  90 + #if(flag)
  91 + showTip('#(flag)');
  92 + #end
  93 + </script>
  94 +</body>
  95 +</html>
  96 +
  97 +
  98 +
  1 +<!DOCTYPE html>
  2 +<!--[if IE 8]> <html lang="en" class="ie8"> <![endif]-->
  3 +<!--[if IE 9]> <html lang="en" class="ie9"> <![endif]-->
  4 +<!--[if !IE]><!-->
  5 +<html lang="zh">
  6 +
  7 +<head>
  8 +<#include "resHeader.ftl"/>
  9 +<@resHeader/>
  10 +</head>
  11 +
  12 +<body>
  13 + <!-- BEGIN PAGE -->
  14 + <div id="main-content">
  15 + <!-- BEGIN PAGE CONTAINER-->
  16 + <div class="container-fluid">
  17 + <!-- BEGIN PAGE HEADER-->
  18 + <div class="row-fluid">
  19 + <div class="span12">
  20 + <!-- BEGIN PAGE TITLE & BREADCRUMB-->
  21 + <h3 class="page-title">系统设置</h3>
  22 + <ul class="breadcrumb">
  23 + <li>
  24 + <a href="#">首页</a>
  25 + <span class="divider">/</span>
  26 + </li>
  27 +
  28 + <li class="active">系统设置</li>
  29 + </ul>
  30 + <!-- END PAGE TITLE & BREADCRUMB-->
  31 + </div>
  32 + </div>
  33 + <!-- END PAGE HEADER-->
  34 +
  35 + <!-- END PAGE CONTENT-->
  36 + </div>
  37 + <!-- END PAGE CONTAINER-->
  38 + </div>
  39 + <!-- END PAGE -->
  40 +
  41 +</body>
  42 +</html>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3 + xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee"
  4 + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  5 + id="WebApp_ID" version="2.5">
  6 + <filter>
  7 + <filter-name>jfinal</filter-name>
  8 + <filter-class>com.jfinal.core.JFinalFilter</filter-class>
  9 + <init-param>
  10 + <param-name>configClass</param-name>
  11 + <param-value>com.air.config.AirAdminConfig</param-value>
  12 + </init-param>
  13 + </filter>
  14 +
  15 + <filter-mapping>
  16 + <filter-name>jfinal</filter-name>
  17 + <url-pattern>/*</url-pattern>
  18 + </filter-mapping>
  19 +
  20 + <session-config>
  21 + <session-timeout>30</session-timeout>
  22 + </session-config>
  23 +
  24 +</web-app>