Quellcode durchsuchen

Merge branch 'feature-201807-wangcz' into dev

# Conflicts:
#	src/main/java/com/uas/platform/b2b/controller/EnterpriseController.java
#	src/main/webapp/resources/js/index/services/Account.js
Administrator vor 7 Jahren
Ursprung
Commit
cfab44b8ea
31 geänderte Dateien mit 1759 neuen und 571 gelöschten Zeilen
  1. 164 144
      src/main/java/com/uas/platform/b2b/controller/EnterpriseController.java
  2. 228 227
      src/main/webapp/WEB-INF/views/normal/index.html
  3. 438 72
      src/main/webapp/resources/css/index.css
  4. BIN
      src/main/webapp/resources/img/all/banner-cuxiao03.png
  5. BIN
      src/main/webapp/resources/img/all/hot.png
  6. BIN
      src/main/webapp/resources/img/all/logo_uas.png
  7. BIN
      src/main/webapp/resources/img/all/uas_mall.png
  8. BIN
      src/main/webapp/resources/img/footer/credit01.jpg
  9. BIN
      src/main/webapp/resources/img/footer/credit02.jpg
  10. BIN
      src/main/webapp/resources/img/footer/credit03.jpg
  11. BIN
      src/main/webapp/resources/img/footer/credit04.jpg
  12. BIN
      src/main/webapp/resources/img/footer/credit05.jpg
  13. BIN
      src/main/webapp/resources/img/footer/qrcode_mall.png
  14. BIN
      src/main/webapp/resources/img/footer/qrcode_uas.png
  15. BIN
      src/main/webapp/resources/img/left/gonggao.png
  16. BIN
      src/main/webapp/resources/img/left/icon_01.png
  17. 6 0
      src/main/webapp/resources/js/common/directives.js
  18. 16 0
      src/main/webapp/resources/js/common/services.js
  19. 320 51
      src/main/webapp/resources/js/index/app.js
  20. 4 2
      src/main/webapp/resources/js/index/main.js
  21. 79 75
      src/main/webapp/resources/js/index/services/Account.js
  22. 126 0
      src/main/webapp/resources/lib/treeview/css/angular.treeview.css
  23. BIN
      src/main/webapp/resources/lib/treeview/img/icon_02.png
  24. BIN
      src/main/webapp/resources/lib/treeview/img/icon_03.png
  25. BIN
      src/main/webapp/resources/lib/treeview/img/icon_04.png
  26. BIN
      src/main/webapp/resources/lib/treeview/img/icon_05.png
  27. BIN
      src/main/webapp/resources/lib/treeview/img/icon_06.png
  28. 99 0
      src/main/webapp/resources/lib/treeview/js/angular.treeview.js
  29. 9 0
      src/main/webapp/resources/lib/treeview/js/angular.treeview.min.js
  30. 237 0
      src/main/webapp/resources/tpl/index/common/header.html
  31. 33 0
      src/main/webapp/resources/tpl/index/common/leftAll.html

+ 164 - 144
src/main/java/com/uas/platform/b2b/controller/EnterpriseController.java

