xielq преди 5 години
родител
ревизия
ceb9388406
променени са 100 файла, в които са добавени 6886 реда и са изтрити 0 реда
  1. 148 0
      pom.xml
  2. 160 0
      src/main/java/com/uas/platform/city/controller/LoginController.java
  3. 58 0
      src/main/java/com/uas/platform/city/core/config/AccountConfigration.java
  4. 16 0
      src/main/java/com/uas/platform/city/core/support/ApplicationContextRegister.java
  5. 27 0
      src/main/java/com/uas/platform/city/core/support/SystemSession.java
  6. 52 0
      src/main/java/com/uas/platform/city/core/util/CodeType.java
  7. 72 0
      src/main/java/com/uas/platform/city/core/util/ContextUtils.java
  8. 92 0
      src/main/java/com/uas/platform/city/core/util/FastjsonUtils.java
  9. 100 0
      src/main/java/com/uas/platform/city/core/util/HttpUtil.java
  10. 78 0
      src/main/java/com/uas/platform/city/core/util/PathUtils.java
  11. 107 0
      src/main/java/com/uas/platform/city/core/util/ResultMap.java
  12. 77 0
      src/main/java/com/uas/platform/city/web/BaseController.java
  13. 35 0
      src/main/java/com/uas/platform/city/web/filter/SSOInterceptor.java
  14. 17 0
      src/main/resources/dev/account.properties
  15. 18 0
      src/main/resources/prod/account.properties
  16. 26 0
      src/main/resources/spring/applicationContext.xml
  17. 17 0
      src/main/resources/test/account.properties
  18. 23 0
      src/main/webapp/WEB-INF/log4j.properties
  19. 152 0
      src/main/webapp/WEB-INF/views/normal/about.html
  20. 249 0
      src/main/webapp/WEB-INF/views/normal/cityServer.html
  21. 131 0
      src/main/webapp/WEB-INF/views/normal/clientCase.html
  22. 110 0
      src/main/webapp/WEB-INF/views/normal/default/404.html
  23. 214 0
      src/main/webapp/WEB-INF/views/normal/index.html
  24. 149 0
      src/main/webapp/WEB-INF/views/normal/intoCity.html
  25. 160 0
      src/main/webapp/WEB-INF/views/normal/newList.html
  26. 173 0
      src/main/webapp/WEB-INF/views/normal/news.html
  27. 157 0
      src/main/webapp/WEB-INF/views/normal/teamwork.html
  28. 103 0
      src/main/webapp/WEB-INF/web.xml
  29. 67 0
      src/main/webapp/WEB-INF/webmvc.xml
  30. 12 0
      src/main/webapp/resources/css/404.css
  31. 117 0
      src/main/webapp/resources/css/about.css
  32. 121 0
      src/main/webapp/resources/css/about.less
  33. 77 0
      src/main/webapp/resources/css/clientcase.css
  34. 83 0
      src/main/webapp/resources/css/clientcase.less
  35. 138 0
      src/main/webapp/resources/css/common.css
  36. 189 0
      src/main/webapp/resources/css/index.css
  37. 180 0
      src/main/webapp/resources/css/index.less
  38. 76 0
      src/main/webapp/resources/css/intocity.css
  39. 84 0
      src/main/webapp/resources/css/intocity.less
  40. 199 0
      src/main/webapp/resources/css/news.css
  41. 203 0
      src/main/webapp/resources/css/news.less
  42. 155 0
      src/main/webapp/resources/css/server.css
  43. 164 0
      src/main/webapp/resources/css/server.less
  44. 79 0
      src/main/webapp/resources/css/teamwork.css
  45. 84 0
      src/main/webapp/resources/css/teamwork.less
  46. BIN
      src/main/webapp/resources/img/about/pic.png
  47. BIN
      src/main/webapp/resources/img/clientcase/banner.png
  48. BIN
      src/main/webapp/resources/img/clientcase/clientcase1.png
  49. BIN
      src/main/webapp/resources/img/clientcase/clientcase2.png
  50. BIN
      src/main/webapp/resources/img/clientcase/clientcase3.png
  51. BIN
      src/main/webapp/resources/img/home/banner.png
  52. BIN
      src/main/webapp/resources/img/home/client1.png
  53. BIN
      src/main/webapp/resources/img/home/client2.png
  54. BIN
      src/main/webapp/resources/img/home/client3.png
  55. BIN
      src/main/webapp/resources/img/home/partner1.png
  56. BIN
      src/main/webapp/resources/img/home/serve1.png
  57. BIN
      src/main/webapp/resources/img/home/serve2.png
  58. BIN
      src/main/webapp/resources/img/home/serve3.png
  59. BIN
      src/main/webapp/resources/img/icon/icon.png
  60. BIN
      src/main/webapp/resources/img/icon/new.png
  61. BIN
      src/main/webapp/resources/img/intocity/切换.png
  62. BIN
      src/main/webapp/resources/img/logo.png
  63. BIN
      src/main/webapp/resources/img/news/banner.jpg
  64. BIN
      src/main/webapp/resources/img/qrcode/uas.png
  65. BIN
      src/main/webapp/resources/img/qrcode/uu.png
  66. BIN
      src/main/webapp/resources/img/server/attract1.png
  67. BIN
      src/main/webapp/resources/img/server/attract2.png
  68. BIN
      src/main/webapp/resources/img/server/attract3.png
  69. BIN
      src/main/webapp/resources/img/server/attract4.png
  70. BIN
      src/main/webapp/resources/img/server/attract5.png
  71. BIN
      src/main/webapp/resources/img/server/attract6.png
  72. BIN
      src/main/webapp/resources/img/server/banner.png
  73. BIN
      src/main/webapp/resources/img/server/classify1.png
  74. BIN
      src/main/webapp/resources/img/server/classify2.png
  75. BIN
      src/main/webapp/resources/img/server/classify3.png
  76. BIN
      src/main/webapp/resources/img/server/industry1.png
  77. BIN
      src/main/webapp/resources/img/server/industry2.png
  78. BIN
      src/main/webapp/resources/img/server/industry3.png
  79. BIN
      src/main/webapp/resources/img/server/industry4.png
  80. BIN
      src/main/webapp/resources/img/server/industry5.png
  81. BIN
      src/main/webapp/resources/img/server/industry6.png
  82. BIN
      src/main/webapp/resources/img/server/pic1.png
  83. BIN
      src/main/webapp/resources/img/server/pic2.png
  84. BIN
      src/main/webapp/resources/img/teamwork/banner.jpg
  85. BIN
      src/main/webapp/resources/img/teamwork/step1.png
  86. BIN
      src/main/webapp/resources/img/teamwork/step2.png
  87. BIN
      src/main/webapp/resources/img/teamwork/step3.png
  88. BIN
      src/main/webapp/resources/img/teamwork/step4.png
  89. BIN
      src/main/webapp/resources/img/teamwork/step5.png
  90. 8 0
      src/main/webapp/resources/js/about.js
  91. 0 0
      src/main/webapp/resources/js/clientcase.js
  92. 467 0
      src/main/webapp/resources/js/common/common.js
  93. 415 0
      src/main/webapp/resources/js/common/toastr.js
  94. 56 0
      src/main/webapp/resources/js/index.js
  95. 86 0
      src/main/webapp/resources/js/index/app.js
  96. 155 0
      src/main/webapp/resources/js/news.js
  97. 13 0
      src/main/webapp/resources/js/teamwork.js
  98. 857 0
      src/main/webapp/resources/lib/bootstrap-tour/css/bootstrap-tour-standalone.css
  99. 25 0
      src/main/webapp/resources/lib/bootstrap-tour/css/bootstrap-tour-standalone.min.css
  100. 55 0
      src/main/webapp/resources/lib/bootstrap-tour/css/bootstrap-tour.css

+ 148 - 0
pom.xml

@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>com.uas.platform</groupId>
+    <artifactId>platform</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+  </parent>
+  <groupId>com.uas.platform</groupId>
+  <artifactId>platform-city</artifactId>
+  <packaging>war</packaging>
+  <version>0.0.1</version>
+
+  <name>platform-home Maven Webapp</name>
+  <url>http://maven.apache.org</url>
+
+  <profiles>
+    <profile>
+      <!-- 开发环境 -->
+      <id>dev</id>
+      <properties>
+        <profile>dev</profile>
+        <!-- static plugin -->
+        <static-path>static</static-path>
+      </properties>
+      <!-- 默认 -->
+      <activation>
+        <activeByDefault>true</activeByDefault>
+      </activation>
+    </profile>
+    <profile>
+      <!-- 测试环境 -->
+      <id>test</id>
+      <properties>
+        <profile>test</profile>
+        <!-- static plugin -->
+        <static-path>static</static-path>
+      </properties>
+    </profile>
+    <profile>
+      <!-- 生产环境 -->
+      <id>prod</id>
+      <properties>
+        <profile>prod</profile>
+        <!-- static plugin -->
+        <static-path>https://static.usoftmall.com</static-path>
+      </properties>
+    </profile>
+  </profiles>
+
+  <dependencies>
+    <!-- spring-webmvc -->
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-webmvc</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context-support</artifactId>
+    </dependency>
+
+    <!-- spring mobile -->
+    <dependency>
+      <groupId>org.springframework.mobile</groupId>
+      <artifactId>spring-mobile-device</artifactId>
+    </dependency>
+
+    <!-- log4j -->
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <version>1.1.1</version>
+    </dependency>
+
+    <!-- fastjson -->
+    <dependency>
+      <groupId>com.alibaba</groupId>
+      <artifactId>fastjson</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>com.uas.account</groupId>
+      <artifactId>account-common</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <version>4.5.2</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <finalName>platform-city</finalName>
+    <!-- 受profile影响的目录 -->
+    <resources>
+      <resource>
+        <directory>${basedir}/src/main/resources</directory>
+        <filtering>true</filtering>
+      </resource>
+     <!-- <resource>
+        <directory>${basedir}/src/main/resources/${profile}</directory>
+      </resource>-->
+    </resources>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.tomcat.maven</groupId>
+        <artifactId>tomcat7-maven-plugin</artifactId>
+        <version>2.2</version>
+        <configuration>
+          <port>80</port>
+          <path>/</path>
+          <uriEncoding>utf-8</uriEncoding>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <organization>
+    <name>usoft</name>
+    <url>http://www.usoftchina.com</url>
+  </organization>
+  <distributionManagement>
+    <!-- 发布release仓库 -->
+    <repository>
+      <id>platform-release</id>
+      <name>platform-release</name>
+      <url>http://113.105.74.141:8081/artifactory/libs-release-local</url>
+    </repository>
+    <!-- 发布快照版本 -->
+    <snapshotRepository>
+      <id>platform-snapshots</id>
+      <name>platform-snapshots</name>
+      <url>http://113.105.74.141:8081/artifactory/libs-snapshot-local</url>
+    </snapshotRepository>
+  </distributionManagement>
+</project>

+ 160 - 0
src/main/java/com/uas/platform/city/controller/LoginController.java

@@ -0,0 +1,160 @@
+package com.uas.platform.city.controller;
+
+import static com.uas.platform.city.core.support.SystemSession.getUser;
+import static jdk.nashorn.internal.objects.NativeMath.log;
+
+import com.alibaba.fastjson.JSON;
+import com.uas.account.entity.UserView;
+import com.uas.platform.city.core.config.AccountConfigration;
+import com.uas.platform.city.core.support.SystemSession;
+import com.uas.platform.city.core.util.CodeType;
+import com.uas.platform.city.core.util.FastjsonUtils;
+import com.uas.platform.city.core.util.ResultMap;
+import com.uas.sso.SSOHelper;
+import com.uas.sso.SSOToken;
+import java.io.IOException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 登录,登出的功能
+ *
+ * @author yuj 2018-03-13 8:41
+ */
+@RestController
+public class LoginController {
+
+    private final AccountConfigration AccountConfigration;
+
+    @Autowired
+    public LoginController(AccountConfigration accountConfigration) {
+        AccountConfigration = accountConfigration;
+    }
+
+    /**
+     * 登出的功能
+     *
+     * @return
+     * @throws IOException
+     */
+    @RequestMapping(value = "/logout", method = RequestMethod.GET, headers = "Accept=application/json")
+    public ResultMap logout(){
+        String logout = AccountConfigration.getLogout();
+        return ResultMap.success(logout);
+    }
+
+    /**
+     * 用户请求登录
+     *
+     * @return
+     */
+    @RequestMapping(value = "/login", method = RequestMethod.GET)
+    public ResultMap login() {
+        String login = AccountConfigration.getLogin();
+        return ResultMap.success(login);
+    }
+
+    /**
+     * 账户信息、SSO配置
+     *
+     * @return
+     */
+    @RequestMapping(value = "/account", method = RequestMethod.GET)
+    @ResponseBody
+    public ResultMap getAccountInfo() throws Exception {
+        UserView userView = SystemSession.getUser();
+        if(null != getUser()) {
+            ModelMap map = new ModelMap();
+            map.put("content", getUser());
+            return ResultMap.success(map);
+        }
+        return new ResultMap(CodeType.OK.code(), "please login");
+    }
+
+    /**
+     * 其他地点登录后 同步登录状态
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/login/other")
+    @ResponseBody
+    public String afterCrossLogin(HttpServletRequest request, HttpServletResponse response, UserView userView, Integer maxage) {
+        String callback =request.getParameter("jsoncallback");
+        response.setContentType("text/html;charset=UTF-8");
+        if (userView != null && userView.getUid() != null) {
+            SSOToken tk = new SSOToken();
+            tk.setUid(userView.getUid());
+            tk.setTime(System.currentTimeMillis());
+            tk.setData(JSON.toJSONString(userView));
+            if (null != maxage) {
+                request.setAttribute("sso_cookie_maxage", maxage);
+            }
+            SSOHelper.setSSOCookie(request, response, tk, true);
+            UserView user = getUserByToken(tk);
+            if (user != null) {
+                if (!user.getPassword().equals(FastjsonUtils.fromJson(tk.getData(), com.uas.account.entity.User.class).getPassword())){
+                    return "successCallback({success:'0'})";
+                }
+                request.getSession().setAttribute("user", user);
+                SystemSession.setUser(user);
+                log(request, user);
+            }
+
+            return "successCallback({success:'1'})";
+        }
+        return "successCallback({success:'0'})";
+    }
+
+    private UserView getUserByToken(SSOToken token) {
+        UserView authedUser = null;
+        if (token.getData() != null) {
+            UserView tokenUser = FastjsonUtils.fromJson(token.getData(), UserView.class);
+            authedUser = tokenUser;
+//            if (tokenUser.getUid() != null) {
+//                // UID表示所有系统公认的唯一标识,这里统一使用手机号
+//                authedUser = userService.findUserByUserTel(tokenUser.getUid());
+//            } else if (tokenUser.getDialectUID() != null) {
+//                // dialectUID表示client系统自己的唯一标识,比如user_uu,手机号没设置的情况下使用
+//                authedUser = userService.findUserByUserUU(Long.parseLong(tokenUser.getDialectUID()));
+//            } else {
+//                logger.error(String.format("invalid user %s, please set uid or dialectUID", tokenUser.getName()));
+//            }
+        }
+        return authedUser;
+    }
+
+    /**
+     * 退出登录
+     * @param request
+     * @param response
+     * @param session
+     * @param returnUrl 退出之后要跳转的路径
+     * @return
+     * @throws IOException
+     */
+    @RequestMapping(value = "/logout/other", method = RequestMethod.GET, headers = "Accept=application/json")
+    @ResponseStatus(value = HttpStatus.OK)
+    @ResponseBody
+    public String logout(HttpServletRequest request, HttpServletResponse response, HttpSession session, String returnUrl)
+        throws IOException {
+        String callback =request.getParameter("jsoncallback");
+        response.setContentType("text/html;charset=UTF-8");
+        session.invalidate();
+        SSOHelper.clearLogin(request, response);
+        SystemSession.clear();
+        if (StringUtils.isEmpty(returnUrl)) {
+            returnUrl = request.getHeader("Referer");
+        }
+        return "successCallback({success:'1'})";
+    }
+}

+ 58 - 0
src/main/java/com/uas/platform/city/core/config/AccountConfigration.java

@@ -0,0 +1,58 @@
+package com.uas.platform.city.core.config;
+
+import com.uas.account.web.AccountConfigurer;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by wangyc on 2018/3/20.
+ *
+ * @version 2018/3/20 16:06 wangyc
+ */
+@Component
+public class AccountConfigration extends AccountConfigurer{
+
+    @Value("#{account['sso.api.login']}")
+    private String login;
+
+    @Value("#{account['sso.api.logout']}")
+    private String logout;
+
+    @Value("#{account['sso.api.getAccounts']}")
+    private String accounts;
+
+    @Value("#{account['sso.api.userInfoByUid']}")
+    private String userInfoByUid;
+
+    public void setLogin(String login) {
+        this.login = login;
+    }
+
+    public void setLogout(String logout) {
+        this.logout = logout;
+    }
+
+    public void setAccounts(String accounts) {
+        this.accounts = accounts;
+    }
+
+    public void setUserInfoByUid(String userInfoByUid) {
+        this.userInfoByUid = userInfoByUid;
+    }
+
+    public String getLogin() {
+        return login;
+    }
+
+    public String getLogout() {
+        return logout;
+    }
+
+    public String getAccounts() {
+        return accounts;
+    }
+
+    public String getUserInfoByUid() {
+        return userInfoByUid;
+    }
+}

+ 16 - 0
src/main/java/com/uas/platform/city/core/support/ApplicationContextRegister.java

@@ -0,0 +1,16 @@
+package com.uas.platform.city.core.support;
+
+import com.uas.platform.city.core.util.ContextUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+
+public class ApplicationContextRegister {
+	private static Logger logger = Logger.getLogger(ApplicationContextRegister.class);
+
+	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+		ContextUtils.setApplicationContext(applicationContext);
+		logger.debug("ApplicationContext registed");
+	}
+
+}

+ 27 - 0
src/main/java/com/uas/platform/city/core/support/SystemSession.java

@@ -0,0 +1,27 @@
+package com.uas.platform.city.core.support;
+
+import com.uas.account.entity.UserView;
+
+/**
+ * 每次请求服务器时,用户信息存放在本次线程中
+ * 
+ * @author yingp
+ * 
+ */
+public class SystemSession {
+
+	private static ThreadLocal<UserView> local = new ThreadLocal<UserView>();
+
+	public static void setUser(UserView session) {
+		local.set(session);
+	}
+
+	public static UserView getUser() {
+		return local.get();
+	}
+
+	public static void clear() {
+		local.set(null);
+	}
+
+}

+ 52 - 0
src/main/java/com/uas/platform/city/core/util/CodeType.java

@@ -0,0 +1,52 @@
+package com.uas.platform.city.core.util;
+
+/**
+ * 响应码
+ *
+ * history:
+ * Created by huxz on 2017-3-29 16:30:50
+ */
+public enum CodeType {
+
+	/**
+	 * 操作成功
+	 */
+	OK(1, "操作成功"),
+
+	/**
+	 * 错误
+	 */
+	FAILURE(2, "错误"),
+
+	/**
+	 * 信息缺失
+	 */
+	DEFICIENCY_INFO(3, "信息缺失"),
+
+	/**
+	 * 验证失败
+	 */
+	VALIDATE_FAILURE(4, "验证失败");
+
+	private int code;
+
+	private String message;
+
+	CodeType(int code, String message) {
+		this.code = code;
+		this.message = message;
+	}
+
+	public int code() {
+		return this.code;
+	}
+
+	public String message() {
+		return this.message;
+	}
+
+	@Override
+	public String toString() {
+		return Integer.toString(code);
+	}
+}

+ 72 - 0
src/main/java/com/uas/platform/city/core/util/ContextUtils.java

@@ -0,0 +1,72 @@
+package com.uas.platform.city.core.util;
+
+import org.apache.log4j.Logger;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationEvent;
+
+/**
+ * spring容器上下文对象
+ * 
+ * @author yingp
+ *
+ */
+public class ContextUtils {
+	private static ApplicationContext applicationContext;
+
+	private static Logger logger = Logger.getLogger(ContextUtils.class);
+
+	public static void setApplicationContext(ApplicationContext applicationContext) {
+		synchronized (ContextUtils.class) {
+			logger.debug("setApplicationContext, notifyAll");
+			ContextUtils.applicationContext = applicationContext;
+			ContextUtils.class.notifyAll();
+		}
+	}
+
+	public static ApplicationContext getApplicationContext() {
+		synchronized (ContextUtils.class) {
+			while (applicationContext == null) {
+				try {
+					logger.debug("getApplicationContext, wait...");
+					ContextUtils.class.wait(60000);
+					if (applicationContext == null) {
+						logger.warn("Have been waiting for ApplicationContext to be set for 1 minute", new Exception());
+					}
+				} catch (InterruptedException ex) {
+					logger.debug("getApplicationContext, wait interrupted");
+				}
+			}
+			return applicationContext;
+		}
+	}
+
+	/**
+	 * 获取bean
+	 * 
+	 * @param name
+	 * @return
+	 */
+	public static Object getBean(String name) {
+		return getApplicationContext().getBean(name);
+	}
+
+	/**
+	 * 获取bean
+	 * 
+	 * @param cls
+	 * @return
+	 */
+	public static <T> T getBean(Class<T> cls) {
+		return getApplicationContext().getBean(cls);
+	}
+
+	/**
+	 * 触发事件
+	 * 
+	 * @param event
+	 */
+	public static void publishEvent(ApplicationEvent event) {
+		getApplicationContext().publishEvent(event);
+	}
+
+}

+ 92 - 0
src/main/java/com/uas/platform/city/core/util/FastjsonUtils.java

@@ -0,0 +1,92 @@
+package com.uas.platform.city.core.util;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import java.util.List;
+
+/**
+ * @author yingp
+ * @see JSON
+ *
+ */
+public class FastjsonUtils {
+
+	public static Feature DEFAULT_PARSER_FEATURE = Feature.DisableCircularReferenceDetect;
+	public static SerializerFeature DEFAULT_SERIAL_FEATURE = SerializerFeature.DisableCircularReferenceDetect;
+
+	/**
+	 * 把JSON文本parse为JSONObject或者JSONArray
+	 * 
+	 * @param text
+	 * @return
+	 */
+	public static Object parse(String text) {
+		return JSON.parse(text, DEFAULT_PARSER_FEATURE);
+	}
+
+	/**
+	 * 把JSON文本parse成JSONObject
+	 * 
+	 * @param text
+	 * @return
+	 */
+	public static final JSONObject parseObject(String text) {
+		return JSON.parseObject(text, DEFAULT_PARSER_FEATURE);
+	}
+
+	/**
+	 * 把JSON文本parse为JavaBean
+	 * 
+	 * @param text
+	 * @param clazz
+	 * @return
+	 */
+	public static final <T> T fromJson(String text, Class<T> clazz) {
+		return JSON.parseObject(text, clazz, DEFAULT_PARSER_FEATURE);
+	}
+
+	/**
+	 * 把JSON文本parse成JSONArray
+	 * 
+	 * @param text
+	 * @return
+	 */
+	public static final JSONArray fromJsonArray(String text) {
+		return JSON.parseArray(text);
+	}
+
+	/**
+	 * 把JSON文本parse成JavaBean集合
+	 * 
+	 * @param text
+	 * @param clazz
+	 * @return
+	 */
+	public static final <T> List<T> fromJsonArray(String text, Class<T> clazz) {
+		return JSON.parseArray(text, clazz);
+	}
+
+	/**
+	 * 将JavaBean序列化为JSON文本
+	 * 
+	 * @param object
+	 * @return
+	 */
+	public static final String toJson(Object object) {
+		return JSON.toJSONString(object, DEFAULT_SERIAL_FEATURE);
+	}
+
+	/**
+	 * 将JavaBean转换为JSONObject或者JSONArray。
+	 * 
+	 * @param javaObject
+	 * @return
+	 */
+	public static final Object toJSON(Object javaObject) {
+		return JSON.toJSON(javaObject);
+	}
+
+}

