Bladeren bron

Merge remote-tracking branch 'origin/wangdy_material_person_20180108' into wangdy_material_person_20180108

yangc 8 jaren geleden
bovenliggende
commit
ce88d5ec7f
29 gewijzigde bestanden met toevoegingen van 367 en 203 verwijderingen
  1. 1 1
      src/main/java/com/uas/platform/b2c/common/account/controller/UserController.java
  2. 1 1
      src/main/java/com/uas/platform/b2c/common/account/service/impl/EnterpriseServiceImpl.java
  3. 10 0
      src/main/java/com/uas/platform/b2c/prod/commodity/constant/UploadConstant.java
  4. 3 3
      src/main/java/com/uas/platform/b2c/prod/commodity/controller/ProductController.java
  5. 9 5
      src/main/java/com/uas/platform/b2c/prod/commodity/controller/ReleaseProductByBatchController.java
  6. 25 0
      src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductPersonDao.java
  7. 14 0
      src/main/java/com/uas/platform/b2c/prod/commodity/model/Product.java
  8. 6 6
      src/main/java/com/uas/platform/b2c/prod/commodity/model/ReleaseProductByBatch.java
  9. 1 1
      src/main/java/com/uas/platform/b2c/prod/commodity/service/ProductService.java
  10. 1 1
      src/main/java/com/uas/platform/b2c/prod/commodity/service/ReleaseProductByBatchService.java
  11. 1 1
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsPriceInfoServiceImpl.java
  12. 1 1
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsServiceImpl.java
  13. 21 19
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java
  14. 105 73
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ReleaseProductByBatchServiceImpl.java
  15. BIN
      src/main/resources/jxls-tpl/trade/releaseByBatch-person.xls
  16. BIN
      src/main/resources/jxls-tpl/trade/releaseByBatch-rmb.xls
  17. 3 3
      src/main/webapp/resources/js/common/controllers/commonCtrls.js
  18. 46 18
      src/main/webapp/resources/js/usercenter/controllers/forstore/account_manager_ctrl.js
  19. 6 1
      src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_home_ctrl.js
  20. 40 14
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_account_management_ctrl.js
  21. 5 2
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_index_ctrl.js
  22. 2 2
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialPersonCtrl.js
  23. 1 1
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_store_info_ctrl.js
  24. 11 6
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_upload_ctrl.js
  25. 1 1
      src/main/webapp/resources/view/usercenter/forstore/home_center.html
  26. 1 1
      src/main/webapp/resources/view/vendor/forstore/vendor_index.html
  27. 2 2
      src/main/webapp/resources/view/vendor/forstore/vendor_material_person.html
  28. 1 1
      src/main/webapp/resources/view/vendor/forstore/vendor_upload.html
  29. 49 39
      src/main/webapp/resources/view/vendor/left_nav.html

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

@@ -258,7 +258,7 @@ public class UserController {
 			throw new IllegalOperatorException("新邮箱地址与旧邮箱地址相同");
 		}
 		// 正则校验邮箱地址