@@ -1,144 +1,164 @@
-package com.uas.platform.b2b.controller;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import com.alibaba.fastjson.JSON;
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.GrowthProcess;
-import com.uas.platform.b2b.model.ShipAddress;
-import com.uas.platform.b2b.service.EnterpriseService;
-import com.uas.platform.b2b.service.GrowthService;
-import com.uas.platform.b2b.service.ShipAddressService;
-import com.uas.platform.b2b.service.UserService;
-import com.uas.platform.b2b.support.SystemSession;
-
-/**
- * 账户管理--企业信息管理
- * 
- * @author yingp
- * 
- * @since 2016-9-26 21:18:35 账户中心统一管理;部分功能保留,但转移到v2目录
- * @see com.uas.platform.b2b.v2.controller.EnterpriseController
- * 
- */
-@Deprecated
-@Controller
-@RequestMapping(value = "/account/enterprise")
-public class EnterpriseController {
-
-	@Autowired
-	private EnterpriseService enterpriseService;
-
-	@Autowired
-	private GrowthService growthService;
-
-	@Autowired
-	private UserService userService;
-
-	@Autowired
-	private ShipAddressService shipAddressService;
-
-	/**
-	 * 取企业基本资料
-	 * 
-	 * @return
-	 */
-	@RequestMapping(method = RequestMethod.GET)
-	@ResponseBody
-	public Enterprise getEnterprise() {
-		Enterprise enterprise = SystemSession.getUser().getEnterprise();
-		enterprise.setAdmin(userService.findUserByUserUU(enterprise.getEnAdminuu()));
-		return enterprise;
-	}
-
-	/**
-	 * 修改企业基本资料
-	 * 
-	 * @return
-	 */
-	@RequestMapping(method = RequestMethod.POST)
-	@ResponseBody
-	public void updateEnterprise(@RequestBody Enterprise enterprise) {
-		enterprise = enterpriseService.save(enterprise);
-		SystemSession.getUser().setCurrentEnterprise(enterprise);
-	}
-
-	/**
-	 * 申请优企云服
-	 * 
-	 * @return
-	 */
-	@RequestMapping(value = "/applySaas", method = RequestMethod.POST)
-	@ResponseBody
-	public void applySaas(Long enUU, String enSaasUrl, String enAdminPassword) {
-		Enterprise enterprise = enterpriseService.applySaas(enUU, enSaasUrl, enAdminPassword);
-		SystemSession.getUser().setCurrentEnterprise(enterprise);
-	}
-
-	/**
-	 * 企业成长历程
-	 * 
-	 * @return
-	 */
-	@RequestMapping(value = "/growth", method = RequestMethod.GET)
-	@ResponseBody
-	public List<GrowthProcess> getGrowth() {
-		return growthService.findAllProcess();
-	}
-
-	/**
-	 * 新增或修改企业地址
-	 * 
-	 * @param ship
-	 * @return
-	 */
-	@RequestMapping(value = "/saveShipAddress", method = RequestMethod.POST)
-	@ResponseBody
-	private ModelMap saveShipAddress(@RequestBody String ship) {
-		ShipAddress shipAddress = JSON.parseObject(ship, ShipAddress.class);
-		return shipAddressService.saveShipAddress(shipAddress);
-	}
-
-	/**
-	 * 获取收货地址列表
-	 * 
-	 * @return
-	 */
-	@RequestMapping(value = "/shipAddList", method = RequestMethod.GET)
-	@ResponseBody
-	private List<ShipAddress> getShipAddress() {
-		return shipAddressService.getShipAddress();
-	}
-
-	/**
-	 * 删除收货地址
-	 * 
-	 * @param id
-	 */
-	@RequestMapping(value = "/removeShipAddress/{id}", method = RequestMethod.DELETE)
-	@ResponseBody
-	private void removeShipAddress(@PathVariable Long id) {
-		shipAddressService.removeShipAddress(id);
-	}
-
-	/**
-	 * 根据uu获取企业基本信息
-	 * 
-	 * @param bussinessCode
-	 * @return
-	 */
-	@RequestMapping(value = "/info/{bussinessCode}", method = RequestMethod.GET)
-	@ResponseBody
-	private Enterprise getInfo(@PathVariable String bussinessCode) {
-		return enterpriseService.findByenBussinessCode(bussinessCode);
-	}
-}
+package com.uas.platform.b2b.controller;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.alibaba.fastjson.JSON;
+import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.model.Enterprise;
+import com.uas.platform.b2b.model.GrowthProcess;
+import com.uas.platform.b2b.model.PurchaseApBillOutInfo;
+import com.uas.platform.b2b.model.ShipAddress;
+import com.uas.platform.b2b.service.EnterpriseService;
+import com.uas.platform.b2b.service.GrowthService;
+import com.uas.platform.b2b.service.ShipAddressService;
+import com.uas.platform.b2b.service.UserService;
+import com.uas.platform.b2b.support.SysConf;
+import com.uas.platform.b2b.support.SystemSession;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 账户管理--企业信息管理
+ * 
+ * @author yingp
+ * 
+ * @since 2016-9-26 21:18:35 账户中心统一管理;部分功能保留,但转移到v2目录
+ * @see com.uas.platform.b2b.v2.controller.EnterpriseController
+ * 
+ */
+@Deprecated
+@Controller
+@RequestMapping(value = "/account/enterprise")
+public class EnterpriseController {
+
+	@Autowired
+	private EnterpriseService enterpriseService;
+
+	@Autowired
+	private GrowthService growthService;
+
+	@Autowired
+	private UserService userService;
+
+	@Autowired
+	private ShipAddressService shipAddressService;
+
+	/**
+	 * 取企业基本资料
+	 * 
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET)
+	@ResponseBody
+	public Enterprise getEnterprise() {
+		Enterprise enterprise = SystemSession.getUser().getEnterprise();
+		enterprise.setAdmin(userService.findUserByUserUU(enterprise.getEnAdminuu()));
+		return enterprise;
+	}
+
+	/**
+	 * 修改企业基本资料
+	 * 
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST)
+	@ResponseBody
+	public void updateEnterprise(@RequestBody Enterprise enterprise) {
+		enterprise = enterpriseService.save(enterprise);
+		SystemSession.getUser().setCurrentEnterprise(enterprise);
+	}
+
+	/**
+	 * 申请优企云服
+	 * 
+	 * @return
+	 */
+	@RequestMapping(value = "/applySaas", method = RequestMethod.POST)
+	@ResponseBody
+	public void applySaas(Long enUU, String enSaasUrl, String enAdminPassword) {
+		Enterprise enterprise = enterpriseService.applySaas(enUU, enSaasUrl, enAdminPassword);
+		SystemSession.getUser().setCurrentEnterprise(enterprise);
+	}
+
+	/**
+	 * 企业成长历程
+	 * 
+	 * @return
+	 */
+	@RequestMapping(value = "/growth", method = RequestMethod.GET)
+	@ResponseBody
+	public List<GrowthProcess> getGrowth() {
+		return growthService.findAllProcess();
+	}
+
+	/**
+	 * 新增或修改企业地址
+	 * 
+	 * @param ship
+	 * @return
+	 */
+	@RequestMapping(value = "/saveShipAddress", method = RequestMethod.POST)
+	@ResponseBody
+	private ModelMap saveShipAddress(@RequestBody String ship) {
+		ShipAddress shipAddress = JSON.parseObject(ship, ShipAddress.class);
+		return shipAddressService.saveShipAddress(shipAddress);
+	}
+
+	/**
+	 * 获取收货地址列表
+	 * 
+	 * @return
+	 */
+	@RequestMapping(value = "/shipAddList", method = RequestMethod.GET)
+	@ResponseBody
+	private List<ShipAddress> getShipAddress() {
+		return shipAddressService.getShipAddress();
+	}
+
+	/**
+	 * 删除收货地址
+	 * 
+	 * @param id
+	 */
+	@RequestMapping(value = "/removeShipAddress/{id}", method = RequestMethod.DELETE)
+	@ResponseBody
+	private void removeShipAddress(@PathVariable Long id) {
+		shipAddressService.removeShipAddress(id);
+	}
+
+	/**
+	 * 根据uu获取企业基本信息
+	 * 
+	 * @param bussinessCode
+	 * @return
+	 */
+	@RequestMapping(value = "/info/{bussinessCode}", method = RequestMethod.GET)
+	@ResponseBody
+	private Enterprise getInfo(@PathVariable String bussinessCode) {
+		return enterpriseService.findByenBussinessCode(bussinessCode);
+	}
+
+	/**
+	 * 获取B2C路径
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/getB2cUrl", method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap getB2cUrl() {
+		return new ModelMap("url", ContextUtils.getBean(SysConf.class).getB2c());
+	}
+}

+ 228 - 227
src/main/webapp/WEB-INF/views/normal/index.html

@@ -14,263 +14,263 @@
 <link rel="stylesheet"
 	href="static/lib/fontawesome/css/font-awesome.min.css" />
 <link rel="stylesheet" href="static/lib/angular/toaster.css" />
+<link rel="stylesheet" href="static/lib/treeview/css/angular.treeview.css" />
 <link rel="stylesheet" href="static/css/index.css" />
 </head>
 <body ng-controller="AuthCtrl">
-	<!-- top Start -->
-	<div class="fixed-menu">
-	<!-- top End -->
+<div class="header-action">
 	<!-- header Start -->
-	<div class="height6">&nbsp;</div>
-	<div class="navbar navbar-inverse" id="header" ng-controller="MyCtrl">
-		<div class="container" style="padding: 0">
-			<div class="navbar-header">
-				<span class="navbar-brand">
-					<a href="http://www.ubtob.com/" target="_blank" title="优软云首页"></a>
-					<a href="http://www.usoftmall.com" title="优软商城" target="_blank">优软商城</a>
-				</span>
-			</div>
-			<nav class="navbar-collapse">
-				<ul class="nav navbar-nav">
-					<li ng-class="{'active': routeState == 'home'}"><a
-						ui-sref="home">首页</a></li>
-					<li class="dropdown" id="home-dropdown"><a href="javascript:void(0)" role="button" class="dropdown-toggle"> 服务 <i class="fa fa-angle-down"></i></a>
+		<!--header 顶部头-->
+		<div ng-controller="MyCtrl">
+			<nav id="site-nav">
+				<ul class="ghost-center">
+					<li class="uas-cloud">
+						<a href="http://www.ubtob.com/" target="_blank">
+							<img src="static/img/all/logo_uas.png"/>
+							<span>进入优软云</span>
+						</a>
+					</li>
+					<li ng-if="!userInfo"><a ng-click="signinModal()" href="javascript:void(0)">登录</a></li>
+					<li ng-if="!userInfo"><a ng-click="registerModal()" href="javascript:void(0)">注册</a></li>
+					<li ng-if="userInfo" class="dropdown">
+						<a class="dropdown-toggle" href="javascript:void(0)">欢迎您,
+							<span ng-bind="userInfo.userName"></span>
+							<span> | </span>
 
+							<span style="float:right;margin-left: 15px" href="javascript:void(0)" ng-click="logout()" class="logout">[退出]</span>
+							<span style="float:right;margin-left: 8px;max-width: 190px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;display: inline-block;" ng-if="userInfo.enterprise" ng-bind="userInfo.enterprise.enName" ></span>
+							<span style="float:right;margin-left: 8px;max-width: 190px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;display: inline-block;" ng-if="!userInfo.enterprise" ng-bind="'个人账户'" ></span>
+						</a>
+						<div class="dropdown-menu">
+							<div ng-if="userInfo.enSelect && userInfo.enSelect.length > 0" class="switch-enterprise-title">您可切换至以下账户:</div>
+							<ul class="unstyled" style="-webkit-padding-start: 0;">
+								<li ng-repeat="en in userInfo.enSelect" ng-if="!en.current" class="switch-enterprises">
+									<a href="javascript:void(0)"  ng-bind="en.enName" title="{{en.enName}}" ng-click="switchto(en.uu)"></a>
+								</li>
+							</ul>
+						</div>
 					</li>
+					<li><a ng-click="b2cLink('/')">商城首页</a></li>
+					<li ng-if="userInfo"><a ng-click="b2cLink('/user#/home')">买家中心</a></li>
+					<li ng-if="userInfo.enterprise && userInfo.enterprise.isVendor == 313"><a ng-click="b2cLink('/vendor#/index')">卖家中心</a></li>
+					<li ng-if="userInfo && !userInfo.enterprise"><a ng-click="b2cLink('/personalMaterial')">卖家中心</a></li>
+					<li ng-if="userInfo && userInfo.enterprise && userInfo.enterprise.isVendor != 313" ><a ng-click="b2cLink('/register-saler')">卖家中心</a></li>
+					<li ng-if="userInfo" ><a ng-click="b2cLink('/sso#/index')">帐户中心</a></li>
+					<li><a ng-click="b2cLink('/help/home')" target="_black">帮助中心</a></li>
 				</ul>
-				<ul id="home-search">
-					<div class="input-group">
-						<input type="search" ng-model="keyword" placeholder=" 输入企业或器件" ng-search="search(keyword)"><a class="btn input-group-addon" ng-click="search(keyword)">搜索</a>
-					</div>
-				</ul>
-				<div id="home-headerName">
-					<a ui-sref="approvalflow.enterprise"><span ng-bind="userInfo.enterprise.enName"></span> <i ng-if="userInfo.enSelect.length !== 0" class="fa fa-angle-down"></i></a>
-				</div>
-				<div class="name-tk">
-					<div>
-						<ul class="user-message">
-							<li><a ui-sref="approvalflow.enterprise"><span class="red" ng-bind="userInfo.enterprise.enName"></span>&nbsp;&nbsp;(<span ng-bind="userInfo.enterprise.uu" class="red"></span>)</a></li>
-							<li ng-repeat="e in userInfo.enSelect">
-								<a ng-click="switchto(e.uu)">{{e.enName}}</a>
-							</li>
-						</ul>
-						<div class="cart"><img src="static/img/all/carts.png" alt=""/></div>
-					</div>
-				</div>
-				<div id="home-headerBtns" ng-controller="HeaderCtrl">
-					<a href="javascript:void(0);" class="user-btn" ui-sref="approvalflow.user"><img src="static/img/home/user.png" alt="" style="margin-right: 5px;"/><span ng-bind="userInfo.userName"></span><i class="fa fa-angle-down"></i></a>
-				</div>
-				<div class="user-tk">
-					<div>
-						<ul class="user-message">
-							<li><img src="static/img/all/repository.png"><a ui-sref="approvalflow.userProduct">我的产品库</a></li>
-							<li><img src="static/img/all/message.png"><a ng-click="showMessage()" ng-class="{'notice-dot': message.toRead > 0}">消息中心<em></em></a></li>
-							<li><img src="static/img/all/config.png"><a ui-sref="approvalflow.flow">基础设置</a></li>
-							<li><img src="static/img/all/code.png"><a class="moblie-btn">手机二维码</a></li>
-							<li ng-click="logout()">退出账户</li>
-						</ul>
-						<div class="cart"><img src="static/img/all/carts.png"/></div>
-					</div>
-				</div>
-				<div class="erweima-tk">
-					<div>
-						<p>扫描二维码<br/>下载手机客户端</p>
-						<a href="static/tpl/start/index.html" target="_blank"><img src="static/img/qrcode/UU-Qr-Code.png" width="100px" height="100px" alt="UU互联" /></a>
-					</div>
-				</div>
 			</nav>
-		</div>
-		<div class="dropdown-tab">
-			<div class="dropdown-tab01">
-				<div class="content">
-					<div class="heed-tab">
-						<ul>
-							<li class="active">
-								<a><em class="list01"></em>销售</a>
-							</li>
-							<li>
-								<a><em class="list02"></em>采购</a>
-							</li>
-							<li>
-								<a><em class="list03"></em>财务</a>
-							</li>
-							<li>
-								<a><em class="list04"></em>企业圈</a>
-							</li>
-						</ul>
-					</div>
-					<div class="tab-list">
-						<div class="tab tab01" style="display: inline-block;">
-							<div class="line01">
-								<a href="#/sale/customer" class="a01">客户<br/>资料</a>
-								<a href="#/sale/sample" class="a02">客户打样<br>申请单</a>
-							</div>
-							<div class="line02">
-								<a href="#/sale/quotation/list" class="a03">主动报价</a>
-								<a ng-click="linktoInquiry('all')" class="a04">客户询价</a>
-								<a ng-click="linktoSaleTender('all')" class="a05">客户招标</a>
-								<a ng-click="linktoSample('done')" class="a06">送样单</a>
-							</div>
-							<div class="line03">
-								<a href="#/sale/mould" class="a07">客户模具报价</a>
-								<a href="#/sale/inquiry" class="a08">客户询价单<br/>报价</a>
-								<a href="#/sale/tender" class="a09">投标</a>
-								<a href="#/sale/approval" class="a10">客户认定</a>
-							</div>
-							<div class="line04">
-								<a href="#/sale/maketodo/makeorder" class="a11">客户委外订单</a>
-								<a href="#/sale/order" class="a12">客户采购订单</a>
-								<a ng-click="linktoTender('done')" class="a13">中标</a>
-							</div>
-							<div class="line05">
-								<a ui-sref="sale.makechange" class="a14">客户委外<br/>变更单</a>
-								<a href="#/sale/notice" class="a15">客户发货提醒</a>
-								<a href="#/sale/change" class="a16">客户采购变更</a>
-							</div>
-							<div class="line06">
-								<a href="#/sale/send" class="a17">发货单</a>
-							</div>
-							<div class="line07">
-								<a href="#/sale/returns" class="a18">客户采购验退</a>
-								<a href="#/sale/makereturns" class="a19">客户委外验退</a>
-								<a href="#/sale/badOut" class="a20">不良品出库</a>
-							</div>
-						</div>
-						<div class="tab tab02">
-							<div class="line01">
-								<a href="#/purc/vendor" class="a01">供应商<br/>资料</a>
-							</div>
-							<div class="line02">
-								<a ng-click="linktoPurcTender('all')" class="a02">招标</a>
-								<a ng-click="linktoPurcInquiry('all')" class="a03">询价</a>
-								<a href="#/purc/deputy" class="a12">代采订单</a>
-							</div>
-							<div class="line03">
-								<a ng-click="linktoPurcTender('todo')" class="a04">供应商投标</a>
-								<a ui-sref="purc.inquiry" class="a05">供应商报价</a>
-							</div>
-							<div class="line04">
-								<a href="#/purc/tender" class="a06">评标</a>
-								<a href="#/purc/order" class="a07">采购订单</a>
-								<a href="#/purc/makeoutorder" class="a08">委外订单</a>
-							</div>
-							<div class="line05">
-								<a href="" class="a09">收货单</a>
-							</div>
-							<div class="line06">
-								<a href="" class="a10">委外验退</a>
-								<a href="" class="a11">采购验退</a>
-							</div>
+			<div class="dropdown-tab">
+				<div class="dropdown-tab01">
+					<div class="content">
+						<div class="heed-tab">
+							<ul>
+								<li class="active">
+									<a><em class="list01"></em>销售</a>
+								</li>
+								<li>
+									<a><em class="list02"></em>采购</a>
+								</li>
+								<li>
+									<a><em class="list03"></em>财务</a>
+								</li>
+								<li>
+									<a><em class="list04"></em>企业圈</a>
+								</li>
+							</ul>
 						</div>
-						<div class="tab tab04">
-							<div class="line01">
-								<a href="" class="a01">发货</a>
-								<a href="" class="a02">收货</a>
+						<div class="tab-list">
+							<div class="tab tab01" style="display: inline-block;">
+								<div class="line01">
+									<a href="#/sale/customer" class="a01">客户<br/>资料</a>
+									<a href="#/sale/sample" class="a02">客户打样<br>申请单</a>
+								</div>
+								<div class="line02">
+									<a href="#/sale/quotation/list" class="a03">主动报价</a>
+									<a ng-click="linktoInquiry('all')" class="a04">客户询价</a>
+									<a ng-click="linktoSaleTender('all')" class="a05">客户招标</a>
+									<a ng-click="linktoSample('done')" class="a06">送样单</a>
+								</div>
+								<div class="line03">
+									<a href="#/sale/mould" class="a07">客户模具报价</a>
+									<a href="#/sale/inquiry" class="a08">客户询价单<br/>报价</a>
+									<a href="#/sale/tender" class="a09">投标</a>
+									<a href="#/sale/approval" class="a10">客户认定</a>
+								</div>
+								<div class="line04">
+									<a href="#/sale/maketodo/makeorder" class="a11">客户委外订单</a>
+									<a href="#/sale/order" class="a12">客户采购订单</a>
+									<a ng-click="linktoTender('done')" class="a13">中标</a>
+								</div>
+								<div class="line05">
+									<a ui-sref="sale.makechange" class="a14">客户委外<br/>变更单</a>
+									<a href="#/sale/notice" class="a15">客户发货提醒</a>
+									<a href="#/sale/change" class="a16">客户采购变更</a>
+								</div>
+								<div class="line06">
+									<a href="#/sale/send" class="a17">发货单</a>
+								</div>
+								<div class="line07">
+									<a href="#/sale/returns" class="a18">客户采购验退</a>
+									<a href="#/sale/makereturns" class="a19">客户委外验退</a>
+									<a href="#/sale/badOut" class="a20">不良品出库</a>
+								</div>
 							</div>
-							<div class="line02">
-								<a href="#/fa/apBill" class="a03">应收发票</a>
-								<a href="" class="a04">应付发票</a>
+							<div class="tab tab02">
+								<div class="line01">
+									<a href="#/purc/vendor" class="a01">供应商<br/>资料</a>
+								</div>
+								<div class="line02">
+									<a ng-click="linktoPurcTender('all')" class="a02">招标</a>
+									<a ng-click="linktoPurcInquiry('all')" class="a03">询价</a>
+									<a href="#/purc/deputy" class="a12">代采订单</a>
+								</div>
+								<div class="line03">
+									<a ng-click="linktoPurcTender('todo')" class="a04">供应商投标</a>
+									<a ui-sref="purc.inquiry" class="a05">供应商报价</a>
+								</div>
+								<div class="line04">
+									<a href="#/purc/tender" class="a06">评标</a>
+									<a href="#/purc/order" class="a07">采购订单</a>
+									<a href="#/purc/makeoutorder" class="a08">委外订单</a>
+								</div>
+								<div class="line05">
+									<a href="" class="a09">收货单</a>
+								</div>
+								<div class="line06">
+									<a href="" class="a10">委外验退</a>
+									<a href="" class="a11">采购验退</a>
+								</div>
 							</div>
-							<div class="line03">
-								<a href="#/fa/apCheck" class="a05">应收对账</a>
-								<a href="#/fa/arCheck" class="a06">应付对账</a>
-							</div>
-						</div>
-						<div class="tab tab03">
-							<div class="line01">
-								<a href="https://account.ubtob.com/sso/register" class="a01">企业<br/>注册</a>
+							<div class="tab tab04">
+								<div class="line01">
+									<a href="" class="a01">发货</a>
+									<a href="" class="a02">收货</a>
+								</div>
+								<div class="line02">
+									<a href="#/fa/apBill" class="a03">应收发票</a>
+									<a href="" class="a04">应付发票</a>
+								</div>
+								<div class="line03">
+									<a href="#/fa/apCheck" class="a05">应收对账</a>
+									<a href="#/fa/arCheck" class="a06">应付对账</a>
+								</div>
 							</div>
-							<div class="line02">
-								<a href="#/baseInfo/search" class="a02">添加合作伙伴</a>
-							</div>
-							<div class="line03">
-								<a href="#/baseInfo/enume/customerInfo" class="a03">添加客户</a>
-								<a href="#/baseInfo/enume/vendorInfo" class="a04">添加供应商</a>
+							<div class="tab tab03">
+								<div class="line01">
+									<a href="https://account.ubtob.com/sso/register" class="a01">企业<br/>注册</a>
+								</div>
+								<div class="line02">
+									<a href="#/baseInfo/search" class="a02">添加合作伙伴</a>
+								</div>
+								<div class="line03">
+									<a href="#/baseInfo/enume/customerInfo" class="a03">添加客户</a>
+									<a href="#/baseInfo/enume/vendorInfo" class="a04">添加供应商</a>
+								</div>
 							</div>
 						</div>
 					</div>
 				</div>
 			</div>
 		</div>
+		<!--header 2-->
+	    <div ng-include src="'static/tpl/index/common/header.html'"></div>
 	</div>
-</div>
-<!-- header End -->
-<!-- body Start -->
-<div class="body">
-	<div class="left">
-		<div ui-view="left-view"></div>
-	</div>
-	<div class="right">
-		<div ui-view="right-view" class="view-slide-in"></div>
+	<!-- header End -->
+	<!-- body Start -->
+	<div class="body">
+		<div class="container">
+		<div class="left">
+			<div ui-view="left-view"></div>
+		</div>
+		<div class="right">
+			<div ui-view="right-view" class="view-slide-in"></div>
+		</div>
+		</div>
 	</div>
-</div>
-<!-- body End -->
+	<!-- body End -->
 
-<!-- 金控广告 -->
+ <!--金控广告 -->
 <div ng-controller="AdController">
-	<div ng-if="adStart">
-		<div class="jinkong_bottom" ng-show="bannerShow" ng-class="{'jinkong_animation': jingKongAnmiation}"></div>
-		<div class="jinkong" ng-if="imgShow" ng-class="{'jinkong_animation': jingKongAnmiation}">
-			<div class="container">
-				<div class="img" ng-class="{'img_stater': imgAnmiation}">
-					<span class="qcrode_close close" ng-click="closeClick()">×</span>
-					<span class="close time" ng-if="!imgAnmiation">{{count}}s</span>
-					<img src="static/img/jinkong/xiaoren.png" ng-class="{'animation_xr': imgAnmiation}">
-					<img src="static/img/jinkong/qrcode.png">
-				</div>
+	<div class="jinkong_bottom" ng-show="bannerShow" ng-class="{'jinkong_animation': jingKongAnmiation}"></div>
+	<div class="jinkong" ng-if="imgShow" ng-class="{'jinkong_animation': jingKongAnmiation}">
+		<div class="container">
+			<div class="img" ng-class="{'img_stater': imgAnmiation}">
+				<span class="qcrode_close close" ng-click="closeClick()">×</span>
+				<span class="close time" ng-if="!imgAnmiation">{{count}}s</span>
+				<img src="static/img/jinkong/xiaoren.png" ng-class="{'animation_xr': imgAnmiation}">
+				<img src="static/img/jinkong/qrcode.png">
 			</div>
 		</div>
 	</div>
 </div>
-<!-- -金控广告 -->
+ <!-- -金控广告 -->
 
 <!-- footer Start -->
-<div class="navbar navbar-static-bottom" id="footer">
-	<div class="container">
-		<div class="row" style="margin-top: 15px;">
-			<div class="col-sm-3 margin-left">
-				<div class="qrcode qrcode-uu">
-					<div class="qrcode-img pull-left">
-						<img src="static/img/qrcode/UU-Qr-Code.png" width="100px" height="100px"
-							 alt="UU互联" />
-					</div>
-					<div class="qrcode-text pull-left">
-						<div>手机UU</div>
-						<div>快人一步</div>
-					</div>
-					<div class="clearfix"></div>
-				</div>
-			</div>
-			<div class="col-sm-3">
-				<div class="qrcode qrcode-uas">
-					<div class="qrcode-img pull-left">
-						<img src="static/img/qrcode/WeChat-Qr-Code.png" width="100px" height="100px"
-							 alt="优软公众号" />
-					</div>
-					<div class="qrcode-text pull-left">
-						<div>微信扫描</div>
-						<div>关注公众号</div>
-					</div>
-					<div class="clearfix"></div>
-				</div>
-			</div>
-			<div class="col-sm-4">
-				<p>
-					<a href="http://www.usoftchina.com" target="_blank">关于深圳市优软科技有限公司</a>
-				</p>
-				<p>
-					<a href="serve"><i class="fa fa-headphones"></i> 服务中心</a>
-					<a>&nbsp;&nbsp;</a>
-					<span><i class="fa fa-phone"></i> 800-830-1818</span>
-				</p>
-				<p><span><i class="fa fa-envelope-o"></i> serve@usoftchina.com</span></p>
-			</div>
-			<div class="col-sm-2" style="float: right;">
-				<a href="http://www.ubtob.com" class="back-home">返回优软云</a>
-			</div>
+<div id="footer">
+		<ul class="footer-main list-unstyled">
+			<li>
+				<h3>用户指南</h3>
+				<ul class="list-unstyled">
+					<li><a href="http://www.usoftmall.com/help#/issue/50" target="_blank">服务条款</a></li>
+					<li><a href="http://www.usoftmall.com/help#/issue/16" target="_blank">买卖条例</a></li>
+					<li><a href="http://www.usoftmall.com/help#/issue/51" target="_blank">代收代付协议</a></li>
+				</ul>
+			</li>
+			<!--<li>
+                <h3>技术支持</h3>
+                <ul class="list-unstyled">
+                    <li>原理图</li>
+                    <li>设计方案</li>
+                    <li>BOM清单</li>
+                </ul>
+            </li>-->
+			<li>
+				<h3>关于我们</h3>
+				<ul class="list-unstyled">
+					<li><a href="http://www.usoftmall.com/help#/issue/1" target="_blank">公司简介</a></li>
+					<li><a href="http://www.usoftmall.com/help#/issue/28" target="_blank">公司地址</a></li>
+					<li><a href="http://www.usoftmall.com/help#/issue/1" target="_blank">联系我们</a></li>
+				</ul>
+			</li>
+			<li>
+				<h3>更多服务</h3>
+				<ul class="list-unstyled">
+					<li><a href="http://www.usoftchina.com/usoft/"  target="_blank" target="_blank">优软科技</a></li>
+					<li><a href="http://www.ubtob.com/" target="_blank" target="_blank">优软云</a></li>
+				</ul>
+			</li>
+			<li>
+				<h3>商城公众号</h3>
+				<img src="static/img/footer/qrcode_mall.png" />
+			</li>
+			<li>
+				<h3>科技公众号</h3>
+				<img src="static/img/footer/qrcode_uas.png" />
+			</li>
+		</ul>
+		<div class="friend-link row">
+			<span>友情链接:</span>
+			<a href="http://www.worldshine.net" target="_blank" title="深圳华商龙">深圳华商龙</a>|
+			<a href="http://www.yitoa.com" target="_blank" title="深圳市英唐智能科技">深圳市英唐智能科技</a>|
+			<a href="http://www.usoftchina.com/usoft/" target="_blank" title="深圳市优软科技">深圳市优软科技</a>|
+			<a href="http://www.fantem.com" target="_blank" title="丰唐物联技术(深圳)">丰唐物联技术(深圳)</a>|
+			<a href="http://www.hiways.com" target="_blank" title="深圳市海威思科技">深圳市海威思科技</a>|
+			<a href="http://www.huashangweitai.com" target="_blank" title="深圳市华商维泰显示科技">深圳市华商维泰显示科技</a>|
+			<a href="http://www.ufct.com.cn/" target="_blank" title="联合创泰科技">联合创泰科技</a>
+		</div>
+		<ul class="list-unstyled footer-bottom">
+			<li>客服电话:400-830-1818</li>
+			<li>公司地址:深圳市南山区英唐大厦一楼</li>
+			<li>©2016 深圳市优软科技有限公司 粤ICP备15112126号-4</li>
+		</ul>
+		<div class="credit">
+			<a href="javascript:void(0)"><img src="static/img/footer/credit01.jpg" /></a>
+			<a href="javascript:void(0)"><img src="static/img/footer/credit02.jpg" /></a>
+			<a href="javascript:void(0)"><img src="static/img/footer/credit03.jpg" /></a>
+			<a href="javascript:void(0)"><img src="static/img/footer/credit04.jpg" /></a>
+			<a href="javascript:void(0)"><img src="static/img/footer/credit05.jpg" /></a>
 		</div>
 	</div>
-</div>
 <!-- footer End -->
 <!--新手引导-->
 <!--<div id="mask"></div>-->
@@ -294,6 +294,7 @@
 <script type="text/javascript" src="static/lib/require.js"
 		data-main="static/js/index/main.js"></script>
 <script src="static/lib/jquery/jquery.min.js"></script>
+<!--<script src="static/lib/treeview/js/angular.treeview.min.js"></script>-->
 <script src="static/lib/bootstrap/js/bootstrap.js"></script>
 <script type="text/javascript">
     $(function(){

+ 438 - 72
src/main/webapp/resources/css/index.css

@@ -45,6 +45,7 @@ a.none:hover {
 
 .block {
 	background-color: #fff;
+	border-radius: 5px;
 	width: 100%;
 	position: relative;
 }
@@ -673,53 +674,258 @@ ul>li.item-link>a {
 #top .dropdown-menu .pills>div:nth-child(6) ul>li>a:hover {
 	background-color: #b68571
 }
+
 /* header css stylesheet*/
-#header {
-	color: #ffffff;
-	z-index: 4;
-}
 