+ 100 - 0
src/main/java/com/uas/platform/city/core/util/HttpUtil.java

@@ -0,0 +1,100 @@
+package com.uas.platform.city.core.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.protocol.HTTP;
+
+/**
+ * created by shicr on 2017/11/24
+ **/
+public class HttpUtil {
+
+    /**
+     * 发送post请求
+     *
+     * @param postUrl
+     * @param formData
+     * @return
+     * @throws Exception
+     */
+    public static Response doPost(String postUrl, String formData,  int timeout) throws Exception {
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        HttpPost post = new HttpPost(postUrl);
+        StringEntity postingString = new StringEntity(formData, HTTP.UTF_8);
+        post.setEntity(postingString);
+        post.setHeader("Content-type", "application/json");
+        CloseableHttpResponse response = httpClient.execute(post);
+        return Response.getResponse(response);
+    }
+    public static class Response {
+        private int statusCode;
+        private String responseText;
+
+        public int getStatusCode() {
+            return statusCode;
+        }
+
+        public void setStatusCode(int statusCode) {
+            this.statusCode = statusCode;
+        }
+
+        public String getResponseText() {
+            return responseText;
+        }
+
+        public void setResponseText(String responseText) {
+            this.responseText = responseText;
+        }
+
+        public Response() {
+        }
+
+        public Response(boolean success, String content) {
+            super();
+            this.statusCode = success ? 200 : 404;
+            this.responseText = content;
+        }
+
+        public Response(HttpResponse response) throws IllegalStateException, IOException, Exception {
+            this.statusCode = response.getStatusLine().getStatusCode();
+            this.responseText = HttpUtil.read2String(response.getEntity().getContent());
+        }
+
+        public static Response getResponse(HttpResponse response) throws IllegalStateException, IOException, Exception {
+            if (response != null)
+                return new Response(response);
+            return null;
+        }
+    }
+
+    /**
+     * 将输入流转为字符串
+     *
+     * @param inStream
+     * @return
+     * @throws Exception
+     */
+    public static String read2String(InputStream inStream) throws Exception {
+        ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
+        byte[] buffer = new byte[1024];
+        int len = 0;
+        while ((len = inStream.read(buffer)) != -1) {
+            outSteam.write(buffer, 0, len);
+        }
+        try {
+            outSteam.close();
+            inStream.close();
+        } catch (Exception e) {
+
+        }
+        return new String(outSteam.toByteArray(), "UTF-8");
+    }
+
+}

+ 78 - 0
src/main/java/com/uas/platform/city/core/util/PathUtils.java

