Browse Source

Merge branch 'dev-mysql' into feature-newHome

yangc 8 years ago
parent
commit
383e2ea461
20 changed files with 402 additions and 47 deletions
  1. 19 1
      src/main/java/com/uas/platform/b2c/common/account/controller/UserController.java
  2. 10 1
      src/main/java/com/uas/platform/b2c/common/account/service/UserService.java
  3. 21 0
      src/main/java/com/uas/platform/b2c/common/account/service/impl/UserServiceImpl.java
  4. 3 3
      src/main/java/com/uas/platform/b2c/common/search/constant/SearchUrl.java
  5. 1 1
      src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/SearchServiceImpl.java
  6. 11 2
      src/main/java/com/uas/platform/b2c/core/filter/SSOInterceptor.java
  7. 19 11
      src/main/java/com/uas/platform/b2c/external/erp/order/service/impl/OrderServiceImpl.java
  8. 1 0
      src/main/java/com/uas/platform/b2c/external/erp/order/util/ModelConverter.java
  9. 9 0
      src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductDao.java
  10. 0 12
      src/main/java/com/uas/platform/b2c/trade/order/model/Purchase.java
  11. 14 0
      src/main/java/com/uas/platform/b2c/trade/order/model/PurchaseDetail.java
  12. 9 0
      src/main/java/com/uas/platform/b2c/trade/order/service/impl/PurchaseDetailServiceImpl.java
  13. 5 4
      src/main/webapp/resources/js/usercenter/controllers/forstore/account_manager_ctrl.js
  14. 230 0
      src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_transfer_ctrl.js
  15. 5 4
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_account_management_ctrl.js
  16. 1 1
      src/main/webapp/resources/view/usercenter/forstore/buyer_transfer.html
  17. 19 3
      src/main/webapp/resources/view/usercenter/header.html
  18. 3 0
      src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_unstandard_erp.html
  19. 3 0
      src/main/webapp/resources/view/vendor/forstore/vendor-invoice.html
  20. 19 4
      src/main/webapp/resources/view/vendor/header.html

+ 19 - 1
src/main/java/com/uas/platform/b2c/common/account/controller/UserController.java