-#header a {
-	font-family: "\5fae\8f6f\96c5\9ed1", sans-serif;
+/*header 顶部头*/
+#site-nav {
+	background-color: #474443;
+	height: 36px;
+}
+#site-nav>ul {
+	list-style: none;
+	width: 1190px;
+	margin: auto;
+	padding: 0;
+	text-align: right;
+	height: 100%;
+}
+#site-nav>ul>li {
+	vertical-align: middle;
+	font-size: 12px;
+	display: inline-block;
+}
+#site-nav ul li.uas-cloud {
+	float: left;
+	line-height: 36px;
+	height: 36px;
+}
+#site-nav ul li.uas-cloud a, #site-nav ul li:last-child a{
+    padding: 0;
+}
+#site-nav ul li.uas-cloud a img {
+	vertical-align: middle;
+}
+#site-nav ul li.uas-cloud a span {
+	margin-left: 0.5em;
+	vertical-align: middle;
 }
 
-#header .navbar-nav>li>a {
-	color: #ffffff;
-	font-size: 16px;
-	font-weight: 500;
+#site-nav>ul>li>a, #site-nav>ul>li>span {
+	color: rgb(230, 230, 230);
+	text-decoration: none;
+	display: inline-block;
+	line-height: 36px;
+	padding: 0 1em;
 }
 
-#header.navbar-inverse {
+#site-nav .dropdown {
 	position: relative;
-	background-color: #e8e8e8;
-	border: none;
-	box-shadow: 0 0 10px #6f6f6f;
 }
 
-#header.navbar-inverse .navbar-brand {
-	color: #ffffff;
+#site-nav .dropdown .dropdown-menu {
+	top: 36px;
+	left: 0;
+	min-width: 100%;
+	display: none;
+	margin: 0;
+	padding: 0 6px 13px;
+	border-radius: 0;
+	background: #ffffff;
+	border: 1px solid #999999;
+	border-top: none;
+	font-size: 12px;
+	z-index: 80;
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	box-shadow: none;
+	text-align: left;
+}
+#site-nav .dropdown .dropdown-menu ::-webkit-scrollbar {
+	background: #f6f6f6;
+	width: .5rem;
+	height: .5rem;
 }
 