@@ -0,0 +1,78 @@
+package com.uas.platform.city.core.util;
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+
+/**
+ * 路径
+ * 
+ * @author yingp
+ *
+ */
+public class PathUtils {
+
+	private static String classPath;
+
+	private static String appPath;
+
+	private static String filePath;
+
+	/**
+	 * classes文件目录
+	 * 
+	 * @return
+	 */
+	public static String getClassPath() {
+		if (classPath == null)
+			setClassPath();
+		return classPath;
+	}
+
+	/**
+	 * 应用程序目录
+	 * 
+	 * @return
+	 */
+	public static String getAppPath() {
+		if (appPath == null)
+			setAppPath();
+		return appPath;
+	}
+
+	/**
+	 * 日志、附件文件等存放目录,与程序同级
+	 * 
+	 * @return
+	 */
+	public static String getFilePath() {
+		if (filePath == null)
+			setFilePath();
+		return filePath;
+	}
+
+	private static void setClassPath() {
+		Class<?> objClass = ContextUtils.getApplicationContext().getClass();
+		String strRealPath = objClass.getClassLoader().getResource("").getFile();
+		try {
+			strRealPath = URLDecoder.decode(strRealPath, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		File objFile = new File(strRealPath);
+		classPath = objFile.getParent() + File.separator;
+		if (classPath.contains("/")) {
+			classPath = "/" + classPath;
+		}
+	}
+
+	private static void setAppPath() {
+		File file = new File(getClassPath());
+		appPath = file.getParent() + File.separator;
+	}
+
+	private static void setFilePath() {
+		File file = new File(getAppPath());
+		filePath = file.getParent() + File.separator;
+	}
+}

+ 107 - 0
src/main/java/com/uas/platform/city/core/util/ResultMap.java

@@ -0,0 +1,107 @@
+package com.uas.platform.city.core.util;
+
+/**
+ * 请求结果集
+ *
+ * history:
+ * Created by huxz on 2017-3-29 16:30:32
+ */
+public class ResultMap {
+
+	private int code;
+
+	private boolean success;
+
+	private String message;
+
+	private Object content;
+
+	public ResultMap() {
+	}
+
+	public ResultMap(int status, String message) {
+		if (CodeType.OK.code() == status) {
+			this.success = true;
+		} else {
+			this.success = false;
+		}
+		this.code = status;
+		this.message = message;
+	}
+
+	public ResultMap(CodeType status, String message) {
+		if (CodeType.OK.code() == status.code()) {
+			this.success = true;
+		} else {
+			this.success = false;
+		}
+		this.message = message;
+		this.code = status.code();
+	}
+
+	public ResultMap(int status, String message, Object content) {
+		if (CodeType.OK.code() == status) {
+			this.success = true;
+		} else {
+			this.success = false;
+		}
+		this.code = status;
+		this.message = message;
+		this.content = content;
+	}
+
+	/*public ResultMap(CodeType status, Object data) {
+		this.code = status.code();
+		if (CodeType.OK == status) {
+			this.success = true;
+			this.data = data;
+		} else {
+			this.success = false;
+			this.message = status.message();
+		}
+	}*/
+
+	public int getCode() {
+		return code;
+	}
+
+	public void setCode(int code) {
+		this.code = code;
+	}
+
+	public boolean isSuccess() {
+		return success;
+	}
+
+	public void setSuccess(boolean success) {
+		this.success = success;
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public Object getContent() {
+		return content;
+	}
+
+	public ResultMap setContent(Object content) {
+		this.content = content;
+		return this;
+	}
+
+	@Override
+	public String toString() {
+		return FastjsonUtils.toJson(this);
+	}
+
+	public static ResultMap success(Object content) {
+		ResultMap result = new ResultMap(CodeType.OK.code(), null);
+		result.content = content;
+		return result;
+	}
+}

+ 77 - 0
src/main/java/com/uas/platform/city/web/BaseController.java

@@ -0,0 +1,77 @@
+package com.uas.platform.city.web;
+
+import com.alibaba.fastjson.JSON;
+import java.io.IOException;
+import java.io.PrintWriter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.ui.ModelMap;
+
+/**
+ * controller基础类
+ * 
+ * @author yingp
+ *
+ */
+public class BaseController {
+
+	protected static final String defultCharset = "UTF-8";
+
+	@Autowired
+	protected HttpServletRequest request;
+
+	@Autowired
+	protected HttpServletResponse response;
+
+	protected static ModelMap success() {
+		return new ModelMap("success", true);
+	}
+
+	protected static ModelMap success(Object data) {
+		return new ModelMap("success", true).addAttribute("content", data);
+	}
+
+	protected static ModelMap error(String errMsg) {
+		return new ModelMap("error", true).addAttribute("errMsg", errMsg);
+	}
+
+	protected static ModelMap error(String errCode, String errMsg) {
+		return new ModelMap("error", true).addAttribute("errCode", errCode).addAttribute("errMsg", errMsg);
+	}
+
+	/**
+	 * 输出json格式
+	 * 
+	 * @param obj
+	 * @throws IOException
+	 */
+	protected void printJson(Object obj) throws IOException {
+		response.setStatus(HttpStatus.FORBIDDEN.value());
+		response.addHeader("Content-Type", "application/json; charset=" + defultCharset);
+		PrintWriter printWriter = response.getWriter();
+		printWriter.append(JSON.toJSONString(obj));
+		printWriter.flush();
+		printWriter.close();
+	}
+
+	/**
+	 * 输出流
+	 * 
+	 * @param fileName
+	 *            文件名
+	 * @param bytes
+	 * @throws IOException
+	 */
+	protected ResponseEntity<byte[]> outputStream(String fileName, byte[] bytes) {
+		HttpHeaders headers = new HttpHeaders();
+		headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+		headers.setContentDispositionFormData("attachment", fileName);
+		return new ResponseEntity<byte[]>(bytes, headers, HttpStatus.CREATED);
+	}
+
+}

+ 35 - 0
src/main/java/com/uas/platform/city/web/filter/SSOInterceptor.java

@@ -0,0 +1,35 @@
+package com.uas.platform.city.web.filter;
+
+import com.uas.account.entity.UserView;
+import com.uas.platform.city.core.support.SystemSession;
+import com.uas.platform.city.core.util.FastjsonUtils;
+import com.uas.sso.SSOHelper;
+import com.uas.sso.SSOToken;
+import com.uas.sso.web.spring.AbstractSSOInterceptor;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class SSOInterceptor extends AbstractSSOInterceptor {
+
+	@Override
+	protected boolean onAuthenticateFailed(HttpServletRequest request, HttpServletResponse response) {
+		// 没登录也继续
+		return true;
+	}
+
+	@Override
+	protected void onAuthenticateSuccess(HttpServletRequest request, HttpServletResponse response) {
+		SSOToken token = SSOHelper.attrToken(request);
+		if (token.getData() != null)
+			SystemSession.setUser(FastjsonUtils.fromJson(token.getData(), UserView.class));
+		else
+			SystemSession.clear();
+	}
+
+	@Override
+	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+		super.afterCompletion(request, response, handler, ex);
+		SystemSession.clear();
+	}
+
+}

+ 17 - 0
src/main/resources/dev/account.properties

@@ -0,0 +1,17 @@
+sso.api.login=http://113.105.74.135:8001/sso/login?returnURL={returnURL}&appId=cityhome&baseUrl={baseUrl}injectionCookie
+sso.api.userInfoByUid=http://113.105.74.135:8001/api/user/userInfo?uid={uid}
+sso.api.getAccounts=http://113.105.74.135:8001/api/user/all?mobile={mobile}
+# 如果配置了该选项,在执行完本地登出后,跳转该地址执行同步登出
+sso.api.logout=http://113.105.74.135:8001/sso/logout?returnURL={returnURL}&appId=cityhome
+# 默认值uid
+sso.urlExcludes.token.cookieName=uid
+sso.urlExcludes.token.secretKey=0taQcW073Z7G628g5H
+# //默认值/clear-cookie,回调删除cookie的URI,会有拦截器自行处理,无需自定义请求
+sso.urlExcludes.token.clearCookieUri=/api/clearCookie
+# 默认值/sso-logout,本地退出的默认实现
+sso.urlExcludes.token.logoutUri=/logout
+# 默认值/set-cookie,回调写cookie的URI,会有拦截器自行处理,无需自定义请求
+sso.urlExcludes.token.setCookieUri=/api/injectionCookie
+
+
+

+ 18 - 0
src/main/resources/prod/account.properties

@@ -0,0 +1,18 @@
+sso.api.login=https://account.ubtob.com/sso/login?returnURL={returnURL}&appId=cityhome&baseUrl={baseUrl}injectionCookie
+sso.api.userInfoByUid=https://account.ubtob.com/api/user/userInfo?uid={uid}
+sso.api.getAccounts=https://account.ubtob.com/api/user/all?mobile={mobile}
+# 如果配置了该选项,在执行完本地登出后,跳转该地址执行同步登出
+sso.api.logout=https://account.ubtob.com/sso/logout?returnURL={returnURL}&appId=cityhome
+sso.cookie.domain=ubtob.com
+# 默认值uid
+sso.token.cookieName=uid
+sso.token.secretKey=0taQcW073Z7G628g5H
+# //默认值/clear-cookie,回调删除cookie的URI,会有拦截器自行处理,无需自定义请求
+sso.token.clearCookieUri=/api/clearCookie
+# 默认值/sso-logout,本地退出的默认实现
+sso.token.logoutUri=/logout
+# 默认值/set-cookie,回调写cookie的URI,会有拦截器自行处理,无需自定义请求
+sso.token.setCookieUri=/api/injectionCookie
+
+
+

+ 26 - 0
src/main/resources/spring/applicationContext.xml

@@ -0,0 +1,26 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+  xmlns:context="http://www.springframework.org/schema/context"
+  xmlns:aop="http://www.springframework.org/schema/aop" xmlns:task="http://www.springframework.org/schema/task"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:cache="http://www.springframework.org/schema/cache" xmlns:util="http://www.springframework.org/schema/util"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
+	http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd
+	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
+	http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd">
+  <!-- 注册spring上下文对象 -->
+  <bean class="com.uas.platform.city.core.support.ApplicationContextRegister" />
+
+  <context:component-scan base-package="com.uas.platform.city" />
+  <context:annotation-config />
+
+  <!-- 账户中心配置 -->
+  <bean id="accountConfigurer" class="com.uas.account.web.AccountConfigurer"
+    init-method="init">
+    <property name="configPath" value="classpath:${profile}/account.properties" />
+  </bean>
+  <!-- 账户中心参数 -->
+  <util:properties id="account"
+    location="classpath:${profile}/account.properties" />
+</beans>

+ 17 - 0
src/main/resources/test/account.properties

@@ -0,0 +1,17 @@
+sso.api.login=http://113.105.74.135:8001/sso/login?returnURL={returnURL}&appId=cityhome&baseUrl={baseUrl}injectionCookie
+sso.api.userInfoByUid=http://113.105.74.135:8001/api/user/userInfo?uid={uid}
+sso.api.getAccounts=http://113.105.74.135:8001/api/user/all?mobile={mobile}
+# 如果配置了该选项,在执行完本地登出后,跳转该地址执行同步登出
+sso.api.logout=http://113.105.74.135:8001/sso/logout?returnURL={returnURL}&appId=cityhome
+# 默认值uid
+sso.urlExcludes.token.cookieName=uid
+sso.urlExcludes.token.secretKey=0taQcW073Z7G628g5H
+# //默认值/clear-cookie,回调删除cookie的URI,会有拦截器自行处理,无需自定义请求
+sso.urlExcludes.token.clearCookieUri=/api/clearCookie
+# 默认值/sso-logout,本地退出的默认实现
+sso.urlExcludes.token.logoutUri=/logout
+# 默认值/set-cookie,回调写cookie的URI,会有拦截器自行处理,无需自定义请求
+sso.urlExcludes.token.setCookieUri=/api/injectionCookie
+
+
+

+ 23 - 0
src/main/webapp/WEB-INF/log4j.properties

@@ -0,0 +1,23 @@
+# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
+# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
+log4j.rootLogger=ERROR, stdout, logfile
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d %p [%c]:%m%n
+
+log4j.appender.logfile=org.apache.log4j.RollingFileAppender
+log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
+log4j.appender.logfile.File=../log4j.log
+# Keep three backup files.
+log4j.appender.logfile.MaxBackupIndex=3
+log4j.appender.logfile.MaxFileSize=5120KB
+# Pattern to output: date priority [category] - message
+log4j.appender.logfile.layout.ConversionPattern=%d %p [%c]:%m%n
+#log4j.logger.org.springframework.samples.petclinic.aspects=DEBUG
+
+log4j.logger.com.uas = error
+#=========================================
+#=   spring framewokr log configuration  =
+#=========================================
+log4j.logger.org.springframework = 

+ 152 - 0
src/main/webapp/WEB-INF/views/normal/about.html

@@ -0,0 +1,152 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软产城">
+	<meta name="Keywords" content="优软,产城,产城服务">
+	<link href="static/img/icon/icon.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet" href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/about.css" />
+	<title>关于我们-优软产城</title>
+	<!--[if lt IE 9]>
+	<script src="static/lib/tool/html5shiv.min.js"></script>
+	<script src="static/lib/tool/respond.min.js"></script>
+	<![endif]-->
+</head>
+<body>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="https://www.usoftchina.com" id="logo"><img src="static/img/logo.png" height="14px" /> | <span>智慧产城</span></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<ul class="nav navbar-nav navbar-left">
+				<li><a href="index">首页</a></li>
+				<li><a href="cityServer">产城服务</a></li>
+				<li><a href="clientCase">客户案例</a></li>
+				<li><a href="news">新闻资讯</a></li>
+				<li><a href="teamwork">加盟合作</a></li>
+				<li class="active"><a href="about">关于我们</a></li></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-nologin">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li><a href="#" class="link-login">登录</a></li>
+				<li><a href="https://account.ubtob.com/sso/register">注册</a></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-login">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li class="dropdown">
+					<a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+				</li>
+				<li><a href="#" class="link-logout">退出</a></li>
+			</ul>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- section presentation -->
+<section id="presentation">
+	<div class="container">
+		<div class="head">
+			<h4>关于我们 - <span>优软科技</span></h4>
+			<p>深圳市优软科技有限公司成立于2007年,是一家高新技术企业,总部位于深圳市高新技术产业园。</p>
+			<p>优软科技致力于企业信息化管理系统和互联网平台的研发、咨询与应用,并在国内率先推出基于浏览器的ERP应用平台,是国内领先的企业管理软件及云服务商。
+				公司客户分布广泛,涵盖高科技、电信、制造、贸易和服务等领域;产品及服务齐全,包括ERP软件、B2B解决方案、供应商管理系统、CRM管理系统、PLM管理系统、财务管理系统、优企云服以及构建制造行业自生态商业圈等。
+				优软科技始终秉承“实现理想、贡献社会”的企业宗旨,践行“真诚、平等、勤奋、创新”的企业精神,贯彻“传道、授业、解惑”的企业使命,亲切、开放、严谨的公司文化和科学规范的管理,凝聚大量优秀的人才。</p>
+			<p>优软科技拥有一支由优秀、资深的IT专家组成的技术团队,他们在产品开发、推广和维护方面默契合作,深刻理解“以客户为中心”的含义,将“服务”贯穿于公司运作和管理的每一个细节,赢得客户广泛的信任和支持。</p>
+			<a href="https://www.usoftchina.com">查看首页</a>
+		</div>
+	</div>
+</section>
+
+<!-- section tabs -->
+<section id="tabs">
+	<div class="container">
+		<div class="head">
+			<h4>产品介绍</h4>
+		</div>
+		<div class="tab">
+			<ul>
+				<li class="active"><a href="1">优软云</a></li>
+				<li><a href="2">UAS</a></li>
+				<li><a href="3">UU互联</a></li>
+			</ul>
+			<div class="count">
+				<div class="step1 show">
+					<p>2016年,优软科技为了真正解决电子信息行业企业管理的众多难题,实现 “让管理不再难,令生意更简单”的梦想,基于垂直细分的市场打造了“优软云”平台。</p>
+					<p>“优软云”是一个轻盈、便捷、智慧的产业互联网综合服务平台。未来,优软科技将不断完善和优化“优软云”的六大功能,按照“B2B商务+优软商城+优企云服+金融服务+人才招聘+创客平台+公共服务+定制商城”协同发展的方向,投入更多的精力致力于“互联网+”的研究与发展。</p>
+					<a href="https://www.ubtob.com">了解详情</a>
+				</div>
+				<div class="step2">
+					<p>UAS(United Application System)联合应用系统,其包含客户关系管理、项目管理、供应链管理、生产制造管理、人力资源管理、移动办公管理、财务管理、风控中心等模块,涵盖了企业管理的方方面面,一整套基于B/S架构打造的企业全流程管理系统。</p>
+					<a href="https://www.usoftchina.com/uas">了解详情</a>
+				</div>
+				<div class="step3">
+					<p>UU互联为一款即集成企业移动办公、移动审批、移动CRM的企业移动办公软件;同时涵盖了B2B商务和优软商城的相关业务,用户随时随地都可以接受、处理来自客户的询价、订单等信息,结合优软云的大数据分析您还可以接受到来自平台的需求信息,让您在畅享移动办公、亦可以获取商机。</p>
+					<a href="https://www.usoftchina.com/uu">了解详情</a>
+				</div>
+			</div>
+		</div>
+
+	</div>
+</div>
+</section>
+
+
+<!-- footer start -->
+<footer>
+	<div class="container">
+		<div class="clearfix">
+			<div class="pull-left footer-left">
+				<p>
+					<a href="https://www.ubtob.com">开放平台</a><a href="https://account.ubtob.com/common/rules">法律条款</a><a href="teamwork">联系我们</a><a href="about">关于我们</a>
+				</p>
+				<p>版权所有:深圳市优软科技有限公司 Copyright @ 2017 All Rights Reserved</p>
+			</div>
+			<div class="pull-right footer-right">
+				<ul class="list-inline">
+					<li>
+						<div class="qrcode-tel">
+							<p>服务热线:</p>
+							<span>0755 - 26994808</span>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uu">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uu.png" width="80px" height="80px" alt="UU互联" />
+							</div>
+							<div class="qrcode-text">
+								<p>APP 下载</p>
+							</div>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uas">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uas.png" width="80px" height="80px" alt="优软公众号" />
+							</div>
+							<div class="qrcode-text">
+								<p>微信公众号</p>
+							</div>
+						</div>
+					</li>
+				</ul>
+			</div>
+		</div>
+	</div>
+</footer>
+<!-- footer end -->
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+<script type="text/javascript" src="static/js/about.js"></script>
+</html>

+ 249 - 0
src/main/webapp/WEB-INF/views/normal/cityServer.html

@@ -0,0 +1,249 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软产城">
+	<meta name="Keywords" content="优软,产城,产城服务">
+	<link href="static/img/icon/icon.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet" href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/server.css" />
+	<title>产城服务-优软产城</title>
+	<!--[if lt IE 9]>
+	<script src="static/lib/tool/html5shiv.min.js"></script>
+	<script src="static/lib/tool/respond.min.js"></script>
+	<![endif]-->
+</head>
+<body>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="https://www.usoftchina.com" id="logo"><img src="static/img/logo.png" height="14px" /> | <span>智慧产城</span></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<ul class="nav navbar-nav navbar-left">
+				<li><a href="index">首页</a></li>
+				<li class="active"><a href="cityServer">产城服务</a></li>
+				<li><a href="clientCase">客户案例</a></li>
+				<li><a href="news">新闻资讯</a></li>
+				<li><a href="teamwork">加盟合作</a></li>
+				<li><a href="about">关于我们</a></li></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-nologin">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li><a href="#" class="link-login">登录</a></li>
+				<li><a href="https://account.ubtob.com/sso/register">注册</a></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-login">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li class="dropdown">
+					<a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+				</li>
+				<li><a href="#" class="link-logout">退出</a></li>
+			</ul>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- header banner -->
+<header id="banner">
+	<div class="container">
+		<h4>智慧产城服务</h4>
+	</div>
+</header>
+
+<!-- section classify -->
+<section id="classify">
+	<div class="container">
+		<ul class="list-inline">
+			<li class="item">
+				<img src="static/img/server/classify1.png">
+				<div class="item-right">
+					<p>大数据招商</p>
+					<span>行业企业数据挖掘,精准定位意向企业</span>
+				</div>
+			</li>
+			<li class="item">
+				<img src="static/img/server/classify2.png">
+				<div class="item-right">
+					<p>企业云管理服务</p>
+					<span>提升园区企业管理效率的利器</span>
+				</div>
+			</li>
+			<li class="item">
+				<img src="static/img/server/classify3.png">
+				<div class="item-right">
+					<p>产业价值链服务</p>
+					<span>提升园区企业与合作伙伴协作效率促进产业发展</span>
+				</div>
+			</li>
+		</ul>
+	</div>
+</section>
+
+<!-- section attract -->
+<section id="attract">
+	<div class="container text-center">
+		<div class="head">
+			<h4>大数据招商</h4>
+		</div>
+		<ul class="list-inline">
+			<li class="item">
+				<img src="static/img/server/attract1.png">
+				<p>动态企业数据</p>
+			</li>
+			<li class="item">
+				<img src="static/img/server/attract2.png">
+				<p>网站采集来源</p>
+			</li>
+			<li class="item">
+				<img src="static/img/server/attract3.png">
+				<p>部委数据来源</p>
+			</li>
+			<li class="item">
+				<img src="static/img/server/attract4.png">
+				<p>多维度产业画像</p>
+			</li>
+			<li class="item">
+				<img src="static/img/server/attract5.png">
+				<p>智能撮合匹配算法</p>
+			</li>
+			<li class="item">
+				<img src="static/img/server/attract6.png">
+				<p>定制化服务</p>
+			</li>
+		</ul>
+	</div>
+</section>
+
+<!-- section manage -->
+<section id="manage">
+	<div class="container">
+		<div class="head">
+			<h4>企业云管理服务</h4>
+			<p>全流程信息管理系统:一套方便、好用、免费的企业全流程管理工具</p>
+		</div>
+		<img src="static/img/server/pic2.png" >
+	</div>
+</div>
+</section>
+
+<!-- section industry -->
+<section id="industry">
+	<div class="container">
+		<div class="head">
+			<h4>产业价值链服务</h4>
+		</div>
+		<ul class="list-inline">
+			<li>
+				<a href="https://www.usoftchina.com/b2b">
+					<img src="static/img/server/industry1.png">
+					<div class="item-right">
+						<p>商务平台</p>
+						<span>挖掘商机、寻找资源、线上交易</span>
+					</div>
+				</a>
+			</li>
+			<li>
+				<a href="https://www.usoftmall.com">
+					<img src="static/img/server/industry2.png">
+					<div class="item-right">
+						<p>优软商城</p>
+						<span>器件选型,呆滞库存处理</span>
+					</div>
+				</a>
+			</li>
+			<li>
+				<a href="https://www.ubtob.com/finance">
+					<img src="static/img/server/industry3.png">
+					<div class="item-right">
+						<p>金融服务</p>
+						<span>应收账款保理、仓单融资、订单融资及融资租赁</span>
+					</div>
+				</a>
+			</li>
+			<li>
+				<a href="http://job.uuzcc.com/">
+					<img src="static/img/server/industry4.png">
+					<div class="item-right">
+						<p>人才招聘</p>
+						<span>优质渠道、专业人才、快速匹配</span>
+					</div>
+				</a>
+			</li>
+			<li>
+				<img src="static/img/server/industry6.png">
+				<div class="item-right">
+					<p>供应链服务</p>
+					<span>智能仓储、智能物流、智能关务</span>
+				</div>
+			</li>
+			<li>
+				<a href="http://www.uuzcc.com/">
+					<img src="static/img/server/industry5.png">
+					<div class="item-right">
+						<p>众创空间</p>
+						<span>任务外包、方案商城、技术论坛</span>
+					</div>
+				</a>
+			</li>
+		</ul>
+	</div>
+	</div>
+</section>
+
+<!-- footer start -->
+<footer>
+	<div class="container">
+		<div class="clearfix">
+			<div class="pull-left footer-left">
+				<p>
+					<a href="https://www.ubtob.com">开放平台</a><a href="https://account.ubtob.com/common/rules">法律条款</a><a href="teamwork">联系我们</a><a href="about">关于我们</a>
+				</p>
+				<p>版权所有:深圳市优软科技有限公司 Copyright @ 2017 All Rights Reserved</p>
+			</div>
+			<div class="pull-right footer-right">
+				<ul class="list-inline">
+					<li>
+						<div class="qrcode-tel">
+							<p>服务热线:</p>
+							<span>0755 - 26994808</span>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uu">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uu.png" width="80px" height="80px" alt="UU互联" />
+							</div>
+							<div class="qrcode-text">
+								<p>APP 下载</p>
+							</div>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uas">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uas.png" width="80px" height="80px" alt="优软公众号" />
+							</div>
+							<div class="qrcode-text">
+								<p>微信公众号</p>
+							</div>
+						</div>
+					</li>
+				</ul>
+			</div>
+		</div>
+	</div>
+</footer>
+<!-- footer end -->
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+</html>

+ 131 - 0
src/main/webapp/WEB-INF/views/normal/clientCase.html

@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软产城">
+	<meta name="Keywords" content="优软,产城,产城服务">
+	<link href="static/img/icon/icon.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet" href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/clientcase.css" />
+	<title>客户案例-优软产城</title>
+	<!--[if lt IE 9]>
+	<script src="static/lib/tool/html5shiv.min.js"></script>
+	<script src="static/lib/tool/respond.min.js"></script>
+	<![endif]-->
+</head>
+<body>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="https://www.usoftchina.com" id="logo"><img src="static/img/logo.png" height="14px" /> | <span>智慧产城</span></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<ul class="nav navbar-nav navbar-left">
+				<li><a href="index">首页</a></li>
+				<li><a href="cityServer">产城服务</a></li>
+				<li class="active"><a href="clientCase">客户案例</a></li>
+				<li><a href="news">新闻资讯</a></li>
+				<li><a href="teamwork">加盟合作</a></li>
+				<li><a href="about">关于我们</a></li></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-nologin">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li><a href="#" class="link-login">登录</a></li>
+				<li><a href="https://account.ubtob.com/sso/register">注册</a></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-login">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li class="dropdown">
+					<a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+				</li>
+				<li><a href="#" class="link-logout">退出</a></li>
+			</ul>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- header banner -->
+<header id="banner">
+	<div class="container">
+		<h4>智慧产城服务平台</h4>
+        <a href="/teamwork">加盟入驻</a>
+	</div>
+</header>
+
+<!-- section client -->
+<section id="client">
+	<div class="container">
+		<div class="top">
+			<h4>客户案例</h4>
+			<div class="top-img">
+				<img src="static/img/clientcase/clientcase1.png">
+				<div class="content">
+					<h5>潼湖科技小镇</h5>
+					<p>潼湖科技小镇位于深、惠、莞交界的中心位置,将借势良好的区位优势,对接粤港澳大湾区的世界级湾区经济的发展机遇,承接粤港澳的战略新兴产业转移,成为推动粤港澳大湾区建设的典范和珠三角经济飞速发展的新增长点。</p>
+					<p>潼湖科技小镇借助合作伙伴优软科技在移动互联、大数据及智慧城市等方面的领先优势,形成以物联网、移动互联及大数据为核心主导产业、智能控制、智能制造及科技服务为配套产业的发展平台</p>
+				</div>
+			</div>
+		</div>
+		<ul class="list-inline">
+			<li><a href="https://town.ubtob.com/"><img src="static/img/clientcase/clientcase2.png"></a></li>
+			<li><a href="teamwork"><img src="static/img/clientcase/clientcase3.png"></a></li>
+		</ul>
+	</div>
+</section>
+
+<!-- footer start -->
+<footer>
+	<div class="container">
+		<div class="clearfix">
+			<div class="pull-left footer-left">
+				<p>
+					<a href="https://www.ubtob.com">开放平台</a><a href="https://account.ubtob.com/common/rules">法律条款</a><a href="teamwork">联系我们</a><a href="about">关于我们</a>
+				</p>
+				<p>版权所有:深圳市优软科技有限公司 Copyright @ 2017 All Rights Reserved</p>
+			</div>
+			<div class="pull-right footer-right">
+				<ul class="list-inline">
+					<li>
+						<div class="qrcode-tel">
+							<p>服务热线:</p>
+							<span>0755 - 26994808</span>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uu">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uu.png" width="80px" height="80px" alt="UU互联" />
+							</div>
+							<div class="qrcode-text">
+								<p>APP 下载</p>
+							</div>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uas">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uas.png" width="80px" height="80px" alt="优软公众号" />
+							</div>
+							<div class="qrcode-text">
+								<p>微信公众号</p>
+							</div>
+						</div>
+					</li>
+				</ul>
+			</div>
+		</div>
+	</div>
+</footer>
+<!-- footer end -->
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+</html>

+ 110 - 0
src/main/webapp/WEB-INF/views/normal/default/404.html

@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="renderer" content="webkit">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta name="author" content="优软产城">
+    <meta name="Keywords" content="优软,产城,产城服务">
+    <link href="static/img/icon/icon.png" rel="icon" type="image/x-icon" />
+    <link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+    <link rel="stylesheet" href="static/lib/fontawesome/css/font-awesome.min.css" />
+    <link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+    <link rel="stylesheet" href="static/css/common.css" />
+    <link rel="stylesheet" href="static/css/404.css" />
+    <title>页面未找到-优软产城</title>
+    <!--[if lt IE 9]>
+    <script src="static/lib/tool/html5shiv.min.js"></script>
+    <script src="static/lib/tool/respond.min.js"></script>
+    <![endif]-->
+</head>
+<body>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+    <div class="container">
+        <div class="navbar-header">
+            <a href="https://www.usoftchina.com" id="logo"><img src="static/img/logo.png" height="14px" /> | <span>智慧产城</span></a>
+        </div>
+        <div class="collapse navbar-collapse">
+            <ul class="nav navbar-nav navbar-left">
+                <li><a href="index">首页</a></li>
+                <li><a href="cityServer">产城服务</a></li>
+                <li><a href="clientCase">客户案例</a></li>
+                <li><a href="news">新闻资讯</a></li>
+                <li><a href="teamwork">加盟合作</a></li>
+                <li><a href="about">关于我们</a></li></li>
+            </ul>
+            <ul class="nav navbar-nav navbar-right x-nologin">
+                <li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+                <li><a href="#" class="link-login">登录</a></li>
+                <li><a href="https://account.ubtob.com/sso/register">注册</a></li>
+            </ul>
+            <ul class="nav navbar-nav navbar-right x-login">
+                <li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+                <li class="dropdown">
+                    <a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+                </li>
+                <li><a href="#" class="link-logout">退出</a></li>
+            </ul>
+        </div>
+    </div>
+</nav>
+<!-- nav end -->
+
+<!-- section notFound -->
+<section id="notFound">
+    <div class="container text-center">
+        <p class="fa-not-found">{4<i class="fa fa-fire"></i>4} </p>
+        <h4>您要访问的请求不存在,您可以<a href="index">返回首页</a>!</h4>
+    </div>
+</section>
+
+<!-- footer start -->
+<footer>
+    <div class="container">
+        <div class="clearfix">
+            <div class="pull-left footer-left">
+                <p>
+                    <a href="https://www.ubtob.com">开放平台</a><a href="https://account.ubtob.com/common/rules">法律条款</a><a href="teamwork">联系我们</a><a href="about">关于我们</a>
+                </p>
+                <p>版权所有:深圳市优软科技有限公司 Copyright @ 2017 All Rights Reserved</p>
+            </div>
+            <div class="pull-right footer-right">
+                <ul class="list-inline">
+                    <li>
+                        <div class="qrcode-tel">
+                            <p>服务热线:</p>
+                            <span>0755 - 26994808</span>
+                        </div>
+                    </li>
+                    <li>
+                        <div class="qrcode qrcode-uu">
+                            <div class="qrcode-img">
+                                <img src="static/img/qrcode/uu.png" width="80px" height="80px" alt="UU互联" />
+                            </div>
+                            <div class="qrcode-text">
+                                <p>APP 下载</p>
+                            </div>
+                        </div>
+                    </li>
+                    <li>
+                        <div class="qrcode qrcode-uas">
+                            <div class="qrcode-img">
+                                <img src="static/img/qrcode/uas.png" width="80px" height="80px" alt="优软公众号" />
+                            </div>
+                            <div class="qrcode-text">
+                                <p>微信公众号</p>
+                            </div>
+                        </div>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </div>
+</footer>
+<!-- footer end -->
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+</html>

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

@@ -0,0 +1,214 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软产城">
+	<meta name="Keywords" content="优软,产城,产城服务">
+	<link href="static/img/icon/icon.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet" href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/index.css" />
+	<title>首页-优软产城</title>
+	<!--[if lt IE 9]>
+	<script src="static/lib/tool/html5shiv.min.js"></script>
+	<script src="static/lib/tool/respond.min.js"></script>
+	<![endif]-->
+</head>
+<body>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="https://www.usoftchina.com" id="logo"><img src="static/img/logo.png" height="14px" /> | <span>智慧产城</span></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<ul class="nav navbar-nav navbar-left">
+				<li class="active"><a href="index">首页</a></li>
+				<li><a href="cityServer">产城服务</a></li>
+				<li><a href="clientCase">客户案例</a></li>
+				<li><a href="news">新闻资讯</a></li>
+				<li><a href="teamwork">加盟合作</a></li>
+				<li><a href="about">关于我们</a></li></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-nologin">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li><a href="#" class="link-login">登录</a></li>
+				<li><a href="https://account.ubtob.com/sso/register">注册</a></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-login">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li class="dropdown">
+					<a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+				</li>
+				<li><a href="#" class="link-logout">退出</a></li>
+			</ul>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- header banner -->
+<header id="banner">
+	<div class="container">
+		<h4>智慧园区生活</h4>
+		<p class="fa-not-found">优软科技、碧桂园联手打造</p>
+		<p class="fa-not-found">新一代信息技术支撑、知识社会创新2.0环境下的城市形态</p>
+
+	</div>
+</header>
+
+<!-- section serve -->
+<section id="serve">
+	<div class="container text-center">
+		<div class="head">
+			<h4>产城服务</h4>
+		</div>
+		<ul class="list-inline">
+			<li class="item">
+				<img src="static/img/home/serve1.png">
+				<h5>大数据招商</h5>
+				<p>行业企业数据挖掘,精准定位意向企业<br/> 门户与内部CRM系统联动,对企业进行全程跟踪</p>
+			</li>
+			<li class="item">
+				<img src="static/img/home/serve2.png">
+				<h5>企业云管理服务</h5>
+				<p>提升园区企业管理效率的利器</p>
+			</li>
+			<li class="item">
+				<img src="static/img/home/serve3.png">
+				<h5>产业价值链服务</h5>
+				<p>提升园区企业与合作伙伴协作效率<br/> 促进产业发展</p>
+			</li>
+		</ul>
+	</div>
+</section>
+
+<!-- section news -->
+<section id="news">
+	<div class="container">
+		<div class="head">
+			<h4>新闻动态</h4>
+		</div>
+		<ul class="list-inline">
+			<li id="companyDynamic">
+				<!--<h5>优软快讯</h5>-->
+				<!--<div class="content">-->
+					<!--<a href="">-->
+						<!--<img src="static/img/home/client1.png" alt="">-->
+						<!--<p>盛必达—英唐优软云UAS启动大会</p>-->
+					<!--</a>-->
+				<!--</div>-->
+				<!--<a>明年高性能第四代DRAM存储器芯片面市</a>-->
+				<!--<a>明年高性能第四代DRAM存储器芯片面市</a>-->
+			</li>
+			<li id="Wisdomproducingcity">
+				<!--<h5>国家政策</h5>-->
+				<!--<div class="content">-->
+					<!--<img src="static/img/home/client1.png" alt="">-->
+					<!--<p>全国十九大顺利召开,最新资讯报道</p>-->
+				<!--</div>-->
+				<!--<a>明年高性能第四代DRAM存储器芯片面市</a>-->
+				<!--<a>明年高性能第四代DRAM存储器芯片面市</a>-->
+			</li>
+			<li id="tradeNews">
+				<!--<h5>行业动态</h5>-->
+				<!--<div class="content">-->
+					<!--<img src="static/img/home/client1.png" alt="">-->
+					<!--<p>明年高性能第四代DRAM存储器芯片面市</p>-->
+				<!--</div>-->
+				<!--<a>明年高性能第四代DRAM存储器芯片面市</a>-->
+				<!--<a>明年高性能第四代DRAM存储器芯片面市</a>-->
+			</li>
+		</ul>
+	</div>
+</div>
+</section>
+
+<!-- section client -->
+<section id="client">
+	<div class="container">
+		<div class="top">
+			<h4>产城服务</h4>
+			<div class="top-img">
+				<img src="static/img/home/client1.png">
+				<div class="content">
+					<h5>潼湖科技小镇</h5>
+					<p>潼湖科技小镇位于深、惠、莞交界的中心位置,将借势良好的区位优势,对接粤港澳大湾区的世界级湾区经济的发展机遇,承接粤港澳的战略新兴产业转移,成为推动粤港澳大湾区建设的典范和珠三角经济飞速发展的新增长点。</p>
+					<p>潼湖科技小镇借助合作伙伴优软科技在移动互联、大数据及智慧城市等方面的领先优势,形成以物联网、移动互联及大数据为核心主导产业、智能控制、智能制造及科技服务为配套产业的发展平台</p>
+				</div>
+			</div>
+		</div>
+		<ul class="list-inline">
+			<li><a href="https://town.ubtob.com/"><img src="static/img/home/client2.png"></a></li>
+			<li><a href="teamwork"><img src="static/img/home/client3.png"></a></li>
+		</ul>
+	</div>
+</section>
+
+<!-- section partner -->
+<section id="partner">
+	<div class="container text-center">
+		<div class="head">
+			<h4>合作伙伴</h4>
+		</div>
+		<div class="info">
+			<p>优软始终致力于创造和谐共赢的生态环境,与多家公司有着良好的合作关系</p>
+			<img src="static/img/home/partner1.png">
+		</div>
+	</div>
+</section>
+
+<!-- footer start -->
+<footer>
+	<div class="container">
+		<div class="clearfix">
+			<div class="pull-left footer-left">
+				<p>
+					<a href="https://www.ubtob.com">开放平台</a><a href="https://account.ubtob.com/common/rules">法律条款</a><a href="teamwork">联系我们</a><a href="about">关于我们</a>
+				</p>
+				<p>版权所有:深圳市优软科技有限公司 Copyright @ 2017 All Rights Reserved</p>
+			</div>
+			<div class="pull-right footer-right">
+				<ul class="list-inline">
+					<li>
+						<div class="qrcode-tel">
+							<p>服务热线:</p>
+							<span>0755 - 26994808</span>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uu">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uu.png" width="80px" height="80px" alt="UU互联" />
+							</div>
+							<div class="qrcode-text">
+								<p>APP 下载</p>
+							</div>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uas">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uas.png" width="80px" height="80px" alt="优软公众号" />
+							</div>
+							<div class="qrcode-text">
+								<p>微信公众号</p>
+							</div>
+						</div>
+					</li>
+				</ul>
+			</div>
+		</div>
+	</div>
+</footer>
+<!-- footer end -->
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+<script type="text/javascript" src="static/js/index.js"></script>
+</html>

+ 149 - 0
src/main/webapp/WEB-INF/views/normal/intoCity.html

@@ -0,0 +1,149 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软产城">
+	<meta name="Keywords" content="优软,产城,产城服务">
+	<link href="static/img/icon/icon.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet" href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/intocity.css" />
+	<title>进入产城-优软产城</title>
+	<!--[if lt IE 9]>
+	<script src="static/lib/tool/html5shiv.min.js"></script>
+	<script src="static/lib/tool/respond.min.js"></script>
+	<![endif]-->
+</head>
+<body>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="https://www.usoftchina.com" id="logo"><img src="static/img/logo.png" height="14px" /> | <span>智慧产城</span></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<ul class="nav navbar-nav navbar-left">
+				<li><a href="index">首页</a></li>
+				<li><a href="cityServer">产城服务</a></li>
+				<li><a href="clientCase">客户案例</a></li>
+				<li><a href="news">新闻资讯</a></li>
+				<li><a href="teamwork">加盟合作</a></li>
+				<li><a href="about">关于我们</a></li></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-nologin">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li><a href="#" class="link-login">登录</a></li>
+				<li><a href="https://account.ubtob.com/sso/register">注册</a></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-login">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li class="dropdown">
+					<a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+				</li>
+				<li><a href="#" class="link-logout">退出</a></li>
+			</ul>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- section serve -->
+<section id="into">
+	<div class="container">
+		<div class="head">
+			<h4>产城服务</h4>
+		</div>
+		<div class="info-content">
+			<ul class="list-unstyled">
+				<li class="item">
+					<span>默认产城</span>
+					<input type="text" placeholder="潼湖科技小镇" class="form-control">
+					<a href="">选择</a>
+				</li>
+				<li class="item">
+					<span>推荐产城</span>
+					<input type="text" placeholder="潼湖科技小镇" class="form-control">
+				</li>
+				<li class="item">
+					<span>所在地区</span>
+					<input type="radio" >惠州
+					<input type="radio" >深圳
+				</li>
+			</ul>
+		</div>
+		<div class="select-into">
+			<div class="option-into">
+				<div class="title">
+					<h5>惠州市</h5>
+				</div>
+				<ul class="list-inline">
+					<li><a href="">打的科技小镇</a></li>
+					<li><a href="">打的科技小镇</a></li>
+				</ul>
+			</div>
+			<div class="option-into">
+				<div class="title">
+					<h5>深圳市</h5>
+				</div>
+				<ul class="list-inline">
+					<li><a href="">打的科技小镇</a></li>
+					<li><a href="">打的科技小镇</a></li>
+				</ul>
+			</div>
+		</div>
+	</div>
+</section>
+
+<!-- footer start -->
+<footer>
+	<div class="container">
+		<div class="clearfix">
+			<div class="pull-left footer-left">
+				<p>
+					<a href="https://www.ubtob.com">开放平台</a><a href="https://account.ubtob.com/common/rules">法律条款</a><a href="teamwork">联系我们</a><a href="about">关于我们</a>
+				</p>
+				<p>版权所有:深圳市优软科技有限公司 Copyright @ 2017 All Rights Reserved</p>
+			</div>
+			<div class="pull-right footer-right">
+				<ul class="list-inline">
+					<li>
+						<div class="qrcode-tel">
+							<p>服务热线:</p>
+							<span>0755 - 26994808</span>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uu">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uu.png" width="80px" height="80px" alt="UU互联" />
+							</div>
+							<div class="qrcode-text">
+								<p>APP 下载</p>
+							</div>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uas">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uas.png" width="80px" height="80px" alt="优软公众号" />
+							</div>
+							<div class="qrcode-text">
+								<p>微信公众号</p>
+							</div>
+						</div>
+					</li>
+				</ul>
+			</div>
+		</div>
+	</div>
+</footer>
+<!-- footer end -->
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+</html>

+ 160 - 0
src/main/webapp/WEB-INF/views/normal/newList.html

@@ -0,0 +1,160 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软产城">
+	<meta name="Keywords" content="优软,产城,产城服务">
+	<link href="static/img/icon/icon.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet" href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/news.css" />
+	<title>新闻资讯-优软产城</title>
+	<!--[if lt IE 9]>
+	<script src="static/lib/tool/html5shiv.min.js"></script>
+	<script src="static/lib/tool/respond.min.js"></script>
+	<![endif]-->
+</head>
+<body>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="https://www.usoftchina.com" id="logo"><img src="static/img/logo.png" height="14px" /> | <span>智慧产城</span></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<ul class="nav navbar-nav navbar-left">
+				<li><a href="index">首页</a></li>
+				<li><a href="cityServer">产城服务</a></li>
+				<li><a href="clientCase">客户案例</a></li>
+				<li class="active"><a href="news">新闻资讯</a></li>
+				<li><a href="teamwork">加盟合作</a></li>
+				<li><a href="about">关于我们</a></li></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-nologin">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li><a href="#" class="link-login">登录</a></li>
+				<li><a href="https://account.ubtob.com/sso/register">注册</a></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-login">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li class="dropdown">
+					<a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+				</li>
+				<li><a href="#" class="link-logout">退出</a></li>
+			</ul>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- header banner -->
+<header id="banner">
+	<div class="container">
+		<h4>新闻中心</h4>
+		<span>NEWS INFORMATION</span>
+	</div>
+</header>
+
+<!-- section serve -->
+<section id="news">
+	<div class="container">
+		<div class="news-list">
+			<div class="head">
+				<ul class="list-inline">
+					<li class="active"><span>热点新闻</span></li>
+				</ul>
+			</div>
+			<div class="title" id="titleList">
+				<!--<a href="" class="list">-->
+				<!--<p>45324543eeeeeeeeeeeeeeeeeeeee2543543</p>-->
+				<!--<span>5432</span>-->
+				<!--<span>98</span>-->
+				<!--</a>-->
+			</div>
+		</div>
+		<div class="news-content">
+			<div class="head">
+				<ul class="list-inline">
+					<li class="active"><a href="companyDynamic">优软快讯</a></li>
+					<li><a href="Wisdomproducingcity">国家政策</a></li>
+					<li><a href="tradeNews">行业动态</a></li>
+				</ul>
+			</div>
+			<div class="group" id="group">
+				<!--<a class="item">-->
+				<!--<div class="item-left">-->
+				<!--<div class="date-time">-->
+				<!--<p>14</p>-->
+				<!--<p>AUG</p>-->
+				<!--</div>-->
+				<!--<div class="img">-->
+				<!--<img src="static/img/home/banner.png">-->
+				<!--</div>-->
+				<!--</div>-->
+				<!--<div class="item-right">-->
+				<!--<p>从电报到5G 从甚低频到太赫兹 细数无线电频谱发展史:left;</p>-->
+				<!--<span>从电报到5G 从甚低从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹频到太赫兹 细数无线电频谱发展史</span>-->
+				<!--<span>324</span>-->
+				<!--</div>-->
+				<!--</a>-->
+			</div>
+			<div id="page" class="pagination"></div>
+		</div>
+	</div>
+</section>
+
+<!-- footer start -->
+<footer>
+	<div class="container">
+		<div class="clearfix">
+			<div class="pull-left footer-left">
+				<p>
+					<a href="https://www.ubtob.com">开放平台</a><a href="https://account.ubtob.com/common/rules">法律条款</a><a href="teamwork">联系我们</a><a href="about">关于我们</a>
+				</p>
+				<p>版权所有:深圳市优软科技有限公司 Copyright @ 2017 All Rights Reserved</p>
+			</div>
+			<div class="pull-right footer-right">
+				<ul class="list-inline">
+					<li>
+						<div class="qrcode-tel">
+							<p>服务热线:</p>
+							<span>0755 - 26994808</span>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uu">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uu.png" width="80px" height="80px" alt="UU互联" />
+							</div>
+							<div class="qrcode-text">
+								<p>APP 下载</p>
+							</div>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uas">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uas.png" width="80px" height="80px" alt="优软公众号" />
+							</div>
+							<div class="qrcode-text">
+								<p>微信公众号</p>
+							</div>
+						</div>
+					</li>
+				</ul>
+			</div>
+		</div>
+	</div>
+</footer>
+<!-- footer end -->
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/lib/jquery/jqpaginator.min.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+<script type="text/javascript" src="static/js/news.js"></script>
+</html>

+ 173 - 0
src/main/webapp/WEB-INF/views/normal/news.html

@@ -0,0 +1,173 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软产城">
+	<meta name="Keywords" content="优软,产城,产城服务">
+	<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+	<script>
+		if(window.location.href.indexOf('/news/') > 0) {
+			$('meta[name="Keywords"]').append('<base href="../" />');
+		}
+	</script>
+	<link href="static/img/icon/icon.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet" href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/news.css" />
+	<title>新闻资讯-优软产城</title>
+	<!--[if lt IE 9]>
+	<script src="static/lib/tool/html5shiv.min.js"></script>
+	<script src="static/lib/tool/respond.min.js"></script>
+	<![endif]-->
+</head>
+<body>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="https://www.usoftchina.com" id="logo"><img src="static/img/logo.png" height="14px" /> | <span>智慧产城</span></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<ul class="nav navbar-nav navbar-left">
+				<li><a href="index">首页</a></li>
+				<li><a href="cityServer">产城服务</a></li>
+				<li><a href="clientCase">客户案例</a></li>
+				<li class="active"><a href="news">新闻资讯</a></li>
+				<li><a href="teamwork">加盟合作</a></li>
+				<li><a href="about">关于我们</a></li></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-nologin">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li><a href="#" class="link-login">登录</a></li>
+				<li><a href="https://account.ubtob.com/sso/register">注册</a></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-login">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li class="dropdown">
+					<a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+				</li>
+				<li><a href="#" class="link-logout">退出</a></li>
+			</ul>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- header banner -->
+<header id="banner">
+	<div class="container">
+		<h4>新闻中心</h4>
+		<span>NEWS INFORMATION</span>
+	</div>
+</header>
+
+<!-- section serve -->
+<section id="news">
+	<div class="container">
+		<div class="news-list">
+			<div class="head">
+				<ul class="list-inline">
+					<li class="active"><a>热点新闻</a></li>
+				</ul>
+			</div>
+			<div class="title" id="titleList">
+				<!--<a href="" class="list">-->
+					<!--<p>45324543eeeeeeeeeeeeeeeeeeeee2543543</p>-->
+					<!--<span>5432</span>-->
+					<!--<span>98</span>-->
+				<!--</a>-->
+			</div>
+		</div>
+		<div class="news-content">
+			<div class="head">
+				<ul class="list-inline">
+					<li class="active"><a href="companyDynamic">优软快讯</a></li>
+					<li><a href="Wisdomproducingcity">国家政策</a></li>
+					<li><a href="tradeNews">行业动态</a></li>
+				</ul>
+			</div>
+			<div class="group" id="group">
+				<!--列表部分-->
+				<!--<a class="item">-->
+					<!--<div class="item-left">-->
+						<!--<div class="date-time">-->
+							<!--<p>14</p>-->
+							<!--<p>AUG</p>-->
+						<!--</div>-->
+						<!--<div class="img">-->
+							<!--<img src="static/img/home/banner.png">-->
+						<!--</div>-->
+					<!--</div>-->
+					<!--<div class="item-right">-->
+						<!--<p>从电报到5G 从甚低频到太赫兹 细数无线电频谱发展史:left;</p>-->
+						<!--<span>从电报到5G 从甚低从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹从甚低频到太赫兹频到太赫兹 细数无线电频谱发展史</span>-->
+						<!--<span>324</span>-->
+					<!--</div>-->
+				<!--</a>-->
+
+				<!--详情部分-->
+
+				<div class="details">
+					<h4></h4>
+					<span></span> <span></span>
+				</div>
+			</div>
+			<div id="page" class="pagination"></div>
+		</div>
+	</div>
+</section>
+
+<!-- footer start -->
+<footer>
+	<div class="container">
+		<div class="clearfix">
+			<div class="pull-left footer-left">
+				<p>
+					<a href="https://www.ubtob.com">开放平台</a><a href="https://account.ubtob.com/common/rules">法律条款</a><a href="teamwork">联系我们</a><a href="about">关于我们</a>
+				</p>
+				<p>版权所有:深圳市优软科技有限公司 Copyright @ 2017 All Rights Reserved</p>
+			</div>
+			<div class="pull-right footer-right">
+				<ul class="list-inline">
+					<li>
+						<div class="qrcode-tel">
+							<p>服务热线:</p>
+							<span>0755 - 26994808</span>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uu">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uu.png" width="80px" height="80px" alt="UU互联" />
+							</div>
+							<div class="qrcode-text">
+								<p>APP 下载</p>
+							</div>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uas">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uas.png" width="80px" height="80px" alt="优软公众号" />
+							</div>
+							<div class="qrcode-text">
+								<p>微信公众号</p>
+							</div>
+						</div>
+					</li>
+				</ul>
+			</div>
+		</div>
+	</div>
+</footer>
+<!-- footer end -->
+</body>
+<script type="text/javascript" src="static/lib/jquery/jqpaginator.min.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+<script type="text/javascript" src="static/js/news.js"></script>
+</html>

+ 157 - 0
src/main/webapp/WEB-INF/views/normal/teamwork.html

@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软产城">
+	<meta name="Keywords" content="优软,产城,产城服务">
+	<link href="static/img/icon/icon.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet" href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/teamwork.css" />
+	<title>加盟合作-优软产城</title>
+	<!--[if lt IE 9]>
+	<script src="static/lib/tool/html5shiv.min.js"></script>
+	<script src="static/lib/tool/respond.min.js"></script>
+	<![endif]-->
+</head>
+<body>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="https://www.usoftchina.com" id="logo"><img src="static/img/logo.png" height="14px" /> | <span>智慧产城</span></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<ul class="nav navbar-nav navbar-left">
+				<li><a href="index">首页</a></li>
+				<li><a href="cityServer">产城服务</a></li>
+				<li><a href="clientCase">客户案例</a></li>
+				<li><a href="news">新闻资讯</a></li>
+				<li  class="active"><a href="teamwork">加盟合作</a></li>
+				<li><a href="about">关于我们</a></li></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-nologin">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li><a href="#" class="link-login">登录</a></li>
+				<li><a href="https://account.ubtob.com/sso/register">注册</a></li>
+			</ul>
+			<ul class="nav navbar-nav navbar-right x-login">
+				<li><a href="https://town.ubtob.com/"><img src="static/img/icon/icon.png">&nbsp;&nbsp;进入产城</a></li>
+				<li class="dropdown">
+					<a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+				</li>
+				<li><a href="#" class="link-logout">退出</a></li>
+			</ul>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- header banner -->
+<header id="banner">
+	<div class="container">
+		<h4>产城加盟合作流程</h4>
+		<p>如有加盟合作意愿,请按下方流程与我们联系。</p>
+	</div>
+</header>
+
+<!-- section step -->
+<section id="step">
+	<div class="container text-center">
+		<ul class="list-inline">
+			<li class="item">
+				<img src="static/img/teamwork/step1.png">
+				<span>1. 了解业务</span>
+				<a href="https://account.ubtob.com/sso/register">注册</a>
+			</li>
+			<li class="item">
+				<img src="static/img/teamwork/step2.png">
+				<span>2. 线下联系沟通</span>
+			</li>
+			<li class="item">
+				<img src="static/img/teamwork/step3.png">
+				<span>3. 实地考察了解</span>
+			</li>
+			<li class="item">
+				<img src="static/img/teamwork/step4.png">
+				<span>4. 确认加盟签约</span>
+			</li>
+			<li class="item">
+				<img src="static/img/teamwork/step5.png">
+				<span>5. 个性化需求开发</span>
+			</li>
+		</ul>
+	</div>
+</section>
+
+<!-- section  touch-->
+<section id="touch">
+	<div class="container">
+		<div class="content">
+			<h5>联系方式</h5>
+			<p>总机:0755 - 26994749</p>
+			<p>合作加盟:13530985050(陈先生)</p>
+			<p>售前:0755-26994808</p>
+			<p>售后:400 - 830 - 1818</p>
+			<p>邮箱:sa@usoftchina.com</p>
+			<p>地址:深圳市南山区高新技术产业园科技南五路英唐大厦6楼</p>
+		</div>
+		<div id="map" class="map"></div>
+	</div>
+</section>
+
+<!-- footer start -->
+<footer>
+	<div class="container">
+		<div class="clearfix">
+			<div class="pull-left footer-left">
+				<p>
+					<a href="https://www.ubtob.com">开放平台</a><a href="https://account.ubtob.com/common/rules">法律条款</a><a href="teamwork">联系我们</a><a href="about">关于我们</a>
+				</p>
+				<p>版权所有:深圳市优软科技有限公司 Copyright @ 2017 All Rights Reserved</p>
+			</div>
+			<div class="pull-right footer-right">
+				<ul class="list-inline">
+					<li>
+						<div class="qrcode-tel">
+							<p>服务热线:</p>
+							<span>0755 - 26994808</span>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uu">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uu.png" width="80px" height="80px" alt="UU互联" />
+							</div>
+							<div class="qrcode-text">
+								<p>APP 下载</p>
+							</div>
+						</div>
+					</li>
+					<li>
+						<div class="qrcode qrcode-uas">
+							<div class="qrcode-img">
+								<img src="static/img/qrcode/uas.png" width="80px" height="80px" alt="优软公众号" />
+							</div>
+							<div class="qrcode-text">
+								<p>微信公众号</p>
+							</div>
+						</div>
+					</li>
+				</ul>
+			</div>
+		</div>
+	</div>
+</footer>
+<!-- footer end -->
+</body>
+<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.4&key=8eaaf6ef4574f615dd6369cb1117ca4b"></script>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+<script type="text/javascript" src="static/js/teamwork.js"></script>
+</html>

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

@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	version="3.0"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-app_3_0.xsd">
+  <display-name>platform-city</display-name>
+  <description>The project of the platform-city.</description>
+  
+  <context-param>
+		<param-name>webAppRootKey</param-name>
+		<param-value>spring.webapp.platform.city</param-value>
+	</context-param>
+	<context-param>
+		<param-name>spring.profiles.active</param-name>
+		<param-value>production</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jConfigLocation</param-name>
+		<param-value>/WEB-INF/log4j.properties</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jRefreshInterval</param-name>
+		<param-value>60000</param-value>
+	</context-param>
+	<context-param>
+		<param-name>contextConfigLocation</param-name>
+		<param-value>classpath*:spring/applicationContext.xml</param-value>
+	</context-param>
+	
+	<!-- filters -->
+	<filter>
+		<filter-name>CharacterEncodingFilter</filter-name>
+		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
+		<async-supported>true</async-supported>
+		<init-param>
+			<param-name>encoding</param-name>
+			<param-value>UTF-8</param-value>
+		</init-param>
+		<init-param>
+			<param-name>forceEncoding</param-name>
+			<param-value>true</param-value>
+		</init-param>
+	</filter>
+	<filter-mapping>
+		<filter-name>CharacterEncodingFilter</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+
+	<filter>
+		<filter-name>HttpMethodFilter</filter-name>
+		<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>HttpMethodFilter</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<!-- Spring device resolver -->
+	<filter>
+		<filter-name>deviceResolverRequestFilter</filter-name>
+		<filter-class>org.springframework.mobile.device.DeviceResolverRequestFilter</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	
+	<filter-mapping>
+		<filter-name>deviceResolverRequestFilter</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<!-- Handles Spring requests -->
+	<servlet>
+		<servlet-name>spring-mvc-dispatcher</servlet-name>
+		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+		<init-param>
+			<param-name>contextConfigLocation</param-name>
+			<param-value>/WEB-INF/webmvc.xml</param-value>
+		</init-param>
+		<load-on-startup>1</load-on-startup>
+		<async-supported>true</async-supported>
+	</servlet>
+	<servlet-mapping>
+		<servlet-name>spring-mvc-dispatcher</servlet-name>
+		<url-pattern>/</url-pattern>
+	</servlet-mapping>
+	
+	<!-- Creates the Spring Container shared by all Servlets and Filters -->
+	<listener>
+		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+	</listener>
+	<listener>
+		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
+	</listener>
+	<!-- Spring localization -->
+	<listener>
+		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
+	</listener>
+	
+	<!-- 404 page -->
+	<error-page>  
+        <error-code>404</error-code>  
+        <location>/WEB-INF/views/normal/default/404.html</location>  
+    </error-page>
+</web-app>

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

@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
+
+	<mvc:annotation-driven>
+		<mvc:message-converters register-defaults="true">
+			<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
+			<bean id="fastJsonHttpMessageConverter"
+				class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
+				<property name="supportedMediaTypes">
+					<list>
+						<value>application/json;charset=UTF-8</value>
+					</list>
+				</property>
+				<property name="features">
+					<list>
+						<value>DisableCircularReferenceDetect</value>
+					</list>
+				</property>
+			</bean>
+		</mvc:message-converters>
+	</mvc:annotation-driven>
+
+	<mvc:default-servlet-handler />
+	<mvc:resources mapping="/static/**" location="/resources/" />
+	<mvc:resources mapping="/news/static/**" location="/resources/"/>
+
+	<context:component-scan base-package="com.uas.platform.city.controller" />
+
+	<bean
+		class="org.springframework.mobile.device.view.LiteDeviceDelegatingViewResolver">
+		<constructor-arg>
+			<bean
+				class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+				<property name="prefix" value="/WEB-INF/views/" />
+				<property name="suffix" value=".html" />
+				<property name="contentType" value="text/html;charset=UTF-8" />
+			</bean>
+		</constructor-arg>
+		<property name="normalPrefix" value="normal/" />
+		<property name="mobilePrefix" value="mobile/" />
+		<property name="tabletPrefix" value="mobile/" />
+	</bean>
+
+	<mvc:view-controller path="/" view-name="index" />
+	<mvc:view-controller path="/index" view-name="index" />
+	<mvc:view-controller path="/signin" view-name="index" />
+	<mvc:view-controller path="/about" view-name="about" />
+	<mvc:view-controller path="/cityServer" view-name="cityServer" />
+	<mvc:view-controller path="/clientCase" view-name="clientCase" />
+	<mvc:view-controller path="/intoCity" view-name="intoCity" />
+	<mvc:view-controller path="/news/{id}" view-name="news" />
+	<mvc:view-controller path="/news" view-name="news" />
+	<mvc:view-controller path="/teamwork" view-name="teamwork" />
+	<!--<mvc:view-controller path="/baidu_verify_R20eMUl3BB.html" view-name="baidu_verify_R20eMUl3BB" />-->
+
+	<mvc:interceptors>
+		<!-- SSO过滤 -->
+		<mvc:interceptor>
+			<mvc:mapping path="/**"></mvc:mapping>
+			<bean class="com.uas.platform.city.web.filter.SSOInterceptor"></bean>
+		</mvc:interceptor>
+	</mvc:interceptors>
+
+</beans>

+ 12 - 0
src/main/webapp/resources/css/404.css

@@ -0,0 +1,12 @@
+
+#notFound {
+	padding: 300px 0 400px;
+	background: #000;
+	margin-top:-70px;
+}
+
+#notFound .fa-not-found {
+	margin-bottom: 30px;
+	font-size: 50px;
+	font-family: "Comic Sans MS";
+}