@@ -174,7 +174,18 @@ public class UserController {
 	public ResponseEntity<String> sendCheckCode(final String newUserEmail, final HttpSession session) {
 		User sysUser = SystemSession.getUser();
 		User user = userService.findUserPwdByUserUU(sysUser.getUserUU());
+		Long checkTime = (Long)session.getAttribute("checkTime");
+		if (!StringUtils.isEmpty(checkTime)){
+			Long nowTime = new Date().getTime();
+			if((nowTime-checkTime)<60 * 1000){
+				throw new IllegalOperatorException("验证码发送频繁...");
+			}
+		}
 		if (!StringUtils.isEmpty(newUserEmail)) {
+			String pageToken = (String) session.getAttribute("pageToken");
+			if (pageToken == null || pageToken.equals("")) {
+				throw new IllegalOperatorException("页面信息获取失败!");
+			}
 			//发送邮件
 			ModelMap data = new ModelMap();
 			String checkCode = String.valueOf((int) ((Math.random() * 9 + 1) * 100000));
@@ -267,7 +278,7 @@ public class UserController {
 				throw new IllegalOperatorException("旧邮箱地址校验错误");
 			}
 			user.setUserEmail(newUserEmail);
-			user = userService.save(user);
+			user = userService.updateUserEmail(user.getUserTel(),newUserEmail,user.getUserUU());
 			if(sysUser.getEnterprise()!=null){
 				user.setCurrentEnterprise(sysUser.getEnterprise().getUu());
 			}
@@ -309,6 +320,13 @@ public class UserController {
 	public ResponseEntity<String> sendTelCheckCode(final String newUserTel, final HttpSession session) {
 		User sysUser = SystemSession.getUser();
 		User user = userService.findUserPwdByUserUU(sysUser.getUserUU());
+		Long checkTime = (Long)session.getAttribute("telCheckTime");
+		if (!StringUtils.isEmpty(checkTime)){
+			Long nowTime = new Date().getTime();
+			if((nowTime-checkTime)<60 * 1000){
+				throw new IllegalOperatorException("验证码发送频繁...");
+			}
+		}
 		if (!StringUtils.isEmpty(newUserTel)) {
 			//页面Token校验
 			String pageToken = (String) session.getAttribute("pageToken");

+ 10 - 1
src/main/java/com/uas/platform/b2c/common/account/service/UserService.java

@@ -159,5 +159,14 @@ public interface UserService {
 	 * @param uu
 	 * @return
 	 */
-	User updateUserTel(String oldTel,String newTel,Long uu);
+	User updateUserTel(String oldTel, String newTel, Long uu);
+
+	/**
+	 * 修改邮箱
+	 * @param tel
+	 * @param newEmail
+	 * @param uu
+	 * @return
+	 */
+	User updateUserEmail(String tel, String newEmail, Long uu);
 }

+ 21 - 0
src/main/java/com/uas/platform/b2c/common/account/service/impl/UserServiceImpl.java

@@ -482,4 +482,25 @@ public class UserServiceImpl implements UserService {
 			}
 			return null;
 		}
+
+	@Override
+	public User updateUserEmail(String tel, String newEmail, Long uu) {
+
+		try {
+			if(!StringUtils.isEmpty(tel) && !StringUtils.isEmpty(newEmail)) {
+				User user = userDao.findOne(uu);
+				//从账户中心返回的数据
+				List<com.uas.account.entity.User> users = AccountUtils.updateEmail(tel,newEmail);
+				//保存数据库
+				if (users != null && users.size() > 0) {
+					user.setUserEmail(users.get(0).getSecondUID());
+					user = userDao.save(user);
+					return user;
+				}
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		throw new IllegalOperatorException("数据更新失败...");
+	}
 }

+ 3 - 3
src/main/java/com/uas/platform/b2c/common/search/constant/SearchUrl.java

@@ -16,17 +16,17 @@ public class SearchUrl {
      * 获取类目的数据
      *
      */
-    public static final String KIND_INFO_URL = "/search/kinds?keyword={keyword}?page={page}&size={size}";
+    public static final String KIND_INFO_URL = "/search/kinds?keyword={keyword}&page={page}&size={size}";
 
     /**
      * 搜索品牌的id
      */
-    public static final String BRAND_ID_URL = "/search/brandIds?keyword={keyword}?page={page}&size={size}";
+    public static final String BRAND_ID_URL = "/search/brandIds?keyword={keyword}&page={page}&size={size}";
 
     /**
      * 搜索品牌的具体信息
      */
-    public static final String BRAND_INFO_URL = "/search/brands?keyword={keyword}?page={page}&size={size}";
+    public static final String BRAND_INFO_URL = "/search/brands?keyword={keyword}&page={page}&size={size}";
 
 
     /**

+ 1 - 1
src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/SearchServiceImpl.java

@@ -223,7 +223,7 @@ public class SearchServiceImpl implements SearchService{
                 map.clear();
                 map.put("all",reMapA);
                 map.put("kind",reMapK);
-                map.put("componet",reMapC);
+                map.put("component",reMapC);
                 map.put("brand",reMapB);
                 return map;
             }catch (Exception e) {

+ 11 - 2
src/main/java/com/uas/platform/b2c/core/filter/SSOInterceptor.java

@@ -55,6 +55,9 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
     @Value("#{sys.profile}")
     private String profile;
 
+    @Value("#{sys.enUU}")
+    private String enUU;
+
     private final DeviceResolver deviceResolver = new LiteDeviceResolver();
 
     private HashMap<String, Collection<ConfigAttribute>> resourceMap;
@@ -188,9 +191,15 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
                 }
             }
         }
+        // 暂时在正式 过滤admin访问权限
         if (needPermission != null) {
-            return;
-//			throw new AccessDeniedException("无法访问,没有 " + needPermission + " 权限!");
+            if ("prod".equals(profile)) {
+                if (!user.getEnterprise().getUu().toString().equals(enUU)) {
+                    if ("进入优软商城后台进行运营维护".equals(needPermission)) {
+                        throw new AccessDeniedException("无法访问,没有 " + needPermission + " 权限!");
+                    }
+                }
+            }
         }
     }
 

+ 19 - 11
src/main/java/com/uas/platform/b2c/external/erp/order/service/impl/OrderServiceImpl.java

@@ -13,7 +13,6 @@ import com.uas.platform.b2c.core.support.log.ErpB2cBufferedLogger;
 import com.uas.platform.b2c.external.erp.order.util.ModelConverter;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsHistoryDao;
 import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
-import com.uas.platform.b2c.prod.commodity.model.GoodsHistory;
 import com.uas.platform.b2c.prod.commodity.model.Product;
 import com.uas.platform.b2c.trade.order.dao.OrderDao;
 import com.uas.platform.b2c.trade.order.dao.PurchaseDao;
@@ -25,6 +24,7 @@ import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.LogicalExpression;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.persistence.criteria.SimpleExpression;
+import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.util.CollectionUtils;
@@ -33,7 +33,9 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 public class OrderServiceImpl implements OrderService {
@@ -59,6 +61,8 @@ public class OrderServiceImpl implements OrderService {
 	@Autowired
 	private EnterpriseDao enterpriseDao;
 
+	private final Logger loggerInfo = Logger.getLogger(getClass());
+
 	private static final ErpB2cBufferedLogger logger = BufferedLoggerManager.getLogger(ErpB2cBufferedLogger.class);
 
 	@Override
@@ -96,8 +100,13 @@ public class OrderServiceImpl implements OrderService {
 				return null;
 			}
 		});
+
 		List<Order> orders = new ArrayList<Order>();
+		String sourceapp = "ERP";
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		loggerInfo.info(String.format(" erp总共下载订单数 %s", orders.size()));
 		for (Purchase purchase : purcs) {
+			Date startDate = new Date();
 			boolean codeExists = false;
 			Order order = ModelConverter.getOrder(purchase);
 			UserBaseInfo buyer = userBaseInfoDao.findUserByUserUU(purchase.getBuyeruu());
@@ -109,20 +118,19 @@ public class OrderServiceImpl implements OrderService {
 			if (enterprise != null) {// 设置买方企业信息
 				order.setBuyerEn(com.uas.platform.b2c.external.erp.common.util.ModelConverter.convert(enterprise));
 			}
-
 			for (OrderDetail orderDetail : order.getDetails()) {
-				List<GoodsHistory> goodsHistorys = goodsHistoryDao.findByBatchCode(orderDetail.getBatchCode());// 获取上架历史信息
-				if (!CollectionUtils.isEmpty(goodsHistorys)) {
-					orderDetail.setPublisheruu(goodsHistorys.get(0).getPublisherUU());// 添加发布人uu
-					List<Product> products = productDao.findByEnUUAndCmpUuId(SystemSession.getUser().getEnterprise().getUu(), goodsHistorys.get(0).getUuid());//获取物料信息
-					if (!CollectionUtils.isEmpty(products)) {
-						orderDetail.setCode(products.get(0).getProdNum());// 设置物料编号,有物料编号才回传到ERP
-						codeExists = true;
-					}
+				List<Product> products = productDao.findByEnUUAndCmpUuIdAndSourceApp(SystemSession.getUser().getEnterprise().getUu(), orderDetail.getUuid(), sourceapp);//获取物料信息
+				if (!CollectionUtils.isEmpty(products)) {
+					orderDetail.setCode(products.get(0).getProdNum());// 设置物料编号,有物料编号才回传到ERP
+					codeExists = true;
 				}
 			}
-			if (codeExists)
+			if (codeExists) {
 				orders.add(order);
+			}
+
+			Date endDate = new Date();
+			loggerInfo.info(String.format("处理历时" + (endDate.getTime() - startDate.getTime()) + "毫秒"));
 		}
 		return orders;
 	}

+ 1 - 0
src/main/java/com/uas/platform/b2c/external/erp/order/util/ModelConverter.java

@@ -72,6 +72,7 @@ public class ModelConverter {
 		orderDetail.setTax(detail.getTax());
 		orderDetail.setCurrency(detail.getCurrencyName());
 		orderDetail.setStatus(detail.getStatus());
+		orderDetail.setPublisheruu(detail.getSellPublishuu());
 		return orderDetail;
 	}
 

+ 9 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductDao.java

@@ -88,6 +88,15 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
      */
     List<Product> findByEnUUAndCmpUuId(Long enuu, String uuid);
 
+    /**
+     * 通过企业uu,标准器件uuid,来源获取物料信息
+     * @param enuu 企业uu
+     * @param uuid 标准器件uuid
+     * @param sourceapp 来源
+     * @return
+     */
+    List<Product> findByEnUUAndCmpUuIdAndSourceApp(Long enuu, String uuid, String sourceapp);
+
     /**
      * 获取该企业的产品信息
      * @param enuu 企业的uu号

+ 0 - 12
src/main/java/com/uas/platform/b2c/trade/order/model/Purchase.java

@@ -10,18 +10,6 @@ import com.uas.platform.core.persistence.StatusColumn;
 import org.hibernate.annotations.Cache;
 import org.hibernate.annotations.CacheConcurrencyStrategy;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
-import javax.persistence.OrderBy;
-import javax.persistence.Table;
-import javax.persistence.Transient;
 import javax.persistence.*;
 import java.io.Serializable;
 import java.util.Date;

+ 14 - 0
src/main/java/com/uas/platform/b2c/trade/order/model/PurchaseDetail.java

@@ -83,6 +83,12 @@ public class PurchaseDetail extends Document {
 	@Column(name = "cmp_uuid")
 	private String uuid;
 
+	/**
+	 * 卖方上架人uu
+	 */
+	@Column(name = "pud_sellpublishuu")
+	private Long sellPublishuu;
+
 	/*
 	 * 开票的状态 700 待开发票 701 待收发票 702 已收发票 703 不需开票
 	 */
@@ -521,6 +527,14 @@ public class PurchaseDetail extends Document {
 		this.uuid = uuid;
 	}
 
+	public Long getSellPublishuu() {
+		return sellPublishuu;
+	}
+
+	public void setSellPublishuu(Long sellPublishuu) {
+		this.sellPublishuu = sellPublishuu;
+	}
+
 	/**
 	 * Gets original.
 	 *

+ 9 - 0
src/main/java/com/uas/platform/b2c/trade/order/service/impl/PurchaseDetailServiceImpl.java

@@ -4,6 +4,8 @@ import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.utils.DoubleArith;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsHistoryDao;
+import com.uas.platform.b2c.prod.commodity.model.GoodsHistory;
 import com.uas.platform.b2c.prod.commodity.service.GoodsService;
 import com.uas.platform.b2c.prod.product.common.service.CreateNumberService;
 import com.uas.platform.b2c.trade.order.dao.OrderDetailDao;
@@ -57,6 +59,9 @@ public class PurchaseDetailServiceImpl implements PurchaseDetailService {
 	
 	@Autowired
 	private CreateNumberService createNumberService;
+
+	@Autowired
+	private GoodsHistoryDao goodsHistoryDao;
 	
 	@Autowired
 	private SysConf sysConf;
@@ -194,6 +199,10 @@ public class PurchaseDetailServiceImpl implements PurchaseDetailService {
 			pDetail.setPurchase(purchase);
 			pDetail.setBillStatus(Status.TOBEMAKE_BILL.value());
 			pDetail.setStatusToBeConfirmed(sysConf.getAdminUU());
+			List<GoodsHistory> goodsHistories = goodsHistoryDao.findByBatchCode(pDetail.getBatchCode()); // 查询批次上架人
+			if (CollectionUtils.isNotEmpty(goodsHistories)) {
+				pDetail.setSellPublishuu(goodsHistories.get(0).getPublisherUU());
+			}
 			details.add(pDetail);
 		}
 		purchase.setCmpQty(uuids.size());

+ 5 - 4
src/main/webapp/resources/js/usercenter/controllers/forstore/account_manager_ctrl.js

@@ -793,6 +793,7 @@ define(['app/app'], function (app) {
   app.register.controller('UserEmailCtrl',
       ['$scope', '$modalInstance', 'user', 'User', 'toaster', '$interval',
         function ($scope, $modalInstance, user, User, toaster, $interval) {
+          User.getPageToken();
           $scope.user = user;
           $scope.user.userEmail = null;
           $scope.user.newUserEmail = null;
@@ -874,8 +875,8 @@ define(['app/app'], function (app) {
                       }
                     }
                   }, 1000, 60);
-            }, function () {
-              $scope.codeSuccess = false;
+            }, function (response) {
+              toaster.pop('error', '错误', response.data);
             });
           };
 
@@ -1040,8 +1041,8 @@ define(['app/app'], function (app) {
                       }
                     }
                   }, 1000, 60);
-            }, function () {
-              $scope.codeSuccess = false;
+            }, function (response) {
+              toaster.pop('error', '错误', response.data);
             });
           };
 

+ 230 - 0
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_transfer_ctrl.js

@@ -398,6 +398,25 @@ define([ 'app/app' ], function(app) {
 		// //开始时,就获取账户信息
 		// getBuyAccount();
 
+		//新增账户
+		$scope.editAccount = function() {
+			var modalInstance = $modal.open({
+				templateUrl : 'static/view/common/bankInfoModal.html',
+				controller : 'AccountCtrl',
+				resolve : {
+					account : function() {
+						return {};
+					}
+				}
+			});
+
+			modalInstance.result.then(function(account) {
+				$scope.buyAccount = account;
+			}, function() {
+
+			});
+		};
+
 		//获取管理平台账户信息
 		var getSellerAccount = function() {
 			// 平台账户
@@ -768,6 +787,217 @@ define([ 'app/app' ], function(app) {
 		};
 	}]);
 
+	app.register.controller('AccountCtrl', ['$scope', '$modalInstance', 'account', 'bankInfoService', 'toaster', function($scope, $modalInstance, account, bankInfoService, toaster){
+
+		/**
+		 * 目前只支持的银行
+		 * @type {string[]}
+		 */
+		$scope.bankList = [
+			'中国银行','中国建设银行','中国工商银行','中国农业银行','交通银行','招商银行','中国民生银行',
+			'兴业银行','中信银行','中国光大银行','广发银行','平安银行','中国邮政储蓄银行','华夏银行','浦发银行'
+		];
+
+		var initIndex = function () {
+			$scope.selectIndex = -1;
+			$scope.downIndex = 0;
+		};
+
+		$scope.getItemFocus = function() {
+			$scope.showBankFrame = true;
+			$scope.matchData = true;
+			$scope.resultList = $scope.bankList;
+			initIndex();
+		};
+
+		$scope.onItemBlur = function () {
+			if ($scope.time){
+				clearTimeout($scope.time);
+			}
+			$scope.time = setTimeout(function () {
+				$scope.$apply(function () {
+					$scope.showBankFrame = false;
+				});
+			}, 200);
+		};
+		$scope.onKeyUp = function () {
+			var dom = document.getElementById("ulContent");
+			console.log(event);
+			if ($scope.showBankFrame){
+				if(event.keyCode == 40) { //监听到按下键
+					$scope.selectIndex ++;
+					if ($scope.downIndex == 5){
+						dom.scrollTop += 44;
+					}
+					if ($scope.downIndex <= 4){
+						$scope.downIndex++;
+					}
+					if($scope.selectIndex >= $scope.resultList.length){
+						$scope.selectIndex = 0;
+						dom.scrollTop = 0;
+						$scope.downIndex = 1;
+					}
+					$scope.account.bankname = $scope.resultList[$scope.selectIndex];
+					// $scope.containsAttr($scope.logistics.companyName);
+				} else if(event.keyCode == 38) { //监听到按上键
+					$scope.selectIndex --;
+					if ($scope.downIndex == 1){
+						dom.scrollTop -= 44;
+					}
+					if ($scope.downIndex >= 2){
+						$scope.downIndex--;
+					}
+					if($scope.selectIndex < 0){
+						$scope.selectIndex = $scope.resultList.length - 1;
+						dom.scrollTop = 2400;
+						$scope.downIndex = 5;
+					}
+					$scope.account.bankname = $scope.resultList[$scope.selectIndex];
+					// $scope.containsAttr($scope.logistics.companyName);
+				} else if(event.keyCode == 13) { //确定键
+					$scope.showBankFrame = false;
+				}
+			}
+		};
+
+		$scope.showList = function () {
+			$scope.showBankFrame = !$scope.showBankFrame;
+			$scope.matchData = true;
+			$scope.resultList = $scope.bankList;
+		};
+
+		$scope.inputBankName = function () {
+			$scope.showBankFrame = true;
+		};
+
+		$scope.fitBankToAccount = function (item) {
+			$scope.account.bankname = item;
+			$scope.showBankFrame = false;
+		};
+
+		$scope.account = account;
+		if($scope.account) {
+			$scope.title = "修改账户";
+		}else {
+			$scope.title = "新增账户";
+			$scope.account = {};
+		}
+
+		var matchArray = function () {
+			$scope.account.bankname = $scope.account.bankname ? $scope.account.bankname : '';
+			$scope.resultList = $scope.bankList.filter(function (data) {
+				if (data.indexOf($scope.account.bankname) >= 0){
+					return data;
+				}
+			});
+			if ($scope.resultList.length > 0){
+				$scope.matchData = true;
+			}else{
+				$scope.matchData = false;
+			}
+		};
+
+		/**
+		 * 验证新增账户格式
+		 * @param num
+		 */
+		$scope.checkAccount = function (num) {
+			var size;
+			if (num == 1){
+				//验证开户银行名称
+				$scope.showBankFrame = true;
+				matchArray();
+			}else if(num == 2){
+				//验证开户支行名称
+				if($scope.account.branchname){
+					size = $scope.account.branchname.replace(/[^\x00-\xff]/g,'**').length;
+					if (size > 40){
+						$scope.branchError = true;
+					}else {
+						$scope.branchError = false;
+					}
+					var telPatt = new RegExp("^[\u2E80-\u9FFF]+$");
+					if (telPatt.test($scope.account.branchname)){
+						$scope.branchPattError = false;
+					}else {
+						$scope.branchPattError = true;
+					}
+				}
+			}else if(num == 3){
+				//验证银行账号
+				if ($scope.account.number){
+					size = $scope.account.number.replace(/[^\x00-\xff]/g,'**').length;
+					if (size > 30){
+						$scope.numberError = true;
+					}else {
+						$scope.numberError = false;
+					}
+					var numPatt = new RegExp("^[0-9]+$");
+					if (numPatt.test($scope.account.number)){
+						$scope.numberPattError = false;
+					}else {
+						$scope.numberPattError = true;
+					}
+					validateRepeat($scope.account.number);
+				}
+			}else if(num == 4){
+				//验证开户名称
+				if ($scope.account.accountname){
+					size = $scope.account.accountname.replace(/[^\x00-\xff]/g,'**').length;
+					if (size > 100){
+						$scope.nameError = true;
+					}else {
+						$scope.nameError = false;
+					}
+				}
+			}
+		};
+
+		var validateRepeat = function (number) {
+			bankInfoService.getCountByNumber({type:1061, number:number}, {}, function (data) {
+				if (data.success){
+					if (data.data != 0){
+						$scope.repeatError = true;
+					}else {
+						$scope.repeatError = false;
+					}
+				}else {
+					toaster.pop("info", data.message);
+				}
+			});
+		};
+
+		$scope.confirm = function() {
+			var account = $scope.account;
+
+			if (!account){
+				toaster.pop('error', '请按要求填写正确的信息');
+				return ;
+			}
+			if (!account.bankname || !account.branchname || !account.number || !account.accountname){
+				toaster.pop('error', '请按要求填写正确的信息');
+				return ;
+			}
+			if (!$scope.matchData || $scope.branchError || $scope.branchPattError || $scope.numberError || $scope.numberPattError ||
+				$scope.nameError || $scope.repeatError){
+				toaster.pop('error', '请按要求填写正确的信息');
+				return ;
+			}
+
+			var method = 'saveBuyPersonalBank'; //不区分个人和企业账户
+			bankInfoService[method].call(null, null, $scope.account, function(data) {
+				toaster.pop('success', '保存成功');
+				$modalInstance.close(data)
+			},function (response) {
+				toaster.pop('warning', '保存信息失败');
+			});
+		};
+
+		$scope.cancel = function() {
+			$modalInstance.dismiss();
+		}
+
+	}]);
 
 	app.register.controller('BankInfoCtrl', ['$scope', '$modalInstance', 'account', 'kind', function($scope, $modalInstance, account, kind){
 		$scope.account = account;

+ 5 - 4
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_account_management_ctrl.js

@@ -715,6 +715,7 @@ define(['app/app'], function(app) {
   app.register.controller('UserEmailCtrl',
       ['$scope', '$modalInstance', 'user', 'User', 'toaster', '$interval',
         function ($scope, $modalInstance, user, User, toaster, $interval) {
+          User.getPageToken();
           $scope.user = user;
           $scope.user.userEmail = null;
           $scope.user.newUserEmail = null;
@@ -796,8 +797,8 @@ define(['app/app'], function(app) {
                       }
                     }
                   }, 1000, 60);
-            }, function () {
-              $scope.codeSuccess = false;
+            }, function (response) {
+              toaster.pop('error', '错误', response.data);
             });
           };
 
@@ -962,8 +963,8 @@ define(['app/app'], function(app) {
                       }
                     }
                   }, 1000, 60);
-            }, function () {
-              $scope.codeSuccess = false;
+            }, function (response) {
+              toaster.pop('error', '错误', response.data);
             });
           };
 

+ 1 - 1
src/main/webapp/resources/view/usercenter/forstore/buyer_transfer.html

@@ -17,7 +17,7 @@
 						<div ng-if="buyAccountInfos.length > 1"><button class="change-count" ng-click="changebuyAccount(buyAccount.id)">更换账户</button></div>
 					</li>
 					<li class="no-count" ng-if="!buyAccount">
-						<span><i class="fa fa-exclamation-circle"></i>暂未设置付款账户,前往  <a href="user#/payCenter" target="_blank">设置付款账户</a></span>
+						<span><i class="fa fa-exclamation-circle"></i>暂未设置付款账户,前往  <a href="javascript:void(0)" ng-click="editAccount()">设置付款账户</a></span>
 					</li>
 				</ul>
 			</div>

+ 19 - 3
src/main/webapp/resources/view/usercenter/header.html

@@ -169,7 +169,7 @@
         position: absolute;
         left: 0;
         top: 100%;
-        right: 61px;
+        right: 72px;
         list-style: none;
         -webkit-padding-start: 0;
         background: #ffffff;
@@ -190,6 +190,15 @@
         background: #EEEEEE;
         cursor: pointer;
     }
+    #mall-search .association li.similar-title {
+        font-size: 16px;
+        font-weight: bold;
+        cursor: default;
+        border-top: 1px solid #ccc;
+    }
+    #mall-search .association li.similar-title:first-child {
+        border-top: none;
+    }
     .association.none{
         border: none !important;
     }