-#header.navbar-inverse .navbar-brand:hover,#header.navbar-inverse .navbar-brand:focus
-{
-	color: #ffffff;
-	background-color: transparent;
+#site-nav .dropdown .dropdown-menu ::-webkit-scrollbar-thumb {
+	border-radius: 0;
+}
+
+#site-nav .dropdown .dropdown-menu >ul{
+	max-height: 300px;
+	overflow-y: auto;
+	padding: 0;
+}
+#site-nav .dropdown .dropdown-menu >ul >li {
+	padding: 0 12px;
+	line-height: 30px;
+}
+#site-nav .dropdown .dropdown-menu .switch-enterprise-title {
+	background: #eee;
+	padding: 0 12px;
+	line-height: 30px;
+	font-size: 12px;
+}
+#site-nav .dropdown .dropdown-menu >ul >li.switch-enterprises {
+	background: #f6f6f6;
+}
+#site-nav .dropdown .dropdown-menu >ul >li.switch-enterprises a {
+	color: #333;
+	max-width: 300px;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	display: block;
+}
+#site-nav .dropdown .dropdown-menu >ul >li.switch-enterprises a:hover {
+	color: #5078cb;
+	text-decoration: none;
+}
+#site-nav .dropdown:hover .dropdown-toggle {
+	border-left: 1px solid #999999;
+	border-right: 1px solid #999999;
+	background: #ffffff;
+	color: #333333;
+	z-index:11;
+}
+#site-nav .dropdown:hover .dropdown-menu {
+	display: block;
+}
+::-webkit-scrollbar {
+	width: 8px;
+	height: 8px;
 }
 
-#header.navbar-inverse .navbar-text {
-	color: #969696;
+::-webkit-scrollbar-thumb {
+	background-color: #d8d4d4;
+	border-radius: 5px;
+	padding-left: 0 !important;
 }
-#header.navbar-inverse .navbar-nav>li{
-	margin: 0 20px;
+
+::-webkit-scrollbar-thumb:hover {
+	background-color: #b1abab;
 }
 
-#header.navbar-inverse .navbar-nav>li>a {
-	font-size: 18px;
-	color: #fff;
-	width: 100px;
-	height: 57px;
-	line-height: 27px;
-	text-align: center;
+body {
+	font: 100%/1.2 verdana, "Microsoft YaHei", '宋体', serif;
+}
+
+/*兼容样式*/
+#site-nav p {
+	margin: 0 0 10px;
+	text-align: left;
+}
+#site-nav .fa {
+	display: inline-block;
+	font: normal normal normal 14px/1 FontAwesome;
+	font-size: inherit;
+	text-rendering: auto;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+}
+#site-nav .fa-map-marker:before {
+	content: "\f041";
+}
+#site-nav * {
+	box-sizing: border-box;
+	list-style: none;
+}
+/* ::: Main Navigation ::: */
+.nav-main {
+    background-color: rgb(244, 248, 255);
+    height: 40px;
+}
+.nav-main > ul {
+    margin: 0 auto;
+    padding: 0;
+    background-color: rgb(244, 248, 255);
+    width: 1190px;
+}
+
+.nav-main > ul li {
+    float: left;
+    position: relative;
+    margin: 0;
+    height: 40px;
+    line-height: 40px;
+    width: 121px;
+    text-align: center;
+    color: #474443;
+    vertical-align: middle;
+    list-style: none;
+    cursor: pointer;
+}
+.nav-main > ul li:first-child {
+    border-left: none;
+    width: 220px;
+}
+
+.nav-main > ul li:last-child a {
+    padding-right: 0;
+}
+.nav-main > ul li a {
+    color: #292929;
+    display: inline-block;
+    font-size: 14px;
+}
+.nav-main > ul li a.active, .nav-main > ul li a:hover {
+    color: #5078cb;
+    border-bottom: #5078cb 3px solid;
+    font-weight: bold;
+    text-decoration: none;
+}
+
+.nav-main .more-title {
+    background-color: rgb(33, 71, 151);
+    font-size: 14px;
+    font-weight: bold;
+    height: 40px;
+    width: 220px;
+    line-height: 40px;
+    color: #fff !important;
+    display: inline-block !important;
+    padding: 0 !important;
+    text-align: center;
+    cursor: pointer;
+}
+.nav-main .more-title:hover{
+    /*background: #5078cb;*/
+}
+/*new hot 标签*/
+/*new 标签*/
+@keyframes newAnimate {
+    0% {
+        transform: translate(0px, 0px);
+    }
+    50% {
+        transform: translate(0px, -3px);
+    }
+    100% {
+        transform: translate(0px, 0px);
+    }
+}
+
+img.new-animate{
+    position: relative;
+    top: -7px;
+    animation: newAnimate 1s infinite;
+}
+
+
+/*header  end*/
+.unstyled a:hover,.dropdown-menu a:hover{
+	color: #d32526;
+	text-decoration: underline;
+}
+.logout:hover{
+	color: #f00;
+}
+.member-text{
+	width: 80%;
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	display: inline-block;
 }
 
 /** 顶部 start **/
@@ -1026,10 +1232,10 @@ ul>li.item-link>a {
 }
 /*body*/
 .body {
-	width: 1170px;
+	width: 1190px;
 	margin: 0 auto;
 	padding: 0 0;
-	margin-top: 85px;
+	margin-top: 20px;
 }
 
 .body:before,.body:after {
@@ -1037,19 +1243,32 @@ ul>li.item-link>a {
 	display: table;
 	clear: both;
 }
-
-.body>.left {
-	width: 185px;
+.body .container{
+	padding: 0;
+	margin: 0 auto;
+	width: 1190px;
+}
+.body .container .left {
+	width: 202px;
 	float: left;
-	margin-right: 12px;
+	margin-right: 15px;
 }
 
-.body>.right {
+.body .container .right {
 	width: 973px;
 	float: left;
 	font-size: 12px;
 	min-height: 90vh;
 }
+.body .container .right .sale-view{
+	box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-o-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	border-radius: 5px;
+	min-height: 1065px;
+	background: #fff;
+}
 @media ( max-height : 768px) {
 	.body>.right{
 		min-height: 400px;
@@ -1425,7 +1644,13 @@ ul>li.item-link>a {
 /** left .feed-wrap start **/
 .left .feed-wrap {
 	/*float: right;*/
-	width: 185px;
+	width: 202px;
+	margin: 20px 0;
+	box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-o-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	border-radius: 5px;
 }
 .left .feed-wrap .notice:first-child {
 	margin-top: 0;
@@ -1437,14 +1662,16 @@ ul>li.item-link>a {
 }
 
 .pane .pane-header {
-	height: 40px;
-	background: #fff;
-	line-height: 40px;
-	font-size: 18px;
+	height: 35px;
+	background: #3f84f6;
+	line-height: 35px;
+	font-size: 14px;
 	font-weight: bold;
 	padding: 0 15px;
-	border-bottom: 1px solid #e8e8e8;
-	color: #666;
+	color: #fff;
+	border-top-right-radius: 5px;
+	border-top-left-radius: 5px;
+
 }
 
 .pane .pane-header .pull-right {
@@ -1456,7 +1683,7 @@ ul>li.item-link>a {
 }
 
 .pane .pane-body {
-	padding: 15px;
+	padding: 15px!important ;
 }
 
 .pane.addon {
@@ -1570,7 +1797,11 @@ ul>li.item-link>a {
 
 .notice {
 	height: 154px;
-	border: #e8e8e8 1px solid;
+	box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-o-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	border-radius: 5px;
 }
 
 .notice .detail>li {
@@ -1583,6 +1814,41 @@ ul>li.item-link>a {
 	text-overflow: ellipsis;
 
 }
+.notice .detail>li a{
+	font-size: 14px;
+}
+/*公告非当日*/
+.notice .pane-body ul li.nonday a{
+	color: #333;
+}
+/*!*公告当日已读*!*/
+.notice .pane-body ul li.day-read a{
+	float: left;
+	display: inline-block;
+	max-width: 118px;
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	color: #333;
+}
+.notice .pane-body ul li.day-read img{
+	float: left;
+	margin: 5px 0 0 3px;
+}
+/*公告当日未读 */
+.notice .pane-body ul li.day-unread a{
+	float: left;
+	display: inline-block;
+	width: 149px;
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	color: #666;
+}
+.notice .pane-body ul li.day-unread img{
+	float: left;
+	margin-top: 5px;
+}
 
 .notice .detail>li:before {
 	position: absolute;
@@ -1653,30 +1919,86 @@ ul>li.item-link>a {
 	}
 }
 /*footer*/
+.list-unstyled {
+	padding-left: 0;
+	list-style: none;
+}
 #footer {
-	color: #f1f1f1;
-	background-color: #333333;
-	margin-top: 20px;
-	padding: 20px 0;
-	font-size: 14px;
+	background-color: #f7f7f7;
+	margin-top: 50px;
 }
 
-#footer a {
-	color: #f1f1f1;
+#footer .footer-main, #footer .footer-bottom {
+	font-size: 12px;
+	color: rgb(50, 50 ,50);
+	width: 1190px;
+	margin: auto;
+	text-align: center;
 }
-
-#footer ul {
-	margin: 0;
+#footer .footer-main > li {
+	display: inline-block;
+	width: 16%;
+	text-align: center;
+	vertical-align: top;
 }
-
-#footer .qrcode-text {
-	padding: 32px 0 0 20px;
-	font-size: 14px;
+#footer .footer-main > li > h3 {
+	font-size: 16px;
+	font-weight: bold;
 }
-
-#footer .list-inline>li:not(:last-child):after {
-	margin-left: 15px;
-	content: "|"
+#footer .footer-main > li > ul > li {
+	padding: 0.4em;
+}
+#footer .footer-bottom {
+	padding-top: 1.5em;
+	padding-bottom: 1.5em;
+	margin-top: 10px;
+}
+#footer .footer-bottom > li {
+	text-align: center;
+	display: inline-block;
+	padding: 0 2em 0 2em;
+}
+#footer .list-unstyled > li a{
+	color: #323232;
+}
+#footer .list-unstyled > li a:hover{
+	color: #db143c;
+}
+#footer .footer-bottom{
+	border-top: #c9c9c9 1px solid;
+}
+#footer .footer-bottom > li {
+	text-align: center;
+	display: inline-block;
+	padding: 0 2em 0 2em;
+}
+a:hover {
+	text-decoration: none;
+}
+.credit{
+	text-align: center;
+	padding: 2px;
+	padding-bottom: 30px;
+}
+.credit a{
+	margin: 0 8px;
+}
+.friend-link{
+	font-size: 12px;
+	width: 1190px;
+	margin: auto;
+	text-align: center;
+	color: #999;
+	margin-top: 10px;
+}
+.friend-link a{
+	font-size: 12px;
+	color: #323232;
+	padding: 2px 10px;
+	display: inline-block;
+}
+.friend-link a:hover{
+	color: #d32526;
 }
 /*loading*/
 .loading {
@@ -2971,8 +3293,8 @@ input:-webkit-autofill { box-shadow: 0 0 0 1000px white inset !important;}
 /*公共详情*/
 .pub-com_head, .com_head {
 	width: 100%;
-	height: 50px;
-	line-height: 50px;
+	height: 35px;
+	line-height: 35px;
 	background: #3f84f6;
 	border-radius: 5px 5px 0 0 ;
 	/*background: url("../img/approvalFlow/comm_bg01.png") no-repeat left;*/
@@ -2983,7 +3305,8 @@ input:-webkit-autofill { box-shadow: 0 0 0 1000px white inset !important;}
 .pub-com_head span, .com_head span{
 	margin-left: 10px;
 	color: #fff;
-	font-size: 16px;
+	font-size: 14px;
+	font-weight: bold;
 }
 .pub-com_head .p-right{
 	float: right;
@@ -4743,10 +5066,10 @@ a.order-detail {
 
 .jinkong_animation{
 	margin-bottom:-241px;
-	animation: shift_up 1s linear forwards;
-	-o-animation: shift_up 1s linear forwards;
-	-webkit-animation: shift_up 1s linear forwards;
-	-moz-animation: shift_up 1s linear forwards;
+	animation: shift_up 3s linear forwards;
+	-o-animation: shift_up 3s linear forwards;
+	-webkit-animation: shift_up 3s linear forwards;
+	-moz-animation: shift_up 3s linear forwards;
 }
 
 @keyframes shift_up {
@@ -4872,3 +5195,46 @@ a.order-detail {
 	position:relative;
 	top:10px;
 }
+
+/*左侧树结构*/
+#tree{
+	background-color: #ffffff;
+	border-radius: 5px;
+	box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-o-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+}
+#tree .tree-header{
+	padding-left: 10px;
+	width: 100%;
+	height: 35px;
+	line-height: 35px;
+	font-size: 14px;
+	font-weight: bold;
+	color: #fff;
+	background-color: #3f84f6;
+	border-top-left-radius: 5px;
+	border-top-right-radius: 5px;
+}
+#tree .tree-header img{
+	margin-right: 10px;
+}
+
+/*金控广告*/
+.jk{
+	width: 202px;
+	height: 534px;
+	line-height: 534px;
+	text-align: center;
+	background-color: #ffffff;
+	border-radius: 5px;
+	box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-o-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+	-moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
+}
+.jk img{
+	width: 184px;
+	height: 512px;
+}

BIN
src/main/webapp/resources/img/all/banner-cuxiao03.png


BIN
src/main/webapp/resources/img/all/hot.png


BIN
src/main/webapp/resources/img/all/logo_uas.png


BIN
src/main/webapp/resources/img/all/uas_mall.png


BIN
src/main/webapp/resources/img/footer/credit01.jpg


BIN
src/main/webapp/resources/img/footer/credit02.jpg


BIN
src/main/webapp/resources/img/footer/credit03.jpg


BIN
src/main/webapp/resources/img/footer/credit04.jpg


BIN
src/main/webapp/resources/img/footer/credit05.jpg


BIN
src/main/webapp/resources/img/footer/qrcode_mall.png


BIN
src/main/webapp/resources/img/footer/qrcode_uas.png


BIN
src/main/webapp/resources/img/left/gonggao.png


BIN
src/main/webapp/resources/img/left/icon_01.png


+ 6 - 0
src/main/webapp/resources/js/common/directives.js

@@ -125,4 +125,10 @@ define(['angular'], function (angular) {
                 }
             };
         }]);