+ 117 - 0
src/main/webapp/resources/css/about.css

@@ -0,0 +1,117 @@
+#nav {
+  background: #000!important;
+  opacity: 1!important;
+}
+#presentation {
+  height: 600px;
+  margin-top: 70px;
+}
+#presentation .head {
+  padding-top: 65px;
+  background: url(../img/about/pic.png) no-repeat bottom right;
+}
+#presentation .head h4 {
+  font-size: 36px;
+  color: #000;
+  margin: 0;
+  margin-bottom: 60px;
+}
+#presentation .head h4 span {
+  font-weight: bold;
+  color: #cb2329;
+}
+#presentation .head p {
+  width: 720px;
+  color: #787878;
+  margin-bottom: 30px;
+  line-height: 25px;
+}
+#presentation .head a {
+  display: block;
+  width: 120px;
+  height: 40px;
+  line-height: 38px;
+  text-align: center;
+  font-size: 16px;
+  color: #0094be;
+  border: 1px solid #0094be;
+  text-decoration: none;
+}
+#tabs .head h4 {
+  color: #474747;
+  font-size: 24px;
+  margin-bottom: 35px;
+}
+#tabs .tab {
+  height: 400px;
+  margin-bottom: 85px;
+  box-shadow: 0 0 18px rgba(0, 0, 0, 0.2);
+}
+#tabs .tab ul {
+  display: inline-block;
+  list-style: none;
+  width: 240px;
+  height: 100%;
+  padding: 0;
+  border-right: 1px solid #dcdcdc;
+  margin: 0;
+}
+#tabs .tab ul li.active,
+#tabs .tab ul li:hover {
+  position: relative;
+  right: -1px;
+  z-index: 1000;
+}
+#tabs .tab ul li.active a,
+#tabs .tab ul li:hover a {
+  cursor: pointer;
+  border-left: 6px solid #00e8e5;
+  border-right: 1px solid #fff;
+  margin-left: -1px;
+}
+#tabs .tab ul li a {
+  display: block;
+  border-bottom: 1px solid #dcdcdc;
+  border-left: 6px solid transparent;
+  height: 70px;
+  line-height: 70px;
+  color: #000;
+  font-weight: bold;
+  font-size: 18px;
+  padding-left: 26px;
+  text-decoration: none;
+}
+#tabs .tab .count {
+  position: relative;
+  display: inline-block;
+  vertical-align: top;
+}
+#tabs .tab .count .step1,
+#tabs .tab .count .step2,
+#tabs .tab .count .step3 {
+  display: none;
+  position: absolute;
+  top: 28px;
+  left: 28px;
+  width: 880px;
+  height: 350px;
+}
+#tabs .tab .count .show {
+  display: block!important;
+}
+#tabs .tab .count p {
+  color: #464646;
+  margin-bottom: 30px;
+  line-height: 25px;
+}
+#tabs .tab .count a {
+  display: block;
+  width: 120px;
+  height: 40px;
+  line-height: 38px;
+  text-align: center;
+  font-size: 16px;
+  color: #0094be;
+  border: 1px solid #0094be;
+  text-decoration: none;
+}

+ 121 - 0
src/main/webapp/resources/css/about.less