@@ -212,8 +221,15 @@
             <input type="text" ng-model="keyword" ng-change="onChange()" ng-search="search()" ng-focus="onFocus()" ng-blur="onBlur()" ng-keyup="onKeyup()"placeholder="型号/类目/品牌" />
             <a class="seek" ng-click="search()">搜索</a>
             <ul class="association" ng-show="associate || associateEnter"  ng-class="{'none': !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>
+                <li class="similar-title" ng-if="associates.component && associates.component.length > 0">型号:</li>
+                <li ng-repeat="as in associates.component" ng-bind="as.code" ng-class="{'active': $index==selectIndex}"
+                    ng-click="onAssociateClick(as.code)"></li>
+                <li class="similar-title" ng-if="associates.component && associates.brand.length > 0">品牌:</li>
+                <li ng-repeat="as in associates.brand" ng-bind="as.nameCn" ng-class="{'active': $index==selectIndex}"
+                    ng-click="onAssociateClick(as.nameCn)"></li>
+                <li class="similar-title" ng-if="associates.component && associates.kind.length > 0">类目:</li>
+                <li ng-repeat="as in associates.kind" ng-bind="as.nameCn" ng-class="{'active': $index==selectIndex}"
+                    ng-click="onAssociateClick(as.nameCn)"></li>
             </ul>
         </div>
     </div>