+
+    /**
+     * 树结构
+     *
+     */
+    angular.module('myApp', ['angularTreeview']);
 });

+ 16 - 0
src/main/webapp/resources/js/common/services.js

@@ -162,6 +162,22 @@ define(['angular', 'toaster', 'big'], function(angular, big) {
                     toaster.pop('error', '系统错误');
                 });
             },
+            redirectRegister: function() {
+                // 获取跳转注册的url
+                $http.get(rootPath + '/register/page', {
+                    params: {
+                        returnUrl: window.location.href
+                    }
+                }).success(function(data) {
+                    if (data.content) {
+                        window.location.href = data.content;
+                    } else {
+                        alert('系统错误');
+                    }
+                }).error(function() {
+                    alert('系统错误');
+                });
+            },
             isAuthed: function() {
                 return SessionService.get('authenticated');
             },

+ 320 - 51
src/main/webapp/resources/js/index/app.js

@@ -1,6 +1,6 @@
-define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives', 'service/Purc', 'service/Make', 'service/Fa', 'service/Account', 'service/Alert', 'service/CheckTel', 'ui.router', 'ui.bootstrap', 'file-upload', 'ngSanitize', 'service/BaseInfo', 'service/Cart', 'service/ApprovalFlow', 'service/DeputyOrder', 'service/Product', 'service/Token', 'service/ProductUsers', 'service/File', 'service/PublicInquiry', 'service/Customer', 'service/PurcChange'], function () {
+define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives', 'service/Purc', 'service/Make', 'service/Fa', 'service/Account', 'service/Alert', 'service/CheckTel', 'ui.router', 'ui.bootstrap', 'file-upload', 'ngSanitize', 'service/BaseInfo', 'service/Cart', 'service/ApprovalFlow', 'service/DeputyOrder', 'service/Product', 'service/Token', 'service/ProductUsers', 'service/File', 'service/PublicInquiry', 'service/Customer', 'service/PurcChange', 'angularTreeview'], function () {
     'use strict';
-    var app = angular.module('myApp', ['toaster', 'angularCharts', 'ngTable', 'ui.router', 'common.services', 'common.directives', 'PurcServices', 'MakeServices', 'FaServices', 'AccountServices', 'AlertServices', 'ui.bootstrap', 'angularFileUpload', 'ngSanitize', 'CheckTelModule', 'ProductServices', 'CartServices', 'ApprvoalFlowService', 'DeputyOrderService', 'ProductInfoServices', 'TokenService', 'ProductUserService', 'ui.tour', 'FileService', 'publicInquiryService', 'CustomerService', 'changeService']);
+    var app = angular.module('myApp', ['toaster', 'angularCharts', 'ngTable', 'ui.router', 'common.services', 'common.directives', 'PurcServices', 'MakeServices', 'FaServices', 'AccountServices', 'AlertServices', 'ui.bootstrap', 'angularFileUpload', 'ngSanitize', 'CheckTelModule', 'ProductServices', 'CartServices', 'ApprvoalFlowService', 'DeputyOrderService', 'ProductInfoServices', 'TokenService', 'ProductUserService', 'ui.tour', 'FileService', 'publicInquiryService', 'CustomerService', 'changeService', 'angularTreeview']);
     app.init = function () {
         angular.bootstrap(document, ['myApp']);
     };
@@ -51,7 +51,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             url: "/sale",
             views: {
                 "left-view": {
-                    templateUrl: "static/tpl/index/sale/left.html",
+                    templateUrl: "static/tpl/index/common/leftAll.html",
                     controller: 'LeftCtrl'
                 },
                 "right-view": {
@@ -72,7 +72,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             url: "/purc",
             views: {
                 "left-view": {
-                    templateUrl: "static/tpl/index/purc/left.html",
+                    templateUrl: "static/tpl/index/common/leftAll.html",
                     controller: 'LeftCtrl'
                 },
                 "right-view": {
@@ -637,7 +637,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             url: "/fa",
             views: {
                 "left-view": {
-                    templateUrl: "static/tpl/index/fa/left.html"
+                    templateUrl: "static/tpl/index/common/leftAll.html"
                 },
                 "right-view": {
                     templateUrl: "static/tpl/index/fa/right.html"
@@ -746,7 +746,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             url: "/approvalFlow",
             views: {
                 "left-view": {
-                    templateUrl: "static/tpl/index/approvalFlow/left.html"
+                    templateUrl: "static/tpl/index/common/leftAll.html"
                 },
                 "right-view": {
                     templateUrl: "static/tpl/index/approvalFlow/right.html",
@@ -797,7 +797,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             templateUrl: "static/tpl/index/sale/vendorPerformanceAssess_detail.html",
             controller: 'VendorPerformanceAssessDetailCtrl'
         });
-        $urlRouterProvider.otherwise('/index');
+        $urlRouterProvider.otherwise('sale/pubinquiry');
     }]);
 
 
@@ -887,7 +887,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         }
     });
 
