作者 蔺文领

初次提交

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

要显示太多修改。

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

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