Просмотр исходного кода

Merge branch 'feature-wangcz-201814' of ssh://10.10.100.21/source/platform-b2c into feature-wangcz-201814

yangc 7 лет назад
Родитель
Сommit
78f8e523df
18 измененных файлов с 489 добавлено и 214 удалено
  1. 2 2
      src/main/java/com/uas/platform/b2c/common/account/dao/UserDao.java
  2. 7 1
      src/main/java/com/uas/platform/b2c/common/account/service/UserService.java
  3. 1 1
      src/main/java/com/uas/platform/b2c/common/account/service/impl/RoleServiceImpl.java
  4. 48 195
      src/main/java/com/uas/platform/b2c/common/account/service/impl/UserServiceImpl.java
  5. 35 4
      src/main/java/com/uas/platform/b2c/core/filter/SSOInterceptor.java
  6. 2 0
      src/main/java/com/uas/platform/b2c/prod/product/kind/service/impl/KindConcernServiceImpl.java
  7. 3 0
      src/main/java/com/uas/platform/b2c/prod/store/facade/impl/StoreInFacadeImpl.java
  8. BIN
      src/main/resources/jxls-tpl/trade/releaseByBatch-rmb.xls
  9. BIN
      src/main/resources/jxls-tpl/trade/releasebyBatch-usd.xls
  10. 18 0
      src/main/webapp/resources/js/common/query/attendtion.js
  11. 12 0
      src/main/webapp/resources/js/usercenter/controllers/forstore/seek_purchase_ctrl.js
  12. 9 3
      src/main/webapp/resources/js/vendor/app.js
  13. 140 0
      src/main/webapp/resources/js/vendor/controllers/forstore/purchasAttendtion_ctrl.js
  14. 16 0
      src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html
  15. 185 0
      src/main/webapp/resources/view/vendor/forstore/purchasAttendtion.html
  16. 7 5
      src/main/webapp/resources/view/vendor/forstore/purchaseOffer.html
  17. 1 0
      src/main/webapp/resources/view/vendor/forstore/seekPurchase.html
  18. 3 3
      src/main/webapp/resources/view/vendor/modal/role_detail.html

+ 2 - 2
src/main/java/com/uas/platform/b2c/common/account/dao/UserDao.java

@@ -36,7 +36,7 @@ public interface UserDao extends JpaSpecificationExecutor<User>, JpaRepository<U
 	public List<User> findByEnUUAndUserUU(@Param("enUU") long enUU, @Param("userUU") long userUU);
 	public List<User> findByEnUUAndUserUU(@Param("enUU") long enUU, @Param("userUU") long userUU);
 
 
 	/**
 	/**
-	 * 按企业ID查找个人
+	 * 按企业ID查找个人
 	 * 
 	 * 
 	 * @param enUU
 	 * @param enUU
 	 * @return
 	 * @return
@@ -46,7 +46,7 @@ public interface UserDao extends JpaSpecificationExecutor<User>, JpaRepository<U
 	public List<User> findByEnUU(@Param("enUU") long enUU);
 	public List<User> findByEnUU(@Param("enUU") long enUU);
 
 
 	/**
 	/**
-	 * 按企业ID查找个人id
+	 * 按企业ID查找个人id
 	 *
 	 *
 	 * @param enUU
 	 * @param enUU
 	 * @return
 	 * @return

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

@@ -37,7 +37,7 @@ public interface UserService {
 	/**
 	/**
 	 * 按uu取用户信息(不读取缓存)
 	 * 按uu取用户信息(不读取缓存)
 	 *
 	 *
-	 * @param userUU
+	 * @param uu 用户userUU
 	 * @return
 	 * @return
 	 */
 	 */
 	User findUserPwdByUserUU(Long uu);
 	User findUserPwdByUserUU(Long uu);