-    app.controller('MyCtrl', ['$scope', '$rootScope', '$modal', 'toaster', function ($scope, $rootScope, $modal, toaster) {
+    app.controller('MyCtrl', ['$scope', '$rootScope', '$modal', 'toaster', 'AccountEnterprise', function ($scope, $rootScope, $modal, toaster, AccountEnterprise) {
         $rootScope.$on('$locationChangeSuccess', function (evt, newUrl) {
             var routeState = newUrl.substr(newUrl.indexOf('#/') + 2);
             if (routeState.indexOf('/') > -1)
@@ -942,57 +942,45 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             $rootScope.active = active;
             window.location.href = "#/purc/purchaseinquiry";
         }
-
-    }]);
-
-    app.controller('AdController', ['$scope', '$modal', '$interval', function($scope, $modal, $interval) {
-        $scope.adStart = false;
-        $modal.open({
-            templateUrl: 'static/tpl/index/home/modal/notice.html',
-            controller: 'NotifyCtrl'
-        }).result.then(function (s) {
-            $scope.adStart = true;
-            // 广告操作
-            $scope.count = 5;
-            $scope.bannerShow = true;
-            $scope.imgAnmiation = false;
-            $scope.jingKongAnmiation = true;
-            $scope.imgShow = true;
-            $scope.Times = $interval(function () {
-                $scope.count--;
-                if ($scope.count <= 0) {
-                    $scope.count = 5;
-                    $scope.jingKongAnmiation = false;
-                    $interval.cancel($scope.Times);
-                    $scope.closeClick();
-                }
-            }, 1000);
-            // 金控广告动画设置
-            $scope.closeClick = function () {
-                $scope.jingKongAnmiation = false;
-                if ($scope.bannerShow === false) {
-                    $scope.imgAnmiation = false;
-                    $scope.imgShow = false;
+        // 跳转到B2C
+        $scope.b2cLink = function (url) {
+            AccountEnterprise.getB2cUrl({}, function(data) {
+                if (url == '/help/home') {
+                    window.open(data.url + url, '_target')
                 } else {
-                    $scope.bannerShow = false;
-                    $scope.imgAnmiation = true;
+                    window.location.href = data.url + url;
                 }
-            }
-        });
+            });
+        }
+
     }]);
 
-    app.controller('NotifyCtrl', ['$scope', '$modalInstance', '$interval', function($scope, $modalInstance, $interval) {
+    app.controller('AdController', ['$scope', '$modal', '$interval', function($scope, $modal, $interval) {
+        // 广告操作
         $scope.count = 5;
-        $scope.intervalTime = $interval(function () {
+        $scope.bannerShow = true;
+        $scope.imgAnmiation = false;
+        $scope.jingKongAnmiation = true;
+        $scope.imgShow = true;
+        $scope.Times = $interval(function () {
             $scope.count--;
-            if ($scope.count === 0) {
-                $scope.lockstatus = false;
-                $interval.cancel($scope.intervalTime)
-                $scope.close()
+            if ($scope.count <= 0) {
+                $scope.count = 5;
+                $scope.jingKongAnmiation = false;
+                $interval.cancel($scope.Times);
+                $scope.closeClick();
             }
         }, 1000);
-        $scope.close = function() {
-            $modalInstance.close();
+        // 金控广告动画设置
+        $scope.closeClick = function () {
+            $scope.jingKongAnmiation = false;
+            if ($scope.bannerShow === false) {
+                $scope.imgAnmiation = false;
+                $scope.imgShow = false;
+            } else {
+                $scope.bannerShow = false;
+                $scope.imgAnmiation = true;
+            }
         }
     }]);
 
@@ -1556,6 +1544,17 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             });
         };
 
+        // 打开登录模态框
+        $scope.signinModal = function() {
+            // 跳转账户中心
+            AuthenticationService.redirectSignin();
+        };
+        // 注册
+        $scope.registerModal = function() {
+            // 跳转账户中心
+            AuthenticationService.redirectRegister();
+        };
+
         $scope.switchto = function (enUU) {// 切换企业
             AuthenticationService.reSignin(enUU).success(function (response) {
                 console.log(response);
@@ -1596,6 +1595,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         };
     }]);
 
+
     app.controller('LogOutCtrl', ['$scope', '$modalInstance', function ($scope, $modalInstance) {
         $scope.close = function (confirm) {
             $modalInstance.close(confirm);
@@ -24374,5 +24374,274 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         };
     }]);
 
+    /**
+     * B2C搜索
+     */
+    app.controller('SearchCtrl', ['$scope', '$http', '$rootScope', 'SessionService', 'AccountEnterprise', function($scope, $http, $rootScope, SessionService, AccountEnterprise) {
+
+        // 默认搜索类型
+        $scope.searchType = 'component';
+
+        // 选搜索类型
+        $scope.setTypeClick = function (type) {
+            $scope.searchType = type
+            $scope.search()
+        };
+
+        // 搜索
+        $scope.search = function() {
+            if($scope.keyword) {
+                SessionService.set('brand', true);
+                SessionService.unset('component');
+                AccountEnterprise.getB2cUrl({}, function(data) {
+                    window.location.href = data.url + '/search?w=' + encodeURI($scope.keyword) + '&type=' + $scope.searchType;
+                });
+            }
+        };
+
+        // 搜索框获得焦点,显示联想框
+        $scope.onFocus = function() {
+            $scope.associate = true;
+            $scope.selectIndex = -1;
+            if(!$scope.keyword) $scope.keyword = '';
+        };
+
+        // 搜索框失去焦点,关闭联想框
+        $scope.onBlur = function() {
+            $scope.associate = false;
+        };
+
+        // 搜索框通过按键选取想要的联想词
+        $scope.onKeyup = function() {
+            if($scope.associates && $scope.associates.length) {
+                if(event.keyCode == 40) { //监听到按下键
+                    $scope.selectIndex ++;
+                    if($scope.selectIndex >= $scope.associates.length) $scope.selectIndex = 0;
+                    $scope.keyword = $scope.associates[$scope.selectIndex];
+                } else if(event.keyCode == 38) { //监听到按上键
+                    $scope.selectIndex --;
+                    if($scope.selectIndex < 0) $scope.selectIndex = $scope.associates.length - 1;
+                    $scope.keyword = $scope.keyword = $scope.associates[$scope.selectIndex];
+                } else if(event.keyCode == 13) { //确定键
+                    $scope.search();
+                }
+            }
+        };
+
+        // 输入框内容变化,获取新的联想词
+        $scope.onChange = function() {
+            if ($scope.keyword) {
+                var params = {
+                    keyword: $scope.keyword,
+                    type: $scope.searchType
+                };
+                AccountEnterprise.getB2cUrl({}, function(data) {
+                    $http.get(data.url + '/search/similarKeywords', {
+                        params : params
+                    }).success(function(data){
+                        $scope.associates = data;// 联想词数组
+                    }).error(function(response) {
+                        console.log(response)
+                    });
+                })
+            } else {
+                $scope.associates = [];// 联想词数组
+            }
+
+        };
+
+        // 点击联想词
+        $scope.onAssociateClick = function(component) {
+            $scope.keyword = component;
+            $scope.search();
+        };
+
+        // 鼠标进入联想词框,不能关闭联想词框
+        $scope.onAssociateEnter = function() {
+            $scope.associateEnter = true;
+        };
+
+        // 鼠标离开联想词框,可以关闭联想词框
+        $scope.onAssociateLeave = function() {
+            $scope.associateEnter = false;
+        };
+
+        // 热词
+        $scope.hotwords = [{name : 'SCT2080KEC', url : 'product/component/1100400300009990/', id : 0},
+            {name : '电池组', url : 'product/kinds/346', id : 1},
+            {name : 'Vishay',url : 'product/brand/30327265e42a871be050007f01003d96/', id : 2},
+            {name : 'Panasonic Battery', url : 'product/brand/30327265e4e7871be050007f01003d96/', id : 3}];
+
+        // 热门搜索跳转
+        angular.forEach($scope.hotwords, function (value, key) {
+            AccountEnterprise.getB2cUrl({}, function(data) {
+                $scope.hotwords[key].url = data.url + '/' + value.url
+            })
+        })
+
+        // 跳转到B2C
+        $scope.b2cLink = function (url) {
+            AccountEnterprise.getB2cUrl({}, function(data) {
+                window.location.href = data.url + url;
+            });
+        }
+
+    }]);
+
+    /**
+     * 树结构
+     */
+    app.controller('treeController', function($scope, $location){
+        $scope.roleList = [
+            { "roleName" : "卖家中心(销售)", "roleId" : "role1", 'path': 'sale', level: 0, collapsed: true, "children" : [
+                    { "roleName" : "商务管理", "roleId" : "role1-1", collapsed: true, "children" : [
+                            { "roleName" : "客户采购询价", "roleId" : "role1-1-1", 'link' : '#/sale/inquiry', "children" : [] },
+                            { "roleName" : "客户公共询价", "roleId" : "role1-1-2", 'link' : '#/sale/pubinquiry', "children" : [] },
+                            { "roleName" : "客户模具询价", "roleId" : "role1-1-3", 'link' : '#/sale/mould', "children" : [] },
+                            { "roleName" : "主动报价", "roleId" : "role1-1-4", 'link' : '#/sale/quotation/list', "children" : [] },
+                            { "roleName" : "客户招标", "roleId" : "role1-1-5", 'link' : '#/sale/tender', "children" : [] }
+                        ] },
+                    { "roleName" : "订单管理", "roleId" : "role1-2", collapsed: true, "children" : [
+                            { "roleName" : "客户采购订单", "roleId" : "role1-2-1", 'link' : '#/sale/order', "children" : [] },
+                            { "roleName" : "客户采购变更单", "roleId" : "role1-2-2", 'link' : '#/sale/change', "children" : [] },
+                            { "roleName" : "客户委外单", "roleId" : "role1-2-3", 'link' : '#/sale/maketodo/makeorder', "children" : [] },
+                            { "roleName" : "委外变更单", "roleId" : "role1-2-4", 'link' : '#/sale/makechange', "children" : [] },
+                            { "roleName" : "客户发货提醒", "roleId" : "role1-2-5", 'link' : '#/sale/notice', "children" : [] },
+                            { "roleName" : "发货单", "roleId" : "role1-2-6", 'link' : '#/sale/send', "children" : [] }
+                        ]},
+                    { "roleName" : "客户出入库", "roleId" : "role1-3", collapsed: true, "children" : [
+                            { "roleName" : "MRB单", "roleId" : "role1211", 'link' : '#/sale/MRB',  "children" : [] },
+                            { "roleName" : "不良品出库单", "roleId" : "role1-3-1", 'link' : '#/sale/badOut', "children" : [] },
+                            { "roleName" : "不良品入库单", "roleId" : "role1-3-2", 'link' : '#/sale/badIn', "children" : [] },
+                            { "roleName" : "客户采购验收单", "roleId" : "role1-3-3", 'link' : '#/sale/accept', "children" : [] },
+                            { "roleName" : "客户采购验退单", "roleId" : "role1-3-4", 'link' : '#/sale/returns', "children" : [] },
+                            { "roleName" : "客户委外验收单", "roleId" : "role1-3-5", 'link' : '#/sale/makeaccept', "children" : [] },
+                            { "roleName" : "客户委外验退单", "roleId" : "role1-3-6", 'link' : '#/sale/makereturns', "children" : [] }
+                        ] },
+                    { "roleName" : "样品管理", "roleId" : "role1-4", collapsed: true, "children" : [
+                            { "roleName" : "客户打样申请", "roleId" : "role1-4-1", 'link' : '#/sale/sample', "children" : [] },
+                            { "roleName" : "客户认定单", "roleId" : "role1-4-2", 'link' : '#/sale/approval', "children" : [] }
+                        ] },
+                    { "roleName" : "基础资料", "roleId" : "role1-5", collapsed: true, "children" : [
+                            { "roleName" : "客户资料", "roleId" : "role1-5-1", 'link' : '#/sale/customer', "children" : [] },
+                            { "roleName" : "绩效考核", "roleId" : "role1-5-2", 'link' : '#/sale/vendorPerformanceAssess', "children" : [] },
+                            { "roleName" : "产品导入", "roleId" : "role1-5-3", 'link' : '#/sale/prodList', "children" : [] }
+                        ] }
+                ]},
+
+            { "roleName" : "买家中心(采购)", "roleId" : "role2", 'path': 'purc', level: 0, collapsed: true, "children" : [
+                    { "roleName" : "采购管理", "roleId" : "role2-1", collapsed: true, "children" : [
+                            { "roleName" : "供应商资料", "roleId" : "role2-1-1", 'link' : '#/purc/vendor', "children" : [] },
+                            { "roleName" : "供应商服务", "roleId" : "role2-1-2", 'link' : '#/purc/vendor/serve', "children" : [] },
+                            { "roleName" : "采购物料", "roleId" : "role2-1-3", 'link' : '#/purc/product', "children" : [] },
+                            { "roleName" : "采购招标", "roleId" : "role2-1-4", 'link' : '#/purc/tender', "children" : [] },
+                            { "roleName" : "采购询价", "roleId" : "role2-1-5", 'link' : '#/purc/purchaseinquiry', "children" : [] },
+                            { "roleName" : "公共询价", "roleId" : "role2-1-6", 'link' : '#/purc/publicInquiry', "children" : [] },
+                            { "roleName" : "采购订单", "roleId" : "role2-1-7", 'link' : '#/purc/order', "children" : [] },
+                            { "roleName" : "采购变更单", "roleId" : "role2-1-8", 'link' : '#/purc/change', "children" : [] },
+                            { "roleName" : "代采订单", "roleId" : "role2-1-9", 'link' : '#/purc/deputy', "children" : [] },
+                            { "roleName" : "委外订单", "roleId" : "role2-1-10", 'link' : '#/purc/makeoutorder', "children" : [] }
+                        ] }
+                ]},
+
+            { "roleName" : "财务", "roleId" : "role3", 'path': 'fa', level: 0, collapsed: true, "children" : [
+                    { "roleName" : "应收", "roleId" : "role3-1", collapsed: true,  "children" : [
+                            { "roleName" : "发票", "roleId" : "role3-1-1", 'link' : '#/fa/apBill', "children" : [] },
+                            { "roleName" : "应收对账单", "roleId" : "role3-1-2", 'link' : '#/fa/apCheck', "children" : [] }
+                        ] },
+                    { "roleName" : "应付", "roleId" : "role3-2", collapsed: true, "children" : [
+                            { "roleName" : "应付对账单", "roleId" : "role3-2-1", 'link' : '#/fa/arCheck', "children" : [] }
+                        ]}
+                ]},
+            { "roleName" : "企业圈", "roleId" : "role4", 'link' : '#/baseInfo/enterpriseList', level: 0, "children" : [
+                ]},
+            { "roleName" : "基础设置", "roleId" : "role5", 'path': 'approvalFlow', collapsed: true, level: 0, "children" : [
+                    { "roleName" : "企业设置", "roleId" : "role5-1", collapsed: true, "children" : [
+                            { "roleName" : "企业信息", "roleId" : "role5-1-1", 'link' : '#/approvalFlow/enterprise', "children" : [] },
+                            { "roleName" : "物料信息", "roleId" : "role5-1-2", 'link' : '#/approvalFlow/product', "children" : [] },
+                            { "roleName" : "我的产品库", "roleId" : "role5-1-3", 'link' : '#/approvalFlow/userProduct', "children" : [] },
+                            { "roleName" : "人员信息", "roleId" : "role5-1-4", 'link' : '#/approvalFlow/user', "children" : [] },
+                            { "roleName" : "角色权限", "roleId" : "role5-1-5", 'link' : '#/approvalFlow/role', "children" : [] },
+                            { "roleName" : "审批流", "roleId" : "role5-1-6", 'link' : '#/approvalFlow/flow', "children" : [] },
+                            { "roleName" : "操作日志", "roleId" : "role5-1-7", 'link' : '#/approvalFlow/log', "children" : [] }
+                        ]}
+                ]}
+        ];
+        $scope.currentObj = {};
+        var hasChildrenObj = function (target) {
+            var flag = false;
+            if ($scope.currentObj.roleId && target && target.children) {
+                angular.forEach(target.children, function (item) {
+                    if (item.roleId == $scope.currentObj.roleId) {
+                        flag = true;
+                    }
+                    if (item.children.length && hasChildrenObj(item)) {
+                        flag = true;
+                    }
+                });
+            }
+            return flag;
+        }
+        var roopCall = function (arr, callBack) {
+            angular.forEach(arr, function (item) {
+                if (item.children && item.children.length) {
+                    roopCall(item.children, callBack);
+                }
+                callBack(item);
+            })
+        }
+        var initObj = function (arr, flag) {
+            angular.forEach(arr, function (item) {
+               if (flag) {
+                   item.collapsed = false;
+               }
+                if (item.children && item.children.length) {
+                    initObj(item.children, item.path && item.path == $location.$$path.split('/')[1]);
+                } else {
+                    if (item.link && item.link.split('#')[1] == $location.$$path) {
+                        item.selected = 'selected';
+                        $scope.currentObj = item;
+                    }
+                }
+            })
+        }
+        initObj($scope.roleList);
+        var initClose = function () {
+            roopCall($scope.roleList, function (item) {
+                item.collapsed = !hasChildrenObj(item);
+            })
+        }
+        initClose();
+        var closeRow = function (arr) {
+            angular.forEach(arr, function (item) {
+                item.selected = undefined;
+                if (item.children) {
+                    closeRow(item.children);
+                }
+            })
+        }
+        $scope.$watch( 'myTree.currentNode', function( newObj, oldObj ) {
+            if( $scope.myTree && angular.isObject($scope.myTree.currentNode) ) {
+                $scope.currentObj = newObj;
+                if (newObj.link) {
+                    window.location.href = newObj.link
+                }
+                closeRow($scope.roleList);
+                newObj.selected = 'selected';
+                roopCall($scope.roleList, function (item) {
+                    // if ((!hasChildrenObj(item) && (item.roleId != $scope.currentObj.roleId))) {
+                    //     item.collapsed = true;
+                    // }
+                    // if ($scope.currentObj.roleId == item.roleId && item.children.length) {
+                    //     // angular.forEach(item.children, function (obj) {
+                    //     //     obj.col
+                    //     // })
+                    //     item.collapsed = false;
+                    // }
+                    item.collapsed = !hasChildrenObj(item) && (item.roleId != $scope.currentObj.roleId);
+                })
+            }
+        }, false);
+    })
     return app;
 });

+ 4 - 2
src/main/webapp/resources/js/index/main.js

@@ -19,7 +19,8 @@ require.config({
 		'ngResource' : 'lib/angular/angular-resource.min',
 		'ngSanitize': 'lib/angular/angular-sanitize.min',
 		'jquery' : 'lib/jquery/jquery.min',
-		'big' : 'lib/decimal/big.min'
+		'big' : 'lib/decimal/big.min',
+		'angularTreeview' : 'lib/treeview/js/angular.treeview'
 	},
 	shim : {
 		'angular' : {
@@ -38,7 +39,8 @@ require.config({
 		'ngTable' : {
 			'exports' : 'ngTable',
 			'deps' : [ 'angular' ]
-		}
+		},
+		'angularTreeview' : ['angular']
 	}
 });
 require([ 'app/app' ], function(app) {

+ 79 - 75
src/main/webapp/resources/js/index/services/Account.js

@@ -1,76 +1,80 @@
-define([ 'ngResource' ], function() {
-	angular.module('AccountServices', [ 'ngResource' ]).factory('AccountEnterprise', ['$resource', function($resource) {
-		return $resource('account/enterprise', {}, {
-			growth: {
-				url: 'account/enterprise/growth',
-				isArray: true
-			},
-			applySaas: {
-				url: 'account/enterprise/applySaas',
-				method: 'POST'
-			}
-		});
-	}]).factory('ErpLog', ['$resource', function($resource) {
-		return $resource('log/erp', {});
-	}]).factory('UsageLog', ['$resource', function($resource) {
-		return $resource('log/usage', {});
-	}]).factory('AccountResource', ['$resource', function($resource) {
-		return $resource('account/resource', {});
-	}]).factory('AccountRole', ['$resource', function($resource) {
-		return $resource('account/role/:id', {}, {
-			// 确认修改
-			save: {
-				url: 'account/role',
-				method: 'POST'
-			},
-			// 确认删除
-            remove: {
-				url: 'account/role/:id',
-				method: 'DELETE'
-			},
-			// 恢复默认
-            recover: {
-                url: 'account/role/recover/:roleId',
-                method: 'POST'
-            },
-            // 获取默认权限
-            getDefaultRole: {
-                url: 'account/role/default/:roleId',
-                method: 'GET'
-            },
-			updateDefault: {
-				url: 'account/role/updateDefault',
-				method: 'POST'
-			}
-		});
-	}]).factory('FuzzySearch', ['$resource', function($resource){
-		return $resource('account/user', {}, {
-			//绑定界面的用户搜索
-			searchUser: {
-				url: 'account/user/searchUser',
-				method: 'GET'
-			},
-			//绑定用户到企业
-			bindUserToMyEnterprise: {
-				url: 'account/user/bindUser',
-				method: 'GET'
-			}
-		})
-	}]).factory('CurrentRole', ['$resource', function($resource) {
-        return $resource('account/role', {}, {
-            //当前企业对应的角色是否是销售经理或管理员
-            roles: {
-                url: 'account/role/currentRole',
-                method: 'GET'
-            },
-			isManager: {
-            	url: 'account/role/isManager',
-				method: 'GET'
-			},
-            isUser: {
-                url: 'account/role/isUser',
-                method: 'GET'
-            }
-        })
-    }]);
+define([ 'ngResource' ], function() {
+	angular.module('AccountServices', [ 'ngResource' ]).factory('AccountEnterprise', ['$resource', function($resource) {
+		return $resource('account/enterprise', {}, {
+			growth: {
+				url: 'account/enterprise/growth',
+				isArray: true
+			},
+			applySaas: {
+				url: 'account/enterprise/applySaas',
+				method: 'POST'
+			},
+			getB2cUrl: {
+                url: 'account/enterprise/getB2cUrl',
+                method: 'GET'
+			}
+		});
+	}]).factory('ErpLog', ['$resource', function($resource) {
+		return $resource('log/erp', {});
+	}]).factory('UsageLog', ['$resource', function($resource) {
+		return $resource('log/usage', {});
+	}]).factory('AccountResource', ['$resource', function($resource) {
+		return $resource('account/resource', {});
+	}]).factory('AccountRole', ['$resource', function($resource) {
+		return $resource('account/role/:id', {}, {
+			// 确认修改
+			save: {
+				url: 'account/role',
+				method: 'POST'
+			},
+			// 确认删除
+            remove: {
+				url: 'account/role/:id',
+				method: 'DELETE'
+			},
+			// 恢复默认
+            recover: {
+                url: 'account/role/recover/:roleId',
+                method: 'POST'
+            },
+            // 获取默认权限
+            getDefaultRole: {
+                url: 'account/role/default/:roleId',
+                method: 'GET'
+            },
+			updateDefault: {
+				url: 'account/role/updateDefault',
+				method: 'POST'
+			}
+		});
+	}]).factory('FuzzySearch', ['$resource', function($resource){
+		return $resource('account/user', {}, {
+			//绑定界面的用户搜索
+			searchUser: {
+				url: 'account/user/searchUser',
+				method: 'GET'
+			},
+			//绑定用户到企业
+			bindUserToMyEnterprise: {
+				url: 'account/user/bindUser',
+				method: 'GET'
+			}
+		})
+	}]).factory('CurrentRole', ['$resource', function($resource) {
+        return $resource('account/role', {}, {
+            //当前企业对应的角色是否是销售经理或管理员
+            roles: {
+                url: 'account/role/currentRole',
+                method: 'GET'
+            },
+			isManager: {
+            	url: 'account/role/isManager',
+				method: 'GET'
+			},
+            isUser: {
+                url: 'account/role/isUser',
+                method: 'GET'
+            }
+        })
+    }]);
 });

+ 126 - 0
src/main/webapp/resources/lib/treeview/css/angular.treeview.css

@@ -0,0 +1,126 @@
+div[data-angular-treeview] {
+  /* prevent user selection */
+  -moz-user-select: -moz-none;
+  -khtml-user-select: none;
+  -webkit-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+
+  /* default */
+  font-family: Tahoma;
+  font-size:13px;
+  color: #555;
+  text-decoration: none;
+}
+
+div[data-tree-model] ul {
+  margin: 0;
+  padding: 0;
+  list-style: none; 
+  border: none;
+  overflow: hidden;
+}
+
+div[data-tree-model] li {
+  position: relative;
+  width: 202px;
+  /*padding: 0 0 0 15px;*/
+}
+div.treeView>ul>li:first-child>.expanded{
+  background: url("../img/icon_02.png") no-repeat 0 center;
+}
+div.treeView>ul>li:first-child>.collapsed{
+  background: url("../img/icon_02.png") no-repeat 0 center;
+}
+div.treeView>ul>li:nth-child(2)>.expanded{
+  background: url("../img/icon_03.png") no-repeat 0 center;
+}
+div.treeView>ul>li:nth-child(2)>.collapsed{
+  background: url("../img/icon_03.png") no-repeat 0 center;
+}
+div.treeView>ul>li:nth-child(3)>.expanded{
+  background: url("../img/icon_04.png") no-repeat 0 center;
+}
+div.treeView>ul>li:nth-child(3)>.collapsed{
+  background: url("../img/icon_04.png") no-repeat 0 center;
+}
+div.treeView>ul>li:nth-child(4)>.expanded{
+  background: url("../img/icon_05.png") no-repeat 0 center;
+}
+div.treeView>ul>li:nth-child(4)>.collapsed{
+  background: url("../img/icon_05.png") no-repeat 0 center;
+}
+div.treeView>ul>li:nth-child(4)>.normal{
+  background: url("../img/icon_05.png") no-repeat 0 center;
+}
+div.treeView>ul>li:nth-child(5)>.expanded{
+  background: url("../img/icon_06.png") no-repeat 0 center;
+}
+div.treeView>ul>li:nth-child(5)>.collapsed{
+  background: url("../img/icon_06.png") no-repeat 0 center;
+}
+div.treeView>ul>li>span{
+  display: inline-block;
+  font-size: 14px;
+  color: #333;
+  font-weight: bold;
+}
+div.treeView>ul>li>div>ul>li>span{
+  font-size: 14px;
+  font-weight: bold;
+  color: #666;
+}
+div.treeView>ul>li>div>ul>li>div>ul>li>span{
+  font-size: 14px;
+  color: #666;
+}
+div.treeView>ul>li>i{
+  margin-left: 10px;
+}
+div.treeView>ul>li>div>ul>li>i{
+  margin-left: 22px;
+}
+div.treeView>ul>li>div>ul>li>div>ul>li>i{
+  margin-left: 40px;
+}
+div.treeView>ul>li>div>ul>li>div>ul>li{
+  /*width: 100%;*/
+  /*cursor: pointer;*/
+}
+div.treeView>ul>li>div>ul>li>div>ul>li:hover{
+  /*background-color: rgba(36,150,241,.2);*/
+  /*color: #2496f1;*/
+}
+div[data-tree-model] li>span {
+  display: inline-block;
+  height: 36px;
+  line-height: 36px;
+}
+
+div[data-tree-model] li .expanded {
+  padding: 1px 12px;
+  /*background-image: url("../img/icon_02.png");*/
+  /*background-repeat: no-repeat;*/
+}
+
+div[data-tree-model] li .collapsed {
+  padding: 1px 12px;
+  /*background-image: url("static/img/left/icon_02.png");*/
+  /*background-repeat: no-repeat;*/
+}
+
+div[data-tree-model] li .normal {
+  padding: 1px 10px;
+  /*background-image: url("static/img/left/icon_02.png");*/
+  /*background-repeat: no-repeat;*/
+}
+
+div[data-tree-model] li i, div[data-tree-model] li span {
+  cursor: pointer;
+}
+
+div[data-tree-model] li .selected {
+  font-weight: bold;
+  color: #3f84f6;
+  padding: 1px 5px;
+}

BIN
src/main/webapp/resources/lib/treeview/img/icon_02.png


BIN
src/main/webapp/resources/lib/treeview/img/icon_03.png


BIN
src/main/webapp/resources/lib/treeview/img/icon_04.png


BIN
src/main/webapp/resources/lib/treeview/img/icon_05.png


BIN
src/main/webapp/resources/lib/treeview/img/icon_06.png


+ 99 - 0
src/main/webapp/resources/lib/treeview/js/angular.treeview.js

@@ -0,0 +1,99 @@
+/*
+	@license Angular Treeview version 0.1.6
+	ⓒ 2013 AHN JAE-HA http://github.com/eu81273/angular.treeview
+	License: MIT
+
+
+	[TREE attribute]
+	angular-treeview: the treeview directive
+	tree-id : each tree's unique id.
+	tree-model : the tree model on $scope.
+	node-id : each node's id
+	node-label : each node's label
+	node-children: each node's children
+
+	<div
+		data-angular-treeview="true"
+		data-tree-id="tree"
+		data-tree-model="roleList"
+		data-node-id="roleId"
+		data-node-label="roleName"
+		data-node-children="children" >
+	</div>
+*/
+
+(function ( angular ) {
+	'use strict';
+
+	angular.module( 'angularTreeview', [] ).directive( 'treeModel', ['$compile', function( $compile ) {
+		return {
+			restrict: 'A',
+			link: function ( scope, element, attrs ) {
+				//tree id
+				var treeId = attrs.treeId;
+			
+				//tree model
+				var treeModel = attrs.treeModel;
+
+				//node id
+				var nodeId = attrs.nodeId || 'id';
+
+				//node label
+				var nodeLabel = attrs.nodeLabel || 'label';
+
+				//children
+				var nodeChildren = attrs.nodeChildren || 'children';
+
+				//tree template
+				var template =
+					'<ul>' +
+						'<li data-ng-repeat="node in ' + treeModel + '"' + '>' +
+							'<i class="collapsed" data-ng-show="node.' + nodeChildren + '.length && node.collapsed" data-ng-click="' + treeId + '.selectNodeHead(node)"></i>' +
+							'<i class="expanded" data-ng-show="node.' + nodeChildren + '.length && !node.collapsed" data-ng-click="' + treeId + '.selectNodeHead(node)"></i>' +
+							'<i class="normal" data-ng-hide="node.' + nodeChildren + '.length"></i> ' +
+							'<span data-ng-class="node.selected" data-ng-click="' + treeId + '.selectNodeLabel(node)">{{node.' + nodeLabel + '}}</span>' +
+							'<div data-ng-hide="node.collapsed" data-tree-id="' + treeId + '" data-tree-model="node.' + nodeChildren + '" data-node-id=' + nodeId + ' data-node-label=' + nodeLabel + ' data-node-children=' + nodeChildren + '></div>' +
+						'</li>' +
+					'</ul>';
+
+
+				//check tree id, tree model
+				if( treeId && treeModel ) {
+
+					//root node
+					if( attrs.angularTreeview ) {
+					
+						//create tree object if not exists
+						scope[treeId] = scope[treeId] || {};
+
+						//if node head clicks,
+						scope[treeId].selectNodeHead = scope[treeId].selectNodeHead || function( selectedNode ){
+
+							//Collapse or Expand
+							selectedNode.collapsed = !selectedNode.collapsed;
+						};
+						//if node label clicks,
+						scope[treeId].selectNodeLabel = scope[treeId].selectNodeLabel || function( selectedNode ){
+
+							//remove highlight from previous node
+							if( scope[treeId].currentNode && scope[treeId].currentNode.selected ) {
+								scope[treeId].currentNode.selected = undefined;
+							}
+							//set highlight to selected node
+							selectedNode.selected = 'selected';
+
+							//set currentNode
+							scope[treeId].currentNode = selectedNode;
+
+                            //Collapse or Expand
+                            selectedNode.collapsed = !selectedNode.collapsed;
+						};
+					}
+
+					//Rendering template.
+					element.html('').append( $compile( template )( scope ) );
+				}
+			}
+		};
+	}]);
+})( angular );

+ 9 - 0
src/main/webapp/resources/lib/treeview/js/angular.treeview.min.js

@@ -0,0 +1,9 @@
+/*
+	@license Angular Treeview version 0.1.6
+	ⓒ 2013 AHN JAE-HA http://github.com/eu81273/angular.treeview
+	License: MIT
+*/
+
+(function(f){f.module("angularTreeview",[]).directive("treeModel",function($compile){return{restrict:"A",link:function(b,h,c){var a=c.treeId,g=c.treeModel,e=c.nodeLabel||"label",d=c.nodeChildren||"children",e='<ul><li data-ng-repeat="node in '+g+'"><i class="collapsed" data-ng-show="node.'+d+'.length && node.collapsed" data-ng-click="'+a+'.selectNodeHead(node)"></i><i class="expanded" data-ng-show="node.'+d+'.length && !node.collapsed" data-ng-click="'+a+'.selectNodeHead(node)"></i><i class="normal" data-ng-hide="node.'+
+d+'.length"></i> <span data-ng-class="node.selected" data-ng-click="'+a+'.selectNodeLabel(node)">{{node.'+e+'}}</span><div data-ng-hide="node.collapsed" data-tree-id="'+a+'" data-tree-model="node.'+d+'" data-node-id='+(c.nodeId||"id")+" data-node-label="+e+" data-node-children="+d+"></div></li></ul>";a&&g&&(c.angularTreeview&&(b[a]=b[a]||{},b[a].selectNodeHead=b[a].selectNodeHead||function(a){a.collapsed=!a.collapsed},b[a].selectNodeLabel=b[a].selectNodeLabel||function(c){b[a].currentNode&&b[a].currentNode.selected&&
+(b[a].currentNode.selected=void 0);c.selected="selected";b[a].currentNode=c}),h.html('').append($compile(e)(b)))}}})})(angular);

+ 237 - 0
src/main/webapp/resources/tpl/index/common/header.html

@@ -0,0 +1,237 @@
+<style>
+	#header .header-main {
+		height: 100px;
+		width: 1190px;
+		margin: auto;
+		margin-top: 20px;
+	}
+	#header .header-main > li {
+		display: inline-block;
+		margin: 0 !important;
+		vertical-align: middle;
+		text-align: center;
+	}
+	#header .header-main >li:first-child {
+		height: 100%;
+		width: 111px; /*inline元素的宽度会受到别的元素的影响,如果不设置宽度,则会被ghost-center设置的伪元素挤到下方*/
+		/*margin-left: -5.5em;*/
+	}
+	#header .mall-logo {
+		line-height: 100px;
+	}
+	#header .header-main .mall-slogan {
+		width: 250px;
+	}
+	#header .header-main .mall-slogan p{
+		font-size: 14px;
+		line-height: 20px;
+		font-weight: bold;
+		padding-top: 4px;
+		text-align: left;
+		color: #5078cb;
+		border-left: #5078cb 1px solid;
+		padding-left: 12px;
+		margin-left: 10px;
+		padding-top: 0;
+	}
+	#header .header-main .mall-search {
+		width: 470px;
+		height: 40px;
+		font-size: 12px;
+		margin-bottom: 10px;
+	}
+	#header .header-main .mall-search input.form-control, #header .header-main .mall-search button.btn-default {
+		height: 40px;
+		border: 2px solid #5078cb;
+		border-radius: 0;
+	}
+	#header .header-main .mall-search button.btn-default {
+		background-color: #5078cb;
+		color: rgb(255, 255, 255);
+		font-size: 16px;
+		width: 78px;
+	}
+	#header .header-main .mall-search .active-search {
+		text-align: left;
+		margin-top: 2px;
+	}
+	#header .header-main .mall-search .active-search .active-search-body .active-search-item {
+		line-height: 20px;
+		color: #ff0101;
+		font-size: 13px;
+		display: inline-block;
+		margin-right: 1em;
+	}
+	#header .header-main .mall-search .active-search .active-search-body .active-search-item a{
+		color: #838383;
+	}
+	#header .header-main .mall-search .active-search .active-search-body .active-search-item a:hover{
+		color: #ff0101;
+	}
+	#header .header-main .mall-search .association {
+		position: absolute;
+		left: 0;
+		top: 100%;
+		right: 61px;
+		list-style: none;
+		-webkit-padding-start: 0;
+		background: #ffffff;
+		border: 1px solid #dddddd;
+		z-index: 21;
+		width: 392px;
+	}
+	#header .header-main .mall-search .association li {
+		padding: 0 15px;
+		line-height: 30px;
+		text-align: left;
+	}
+	#header .mall-cart{
+		width:140px;
+		height: 30px;
+		line-height: 28px;
+		display: inline-block;
+		border: #bfbfbf 1px solid;
+		border-radius: 5px;
+		font-size: 14px;
+		color: #5078cb;
+		position: relative;
+	}
+	#header .mall-cart em{
+		width: 22px;
+		height: 22px;
+		display: inline-block;
+		background: #ff0000;
+		border-radius: 100%;
+		text-align: center;
+		color: #fff;
+		line-height: 22px;
+		position: absolute;
+		right: -5px;
+		top: -12px;
+		font-style: inherit;
+		font-size: 12px;
+	}
+	#header .visitor-count{
+		color: #787878;
+		font-weight: bold;
+	}
+	#header .mall-cart:hover{
+		border: #5078cb 1px solid;
+	}
+	#header .header-main .mall-search .association li.active, #header .header-main .mall-search .association li.active:hover {
+		background: #dddddd;
+	}
+	#header .header-main .mall-search .association li:hover {
+		background: #EEEEEE;
+		cursor: pointer;
+	}
+
+	#header .nav-main {
+		list-style: none;
+	}
+	#header .header-main .mall-search .type{
+		position: absolute;
+		top: -21px;
+	}
+	#header .header-main .mall-search .type .type-item{
+		padding: 4px 12px;
+		color: #5078cb;
+		font-size: 14px;
+		cursor: pointer;
+	}
+	#header .header-main .mall-search .type .type-item:hover,#header .header-main .mall-search .type .type-item.active{
+		background: #4071c6;
+		color: #fff;
+	}
+</style>
+<header id="header" role="banner" ng-controller="SearchCtrl">
+	<ul class="header-main list-unstyled">
+		<li class="ghost-center">
+			<div class="mall-logo">
+				<a ng-click="b2cLink('/')" target="_self" >
+					<img src="static/img/all/uas_mall.png" alt="返回首页"/>
+				</a>
+			</div>
+		</li>
+		<li>
+			<div class="mall-slogan"><p>For the World<br/>为世界电子产业创造价值</p></div>
+		</li>
+		<li>
+			<div class="mall-search">
+				<div class="input-group">
+					<div class="type">
+						<span class="type-item" ng-class="{'active': searchType === 'component'}" ng-click="setTypeClick('component')">型号</span>
+						<span class="type-item" ng-class="{'active': searchType === 'product'}" ng-click="setTypeClick('product')">物料名称</span>
+						<span class="type-item" ng-class="{'active': searchType === 'store'}" ng-click="setTypeClick('store')">卖家</span>
+						<span class="type-item" ng-class="{'active': searchType === 'brand'}" ng-click="setTypeClick('brand')">品牌</span>
+					</div>
+					<input ng-model="keyword" ng-change="onChange()" type="text" class="form-control"
+						   placeholder="型号/物料名称/品牌" ng-search="search()" ng-focus="onFocus()"
+						   ng-blur="onBlur()" ng-keyup="onKeyup()"/>
+					<span class="input-group-btn" ng-click="search()">
+                        <button class="btn btn-default" type="button">搜索</button>
+                    </span>
+					<ul class="association" ng-show="associate || associateEnter" ng-mouseenter="onAssociateEnter()"
+						ng-mouseleave="onAssociateLeave()">
+						<li ng-repeat="as in associates" ng-bind="as" ng-class="{'active': $index==selectIndex}"
+							ng-click="onAssociateClick(as)"></li>
+					</ul>
+				</div>
+				<div class="active-search">
+					<ul class="list-untyled active-search-body" style="padding: 0;">
+						<li class="active-search-item">热门搜索</li>
+						<li class="active-search-item" ng-repeat="hw in hotwords track by hw.id"><a ng-href="{{hw.url}}" ng-bind="hw.name" target="_blank"></a></li>
+					</ul>
+				</div>
+			</div>
+		</li>
+	</ul>
+	<!--nav   导航-->
+	<nav role="navigation" class="nav-main">
+		<ul class="container">
+			<li><a class="more-title" ng-click="b2cLink('/product/kind/home')">器件选型</a></li>
+			<li>
+				<a ng-click="b2cLink('/')">&nbsp;&nbsp;首页</a>
+			</li>
+			<li>
+				<a ng-click="b2cLink('/applyPurchase')">询价求购</a>
+				<img class="new-animate" src="static/img/all/banner-cuxiao03.png" alt="">
+			</li>
+			<li>
+				<a ng-click="b2cLink('/supplier')">供应商</a>
+			</li>
+			<li>
+				<a ui-sref="sale.pubinquiry" class="active">B2B商务</a>
+				<img class="new-animate" src="static/img/all/hot.png" alt="">
+			</li>
+			<li>
+				<a ng-click="b2cLink('/provider/shop')">店铺</a>
+			</li>
+			<li>
+				<a ng-click="b2cLink('/product/brand/brandList/A')">品牌墙</a>
+			</li>
+			<li>
+				<a ng-click="b2cLink('/pcb')">PCB专区</a>
+			</li>
+			<li>
+				<a ng-click="b2cLink('/news')">优软快讯</a>
+			</li>
+		</ul>
+	</nav>
+</header>
+<script language="javascript" type="text/javascript">
+	$(function () {
+		var targetChildrem_Height = $('.scroll-data dl').height();
+		setInterval(function () {
+			var target = $('.scroll-data')
+			target.append(target.children(':first').clone(true));
+			target.animate({
+				scrollTop:targetChildrem_Height
+			},function () {
+				target.scrollTop(0);
+				target.children(':first').remove();
+			})
+
+		},6000)
+	})
+</script>