@@ -0,0 +1,121 @@
+#nav{
+	background: #000!important;
+	opacity: 1!important;
+}
+
+// presentation
+#presentation{
+	height:600px;
+	margin-top:70px;
+	.head{
+		padding-top:65px;
+		background: url(../img/about/pic.png)no-repeat bottom right;
+		h4{
+			font-size: 36px;
+			color:#000;
+			margin:0;
+			margin-bottom:60px;
+			span{
+				font-weight: bold;
+				color:#cb2329;
+			}
+		}
+		p{
+			width:720px;
+			color:#787878;
+			margin-bottom:30px;
+			line-height:25px;
+		}
+		a{
+			display:block;
+			width:120px;
+			height:40px;
+			line-height: 38px;
+			text-align: center;
+			font-size: 16px;
+			color:#0094be;
+			border: 1px solid #0094be;
+			text-decoration: none;
+		}
+	}
+}
+
+// tabs
+#tabs{
+	.head{
+		h4{
+			color:#474747;
+			font-size: 24px;
+			margin-bottom:35px;
+		}
+	}
+	.tab{
+		height:400px;
+		margin-bottom:85px;
+		box-shadow: 0 0 18px rgba(0,0,0,.2);
+		ul{
+			display:inline-block;
+			list-style: none;
+			width:240px;
+			height:100%;
+			padding:0;
+			border-right:1px solid #dcdcdc;
+			margin:0;
+			li{
+				&.active,&:hover{
+					position:relative;
+					right:-1px;
+					z-index:1000;
+					a{
+						cursor:pointer;
+						border-left:6px solid #00e8e5;
+						border-right:1px solid #fff;
+						margin-left:-1px;
+					}
+				}
+				a{
+					display:block;
+					border-bottom:1px solid #dcdcdc;
+					border-left:6px solid transparent;
+					height:70px;
+					line-height: 70px;
+					color:#000;
+					font-weight: bold;
+					font-size: 18px;
+					padding-left:26px;
+					text-decoration: none;
+				}
+			}
+		}
+		.count{
+			position:relative;
+			display:inline-block;
+			vertical-align: top;
+			.step1,.step2,.step3{
+				display:none;
+				position:absolute;
+				top:28px;
+				left:28px;
+				width:880px;
+				height:350px;
+			}
+			.show{display:block!important;}
+			p{
+				color:#464646;
+				margin-bottom:30px;
+				line-height: 25px;
+			}
+			a{
+				display:block;
+				width:120px;
+				height:40px;
+				line-height: 38px;
+				text-align: center;
+				font-size: 16px;
+				color:#0094be;
+				border: 1px solid #0094be;
+				text-decoration: none;
+			}
+		}
+	}
+}

+ 77 - 0
src/main/webapp/resources/css/clientcase.css

@@ -0,0 +1,77 @@
+/* header */
+header {
+  height: 400px;
+  background: url(../img/clientcase/banner.png) no-repeat;
+  text-align: center;
+}
+header h4 {
+  padding-top: 174px;
+  font-size: 48px;
+  color: #fff;
+  font-weight: bold;
+  margin-top: 0;
+  margin-bottom: 60px;
+}
+header a {
+  margin: 0 auto;
+  display: block;
+  width: 160px;
+  height: 44px;
+  line-height: 42px;
+  text-align: center;
+  font-size: 18px;
+  color: #fff;
+  border: 1px solid #fff;
+}
+header a:hover {
+  text-decoration: none;
+  cursor: pointer;
+  color: #00e8e5;
+  border: 1px solid #00e8e5;
+}
+#client {
+  background: #fff;
+  height: 750px;
+  padding-top: 50px;
+}
+#client .top {
+  background: #f1f1f1;
+  padding-top: 40px;
+  margin-bottom: 40px;
+  height: 432px;
+}
+#client .top h4 {
+  font-size: 30px;
+  color: #1e1e1e;
+  font-weight: bold;
+  margin-bottom: 45px;
+  text-align: center;
+}
+#client .top .top-img img {
+  display: inline-block;
+  margin: 0 40px;
+  padding: 0;
+  width: 470px;
+  height: 270px;
+  vertical-align: top;
+}
+#client .top .top-img .content {
+  display: inline-block;
+  width: 560px;
+}
+#client .top .top-img .content h5 {
+  color: #1e1e1e;
+  font-size: 18px;
+  margin-bottom: 20px;
+  padding-left: 30px;
+}
+#client .top .top-img .content p {
+  color: #797979;
+  text-indent: 2em;
+}
+#client ul li {
+  margin-right: 20px;
+}
+#client ul li:last-child {
+  margin-right: 0;
+}

+ 83 - 0
src/main/webapp/resources/css/clientcase.less

@@ -0,0 +1,83 @@
+/* header */
+header {
+	height:400px;
+	background: url(../img/clientcase/banner.png)no-repeat;
+	text-align: center;
+	h4{
+		padding-top:174px;
+		font-size: 48px;
+		color:#fff;
+		font-weight: bold;
+		margin-top:0;
+		margin-bottom:60px;
+	}
+	a{
+		margin:0 auto;
+		display:block;
+		width:160px;
+		height:44px;
+		line-height: 42px;
+		text-align: center;
+		font-size: 18px;
+		color:#fff;
+		border:1px solid #fff;
+		&:hover{
+			text-decoration: none;
+			cursor:pointer;
+			color:#00e8e5;
+			border:1px solid #00e8e5;
+		}
+	}
+}
+
+// client
+#client{
+	background: #fff;
+	height:750px;
+	padding-top:50px;
+	.top{
+		background: #f1f1f1;
+		padding-top:40px;
+		margin-bottom:40px;
+		height:432px;
+		h4{
+			font-size: 30px;
+			color:#1e1e1e;
+			font-weight: bold;
+			margin-bottom:45px;
+			text-align: center;
+		}
+		.top-img{
+			img{
+				display:inline-block;
+				margin:0 40px;
+				padding:0;
+				width:470px;
+				height:270px;
+				vertical-align:top;
+			}
+			.content{
+				display:inline-block;
+				width:560px;
+				h5{
+					color:#1e1e1e;
+					font-size: 18px;
+					margin-bottom:20px;
+					padding-left:30px;
+				}
+				p{
+					color:#797979;
+					text-indent:2em
+				}
+			}
+		}
+	}
+	ul{
+		li{
+			margin-right:20px;
+			&:last-child{
+				margin-right:0;
+			}
+		}
+	}
+}

+ 138 - 0
src/main/webapp/resources/css/common.css

@@ -0,0 +1,138 @@
+/* common */
+body, html {
+	font-family: "Microsoft YaHei", '微软雅黑',  '宋体';
+	text-rendering: optimizeLegibility !important;
+    -webkit-font-smoothing: antialiased !important;
+    color: #636b72;
+    background-color: #F7F7F8;
+	box-sizing: border-box;
+}
+
+.container {
+	width:1180px;
+	margin:0 auto;
+	padding:0;
+}
+
+a:hover{
+	text-decoration: none;
+}
+
+/* nav */
+#nav {
+	height: 70px;
+	border:0;
+	background: none;
+	opacity:.6;
+	transition: all .5s ease-out;
+	-moz-transition: all .5s ease-out;	/* Firefox 4 */
+	-webkit-transition: all .5s ease-out;	/* Safari 和 Chrome */
+	-o-transition: all .5s ease-out; /* Opera */
+}
+ #nav:hover,#nav.on{
+	 background-color: #000;
+	 opacity:1;
+ }
+
+.navbar-header a {
+	line-height: 70px;
+	font-weight: 700;
+	color: #4b5362;
+	text-decoration: none;
+}
+.navbar-header a span{
+	font-weight: 700;
+	color: #fff;
+}
+
+.navbar-header a:hover {
+	color: #CC3333;
+	text-decoration: none;
+}
+
+#logo {
+	display: inline-block;
+	margin-right: 20px;
+	height: 70px;
+}
+
+
+.navbar-inverse .navbar-nav>li>a {
+	margin: 5px 20px 0;
+	padding:20px 0;
+	font-size: 14px;
+	color: #bbbbbb;
+	border-bottom: 5px solid transparent;
+}
+.navbar-inverse .navbar-nav>li>a:hover {
+	border-bottom: 5px solid #00e8e5;
+	color: #00e8e5;
+}
+.navbar-inverse .navbar-nav>li.active>a {
+	color: #00e8e5;
+	background: none;
+}
+
+.x-login {
+	display: none;
+}
+
+.x-login .title{
+	display: inline-block;
+	line-height: 14px;
+	width: 200px;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+}
+
+/* footer */
+footer {
+	width:100%;
+	height:156px;
+	background: #474443;
+}
+
+footer p{
+	color: #fff;
+}
+
+footer a {
+	display: inline-block;
+	margin-right: 24px;
+	color: #fff;
+	text-decoration: none;
+}
+
+footer a:focus, footer a:hover {
+	text-decoration: none;
+	color:#00e8e5;
+}
+
+footer ul li{
+	margin:0 20px;
+	vertical-align:middle;
+}
+
+footer .footer-left{
+	padding-top:50px;
+}
+footer .footer-left p{
+	margin-bottom: 30px;
+}
+
+footer .footer-right{
+	padding-top:23px;
+	margin-right:-30px;
+}
+footer .qrcode-tel {
+	text-align: right;
+}
+footer .qrcode-tel span{
+	font-size: 20px;
+	color:#fff;
+}
+footer .qrcode-text {
+	text-align: center;
+	padding-top:15px;
+}

+ 189 - 0
src/main/webapp/resources/css/index.css

@@ -0,0 +1,189 @@
+/* header */
+header {
+  height: 500px;
+  background: url(../img/home/banner.png) no-repeat center center;
+}
+header h4 {
+  padding-top: 210px;
+  font-size: 60px;
+  font-style: italic;
+  color: #fefefd;
+  margin-top: 0;
+  margin-bottom: 30px;
+}
+header P {
+  font-size: 18px;
+  color: #bac3d2;
+}
+/* section */
+section .head {
+  text-align: center;
+  padding-top: 60px;
+}
+section .head h4 {
+  font-size: 32px;
+  color: #1e4350;
+  margin: 0;
+  margin-bottom: 40px;
+}
+#serve {
+  background: #ffffff;
+  height: 490px;
+}
+#serve ul .item {
+  margin-right: 20px;
+  padding: 0;
+  vertical-align: middle;
+  width: 365px;
+  height: 290px;
+  text-align: center;
+  box-shadow: 0 0 15px rgba(66, 74, 90, 0.2);
+}
+#serve ul .item:last-child {
+  margin-right: 0;
+}
+#serve ul .item img {
+  padding-top: 55px;
+  margin-bottom: 30px;
+}
+#serve ul .item h5 {
+  color: #242424;
+  font-size: 18px;
+  margin-top: 0;
+  margin-bottom: 15px;
+}
+#serve ul .item p {
+  color: #c8c8c8;
+}
+#serve ul .item:hover {
+  position: relative;
+  top: 3px;
+  cursor: pointer;
+  box-shadow: 0 0 15px rgba(66, 74, 90, 0.5);
+}
+#serve ul .item:hover h5 {
+  color: #297590;
+  margin-top: 0;
+}
+#serve ul .item:hover p {
+  color: #8b8b8b;
+}
+#news {
+  background: #f4f4f4;
+  height: 580px;
+}
+#news ul li {
+  width: 30%;
+  margin-right: 20px;
+}
+#news ul li:last-child {
+  margin-right: 0;
+}
+#news ul li h5 {
+  text-align: center;
+  font-size: 20px;
+  color: #8c8c8c;
+  font-style: italic;
+  margin-top: 0;
+  margin-bottom: 25px;
+}
+#news ul li .content {
+  overflow: hidden;
+  margin-bottom: 26px;
+  background: #fff;
+}
+#news ul li .content:hover {
+  position: relative;
+  top: 3px;
+  cursor: pointer;
+  box-shadow: 0 0 15px rgba(41, 117, 144, 0.5);
+}
+#news ul li .content:hover p {
+  color: #297590;
+}
+#news ul li .content img {
+  width: 380px;
+  height: 220px;
+  vertical-align: top;
+}
+#news ul li .content p {
+  color: #1f1f1f;
+  line-height: 50px;
+  margin: 0;
+  padding-left: 20px;
+  width: 95%;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+#news ul li a {
+  display: block;
+  color: #1f1f1f;
+  margin-bottom: 20px;
+  text-decoration: none;
+  width: 100%;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+#news ul li a:hover {
+  cursor: pointer;
+  color: #297590;
+}
+#client {
+  background: #ffffff;
+  height: 740px;
+  padding-top: 40px;
+}
+#client .top {
+  background: #0d696d;
+  padding-top: 40px;
+  margin-bottom: 50px;
+  height: 432px;
+}
+#client .top h4 {
+  font-size: 32px;
+  color: #fff;
+  margin-bottom: 45px;
+  text-align: center;
+}
+#client .top .top-img img {
+  display: inline-block;
+  margin: 0 40px;
+  padding: 0;
+  width: 470px;
+  height: 270px;
+  vertical-align: top;
+}
+#client .top .top-img .content {
+  display: inline-block;
+  width: 560px;
+}
+#client .top .top-img .content h5 {
+  color: #fff;
+  font-size: 18px;
+  margin-bottom: 20px;
+  padding-left: 30px;
+}
+#client .top .top-img .content p {
+  color: #c9c9c9;
+  text-indent: 2em;
+}
+#client ul li {
+  margin-right: 20px;
+}
+#client ul li:last-child {
+  margin-right: 0;
+}
+#partner {
+  background: #f4f4f4;
+  height: 624px;
+}
+#partner .info {
+  text-align: center;
+}
+#partner .info p {
+  margin-bottom: 35px;
+  color: #9f9f9f;
+  font-size: 16px;
+}

+ 180 - 0
src/main/webapp/resources/css/index.less

@@ -0,0 +1,180 @@
+/* header */
+header {
+	height:500px;
+	background: url(../img/home/banner.png)no-repeat center center;
+	h4{
+		padding-top:210px;
+		font-size: 60px;
+		font-style: italic;
+		color:#fefefd;
+		margin-top:0;
+		margin-bottom:30px;
+	}
+	P{
+		font-size: 18px;
+		color:#bac3d2;
+	}
+}
+
+/* section */
+section {
+	.head{
+		text-align: center;
+		padding-top:60px;
+		h4{
+			font-size: 32px;
+			color:#1e4350;
+			margin:0;
+			margin-bottom:40px;
+		}
+	}
+}
+
+// serve
+#serve{
+	background: #ffffff;
+	height:490px;
+	ul{
+		.item{
+			&:last-child{
+				margin-right:0;
+			}
+			margin-right:20px;
+			padding:0;
+			vertical-align:middle;
+			width:365px;
+			height:290px;
+			text-align: center;
+			box-shadow: 0 0 15px rgba(66,74,90,.2);
+			img{padding-top:55px;margin-bottom:30px;}
+			h5{color:#242424;font-size: 18px;margin-top:0;margin-bottom:15px;}
+			p{color:#c8c8c8;}
+			&:hover{
+				position:relative;
+				top:3px;
+				cursor:pointer;
+				box-shadow: 0 0 15px rgba(66,74,90,.5);
+				h5{color:#297590;margin-top:0;}
+				p{color:#8b8b8b;}
+			}
+		}
+	}
+}
+
+// news
+#news{
+	background: #f4f4f4;
+	height:580px;
+	ul{
+		li{
+			width:30%;
+			margin-right:20px;
+			&:last-child{
+				margin-right:0;
+			}
+			h5{text-align: center; font-size: 20px;color:#8c8c8c;font-style: italic;margin-top:0;margin-bottom:25px;}
+			.content{
+				&:hover{
+					position:relative;
+					top:3px;
+					cursor:pointer;
+					box-shadow: 0 0 15px rgba(41,117,144,.5);
+					p{color:#297590;}
+				}
+				overflow: hidden;
+				margin-bottom:26px;
+				background: #fff;
+				img{width:380px;height:220px;vertical-align: top;}
+				p{
+					color:#1f1f1f;
+					line-height: 50px;
+					margin:0;
+					padding-left:20px;
+					width:95%;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					white-space: nowrap;
+				}
+			}
+			a{
+				display:block;
+				color:#1f1f1f;
+				margin-bottom:20px;
+				text-decoration: none;
+				width:100%;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				&:hover{
+					cursor:pointer;
+					color:#297590;
+				}
+			}
+		}
+	}
+}
+
+// client
+#client{
+	background: #ffffff;
+	height:740px;
+	padding-top:40px;
+	.top{
+		background: #0d696d;
+		padding-top:40px;
+		margin-bottom:50px;
+		height:432px;
+		h4{
+			font-size: 32px;
+			color:#fff;
+			margin-bottom:45px;
+			text-align: center;
+		}
+		.top-img{
+			img{
+				display:inline-block;
+				margin:0 40px;
+				padding:0;
+				width:470px;
+				height:270px;
+				vertical-align:top;
+			}
+			.content{
+				display:inline-block;
+				width:560px;
+				h5{
+					color:#fff;
+					font-size: 18px;
+					margin-bottom:20px;
+					padding-left:30px;
+				}
+				p{
+					color:#c9c9c9;
+					text-indent:2em
+				}
+			}
+		}
+	}
+	ul{
+		li{
+			margin-right:20px;
+			&:last-child{
+				margin-right:0;
+			}
+		}
+	}
+}
+
+// partner
+#partner{
+	background: #f4f4f4;
+	height:624px;
+	.info{
+		text-align: center;
+		p{
+			margin-bottom:35px;
+			color:#9f9f9f;
+			font-size: 16px;
+		}
+	}
+}

+ 76 - 0
src/main/webapp/resources/css/intocity.css

@@ -0,0 +1,76 @@
+#nav {
+  background: #000!important;
+  opacity: 1!important;
+}
+/* into */
+#into {
+  margin-top: 70px;
+  background: #f4f4f4;
+  padding-bottom: 90px;
+}
+#into .head {
+  padding-top: 30px;
+}
+#into .head h4 {
+  font-size: 36px;
+  color: #000;
+  margin: 0;
+  margin-bottom: 30px;
+}
+#into .info-content {
+  margin-bottom: 50px;
+}
+#into .info-content ul li {
+  margin-bottom: 16px;
+  line-height: 40px;
+}
+#into .info-content ul li span {
+  display: inline-block;
+  width: 80px;
+  color: #8c8c8c;
+}
+#into .info-content ul li input {
+  display: inline-block !important;
+  width: 20%;
+  margin-right: 15px;
+  padding: 0 20px;
+  border-radius: 3px;
+  color: #000;
+  background: #fff;
+}
+#into .info-content ul li a {
+  color: #00a7b6;
+  text-decoration: none;
+}
+#into .select-into .option-into .title {
+  border-bottom: 1px solid #d2d2d2;
+}
+#into .select-into .option-into .title h5 {
+  font-size: 18px;
+  color: #000;
+  margin-top: 30px;
+}
+#into .select-into .option-into ul {
+  padding-top: 25px;
+  padding-bottom: 60px;
+}
+#into .select-into .option-into ul li {
+  margin-right: 15px;
+}
+#into .select-into .option-into ul li:hover a,
+#into .select-into .option-into ul li.active a {
+  cursor: pointer;
+  text-decoration: none;
+  color: #039a98;
+  border: 1px solid #039a98;
+}
+#into .select-into .option-into ul li a {
+  display: inline-block;
+  padding: 0 15px;
+  line-height: 40px;
+  text-align: center;
+  color: #000;
+  border: 1px solid #d2d2d2;
+  border-radius: 3px;
+  background: #fff;
+}

+ 84 - 0
src/main/webapp/resources/css/intocity.less

@@ -0,0 +1,84 @@
+#nav{
+	background: #000!important;
+	opacity: 1!important;
+}
+
+/* into */
+#into{
+	margin-top:70px;
+	background: #f4f4f4;
+	padding-bottom:90px;
+	.head{
+		padding-top:30px;
+		h4{
+			font-size: 36px;
+			color:#000;
+			margin:0;
+			margin-bottom:30px;
+		}
+	}
+	.info-content{
+		margin-bottom:50px;
+		ul{
+			li{
+				margin-bottom:16px;
+				line-height: 40px;
+				span{
+					display:inline-block;
+					width:80px;
+					color:#8c8c8c;
+				}
+				input{
+					display:inline-block!important;
+					width:20%;
+					margin-right:15px;
+					padding: 0 20px;
+					border-radius:3px;
+					color:#000;
+					background: #fff;
+				}
+				a{
+					color:#00a7b6;
+					text-decoration: none;
+				}
+			}
+		}
+	}
+	.select-into{
+		.option-into{
+			.title{
+				border-bottom:1px solid #d2d2d2;
+				h5{
+					font-size: 18px;
+					color:#000;
+					margin-top:30px;
+				}
+			}
+			ul{
+				padding-top:25px;
+				padding-bottom:60px;
+				li{
+					margin-right:15px;
+					&:hover,&.active{
+						a{
+							cursor:pointer;
+							text-decoration: none;
+							color:#039a98;
+							border:1px solid #039a98;
+						}
+					}
+					a{
+						display:inline-block;
+						padding:0 15px;
+						line-height: 40px;
+						text-align: center;
+						color:#000;
+						border:1px solid #d2d2d2;
+						border-radius:3px;
+						background: #fff;
+					}
+				}
+			}
+		}
+	}
+}

+ 199 - 0
src/main/webapp/resources/css/news.css

@@ -0,0 +1,199 @@
+/* header */
+header {
+  height: 430px;
+  background: url(../img/news/banner.jpg) no-repeat;
+  text-align: center;
+}
+header h4 {
+  padding-top: 190px;
+  font-size: 48px;
+  color: #fff;
+  font-weight: bold;
+  margin-top: 0;
+  margin-bottom: 40px;
+}
+header span {
+  margin: 0 auto;
+  display: block;
+  width: 280px;
+  height: 50px;
+  line-height: 48px;
+  text-align: center;
+  font-size: 18px;
+  color: #fff;
+  border: 1px solid #fff;
+}
+#news {
+  background: #ffffff;
+  min-height: 1000px;
+  padding-top: 40px;
+}
+#news .head ul {
+  margin-bottom: 45px;
+}
+#news .head ul li.active a,
+#news .head ul li:hover a {
+  text-decoration: none;
+  cursor: pointer;
+  border-left: 6px solid #408eff;
+  color: #000;
+}
+#news .head ul li a {
+  display: block;
+  text-decoration: none;
+  width: 150px;
+  line-height: 36px;
+  border-left: 6px solid #dcdcdc;
+  padding-left: 20px;
+  color: #787878;
+  font-size: 24px;
+}
+#news .news-list {
+  float: left;
+  width: 300px;
+}
+#news .news-list .head ul li.active a {
+  text-decoration: none;
+  border-left: 6px solid #ff0000;
+}
+#news .news-list .title {
+  margin-top: -10px;
+}
+#news .news-list .title a {
+  display: block;
+  position: relative;
+  height: 70px;
+  padding-top: 10px;
+  text-decoration: none;
+  border-bottom: 1px solid #dcdcdc;
+}
+#news .news-list .title a:hover {
+  text-decoration: none;
+  cursor: pointer;
+}
+#news .news-list .title a:hover p {
+  color: #408eff;
+}
+#news .news-list .title a:last-child {
+  border: 0;
+}
+#news .news-list .title a p {
+  color: #000;
+  width: 98%;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
+  font-size: 16px;
+}
+#news .news-list .title a span {
+  position: absolute;
+  bottom: 15px;
+  color: #a0a0a0;
+  font-size: 12px;
+  padding-left: 20px;
+  background: url(../img/icon/new.png) no-repeat 0 3px;
+}
+#news .news-list .title a span:last-child {
+  right: 0;
+  background: none;
+}
+#news .news-content {
+  vertical-align: top;
+  margin-left: 400px;
+}
+#news .news-content .group {
+  padding-bottom: 15px;
+}
+#news .news-content .group > p {
+  text-indent: 2em;
+}
+#news .news-content .group .details {
+  margin-bottom: 35px;
+}
+#news .news-content .group .details h4 {
+  font-size: 24px;
+  font-weight: bold;
+  color: #333;
+}
+#news .news-content .group .details span {
+  color: #787878;
+  font-size: 14px;
+  margin-right: 20px;
+}
+#news .news-content .group .details span:last-child {
+  padding-left: 20px;
+  background: url(../img/icon/new.png) no-repeat 0 3px;
+}
+#news .news-content .group .item {
+  display: block;
+  height: 160px;
+  margin-bottom: 40px;
+}
+#news .news-content .group .item:hover {
+  text-decoration: none;
+  cursor: pointer;
+}
+#news .news-content .group .item:hover .item-left .date-time {
+  background: #408eff;
+}
+#news .news-content .group .item:hover .item-right p {
+  color: #2867c2;
+}
+#news .news-content .group .item .item-left {
+  float: left;
+  width: 290px;
+}
+#news .news-content .group .item .item-left .date-time {
+  display: inline-block;
+  float: left;
+  width: 90px;
+  height: 100px;
+  background: #626262;
+  text-align: center;
+  padding-top: 5px;
+}
+#news .news-content .group .item .item-left .date-time p {
+  color: #fff;
+  font-size: 24px;
+  margin: 0;
+}
+#news .news-content .group .item .item-left .img {
+  vertical-align: top;
+  margin-left: 90px;
+  width: 200px;
+  height: 160px;
+  overflow: hidden;
+  text-align: center;
+}
+#news .news-content .group .item .item-right {
+  position: relative;
+  margin-left: 330px;
+  height: 160px;
+}
+#news .news-content .group .item .item-right p {
+  color: #333;
+  width: 98%;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 2;
+  font-size: 18px;
+  font-weight: bold;
+}
+#news .news-content .group .item .item-right span {
+  color: #787878;
+  font-size: 14px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 3;
+}
+#news .news-content .group .item .item-right span:last-child {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  padding-left: 20px;
+  background: url(../img/icon/new.png) no-repeat 0 3px;
+}