@@ -56,6 +56,12 @@ public interface UserService {
 	 */
 	 */
 	Page<User> findUserByUserNameLikeAndEnUU(PageInfo pageInfo , Long enUU , String userName);
 	Page<User> findUserByUserNameLikeAndEnUU(PageInfo pageInfo , Long enUU , String userName);
 
 
+	/**
+	 * 通过关键字、角色id过滤该企业下人员信息
+	 * @param keyword 姓名、电话号码、邮箱、uu号
+	 * @param roleId 角色id
+	 * @return
+	 */
 	Page<User> findUsersPageByEnUUAndKeyword(PageInfo pageInfo , Long enUU , String keyword , Long roleId);
 	Page<User> findUsersPageByEnUUAndKeyword(PageInfo pageInfo , Long enUU , String keyword , Long roleId);
 	/**
 	/**
 	 * 按email取用户信息
 	 * 按email取用户信息

+ 1 - 1
src/main/java/com/uas/platform/b2c/common/account/service/impl/RoleServiceImpl.java

@@ -26,7 +26,7 @@ public class RoleServiceImpl implements RoleService {
 
 
     private static final int DEFAULT_ROLE = 1;
     private static final int DEFAULT_ROLE = 1;
 
 
-    private static final int ALL_DEFAULT_ROLE = 4;
+    private static final int ALL_DEFAULT_ROLE = 5;
 
 
     @Autowired
     @Autowired
     private RoleDao roleDao;
     private RoleDao roleDao;

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

@@ -159,31 +159,7 @@ public class UserServiceImpl implements UserService {
 	@Override
 	@Override
 	public Page<User> findUsersPageByEnUU(final PageInfo pageInfo , Long enUU) {
 	public Page<User> findUsersPageByEnUU(final PageInfo pageInfo , Long enUU) {
 		final List<Long> usersId = userDao.findIdByEnUU(enUU);
 		final List<Long> usersId = userDao.findIdByEnUU(enUU);
-		if (usersId.size()>0) {
-			Page<User> pUser = userDao.findAll(new Specification<User>() {
-				public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
-					Predicate predicateId = root.get("userUU").in(usersId);
-					query.where(predicateId);
-					return null;
-				}
-			}, pageInfo);
-			for (User user : pUser) {
-				Set<Role> roles = user.getRoles();
-				Long enuu = SystemSession.getUser().getEnterprise().getUu();
-				if (!CollectionUtils.isEmpty(roles)) {
-					Iterator<Role> iterator = roles.iterator();
-					while (iterator.hasNext()) {
-						Role role = iterator.next();
-						if (!role.getEnUU().equals(enuu)) {
-							iterator.remove();
-						}
-					}
-				}
-			}
-			return pUser;
-		}else{
-			return null;
-		}
+		return deleteOtherRole(pageInfo,usersId);
 
 
 	}
 	}
 	@Override
 	@Override
@@ -251,34 +227,8 @@ public class UserServiceImpl implements UserService {
 			//过滤 角色信息
 			//过滤 角色信息
 			usersId = userDao.findUserByRoleAndUsers(roleId,usersId.toArray(new Long[0]));
 			usersId = userDao.findUserByRoleAndUsers(roleId,usersId.toArray(new Long[0]));
 		}
 		}
-
 		final List<Long> users = usersId;
 		final List<Long> users = usersId;
-		if (users.size()>0) {
-			Page<User> pUser = userDao.findAll(new Specification<User>() {
-				public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
-					Predicate predicateId = root.get("userUU").in(users);
-					query.where(predicateId);
-					return null;
-				}
-			}, pageInfo);
-			for (User user : pUser) {
-				Set<Role> roles = user.getRoles();
-				Long enuu = SystemSession.getUser().getEnterprise().getUu();
-				if (!CollectionUtils.isEmpty(roles)) {
-					Iterator<Role> iterator = roles.iterator();
-					while (iterator.hasNext()) {
-						Role role = iterator.next();
-						if (!role.getEnUU().equals(enuu)) {
-							iterator.remove();
-						}
-					}
-				}
-			}
-			return pUser;
-		}else{
-			return null;
-		}
-
+		return deleteOtherRole(pageInfo,users);
 	}
 	}
 
 
 	@Override
 	@Override
@@ -288,6 +238,10 @@ public class UserServiceImpl implements UserService {
 			usersId = userDao.findUserByUserNameLikeAndEnUU(userName, enUU);
 			usersId = userDao.findUserByUserNameLikeAndEnUU(userName, enUU);
 		}
 		}
 		final List<Long> users = usersId;
 		final List<Long> users = usersId;
+		return deleteOtherRole(pageInfo,users);
+	}
+
+	private Page<User> deleteOtherRole(final PageInfo pageInfo,final List<Long> users) {
 		if (users.size()>0) {
 		if (users.size()>0) {
 			Page<User> pUser = userDao.findAll(new Specification<User>() {
 			Page<User> pUser = userDao.findAll(new Specification<User>() {
 				public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
@@ -328,38 +282,7 @@ public class UserServiceImpl implements UserService {
 //				throw new RuntimeException(e.getMessage());
 //				throw new RuntimeException(e.getMessage());
 			}
 			}
 			// 修改用户角色,只对用户的当前企业的角色进行修改
 			// 修改用户角色,只对用户的当前企业的角色进行修改
-			if (!CollectionUtils.isEmpty(user.getRoles())) {
-				Set<Role> existRoles = userOld.getRoles();
-				if (!CollectionUtils.isEmpty(existRoles)) {// 保留用户在其他企业的角色
-					Iterator<Role> iterator = existRoles.iterator();
-					Long currentEnuu = SystemSession.getUser().getEnterprise().getUu();
-					while (iterator.hasNext()) {
-						Role role = iterator.next();
-						if (role.getEnUU().equals(currentEnuu)) {
-							iterator.remove();
-						}
-					}
-				} else {
-					existRoles = new HashSet<>();
-				}
-				for (Role role : user.getRoles()) {
-					existRoles.add(role);
-				}
-				userOld.setRoles(existRoles);
-			} else {
-				Set<Role> existRoles = userOld.getRoles();
-				if (!CollectionUtils.isEmpty(existRoles)) {// 保留用户在其他企业的角色
-					Iterator<Role> iterator = existRoles.iterator();
-					Long currentEnuu = SystemSession.getUser().getEnterprise().getUu();
-					while (iterator.hasNext()) {
-						Role role = iterator.next();
-						if (role.getEnUU().equals(currentEnuu)) {
-							iterator.remove();
-						}
-					}
-				}
-				userOld.setRoles(existRoles);
-			}
+			updateRole(user,userOld);
 			try {
 			try {
 				userOld = userDao.save(userOld);
 				userOld = userDao.save(userOld);
 			} catch (Exception e) {
 			} catch (Exception e) {
@@ -384,38 +307,7 @@ public class UserServiceImpl implements UserService {
 			userOld.setUserTel(user.getUserTel());
 			userOld.setUserTel(user.getUserTel());
 			userOld.setUserName(user.getUserName());
 			userOld.setUserName(user.getUserName());
 			// 修改用户角色,只对用户的当前企业的角色进行修改
 			// 修改用户角色,只对用户的当前企业的角色进行修改
-			if (!CollectionUtils.isEmpty(user.getRoles())) {
-				Set<Role> existRoles = userOld.getRoles();
-				if (!CollectionUtils.isEmpty(existRoles)) {// 保留用户在其他企业的角色
-					Iterator<Role> iterator = existRoles.iterator();
-					Long currentEnuu = SystemSession.getUser().getEnterprise().getUu();
-					while (iterator.hasNext()) {
-						Role role = iterator.next();
-						if (role.getEnUU().equals(currentEnuu)) {
-							iterator.remove();
-						}
-					}
-				} else {
-					existRoles = new HashSet<>();
-				}
-				for (Role role : user.getRoles()) {
-					existRoles.add(role);
-				}
-				userOld.setRoles(existRoles);
-			} else {
-				Set<Role> existRoles = userOld.getRoles();
-				if (!CollectionUtils.isEmpty(existRoles)) {// 保留用户在其他企业的角色
-					Iterator<Role> iterator = existRoles.iterator();
-					Long currentEnuu = SystemSession.getUser().getEnterprise().getUu();
-					while (iterator.hasNext()) {
-						Role role = iterator.next();
-						if (role.getEnUU().equals(currentEnuu)) {
-							iterator.remove();
-						}
-					}
-				}
-				userOld.setRoles(existRoles);
-			}
+			updateRole(user,userOld);
 			try {
 			try {
 				userOld = userDao.save(userOld);
 				userOld = userDao.save(userOld);
 			} catch (Exception e) {
 			} catch (Exception e) {
@@ -432,36 +324,46 @@ public class UserServiceImpl implements UserService {
 		}
 		}
 	}
 	}
 
 
+	private void updateRole(User user,User userOld) {
+		if (!CollectionUtils.isEmpty(user.getRoles())) {
+			Set<Role> existRoles = userOld.getRoles();
+			if (!CollectionUtils.isEmpty(existRoles)) {// 保留用户在其他企业的角色
+				Iterator<Role> iterator = existRoles.iterator();
+				Long currentEnuu = SystemSession.getUser().getEnterprise().getUu();
+				while (iterator.hasNext()) {
+					Role role = iterator.next();
+					if (role.getEnUU().equals(currentEnuu)) {
+						iterator.remove();
+					}
+				}
+			} else {
+				existRoles = new HashSet<>();
+			}
+			for (Role role : user.getRoles()) {
+				existRoles.add(role);
+			}
+			userOld.setRoles(existRoles);
+		} else {
+			Set<Role> existRoles = userOld.getRoles();
+			if (!CollectionUtils.isEmpty(existRoles)) {// 保留用户在其他企业的角色
+				Iterator<Role> iterator = existRoles.iterator();
+				Long currentEnuu = SystemSession.getUser().getEnterprise().getUu();
+				while (iterator.hasNext()) {
+					Role role = iterator.next();
+					if (role.getEnUU().equals(currentEnuu)) {
+						iterator.remove();
+					}
+				}
+			}
+			userOld.setRoles(existRoles);
+		}
+	}
+
 	@Override
 	@Override
 	public User updatePassword(User user, String password, String newPassword) {
 	public User updatePassword(User user, String password, String newPassword) {
-//		boolean result = user.getUserPwd().equals(Md5Utils.encode(password, user.getUserUU()));
-//		if (result) {
-//			User user1 = userDao.findOne(user.getUserUU());
-//			user1.setUserPwd(Md5Utils.encode(newPassword, user1.getUserUU()));
-//			user1.setPwdSecLevel(user.getPwdSecLevel());
-//			if (user1.getEnterprise() == null)
-//				user1.setCurrentEnterprise();// 随便绑定一个用户所属企业
-//			Enterprise enterprise = user1.getEnterprise();
-//			try {
-//					//判断是否为个人账户
-//					if (enterprise == null){
-//							//AccountUtils.resetPassword(user1.getUserUU(), null, newPassword);
-//					}else {
-//							//AccountUtils.resetPassword(user1.getUserUU(), enterprise.getUu(), newPassword);
-//					}
-//				user1 = userDao.save(user1);
-//			} catch (Exception e) {
-//				throw new SystemException(e.getMessage());
-//			}
-//			return user1;
-//		} else {
-//			throw new IllegalOperatorException("原密码验证错误");
-//		}
 		return null;
 		return null;
 	}
 	}
 
 
-
-	static final String defaultPassword = "111111";
 	@Override
 	@Override
 	public User addUser(User user, HttpServletRequest request) {
 	public User addUser(User user, HttpServletRequest request) {
 		List<User> users = userDao.findUserByUserTel(user.getUserTel().trim());
 		List<User> users = userDao.findUserByUserTel(user.getUserTel().trim());
@@ -487,7 +389,6 @@ public class UserServiceImpl implements UserService {
 			}else{
 			}else{
 				enterpriseDao.callInitProcedure(SystemSession.getUser().getEnterprise().getUu());
 				enterpriseDao.callInitProcedure(SystemSession.getUser().getEnterprise().getUu());
 			}
 			}
-			//Long uu = commonDao.queryForObject("select users_seq.nextval from dual", Long.class);
 			user.setUserUU(addssoUser.getUserUU());
 			user.setUserUU(addssoUser.getUserUU());
 			user.addEnterprise(SystemSession.getUser().getEnterprise());
 			user.addEnterprise(SystemSession.getUser().getEnterprise());
 			user.setCurrentEnterprise();
 			user.setCurrentEnterprise();
@@ -508,26 +409,10 @@ public class UserServiceImpl implements UserService {
 		model.put("rootpath", AgentUtils.getHost(request));
 		model.put("rootpath", AgentUtils.getHost(request));
 		if (user.getUserEmail() != null) {
 		if (user.getUserEmail() != null) {
 			mailService.send(messageConf.getTplAfterBeAddedtoB2C(), user.getUserEmail(), model);
 			mailService.send(messageConf.getTplAfterBeAddedtoB2C(), user.getUserEmail(), model);
-			//mailService.send(messageConf.getTplInvitationForB2B(), user.getUserEmail(), model);
 		}
 		}
 		return user;
 		return user;
 	}
 	}
 
 
-    //添加未注册
-	/*public  com.uas.account.entity.User postToAccountCenter(User user, String password) throws Exception {
-		UserDetail detail = new UserDetail();
-		detail.setEmail(user.getUserEmail());
-		detail.setIdCode(user.getUserIdcode());
-		detail.setMobile(user.getUserTel());
-		detail.setName(user.getUserName());
-		detail.setSex(user.getUserSex());
-		List<com.uas.account.entity.User> users = AccountUtils.addUser(user.getUserUU(), SystemSession.getUser().getEnterprise().getUu(), detail, password);
-		if (!CollectionUtils.isEmpty(users)) {
-			return users.get(0);
-		} else {
-			return null;
-		}
-	}*/
 	public void postToAccountCenter(User user) throws Exception {
 	public void postToAccountCenter(User user) throws Exception {
 		//判断是否个人用户
 		//判断是否个人用户
 		if(SystemSession.getUser().getEnterprise()==null){
 		if(SystemSession.getUser().getEnterprise()==null){
@@ -541,8 +426,6 @@ public class UserServiceImpl implements UserService {
 		User user = userDao.findOne(uu);
 		User user = userDao.findOne(uu);
 		if (user.getEnterprises().contains(SystemSession.getUser().getEnterprise())) {
 		if (user.getEnterprises().contains(SystemSession.getUser().getEnterprise())) {
 			user.removeEnterprise(SystemSession.getUser().getEnterprise());
 			user.removeEnterprise(SystemSession.getUser().getEnterprise());
-			/*if (user.getEnterprises().size() == 0)
-				user.setEnable((short) Status.DISABLED.value());*/
 			userDao.save(user);
 			userDao.save(user);
 			try {
 			try {
 				com.uas.sso.util.AccountUtils.removeUser(uu,SystemSession.getUser().getEnterprise().getUu());
 				com.uas.sso.util.AccountUtils.removeUser(uu,SystemSession.getUser().getEnterprise().getUu());
@@ -623,45 +506,11 @@ public class UserServiceImpl implements UserService {
 
 
 	@Override
 	@Override
 	public User updateUserTel(String oldTel, String newTel,Long uu) {
 	public User updateUserTel(String oldTel, String newTel,Long uu) {
-		/*// 旧手机号是否正确
-		User user = userDao.findOne(uu);
-			if(!user.getUserTel().equals(oldTel)){
-				throw new IllegalOperatorException("旧手机号错误");
-			}
-			try {
-				if(!StringUtils.isEmpty(oldTel) && !StringUtils.isEmpty(newTel)) {
-					// 保存数据库
-					List<com.uas.account.entity.User> users = AccountUtils.updateTel(oldTel, newTel);
-					if (users != null && users.size() > 0) {
-						user.setUserTel(users.get(0).getUid());
-						user = userDao.save(user);
-						return user;
-					}
-				}
-			} catch (Exception e) {
-				e.printStackTrace();
-			}*/
 			return null;
 			return null;
 		}
 		}
 
 
 	@Override
 	@Override
 	public User updateUserEmail(String tel, String newEmail, Long uu) {
 	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("数据更新失败...");
 		throw new IllegalOperatorException("数据更新失败...");
 	}
 	}
 
 
@@ -678,7 +527,11 @@ public class UserServiceImpl implements UserService {
 		Set<Role> roles = user.getRoles();
 		Set<Role> roles = user.getRoles();
 		if (!org.apache.commons.collections.CollectionUtils.isEmpty(roles)) {
 		if (!org.apache.commons.collections.CollectionUtils.isEmpty(roles)) {
 			for (Role role : roles) {
 			for (Role role : roles) {
-				resourceItems = role.getResourceItems();
+				if (!org.apache.commons.collections.CollectionUtils.isEmpty(role.getResourceItems())) {
+					for (ResourceItem resourceItem : role.getResourceItems()) {
+						resourceItems.add(resourceItem);
+					}
+				}
 			}
 			}
 		}
 		}
 		//匹配当前访问权限;
 		//匹配当前访问权限;

+ 35 - 4
src/main/java/com/uas/platform/b2c/core/filter/SSOInterceptor.java

@@ -35,6 +35,8 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 import org.springframework.ui.ModelMap;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
@@ -166,9 +168,42 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
         if (user != null) {
         if (user != null) {
             SystemSession.setUser(user);
             SystemSession.setUser(user);
             accessDecision(request, user);
             accessDecision(request, user);
+            accessAdmin(request,user);
         }
         }
     }
     }
 
 
+    /**
+     * admin权限验证
+     */
+    private void accessAdmin(HttpServletRequest request,User user) {
+        if (!StringUtils.isEmpty(user.getEnterprise())) {
+            if (!user.getEnterprise().getUu().toString().equals(enUU) && request.getServletPath().equals("/admin")) {
+                //throw new AccessDeniedException("无法访问,您没有权限!");
+                HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
+                try {
+                    response.setHeader("Content-type", "text/html;charset=UTF-8");
+                    response.getWriter().write("您没有管理权限,请联系优软商城");
+                } catch (IOException e) {
+
+                }
+                throw new AccessDeniedException("无法访问,您没有权限!");
+
+            }
+        } else {
+            if (request.getServletPath().equals("/admin")) {
+                HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
+                try {
+                    response.setHeader("Content-type", "text/html;charset=UTF-8");
+                    response.getWriter().write("您没有管理权限,请联系优软商城");
+                } catch (IOException e) {
+
+                }
+                throw new AccessDeniedException("无法访问,您没有权限!");
+            }
+        }
+
+    }
+
     /**
     /**
      * 权限验证
      * 权限验证
      */
      */
@@ -203,7 +238,6 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
         }
         }
         // 暂时在正式 过滤admin访问权限
         // 暂时在正式 过滤admin访问权限
         if (needPermission != null) {
         if (needPermission != null) {
-            if ("dev".equals(profile)) {
                 if (!user.getEnterprise().getUu().toString().equals(enUU)) {
                 if (!user.getEnterprise().getUu().toString().equals(enUU)) {
                     throw new AccessDeniedException("无法访问,没有 " + needPermission + " 权限!");
                     throw new AccessDeniedException("无法访问,没有 " + needPermission + " 权限!");
                 } else {
                 } else {
@@ -213,9 +247,6 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
                         }
                         }
                     }
                     }
                 }
                 }
-            } else {
-                throw new AccessDeniedException("无法访问,没有 " + needPermission + " 权限!");
-            }
         }
         }
     }
     }
 
 

+ 2 - 0
src/main/java/com/uas/platform/b2c/prod/product/kind/service/impl/KindConcernServiceImpl.java

@@ -237,6 +237,7 @@ public class KindConcernServiceImpl implements KindConcernService {
             map.put("existed", existed);
             map.put("existed", existed);
             map.put("count", count);
             map.put("count", count);
             map.put("existedList", existedList);
             map.put("existedList", existedList);
+            map.put("success", true);
             kindConcernDao.save(kindConcerns);
             kindConcernDao.save(kindConcerns);
             return map;
             return map;
         } catch (Exception e) {
         } catch (Exception e) {
@@ -277,6 +278,7 @@ public class KindConcernServiceImpl implements KindConcernService {
                 }
                 }
             }
             }
             map.put("count", kindConcerns.size());
             map.put("count", kindConcerns.size());