+ 33 - 0
src/main/webapp/resources/tpl/index/common/leftAll.html

@@ -0,0 +1,33 @@
+<!--树结构-->
+<div id="tree" ng-controller="treeController">
+	<div class="tree-header"><img src="static/img/left/icon_01.png" alt="">服务列表</div>
+	<div
+		data-angular-treeview="true"
+		data-tree-id="myTree"
+		data-tree-model="roleList"
+		data-node-id="roleId"
+		data-node-label="roleName"
+		data-node-children="children" class="treeView">
+	</div>
+</div>
+<!--公告-->
+<div class="feed-wrap">
+	<div class="pane notice" ng-controller="NoticeCtrl">
+		<div class="pane-header">
+			<img src="static/img/left/gonggao.png"> 公告<span class="pull-right f12">{{dateTime | date: 'MM-dd'}}
+                {{["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"][dateTime.getDay()]}}</span><!--ng-class="{'day-read': !isCurrentTime(dateTime, notice.date)}"-->
+		</div>
+		<div class="pane-body">
+			<ul class="list-unstyled detail details">
+				<li ng-repeat="notice in notices"
+					ng-class="isCurrentTime(dateTime, notice.date) && notice.readStatus == 1 ? 'day-read' : isCurrentTime(dateTime, notice.date) && notice.readStatus == 0 ? 'day-unread' : 'nonday'">
+					<a ng-click="setReadStatus(notice.id)" href="public#/notice/{{notice.id}}" class="" ng-bind="::notice.title" target="_blank"></a><img src="static/img/home/new.png" ng-show="isCurrentTime(dateTime, notice.date)">
+				</li>
+			</ul>
+		</div>
+	</div>
+</div>
+<!--应收宝-->
+<div class="jk">
+	<img src="static/img/home/jingkong.png">
+</div>