+ 203 - 0
src/main/webapp/resources/css/news.less

@@ -0,0 +1,203 @@
+/* header */
+header {
+	height:430px;
+	background: url(../img/news/banner.jpg)no-repeat;
+	text-align: center;
+	h4{
+		padding-top:190px;
+		font-size: 48px;
+		color:#fff;
+		font-weight: bold;
+		margin-top:0;
+		margin-bottom:40px;
+	}
+	span{
+		margin:0 auto;
+		display:block;
+		width:280px;
+		height:50px;
+		line-height: 48px;
+		text-align: center;
+		font-size: 18px;
+		color:#fff;
+		border:1px solid #fff;
+	}
+}
+
+// news
+#news{
+	background: #ffffff;
+	min-height:1000px;
+	padding-top:40px;
+	.head{
+		ul{
+			margin-bottom:45px;
+			li{
+				&.active a,&:hover a{
+					text-decoration: none;
+					cursor:pointer;
+					border-left:6px solid #408eff;
+					color:#000;
+				}
+				a{
+					display:block;
+					text-decoration: none;
+					width:150px;
+					line-height: 36px;
+					border-left:6px solid #dcdcdc;
+					padding-left:20px;
+					color:#787878;
+					font-size: 24px;
+				}
+			}
+		}
+	}
+	.news-list{
+		float:left;
+		width:300px;
+		.head ul li.active a{
+			text-decoration: none;
+			border-left:6px solid #ff0000;
+		}
+		.title{
+			margin-top:-10px;
+			a{
+				display:block;
+				position:relative;
+				height:70px;
+				padding-top:10px;
+				text-decoration: none;
+				border-bottom:1px solid #dcdcdc;
+				&:hover{
+					text-decoration: none;
+					cursor:pointer;
+					p{
+						color:#408eff;
+					}
+				}
+				&:last-child{
+					border:0;
+				}
+				p{
+					color:#000;
+					width:98%;
+					text-overflow: ellipsis;
+					overflow: hidden;
+					white-space: nowrap;
+					font-size: 16px;
+				}
+				span{
+					position:absolute;
+					bottom:15px;
+					color:#a0a0a0;
+					font-size: 12px;
+					padding-left:20px;
+					background: url(../img/icon/new.png)no-repeat 0 3px;
+					&:last-child{
+						right:0;
+						background: none;
+					}
+				}
+			}
+		}
+	}
+	.news-content{
+		vertical-align: top;
+		margin-left:400px;
+		.group{
+			padding-bottom:15px;
+			>p{
+				text-indent: 2em;
+			}
+			.details{
+				margin-bottom:35px;
+				h4{
+					font-size: 24px;
+					font-weight: bold;
+					color:#333
+				}
+				span{
+					color:#787878;
+					font-size: 14px;
+					margin-right:20px;
+					&:last-child{
+						padding-left:20px;
+						background: url(../img/icon/new.png)no-repeat 0 3px;
+					}}
+			}
+			.item{
+				display:block;
+				height:160px;
+				margin-bottom:40px;
+				&:hover{
+					text-decoration: none;
+					cursor:pointer;
+					.item-left .date-time{
+						background: #408eff;
+					}
+					.item-right p{
+						color:#2867c2;
+					}
+				}
+				.item-left{
+					float:left;
+					width:290px;
+					.date-time{
+						display:inline-block;
+						float:left;
+						width:90px;
+						height:100px;
+						background: #626262;
+						text-align: center;
+						padding-top:5px;
+						p{
+							color:#fff;
+							font-size: 24px;
+							margin:0;
+						}
+					}
+					.img{
+						vertical-align: top;
+						margin-left:90px;
+						width:200px;
+						height:160px;
+						overflow: hidden;
+						text-align: center;
+					}
+				}
+				.item-right{
+					position:relative;
+					margin-left:330px;
+					height:160px;
+					p{
+						color:#333;
+						width:98%;
+						overflow:hidden;
+						text-overflow:ellipsis;
+						display:-webkit-box;
+						-webkit-box-orient:vertical;
+						-webkit-line-clamp:2;
+						font-size: 18px;
+						font-weight: bold;
+					}
+					span{
+						color:#787878;
+						font-size: 14px;
+						overflow:hidden;
+						text-overflow:ellipsis;
+						display:-webkit-box;
+						-webkit-box-orient:vertical;
+						-webkit-line-clamp:3;
+						&:last-child{
+							position:absolute;
+							bottom:0;
+							left:0;
+							padding-left:20px;
+							background: url(../img/icon/new.png)no-repeat 0 3px;
+						}
+					}
+				}
+			}
+		}
+	}
+}

+ 155 - 0
src/main/webapp/resources/css/server.css

@@ -0,0 +1,155 @@
+/* header */
+header {
+  height: 400px;
+  background: url(../img/server/banner.png) no-repeat center center;
+}
+header h4 {
+  padding-top: 222px;
+  font-size: 48px;
+  color: #fff;
+  margin-top: 0;
+  text-align: center;
+}
+/* section */
+section .head {
+  text-align: center;
+  padding-top: 60px;
+}
+section .head h4 {
+  font-size: 32px;
+  color: #1e4350;
+  margin: 0;
+  margin-bottom: 40px;
+}
+#classify {
+  background: #f7f7f7;
+  height: 150px;
+}
+#classify ul {
+  padding-left: 34px;
+  padding-top: 25px;
+}
+#classify ul .item {
+  padding: 0;
+  vertical-align: top;
+  margin-right: 20px;
+}
+#classify ul .item:last-child {
+  margin-right: 0;
+}
+#classify ul .item:last-child .item-right {
+  border: 0;
+}
+#classify ul .item img {
+  display: inline-block;
+  margin-right: 30px;
+  vertical-align: top;
+  line-height: 150px;
+}
+#classify ul .item .item-right {
+  display: inline-block;
+  width: 230px;
+  border-right: 1px solid #b4b4b4;
+  padding-right: 30px;
+  margin-top: 15px;
+}
+#classify ul .item .item-right p {
+  font-size: 18px;
+  color: #242424;
+  margin-bottom: 15px;
+}
+#classify ul .item .item-right span {
+  font-size: 14px;
+  color: #b4b4b4;
+  line-height: 20px;
+}
+#attract {
+  background: #fff;
+  height: 504px;
+}
+#attract .container {
+  position: relative;
+  height: 504px;
+}
+#attract .head {
+  text-align: center;
+  padding-top: 50px;
+}
+#attract .head h4 {
+  font-size: 32px;
+  color: #1e4350;
+  margin: 0;
+}
+#attract ul {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 504px;
+  margin: 0;
+  padding: 184px 550px 0 46px;
+  background: url(../img/server/pic1.png) no-repeat bottom right;
+}
+#attract ul li {
+  margin: 0 15px 15px;
+}
+#attract ul li img {
+  margin-bottom: 12px;
+}
+#attract ul li p {
+  color: #787878;
+}
+#manage {
+  background: #f4f4f4;
+  text-align: center;
+  height: 708px;
+}
+#manage .head {
+  padding-top: 70px;
+}
+#manage .head h4 {
+  font-size: 32px;
+  color: #1e4350;
+  margin: 0;
+  margin-bottom: 25px;
+}
+#manage .head p {
+  color: #8c8c8c;
+  margin-bottom: 40px;
+}
+#industry {
+  background: #fff;
+  height: 440px;
+}
+#industry .head {
+  padding-top: 70px;
+  text-align: center;
+}
+#industry .head h4 {
+  font-size: 32px;
+  color: #1e4350;
+  margin: 0;
+  margin-bottom: 80px;
+}
+#industry ul li {
+  padding: 0;
+  width: 33%;
+  vertical-align: top;
+  margin-bottom: 50px;
+}
+#industry ul li img {
+  vertical-align: top;
+  margin-right: 20px;
+  padding-top: 10px;
+}
+#industry ul li .item-right {
+  display: inline-block;
+}
+#industry ul li .item-right p {
+  font-size: 16px;
+  color: #474747;
+  margin-bottom: 15px;
+}
+#industry ul li .item-right span {
+  color: #b3b3b3;
+}

+ 164 - 0
src/main/webapp/resources/css/server.less

@@ -0,0 +1,164 @@
+/* header */
+header {
+	height:400px;
+	background: url(../img/server/banner.png)no-repeat center center;
+	h4{
+		padding-top:222px;
+		font-size: 48px;
+		color:#fff;
+		margin-top:0;
+		text-align: center;
+	}
+}
+
+/* section */
+section {
+	.head{
+		text-align: center;
+		padding-top:60px;
+		h4{
+			font-size: 32px;
+			color:#1e4350;
+			margin:0;
+			margin-bottom:40px;
+		}
+	}
+}
+
+// classify
+#classify{
+	background: #f7f7f7;
+	height:150px;
+	ul{
+		padding-left:34px;
+		padding-top:25px;
+		.item{
+			padding:0;
+			vertical-align: top;
+			margin-right:20px;
+			&:last-child{
+				margin-right:0;
+				.item-right{
+					border:0;
+				}
+			}
+			img{
+				display:inline-block;
+				margin-right:30px;
+				vertical-align: top;
+				line-height: 150px;
+			}
+			.item-right{
+				display:inline-block;
+				width:230px;
+				border-right:1px solid #b4b4b4;
+				padding-right:30px;
+				margin-top:15px;
+				p{
+					font-size: 18px;
+					color:#242424;
+					margin-bottom:15px;
+				}
+				span{
+					font-size: 14px;
+					color:#b4b4b4;
+					line-height: 20px;
+				}
+			}
+		}
+	}
+}
+
+// attract
+#attract{
+	background: #fff;
+	height:504px;
+	.container{
+		position:relative;
+		height:504px;
+	}
+	.head{
+		text-align: center;
+		padding-top:50px;
+		h4{
+			font-size: 32px;
+			color:#1e4350;
+			margin:0;
+		}
+	}
+	ul{
+		position:absolute;
+		bottom:0;
+		left:0;
+		width:100%;
+		height:504px;
+		margin:0;
+		padding:184px 550px 0 46px;
+		background: url(../img/server/pic1.png)no-repeat bottom right;
+		li{
+			margin:0 15px 15px;
+			img{margin-bottom:12px;}
+			p{color:#787878;}
+		}
+	}
+}
+
+// manage
+#manage{
+	background: #f4f4f4;
+	text-align: center;
+	height:708px;
+	.head{
+		padding-top:70px;
+		h4{
+			font-size: 32px;
+			color:#1e4350;
+			margin:0;
+			margin-bottom:25px;
+		}
+		p{
+			color:#8c8c8c;
+			margin-bottom:40px;
+		}
+	}
+}
+
+// industry
+#industry{
+	background: #fff;
+	height:440px;
+	.head{
+		padding-top:70px;
+		text-align: center;
+		h4{
+			font-size: 32px;
+			color:#1e4350;
+			margin:0;
+			margin-bottom:80px;
+		}
+	}
+	ul{
+		li{
+			padding:0;
+			width:33%;
+			vertical-align: top;
+			margin-bottom:50px;
+			img{
+				vertical-align: top;
+				margin-right:20px;
+				padding-top:10px;
+			}
+			.item-right{
+				display:inline-block;
+				p{
+					font-size: 16px;
+					color:#474747;
+					margin-bottom:15px;
+				}
+				span{
+					color:#b3b3b3;
+				}
+			}
+		}
+	}
+}

+ 79 - 0
src/main/webapp/resources/css/teamwork.css

@@ -0,0 +1,79 @@
+/* header */
+header {
+  height: 420px;
+  background: url(../img/teamwork/banner.jpg) no-repeat;
+}
+header h4 {
+  padding-top: 210px;
+  font-size: 54px;
+  font-style: italic;
+  color: #fefefe;
+  margin-top: 0;
+  margin-bottom: 30px;
+}
+header P {
+  font-size: 18px;
+  color: #bbc3d1;
+}
+#step {
+  background: #eee;
+  height: 130px;
+}
+#step ul .item {
+  width: 230px;
+  line-height: 130px;
+}
+#step ul .item img {
+  display: inline-block;
+  padding-right: 15px;
+}
+#step ul .item span {
+  color: #505050;
+  font-size: 16px;
+  font-weight: bold;
+  margin-right: 10px;
+}
+#step ul .item a {
+  display: inline-block;
+  width: 50px;
+  height: 24px;
+  text-align: center;
+  border: 1px solid #00b9b7;
+  color: #00b9b7;
+  line-height: 22px;
+  text-decoration: none;
+}
+#touch {
+  background: #f4f4f4;
+  padding: 54px 0;
+}
+#touch .content {
+  display: inline-block;
+  vertical-align: top;
+  width: 560px;
+  height: 300px;
+  background: #fff;
+  padding-top: 28px;
+  padding-left: 42px;
+  margin-right: 50px;
+}
+#touch .content h5 {
+  font-size: 30px;
+  color: #3b3b3b;
+  margin: 0;
+  margin-bottom: 30px;
+}
+#touch .content p {
+  color: #a0a0a0;
+  margin-bottom: 15px;
+}
+#touch .map {
+  display: inline-block;
+  vertical-align: top;
+  width: 560px;
+  height: 300px;
+}
+.amap-logo,
+.amap-copyright {
+  display: none!important;
+}

+ 84 - 0
src/main/webapp/resources/css/teamwork.less

@@ -0,0 +1,84 @@
+/* header */
+header {
+	height:420px;
+	background: url(../img/teamwork/banner.jpg)no-repeat;
+	h4{
+		padding-top:210px;
+		font-size: 54px;
+		font-style: italic;
+		color:#fefefe;
+		margin-top:0;
+		margin-bottom:30px;
+	}
+	P{
+		font-size: 18px;
+		color:#bbc3d1;
+	}
+}
+
+// step
+#step{
+	background: #eee;
+	height:130px;
+	ul{
+		.item{
+			width:230px;
+			line-height: 130px;
+			img{
+				display:inline-block;
+				padding-right:15px;
+			}
+			span{
+				color:#505050;
+				font-size: 16px;
+				font-weight: bold;
+				margin-right:10px;
+			}
+			a{
+				display:inline-block;
+				width:50px;
+				height:24px;
+				text-align: center;
+				border: 1px solid #00b9b7;
+				color:#00b9b7;
+				line-height: 22px;
+				text-decoration: none;
+			}
+		}
+	}
+}
+
+// touch
+#touch{
+	background: #f4f4f4;
+	padding:54px 0;
+	.content{
+		display:inline-block;
+		vertical-align: top;
+		width:560px;
+		height:300px;
+		background: #fff;
+		padding-top:28px;
+		padding-left:42px;
+		margin-right:50px;
+		h5{
+			font-size: 30px;
+			color:#3b3b3b;
+			margin:0;
+			margin-bottom:30px;
+		}
+		p{
+			color:#a0a0a0;
+			margin-bottom:15px;
+		}
+	}
+	.map{
+		display:inline-block;
+		vertical-align: top;
+		width:560px;
+		height:300px;
+	}
+}
+.amap-logo,.amap-copyright{
+	display: none!important;
+}

BIN
src/main/webapp/resources/img/about/pic.png


BIN
src/main/webapp/resources/img/clientcase/banner.png


BIN
src/main/webapp/resources/img/clientcase/clientcase1.png


BIN
src/main/webapp/resources/img/clientcase/clientcase2.png


BIN
src/main/webapp/resources/img/clientcase/clientcase3.png


BIN
src/main/webapp/resources/img/home/banner.png


BIN
src/main/webapp/resources/img/home/client1.png


BIN
src/main/webapp/resources/img/home/client2.png


BIN
src/main/webapp/resources/img/home/client3.png


BIN
src/main/webapp/resources/img/home/partner1.png


BIN
src/main/webapp/resources/img/home/serve1.png


BIN
src/main/webapp/resources/img/home/serve2.png


BIN
src/main/webapp/resources/img/home/serve3.png


BIN
src/main/webapp/resources/img/icon/icon.png


BIN
src/main/webapp/resources/img/icon/new.png


BIN
src/main/webapp/resources/img/intocity/切换.png


BIN
src/main/webapp/resources/img/logo.png


BIN
src/main/webapp/resources/img/news/banner.jpg


BIN
src/main/webapp/resources/img/qrcode/uas.png


BIN
src/main/webapp/resources/img/qrcode/uu.png


BIN
src/main/webapp/resources/img/server/attract1.png


BIN
src/main/webapp/resources/img/server/attract2.png


BIN
src/main/webapp/resources/img/server/attract3.png


BIN
src/main/webapp/resources/img/server/attract4.png


BIN
src/main/webapp/resources/img/server/attract5.png


BIN
src/main/webapp/resources/img/server/attract6.png


BIN
src/main/webapp/resources/img/server/banner.png


BIN
src/main/webapp/resources/img/server/classify1.png


BIN
src/main/webapp/resources/img/server/classify2.png


BIN
src/main/webapp/resources/img/server/classify3.png


BIN
src/main/webapp/resources/img/server/industry1.png


BIN
src/main/webapp/resources/img/server/industry2.png


BIN
src/main/webapp/resources/img/server/industry3.png


BIN
src/main/webapp/resources/img/server/industry4.png


BIN
src/main/webapp/resources/img/server/industry5.png


BIN
src/main/webapp/resources/img/server/industry6.png


BIN
src/main/webapp/resources/img/server/pic1.png


BIN
src/main/webapp/resources/img/server/pic2.png


BIN
src/main/webapp/resources/img/teamwork/banner.jpg


BIN
src/main/webapp/resources/img/teamwork/step1.png


BIN
src/main/webapp/resources/img/teamwork/step2.png


BIN
src/main/webapp/resources/img/teamwork/step3.png


BIN
src/main/webapp/resources/img/teamwork/step4.png


BIN
src/main/webapp/resources/img/teamwork/step5.png


+ 8 - 0
src/main/webapp/resources/js/about.js

@@ -0,0 +1,8 @@
+$(function () {
+    $('.tab>ul>li>a').click(function(e) {
+        e.preventDefault()
+        $(this).parent().addClass('active').siblings().removeClass('active')
+        var id = $(this).attr('href')
+        $('.step' + id).addClass('show').siblings().removeClass('show')
+    })
+})

+ 0 - 0
README.md → src/main/webapp/resources/js/clientcase.js


+ 467 - 0
src/main/webapp/resources/js/common/common.js