+            map.put("success", true);
             kindConcernDao.delete(kindConcerns);
             kindConcernDao.delete(kindConcerns);
             return map;
             return map;
         } catch (Exception e) {
         } catch (Exception e) {

+ 3 - 0
src/main/java/com/uas/platform/b2c/prod/store/facade/impl/StoreInFacadeImpl.java

@@ -115,6 +115,9 @@ public class StoreInFacadeImpl implements StoreInFacade {
 			store.setStoreName(StringUtils.hasText(newStoreInfo.getStoreName()) ? newStoreInfo.getStoreName() : null);
 			store.setStoreName(StringUtils.hasText(newStoreInfo.getStoreName()) ? newStoreInfo.getStoreName() : null);
 			store.setStoreApplication(StringUtils.hasText(newStoreInfo.getStoreApplication()) ? newStoreInfo.getStoreApplication() : null);
 			store.setStoreApplication(StringUtils.hasText(newStoreInfo.getStoreApplication()) ? newStoreInfo.getStoreApplication() : null);
 			store.setDescription(newStoreInfo.getDescription());
 			store.setDescription(newStoreInfo.getDescription());
+			if(!StringUtils.isEmpty(newStoreInfo.getLogoUrl())) {
+				store.setLogoUrl(newStoreInfo.getLogoUrl());
+			}
 			EnterpriseSimple enterprise = store.getEnterprise();
 			EnterpriseSimple enterprise = store.getEnterprise();
             EnterpriseSimple newEnterprise = newStoreInfo.getEnterprise();
             EnterpriseSimple newEnterprise = newStoreInfo.getEnterprise();
 			enterprise.setEnUrl(newEnterprise.getEnUrl());
 			enterprise.setEnUrl(newEnterprise.getEnUrl());

BIN
src/main/resources/jxls-tpl/trade/releaseByBatch-rmb.xls


BIN
src/main/resources/jxls-tpl/trade/releasebyBatch-usd.xls


+ 18 - 0
src/main/webapp/resources/js/common/query/attendtion.js

@@ -0,0 +1,18 @@
+define([ 'ngResource' ], function() {
+  angular.module('AttendtionServices', ['ngResource']).factory('Attendtion', ['$resource', function ($resource) {
+    return $resource('produce/kindConcern', {}, {
+       getList: {
+         url: 'produce/kindConcern/list',
+         method: 'GET'
+       },
+       add: {
+         url: 'produce/kindConcern/batch/add',
+         method: 'POST'
+       },
+       del: {
+         url: 'produce/kindConcern/batch/delete',
+         method: 'POST'
+       }
+    });
+  }]);
+});

+ 12 - 0
src/main/webapp/resources/js/usercenter/controllers/forstore/seek_purchase_ctrl.js

@@ -29,10 +29,20 @@ define(['app/app', 'clipboard', 'QRCode'], function (app, clipboard, QRCode) {
             } else {
             } else {
                 $scope.tab = 'waitOffer';
                 $scope.tab = 'waitOffer';
             }
             }
+          // 更换待报价状态
+          $scope.vendorType = 'all'
+          $scope.onVendorTypeChange = function () {
+            $scope.keyword = '';
+            $scope.startDate = null;
+            $scope.endDate = null;
+            $scope.seekPurchaseTableParams.page(1);
+            $scope.seekPurchaseTableParams.reload();
+          }
           seekPurchase.getSeekUrl({}, function(data) {
           seekPurchase.getSeekUrl({}, function(data) {
             var seekUrl = data.url;
             var seekUrl = data.url;
             /*$scope.tab = 'waitOffer';*/
             /*$scope.tab = 'waitOffer';*/
             $scope.toogleTab = function (tab) {
             $scope.toogleTab = function (tab) {
+              $scope.vendorType = 'all'
                 $scope.tab = tab;
                 $scope.tab = tab;
               $scope.seekPurchaseTableParams = new ngTableParams({
               $scope.seekPurchaseTableParams = new ngTableParams({
                 pageNumber: 1,
                 pageNumber: 1,
@@ -61,6 +71,7 @@ define(['app/app', 'clipboard', 'QRCode'], function (app, clipboard, QRCode) {
                         ? $scope.startDate.getTime() : null;
                         ? $scope.startDate.getTime() : null;
                     param.endDate = $scope.endDate ? $scope.endDate.getTime()
                     param.endDate = $scope.endDate ? $scope.endDate.getTime()
                         : null;
                         : null;
+                    param.overdue = $scope.vendorType === 'all' ? '' : ($scope.vendorType === 'self' ? '0' : '1')
                     $http({
                     $http({
                       method: 'get',
                       method: 'get',
                       dataType: 'json',
                       dataType: 'json',
@@ -85,6 +96,7 @@ define(['app/app', 'clipboard', 'QRCode'], function (app, clipboard, QRCode) {
                         ? $scope.startDate.getTime() : null;
                         ? $scope.startDate.getTime() : null;
                     param.endDate = $scope.endDate ? $scope.endDate.getTime()
                     param.endDate = $scope.endDate ? $scope.endDate.getTime()
                         : null;
                         : null;
+                    param.overdue = $scope.vendorType === 'all' ? '' : ($scope.vendorType === 'self' ? '0' : '1')
                     $http({
                     $http({
                       method: 'get',
                       method: 'get',
                       dataType: 'json',
                       dataType: 'json',

+ 9 - 3
src/main/webapp/resources/js/vendor/app.js

@@ -1,4 +1,4 @@
-define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'common/query/brand', 'common/query/kind', 'common/query/component', 'common/query/goods', 'common/query/rate','common/query/cart', 'common/query/order', 'common/query/address', 'common/query/invoice', 'common/query/property', 'common/query/kindAdvice', 'common/query/propertyAdvice', 'common/query/return' , 'common/query/change', 'common/query/logistics', 'ui.router', 'ui-bootstrap', 'ui-form', 'ui-jquery','angular-toaster', 'ngDraggable', 'angular-sanitize', 'ngTable', 'dynamicInput', 'jquery-imagezoom', 'file-upload', 'file-upload-shim', 'common/query/urlencryption' , 'common/query/purchase', 'common/query/vendor', 'common/query/goods', 'common/query/bankTransfer', 'common/query/enterprise', 'common/query/bill', 'common/query/receipt', 'common/query/collection', 'common/query/express', 'common/query/bankInfo','common/query/charge', 'common/query/statistics', 'common/query/currency', 'jquery-chart', 'common/query/responseLogistics', 'common/query/goodsPrice', 'common/query/address' , 'common/query/search', 'common/query/urlencryption', 'common/query/releaseProInfo', 'common/query/makerDemand', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/logistics', 'common/query/storeInfo', 'common/query/recommendation', 'common/query/user', 'common/query/logisticsPort', 'common/query/cms', 'common/query/material', 'common/query/storeCms', 'common/query/productImport', 'common/query/stockInOut', 'common/module/store_recommend_product', 'common/module/chat_web_module', 'common/query/standardPutOnAdmin', 'common/query/storeViolations', 'common/query/internalMessage', 'common/query/installments','common/query/product','common/query/seekPurchase','common/query/UASBatchPutOnProperty', 'common/query/authority'], function(angularAMD) {
+define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'common/query/brand', 'common/query/kind', 'common/query/component', 'common/query/goods', 'common/query/rate','common/query/cart', 'common/query/order', 'common/query/address', 'common/query/invoice', 'common/query/property', 'common/query/kindAdvice', 'common/query/propertyAdvice', 'common/query/return' , 'common/query/change', 'common/query/logistics', 'ui.router', 'ui-bootstrap', 'ui-form', 'ui-jquery','angular-toaster', 'ngDraggable', 'angular-sanitize', 'ngTable', 'dynamicInput', 'jquery-imagezoom', 'file-upload', 'file-upload-shim', 'common/query/urlencryption' , 'common/query/purchase', 'common/query/vendor', 'common/query/goods', 'common/query/bankTransfer', 'common/query/enterprise', 'common/query/bill', 'common/query/receipt', 'common/query/collection', 'common/query/express', 'common/query/bankInfo','common/query/charge', 'common/query/statistics', 'common/query/currency', 'jquery-chart', 'common/query/responseLogistics', 'common/query/goodsPrice', 'common/query/address' , 'common/query/search', 'common/query/urlencryption', 'common/query/releaseProInfo', 'common/query/makerDemand', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/logistics', 'common/query/storeInfo', 'common/query/recommendation', 'common/query/user', 'common/query/logisticsPort', 'common/query/cms', 'common/query/material', 'common/query/storeCms', 'common/query/productImport', 'common/query/stockInOut', 'common/module/store_recommend_product', 'common/module/chat_web_module', 'common/query/standardPutOnAdmin', 'common/query/storeViolations', 'common/query/internalMessage', 'common/query/installments','common/query/product','common/query/seekPurchase','common/query/UASBatchPutOnProperty', 'common/query/authority', 'common/query/attendtion'], function(angularAMD) {
 	'use strict';
 	'use strict';
 	/**
 	/**
 	 * 自定义Array对象的属性last 方法
 	 * 自定义Array对象的属性last 方法
@@ -8,7 +8,7 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
 		return this.length > 0 ? this[this.length - 1] : null;
 		return this.length > 0 ? this[this.length - 1] : null;
 	};
 	};
 
 
-	var app = angular.module('myApp', [ 'ui.router', 'ui.bootstrap', 'ng.local', 'ui.form', 'ui.jquery', 'toaster', 'ngDraggable', 'tool.directives', 'ngSanitize', 'common.query.kind', 'common.services', 'brandServices', 'componentServices', 'goodsServices',  'rateServices','cartServices', 'orderServices', 'addressServices', 'invoiceServices', 'common.query.propertyAdvice', 'propertyServices', 'returnServices' , 'changeServices',  'logisticsServices', 'common.query.kindAdvice', 'ngTable', 'ngDynamicInput', 'common.directives', 'angularFileUpload', 'urlencryptionServices', 'purchaseServices', 'vendorServices', 'goodsServices', 'bankTransfer', 'common.query.enterprise', 'billServices', 'receiptServices', 'collection', 'expressServices', 'bankInfo','Charge', 'statisticsServices', 'currencyService', 'responseLogisticsService', 'PriceServices', 'addressServices', 'searchService', 'urlencryptionServices', 'ReleaseProductByBatchService', 'makerDemand', 'afterSaleService', 'messageBoardServices', 'logisticsServices', 'table.directives', 'storeInfoServices', 'recommendation', 'common.query.user', 'logisticsPortService', 'cmsService', 'materialServices', 'StoreCmsServices', 'productImportModule', 'stockInOutModule', 'StoreCmsModule', 'WebChatModule', 'StandardPutOnAdminModule', 'StoreViolationsServices', 'internalMessageServices', 'installmentServices','common.query.product', 'ui.tour', 'seekPurchaseServices', 'UASBatchPutOnPropertyModule', 'authorityServices'])
+	var app = angular.module('myApp', [ 'ui.router', 'ui.bootstrap', 'ng.local', 'ui.form', 'ui.jquery', 'toaster', 'ngDraggable', 'tool.directives', 'ngSanitize', 'common.query.kind', 'common.services', 'brandServices', 'componentServices', 'goodsServices',  'rateServices','cartServices', 'orderServices', 'addressServices', 'invoiceServices', 'common.query.propertyAdvice', 'propertyServices', 'returnServices' , 'changeServices',  'logisticsServices', 'common.query.kindAdvice', 'ngTable', 'ngDynamicInput', 'common.directives', 'angularFileUpload', 'urlencryptionServices', 'purchaseServices', 'vendorServices', 'goodsServices', 'bankTransfer', 'common.query.enterprise', 'billServices', 'receiptServices', 'collection', 'expressServices', 'bankInfo','Charge', 'statisticsServices', 'currencyService', 'responseLogisticsService', 'PriceServices', 'addressServices', 'searchService', 'urlencryptionServices', 'ReleaseProductByBatchService', 'makerDemand', 'afterSaleService', 'messageBoardServices', 'logisticsServices', 'table.directives', 'storeInfoServices', 'recommendation', 'common.query.user', 'logisticsPortService', 'cmsService', 'materialServices', 'StoreCmsServices', 'productImportModule', 'stockInOutModule', 'StoreCmsModule', 'WebChatModule', 'StandardPutOnAdminModule', 'StoreViolationsServices', 'internalMessageServices', 'installmentServices','common.query.product', 'ui.tour', 'seekPurchaseServices', 'UASBatchPutOnPropertyModule', 'authorityServices', 'AttendtionServices'])
   app.directive('onFinishRender', function ($timeout) {
   app.directive('onFinishRender', function ($timeout) {
     return {
     return {
       restrict: 'A',
       restrict: 'A',
@@ -67,7 +67,13 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
 			title: '求购询价',
 			title: '求购询价',
 			controllerUrl: 'app/controllers/forstore/seek_purchase_ctrl',
 			controllerUrl: 'app/controllers/forstore/seek_purchase_ctrl',
 			controller: 'seekPurchaseCtrl'
 			controller: 'seekPurchaseCtrl'
-		})).state('vendor_query_logistics', angularAMD.route({
+		})).state('purchasAttendtion', angularAMD.route({
+      url: '/purchasAttendtion',
+      templateUrl: 'static/view/vendor/forstore/purchasAttendtion.html',
+      title: '商机关注',
+      controllerUrl: 'app/controllers/forstore/purchasAttendtion_ctrl',
+      controller: 'purchasAttendtionCtrl'
+    })).state('vendor_query_logistics', angularAMD.route({
             url: '/logistics/query/:purchaseid',
             url: '/logistics/query/:purchaseid',
             templateUrl: 'static/view/vendor/forstore/query_logistics.html',
             templateUrl: 'static/view/vendor/forstore/query_logistics.html',
             title: '查询物流',
             title: '查询物流',

+ 140 - 0
src/main/webapp/resources/js/vendor/controllers/forstore/purchasAttendtion_ctrl.js

@@ -0,0 +1,140 @@
+define(['app/app'], function (app) {
+  app.register.controller('purchasAttendtionCtrl',
+      ['$scope', '$location', '$rootScope', '$stateParams', '$state', 'toaster',
+        '$modal', '$http', 'Attendtion', 'ngTableParams', 'BaseService', 'toaster',
+        function ($scope, $location, $rootScope, $stateParams, $state, toaster,
+           $modal, $http, Attendtion, ngTableParams, BaseService, toaster) {
+          document.title = '商机关注-优软商城';
+          $scope.keyWord = ''
+          $scope.isSearch = false
+          $scope.type = 'yes'
+          $scope.Attend_tab = 'isAttend'
+          $scope.checkBoxAll = false
+          $scope.page = 1
+          $scope.totalElements = 0
+          // 初始化数据表格
+          $scope.seekPurchaseTableParams = new ngTableParams({
+            pageNumber: 1,
+            pageSize: 10
+          }, {
+            total: 0,
+            getData: function ($defer, params) {
+              const param = BaseService.parseParams(params.url());
+              param.keyword = $scope.keyWord;
+              if ($scope.isSearch) {
+                param.page = 1;
+                params.page(1);
+                $scope.isSearch = false;
+              }
+              $scope.page = param.page
+              param.type = $scope.type;
+              param.enUU = $rootScope.userInfo.enterprise.uu;
+              param.enableOffer = 1;
+              Attendtion.getList(param, function(data) {
+                console.log(data.content)
+                params.total(data.totalElements);
+                $scope.totalElements = data.totalElements
+                $scope.endNumber = data.numberOfElements;
+                $defer.resolve(data.content);
+                $scope.AttendListData = data.content;
+                for (var i = 0; i < $scope.AttendListData.length; i++) {
+                  $scope.AttendListData[i].checkBox = false
+                }
+              })
+            }
+          })
+          // 顶部切换
+          $scope.toggleAttend = function(_tp) {
+            $scope.Attend_tab = _tp;
+            $scope.type = _tp === 'isAttend' ? 'yes' : 'no';
+            $scope.checkBoxAll = false;
+            $scope.keyWord = '';
+            $scope.seekPurchaseTableParams.page(1);
+            $scope.seekPurchaseTableParams.reload();
+          }
+          // 全选按钮
+          $scope.onCheckBoxClick = function() {
+            ComputedCheckAll('all')
+          }
+          // 单选按钮
+          $scope.onCheckBoxOnce = function(item, index) {
+            item.checkBox = !item.checkBox
+            ComputedCheckAll()
+          }
+          // 单个关注 || 取消关注
+          $scope.addAttendTionmodify = function(item) {
+            var _arr = []
+            if ($scope.Attend_tab === 'isAttend') {
+              _arr.push(item.id)
+            } else {
+              _arr.push(item.nameCn)
+            }
+            ComputedAttendFn(_arr)
+          };
+          // 搜索
+          $scope.onSearch = function() {
+            $scope.seekPurchaseTableParams.page(1);
+            $scope.seekPurchaseTableParams.reload();
+          }
+          // 批量操作
+          $scope.BatchFn = function() {
+            var _arr = []
+            if ($scope.Attend_tab === 'isAttend') {
+              for (var i = 0; i < $scope.AttendListData.length; i++) {
+                if ($scope.AttendListData[i].checkBox === true) {
+                  _arr.push($scope.AttendListData[i].id)
+                }
+              }
+            } else {
+              for (var i = 0; i < $scope.AttendListData.length; i++) {
+                if ($scope.AttendListData[i].checkBox === true) {
+                  _arr.push($scope.AttendListData[i].nameCn)
+                }
+              }
+            }
+            ComputedAttendFn(_arr)
+          }
+
+          // 批量关注或者 批量取消
+          function ComputedAttendFn(arr) {
+            if ($scope.Attend_tab === 'isAttend') {
+              Attendtion.del({}, arr, function(data) {
+                if (data.success) {
+                  $scope.seekPurchaseTableParams.page($scope.page);
+                  $scope.seekPurchaseTableParams.reload();
+                  toaster.pop('success', '取消关注成功');
+                } else {
+                  toaster.pop('error', data.message);
+                }
+              })
+            } else {
+              Attendtion.add({}, arr, function(data) {
+                if (data.success) {
+                  $scope.seekPurchaseTableParams.page($scope.page);
+                  $scope.seekPurchaseTableParams.reload();
+                  toaster.pop('success', '关注成功');
+                } else {
+                  toaster.pop('error', data.message);
+                }
+              })
+            }
+          }
+          // 判断是否已进行全选
+          function ComputedCheckAll(tp) {
+            var num = 0
+            for (var i = 0; i < $scope.AttendListData.length; i++) {
+              if (tp === 'all') {
+                $scope.AttendListData[i].checkBox = !$scope.checkBoxAll
+              }
+              if ($scope.AttendListData[i].checkBox === true) {
+                num++
+              }
+            }
+            if (num === $scope.AttendListData.length) {
+              $scope.checkBoxAll = true
+            } else {
+              $scope.checkBoxAll = false
+            }
+          }
+  }]);
+});

+ 16 - 0
src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html

@@ -900,6 +900,16 @@
         color: #f15601;
         color: #f15601;
         border-bottom: 1px solid #fff;
         border-bottom: 1px solid #fff;
     }
     }
+    .vendor-type {
+        display: inline-block;
+        width: 111px;
+        float: left;
+        margin-right: 20px;
+        margin-left: 10px;
+        text-align: center;
+        border: 1px solid #4290f7;
+        color: #333;
+    }
 </style>
 </style>
 <div class="user_right fr seek-purchase">
 <div class="user_right fr seek-purchase">
     <!--求购询价-->
     <!--求购询价-->
@@ -1004,6 +1014,12 @@
                 -->
                 -->
             </div>
             </div>
             <div class="sreach fr">
             <div class="sreach fr">
+                <span>求购筛选</span>
+                <select class="form-control select-adder vendor-type" ng-model="vendorType" ng-change="onVendorTypeChange(vendorType)">
+                    <option value="all">全部</option>
+                    <option value="self">未截止</option>
+                    <option value="end">已截止</option>
+                </select>
                 <span>发布时间&nbsp;</span>
                 <span>发布时间&nbsp;</span>
                 <div class="date fl">
                 <div class="date fl">
                     <div class="data-input">
                     <div class="data-input">

+ 185 - 0
src/main/webapp/resources/view/vendor/forstore/purchasAttendtion.html

@@ -0,0 +1,185 @@
+<style>
+  .oder01 ul li{
+    margin-left: 0px;
+    position: relative;
+  }
+  .oder01 ul li.active a{
+    border-bottom: #fff;
+    background: #5078cb;
+    color: #fff;
+  }
+  .oder01 ul li::after{
+    background: url('static/img/vendor/images/downicon.png');
+    width: 11px;
+    height: 6px;
+    position: absolute;
+    bottom: 0px;
+    left: 50%;
+    content: ' ';
+    margin-left: -5px;
+    display: none;
+  }
+  .oder01 ul li.active:after{
+    display: block
+  }
+  .seek-purchase-content {
+    background: #fff;
+    padding-bottom: 40px;
+  }
+
+  .seek-purchase-content .checkbox {
+    width: 14px;
+    height: 14px;
+    border: 1px solid #908f8f;
+    display: inline-block;
+    vertical-align: top;
+    margin-top: 13px;
+  }
+  .seek-purchase-content thead tr {
+    line-height: 38px;
+    font-size: 14px;
+    color: #333;
+    text-align: center;
+    border-bottom: 1px solid #e8e8e8;
+  }
+  .seek-purchase .seek-purchase-content >table {
+    margin-bottom: 38px;
+  }
+  .seek-purchase-content thead tr .onCheckBoxClick {
+    cursor: pointer;
+  }
+  .seek-purchase-content tbody tr {
+    line-height: 49px;
+    font-size: 14px;
+    color: #666;
+    text-align: center;
+    border-bottom: 1px solid #e8e8e8;
+  }
+  .seek-purchase-content tbody th {
+    font-weight: 500;
+  }
+  .seek-purchase-content tbody tr:nth-last-of-type(1) {
+    border-bottom: 0;
+  }
+  .seek-purchase-content tbody .Attend_btn a{
+    color: #5078cb;
+  }
+  .seek-purchase-content tbody .Attend_btn a:hover {
+    color: #f15601;
+    cursor: pointer;
+  }
+  .search-check{
+    width: 100%;
+    height: 54px;
+    background: #fff;
+    padding-top: 10px;
+    border-bottom: 1px solid #e8e8e8;
+    margin-bottom: 0px;
+  }
+  .search-check .search{
+    width: 550px;
+    margin-left: 150px;
+  }
+  .search-check .search .form-control{
+    width: 340px;
+    float: left;
+    height: 34px;
+    border-radius: 0;
+    box-shadow: none;
+    border-right: none;
+  }
+  .search-check .search button,.search-check .search a{
+    display: inline-block;
+    width: 94px;
+    height: 34px;
+    line-height: 34px;
+    text-align: center;
+    font-size: 14px;
+  }
+  .search-check .search button{
+    background: #d3e1fc;
+    border-radius: 0;
+    border: #e2dbdb 1px solid;
+    border-left: none;
+  }
+  .search-check .search button:hover,.search-check .search a:hover{
+    color: #fff;
+    background: #3f7ae3;
+  }
+  .search-check .check{
+    font-size: 14px;
+    line-height: 30px;
+    background: #5078cb;
+    text-align: center;
+    margin-right: 100px;
+  }
+  .search-check .check a{
+    margin: 0 10px;
+    color: #f5f5f5;
+  }
+  .search-check .check a:hover{
+    color: #fff;
+  }
+  .record-line{
+    margin-top: -37px;
+    /*height: 30px;*/
+    font-size: 12px;
+    line-height: 35px;
+    /* margin-top: 5px; */
+    padding-right: 22px
+  }
+
+
+</style>
+<div class="user_right fr seek-purchase">
+  <!--求购询价-->
+  <div class="oder">
+    <div class="com_tab oder01">
+      <ul>
+        <li><a href="javascript:void(0)" ui-sref="vendorSeekPurchase">待报价</a></li>
+        <li><a href="javascript:void(0)" ui-sref="vendorPurchaseOffer">已报价</a></li>
+        <li class="active"><a href="javascript:void(0)" ui-sref="purchasAttendtion">商机关注</a></li>
+        <!--<li><a href="javascript:void(0)" ui-sref="vendorPurchaseAccept">已采纳</a></li>-->
+      </ul>
+    </div>
+    <div class="com_tab com_tab2" style="margin-bottom: 0px">
+      <ul class="fl distance" style="width: 100%">
+        <li ng-class="{active : Attend_tab == 'isAttend'}"  ng-click="toggleAttend('isAttend')" title="已关注"><a>已关注</a></li>
+        <li ng-class="{active : Attend_tab =='Attend'}" ng-click="toggleAttend('Attend')" title="未关注"><a>未关注</a></li>
+      </ul>
+    </div>
+  </div>
+  <div class="seek-purchase-content">
+    <div class="search-check">
+      <div class="search fl">
+        <input type="text" class="form-control ng-pristine ng-untouched ng-valid" ng-model="keyWord" placeholder="请输入您要搜索的类目(产品名称)">
+        <button ng-click="onSearch()">搜索</button>
+      </div>
+      <div class="check fr">
+        <a ng-click="BatchFn()"><span>{{Attend_tab === 'isAttend' ? '批量取消' : '批量关注'}}</span></a>
+      </div>
+    </div>
+    <table ng-table="seekPurchaseTableParams">
+      <thead>
+        <tr>
+          <th width="80" class="onCheckBoxClick" ng-click="onCheckBoxClick()">
+            <input ng-checked="checkBoxAll" type="checkbox" class="checkbox">{{checkBoxAll ? '取消全选': '全选'}}</th>
+          <th width="80">序号</th>
+          <th width="556">类目(产品名称)</th>
+          <th width="310">操作</th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr ng-repeat="item in AttendListData">
+          <th ng-click="onCheckBoxOnce(item, $index)"><input type="checkbox" class="checkbox" ng-checked="item.checkBox === true"></th>
+          <th>{{$index + 1}}</th>
+          <th>{{item.nameCn}}</th>
+          <th class="Attend_btn"><a ng-click="addAttendTionmodify(item)">{{item.status === 1 ? '取消关注' : '关注'}}</a></th>
+        </tr>
+      </tbody>
+    </table>
+    <div class="record-line text-right ng-binding ng-scope" ng-if="currenctGoods.length != 0">显示 1-
+      <span ng-bind="endNumber" class="ng-binding">10</span>, 共: <span style="color: #5078cb;" class="ng-binding">{{totalElements}}</span> 个
+    </div>
+  </div>
+</div>

+ 7 - 5
src/main/webapp/resources/view/vendor/forstore/purchaseOffer.html

@@ -291,14 +291,14 @@
         right: 11px;
         right: 11px;
         line-height: normal;
         line-height: normal;
         width: 198px;
         width: 198px;
-        height: 210px;
+        height: 0;
         background: #fff;
         background: #fff;
         border: 1px solid #fab89a;
         border: 1px solid #fab89a;
         overflow: hidden;
         overflow: hidden;
-        /*transition: height 1s;*/
-        /*-moz-transition: height 1s; !* Firefox 4 *!*/
-        /*-webkit-transition: height 1s; !* Safari 和 Chrome *!*/
-        /*-o-transition: height 1s; !* Opera *!*/
+        transition: height 1s;
+        -moz-transition: height 1s; /* Firefox 4 */
+        -webkit-transition: height 1s; /* Safari 和 Chrome */
+        -o-transition: height 1s; /* Opera */
         opacity: 0;
         opacity: 0;
         z-index: 10;
         z-index: 10;
     }
     }
@@ -372,6 +372,7 @@
         color: #4290f7;
         color: #4290f7;
     }
     }
     .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate .is-say-price:hover .say-price-history {
     .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate .is-say-price:hover .say-price-history {
+        height: 210px;
         opacity: 1;
         opacity: 1;
     }
     }
     .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate >img {
     .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate >img {
@@ -602,6 +603,7 @@
             <ul>
             <ul>
                 <li><a href="javascript:void(0)" ui-sref="vendorSeekPurchase">待报价</a></li>
                 <li><a href="javascript:void(0)" ui-sref="vendorSeekPurchase">待报价</a></li>
                 <li class="active"><a href="javascript:void(0)" ui-sref="vendorPurchaseOffer">已报价</a></li>
                 <li class="active"><a href="javascript:void(0)" ui-sref="vendorPurchaseOffer">已报价</a></li>
+                <li><a href="javascript:void(0)" ui-sref="purchasAttendtion">商机关注</a></li>
                 <!--<li><a href="javascript:void(0)" ui-sref="vendorPurchaseAccept">已采纳</a></li>-->
                 <!--<li><a href="javascript:void(0)" ui-sref="vendorPurchaseAccept">已采纳</a></li>-->
             </ul>
             </ul>
         </div>
         </div>

+ 1 - 0
src/main/webapp/resources/view/vendor/forstore/seekPurchase.html

@@ -716,6 +716,7 @@
             <ul>
             <ul>
                 <li class="active"><a href="javascript:void(0)" ui-sref="vendorSeekPurchase">待报价</a></li>
                 <li class="active"><a href="javascript:void(0)" ui-sref="vendorSeekPurchase">待报价</a></li>
                 <li><a href="javascript:void(0)" ui-sref="vendorPurchaseOffer">已报价</a></li>
                 <li><a href="javascript:void(0)" ui-sref="vendorPurchaseOffer">已报价</a></li>
+                <li><a href="javascript:void(0)" ui-sref="purchasAttendtion">商机关注</a></li>
                 <!--<li><a href="javascript:void(0)" ui-sref="vendorPurchaseAccept">已采纳</a></li>-->
                 <!--<li><a href="javascript:void(0)" ui-sref="vendorPurchaseAccept">已采纳</a></li>-->
             </ul>
             </ul>
         </div>
         </div>

+ 3 - 3
src/main/webapp/resources/view/vendor/modal/role_detail.html

@@ -384,7 +384,7 @@
 				<span class="tooltip-inner">请描述一下角色的具体职责,内容保持在50个字以内</span>
 				<span class="tooltip-inner">请描述一下角色的具体职责,内容保持在50个字以内</span>
 			</div>
 			</div>
 		</div>
 		</div>
-		<div class="form-group role-resources" ng-if="role.issys != 1 && role.desc != '普通用户'">
+		<div class="form-group role-resources" ng-if="role.issys != 1 && role.desc != '普通用户' && role.desc != '店长' ">
 			<label>权限分配</label>
 			<label>权限分配</label>
 			<p class="help-block">给角色分配允许操作的资源</p>
 			<p class="help-block">给角色分配允许操作的资源</p>
 			<div>
 			<div>
@@ -447,14 +447,14 @@
 			</div>
 			</div>
 		</div>
 		</div>
 	</div>
 	</div>
-	<div class="modal-footer" ng-if="role.issys != 1 && role.desc != '普通用户'">
+	<div class="modal-footer" ng-if="role.issys != 1 && role.desc != '普通用户' && role.desc != '店长'">
 		<button class="mall-default-btn mall-btn-cancel" ng-click="cancel()" type="button">取消</button>
 		<button class="mall-default-btn mall-btn-cancel" ng-click="cancel()" type="button">取消</button>
 		<button class="mall-default-btn mall-btn-delete"
 		<button class="mall-default-btn mall-btn-delete"
 			ng-show="role.id && role.isdefault == 0" ng-click="del()" type="button">删除角色</button>
 			ng-show="role.id && role.isdefault == 0" ng-click="del()" type="button">删除角色</button>
 		<button class="mall-default-btn mall-btn-submit"
 		<button class="mall-default-btn mall-btn-submit"
 				ng-disabled="roleForm.$invalid || !isChanged(role)" type="submit">确认</button>
 				ng-disabled="roleForm.$invalid || !isChanged(role)" type="submit">确认</button>
 	</div>
 	</div>
-	<div class="modal-footer" ng-if="!(role.issys != 1 && role.desc != '普通用户')">
+	<div class="modal-footer" ng-if="!(role.issys != 1 && role.desc != '普通用户' && role.desc != '店长')">
 		<button class="btn btn-default" ng-click="cancel()" type="button">关闭</button>
 		<button class="btn btn-default" ng-click="cancel()" type="button">关闭</button>
 	</div>
 	</div>
 </form>
 </form>