+ 3 - 0
src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_unstandard_erp.html

@@ -110,6 +110,9 @@
 		border-top: none;
 		border-bottom: #e8e8e8 1px solid;
         overflow: inherit;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
 	}
 	.public-tab.table>tbody>tr>td a{
 		margin: 0 10px;

+ 3 - 0
src/main/webapp/resources/view/vendor/forstore/vendor-invoice.html

@@ -251,6 +251,9 @@
     .vendor-invoice .select-adder {
         background-position-x: 113%!important;
     }
+    #checkAll[disabled] + label {
+        cursor: not-allowed;
+    }
 </style>
 <div class="count user_right fr">
     <div class="count_center">

+ 19 - 4
src/main/webapp/resources/view/vendor/header.html

@@ -169,7 +169,7 @@
         position: absolute;
         left: 0;
         top: 100%;
-        right: 61px;
+        right: 72px;
         list-style: none;
         -webkit-padding-start: 0;
         background: #ffffff;
@@ -182,7 +182,6 @@
         line-height: 30px;
         text-align: left;
     }
-
     #mall-search .association li.active, #mall-search .association li.active:hover {
         background: #dddddd;
     }
@@ -190,6 +189,15 @@
         background: #EEEEEE;
         cursor: pointer;
     }
+    #mall-search .association li.similar-title {
+        font-size: 16px;
+        font-weight: bold;
+        cursor: default;
+        border-top: 1px solid #ccc;
+    }
+    #mall-search .association li.similar-title:first-child {
+        border-top: none;
+    }
     .association.none{
         border: none !important;
     }