@@ -0,0 +1,467 @@
+function isLogin() {
+	return window._hasAccountInfo;
+}
+
+/**
+ * 引入toaster方法
+ */
+document.write("<script language=javascript src='static/js/common/toastr.js'></script>");
+
+/**
+ *  获取用户信息
+ */
+function getAccountInfo() {
+	$.get('account', function(data){
+		if (data.content) {
+			$('.x-nologin').hide();
+			$('.x-login').show();
+
+			if(null != data.content.content.spaceName) {
+                $('.x-login').find('.title').text(data.content.content.name + ',' + data.content.content.spaceName);
+            } else {
+                $('.x-login').find('.title').text(data.content.content.name);
+            }
+			window._hasAccountInfo = true;
+			var user = data.content.content;
+			if(null != data.space) {
+                // 管理员
+                if(user.uid == data.space.adminTel) {
+                    // 如果是hr
+                    if(user.hr == 1) {
+                        $('.link-job-get').show();
+                        $('.link-hr-set').hide();
+                    } else {
+                        $('.link-hr-set').show();
+                        $('.link-job-get').hide();
+                    }
+                } else {// 非管理员
+                    $('.link-job-get').show();
+                    $('.link-hr-set').hide();
+                    var location = window.location.pathname;
+                    if(location.indexOf('setHrAccount') > -1) {// 如果是在设置hr页面,非管理员跳转到首页
+                        window.location.href = 'http://www.ubtob.com/#/uuzcJob';
+                    }
+                }
+            }
+		} else {
+		    var location = window.location.pathname;
+		    if(location.indexOf('setHrAccount') > -1) {// 如果是在设置hr页面,没有登录的话跳转到登录页面
+               login(event);
+            }
+        }
+	});
+}
+
+/**
+ * 登录
+ * @param event
+ */
+function login(event) {
+	event.preventDefault();
+	$.get('login', function(data) {
+    data.content && (window.location.href = data.content.replace('{returnURL}', window.location.href).replace('{baseUrl}', window.location.href));
+	});
+}
+
+/**
+ * 退出
+ */
+function logout() {
+    $.get('logout', function(data) {
+        if(data.success && data.content) {
+            logoutUuzc();
+            logoutUuzcJob();
+            window.location.href = data.content.replace('{returnURL}', window.location.href);
+        }
+});
+}
+
+/**
+ * 通知众创登出
+ */
+function logoutUuzc() {
+	var url = 'http://login.uuzcc.com/index/ubtob/logout';
+	$.ajax(url, {
+		dataType: 'jsonp',
+		crossDomain: true,
+		success: function(data) {
+			if(data && data.resultcode == '200'){
+				console.log(data.result.today);
+			}
+		}
+	});
+}
+
+/**
+ * 通知众创人才招聘退出
+ */
+function logoutUuzcJob() {
+    var url = 'http://job.uuzcc.com/index.php?m=&c=ubtob&a=logout';
+    $.ajax(url, {
+        dataType: 'jsonp',
+        crossDomain: true,
+        success: function(data) {
+            if(data && data.resultcode == '200'){
+                console.log(data.result.today);
+            }
+        }
+    });
+}
+
+
+/**
+ * 点击顶部导航栏跳转到人才招聘
+ */
+function jobUuzc() {
+    var url = 'http://job.uuzcc.com/';
+    var loginUrl = 'http://job.uuzcc.com/index.php?m=&c=ubtob&a=login';
+    $.get('uuzc/account/check', function(data) {
+        var user = data.user;
+        if(data.usertype == 'hr') { // 账号类型是hr直接登录
+            loginJobUuzc(user, loginUrl, 'hr');
+            setTimeout(window.location.href = url, 200);
+        } else if(data.usertype == 'company' && !data.ishr) {// 如果是企业账号并且未设置hr账号,停留在当前页,其他的都跳转到人才招聘页
+            if(data.hr) {// 如果企业存在hr账号,直接跳转
+                loginJobUuzc(user, loginUrl, data.usertype);
+                setTimeout(window.location.href = url, 200);
+            } else {
+                return;
+            }
+        } else if(data.usertype == 'personal') {
+            loginJobUuzc(user, loginUrl, data.usertype);
+            setTimeout(window.location.href = url, 200);
+        } else {
+            window.location.href = url;
+        }
+    });
+}
+
+/**
+ * 存储hrInfo,不用重新加载
+ *
+ * @type {null}
+ */
+var hrInfo = null;
+
+function getHrInfo() {
+    if(hrInfo == null) {
+        $.get('uuzc/hrInfo', function(userInfo) {
+            if(null != userInfo.user) {
+                hrInfo = userInfo.user;
+                // 默认给相关字段赋值
+                $('#hrname').val(hrInfo.name);
+                $('#hremail').val(hrInfo.secondUID);
+                $('#hrtel').val(hrInfo.uid);
+                $('#username').val(hrInfo.name);
+                $('#usertel').val(hrInfo.uid);
+                $('#useruu').val(hrInfo.dialectUID);
+                $('#useremail').val(hrInfo.secondUID);
+                $('#userList').css('display','none');
+            }
+        });
+    }
+}
+
+/**
+ * 链接到优软众创人才招聘(招聘入口)
+ */
+function jobUuzcGet() {
+    var url = 'http://job.uuzcc.com/';
+    var loginUrl = 'http://job.uuzcc.com/index.php?m=&c=ubtob&a=login';
+    $.get('uuzc/account/check', function(data) {
+        var user = data.user;
+        if(null != data && 'personal' == data.usertype) {
+            toastr.error("您的账号为个人账号,不可进行此操作");
+        } else if(null != data && 'company' == data.usertype) {
+            // 先判断是否管理员
+            if(data.manager) {
+                // if(!data.hr) {// 企业不存在hr账号
+                    window.location.href = window.location.origin + window.location.pathname + "setHrAccount";
+                // } else {// 如果企业存在hr
+                //     toastr.error('您的账号非HR账号,不可进行此操作');
+                // }
+            } else {
+                toastr.error('请通知管理员' + data.managerName + '设置HR账号');
+            }
+        } else if(data.usertype =='hr') {
+            loginJobUuzc(user, loginUrl, 'hr');
+            setTimeout(window.location.href = url, 200);
+        } else {
+            data.content && (window.location.href = data.content);
+        }
+    });
+}
+
+/**
+ * 人才招聘求职入口
+ */
+function jobUuzcPost() {
+    var url = 'http://job.uuzcc.com/';
+    var loginUrl = 'http://job.uuzcc.com/index.php?m=&c=ubtob&a=login';
+    $.get('uuzc/account/check', function(data) {
+        if(null != data.usertype) {
+            var user = data.user;
+            if(data.usertype == 'hr') {
+                toastr.error('您的账号为HR账号,不能进行此操作');
+                return;
+            } else {
+                loginJobUuzc(user, loginUrl, data.usertype);
+                setTimeout(window.location.href = url, 200);
+            }
+        } else {// 求职时可以未登录
+            data.content && (window.location.href = url);
+        }
+    });
+}
+
+/**
+ * 通知众创人才招聘登录
+ * @param user
+ * @param userLoginUrl
+ */
+function loginJobUuzc(user, url, type) {
+    $('#J_commenting').attr("action", url);
+    $('#username').val(user.username);
+    $('#password').val(user.password);
+    $('#email').val(user.email);
+    $('#mobile').val(user.mobile);
+    $('#uc_uid').val(user.uc_uid);
+    $('#salt').val(user.salt);
+    if(type == 'hr') {// 只有hr会带出当前企业的信息
+        $('#companyname').val(user.companyname);
+        $('#license').val(user.license);
+        $('#website').val(user.website);
+        $('#landine_tel').val(user.landine_tel);
+        $('#telephone').val(user.telephone);
+    }
+    $('#J_commenting').submit();
+}
+
+/**
+ * 添加hr账号
+ */
+function addHrAccount() {
+    var user = {
+        username: $('#hrname').val(),
+        email: $('#hremail').val(),
+        mobile: $('#hrtel').val()
+    };
+    $.ajax({
+        url: 'uuzc/setHrAccount',
+        data: user,
+        method: 'POST',
+        async: false,
+        success: function(data) {
+           if(data) {
+               var result = data.result;
+               if(result == 'success') {
+                   toastr.success('设置HR账号成功');
+                   hrInfo = null; // 清空已查询的数据,重新加载
+                   setTimeout(window.location.href = 'http://www.ubtob.com/#/uuzcJob', 2000);
+               }
+               if(result == 'exist') {
+                   toastr.error('该企业HR账号已存在');
+               }
+               if(result == 'setFailure') {
+                   toastr.error('设置HR账号失败');
+               }
+           }
+        },
+        error: function (error) {
+            toastr.error(error);
+        }
+    });
+}
+
+/**
+ * 设置hr账号
+ */
+function setHrAccount() {
+    var user = {
+        username: $('#username').val(),
+        email: $('#useremail').val(),
+        mobile: $('#usertel').val()
+    };
+    $.ajax({
+        url: 'uuzc/setHrAccount',
+        data: user,
+        method: 'POST',
+        async: false,
+        success: function(data) {
+            if(data) {
+                var result = data.result;
+                if(result == 'success') {
+                    toastr.success('设置HR账号成功');
+                    hrInfo = null; // 清空已查询的数据,重新加载
+                    setTimeout(window.location.href = 'http://www.ubtob.com/#/uuzcJob', 2000);
+                }
+                if(result == 'exist') {
+                    toastr.error('该企业HR账号已存在');
+                }
+                if(result == 'setFailure') {
+                    toastr.error('设置HR账号失败');
+                }
+            }
+        },
+        error: function (error) {
+            toastr.error(error);
+        }
+    });
+}
+
+/**
+ * 获取的用户信息存放,全局调用,不用多次发生请求
+ *
+ * @type {Array}
+ */
+var users = [];
+
+/**
+ * 获取当前企业已存在的用户的信息
+ */
+function getExistUser() {
+    if(users.length == 0) {
+        $.ajax('uuzc/existusers', {
+            dataType: 'json',
+            method: 'GET',
+            async: false,
+            success: function(data) {
+                users = data.content;
+                if(users.length == 0) {
+                    $('#userList').css('display','none');
+                }
+                var ul = document.getElementById("userList");
+                for(var i = 0; i < users.length; i++) {
+                    var li = document.createElement('li');
+                    var b = document.createElement('b');
+                    b.innerHTML = users[i].name;
+                    li.appendChild(b);
+                    var span = document.createElement('span');
+                    span.class = "phone"
+                    span.innerHTML = users[i].uid;
+                    li.appendChild(span);
+                    var span2 = document.createElement('span');
+                    span2.innerHTML = users[i].secondUID;
+                    li.appendChild(span2);
+                    li.id = 'btn_' + i;
+                    ul.appendChild(li);
+                    (function(i) {
+                        $("#btn_" + i ).click(function() {
+                            setAccount(users[i]);
+                            $('#userList').css('display','none');
+                        });
+                    })(i)
+                }
+            }
+        });
+    }
+}
+
+
+/**
+ * 选择现有的人员赋值
+ *
+ * @param user
+ */
+function setAccount(user) {
+    $('#username').val(user.name);
+    $('#useremail').val(user.secondUID);
+    $('#usertel').val(user.uid);
+    $('#useruu').val(user.dialectUID);
+}
+
+/**
+ * 相关提示信息
+ */
+function suspendMessage() {
+    toastr.error('网站正在升级中,敬请期待!');
+}
+
+/**
+ * 监听输入框值的变化设置联想
+ */
+$('#username').bind('input propertychange', function() {
+    var nameList = [];
+    $("#userList").find("li").remove();// 先清除以前的样式
+    for(var i = 0; i < users.length; i++) {
+        if(users[i].name.indexOf($('#username').val()) > -1) {
+            nameList.push(users[i]);
+        }
+    }
+    if(nameList.length == 0) {
+        $('#userList').css('display','none');
+    } else {
+        $('#userList').css('display','show');
+    }
+    var ul = document.getElementById("userList");
+    for(var i = 0; i < nameList.length; i++) {
+        var li = document.createElement('li');
+        var b = document.createElement('b');
+        b.innerHTML = nameList[i].name;
+        li.appendChild(b);
+        var span = document.createElement('span');
+        span.class = "phone"
+        span.innerHTML = nameList[i].uid;
+        li.appendChild(span);
+        var span2 = document.createElement('span');
+        span2.innerHTML = nameList[i].secondUID;
+        li.appendChild(span2);
+        li.id = 'btn_' + i;
+        ul.appendChild(li);
+        (function(i) {
+            $("#btn_" + i ).click(function() {
+                setAccount(nameList[i]);
+                $('#userList').css('display','none');
+            });
+        })(i)
+    }
+});
+
+$(function() {
+	'use strict';
+	
+	// 监听页面滚动
+	$(window).scroll(function() {
+		if($(window).scrollTop() >= 300) {
+			$('#nav').addClass('on');
+		} else {
+			$('#nav').removeClass('on');
+		}
+	});
+	
+	// 查询登录信息
+	getAccountInfo();
+
+	// 获取当前企业HR信息
+    getHrInfo();
+	
+	// 登录点击
+	$('.link-login').click(login);
+	
+	// 退出点击
+	$('.link-logout').click(logout);
+
+	// 点击链接到众创人才招聘(招聘)
+    $('.link-job-get').click(jobUuzcGet);
+
+    // 连接到众创招聘
+    $('.link-job').click(jobUuzc);
+
+    // 点击链接到众创人才招聘(求职)
+    $('.link-job-post').click(jobUuzcPost);
+
+    // 点击链接到众创人才招聘(设置hr)
+    $('.link-hr-set').click(jobUuzcGet);
+
+    // 添加hr账号(新增)
+    $('#addHrAccount').click(addHrAccount);
+
+    // 添加hr账户(现有)
+    $('#setHrAccount').click(setHrAccount);
+
+    // 获取当前企业用户信息
+    $('#existUsers').click(getExistUser);
+
+    // 点击众创链接给出提示
+    $('.x-link-info').click(suspendMessage);
+});

+ 415 - 0
src/main/webapp/resources/js/common/toastr.js

@@ -0,0 +1,415 @@
+/*
+ * Toastr
+ * Copyright 2012-2015
+ * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.
+ * All Rights Reserved.
+ * Use, reproduction, distribution, and modification of this code is subject to the terms and
+ * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php
+ *
+ * ARIA Support: Greta Krafsig
+ *
+ * Project: https://github.com/CodeSeven/toastr
+ */
+/* global define */
+; (function (define) {
+    define(['jquery'], function ($) {
+        return (function () {
+            var $container;
+            var listener;
+            var toastId = 0;
+            var toastType = {
+                error: 'error',
+                info: 'info',
+                success: 'success',
+                warning: 'warning'
+            };
+
+            var toastr = {
+                clear: clear,
+                remove: remove,
+                error: error,
+                getContainer: getContainer,
+                info: info,
+                options: {},
+                subscribe: subscribe,
+                success: success,
+                version: '2.1.1',
+                warning: warning
+            };
+
+            var previousToast;
+
+            return toastr;
+
+            ////////////////
+
+            function error(message, title, optionsOverride) {
+                return notify({
+                    type: toastType.error,
+                    iconClass: getOptions().iconClasses.error,
+                    message: message,
+                    optionsOverride: optionsOverride,
+                    title: title
+                });
+            }
+
+            function getContainer(options, create) {
+                if (!options) { options = getOptions(); }
+                $container = $('#' + options.containerId);
+                if ($container.length) {
+                    return $container;
+                }
+                if (create) {
+                    $container = createContainer(options);
+                }
+                return $container;
+            }
+
+            function info(message, title, optionsOverride) {
+                return notify({
+                    type: toastType.info,
+                    iconClass: getOptions().iconClasses.info,
+                    message: message,
+                    optionsOverride: optionsOverride,
+                    title: title
+                });
+            }
+
+            function subscribe(callback) {
+                listener = callback;
+            }
+
+            function success(message, title, optionsOverride) {
+                return notify({
+                    type: toastType.success,
+                    iconClass: getOptions().iconClasses.success,
+                    message: message,
+                    optionsOverride: optionsOverride,
+                    title: title
+                });
+            }
+
+            function warning(message, title, optionsOverride) {
+                return notify({
+                    type: toastType.warning,
+                    iconClass: getOptions().iconClasses.warning,
+                    message: message,
+                    optionsOverride: optionsOverride,
+                    title: title
+                });
+            }
+
+            function clear($toastElement, clearOptions) {
+                var options = getOptions();
+                if (!$container) { getContainer(options); }
+                if (!clearToast($toastElement, options, clearOptions)) {
+                    clearContainer(options);
+                }
+            }
+
+            function remove($toastElement) {
+                var options = getOptions();
+                if (!$container) { getContainer(options); }
+                if ($toastElement && $(':focus', $toastElement).length === 0) {
+                    removeToast($toastElement);
+                    return;
+                }
+                if ($container.children().length) {
+                    $container.remove();
+                }
+            }
+
+            // internal functions
+
+            function clearContainer (options) {
+                var toastsToClear = $container.children();
+                for (var i = toastsToClear.length - 1; i >= 0; i--) {
+                    clearToast($(toastsToClear[i]), options);
+                }
+            }
+
+            function clearToast ($toastElement, options, clearOptions) {
+                var force = clearOptions && clearOptions.force ? clearOptions.force : false;
+                if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {
+                    $toastElement[options.hideMethod]({
+                        duration: options.hideDuration,
+                        easing: options.hideEasing,
+                        complete: function () { removeToast($toastElement); }
+                    });
+                    return true;
+                }
+                return false;
+            }
+
+            function createContainer(options) {
+                $container = $('<div/>')
+                    .attr('id', options.containerId)
+                    .addClass(options.positionClass)
+                    .attr('aria-live', 'polite')
+                    .attr('role', 'alert');
+
+                $container.appendTo($(options.target));
+                return $container;
+            }
+
+            function getDefaults() {
+                return {
+                    tapToDismiss: true,
+                    toastClass: 'toast',
+                    containerId: 'toast-container',
+                    debug: false,
+
+                    showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery
+                    showDuration: 300,
+                    showEasing: 'swing', //swing and linear are built into jQuery
+                    onShown: undefined,
+                    hideMethod: 'fadeOut',
+                    hideDuration: 1000,
+                    hideEasing: 'swing',
+                    onHidden: undefined,
+
+                    extendedTimeOut: 1000,
+                    iconClasses: {
+                        error: 'toast-error',
+                        info: 'toast-info',
+                        success: 'toast-success',
+                        warning: 'toast-warning'
+                    },
+                    iconClass: 'toast-info',
+                    positionClass: 'toast-top-right',
+                    timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky
+                    titleClass: 'toast-title',
+                    messageClass: 'toast-message',
+                    target: 'body',
+                    closeHtml: '<button type="button">&times;</button>',
+                    newestOnTop: true,
+                    preventDuplicates: false,
+                    progressBar: false
+                };
+            }
+
+            function publish(args) {
+                if (!listener) { return; }
+                listener(args);
+            }
+
+            function notify(map) {
+                var options = getOptions();
+                var iconClass = map.iconClass || options.iconClass;
+
+                if (typeof (map.optionsOverride) !== 'undefined') {
+                    options = $.extend(options, map.optionsOverride);
+                    iconClass = map.optionsOverride.iconClass || iconClass;
+                }
+
+                if (shouldExit(options, map)) { return; }
+
+                toastId++;
+
+                $container = getContainer(options, true);
+
+                var intervalId = null;
+                var $toastElement = $('<div/>');
+                var $titleElement = $('<div/>');
+                var $messageElement = $('<div/>');
+                var $progressElement = $('<div/>');
+                var $closeElement = $(options.closeHtml);
+                var progressBar = {
+                    intervalId: null,
+                    hideEta: null,
+                    maxHideTime: null
+                };
+                var response = {
+                    toastId: toastId,
+                    state: 'visible',
+                    startTime: new Date(),
+                    options: options,
+                    map: map
+                };
+
+                personalizeToast();
+
+                displayToast();
+
+                handleEvents();
+
+                publish(response);
+
+                if (options.debug && console) {
+                    console.log(response);
+                }
+
+                return $toastElement;
+
+                function personalizeToast() {
+                    setIcon();
+                    setTitle();
+                    setMessage();
+                    setCloseButton();
+                    setProgressBar();
+                    setSequence();
+                }
+
+                function handleEvents() {
+                    $toastElement.hover(stickAround, delayedHideToast);
+                    if (!options.onclick && options.tapToDismiss) {
+                        $toastElement.click(hideToast);
+                    }
+
+                    if (options.closeButton && $closeElement) {
+                        $closeElement.click(function (event) {
+                            if (event.stopPropagation) {
+                                event.stopPropagation();
+                            } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {
+                                event.cancelBubble = true;
+                            }
+                            hideToast(true);
+                        });
+                    }
+
+                    if (options.onclick) {
+                        $toastElement.click(function () {
+                            options.onclick();
+                            hideToast();
+                        });
+                    }
+                }
+
+                function displayToast() {
+                    $toastElement.hide();
+
+                    $toastElement[options.showMethod](
+                        {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}
+                    );
+
+                    if (options.timeOut > 0) {
+                        intervalId = setTimeout(hideToast, options.timeOut);
+                        progressBar.maxHideTime = parseFloat(options.timeOut);
+                        progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;
+                        if (options.progressBar) {
+                            progressBar.intervalId = setInterval(updateProgress, 10);
+                        }
+                    }
+                }
+
+                function setIcon() {
+                    if (map.iconClass) {
+                        $toastElement.addClass(options.toastClass).addClass(iconClass);
+                    }
+                }
+
+                function setSequence() {
+                    if (options.newestOnTop) {
+                        $container.prepend($toastElement);
+                    } else {
+                        $container.append($toastElement);
+                    }
+                }
+
+                function setTitle() {
+                    if (map.title) {
+                        $titleElement.append(map.title).addClass(options.titleClass);
+                        $toastElement.append($titleElement);
+                    }
+                }
+
+                function setMessage() {
+                    if (map.message) {
+                        $messageElement.append(map.message).addClass(options.messageClass);
+                        $toastElement.append($messageElement);
+                    }
+                }
+
+                function setCloseButton() {
+                    if (options.closeButton) {
+                        $closeElement.addClass('toast-close-button').attr('role', 'button');
+                        $toastElement.prepend($closeElement);
+                    }
+                }
+
+                function setProgressBar() {
+                    if (options.progressBar) {
+                        $progressElement.addClass('toast-progress');
+                        $toastElement.prepend($progressElement);
+                    }
+                }
+
+                function shouldExit(options, map) {
+                    if (options.preventDuplicates) {
+                        if (map.message === previousToast) {
+                            return true;
+                        } else {
+                            previousToast = map.message;
+                        }
+                    }
+                    return false;
+                }
+
+                function hideToast(override) {
+                    if ($(':focus', $toastElement).length && !override) {
+                        return;
+                    }
+                    clearTimeout(progressBar.intervalId);
+                    return $toastElement[options.hideMethod]({
+                        duration: options.hideDuration,
+                        easing: options.hideEasing,
+                        complete: function () {
+                            removeToast($toastElement);
+                            if (options.onHidden && response.state !== 'hidden') {
+                                options.onHidden();
+                            }
+                            response.state = 'hidden';
+                            response.endTime = new Date();
+                            publish(response);
+                        }
+                    });
+                }
+
+                function delayedHideToast() {
+                    if (options.timeOut > 0 || options.extendedTimeOut > 0) {
+                        intervalId = setTimeout(hideToast, options.extendedTimeOut);
+                        progressBar.maxHideTime = parseFloat(options.extendedTimeOut);
+                        progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;
+                    }
+                }
+
+                function stickAround() {
+                    clearTimeout(intervalId);
+                    progressBar.hideEta = 0;
+                    $toastElement.stop(true, true)[options.showMethod](
+                        {duration: options.showDuration, easing: options.showEasing}
+                    );
+                }
+
+                function updateProgress() {
+                    var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;
+                    $progressElement.width(percentage + '%');
+                }
+            }
+
+            function getOptions() {
+                return $.extend({}, getDefaults(), toastr.options);
+            }
+
+            function removeToast($toastElement) {
+                if (!$container) { $container = getContainer(); }
+                if ($toastElement.is(':visible')) {
+                    return;
+                }
+                $toastElement.remove();
+                $toastElement = null;
+                if ($container.children().length === 0) {
+                    $container.remove();
+                    previousToast = undefined;
+                }
+            }
+
+        })();
+    });
+}(typeof define === 'function' && define.amd ? define : function (deps, factory) {
+    if (typeof module !== 'undefined' && module.exports) { //Node
+        module.exports = factory(require('jquery'));
+    } else {
+        window['toastr'] = factory(window['jQuery']);
+    }
+}));

+ 56 - 0
src/main/webapp/resources/js/index.js

@@ -0,0 +1,56 @@
+var app = {
+    loading: function(is) {
+        $('#loading').css('display', is ? 'block': 'none');
+    },
+    info: function(message, title, position) {
+        toastr.info(message, title, {positionClass: 'toast-' + (position || 'top-center'), timeOut: 1000});
+    },
+    error: function(message, title, position) {
+        toastr.error(message, title, {positionClass: 'toast-' + (position || 'top-center')});
+    },
+    loadNews: function (type) {
+        var url = 'https://news.usoftchina.com/news/created/v2';
+        $.ajax({
+            type: "GET",
+            url: url,
+            data: {pagenumber: app.pageNumber, pagesize: app.pageSize, taxonomySlug: type},
+            dataType: "json",
+            success: function(data) {
+                var html = '';
+                if (type === 'companyDynamic') {
+                    html+= `<h5>优软快讯</h5>`
+                } else if(type === 'tradeNews') {
+                    html+= `<h5>行业动态</h5>`
+                } else {
+                    html+= `<h5>国家政策</h5>`
+                }
+                for (var i = 0; i < data.content.length; i++) {
+
+                }
+                html += `<div class="content">
+					<a href="news/${data.content[0].id}">
+						<img src="${data.content[0].thumbnail}">
+						<p>${data.content[0].title}</p>
+					</a>
+				</div>
+				<a href="news/${data.content[1].id}">${data.content[1].title}</a>
+				<a href="news/${data.content[2].id}">${data.content[2].title}</a>`
+                $('#' + type).html(html)
+            }
+        });
+    },
+    init: function() {
+        app.pageNumber = 1;
+        app.pageSize = 3;
+        app.slug1 = 'companyDynamic';
+        app.slug2 = 'tradeNews';
+        app.slug3 = 'Wisdomproducingcity';
+        app.loadNews(app.slug1)
+        app.loadNews(app.slug2)
+        app.loadNews(app.slug3)
+    }
+};
+$(document).ready(function() {
+    app.init();
+});
+