-		if(!newUserEmail.matches("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+")){
+		if(!newUserEmail.matches("^[A-Za-z0-9\\u4e00-\\u9fa5]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$")){
 			throw new IllegalOperatorException("新邮箱地址格式不正确");
 		}
 		String _checkCode = (String) session.getAttribute("checkCode");

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

@@ -170,7 +170,7 @@ public class EnterpriseServiceImpl implements EnterpriseService{
 		try {
 			result = AccountUtils.applyAppForMall(detail);
 		}catch (Exception e){
-			return new ResultMap(CodeType.SYSTEM_ERROR, "注册失败");
+			return new ResultMap(CodeType.SYSTEM_ERROR, "账户中心异常,注册失败");
 		}
 		if (result.contains("errMsg") || !result.contains("enuu")){
 			return new ResultMap(CodeType.SYSTEM_ERROR, "注册失败");

+ 10 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/constant/UploadConstant.java

@@ -109,4 +109,14 @@ public final class UploadConstant {
      * 用户可能直接用导入失败的表格进行导入
      */
     public static final int MAX_TOTAL_COLUMN = 17;
+
+    /**
+     * 个人导入表的最大列数
+     */
+    public static final int TOTAL_COLUMN_PERSON = 3;
+
+    /**
+     * 个人用户可能直接用导入失败的表格进行导入
+     */
+    public static final int MAX_TOTAL_COLUMN_PERSON = 4;
 }

+ 3 - 3
src/main/java/com/uas/platform/b2c/prod/commodity/controller/ProductController.java

@@ -105,7 +105,7 @@ public class ProductController {
      * @return model and view
      * @throws UnsupportedEncodingException the unsupported encoding exception
      */
-    @RequestMapping(value = "/template/download/type", method = RequestMethod.POST)
+    @RequestMapping(value = "/template/download/type", method = RequestMethod.GET)
 	public ModelAndView exportProductsStandard(@RequestParam("type") String type, @RequestParam(required = false, value = "isAjax", defaultValue = "false")Boolean isAjax, HttpServletRequest request, @RequestParam(value = "keyword", required = false) String keyword) throws UnsupportedEncodingException {
 		HttpSession session = request.getSession();
 		ModelAndView modelAndView = new ModelAndView();
@@ -140,13 +140,13 @@ public class ProductController {
      * @param ids the ids
      */
     @RequestMapping(value = "/{ids}", method = RequestMethod.DELETE)
-	public void deleteBatch(@PathVariable("ids") String ids) {
+	public void deleteBatch(@PathVariable("ids") String ids , Integer isPerson) {
 		String[] idstrs = ids.split(SplitChar.COMMA);
 		List<Long> idsLong = new ArrayList<Long>();
 		for (String id : idstrs) {
 			idsLong.add(Long.parseLong(id));
 		}
-		productService.deleteBatch(idsLong);
+		productService.deleteBatch(idsLong, isPerson);
 	}
 
     /**

+ 9 - 5
src/main/java/com/uas/platform/b2c/prod/commodity/controller/ReleaseProductByBatchController.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2c.prod.commodity.controller;
 
 import com.uas.platform.b2c.common.base.model.FileUpload;
+import com.uas.platform.b2c.core.constant.IntegerConstant;
 import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
 import com.uas.platform.b2c.core.support.view.JxlsExcelView;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
@@ -202,7 +203,7 @@ public class ReleaseProductByBatchController {
      * @return model map
      */
     @RequestMapping(value = "/release/excel", method = RequestMethod.POST)
-    public ModelMap releaseByExcel(FileUpload uploadItem, @RequestParam("selfSale") Boolean selfSale, String currency) {
+    public ModelMap releaseByExcel(FileUpload uploadItem, @RequestParam("selfSale") Boolean selfSale, String currency, Integer isPerson) {
         ModelMap map = new ModelMap();
         String fileName = uploadItem.getFile().getOriginalFilename();
         String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
@@ -217,7 +218,7 @@ public class ReleaseProductByBatchController {
             } else {
                 throw new IllegalOperatorException("文件格式不正确!请上传.xls或.xlsx格式的文件");
             }
-            map = releaseProductByBatchService.releaseByWorkbook(workbook, selfSale, currency);
+            map = releaseProductByBatchService.releaseByWorkbook(workbook, selfSale, currency, isPerson);
         } catch (IOException e) {
             e.printStackTrace();
         }
@@ -287,15 +288,18 @@ public class ReleaseProductByBatchController {
      * @return model and view
      */
     @RequestMapping(value = "/release/template", method = RequestMethod.GET)
-    public ModelAndView exportOrderses(String currency) {
+    public ModelAndView exportOrderses(String currency, Integer isPerson) {
         ModelAndView modelAndView = new ModelAndView();
+        logger.log("商品批次", "下载批量上架商品的Excel模板");
+        if (null != isPerson && isPerson.intValue() == IntegerConstant.YES_SHORT.intValue()) {
+            modelAndView.setView(new JxlsExcelView("classpath:jxls-tpl/trade/releasebyBatch-person", "个人产品导入模板-优软商城"));
+            return modelAndView;
+        }
         if (Currency.USD.equals(currency)) {
             modelAndView.setView(new JxlsExcelView("classpath:jxls-tpl/trade/releasebyBatch-usd", "产品导入模板-优软商城"));
         } else {
             modelAndView.setView(new JxlsExcelView("classpath:jxls-tpl/trade/releaseByBatch-rmb", "产品导入模板-优软商城"));
         }
-
-        logger.log("商品批次", "下载批量上架商品的Excel模板");
         return modelAndView;
     }
 }

+ 25 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductPersonDao.java

@@ -0,0 +1,25 @@
+package com.uas.platform.b2c.prod.commodity.dao;
+
+import com.uas.platform.b2c.prod.commodity.model.ProductPerson;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+import java.util.List;
+
+public interface ProductPersonDao extends JpaRepository<ProductPerson, Long>, JpaSpecificationExecutor<ProductPerson> {
+
+    /**
+     * 统计拥有该物料的人数
+     * @param productId
+     * @return
+     */
+    int countByProductId(Long productId);
+
+    /**
+     * 查找物料信息
+     * @param productId
+     * @param userUU
+     * @return
+     */
+    List<ProductPerson> findByProductIdAndUserUU(Long productId, Long userUU);
+}

+ 14 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/model/Product.java

@@ -320,6 +320,12 @@ public class Product {
 	@Column(name = "pr_batchcount")
 	private Integer batchCount;
 
+	/**
+	 * 器件规格
+	 */
+	@Column(name = "pr_specification")
+	private String specification;
+
 	public Product() {
 	}
 
@@ -727,4 +733,12 @@ public class Product {
 	public void setProductDetail(ProductDetail productDetail) {
 		this.productDetail = productDetail;
 	}
+
+	public String getSpecification() {
+		return specification;
+	}
+
+	public void setSpecification(String specification) {
+		this.specification = specification;
+	}
 }

+ 6 - 6
src/main/java/com/uas/platform/b2c/prod/commodity/model/ReleaseProductByBatch.java

@@ -667,12 +667,12 @@ public class ReleaseProductByBatch implements Serializable {
 	public int hashCode() {
 		int result = brandNameEn.hashCode();
 		result = 31 * result + code.hashCode();
-		result = 31 * result + minBuyQtyStr.hashCode();
-		result = 31 * result + productDate.hashCode();
-		result = 31 * result + minPackageStr.hashCode();
-		result = 31 * result + packaging.hashCode();
-		result = 31 * result + selfMaxDeliveryStr.hashCode();
-		result = 31 * result + selfMinDeliveryStr.hashCode();
+		result = 31 * result + (minBuyQtyStr == null ? 0 : minBuyQtyStr.hashCode());
+		result = 31 * result + (productDate == null ? 0 : productDate.hashCode());
+		result = 31 * result + (minPackageStr == null ? 0 : minPackageStr.hashCode());
+		result = 31 * result + (packaging == null ? 0 : packaging.hashCode());
+		result = 31 * result + (selfMaxDeliveryStr == null ? 0 : selfMaxDeliveryStr.hashCode());
+		result = 31 * result + (selfMinDeliveryStr == null ? 0 : selfMinDeliveryStr.hashCode());
 		return result;
 	}
 

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/service/ProductService.java

@@ -50,7 +50,7 @@ public interface ProductService {
      *
      * @param ids the ids 主键
      */
-    void deleteBatch(List<Long> ids);
+    void deleteBatch(List<Long> ids, Integer isPerson);
 
     /**
      * 批量删除产品

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/service/ReleaseProductByBatchService.java

@@ -32,7 +32,7 @@ public interface ReleaseProductByBatchService {
      * @param currency
      * @return model map
      */
-    public ModelMap releaseByWorkbook(Workbook workbook, Boolean selfSale, String currency);
+    public ModelMap releaseByWorkbook(Workbook workbook, Boolean selfSale, String currency, Integer isPerson);
 
     /**
      * 根据发布者UU获取一组产品的信息

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsPriceInfoServiceImpl.java

@@ -180,7 +180,7 @@ public class GoodsPriceInfoServiceImpl implements GoodsPriceInfoService {
 	public GoodsPriceInfo save(GoodsPriceInfo priceInfo, String comment, String deviceInfo) {
 		checkPriceInfo(priceInfo);
 		priceInfo = goodsPriceInfoDao.save(priceInfo);
-		updateGoodsInfos(priceInfo);
+//		updateGoodsInfos(priceInfo);
 		log(priceInfo, comment, deviceInfo);
 		return priceInfo;
 	}

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsServiceImpl.java

@@ -2885,7 +2885,7 @@ public class GoodsServiceImpl implements GoodsService {
             if (!StringUtils.isEmpty(goods.getUuid())) {
                 uuids.add(goods.getUuid());
             }
-            if (goods.getProductid() == null) {
+            if (goods.getProductid() != null) {
                 Product product = productDao.findOne(goods.getProductid());
                 if (product != null) {
                     Integer count = product.getBatchCount();

+ 21 - 19
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java

@@ -107,6 +107,9 @@ public class ProductServiceImpl implements ProductService {
     @Autowired
     private CartDao cartDao;
 
+    @Autowired
+    private ProductPersonDao productPersonDao;
+
     @Autowired
     private ProductModifyHistoryDao productModifyHistoryDao;
 
@@ -285,6 +288,7 @@ public class ProductServiceImpl implements ProductService {
         List<Product> products = new ArrayList<Product>();
         page.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
         page.filter("b2cEnabled", com.uas.platform.b2c.prod.commodity.constant.IntegerConstant.YES_INT);
+        page.sorting(Sort.Direction.DESC, "standard", "id");
         //产品部要求导出是非标和标准全部导出,先注释这条代码
 //        if(StringUtils.isEmpty(type)) {
 //            type = "all";
@@ -308,28 +312,13 @@ public class ProductServiceImpl implements ProductService {
             query.where(page.getPredicates(root, query, cb));
             return null;
             }
-        });
-        //先按照id降序排列
-        Collections.sort(products, new Comparator<Product>() {
-            @Override
-            public int compare(Product o1, Product o2) {
-                return (o2.getId().compareTo(o1.getId()));
-            }
-        });
-        //后面按照非标与标准排列
-        Collections.sort(products, new Comparator<Product>() {
-            @Override
-            public int compare(Product o1, Product o2) {
-                return o2.getStandard().compareTo(o1.getStandard());
-            }
-        });
+        }, page.getSort());
         List<Goods> goodses = new ArrayList<>();
         for (Product product : products) {
-            System.out.println(product.getId() + " -" + product.getStandard());
             List<Goods> goodses1 = goodsDao.findByProductIdOrderByGoodsId(product.getId());
-            if(goodses1.size() > 0) {
+            if (goodses1.size() > 0) {
                 goodses.addAll(goodses1);
-            }else {
+            } else {
                 Goods g = Goods.productConvertGoods(product);
                 goodses.add(g);
             }
@@ -338,8 +327,16 @@ public class ProductServiceImpl implements ProductService {
     }
 
     @Override
-    public void deleteBatch(List<Long> ids) {
+    public void deleteBatch(List<Long> ids, Integer isPerson) {
         for (Long id : ids) {
+            if (null != isPerson && isPerson.intValue() == IntegerConstant.YES_SHORT.intValue()) {
+                List<ProductPerson> productPersonList = productPersonDao.findByProductIdAndUserUU(id,SystemSession.getUser().getUserUU());
+                if (!CollectionUtils.isEmpty(productPersonList)) {
+                    Long ppid = productPersonList.get(0).getId();
+                    productPersonDao.delete(ppid);
+                }
+                continue;
+            }
             Product product = productDao.findOne(id);
             if (product == null)
                 throw new IllegalOperatorException("选择的产品不存在,请重新选择");
@@ -366,6 +363,11 @@ public class ProductServiceImpl implements ProductService {
                     }
                 }
                 if (!isExistOrder) {
+                    //是否被个人物料库收录
+                    int count = productPersonDao.countByProductId(id);
+                    if ( count > 0 ){
+                        throw new IllegalOperatorException("该产品已被个人物料库收录,不能删除");
+                    }
                     //删除外键关联的匹配结果列表,不然删除product失败
                     Set<ProductMatchResult> productMatchResultSet =  product.getMatchresults();
                     productMatchResultDao.delete(productMatchResultSet);

+ 105 - 73
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ReleaseProductByBatchServiceImpl.java

@@ -111,14 +111,25 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	 * @author hejq
 	 */
 	@Override
-	public ModelMap releaseByWorkbook(Workbook workbook, Boolean selfSale, String currency) {
+	public ModelMap releaseByWorkbook(Workbook workbook, Boolean selfSale, String currency, Integer isPerson) {
+		// 是否上传个人物料
+		boolean isAPerson = false;
+		if (null != isPerson && isPerson.intValue() == IntegerConstant.YES_SHORT.intValue()) {
+			isAPerson = true;
+		}
 		ModelMap modelMap = new ModelMap();
 		Set<ReleaseProductByBatch> releaseProductByBatchs = new HashSet<>();
 		// 获取第一个工作表
 		Sheet sheet = workbook.getSheetAt(0);
 		int colNum = sheet.getRow(0).getPhysicalNumberOfCells();
-		if (colNum != UploadConstant.TOTAL_COLUMN && colNum != UploadConstant.MAX_TOTAL_COLUMN) {
-			throw new IllegalOperatorException("表格模板不正确!请重新下载最新模板");
+		if (isAPerson) {
+			if (colNum != UploadConstant.TOTAL_COLUMN_PERSON && colNum != UploadConstant.MAX_TOTAL_COLUMN_PERSON) {
+				throw new IllegalOperatorException("表格模板不正确!请重新下载最新模板");
+			}
+		} else {
+			if (colNum != UploadConstant.TOTAL_COLUMN && colNum != UploadConstant.MAX_TOTAL_COLUMN) {
+				throw new IllegalOperatorException("表格模板不正确!请重新下载最新模板");
+			}
 		}
 		int rowNum = sheet.getLastRowNum();
 		if (rowNum > 2000) {
@@ -132,8 +143,7 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		int blankNum = 0;
 		if (headerRow != null) {
 			// 验证模板是否为商城模板
-			validateTemplate(headerRow, colNum, currency);
-
+			validateTemplate(headerRow, colNum, currency, isAPerson);
 			for (int r = 2; r <= rowNum; r++) {
 				Row row = sheet.getRow(r);
 				// 英文品牌名称
@@ -145,14 +155,16 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 					ReleaseProductByBatch releaseProductByBatch = new ReleaseProductByBatch();
 					// 初始化默认信息
 					setProductDefaultInfo(releaseProductByBatch, batch, currency, storeIn);
-
+// TODO 个人库验证
 					// 将excel内容对应到ReleaseProductByBatch的字段当中
-					blankNum = convertValueToProduct(row, releaseProductByBatch, r);
-
-					// 解析返回分段价格list
-					List<GoodsQtyPrice> qtyPriceList = initQtyPriceByExcel(row, releaseProductByBatch, r);
-					if (!CollectionUtils.isEmpty(qtyPriceList)) {
-						releaseProductByBatch.setPrices(qtyPriceList);
+					blankNum = convertValueToProduct(row, releaseProductByBatch, r, isAPerson);
+// TODO 个人库验证
+					if (!isAPerson) {
+						// 解析返回分段价格list
+						List<GoodsQtyPrice> qtyPriceList = initQtyPriceByExcel(row, releaseProductByBatch, r);
+						if (!CollectionUtils.isEmpty(qtyPriceList)) {
+							releaseProductByBatch.setPrices(qtyPriceList);
+						}
 					}
 
 					if (!StringUtils.isEmpty(releaseProductByBatch.getErrmsg())) {
@@ -213,36 +225,53 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	 * @param colNum	总列
 	 * @param currency	币别
 	 */
-	private void validateTemplate(Row headerRow, int colNum, String currency) {
-		if (colNum == UploadConstant.MAX_TOTAL_COLUMN) {
-			Cell errorCell = headerRow.getCell(UploadConstant.MAX_TOTAL_COLUMN - 1);
-			Object errorCellObj = readWorkBookCell(errorCell, Cell.CELL_TYPE_STRING, 0, 0);
-			String errorHead = StringUtilB2C.replaceLineBreak(String.valueOf(errorCellObj));
-			if (StringUtils.isEmpty(errorHead) || !("错误提示".equals(errorHead))) {
-				throw new IllegalOperatorException("表格模板不正确!请重新下载最新模板");
+	private void validateTemplate(Row headerRow, int colNum, String currency, boolean isAPerson) {
+		if (isAPerson) {
+			if (colNum == UploadConstant.MAX_TOTAL_COLUMN_PERSON) {
+				Cell errorCell = headerRow.getCell(UploadConstant.MAX_TOTAL_COLUMN_PERSON - 1);
+				Object errorCellObj = readWorkBookCell(errorCell, Cell.CELL_TYPE_STRING, 0, 0);
+				String errorHead = StringUtilB2C.replaceLineBreak(String.valueOf(errorCellObj));
+				if (StringUtils.isEmpty(errorHead) || !("错误提示".equals(errorHead))) {
+					throw new IllegalOperatorException("表格模板不正确!请重新下载最新模板");
+				}
+			}
+			Object codeCellObj = readWorkBookCell(headerRow.getCell(UploadConstant.PRODUCT_CODE), Cell.CELL_TYPE_STRING,
+					0, UploadConstant.PRODUCT_CODE);
+			if (!"产品型号".equals(StringUtilB2C.getStr(codeCellObj))) {
+				throw new IllegalOperatorException("您上传的信息列信息不正确,请与模板的列做比较");
 			}
-		}
-		Object codeCellObj = readWorkBookCell(headerRow.getCell(UploadConstant.PRODUCT_CODE), Cell.CELL_TYPE_STRING,
-				0, UploadConstant.PRODUCT_CODE);
-		if (!"产品型号".equals(StringUtilB2C.getStr(codeCellObj))) {
-			throw new IllegalOperatorException("您上传的信息列信息不正确,请与模板的列做比较");
-		}
-		Object priceCellObj = readWorkBookCell(headerRow.getCell(UploadConstant.PRICE_START), Cell.CELL_TYPE_STRING,
-				0, UploadConstant.PRICE_START);
-		if (StringUtils.isEmpty(priceCellObj)) {
-			throw new IllegalOperatorException("您上传的信息列信息不正确,请与模板的列做比较");
 		} else {
-			String title = StringUtilB2C.replaceLineBreak(priceCellObj.toString());
-			if (Currency.USD.equals(currency)) {
-				if (!title.equals("USD单价1")) {
-					throw new IllegalOperatorException("您上传的文件表头与美金模板不符");
+			if (colNum == UploadConstant.MAX_TOTAL_COLUMN) {
+				Cell errorCell = headerRow.getCell(UploadConstant.MAX_TOTAL_COLUMN - 1);
+				Object errorCellObj = readWorkBookCell(errorCell, Cell.CELL_TYPE_STRING, 0, 0);
+				String errorHead = StringUtilB2C.replaceLineBreak(String.valueOf(errorCellObj));
+				if (StringUtils.isEmpty(errorHead) || !("错误提示".equals(errorHead))) {
+					throw new IllegalOperatorException("表格模板不正确!请重新下载最新模板");
 				}
+			}
+			Object codeCellObj = readWorkBookCell(headerRow.getCell(UploadConstant.PRODUCT_CODE), Cell.CELL_TYPE_STRING,
+					0, UploadConstant.PRODUCT_CODE);
+			if (!"产品型号".equals(StringUtilB2C.getStr(codeCellObj))) {
+				throw new IllegalOperatorException("您上传的信息列信息不正确,请与模板的列做比较");
+			}
+			Object priceCellObj = readWorkBookCell(headerRow.getCell(UploadConstant.PRICE_START), Cell.CELL_TYPE_STRING,
+					0, UploadConstant.PRICE_START);
+			if (StringUtils.isEmpty(priceCellObj)) {
+				throw new IllegalOperatorException("您上传的信息列信息不正确,请与模板的列做比较");
 			} else {
-				if (!title.equals("RMB单价1")) {
-					throw new IllegalOperatorException("您上传的文件表头与人民币模板不符");
+				String title = StringUtilB2C.replaceLineBreak(priceCellObj.toString());
+				if (Currency.USD.equals(currency)) {
+					if (!title.equals("USD单价1")) {
+						throw new IllegalOperatorException("您上传的文件表头与美金模板不符");
+					}
+				} else {
+					if (!title.equals("RMB单价1")) {
+						throw new IllegalOperatorException("您上传的文件表头与人民币模板不符");
+					}
 				}
 			}
 		}
+
 	}
 
 	/**
@@ -433,7 +462,7 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	 * @param aProduct 验证单行数据
 	 * @param rowNum 行数
 	 */
-	private int convertValueToProduct(Row row, ReleaseProductByBatch aProduct, int rowNum) {
+	private int convertValueToProduct(Row row, ReleaseProductByBatch aProduct, int rowNum, boolean isAPerson) {
 		// 统计为空的个数
 		int result = 0;
 		Object codeValue = readWorkBookCell(row.getCell(UploadConstant.PRODUCT_CODE), Cell.CELL_TYPE_STRING,
@@ -450,49 +479,52 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		}
 		aProduct.setBrandEnByExcel(brandValue);
 
-		Object breakValue = readWorkBookCell(row.getCell(UploadConstant.BREAK_UP), Cell.CELL_TYPE_STRING,
-				rowNum, UploadConstant.BREAK_UP);
-		aProduct.setBreakUpByExcel(breakValue);
+		if (!isAPerson) {
+			Object breakValue = readWorkBookCell(row.getCell(UploadConstant.BREAK_UP), Cell.CELL_TYPE_STRING,
+					rowNum, UploadConstant.BREAK_UP);
+			aProduct.setBreakUpByExcel(breakValue);
 
-		Object reserveValue = readWorkBookCell(row.getCell(UploadConstant.RESERVE_NUMBER), Cell.CELL_TYPE_STRING,
-				rowNum, UploadConstant.RESERVE_NUMBER);
-		if (StringUtils.isEmpty(reserveValue)) {
-			result += 1;
-		}
-		aProduct.setReserveByExcel(reserveValue);
+			Object reserveValue = readWorkBookCell(row.getCell(UploadConstant.RESERVE_NUMBER), Cell.CELL_TYPE_STRING,
+					rowNum, UploadConstant.RESERVE_NUMBER);
+			if (StringUtils.isEmpty(reserveValue)) {
+				result += 1;
+			}
+			aProduct.setReserveByExcel(reserveValue);
+
+			Object produceValue = readWorkBookCell(row.getCell(UploadConstant.PRODUCE_DATE), Cell.CELL_TYPE_STRING,
+					rowNum, UploadConstant.PRODUCE_DATE);
+			aProduct.setProductDateByExcel(produceValue);
+
+			Object packageMethodValue = readWorkBookCell(row.getCell(UploadConstant.PACKAGE_METHOD), Cell.CELL_TYPE_STRING,
+					rowNum, UploadConstant.PACKAGE_METHOD);
+			aProduct.setPackagingByExcel(packageMethodValue);
+
+			Object minValue = readWorkBookCell(row.getCell(UploadConstant.MIN_DELIVERY), Cell.CELL_TYPE_STRING,
+					rowNum, UploadConstant.MIN_DELIVERY);
+			Object maxValue = readWorkBookCell(row.getCell(UploadConstant.MAX_DELIVERY), Cell.CELL_TYPE_STRING,
+					rowNum, UploadConstant.MAX_DELIVERY);
+			aProduct.setDeliveryByExcel(minValue, maxValue);
+			if (!StringUtils.isEmpty(minValue) || !StringUtils.isEmpty(maxValue)) {
+				setDeliveryTime(aProduct, minValue, maxValue);
+			}
 
-		Object produceValue = readWorkBookCell(row.getCell(UploadConstant.PRODUCE_DATE), Cell.CELL_TYPE_STRING,
-				rowNum, UploadConstant.PRODUCE_DATE);
-		aProduct.setProductDateByExcel(produceValue);
+			Object packageNumValue = readWorkBookCell(row.getCell(UploadConstant.PACKAGE_NUMBER), Cell.CELL_TYPE_STRING,
+					rowNum, UploadConstant.PACKAGE_NUMBER);
+			aProduct.setMinPackageByExcel(packageNumValue);
 
-		Object packageMethodValue = readWorkBookCell(row.getCell(UploadConstant.PACKAGE_METHOD), Cell.CELL_TYPE_STRING,
-				rowNum, UploadConstant.PACKAGE_METHOD);
-		aProduct.setPackagingByExcel(packageMethodValue);
+			Object buyQtyValue = readWorkBookCell(row.getCell(UploadConstant.BUY_MIN_QTY), Cell.CELL_TYPE_STRING,
+					rowNum, UploadConstant.BUY_MIN_QTY);
+			aProduct.setMinBuyQtyByExcel(buyQtyValue);
 
-		Object minValue = readWorkBookCell(row.getCell(UploadConstant.MIN_DELIVERY), Cell.CELL_TYPE_STRING,
-				rowNum, UploadConstant.MIN_DELIVERY);
-		Object maxValue = readWorkBookCell(row.getCell(UploadConstant.MAX_DELIVERY), Cell.CELL_TYPE_STRING,
-				rowNum, UploadConstant.MAX_DELIVERY);
-		aProduct.setDeliveryByExcel(minValue, maxValue);
-		if (!StringUtils.isEmpty(minValue) || !StringUtils.isEmpty(maxValue)) {
-			setDeliveryTime(aProduct, minValue, maxValue);
+			Object tagValue = readWorkBookCell(row.getCell(UploadConstant.CUSTOM_LABEL), Cell.CELL_TYPE_STRING,
+					rowNum, UploadConstant.CUSTOM_LABEL);
+			aProduct.setTagByExcel(tagValue);
+			// 自定义标签不为null,则检查是否重复
+			if (aProduct.getCode() != null && aProduct.getBrandNameEn() != null && aProduct.getTag() != null) {
+				resetTag(aProduct);
+			}
 		}
 
-        Object packageNumValue = readWorkBookCell(row.getCell(UploadConstant.PACKAGE_NUMBER), Cell.CELL_TYPE_STRING,
-                rowNum, UploadConstant.PACKAGE_NUMBER);
-		aProduct.setMinPackageByExcel(packageNumValue);
-
-        Object buyQtyValue = readWorkBookCell(row.getCell(UploadConstant.BUY_MIN_QTY), Cell.CELL_TYPE_STRING,
-                rowNum, UploadConstant.BUY_MIN_QTY);
-		aProduct.setMinBuyQtyByExcel(buyQtyValue);
-
-		Object tagValue = readWorkBookCell(row.getCell(UploadConstant.CUSTOM_LABEL), Cell.CELL_TYPE_STRING,
-				rowNum, UploadConstant.CUSTOM_LABEL);
-		aProduct.setTagByExcel(tagValue);
-		// 自定义标签不为null,则检查是否重复
-		if (aProduct.getCode() != null && aProduct.getBrandNameEn() != null && aProduct.getTag() != null) {
-			resetTag(aProduct);
-		}
 		return result;
 	}
 

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


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


+ 3 - 3
src/main/webapp/resources/js/common/controllers/commonCtrls.js

@@ -309,15 +309,15 @@ define([ 'app/app' ], function(app) {
 				if($scope.searchType.brand) {
 					SessionService.set('brand', true);
 					SessionService.unset('component');
-					window.location.href = 'search?w=' + encodeURI(encodeURIComponent($scope.keyword)) + '&type=brand';
+					window.location.href = 'search?w=' + encodeURI($scope.keyword) + '&type=brand';
 				}else if($scope.searchType.isCmp()){
 					SessionService.set('component', angular.toJson($scope.searchType));
 					SessionService.unset('brand');
-					window.location.href = 'search?w=' + encodeURI(encodeURIComponent($scope.keyword)) + '&type=component';
+					window.location.href = 'search?w=' + encodeURI($scope.keyword) + '&type=component';
 				}else {
 					SessionService.unset('component');
 					SessionService.unset('brand');
-					window.location.href = 'search?w=' + encodeURI(encodeURIComponent($scope.keyword)) + '&type=all';
+					window.location.href = 'search?w=' + encodeURI($scope.keyword) + '&type=all';
 				}
 
 			}

+ 46 - 18
src/main/webapp/resources/js/usercenter/controllers/forstore/account_manager_ctrl.js

@@ -19,6 +19,7 @@ define(['app/app'], function (app) {
           // $scope.userInfo.userEmail = null;
           $scope.userInfoBackup = angular.copy($scope.userInfo);
           $scope.canAddTotal = 20;
+
           //手机号和邮箱号的部分隐藏
           if($scope.userInfo.userTel){
             $scope.userInfo.userTel = $scope.userInfo.userTel.substr(0, 3)
@@ -439,10 +440,11 @@ define(['app/app'], function (app) {
 				}
 			});
 
-            modalInstance.result.then(function () {
-            }, function () {
-            });
-          };
+			modalInstance.result.then(function () {
+				window.location.href = "user#/accountManager/sec";
+			}, function () {
+			});
+		};
 
           $scope.updateUserEmail = function () {
             var modalInstance = $modal.open({
@@ -458,6 +460,7 @@ define(['app/app'], function (app) {
             });
 
             modalInstance.result.then(function () {
+              window.location.href = "user#/accountManager/sec";
             }, function () {
             });
           };
@@ -512,6 +515,7 @@ define(['app/app'], function (app) {
             });
 
             modalInstance.result.then(function () {
+              window.location.href = "user#/accountManager/sec";
             }, function () {
             });
           };
@@ -554,8 +558,12 @@ define(['app/app'], function (app) {
 
   // 修改密码Controller
   app.register.controller('PasswordCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster','$state',
-        function ($scope, $modalInstance, user, User, toaster,$state) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster','$state',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster,$state) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           $scope.user = user;
           $scope.checking = false;
           $scope.showPassword = false;
@@ -774,8 +782,12 @@ define(['app/app'], function (app) {
 
   // 修改邮箱Controller
   app.register.controller('UserEmailCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster', '$interval',
-        function ($scope, $modalInstance, user, User, toaster, $interval) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster', '$interval',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster, $interval) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           User.getPageToken();
           $scope.user = user;
           $scope.user.userEmail = null;
@@ -809,7 +821,7 @@ define(['app/app'], function (app) {
           $scope.emailEnable = function (newUserEmail) {
             //邮箱不可用
             if ((newUserEmail == null || newUserEmail.length > 30)
-                || !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(
+                || !/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(
                     newUserEmail)) {
               $scope.checkSuccess1 = false;
               $scope.checkFailed1 = true;
@@ -941,10 +953,14 @@ define(['app/app'], function (app) {
           };
         }]);
 
-  //手机验证Controller
+  // 手机验证Controller
   app.register.controller('UserTelCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster', '$interval',
-        function ($scope, $modalInstance, user, User, toaster, $interval) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster', '$interval',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster, $interval) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           User.getPageToken();
           $scope.user = user;
           $scope.user.userTel = null;
@@ -1106,8 +1122,12 @@ define(['app/app'], function (app) {
 
   // 设置支付密码Controller
   app.register.controller('UserPayCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster',
-        function ($scope, $modalInstance, user, User, toaster) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           //原密码框是否显示
           $scope.user = angular.copy(user);
           $scope.checking = true;
@@ -1325,8 +1345,12 @@ define(['app/app'], function (app) {
 
   // 设置密保问题Controller
   app.register.controller('UserQuestionCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster','$timeout',
-        function ($scope, $modalInstance, user, User, toaster,$timeout) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster','$timeout',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster,$timeout) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           //查询所有的密保问题
           $scope.pageInfo = {page: 1, count: 20};
           User.getAllSecQuestion($scope.pageInfo, function (data) {
@@ -1449,8 +1473,12 @@ define(['app/app'], function (app) {
 
   // 实名认证Controller
   app.register.controller('UserRealAuthCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster',
-        function ($scope, $modalInstance, user, User, toaster) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           $scope.user = user;
           //姓名验证  不超过20个字符
           $scope.checkSuccess = false;

+ 6 - 1
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_home_ctrl.js

@@ -217,7 +217,12 @@ define(['app/app', 'calendar'], function(app) {
             height: 220
         });
     }]);
-  app.register.controller('homeModalCtrl', ['$scope',  '$modalInstance', 'toaster', '$http', 'ShippingAddress','$state', function($scope, $modalInstance, toaster, $http, ShippingAddress,$state){
+    
+  app.register.controller('homeModalCtrl', ['$rootScope', '$scope',  '$modalInstance', 'toaster', '$http', 'ShippingAddress','$state', function($rootScope, $scope, $modalInstance, toaster, $http, ShippingAddress,$state){
+    $rootScope.$on('$stateChangeStart',
+        function(event, toState, toParams, fromState, fromParams){
+          $modalInstance.dismiss();
+    })
     $scope.goLink = function(op){
       $state.go('account_manager',{op:op});
       $modalInstance.dismiss('cancel');

+ 40 - 14
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_account_management_ctrl.js

@@ -309,8 +309,8 @@ define(['app/app'], function(app) {
                 }
               }
             });
-
             modalInstance.result.then(function () {
+              window.location.href = "vendor#/account/management/sec";
             }, function () {
             });
           };
@@ -326,6 +326,7 @@ define(['app/app'], function(app) {
             });
 
             modalInstance.result.then(function(){
+              window.location.href = "vendor#/account/management/sec";
             }, function(){
             });
           };
@@ -371,6 +372,7 @@ define(['app/app'], function(app) {
             });
 
             modalInstance.result.then(function(){
+              window.location.href = "vendor#/account/management/sec";
             }, function(){
             });
           };
@@ -495,8 +497,12 @@ define(['app/app'], function(app) {
 
   // 修改密码Controller
   app.register.controller('PasswordCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster','$state',
-        function ($scope, $modalInstance, user, User, toaster,$state) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster','$state',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster,$state) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           $scope.user = user;
           $scope.checking = false;
           $scope.showPassword = false;
@@ -715,8 +721,12 @@ define(['app/app'], function(app) {
 
   // 修改邮箱Controller
   app.register.controller('UserEmailCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster', '$interval',
-        function ($scope, $modalInstance, user, User, toaster, $interval) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster', '$interval',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster, $interval) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           User.getPageToken();
           $scope.user = user;
           $scope.user.userEmail = null;
@@ -750,7 +760,7 @@ define(['app/app'], function(app) {
           $scope.emailEnable = function (newUserEmail) {
             //邮箱不可用
             if ((newUserEmail == null || newUserEmail.length > 30)
-                || !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(
+                || !/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(
                     newUserEmail)) {
               $scope.checkSuccess1 = false;
               $scope.checkFailed1 = true;
@@ -884,8 +894,12 @@ define(['app/app'], function(app) {
 
   //手机验证Controller
   app.register.controller('UserTelCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster', '$interval',
-        function ($scope, $modalInstance, user, User, toaster, $interval) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster', '$interval',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster, $interval) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           User.getPageToken();
           $scope.user = user;
           $scope.user.userTel = null;
@@ -1047,8 +1061,12 @@ define(['app/app'], function(app) {
 
   // 设置支付密码Controller
   app.register.controller('UserPayCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster',
-        function ($scope, $modalInstance, user, User, toaster) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           //原密码框是否显示
           $scope.user = angular.copy(user);
           $scope.checking = true;
@@ -1266,8 +1284,12 @@ define(['app/app'], function(app) {
 
   // 设置密保问题Controller
   app.register.controller('UserQuestionCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster','$timeout',
-        function ($scope, $modalInstance, user, User, toaster,$timeout) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster','$timeout',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster,$timeout) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           //查询所有的密保问题
           $scope.pageInfo = {page: 1, count: 20};
           User.getAllSecQuestion($scope.pageInfo, function (data) {
@@ -1390,8 +1412,12 @@ define(['app/app'], function(app) {
 
   // 实名认证Controller
   app.register.controller('UserRealAuthCtrl',
-      ['$scope', '$modalInstance', 'user', 'User', 'toaster',
-        function ($scope, $modalInstance, user, User, toaster) {
+      ['$rootScope', '$scope', '$modalInstance', 'user', 'User', 'toaster',
+        function ($rootScope, $scope, $modalInstance, user, User, toaster) {
+          $rootScope.$on('$stateChangeStart',
+              function(event, toState, toParams, fromState, fromParams){
+                $modalInstance.dismiss();
+          })
           $scope.user = user;
           //姓名验证  不超过20个字符
           $scope.checkSuccess = false;

+ 5 - 2
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_index_ctrl.js

@@ -90,8 +90,11 @@ define(['app/app', 'calendar'], function(app) {
 
     }]);
 
-    app.register.controller('homeModalCtrl', ['$scope',  '$modalInstance', 'toaster', '$http', 'ShippingAddress','$state', function($scope, $modalInstance, toaster, $http, ShippingAddress,$state){
-        console.info($scope.userInfo);
+    app.register.controller('homeModalCtrl', ['$rootScope', '$scope',  '$modalInstance', 'toaster', '$http', 'ShippingAddress','$state', function($rootScope, $scope, $modalInstance, toaster, $http, ShippingAddress,$state){
+        $rootScope.$on('$stateChangeStart',
+          function(event, toState, toParams, fromState, fromParams){
+            $modalInstance.dismiss();
+        })
         $scope.goLink = function(op) {
             $state.go('vendor_account_management',{op:op});
             $modalInstance.dismiss('cancel');

+ 2 - 2
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialPersonCtrl.js

@@ -305,7 +305,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 				}
 			} else {
 				var ids = $scope.choosedIds.join(',');
-				Material.deleteBatch({ids: ids}, function (data) {
+				Material.deleteBatch({ids: ids, isPerson: 1}, function (data) {
 					toaster.pop('success', '删除成功');
 					$scope.choosedIds = [];
 					$scope.deleteDiv = false;
@@ -2602,7 +2602,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
                         return ;
                     }
                     var idStr = $scope.ids.join(',');
-                    Material.deleteBatch({ids : idStr}, function (data) {
+                    Material.deleteBatch({ids : idStr, isPerson: 1}, function (data) {
                         toaster.pop('success', '删除成功');
 						$scope.deleteModal = false;
                         $modalInstance.close(data);

+ 1 - 1
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_store_info_ctrl.js

@@ -47,7 +47,7 @@ define(['app/app', 'jquery-uploadify'], function (app) {
 		 */
 		$scope.initial = function () {
 			$scope.enterprise = $rootScope.applyInfo.enterprise || {};
-			$scope.applySampleInfo.logoUrl = $scope.enterprise.enLogoUrl || null;
+			$scope.applySampleInfo.logoUrl = null;
 			accessTemplates();
 			createPlainProducts();
 		};

+ 11 - 6
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_upload_ctrl.js

@@ -201,11 +201,16 @@ define([ 'app/app' ], function(app) {
 				toaster.pop('info', '请选择需要上传的文件');
 				return;
 			}
+			if ($rootScope.$$productOn.tab === 'bathOnPerson') {
+				var param = {selfSale : $scope.batch.sellType == 'self', currency : $scope.batch.currency, isPerson : 1};
+			} else {
+                var param = {selfSale : $scope.batch.sellType == 'self', currency : $scope.batch.currency};
+			}
 			$upload.upload({
 				url: 'release/product/release/excel',
 				file: file,
 				method: 'POST',
-				params : {selfSale : $scope.batch.sellType == 'self', currency : $scope.batch.currency}
+				params : param
 			}).success(function(data) {
 				$scope.selectFile(' ');
 				$scope.batch.myFiles = [];
@@ -236,6 +241,9 @@ define([ 'app/app' ], function(app) {
 				toaster.pop('info', '提示', '上传完成');
 				$scope.relTableParams.page(1);
 				$scope.relTableParams.reload();
+                if ($rootScope.$$productOn.tab === 'bathOnPerson') {
+                    publicPersonProduct();
+                }
 			}).error(function(response) {
 				$scope.result = {};
 				$scope.result.total = 0;
@@ -245,9 +253,6 @@ define([ 'app/app' ], function(app) {
 				$scope.pageParams.totalPages = 0;
 				toaster.pop('error', response.data || response);
 			});
-			if ($rootScope.$$productOn.tab === 'bathOnPerson') {
-                publicPersonProduct();
-			}
 		};
 
 		// 下载模板
@@ -261,10 +266,10 @@ define([ 'app/app' ], function(app) {
 				});
 				modalInstance.result.then(function(response) {
 				}, function(res) {
-					window.location.href = $rootScope.rootPath + '/release/product/release/template?currency' + '=' + $scope.batch.currency;
+					window.location.href = $rootScope.rootPath + '/release/product/release/template?currency' + '=' + $scope.batch.currency + ($rootScope.$$productOn.tab == 'bathOnPerson' ? '&isPerson=1' : '');
 				});
 			} else {
-				window.location.href = $rootScope.rootPath + '/release/product/release/template?currency' + '=' + $scope.batch.currency;
+				window.location.href = $rootScope.rootPath + '/release/product/release/template?currency' + '=' + $scope.batch.currency + ($rootScope.$$productOn.tab == 'bathOnPerson' ? '&isPerson=1' : '');
 			}
 		};
 

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

@@ -33,7 +33,7 @@
                     <dt><img src="static/img/user/images/user_photo.png" /></dt>
                     <dd>
                         <span ng-cloak ng-bind="userInfo.userName" class="user" title="{{userInfo.userName}}"><br/> <!--<em>账户余额:¥68899.99</em>--></span>
-                        <span ng-cloak ng-bind="'|&nbsp;' + userInfo.enterprise.enName || '个人账户'" class="enName" title="{{userInfo.enterprise.enName}}"><br/> <!--<em>账户余额:¥68899.99</em>--></span>
+                        <span ng-cloak ng-bind="'|&nbsp;' + (userInfo.enterprise.enName || '个人账户')" class="enName" title="{{userInfo.enterprise.enName}}"><br/> <!--<em>账户余额:¥68899.99</em>--></span>
                         <a ui-sref="account_manager" href="#/accountManager/">账户设置&nbsp;》</a>
                     </dd>
                 </dl>

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

@@ -37,7 +37,7 @@
                 <dt><img src="static/img/vendor/images/user_photo.png" /></dt>
                 <dd>
                     <span ng-bind="userInfo.userName" class="user" title="{{userInfo.userName}}"><br/><!--<em>账户余额:¥68899.99</em>--></span>
-                    <span ng-bind="'|&nbsp;' + vendor.enName || '个人账户'" class="enName" title="{{vendor.enName}}"><br/> <!--<em>账户余额:¥68899.99</em>--></span>
+                    <span ng-bind="'|&nbsp;' + (vendor.enName || '个人账户')" class="enName" title="{{vendor.enName}}"><br/> <!--<em>账户余额:¥68899.99</em>--></span>
                     <a ui-sref="vendor_account_management" href="#/account/management/">账户设置&nbsp;》</a>
                     <!--<p><img src="static/img/vendor/images/sell_grade.png"/>专有服务:******</p>-->
                 </dd>

+ 2 - 2
src/main/webapp/resources/view/vendor/forstore/vendor_material_person.html

@@ -1521,7 +1521,7 @@
 					<a ng-click="download()">批量导出</a>
 				</div>
 				<div class="check fr">
-					<a ng-show="!isBatch && standard_tab == 'unstandard'" ng-click="matchAll()"><span ng-show="!isBatch && standard_tab == 'unstandard'">一键匹配</span></a>
+					<!--<a ng-show="!isBatch && standard_tab == 'unstandard'" ng-click="matchAll()"><span ng-show="!isBatch && standard_tab == 'unstandard'">一键匹配</span></a>-->
 					<a ng-show="!isBatch" ng-click="enterBatch()"><span ng-show="!isBatch">批量操作</span></a>
 					<span class="check-btn" ng-show="isBatch">
 						<label class="check-active">
@@ -1589,7 +1589,7 @@
 						</td>
 						<td class="edit">
 							<span name="delete-material" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="deleteMaterial(material)"><span>删除</span></span>
-							<span ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="showShelfArea(material)"><span>添加产品</span></span>
+							<!--<span ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="showShelfArea(material)"><span>添加产品</span></span>-->
 							<span ng-if="material.batchCount" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="expandGoods(material)"><span>展开<i class="fa fa-angle-down" style="margin-left:2px;"></i></span></span>
 							<!--收起-->
 							<span ng-show="!isBatch && material.exPandOper" ng-click="disExpandGoods(material)" class="packUp"><span>收起<i class="fa fa-angle-up" style="margin-left:2px;"></i></span></span>

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

@@ -406,7 +406,7 @@
                             </div>-->
                         </div>
                         <div class="txt-info" ng-if="result && result.total != 0 && !hadImport">成功导入 <span ng-bind="result.success + result.failure">600</span> 个产品(其中标准产品 <span ng-bind="result.success">200</span> 个,非标产品 <span ng-bind="result.failure">400</span> 个)<b class="success-hidden" ng-if="result.filter != 0">,下载 <a ng-click="downloadExcel()">导入失败产品</a></b></div>
-                        <table ng-table="relTableParams" class="public-tab table" ng-if="$$productOn.tab == 'bathOn'">
+                        <table ng-table="relTableParams" class="public-tab table" ng-show="$$productOn.tab == 'bathOn'">
                             <thead>
                                 <tr>
                                     <th width="60">序号</th>

+ 49 - 39
src/main/webapp/resources/view/vendor/left_nav.html

@@ -4,6 +4,7 @@
 	}
 	#vendor_left_bar.user_left p {
 		text-align: center;
+		cursor: pointer;
 	}
 	#vendor_left_bar.user_left p span {
 		margin-left: 0;
@@ -29,74 +30,83 @@
 		font-weight: normal;
 		width: auto;
 	}
+	.user_content .user_left ul li span {
+		width: 100%;
+		display: inline-block;
+		height: 50px;
+		cursor: pointer;
+	}
+	.user_content .user_left ul li.active span, .user_content .user_left ul li:hover span {
+		color: #fff;
+	}
 </style>
 <div id="vendor_left_bar" class="user_left fl" ng-controller="leftNavCtrl">
-	<a  ui-sref="vendor_index"><p ng-class="{'active' : active == 'index'}"><span>卖家中心</span></p></a>
+	<span  ui-sref="vendor_index"><p ng-class="{'active' : active == 'index'}"><span>卖家中心</span></p></span>
 	<ul>
 		<div ng-hide="!(userInfo.pwdEnable && userInfo.haveUserQuestion && userInfo.userEmail)">
-		<li ng-class="{'active' : active == 'vendor_order'}"><a  ui-sref="vendor_order">订单中心</a></li>
+		<li ng-class="{'active' : active == 'vendor_order'}"><span  ui-sref="vendor_order">订单中心</span></li>
 		<li ng-class="{'active' : active == 'vendor_logistics'}">
-			<a  ui-sref="vendor_logistics" ng-hide="store && (!store.status || store.status === 'OPENED')">物流管理</a>
-			<a  ui-sref="vendor_deliveryRule" ng-if="store && (!store.status || store.status === 'OPENED')">物流管理</a>
+			<span  ui-sref="vendor_logistics" ng-hide="store && (!store.status || store.status === 'OPENED')">物流管理</span>
+			<span  ui-sref="vendor_deliveryRule" ng-if="store && (!store.status || store.status === 'OPENED')">物流管理</span>
 		</li>
-		<li ng-class="{'active' : active == 'vendor_invoice'}"><a  ui-sref="vendorInvoice">发票管理</a></li>
-	<!--	<li ng-class="{'active' : active == 'vendor_logistics'}"><a  ui-sref="vendor_logistics">物流管理</a></li>-->
-		<li ng-class="{'active' : active == 'pay_center'}"><a  ui-sref="pay_center">结算中心</a></li>
-		<li ng-class="{'active' : active == 'vendor_brand_apply'}"><a  ui-sref="vendor_brand_apply">品牌申请</a></li>
-		<li ng-class="{'active' : active == 'vendor_component_apply'}"><a  ui-sref="vendor_component_apply">器件申请</a></li>
-	<!--	<li ng-class="{'active' : active == 'vendor_productOn'}"><a  ui-sref="vendor_productOn">产品导入</a></li>-->
-		<li ng-class="{'active' : active == 'vendor_productOn'}"><a  ui-sref="vendor_upload">产品导入</a></li>
-		<!--<li ng-class="{'active' : active == 'vendor_repository'}"><a  ui-sref="vendor_repository">仓库管理</a></li>-->
-		<li ng-class="{'active' : active == 'vendor_material_person'}"><a  ui-sref="vendor_material_person">产品管理</a></li>
+		<li ng-class="{'active' : active == 'vendor_invoice'}"><span  ui-sref="vendorInvoice">发票管理</span></li>
+	<!--	<li ng-class="{'active' : active == 'vendor_logistics'}"><span  ui-sref="vendor_logistics">物流管理</span></li>-->
+		<li ng-class="{'active' : active == 'pay_center'}"><span  ui-sref="pay_center">结算中心</span></li>
+		<li ng-class="{'active' : active == 'vendor_brand_apply'}"><span  ui-sref="vendor_brand_apply">品牌申请</span></li>
+		<li ng-class="{'active' : active == 'vendor_component_apply'}"><span  ui-sref="vendor_component_apply">器件申请</span></li>
+	<!--	<li ng-class="{'active' : active == 'vendor_productOn'}"><span  ui-sref="vendor_productOn">产品导入</span></li>-->
+		<li ng-class="{'active' : active == 'vendor_productOn'}"><span  ui-sref="vendor_upload">产品导入</span></li>
+		<!--<li ng-class="{'active' : active == 'vendor_repository'}"><span  ui-sref="vendor_repository">仓库管理</span></li>-->
+		<li ng-class="{'active' : active == 'vendor_material_person'}"><span  ui-sref="vendor_material_person">产品管理</span></li>
 		<!--<li ng-class="{'active' : active == 'vendor_after_sale'}" class="undo">-->
-		<!--&lt;!&ndash;<a  ui-sref="vendor_after_sale">售后处理</a>&ndash;&gt;-->
+		<!--&lt;!&ndash;<span  ui-sref="vendor_after_sale">售后处理</span>&ndash;&gt;-->
 		<!--售后处理-->
 		<!--</li>-->
-		<!--<li ng-class="{'active' : active == 'vendor_manufacture'}"><a  ui-sref="vendor_manufacture">原厂认证</a></li>-->
+		<!--<li ng-class="{'active' : active == 'vendor_manufacture'}"><span  ui-sref="vendor_manufacture">原厂认证</span></li>-->
 		<li ng-class="{'active' : active == 'vendor_store'}">
 			<!-- 我要开店 !store && applyStatus == 'NONE' -->
-			<a  ui-sref="vendor_store_apply" ng-if="!store && applyStatus == 'NONE'">开店申请</a>
+			<span  ui-sref="vendor_store_apply" ng-if="!store && applyStatus == 'NONE'">开店申请</span>
 			<!-- 店铺申请中 !store && applyStatus == 'PREPARE' -->
-			<a  ui-sref="vendor_store_wait" ng-if="!store && applyStatus == 'PREPARE'">开店申请</a>
+			<span  ui-sref="vendor_store_wait" ng-if="!store && applyStatus == 'PREPARE'">开店申请</span>
 			<!-- 我的店铺 !store && applyStatus == 'PASS' -->
-			<a  ui-sref="vendor_store_info" ng-if="!store && applyStatus == 'PASS'">我的店铺</a>
+			<span  ui-sref="vendor_store_info" ng-if="!store && applyStatus == 'PASS'">我的店铺</span>
 			<!-- 我的店铺 store -->
-			<a  ui-sref="vendor_store_maintain" ng-if="store && (!store.status || store.status === 'OPENED')">我的店铺</a>
+			<span  ui-sref="vendor_store_maintain" ng-if="store && (!store.status || store.status === 'OPENED')">我的店铺</span>
 			<!-- 我的店铺申述 store -->
-			<a  ui-sref="vendor_store_maintain" ng-if="store && store.status && store.status !== 'OPENED'">我的店铺</a>
+			<span  ui-sref="vendor_store_maintain" ng-if="store && store.status && store.status !== 'OPENED'">我的店铺</span>
 		</li>
 		</div>
 		<div ng-hide="userInfo.pwdEnable && userInfo.haveUserQuestion && userInfo.userEmail">
-			<li ng-class="{'active' : active == 'vendor_order'}"><a ng-click="promptUpdate()" ng-click="promptUpdate()" class="disabled">订单中心</a></li>
-			<li ng-class="{'active' : active == 'vendor_logistics'}"><a ng-click="promptUpdate()" class="disabled">物流管理</a></li>
-			<li ng-class="{'active' : active == 'vendor_invoice'}"><a ng-click="promptUpdate()" class="disabled" >发票管理</a></li>
-			<!--	<li ng-class="{'active' : active == 'vendor_logistics'}"><a  ui-sref="vendor_logistics">物流管理</a></li>-->
-			<li ng-class="{'active' : active == 'pay_center'}"><a ng-click="promptUpdate()" class="disabled" >结算中心</a></li>
-			<li ng-class="{'active' : active == 'vendor_brand_apply'}"><a ng-click="promptUpdate()" class="disabled" >品牌申请</a></li>
-			<li ng-class="{'active' : active == 'vendor_component_apply'}"><a ng-click="promptUpdate()" class="disabled" >器件申请</a></li>
-			<!--	<li ng-class="{'active' : active == 'vendor_productOn'}"><a  ui-sref="vendor_productOn">产品导入</a></li>-->
-			<li ng-class="{'active' : active == 'vendor_productOn'}"><a ng-click="promptUpdate()" class="disabled" >产品导入</a></li>
-			<!--<li ng-class="{'active' : active == 'vendor_repository'}"><a  ui-sref="vendor_repository">仓库管理</a></li>-->
-			<li ng-class="{'active' : active == 'vendor_material_person'}"><a ng-click="promptUpdate()" class="disabled" >产品管理</a></li>
+			<li ng-class="{'active' : active == 'vendor_order'}"><span ng-click="promptUpdate()" class="disabled">订单中心</span></li>
+			<li ng-class="{'active' : active == 'vendor_logistics'}"><span ng-click="promptUpdate()" class="disabled">物流管理</span></li>
+			<li ng-class="{'active' : active == 'vendor_invoice'}"><span ng-click="promptUpdate()" class="disabled" >发票管理</span></li>
+			<!--	<li ng-class="{'active' : active == 'vendor_logistics'}"><span  ui-sref="vendor_logistics">物流管理</span></li>-->
+			<li ng-class="{'active' : active == 'pay_center'}"><span ng-click="promptUpdate()" class="disabled" >结算中心</span></li>
+			<li ng-class="{'active' : active == 'vendor_brand_apply'}"><span ng-click="promptUpdate()" class="disabled" >品牌申请</span></li>
+			<li ng-class="{'active' : active == 'vendor_component_apply'}"><span ng-click="promptUpdate()" class="disabled" >器件申请</span></li>
+			<!--	<li ng-class="{'active' : active == 'vendor_productOn'}"><span  ui-sref="vendor_productOn">产品导入</span></li>-->
+			<li ng-class="{'active' : active == 'vendor_productOn'}"><span ng-click="promptUpdate()" class="disabled" >产品导入</span></li>
+			<!--<li ng-class="{'active' : active == 'vendor_repository'}"><span  ui-sref="vendor_repository">仓库管理</span></li>-->
+			<li ng-class="{'active' : active == 'vendor_material_person'}"><span ng-click="promptUpdate()" class="disabled" >产品管理</span></li>
 			<!--<li ng-class="{'active' : active == 'vendor_after_sale'}" class="undo">-->
-			<!--&lt;!&ndash;<a  ui-sref="vendor_after_sale">售后处理</a>&ndash;&gt;-->
+			<!--&lt;!&ndash;<span  ui-sref="vendor_after_sale">售后处理</span>&ndash;&gt;-->
 			<!--售后处理-->
 			<!--</li>-->
-			<!--<li ng-class="{'active' : active == 'vendor_manufacture'}"><a  ui-sref="vendor_manufacture">原厂认证</a></li>-->
+			<!--<li ng-class="{'active' : active == 'vendor_manufacture'}"><span  ui-sref="vendor_manufacture">原厂认证</span></li>-->
 			<li ng-class="{'active' : active == 'vendor_store'}">
 				<!-- 我要开店 !store && applyStatus == 'NONE' -->
-				<a ng-click="promptUpdate()" class="disabled"  ng-if="!store && applyStatus == 'NONE'">开店申请</a>
+				<span ng-click="promptUpdate()" class="disabled"  ng-if="!store && applyStatus == 'NONE'">开店申请</span>
 				<!-- 店铺申请中 !store && applyStatus == 'PREPARE' -->
-				<a ng-click="promptUpdate()" class="disabled"  ng-if="!store && applyStatus == 'PREPARE'">开店申请</a>
+				<span ng-click="promptUpdate()" class="disabled"  ng-if="!store && applyStatus == 'PREPARE'">开店申请</span>
 				<!-- 我的店铺 !store && applyStatus == 'PASS' -->
-				<a ng-click="promptUpdate()" class="disabled"  ng-if="!store && applyStatus == 'PASS'">我的店铺</a>
+				<span ng-click="promptUpdate()" class="disabled"  ng-if="!store && applyStatus == 'PASS'">我的店铺</span>
 				<!-- 我的店铺 store -->
-				<a ng-click="promptUpdate()" class="disabled"  ng-if="store && (!store.status || store.status === 'OPENED')">我的店铺</a>
+				<span ng-click="promptUpdate()" class="disabled"  ng-if="store && (!store.status || store.status === 'OPENED')">我的店铺</span>
 				<!-- 我的店铺申述 store -->
-				<a ng-click="promptUpdate()" class="disabled"  ng-if="store && store.status && store.status !== 'OPENED'">我的店铺</a>
+				<span ng-click="promptUpdate()" class="disabled"  ng-if="store && store.status && store.status !== 'OPENED'">我的店铺</span>
 			</li>
 
 		</div>
-		<li ng-class="{'active' : active == 'vendor_account_management'}"><a  ui-sref="vendor_account_management">账户管理</a></li>
+		<li ng-class="{'active' : active == 'vendor_account_management'}"><span  ui-sref="vendor_account_management">账户管理</span></li>
 	</ul>
 </div>