@@ -211,8 +219,15 @@
             <input type="text" ng-model="keyword" ng-change="onChange()" ng-search="search()" ng-focus="onFocus()" ng-blur="onBlur()" ng-keyup="onKeyup()"placeholder="型号/类目/品牌" />
             <a class="seek" ng-click="search()">搜索</a>
             <ul class="association" ng-show="associate || associateEnter" ng-mouseenter="onAssociateEnter()" ng-mouseleave="onAssociateLeave()" ng-class="{'none': !associate || !associateEnter}">
-                <li ng-repeat="as in associates" ng-bind="as" ng-class="{'active': $index==selectIndex}"
-                    ng-click="onAssociateClick(as)"></li>
+                <li class="similar-title" ng-if="associates.component && associates.component.length > 0">型号:</li>
+                <li ng-repeat="as in associates.component" ng-bind="as.code" ng-class="{'active': $index==selectIndex}"
+                    ng-click="onAssociateClick(as.code)"></li>
+                <li class="similar-title" ng-if="associates.component && associates.brand.length > 0">品牌:</li>
+                <li ng-repeat="as in associates.brand" ng-bind="as.nameCn" ng-class="{'active': $index==selectIndex}"
+                    ng-click="onAssociateClick(as.nameCn)"></li>
+                <li class="similar-title" ng-if="associates.component && associates.kind.length > 0">类目:</li>
+                <li ng-repeat="as in associates.kind" ng-bind="as.nameCn" ng-class="{'active': $index==selectIndex}"
+                    ng-click="onAssociateClick(as.nameCn)"></li>
             </ul>
         </div>
     </div>