+ 86 - 0
src/main/webapp/resources/js/index/app.js

@@ -0,0 +1,86 @@
+$(function() {
+	'use strict';
+	
+	// 幻灯片效果
+	$('.carousel').carousel({
+		interval: 3000
+	});
+	
+	// 通过哈希值切换幻灯片
+	var onHashChange = function() {
+		var hash = (window.location.hash && window.location.hash.substring(1)) || null;
+		switch(hash) {
+			case '/finance':
+				$('.carousel').carousel(4); break;
+			case '/public':
+				$('.carousel').carousel(8); break;
+			case '/member':
+				$('.carousel').carousel(9); break;
+			case '/help':
+				$('.carousel').carousel(7); break;
+            case '/uuzcJob':
+                $('.carousel').carousel(5); break;
+		}
+	};
+	
+	onHashChange();
+	
+	// 监听哈希值变化
+	window.onhashchange = function() {
+		onHashChange();
+	};
+	
+	var tour = new Tour({
+		template: "<div class='popover tour'>" +
+					"<div class='arrow'></div>" + 
+					"<div class='popover-title text-info'></div>" +
+					"<div class='popover-content'></div>" +
+					"<div class='popover-navigation'>" +
+						"<button class='btn btn-default btn-sm' data-role='prev'>« 上一步</button>" +
+						"<span data-role='separator'>&nbsp;</span>" +
+						"<button class='btn btn-default btn-sm' data-role='next'>下一步 »</button>" +
+						"<button class='btn btn-default btn-sm' data-role='end'>结束引导</button>" +
+					"</div>" +
+				"</div>",
+		steps: [{
+			element: '#logo',
+			title: '这是优软云的新Logo哟',
+			content: '点击这里可以返回到优软云首页',
+			placement: 'bottom',
+			backdrop: true
+		}, {
+			element: '.link-login',
+			title: '点击这里去登录',
+			content: '使用原有的优软商务平台的账号和密码就可以登录啦',
+			placement: 'bottom',
+			backdrop: true
+		}, {
+			element: '.link-b2b',
+			title: '点击这里进入原先的优软商务平台',
+			content: '优软商务平台搬到这里啦,点进去就能看到客户给你下的新的采购单咯',
+			placement: 'bottom',
+			backdrop: true
+		}, {
+			element: '.qrcode-uu',
+			title: '手机UU客户端二维码',
+			content: '扫描下载手机UU客户端,全新的移动办公体验',
+			placement: 'top',
+			backdrop: true
+		}, {
+			element: '.qrcode-uas',
+			title: 'UAS公众号二维码',
+			content: '扫描关注UAS微信公众号,掌握最新动态',
+			placement: 'top',
+			backdrop: true
+		}],
+		onEnd: function() {
+			// 介绍滚动至页面最顶部
+			$(document.body).animate({scrollTop: 0}, 300);
+		}
+	});
+	
+	// 引导提示
+	tour.init();
+	tour.start();
+	
+});

+ 155 - 0
src/main/webapp/resources/js/news.js

@@ -0,0 +1,155 @@
+var app = {
+    loading: function(is) {
+        $('#loading').css('display', is ? 'block': 'none');
+    },
+    info: function(message, title, position) {
+        toastr.info(message, title, {positionClass: 'toast-' + (position || 'top-center'), timeOut: 1000});
+    },
+    error: function(message, title, position) {
+        toastr.error(message, title, {positionClass: 'toast-' + (position || 'top-center')});
+    },
+    setMounth: function (type) {
+        switch (type) {
+            case 0 : return 'Jan'
+            case 1 : return 'Feb'
+            case 2 : return 'Mar'
+            case 3 : return 'Apr'
+            case 4 : return 'May'
+            case 5 : return 'Jun'
+            case 6 : return 'Jul'
+            case 7 : return 'Aug'
+            case 8 : return 'Sep'
+            case 9 : return 'Oct'
+            case 10 : return 'Nov'
+            case 11 : return 'Dec'
+        }
+    },
+    getNews: function () {
+        var url = 'https://news.usoftchina.com/news/viewcount/v2';
+        $.ajax({
+            type: "GET",
+            url: url,
+            data: {pagenumber: 1, pagesize: app.pageSize},
+            dataType: "json",
+            success: function(data) {
+                var html = '';
+                for (var i = 0; i < data.content.length; i++) {
+                    html += `<a href= "news/${data.content[i].id}" class="list">
+                                <p>${data.content[i].title}</p>
+                                <span>${data.content[i].viewCount}</span>
+                                <span>${new Date(data.content[i].created).Format("yyyy-MM-dd")}</span>
+                            </a>`
+                }
+                $('#titleList').html(html)
+            }
+        });
+    },
+    loadNews: function () {
+        var url = 'https://news.usoftchina.com/news/created/v2';
+        $.ajax({
+            type: "GET",
+            url: url,
+            data: {pagenumber: app.pageNumber, pagesize: app.pageSize, taxonomySlug: app.slug},
+            dataType: "json",
+            success: function(data) {
+                var html = '';
+                for (var i = 0; i < data.content.length; i++) {
+                    html += `<a href="news/${data.content[i].id}" class="item">
+					<div class="item-left">
+						<div class="date-time">
+							<p>${new Date(data.content[i].created).getDate()}</p>
+							<p>${app.setMounth(new Date(data.content[i].created).getMonth())}</p>
+						</div>
+						<div class="img">
+							<img src="${data.content[i].thumbnail}">
+						</div>
+					</div>
+					<div class="item-right">
+						<p>${data.content[i].title}</p>
+						<span>${data.content[i].summary}</span>
+						<span>${data.content[i].viewCount}</span>
+					</div>
+				</a>`
+                }
+                $('#group').html(html)
+                app.pageList(data.count)
+            }
+        });
+    },
+    loadPageNews: function (type) {
+        var url = 'https://news.usoftchina.com/news/'+type;
+        $.ajax({
+            type: "GET",
+            url: url,
+            data: {},
+            dataType: "json",
+            success: function(data) {
+                var html = ''
+                html += `<div class="details">
+					<h4>${data.title}</h4>
+					<span>${new Date(data.created).Format("yyyy-MM-dd")}</span> <span>${data.viewCount}</span>
+				</div>`
+                html+=data.content
+                $('#group').html(html)
+            }
+        });
+    },
+    pageList: function(type) {
+        $('#page').jqPaginator({
+            totalCounts: type,
+            pageSize: app.pageSize,
+            currentPage: app.pageNumber,
+            first: '<li class="prev"><a href="javascript:;">首页</a></li>',
+            prev: '<li class="prev"><a href="javascript:;">上一页</a></li>',
+            next: '<li class="next"><a href="javascript:;">下一页</a></li>',
+            last: '<li class="prev"><a href="javascript:;">末页</a></li>',
+            page: '<li class="page"><a href="javascript:;">{{page}}</a></li>',
+            onPageChange: function (page) {
+                if (app.pageNumber !== page) {
+                    app.pageNumber = page;
+                    app.loadNews()
+                }
+            }
+        });
+    },
+    init: function() {
+        app.pageNumber = 1;
+        app.pageSize = 10;
+        app.slug = 'companyDynamic';
+        var idArr = window.location.pathname.split('/')
+        var id = Number(idArr[idArr.length-1])
+        if (isNaN(id)) {
+            app.loadNews()
+        } else {
+            app.loadPageNews(id)
+        }
+        app.getNews(app.pageNumber, app.pageSize)
+        $('.news-content .head ul>li>a').click(function (e) {
+            e.preventDefault();
+            $(this).parent().addClass('active').siblings().removeClass('active');
+            app.slug = $(this).attr('href')
+            app.pageNumber = 1;
+            app.loadNews()
+        })
+    }
+};
+$(document).ready(function() {
+    app.init();
+});
+
+Date.prototype.Format = function (fmt) { //author: meizz
+    var o = {
+        "M+": this.getMonth() + 1, //月份
+        "d+": this.getDate(), //日
+        "h+": this.getHours(), //小时
+        "m+": this.getMinutes(), //分
+        "s+": this.getSeconds(), //秒
+        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
+        "S": this.getMilliseconds() //毫秒
+    };
+    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
+    for (var k in o)
+        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
+    return fmt;
+}
+

+ 13 - 0
src/main/webapp/resources/js/teamwork.js

@@ -0,0 +1,13 @@
+function init(){
+    var map = new AMap.Map('map', {
+        center: [113.946487,22.534887],
+        zoom: 17,
+        resizeEnable: true
+    });
+   var marker = new AMap.Marker({
+        position: [113.946487,22.534887],
+        title: '深圳市优软科技有限公司',
+        map: map
+    });
+}
+init();

+ 857 - 0
src/main/webapp/resources/lib/bootstrap-tour/css/bootstrap-tour-standalone.css

@@ -0,0 +1,857 @@
+/* ========================================================================
+ * bootstrap-tour - v0.11.0
+ * http://bootstraptour.com
+ * ========================================================================
+ * Copyright 2012-2015 Ulrich Sossou
+ *
+ * ========================================================================
+ * Licensed under the MIT License (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     https://opensource.org/licenses/MIT
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================================
+ */
+
+/*!
+ * Bootstrap v3.1.0 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+.btn {
+  display: inline-block;
+  margin-bottom: 0;
+  font-weight: normal;
+  text-align: center;
+  vertical-align: middle;
+  touch-action: manipulation;
+  cursor: pointer;
+  background-image: none;
+  border: 1px solid transparent;
+  white-space: nowrap;
+  padding: 6px 12px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  border-radius: 4px;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus,
+.btn.focus {
+  color: #333333;
+  text-decoration: none;
+}
+.btn:active,
+.btn.active {
+  outline: 0;
+  background-image: none;
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+  cursor: not-allowed;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+a.btn.disabled,
+fieldset[disabled] a.btn {
+  pointer-events: none;
+}
+.btn-default {
+  color: #333333;
+  background-color: #ffffff;
+  border-color: #cccccc;
+}
+.btn-default:focus,
+.btn-default.focus {
+  color: #333333;
+  background-color: #e6e6e6;
+  border-color: #8c8c8c;
+}
+.btn-default:hover {
+  color: #333333;
+  background-color: #e6e6e6;
+  border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+  color: #333333;
+  background-color: #e6e6e6;
+  border-color: #adadad;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open > .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open > .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open > .dropdown-toggle.btn-default.focus {
+  color: #333333;
+  background-color: #d4d4d4;
+  border-color: #8c8c8c;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+  background-image: none;
+}
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus {
+  background-color: #ffffff;
+  border-color: #cccccc;
+}
+.btn-default .badge {
+  color: #ffffff;
+  background-color: #333333;
+}
+.btn-primary {
+  color: #ffffff;
+  background-color: #337ab7;
+  border-color: #2e6da4;
+}
+.btn-primary:focus,
+.btn-primary.focus {
+  color: #ffffff;
+  background-color: #286090;
+  border-color: #122b40;
+}
+.btn-primary:hover {
+  color: #ffffff;
+  background-color: #286090;
+  border-color: #204d74;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+  color: #ffffff;
+  background-color: #286090;
+  border-color: #204d74;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open > .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open > .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open > .dropdown-toggle.btn-primary.focus {
+  color: #ffffff;
+  background-color: #204d74;
+  border-color: #122b40;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+  background-image: none;
+}
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus {
+  background-color: #337ab7;
+  border-color: #2e6da4;
+}
+.btn-primary .badge {
+  color: #337ab7;
+  background-color: #ffffff;
+}
+.btn-success {
+  color: #ffffff;
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success:focus,
+.btn-success.focus {
+  color: #ffffff;
+  background-color: #449d44;
+  border-color: #255625;
+}
+.btn-success:hover {
+  color: #ffffff;
+  background-color: #449d44;
+  border-color: #398439;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+  color: #ffffff;
+  background-color: #449d44;
+  border-color: #398439;
+}
+.btn-success:active:hover,
+.btn-success.active:hover,
+.open > .dropdown-toggle.btn-success:hover,
+.btn-success:active:focus,
+.btn-success.active:focus,
+.open > .dropdown-toggle.btn-success:focus,
+.btn-success:active.focus,
+.btn-success.active.focus,
+.open > .dropdown-toggle.btn-success.focus {
+  color: #ffffff;
+  background-color: #398439;
+  border-color: #255625;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+  background-image: none;
+}
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus {
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success .badge {
+  color: #5cb85c;
+  background-color: #ffffff;
+}
+.btn-info {
+  color: #ffffff;
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info:focus,
+.btn-info.focus {
+  color: #ffffff;
+  background-color: #31b0d5;
+  border-color: #1b6d85;
+}
+.btn-info:hover {
+  color: #ffffff;
+  background-color: #31b0d5;
+  border-color: #269abc;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+  color: #ffffff;
+  background-color: #31b0d5;
+  border-color: #269abc;
+}
+.btn-info:active:hover,
+.btn-info.active:hover,
+.open > .dropdown-toggle.btn-info:hover,
+.btn-info:active:focus,
+.btn-info.active:focus,
+.open > .dropdown-toggle.btn-info:focus,
+.btn-info:active.focus,
+.btn-info.active.focus,
+.open > .dropdown-toggle.btn-info.focus {
+  color: #ffffff;
+  background-color: #269abc;
+  border-color: #1b6d85;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+  background-image: none;
+}
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus {
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info .badge {
+  color: #5bc0de;
+  background-color: #ffffff;
+}
+.btn-warning {
+  color: #ffffff;
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning:focus,
+.btn-warning.focus {
+  color: #ffffff;
+  background-color: #ec971f;
+  border-color: #985f0d;
+}
+.btn-warning:hover {
+  color: #ffffff;
+  background-color: #ec971f;
+  border-color: #d58512;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+  color: #ffffff;
+  background-color: #ec971f;
+  border-color: #d58512;
+}
+.btn-warning:active:hover,
+.btn-warning.active:hover,
+.open > .dropdown-toggle.btn-warning:hover,
+.btn-warning:active:focus,
+.btn-warning.active:focus,
+.open > .dropdown-toggle.btn-warning:focus,
+.btn-warning:active.focus,
+.btn-warning.active.focus,
+.open > .dropdown-toggle.btn-warning.focus {
+  color: #ffffff;
+  background-color: #d58512;
+  border-color: #985f0d;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+  background-image: none;
+}
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus {
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning .badge {
+  color: #f0ad4e;
+  background-color: #ffffff;
+}
+.btn-danger {
+  color: #ffffff;
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger:focus,
+.btn-danger.focus {
+  color: #ffffff;
+  background-color: #c9302c;
+  border-color: #761c19;
+}
+.btn-danger:hover {
+  color: #ffffff;
+  background-color: #c9302c;
+  border-color: #ac2925;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+  color: #ffffff;
+  background-color: #c9302c;
+  border-color: #ac2925;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open > .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open > .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open > .dropdown-toggle.btn-danger.focus {
+  color: #ffffff;
+  background-color: #ac2925;
+  border-color: #761c19;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+  background-image: none;
+}
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus {
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger .badge {
+  color: #d9534f;
+  background-color: #ffffff;
+}
+.btn-link {
+  color: #337ab7;
+  font-weight: normal;
+  border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+  background-color: transparent;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+  border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+  color: #23527c;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+  color: #777777;
+  text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.3333333;
+  border-radius: 6px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+  padding: 1px 5px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-block {
+  display: block;
+  width: 100%;
+}
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%;
+}
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+  position: relative;
+  float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+  z-index: 2;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+  margin-left: -1px;
+}
+.btn-toolbar {
+  margin-left: -5px;
+}
+.btn-toolbar .btn,
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+  float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+  margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+  border-bottom-right-radius: 0;
+  border-top-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+  border-bottom-left-radius: 0;
+  border-top-left-radius: 0;
+}
+.btn-group > .btn-group {
+  float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-bottom-right-radius: 0;
+  border-top-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-bottom-left-radius: 0;
+  border-top-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+  padding-left: 12px;
+  padding-right: 12px;
+}
+.btn-group.open .dropdown-toggle {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+.btn .caret {
+  margin-left: 0;
+}
+.btn-lg .caret {
+  border-width: 5px 5px 0;
+  border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+  border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+  display: block;
+  float: none;
+  width: 100%;
+  max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+  float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+  margin-top: -1px;
+  margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.btn-group-justified {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+  float: none;
+  display: table-cell;
+  width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+  width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+  left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+  position: absolute;
+  clip: rect(0, 0, 0, 0);
+  pointer-events: none;
+}
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1060;
+  display: none;
+  max-width: 276px;
+  padding: 1px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-style: normal;
+  font-weight: normal;
+  letter-spacing: normal;
+  line-break: auto;
+  line-height: 1.42857143;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  white-space: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  font-size: 14px;
+  background-color: #ffffff;
+  background-clip: padding-box;
+  border: 1px solid #cccccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+}
+.popover.top {
+  margin-top: -10px;
+}
+.popover.right {
+  margin-left: 10px;
+}
+.popover.bottom {
+  margin-top: 10px;
+}
+.popover.left {
+  margin-left: -10px;
+}
+.popover-title {
+  margin: 0;
+  padding: 8px 14px;
+  font-size: 14px;
+  background-color: #f7f7f7;
+  border-bottom: 1px solid #ebebeb;
+  border-radius: 5px 5px 0 0;
+}
+.popover-content {
+  padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+  position: absolute;
+  display: block;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.popover > .arrow {
+  border-width: 11px;
+}
+.popover > .arrow:after {
+  border-width: 10px;
+  content: "";
+}
+.popover.top > .arrow {
+  left: 50%;
+  margin-left: -11px;
+  border-bottom-width: 0;
+  border-top-color: #999999;
+  border-top-color: rgba(0, 0, 0, 0.25);
+  bottom: -11px;
+}
+.popover.top > .arrow:after {
+  content: " ";
+  bottom: 1px;
+  margin-left: -10px;
+  border-bottom-width: 0;
+  border-top-color: #ffffff;
+}
+.popover.right > .arrow {
+  top: 50%;
+  left: -11px;
+  margin-top: -11px;
+  border-left-width: 0;
+  border-right-color: #999999;
+  border-right-color: rgba(0, 0, 0, 0.25);
+}
+.popover.right > .arrow:after {
+  content: " ";
+  left: 1px;
+  bottom: -10px;
+  border-left-width: 0;
+  border-right-color: #ffffff;
+}
+.popover.bottom > .arrow {
+  left: 50%;
+  margin-left: -11px;
+  border-top-width: 0;
+  border-bottom-color: #999999;
+  border-bottom-color: rgba(0, 0, 0, 0.25);
+  top: -11px;
+}
+.popover.bottom > .arrow:after {
+  content: " ";
+  top: 1px;
+  margin-left: -10px;
+  border-top-width: 0;
+  border-bottom-color: #ffffff;
+}
+.popover.left > .arrow {
+  top: 50%;
+  right: -11px;
+  margin-top: -11px;
+  border-right-width: 0;
+  border-left-color: #999999;
+  border-left-color: rgba(0, 0, 0, 0.25);
+}
+.popover.left > .arrow:after {
+  content: " ";
+  right: 1px;
+  border-right-width: 0;
+  border-left-color: #ffffff;
+  bottom: -10px;
+}
+.fade {
+  opacity: 0;
+  -webkit-transition: opacity 0.15s linear;
+  -o-transition: opacity 0.15s linear;
+  transition: opacity 0.15s linear;
+}
+.fade.in {
+  opacity: 1;
+}
+.collapse {
+  display: none;
+}
+.collapse.in {
+  display: block;
+}
+tr.collapse.in {
+  display: table-row;
+}
+tbody.collapse.in {
+  display: table-row-group;
+}
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  -webkit-transition-property: height, visibility;
+  transition-property: height, visibility;
+  -webkit-transition-duration: 0.35s;
+  transition-duration: 0.35s;
+  -webkit-transition-timing-function: ease;
+  transition-timing-function: ease;
+}
+.tour-backdrop {
+  position: absolute;
+  z-index: 1100;
+  background-color: #000;
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.popover[class*="tour-"] {
+  z-index: 1102;
+}
+.popover[class*="tour-"] .popover-navigation {
+  padding: 9px 14px;
+  overflow: hidden;
+}
+.popover[class*="tour-"] .popover-navigation *[data-role="end"] {
+  float: right;
+}
+.popover[class*="tour-"] .popover-navigation *[data-role="prev"],
+.popover[class*="tour-"] .popover-navigation *[data-role="next"],
+.popover[class*="tour-"] .popover-navigation *[data-role="end"] {
+  cursor: pointer;
+}
+.popover[class*="tour-"] .popover-navigation *[data-role="prev"].disabled,
+.popover[class*="tour-"] .popover-navigation *[data-role="next"].disabled,
+.popover[class*="tour-"] .popover-navigation *[data-role="end"].disabled {
+  cursor: default;
+}
+.popover[class*="tour-"].orphan {
+  position: fixed;
+  margin-top: 0;
+}
+.popover[class*="tour-"].orphan .arrow {
+  display: none;
+}

Файловите разлики са ограничени, защото са твърде много
+ 25 - 0
src/main/webapp/resources/lib/bootstrap-tour/css/bootstrap-tour-standalone.min.css


+ 55 - 0
src/main/webapp/resources/lib/bootstrap-tour/css/bootstrap-tour.css

@@ -0,0 +1,55 @@
+/* ========================================================================
+ * bootstrap-tour - v0.11.0
+ * http://bootstraptour.com
+ * ========================================================================
+ * Copyright 2012-2015 Ulrich Sossou
+ *
+ * ========================================================================
+ * Licensed under the MIT License (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     https://opensource.org/licenses/MIT
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================================
+ */
+
+.tour-backdrop {
+  position: absolute;
+  z-index: 1100;
+  background-color: #000;
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.popover[class*="tour-"] {
+  z-index: 1102;
+}
+.popover[class*="tour-"] .popover-navigation {
+  padding: 9px 14px;
+  overflow: hidden;
+}
+.popover[class*="tour-"] .popover-navigation *[data-role="end"] {
+  float: right;
+}
+.popover[class*="tour-"] .popover-navigation *[data-role="prev"],
+.popover[class*="tour-"] .popover-navigation *[data-role="next"],
+.popover[class*="tour-"] .popover-navigation *[data-role="end"] {
+  cursor: pointer;
+}
+.popover[class*="tour-"] .popover-navigation *[data-role="prev"].disabled,
+.popover[class*="tour-"] .popover-navigation *[data-role="next"].disabled,
+.popover[class*="tour-"] .popover-navigation *[data-role="end"].disabled {
+  cursor: default;
+}
+.popover[class*="tour-"].orphan {
+  position: fixed;
+  margin-top: 0;
+}
+.popover[class*="tour-"].orphan .arrow {
+  display: none;
+}

Някои файлове не бяха показани, защото твърде много файлове са промени