Browse Source

Merge branch 'dev-mysql' into product_upload

yangc 8 years ago
parent
commit
6ba40fc104
32 changed files with 410 additions and 180 deletions
  1. 4 4
      src/main/java/com/uas/platform/b2c/common/account/controller/EnterpriseController.java
  2. 1 1
      src/main/java/com/uas/platform/b2c/common/account/dao/EnterpriseDao.java
  3. 1 1
      src/main/java/com/uas/platform/b2c/common/account/service/EnterpriseService.java
  4. 1 1
      src/main/java/com/uas/platform/b2c/common/account/service/impl/EnterpriseServiceImpl.java
  5. 79 8
      src/main/java/com/uas/platform/b2c/external/erp/prod/service/impl/ProdServiceImpl.java
  6. 1 0
      src/main/java/com/uas/platform/b2c/prod/commodity/constant/ErrorInfoConstant.java
  7. 5 5
      src/main/java/com/uas/platform/b2c/prod/commodity/controller/ProductController.java
  8. 12 0
      src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductDao.java
  9. 1 1
      src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductPrivateDao.java
  10. 1 1
      src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductDetail.java
  11. 1 1
      src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductPrivate.java
  12. 17 5
      src/main/java/com/uas/platform/b2c/prod/commodity/model/ReleaseProductByBatch.java
  13. 2 2
      src/main/java/com/uas/platform/b2c/prod/commodity/service/ProductService.java
  14. 9 0
      src/main/java/com/uas/platform/b2c/prod/commodity/service/ReleaseProductByBatchService.java
  15. 12 5
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsServiceImpl.java
  16. 46 23
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java
  17. 38 14
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ReleaseProductByBatchServiceImpl.java
  18. 3 0
      src/main/java/com/uas/platform/b2c/prod/commodity/util/GoodsUtil.java
  19. BIN
      src/main/resources/jxls-tpl/trade/releaseByBatch-person.xls
  20. 19 12
      src/main/webapp/resources/js/usercenter/controllers/forstore/account_manager_ctrl.js
  21. 17 10
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_account_management_ctrl.js
  22. 94 50
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialCtrl.js
  23. 4 4
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialPersonCtrl.js
  24. 1 1
      src/main/webapp/resources/view/common/modal/delivery_rule_modal.html
  25. 2 2
      src/main/webapp/resources/view/usercenter/forstore/account_manager.html
  26. 8 8
      src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_erp.html
  27. 8 8
      src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_unstandard_erp.html
  28. 2 2
      src/main/webapp/resources/view/vendor/forstore/vendor_account_management.html
  29. 2 2
      src/main/webapp/resources/view/vendor/forstore/vendor_material.html
  30. 5 0
      src/main/webapp/resources/view/vendor/forstore/vendor_upload.html
  31. 6 4
      src/main/webapp/resources/view/vendor/modal/updateUserEmail.html
  32. 8 5
      src/main/webapp/resources/view/vendor/modal/updateUserTel.html

+ 4 - 4
src/main/java/com/uas/platform/b2c/common/account/controller/EnterpriseController.java

@@ -214,13 +214,13 @@ public class EnterpriseController {
 			if (!CollectionUtils.isEmpty(applyUserSpacePage.getContent())) {
 				List<ApplyUserSpace> applyUserSpaceList = applyUserSpacePage.getContent();
 				for (ApplyUserSpace applyUserSpace : applyUserSpaceList) {
-					Enterprise e = enterpriseService.findByEnBussinessCode(applyUserSpace.getBusinessCode());
+					List<Enterprise> e = enterpriseService.findByEnBussinessCode(applyUserSpace.getBusinessCode());
 					User admin = null;
-					if (null != e && null != e.getEnAdminuu()) {
-						admin = userService.findUserByUserUU(e.getEnAdminuu());
+					if (!CollectionUtils.isEmpty(e) && e.get(0).getEnAdminuu() != null) {
+						admin = userService.findUserByUserUU(e.get(0).getEnAdminuu());
 					}
 					Map<String,Object> map = new HashMap<>();
-					map.put("enName", e.getEnName());
+					map.put("enName", CollectionUtils.isEmpty(e) ? "" : e.get(0).getEnName());
 					map.put("date",applyUserSpace.getSubmitDate());
 					map.put("adminName",admin == null ? null : admin.getUserName());
 					map.put("status",applyUserSpace.getStatus());

+ 1 - 1
src/main/java/com/uas/platform/b2c/common/account/dao/EnterpriseDao.java

@@ -25,5 +25,5 @@ public interface EnterpriseDao extends JpaSpecificationExecutor<Enterprise>, Jpa
 	 * @param bussinessCode
 	 * @return
 	 */
-	public Enterprise findByEnBussinessCode(String bussinessCode);
+	public List<Enterprise> findByEnBussinessCode(String bussinessCode);
 }

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

@@ -44,7 +44,7 @@ public interface EnterpriseService {
 	 * @param bussinessCode
 	 * @return
 	 */
-	Enterprise findByEnBussinessCode(String bussinessCode);
+	List<Enterprise> findByEnBussinessCode(String bussinessCode);
 
 	/**
 	 * 个人用户注册企业信息

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

@@ -57,7 +57,7 @@ public class EnterpriseServiceImpl implements EnterpriseService{
 	}
 
 	@Override
-	public Enterprise findByEnBussinessCode(String bussinessCode) {
+	public List<Enterprise> findByEnBussinessCode(String bussinessCode) {
 		return enterpriseDao.findByEnBussinessCode(bussinessCode);
 	}
 

+ 79 - 8
src/main/java/com/uas/platform/b2c/external/erp/prod/service/impl/ProdServiceImpl.java

@@ -2,13 +2,18 @@ package com.uas.platform.b2c.external.erp.prod.service.impl;
 
 import com.uas.api.b2c_erp.seller.model.Prod;
 import com.uas.api.b2c_erp.seller.service.ProdService;
+import com.uas.platform.b2c.core.constant.IntegerConstant;
 import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.support.log.ErpB2cBufferedLogger;
 import com.uas.platform.b2c.external.erp.product.util.ModelConverter;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
 import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductPrivateDao;
 import com.uas.platform.b2c.prod.commodity.model.Product;
+import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
 import com.uas.platform.b2c.prod.commodity.service.ProductService;
+import com.uas.platform.b2c.prod.commodity.service.ReleaseProductByBatchService;
 import com.uas.platform.b2c.prod.store.dao.StoreInDao;
 import com.uas.platform.b2c.prod.store.model.StoreIn;
 import com.uas.platform.core.logging.BufferedLoggerManager;
@@ -16,6 +21,7 @@ import org.apache.log4j.Logger;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -37,6 +43,15 @@ public class ProdServiceImpl implements ProdService {
     @Autowired
     private StoreInDao storeInDao;
 
+    @Autowired
+    private GoodsDao goodsDao;
+
+    @Autowired
+    private ProductPrivateDao productPrivateDao;
+
+    @Autowired
+    private ReleaseProductByBatchService releaseProductByBatchService;
+
     private static final ErpB2cBufferedLogger logger = BufferedLoggerManager.getLogger(ErpB2cBufferedLogger.class);
 
     private final Logger loggerOut = Logger.getLogger(getClass());
@@ -46,16 +61,48 @@ public class ProdServiceImpl implements ProdService {
         List<Product> products = new ArrayList<Product>();
         Long enuu = SystemSession.getUser().getEnterprise().getUu();
         for (Prod prod : prods) {
-            List<Product> productExists = productDao.getProductByEnUUAndProdNum(enuu, prod.getPr_code());
-            Product product = ModelConverter.convert(prod);
-            if (!CollectionUtils.isEmpty(productExists)) {
-                Product existProduct = productExists.get(0);
-                BeanUtils.copyProperties(product, productExists.get(0), "id");
-                existProduct.setCmpUuId(null);// 将已存在的变更过物料uuid置为null,以便后续进行重新匹配
-                products.add(existProduct);
+            if (StringUtils.isEmpty(prod.getPr_orispeccode()) || StringUtils.isEmpty(prod.getPr_brand())) {
+                List<Product> productList = productDao.findByEnUUAndPcmpcodeAndPbrandenAndB2cEnabled(enuu,prod.getPr_orispeccode(),prod.getPr_brand(),IntegerConstant.YES_SHORT);
+                if (!CollectionUtils.isEmpty(productList)) {
+                    Product product = ModelConverter.convert(prod);
+                    Product existProduct = productList.get(0);
+                    BeanUtils.copyProperties(product, productList.get(0), "id");
+                    existProduct.setCmpUuId(null);// 将已存在的变更过物料uuid置为null,以便后续进行重新匹配
+                    products.add(existProduct);
+                } else {
+                    List<Product> productExists = productDao.getProductByEnUUAndProdNum(enuu, prod.getPr_code());
+                    Product product = ModelConverter.convert(prod);
+                    if (!CollectionUtils.isEmpty(productExists)) {
+                        Product existProduct = productExists.get(0);
+                        BeanUtils.copyProperties(product, productExists.get(0), "id");
+                        existProduct.setCmpUuId(null);// 将已存在的变更过物料uuid置为null,以便后续进行重新匹配
+                        products.add(existProduct);
+                    } else {
+                        products.add(product);
+                    }
+                }
             } else {
-                products.add(product);
+                List<Product> productExists = productDao.getProductByEnUUAndProdNum(enuu, prod.getPr_code());
+                Product product = ModelConverter.convert(prod);
+                if (!CollectionUtils.isEmpty(productExists)) {
+                    Product existProduct = productExists.get(0);
+                    BeanUtils.copyProperties(product, productExists.get(0), "id");
+                    existProduct.setCmpUuId(null);// 将已存在的变更过物料uuid置为null,以便后续进行重新匹配
+                    products.add(existProduct);
+                } else {
+                    products.add(product);
+                }
+            }
+            ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(prod.getPr_id());
+            if (null == productPrivate) {
+                productPrivate = new ProductPrivate();
+                productPrivate.setPrId(prod.getPr_id());
             }
+            productPrivate.setB2cEnabled(IntegerConstant.YES_SHORT);
+            // 统计现在有多少在售信息
+            int batchCount = goodsDao.findCountByProductid(prod.getPr_id());
+            productPrivate.setBatchCount(batchCount);
+            productPrivateDao.save(productPrivate);
         }
         productDao.save(products);// 保存上传的物料
 
@@ -112,4 +159,28 @@ public class ProdServiceImpl implements ProdService {
         logger.log("物料资料", "ERP获取店铺路径,企业:" + SystemSession.getUser().getEnterprise().getEnName());
         return url;
     }
+
+    @Override
+    public String setB2cEnable(String pr_code, Integer isEnable) {
+        List<Product> productList = productDao.getProductByEnUUAndProdNum(SystemSession.getUser().getEnterprise().getUu(),pr_code);
+        if (!CollectionUtils.isEmpty(productList)) {
+            for (Product product : productList) {
+                ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
+                if (null == productPrivate) {
+                    productPrivate = new ProductPrivate();
+                    productPrivate.setPrId(product.getId());
+                }
+                if (isEnable.equals(IntegerConstant.YES_SHORT)) {
+                    productPrivate.setB2cEnabled(IntegerConstant.YES_SHORT);
+                } else {
+                    productPrivate.setB2cEnabled(IntegerConstant.NO_SHORT);
+                }
+                // 统计现在有多少在售信息
+                int batchCount = goodsDao.findCountByProductid(product.getId());
+                productPrivate.setBatchCount(batchCount);
+                productPrivateDao.save(productPrivate);
+            }
+        }
+        return "success";
+    }
 }

+ 1 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/constant/ErrorInfoConstant.java

@@ -18,6 +18,7 @@ public enum  ErrorInfoConstant {
     PRODUCE_DATE_INFO("E列:生产日期不能为空"),
     PACKAGE_METHOD_INFO("F列:包装方式只能填写中英文"),
     PACKAGE_EMPTY_INFO("F列:包装方式不能为空"),
+    PERSON_PACKAGE_EMPTY_INFO("C列:规格信息不能为空"),
     DELIVERY_EMPTY_INFO("G-H列:存在交期的信息为空"),
     DELIVERY_VALUE_INFO("G-H列:交期只能填写1-31之间的整数值"),
     PRICE_INFO("K列:单价必须是小于1万的正数"),

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

@@ -232,16 +232,16 @@ public class ProductController {
 	 * 批量删除所有的非标的产品
 	 */
 	@RequestMapping(value = "/unstandard", method = RequestMethod.DELETE)
-	private ResultMap deleteUnstandardByBatch() {
-		 return productService.deleteBatch(ProductConstant.NSTANDARD);
+	private ResultMap deleteUnstandardByBatch(Integer isPerson) {
+		 return productService.deleteBatch(ProductConstant.NSTANDARD, isPerson);
 	}
 
 	/**
 	 * 批量删除所有的标准的产品
 	 */
 	@RequestMapping(value = "/standard", method = RequestMethod.DELETE)
-	private ResultMap deleteStandardByBatch() {
-		return productService.deleteBatch(ProductConstant.STANDARD);
+	private ResultMap deleteStandardByBatch(Integer isPerson) {
+		return productService.deleteBatch(ProductConstant.STANDARD, isPerson);
 	}
 
 	/**
@@ -290,7 +290,7 @@ public class ProductController {
 	 * @return
 	 */
 	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
-	public Product getProducts(@PathVariable("id") Long id) {
+	public V_ProductPrivate getProducts(@PathVariable("id") Long id) {
 		return productService.getProductById(id);
 	}
 

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

@@ -80,6 +80,18 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
             "p.pr_enuu=:enUU and p.pr_pcmpcode = :pcmpcode and p.pr_pbranden = :pbranden and pp.pr_b2cenabled = :b2cEnabled")
     List<Product> findByEnUUAndPcmpcodeAndPbrandenAndB2cEnabled(@Param("enUU")Long enUU, @Param("pcmpcode")String pcmpcode, @Param("pbranden")String pbranden, @Param("b2cEnabled")Integer b2cEnabled);
 
+    /**
+     *
+     * @param enUU 企业enuu
+     * @param pcmpcode 型号
+     * @param pbranden 品牌
+     * @param b2cEnabled 启用
+     * @return
+     */
+    @Query(nativeQuery = true, value = "select p.* from products p left join product$private pp on pp.pr_id = p.pr_id where " +
+            "p.pr_enuu=:enUU and p.pr_pcmpcode = :pcmpcode and p.pr_pbranden = :pbranden and pp.pr_b2cenabled = :b2cEnabled and p.pr_sourceapp <> :sourceApp")
+    List<Product> findByEnUUAndPcmpcodeAndPbrandenAndB2cEnabledAndSourceApp(@Param("enUU")Long enUU, @Param("pcmpcode")String pcmpcode, @Param("pbranden")String pbranden, @Param("b2cEnabled")Integer b2cEnabled, @Param("sourceApp")String sourceApp);
+
 
     /**
      * 根据器件型号,品牌 、enuu

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductPrivateDao.java

@@ -10,7 +10,7 @@ import java.util.List;
 
 public interface ProductPrivateDao  extends JpaRepository<ProductPrivate, Long>, JpaSpecificationExecutor<ProductPrivate> {
 
-    public ProductPrivate findByPrId(Long prId);
+    public List<ProductPrivate> findByPrId(Long prId);
 
 
     /**

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductDetail.java

@@ -86,7 +86,7 @@ public class ProductDetail implements Serializable{
     private String packaging;
 
     /**
-     * 单价
+     * 销售月单价
      */
     @Column(name = "prd_price")
     private Double price;

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductPrivate.java

@@ -17,7 +17,7 @@ public class ProductPrivate {
     /**
      * 物料主键
      */
-    @Column(name = "pr_id", unique = true)
+    @Column(name = "pr_id" ,unique = true)
     private Long prId;
 
     /**

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

@@ -584,13 +584,25 @@ public class ReleaseProductByBatch implements Serializable {
 				}
 			}
 		} else {
-			addErrmsg(ErrorInfoConstant.PACKAGE_EMPTY_INFO.getInfo());
+			if (!isAPerson) {
+				addErrmsg(ErrorInfoConstant.PACKAGE_EMPTY_INFO.getInfo());
+			} else {
+				addErrmsg(ErrorInfoConstant.PERSON_PACKAGE_EMPTY_INFO.getInfo());
+			}
 		}
 		String packagingData = StringUtilB2C.replaceLineBreak(StringUtilB2C.getStr(value));
-		try {
-			packagingData = com.uas.platform.b2c.fa.payment.utils.StringUtils.cutOutString(packagingData, 10);
-		} catch (UnsupportedEncodingException e) {
-			throw new RuntimeException(e + "指定字符集不支持");
+		if (!isAPerson) {
+			try {
+				packagingData = com.uas.platform.b2c.fa.payment.utils.StringUtils.cutOutString(packagingData, 10);
+			} catch (UnsupportedEncodingException e) {
+				throw new RuntimeException(e + "指定字符集不支持");
+			}
+		} else {
+			try {
+				packagingData = com.uas.platform.b2c.fa.payment.utils.StringUtils.cutOutString(packagingData, 150);
+			} catch (UnsupportedEncodingException e) {
+				throw new RuntimeException(e + "指定字符集不支持");
+			}
 		}
 		setPackaging(packagingData);
 	}

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

@@ -57,7 +57,7 @@ public interface ProductService {
      *
      * @param type 批量删除的类型
      */
-    ResultMap deleteBatch(String type);
+    ResultMap deleteBatch(String type, Integer isPerson);
 
     /**
      * 单个匹配
@@ -168,7 +168,7 @@ public interface ProductService {
      * @param id
      * @return
      */
-    Product getProductById(Long id);
+    V_ProductPrivate getProductById(Long id);
 
     /**
      * 通过product id获取物料交易详情

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

@@ -1,5 +1,6 @@
 package com.uas.platform.b2c.prod.commodity.service;
 
+import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
 import com.uas.platform.b2c.prod.commodity.model.ReleaseProductByBatch;
 import com.uas.platform.core.model.PageInfo;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -94,4 +95,12 @@ public interface ReleaseProductByBatchService {
      */
     public List<ReleaseProductByBatch> findFailureReleaseProductByBatch(String batch);
 
+
+    /**
+     * 查找私有字段根据pr_id
+     * @param prId
+     * @return
+     */
+    public ProductPrivate findByPrId(Long prId);
+
 }

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

@@ -135,6 +135,9 @@ public class GoodsServiceImpl implements GoodsService {
     @Autowired
     private CreateNumberService createNumberService;
 
+    @Autowired
+    private ReleaseProductByBatchService releaseProductByBatchService;
+
     @Autowired
     private ComponentDao componentDao;
 
@@ -1419,7 +1422,7 @@ public class GoodsServiceImpl implements GoodsService {
         if(persistGoods.getProductid() != null) {
             Product product = productDao.findOne(persistGoods.getProductid());
             if(product != null) {
-                ProductPrivate productPrivate = productPrivateDao.findByPrId(product.getId());
+                ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
                 if (productPrivate == null) {
                     productPrivate = new ProductPrivate();
                 }
@@ -2904,7 +2907,7 @@ public class GoodsServiceImpl implements GoodsService {
         if(goods.getProductid() != null) {
             Product product = productDao.findOne(goods.getProductid());
             if(product != null) {
-                ProductPrivate productPrivate = productPrivateDao.findByPrId(product.getId());
+                ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
                 if (productPrivate == null) {
                     productPrivate = new ProductPrivate();
                 }
@@ -2974,12 +2977,16 @@ public class GoodsServiceImpl implements GoodsService {
             if (goods.getProductid() != null) {
                 Product product = productDao.findOne(goods.getProductid());
                 if (product != null) {
-                    ProductPrivate productPrivate = productPrivateDao.findByPrId(product.getId());
+                    ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
                     if (productPrivate == null) {
                         productPrivate = new ProductPrivate();
                     }
                     Integer count = productPrivate.getBatchCount();
-                    productPrivate.setBatchCount(--count);
+                    if (null == count){
+                        productPrivate.setBatchCount(0);
+                    }else {
+                        productPrivate.setBatchCount(--count);
+                    }
                     productPrivateDao.save(productPrivate);
                     products.add(product);
                 }
@@ -3077,7 +3084,7 @@ public class GoodsServiceImpl implements GoodsService {
                 }
                 goodsDao.save(tagEmptyGoods);
                 goodsDao.save(goods);
-                ProductPrivate productPrivate = productPrivateDao.findByPrId(product.getId());
+                ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
                 if (productPrivate == null) {
                     productPrivate = new ProductPrivate();
                 }

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

@@ -15,10 +15,7 @@ import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
 import com.uas.platform.b2c.prod.commodity.constant.StringConstant;
 import com.uas.platform.b2c.prod.commodity.dao.*;
 import com.uas.platform.b2c.prod.commodity.model.*;
-import com.uas.platform.b2c.prod.commodity.service.GoodsHistoryService;
-import com.uas.platform.b2c.prod.commodity.service.GoodsService;
-import com.uas.platform.b2c.prod.commodity.service.ProductService;
-import com.uas.platform.b2c.prod.commodity.service.UASBatchPutOnPropertyService;
+import com.uas.platform.b2c.prod.commodity.service.*;
 import com.uas.platform.b2c.prod.commodity.type.ProductConstant;
 import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
 import com.uas.platform.b2c.prod.product.brand.modal.Brand;
@@ -126,6 +123,9 @@ public class ProductServiceImpl implements ProductService {
     @Autowired
     private ProductModifyHistoryDao productModifyHistoryDao;
 
+    @Autowired
+    private ReleaseProductByBatchService releaseProductByBatchService;
+
     @Autowired
     private GoodsHistoryService goodsHistoryService;
 
@@ -194,6 +194,8 @@ public class ProductServiceImpl implements ProductService {
     @Override
     public Page<V_ProductPrivate> getAllProducts(final PageInfo page, String keyword, String type) {
         page.expression(PredicateUtils.eq("enUU", SystemSession.getUser().getEnterprise().getUu(), true));
+        page.expression(PredicateUtils.isNotNull("pcmpcode"));
+        page.expression(PredicateUtils.isNotNull("pbranden"));
         if (StringUtils.isEmpty(type)) {
             type = "nStandard";
         }
@@ -240,7 +242,7 @@ public class ProductServiceImpl implements ProductService {
                 }
             }
             // 拿私有物料信息
-            ProductPrivate productPrivate = productPrivateDao.findByPrId(product.getId());
+            ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
             if (null != productPrivate) {
                 product.setB2cEnabled(productPrivate.getB2cEnabled());
                 product.setBatchCount(productPrivate.getBatchCount());
@@ -412,7 +414,7 @@ public class ProductServiceImpl implements ProductService {
                     if (CollectionUtils.isNotEmpty(goodses)) {
                         goodsService.deleteGoods(goodses);
                     }
-                    ProductPrivate productPrivate = productPrivateDao.findByPrId(product.getId());
+                    ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
                     if (productPrivate == null) {
                         productPrivate = new ProductPrivate();
                     }
@@ -433,11 +435,12 @@ public class ProductServiceImpl implements ProductService {
      * @param type 批量删除的类型
      */
     @Override
-    public ResultMap deleteBatch(String type) {
+    public ResultMap deleteBatch(String type, Integer isPerson) {
         Integer standard = null;
         List<ProductPerson> personList = new ArrayList<>();
         Integer fail = 0;
         Integer success = 0;
+        Integer isHave = 0;
         Long uu = SystemSession.getUser().getEnterprise().getUu();
         if(ProductConstant.STANDARD.equals(type)) {
             standard = IntegerConstant.YES_SHORT;
@@ -447,6 +450,14 @@ public class ProductServiceImpl implements ProductService {
         List<Product> products = productDao.findProductByEnuuAndStandard(uu, standard);
         Set<String> uuids = new HashSet<>();
         for (Product product : products) {
+            if (null != isPerson && isPerson.intValue() == IntegerConstant.YES_SHORT.intValue()) {
+                List<ProductPerson> productPersonList = productPersonDao.findByProductIdAndUserUU(product.getId(),SystemSession.getUser().getUserUU());
+                if (!CollectionUtils.isEmpty(productPersonList)) {
+                    Long ppid = productPersonList.get(0).getId();
+                    productPersonDao.delete(ppid);
+                }
+                continue;
+            }
             try {
                 personList = productPersonDao.findByProductId(product.getId());
                 if (CollectionUtils.isNotEmpty(personList)) {
@@ -480,11 +491,19 @@ public class ProductServiceImpl implements ProductService {
                     Set<ProductMatchResult> productMatchResultSet =  product.getMatchresults();
                     productMatchResultDao.delete(productMatchResultSet);
                     goodsService.deleteGoods(goodses);
-                    productDao.delete(product.getId());
+                    //productDao.delete(product.getId());
+                    ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
+                    if (productPrivate.getB2cEnabled().equals(IntegerConstant.NO_SHORT)) {
+                        fail++;
+                        isHave++;
+                    } else {
+                        success++;
+                    }
+                    productPrivate.setB2cEnabled(IntegerConstant.NO_SHORT);
+                    productPrivateDao.save(productPrivate);
                     if (!StringUtils.isEmpty(product.getCmpUuId())) {
                         uuids.add(product.getCmpUuId());
                     }
-                    success++;
                 }else {
                     fail++;
                 }
@@ -502,7 +521,7 @@ public class ProductServiceImpl implements ProductService {
             if(success != 0) {
                 message += ",";
             }
-            message += "删除失败" + fail + "条,原因:该产品可能已经被其他单据引用,无法删除";
+            message += "删除失败" + (fail-isHave) + "条,原因:该产品可能已经被其他单据或个人物料库引用,无法删除";
         }
         //如果是全部都不能删除,才能设置失败的状态码
         if((products.size() != 0) && (products.size() ==  fail.intValue())) {
@@ -867,7 +886,7 @@ public class ProductServiceImpl implements ProductService {
         if (standardProduct == null) {
             standardProduct = afterProduct;
         } else {
-            ProductPrivate productPrivate = productPrivateDao.findByPrId(product.getId());
+            ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
             if (productPrivate == null) {
                 productPrivate = new ProductPrivate();
             }
@@ -895,7 +914,7 @@ public class ProductServiceImpl implements ProductService {
         }
         goodsHistoryDao.save(goodsHistoryList);
         Product beforeProduct = productDao.findOne(beforeId);
-        ProductPrivate productPrivate = productPrivateDao.findByPrId(beforeProduct.getId());
+        ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(beforeProduct.getId());
         if (productPrivate == null) {
             productPrivate = new ProductPrivate();
         }
@@ -907,7 +926,8 @@ public class ProductServiceImpl implements ProductService {
             return new ResultMap(CodeType.NO_INFO, "匹配结果信息丢失");
         }
         Product standardProduct = updateProductAfterMatch(beforeProduct, result);
-        restTemplate.postForEntity(productServiceIp + "/product/update", standardProduct, String.class);
+//        restTemplate.postForEntity(productServiceIp + "/product/update", standardProduct, String.class);
+        productDao.save(standardProduct);
 
         Product afterProduct = productDao.findOne(afterId);
         updateInfoAfterTurnStandard(beforeId, afterProduct);
@@ -968,7 +988,7 @@ public class ProductServiceImpl implements ProductService {
             }
         }
         goodsDao.save(saveList);
-        ProductPrivate productPrivate = productPrivateDao.findByPrId(product.getId());
+        ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
         if (productPrivate == null) {
             productPrivate = new ProductPrivate();
         }
@@ -1117,7 +1137,7 @@ public class ProductServiceImpl implements ProductService {
                         product.setKinden(matchResult.getKinden());
                         product.setKindid(matchResult.getKindid());
                         List<Product> products = productDao.findProductByPcmpcodeAndPbrandenAndEnUUAndStandard(product.getPcmpcode(), product.getPbranden(), product.getEnUU(), IntegerConstant.YES_SHORT);
-                        ProductPrivate productPrivate = productPrivateDao.findByPrId(product.getId());
+                        ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
                         if (productPrivate == null) {
                             productPrivate = new ProductPrivate();
                         }
@@ -1335,11 +1355,11 @@ public class ProductServiceImpl implements ProductService {
      * @return
      */
     @Override
-    public Product getProductById(Long id) {
-        if(id == null) {
+    public V_ProductPrivate getProductById(Long id) {
+        if (id == null) {
             return null;
-        }else {
-            return productDao.findOne(id);
+        } else {
+            return v_productPrivateDao.findOne(id);
         }
     }
 
@@ -1385,11 +1405,11 @@ public class ProductServiceImpl implements ProductService {
         String sql = null;
         Map<String, Object> map = new HashMap<>();
         if ((prIdLong != null) && (prIdLong.size() != 0)) {
-            sql = "select p.pr_id from products p left join product$private pp on pp.pr_id = p.pr_id where ifnull(pp.pr_batchcount, 0) = 0 and p.pr_sourceapp = 'ERP' and p.pr_reserve <> 0 and ifnull(pp.pr_b2cenabled, 0) = 1 and p.pr_id in (:ids) and p.pr_id not in (select DISTINCT go_productid from trade$goods where  go_productid is not null);";
+            sql = "select p.pr_id from products p left join product$private pp on pp.pr_id = p.pr_id where ifnull(pp.pr_batchcount, 0) = 0 and p.pr_sourceapp = 'ERP' and p.pr_reserve <> 0 and ifnull(pp.pr_b2cenabled, 0) = 1 and p.pr_id in (:ids) and p.pr_id not in (select DISTINCT go_productid from trade$goods where  go_productid is not null and go_status != 612);";
             map.put("ids", prIdLong);
         } else {
             // 暂时不会进入当前循环,速度比较低
-            sql = "select p.pr_id from products p left join product$private pp on pp.pr_id = p.pr_id where ifnull(pp.pr_batchcount, 0) = 0 and p.pr_sourceapp = 'ERP' and p.pr_reserve <> 0 and ifnull(pp.pr_b2cenabled,0) = 1 and if(p.pr_standard, 0) = (:standard) and p.pr_enuu = (:enuu) and p.pr_id not in (select DISTINCT go_productid from trade$goods where  go_productid is not null);";
+            sql = "select p.pr_id from products p left join product$private pp on pp.pr_id = p.pr_id where ifnull(pp.pr_batchcount, 0) = 0 and p.pr_sourceapp = 'ERP' and p.pr_reserve <> 0 and ifnull(pp.pr_b2cenabled,0) = 1 and if(p.pr_standard, 0) = (:standard) and p.pr_enuu = (:enuu) and p.pr_id not in (select DISTINCT go_productid from trade$goods where  go_productid is not null and go_status != 612);";
             map.put("enuu", uu);
             map.put("standard", standard);
         }
@@ -1473,10 +1493,10 @@ public class ProductServiceImpl implements ProductService {
         g.setImg(product.getCmpImg());
         g.setUuid(product.getCmpUuId());
         g.setCode(product.getPcmpcode());
-        g.setBrandNameCn(product.getPbrand());
+        g.setBrandNameCn(product.getPbrand() == null ? product.getPbranden() :  product.getPbrand());
         g.setBrandid(product.getPbrandid());
         g.setBranduuid(product.getPbranduuid());
-        g.setBrandNameEn(product.getPbranden());
+        g.setBrandNameEn(product.getPbranden() ==  null ? product.getPbrand() : product.getPbranden());
         g.setKindNameCn(product.getKind());
         g.setKindUuid(product.getKindid());
         g.setCurrencyName(currency);
@@ -1495,6 +1515,9 @@ public class ProductServiceImpl implements ProductService {
         g.setBreakUp(Boolean.FALSE);
         g.setReserve(product.getErpReserve());
         String packaging = (detail == null || detail.getPackaging() == null) ? product.getPackaging(): detail.getPackaging();
+        if (packaging == null) {
+            packaging = StringConstant.DEFAULTPACKAGING;
+        }
         g.setPackaging(packaging);
 
         String produceDate = (detail == null || detail.getProduceDate() == null) ? product.getProduceDate() : detail.getProduceDate();

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

@@ -29,6 +29,7 @@ import com.uas.platform.b2c.prod.store.model.StoreIn;
 import com.uas.platform.b2c.prod.store.model.StoreStatus;
 import com.uas.platform.b2c.prod.store.service.StoreInService;
 import com.uas.platform.b2c.trade.order.StringConstant.Currency;
+import com.uas.platform.b2c.trade.presale.model.Collection;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.persistence.criteria.CriterionExpression;
@@ -349,6 +350,11 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	 */
 	private void setProductDefaultInfo(ReleaseProductByBatch aProduct, String batch, String currency, StoreIn storeIn) {
 		// 设置初始状态
+		aProduct.setMinBuyQtyStr("");
+		aProduct.setProductDate("");
+		aProduct.setMinPackageStr("");
+		aProduct.setSelfMaxDeliveryStr("");
+		aProduct.setSelfMinDeliveryStr("");
 		aProduct.setReleaseCode(ReleaseStatus.success.value());
 		aProduct.setReleaseStatus(ReleaseStatus.success.getPhrase());
 		aProduct.setRelbatchid(batch);
@@ -1042,28 +1048,26 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 
 		List<ReleaseProductByBatch> releaseProductByBatchList =
 				releaseProductByBatchDao.findByRelbatchid(batch);
+		List<Long> productIds = null;
+		List<ProductPrivate> productPrivateList = null;
 		if (!CollectionUtils.isEmpty(releaseProductByBatchList)) {
 			List<com.uas.ps.entity.Product> products = convertProduct(releaseProductByBatchList,false);
 			// TODO 什么接口
 			String result = restTemplate.postForEntity(productServiceIp + "/product/update", products, String.class).getBody();
-			List<Long> productIds = JSON.parseArray(result, Long.class);
-			// 默认为b2c Enable开启
+			productIds = JSON.parseArray(result, Long.class);
+			Set<Long> idSet = new HashSet<>(productIds);
 			List<ProductPrivate> productPrivates = new ArrayList<>();
-			for (Long prId : productIds) {
-				ProductPrivate productPrivate = productPrivateDao.findByPrId(prId);
+			for (Long prId : idSet) {
+				ProductPrivate productPrivate = findByPrId(prId);
 				if (null == productPrivate) {
 					productPrivate = new ProductPrivate();
 					productPrivate.setPrId(prId);
 				}
 				productPrivate.setB2cEnabled(IntegerConstant.YES_SHORT);
-				// 统计现在有多少在售信息
-                int batchCount = goodsDao.findCountByProductid(prId);
-                productPrivate.setBatchCount(batchCount);
-                productPrivates.add(productPrivate);
+				productPrivates.add(productPrivate);
 			}
-			productPrivateDao.save(productPrivates);
+			productPrivateList = productPrivateDao.save(productPrivates);
 		}
-
 		Enterprise enterprise = SystemSession.getUser().getEnterprise();
 		final Object[] obj = new Object[]{enterprise.getUu(), enterprise.getEnName(), batch};
 		String sql = "/*#mycat:db_type=master*/ set @enuu = %s; set @enName = '%s'; set @batch = '%s'; call RELEASE_TO_GOODS_V2(@enuu, @enName, @batch, @out); select @out";
@@ -1082,6 +1086,14 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 			}
 		});
 
+		if (null != productIds) {
+			for (ProductPrivate productPrivate : productPrivateList) {
+				// 统计现在有多少在售信息
+				int batchCount = goodsDao.findCountByProductid(productPrivate.getPrId());
+				productPrivate.setBatchCount(batchCount);
+			}
+			productPrivateDao.save(productPrivateList);
+		}
 
 //		Enterprise enterprise = SystemSession.getUser().getEnterprise();
 //		final Object[] obj = new Object[]{enterprise.getUu(), enterprise.getEnName(), batch};
@@ -1124,8 +1136,8 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 		}
 		List<com.uas.ps.entity.Product> products = new ArrayList<>();
 		for (ReleaseProductByBatch releaseProductByBatch : releaseProductByBatchList) {
-		    if (releaseProductByBatch.getReleaseCode().equals(ReleaseStatus.failure) ||
-                    releaseProductByBatch.getReleaseCode().equals(ReleaseStatus.success)) {
+		    if (releaseProductByBatch.getReleaseCode().equals(ReleaseStatus.failure.value()) ||
+                    releaseProductByBatch.getReleaseCode().equals(ReleaseStatus.success.value())) {
                 com.uas.ps.entity.Product product = new com.uas.ps.entity.Product();
                 // releaseProductByBatch.getCode(); 在公有库生成
                 product.setMinPack(releaseProductByBatch.getMinPackage());
@@ -1167,8 +1179,9 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
             String res  = restTemplate.postForEntity(productServiceIp + "/product/assign/batch?userUU=" + SystemSession.getUser().getUserUU(), productIds, String.class).getBody();
             // 默认为b2c Enable开启
             List<ProductPrivate> productPrivates = new ArrayList<>();
-            for (Long prId : productIds) {
-                ProductPrivate productPrivate = productPrivateDao.findByPrId(prId);
+			Set<Long> idSet = new HashSet<>(productIds);
+            for (Long prId : idSet) {
+                ProductPrivate productPrivate = findByPrId(prId);
                 if (null == productPrivate) {
                     productPrivate = new ProductPrivate();
 					productPrivate.setPrId(prId);
@@ -1202,4 +1215,15 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 //		});
 		return null;
 	}
+
+	@Override
+	public ProductPrivate findByPrId(Long prId) {
+		List<ProductPrivate> productPrivates = productPrivateDao.findByPrId(prId);
+		if (!CollectionUtils.isEmpty(productPrivates)) {
+			ProductPrivate productPrivate = productPrivates.get(0);
+			return productPrivate;
+		} else {
+			return null;
+		}
+	}
 }

+ 3 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/util/GoodsUtil.java

@@ -104,6 +104,9 @@ public class GoodsUtil {
 	 * @return
 	 */
 	public static Boolean compareWithQtyPrice(List<GoodsQtyPrice> qtyPriceList, List<GoodsQtyPrice> targetList, String currency) {
+		if (CollectionUtils.isEmpty(qtyPriceList) || CollectionUtils.isEmpty(targetList)) {
+			return false;
+		}
 		if (qtyPriceList.size() != targetList.size()) {
 			return false;
 		}

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


+ 19 - 12
src/main/webapp/resources/js/usercenter/controllers/forstore/account_manager_ctrl.js

@@ -810,7 +810,7 @@ define(['app/app'], function (app) {
             });
           };
           //如果之前未绑定
-          if($scope.userInfo.userEmail==null?true:false){
+          if($scope.userInfo.userEmail==null ? true:false){
             $scope.checkSuccess = true;
           }
 
@@ -825,7 +825,6 @@ define(['app/app'], function (app) {
                     newUserEmail)) {
               $scope.checkSuccess1 = false;
               $scope.checkFailed1 = true;
-              $scope.sendSuccess = false;
               $scope.checkFailed1_1 = false;
               return false;
             }
@@ -833,25 +832,29 @@ define(['app/app'], function (app) {
               if (data.data == "true") {//邮箱可用
                 $scope.checkSuccess1 = true;
                 $scope.checkFailed1 = false;
-                $scope.sendSuccess = true;
                 $scope.checkFailed1_1 = false;
               } else {//邮箱不可用
                 $scope.checkSuccess1 = false;
                 $scope.checkFailed1 = false;
-                $scope.sendSuccess = false;
                 $scope.checkFailed1_1 = true;
               }
             }, function () {
               $scope.checkSuccess1 = false;
               $scope.checkFailed1 = true;
-              $scope.sendSuccess = false;
               $scope.checkFailed1_1 = false;
             });
           };
 
           $scope.codeSuccess = false;
+          $scope.sendSuccess = true;
           //发送验证码
           $scope.sendCheckCode = function (newUserEmail) {
+            if (!$scope.checkSuccess1 || ($scope.userInfo.userEmail!=null && !$scope.checkSuccess)) {
+                if ($scope.userInfo.userEmail!=null && !$scope.checkSuccess) {
+                    $scope.checkFailed = true;
+                }
+              return;
+						}
             $scope.sendSuccess = false;
             User.sendCheckCode({newUserEmail: newUserEmail}, function () {
               $scope.codeSuccess = true;
@@ -872,6 +875,7 @@ define(['app/app'], function (app) {
                   }, 1000, 60);
             }, function (response) {
               toaster.pop('error', '错误', response.data);
+              $scope.sendSuccess = true;
             });
           };
 
@@ -938,7 +942,6 @@ define(['app/app'], function (app) {
               $scope.validSuccess = false;
               $scope.checkSuccess1 = false;
               $scope.checkFailed1 = false;
-              $scope.sendSuccess = false;
               window.location.href = "user#/accountManager/sec";
               window.location.reload();
               $modalInstance.close();
@@ -983,7 +986,6 @@ define(['app/app'], function (app) {
           };
 
           //新手机号是否可用
-          $scope.sendSuccess = false;
           $scope.checkFailed1 = false;
           $scope.checkFailed1_1 = false;
           $scope.checkSuccess1 = false;
@@ -991,7 +993,6 @@ define(['app/app'], function (app) {
             if (newUserTel == null || !/^[0-9]{8,11}$/.test(newUserTel)) {
               $scope.checkFailed1 = true;
               $scope.checkSuccess1 = false;
-              $scope.sendSuccess = false;
               $scope.checkFailed1_1 = false;
               return false;
             }
@@ -1002,13 +1003,11 @@ define(['app/app'], function (app) {
               if (data.data == "true") {//手机可用
                 $scope.checkSuccess1 = true;
                 $scope.checkFailed1 = false;
-                $scope.sendSuccess = true;
                 $scope.checkFailed1_1 = false;
               } else {//手机不可用
                 $scope.checkFailed1_1 = true;
                 $scope.checking1 = false;
                 $scope.checkSuccess1 = false;
-                $scope.sendSuccess = false;
               }
             }, function () {
               $scope.checkFailed1 = true;
@@ -1018,10 +1017,17 @@ define(['app/app'], function (app) {
             });
           };
 
-          //发送验证码
+          // 发送验证码
           $scope.codeSuccess = false;
-          //发送验证码
+          $scope.sendSuccess = true;
+          // 发送验证码
           $scope.sendTelCheckCode = function (newUserTel) {
+              if (!$scope.checkSuccess1 || ($scope.userInfo.userTel!=null && !$scope.checkSuccess)) {
+                  if ($scope.userInfo.userTel!=null && !$scope.checkSuccess) {
+                      $scope.checkFailed = true;
+                  }
+                  return;
+              }
             $scope.sendSuccess = false;
             User.sendTelCheckCode({newUserTel: newUserTel}, function () {
               $scope.codeSuccess = true;
@@ -1042,6 +1048,7 @@ define(['app/app'], function (app) {
                   }, 1000, 60);
             }, function (response) {
               toaster.pop('error', '错误', response.data);
+              $scope.sendSuccess = true;
             });
           };
 

+ 17 - 10
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_account_management_ctrl.js

@@ -760,11 +760,10 @@ define(['app/app'], function(app) {
           $scope.emailEnable = function (newUserEmail) {
             //邮箱不可用
             if ((newUserEmail == null || newUserEmail.length > 30)
-                || !/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(
+                || !(/^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g).test(
                     newUserEmail)) {
               $scope.checkSuccess1 = false;
               $scope.checkFailed1 = true;
-              $scope.sendSuccess = false;
               $scope.checkFailed1_1 = false;
               return false;
             }
@@ -772,25 +771,29 @@ define(['app/app'], function(app) {
               if (data.data == "true") {//邮箱可用
                 $scope.checkSuccess1 = true;
                 $scope.checkFailed1 = false;
-                $scope.sendSuccess = true;
                 $scope.checkFailed1_1 = false;
               } else {//邮箱不可用
                 $scope.checkSuccess1 = false;
                 $scope.checkFailed1 = false;
-                $scope.sendSuccess = false;
                 $scope.checkFailed1_1 = true;
               }
             }, function () {
               $scope.checkSuccess1 = false;
               $scope.checkFailed1 = true;
-              $scope.sendSuccess = false;
               $scope.checkFailed1_1 = false;
             });
           };
 
           $scope.codeSuccess = false;
+          $scope.sendSuccess = true;
           //发送验证码
           $scope.sendCheckCode = function (newUserEmail) {
+            if (!$scope.checkSuccess1 || ($scope.userInfo.userEmail!=null && !$scope.checkSuccess)) {
+                if ($scope.userInfo.userEmail!=null && !$scope.checkSuccess) {
+                    $scope.checkFailed = true;
+                }
+              return;
+            }
             $scope.sendSuccess = false;
             User.sendCheckCode({newUserEmail: newUserEmail}, function () {
               $scope.codeSuccess = true;
@@ -811,6 +814,7 @@ define(['app/app'], function(app) {
                   }, 1000, 60);
             }, function (response) {
               toaster.pop('error', '错误', response.data);
+              $scope.sendSuccess = true;
             });
           };
 
@@ -877,7 +881,6 @@ define(['app/app'], function(app) {
               $scope.validSuccess = false;
               $scope.checkSuccess1 = false;
               $scope.checkFailed1 = false;
-              $scope.sendSuccess = false;
               window.location.href = "vendor#/account/management/sec";
               window.location.reload();
               $modalInstance.close();
@@ -922,7 +925,6 @@ define(['app/app'], function(app) {
           };
 
           //新手机号是否可用
-          $scope.sendSuccess = false;
           $scope.checkFailed1 = false;
           $scope.checkFailed1_1 = false;
           $scope.checkSuccess1 = false;
@@ -930,7 +932,6 @@ define(['app/app'], function(app) {
             if (newUserTel == null || !/^[0-9]{8,11}$/.test(newUserTel)) {
               $scope.checkFailed1 = true;
               $scope.checkSuccess1 = false;
-              $scope.sendSuccess = false;
               $scope.checkFailed1_1 = false;
               return false;
             }
@@ -941,13 +942,11 @@ define(['app/app'], function(app) {
               if (data.data == "true") {//手机可用
                 $scope.checkSuccess1 = true;
                 $scope.checkFailed1 = false;
-                $scope.sendSuccess = true;
                 $scope.checkFailed1_1 = false;
               } else {//手机不可用
                 $scope.checkFailed1_1 = true;
                 $scope.checking1 = false;
                 $scope.checkSuccess1 = false;
-                $scope.sendSuccess = false;
               }
             }, function () {
               $scope.checkFailed1 = true;
@@ -959,8 +958,15 @@ define(['app/app'], function(app) {
 
           //发送验证码
           $scope.codeSuccess = false;
+          $scope.sendSuccess = true;
           //发送验证码
           $scope.sendTelCheckCode = function (newUserTel) {
+            if (!$scope.checkSuccess1 || ($scope.userInfo.userTel!=null && !$scope.checkSuccess)) {
+                if ($scope.userInfo.userTel!=null && !$scope.checkSuccess) {
+                    $scope.checkFailed = true;
+                }
+                return;
+            }
             $scope.sendSuccess = false;
             User.sendTelCheckCode({newUserTel: newUserTel}, function () {
               $scope.codeSuccess = true;
@@ -981,6 +987,7 @@ define(['app/app'], function(app) {
                   }, 1000, 60);
             }, function (response) {
               toaster.pop('error', '错误', response.data);
+              $scope.sendSuccess = true;
             });
           };
 

+ 94 - 50
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialCtrl.js

@@ -1,6 +1,6 @@
 define([ 'app/app', 'jquery-uploadify' ], function(app) {
 	'use strict';
-	app.register.controller('vendor_materialCtrl', ['$scope', '$rootScope', 'Material', 'toaster', 'ComponentActive', 'Enterprise', '$q', 'NumberService', '$location', '$stateParams', 'Search', '$modal', 'ComponentActiveAPI', 'BrandSubmit', 'BrandActiveAPI', 'DistributionRule', 'prodRepositoryService', 'AuthenticationService', 'StoreInfo', 'ProductServiceQuery', 'StoreCms', 'ByteCountService', 'Goods', 'UASBatchPutOnPropertyServices', function ($scope, $rootScope, Material, toaster, ComponentActive, Enterprise, $q, NumberService, $location, $stateParams, Search, $modal, ComponentActiveAPI, BrandSubmit, BrandActiveAPI, DistributionRule, prodRepositoryService, AuthenticationService, StoreInfo, ProductServiceQuery, StoreCms, ByteCountService, Goods, UASBatchPutOnPropertyServices) {
+	app.register.controller('vendor_materialCtrl', ['$scope', '$rootScope', 'Material', 'toaster', 'ComponentActive', 'Enterprise', '$q', 'NumberService', '$location', '$stateParams', 'Search', '$modal', 'ComponentActiveAPI', 'BrandSubmit', 'BrandActiveAPI', 'DistributionRule', 'prodRepositoryService', 'AuthenticationService', 'StoreInfo', 'ProductServiceQuery', 'StoreCms', 'ByteCountService', 'Goods', 'UASBatchPutOnPropertyServices', '$filter', function ($scope, $rootScope, Material, toaster, ComponentActive, Enterprise, $q, NumberService, $location, $stateParams, Search, $modal, ComponentActiveAPI, BrandSubmit, BrandActiveAPI, DistributionRule, prodRepositoryService, AuthenticationService, StoreInfo, ProductServiceQuery, StoreCms, ByteCountService, Goods, UASBatchPutOnPropertyServices, $filter) {
 		$rootScope.active = 'vendor_material';
 		document.title = '卖家产品库-优软商城';
 		$scope.tab = 'material';
@@ -153,7 +153,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
             //获取店铺的信息
             StoreInfo.getStoreInfoByEnuu({enUU : $rootScope.userInfo.enterprise.uu}, function(data) {
                 $scope.storeInfo = data;
-				if (!$scope.storeInfo || $scope.storeInfo.status != 'OPENED' || $scope.storeInfo.storeName.indexOf('优软测试二') > 0 || $scope.storeInfo.storeName.indexOf('优软商城') > 0) {
+				if (!$scope.storeInfo || $scope.storeInfo.status != 'OPENED' || $scope.storeInfo.storeName.indexOf('优软测试二') > -1 || $scope.storeInfo.storeName.indexOf('优软商城') > -1) {
 					$scope.$$nonProduct.canSelfSale = false;
 				} else {
 					$scope.$$nonProduct.canSelfSale = true;
@@ -210,7 +210,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
          * 获取批量上架的配置信息
          */
         UASBatchPutOnPropertyServices.get(null, function (data) {
-            if (data) {
+            if (data && typeof data.fluctuateRate != 'undefined') {
                 $scope.uasBatchPutOnProperty = data;
                 $scope.uasBatchPutOnProperty.editFluctuateRate = NumberService.mul($scope.uasBatchPutOnProperty.fluctuateRate, 100) || 100;
                 $scope.uasBatchPutOnProperty.editMaxDelivery = $scope.uasBatchPutOnProperty.maxDelivery || 1;
@@ -474,12 +474,16 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 					}
 					for(var i = 0; i < $scope.currenctMaterial.length; i++) {
 						if($scope.currenctMaterial[i].id == response.id) {
-							$scope.currenctMaterial.splice(i, 1, response);
-							if(response.batchCount > 0) {
-								$scope.expandGoods($scope.currenctMaterial[i]);
-							}else {
-								$scope.currenctMaterial[i].exPandOper = false;
-							}
+                            $scope.currenctMaterial[i].batchCount--;
+                            if ($scope.currenctMaterial[i].batchCount < 1) {
+                                $scope.currenctMaterial[i].exPandOper = false;
+                            }
+                            for(var j = 0; j < $scope.currenctMaterial[i].goodsArr.length; j++) {
+                                if ($scope.choosedIds[0] == $scope.currenctMaterial[i].goodsArr[j].id) {
+                                    $scope.currenctMaterial[i].goodsArr.splice(j, 1);
+                                }
+                            }
+							// $scope.currenctMaterial.splice(i, 1, response);
 						}
 					}
 				}
@@ -500,6 +504,21 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 					}
 					material.exPandOper = false;
 					material.addGoodsOper = false;
+				});
+				$scope.goods.editReserve = material.erpReserve;
+				if ('ERP' == material.sourceApp) {
+					angular.forEach(material.goodsArr, function (goods) {
+						if (goods.status != 612) {
+							$scope.goods.editReserve = $scope.goods.editReserve - goods.reserve;
+						}
+					});
+					$scope.goods.editReserve = $scope.goods.editReserve < 0 ? 0 : $scope.goods.editReserve;
+					$scope.goods.maxReserve = $scope.goods.editReserve;
+					$scope.goods.sourceApp = 'ERP';
+				}
+
+				angular.forEach(material.goodsArr, function (goods) {
+
 				});
 				material.exPandOper = true;
 				material.selected = true;
@@ -696,6 +715,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 
 		$scope.deleteIdArray = [];
 		$scope.ensureDeleteRepeat = function () {
+			$scope.deleteIdArray = [];
 			for (var i = 0; i < $scope.repeatList.length; i++) {
 				if (!$scope.repeatList[i].selected) {
 					toaster.pop("info", "请选择要保留的产品信息");
@@ -1390,12 +1410,17 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
                         }
                         for(var i = 0; i < $scope.currenctMaterial.length; i++) {
                             if($scope.currenctMaterial[i].id == response.id) {
-                                $scope.currenctMaterial.splice(i, 1, response);
-                                if(response.batchCount > 0) {
-                                    $scope.expandGoods($scope.currenctMaterial[i]);
-                                }else {
-                                    $scope.currenctMaterial[i].exPandOper = false;
-                                }
+								if (!$scope.currenctMaterial[i].batchCount) {
+									$scope.currenctMaterial[i].batchCount = 1;
+								} else {
+									$scope.currenctMaterial[i].batchCount++;
+								}
+                                // if(response.batchCount > 0) {
+                                //     $scope.expandGoods($scope.currenctMaterial[i]);
+                                // }else {
+                                //     $scope.currenctMaterial[i].exPandOper = false;
+                                // }
+								$scope.expandGoods($scope.currenctMaterial[i]);
                             }
                         }
                     }, function (response) {
@@ -1699,22 +1724,30 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 		 */
 		var getProductDetail = function (product) {
 			Material.getProductDetail({id : product.id}, function (data) {
-				// $scope.goods.erpReserve = typeof data.reserve == 'undefined' ? 0 : data.reserve;
-				// $scope.goods.b2cReserve = typeof data.b2cReserve == 'undefined' ? 0 : data.b2cReserve;
-				// $scope.goods.packaging = data.packaging;
-				// $scope.goods.produceDate = data.produceDate;
-				// $scope.goods.minPackQty = data.minPackQty;
-				// $scope.goods.breakUp = data.breakUp;
-				// $scope.goods.minBuyQty = data.minBuyQty;
-				// $scope.goods.minDelivery = data.minDelivery;
-				// $scope.goods.maxDelivery = data.maxDelivery;
-				// $scope.goods.prices = [];
-				// product.selected = true;
-				// if ('MAINLAND' == $scope.store.enType)
-				// 	$scope.goods.prices.push({start : $scope.minReserve, end : $scope.maxReserve, rMBPrice: data.price});
-				// if ('HK' == $scope.store.enType)
-				// 	$scope.goods.prices.push({start : $scope.minReserve, end : $scope.maxReserve, uSDPrice: data.price});
-
+				$scope.goods.erpReserve = typeof data.reserve == 'undefined' ? 0 : data.reserve;
+				$scope.goods.editPackaging = (data && data.packaging) || product.packaging || '无';
+				$scope.goods.editProduceDate = (data && data.produceDate) || product.produceDate;
+				$scope.goods.editMinPackQty = (data && data.minPackQty) || product.minPackQty || $scope.goods.minBuyQty || 1;
+				$scope.goods.editMinBuyQty = (data && data.minBuyQty) || $scope.goods.minPackQty;
+				$scope.goods.editMinBuyQty = $scope.goods.editMinBuyQty - ($scope.goods.editMinBuyQty % $scope.goods.editMinPackQty);
+				if ($scope.goods.editMinBuyQty < $scope.goods.editMinPackQty) {
+					$scope.goods.editMinBuyQty = $scope.goods.editMinPackQty;
+				}
+				$scope.goods.editMinDelivery = (data && data.minDelivery) || $scope.uasBatchPutOnProperty.minDelivery;
+				$scope.goods.editMaxDelivery = (data && data.maxDelivery) || $scope.uasBatchPutOnProperty.maxDelivery;
+				product.selected = true;
+				product.averMonthSalePrice = (data && data.price) ? data.price : 0;
+				var goodQtyPrice = {start: $scope.goods.editMinBuyQty, end: $scope.maxReserve};
+				var price = (((data && data.price) ? data.price : 0) *
+				($scope.uasBatchPutOnProperty.fluctuateRate ? $scope.uasBatchPutOnProperty.fluctuateRate : 1));
+				if ('MAINLAND' == $scope.store.enType) {
+					goodQtyPrice.rMBPrice = $filter('formateNumber')(price, 6);
+				}
+				if ('HK' == $scope.store.enType) {
+					goodQtyPrice.uSDPrice = $filter('formateNumber')(price, 6);
+				}
+				$scope.goods.editPrices = [];
+				$scope.goods.editPrices.push(goodQtyPrice);
 			});
 		}
 
@@ -1766,25 +1799,28 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 			});
 			material.addGoodsOper = true;
 			material.exPandOper = true;
+			$scope.goods = {};
+			$scope.goods.editBreakUp = false;
+			// 先保存产品id,方便去获取tag是否重复
+			$scope.goods.productid = material.id;
+			$scope.goods.prodNum = material.prodNum;
+			$scope.goods.editPrices = [];
+			if ($scope.store.enType === 'HK') {
+				$scope.goods.currencyName = 'USD';
+			} else {
+				$scope.goods.currencyName = 'RMB';
+			}
+			$scope.goods.editSelfSale = $scope.$$nonProduct.canSelfSale ? 1 : 2;
 			$scope.expandGoods(material, material.addGoodsOper);
-			// if ('ERP' == material.sourceApp) {// 如果是erp上传物料获取物料交易信息
-			// 	getProductDetail(material);
-			// } else {
-				$scope.goods = { editBreakUp: false, editSelfSale: 2};
-				if($scope.store.enType === 'HK') {
-					$scope.goods.currencyName = 'USD';
-				}else {
-					$scope.goods.currencyName = 'RMB';
-				}
-				// 先保存产品id,方便去获取tag是否重复
-				$scope.goods.productid = material.id;
-				$scope.goods.prodNum = material.prodNum;
-				$scope.goods.editPrices = [];
-				$scope.goods.editSelfSale = $scope.$$nonProduct.canSelfSale ? 1 : 2;
-				$scope.goods.editPrices.push({start : $scope.minReserve, end : $scope.maxReserve});
+			if ('ERP' == material.sourceApp) {
+				// 如果是erp上传物料获取物料交易信息
+				getProductDetail(material);
+			} else {
+				$scope.goods.editPrices.push({start: $scope.minReserve, end: $scope.maxReserve});
 				// $scope.goods.isSelfSupport = $scope.store.status == 'OPENED' ? 1 : 0;
 				material.selected = true;
-			// }
+				// }
+			}
 		}
 
 		/**
@@ -1918,6 +1954,13 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 				}
                 return false;
             }
+            if (goods.sourceApp == 'ERP') {
+				if (Number(goods.maxReserve) < goods.editReserve) {
+					goods.editReserve = goods.maxReserve;
+					toaster.pop('warning', '提示', '不能超过可用库存');
+				}
+				return false;
+			}
             goods.editReservePre = goods.editReserve;
             goods.editReserveInvalid = false;
 			if (!goods.breakUp) {
@@ -2053,6 +2096,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 			var idStr = ($scope.choosedIds != null) ? $scope.choosedIds.join(',') : null;
 			var std = $scope.standard_tab == 'standard' ? 1 : 0;
 			Material.batchPutOn({'standard' : std, ids : idStr}, null, function (data) {
+				loadData();
 				toaster.pop('success', '成功', data.message);
 			}, function (response) {
 				toaster.pop('error', '失败', response.data);
@@ -2120,14 +2164,14 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 				toaster.pop('warning', '提示', '单价必须是大于0的数字');
 				return;
 			}
-			if(price.indexOf('.') > -1) {
-				var arr = price.split(".");
+			if(price.toString().indexOf('.') > -1) {
+				var arr = price.toString().split(".");
 				if(arr[0].length > 4 || arr[1].length > 6) {
 					prices[index].priceInvalid = true;
 					return ;
 				}
 			}else {
-				if(price.toString().length > 4) {
+				if(price.toString().toString().length > 4) {
 					prices[index].priceInvalid = true;
 					return ;
 				}

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

@@ -400,7 +400,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 			var modalInstance = $modal.open({
 				animation: true,
 				templateUrl: 'static/view/common/modal/delete_modal.html',
-				controller: 'vendor_delete_ctrl',
+				controller: 'vendor_delete_person_ctrl',
 				resolve: {
 					ids: function() {
 						return $scope.choosedIds;
@@ -2561,7 +2561,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 
 
 	//批量删除信息
-	app.register.controller('vendor_delete_ctrl', ['$scope', 'ids', 'Goods', 'Material', 'toaster', 'deleteMaterial', 'deleteGoods', 'selectAll', 'ProductServiceQuery', 'standard_tab', '$modalInstance', 'message', function ($scope, ids, Goods, Material, toaster, deleteMaterial, deleteGoods, selectAll, ProductServiceQuery, standard_tab, $modalInstance, message) {
+	app.register.controller('vendor_delete_person_ctrl', ['$scope', 'ids', 'Goods', 'Material', 'toaster', 'deleteMaterial', 'deleteGoods', 'selectAll', 'ProductServiceQuery', 'standard_tab', '$modalInstance', 'message', function ($scope, ids, Goods, Material, toaster, deleteMaterial, deleteGoods, selectAll, ProductServiceQuery, standard_tab, $modalInstance, message) {
 		$scope.deleteModal = true;
         $scope.message = message;
 
@@ -2572,7 +2572,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
             if(deleteMaterial) {
                 if(selectAll) {
                     if(standard_tab == 'standard') {
-                        Material.deleteStandardAll(null, null, function (data) {
+                        Material.deleteStandardAll({isPerson: 1}, function (data) {
                             if(data.code != 1) {
                                 toaster.pop('error','错误' ,data.message);
                             }else {
@@ -2584,7 +2584,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
                             toaster.pop('error', '错误', response.data);
                         });
                     }else {
-                        Material.deleteUnstandardAll(null, null, function (data) {
+                        Material.deleteUnstandardAll({isPerson: 1}, function (data) {
                             if(data.code != 1) {
                                 toaster.pop('error', '错误', data.message);
                             }else {

+ 1 - 1
src/main/webapp/resources/view/common/modal/delivery_rule_modal.html

@@ -12,7 +12,7 @@
         margin: -145px 0 0 -77px;
     }
     .com-del-box{
-        height: 155px;
+        height: 161px;
         width: 290px;
     }
     .com-del-box .title {

+ 2 - 2
src/main/webapp/resources/view/usercenter/forstore/account_manager.html

@@ -299,7 +299,7 @@
 					<a ng-switch-when="1">审核通过</a>
 					<a ng-switch-when="2">待审核</a>
 			</li>
-			<li>
+			<!--<li>
 				<span>
 					<h5 ng-show="userInfo.havePayPwd"><img class="ok-icon" src="static/img/user/images/ok-account.png"/></h5>
 					<h5 ng-hide="userInfo.havePayPwd"><img src="static/img/user/images/safe.png"/></h5>
@@ -308,7 +308,7 @@
 				</span>
 				<a ng-hide="userInfo.havePayPwd" ng-click="updateUserPay()" class="mall-btn-default">立即设置</a>
 				<a ng-show="userInfo.havePayPwd" ng-click="updateUserPay()">修改</a>
-			</li>
+			</li>-->
 		</ul>
 	</div>
 

+ 8 - 8
src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_erp.html

@@ -1729,7 +1729,7 @@
 													<div class="labelling">
 														<!--<em>*</em>-->
 														自定义标签 : <input maxlength="20" type="text" ng-model="goods.editTag" ng-blur="blurTag(goods)" ng-change="changeTag(goods)" placeholder="请设置产品标签"></div>
-													<span>近一个月的销售平均价:10</span>
+													<span>近一个月的销售平均价:<em ng-bind="material.averMonthSalePrice |  formateNumber : 6"></em></span>
 												</td>
 											</tr>
 											<tr class="edit-content edits" >
@@ -1750,7 +1750,7 @@
 																								   ng-class="{'error' : goods.editPackagingInvalid}" ng-blur="editPackaging(goods, true)" ng-change="changePackaging(goods)"/>
 															</div>
 															<div class="input-list">
-																<span class="tit">生产日期:</span><input type="text" class="form-control" name="produceDate" ng-maxlength="11" title="生产日期" maxlength="11" placeholder="生产日期" style="width: 96px;" ng-model="goods.editProduceDate" ng-init="goods.editProduceDate = material.productDetail.produceDate"
+																<span class="tit">生产日期:</span><input type="text" class="form-control" name="produceDate" ng-maxlength="11" title="生产日期" maxlength="11" placeholder="生产日期" style="width: 96px;" ng-model="goods.editProduceDate"
 																									 ng-class="{'error' : goods.editProduceDateInvalid}"
 																									 ng-change="editProduceDateFa(goods, false)"/>
 															</div>
@@ -1768,10 +1768,10 @@
 															</div>
 															<div class="input-list">
 																<span class="tit">起订量:</span><input type="number" class="wid70 form-control" name="minBuyQty" title="起拍"  placeholder="数量"
-																									maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" ng-model="goods.editMinBuyQty" ng-init="goods.editMinBuyQty = material.productDetail.minBuyQty;updateStartNumber(goods);" ng-blur="setPriceMinAmount(goods, false)" ng-change="updateStartNumber(goods)" ng-class="{'error' : goods.editMinBuyQtyInValid}"/>
+																									maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" ng-model="goods.editMinBuyQty" ng-blur="setPriceMinAmount(goods, false)" ng-change="updateStartNumber(goods)" ng-class="{'error' : goods.editMinBuyQtyInValid}"/>
 															</div>
 															<div class="input-list">
-																<span class="tit">包装数量:</span><input type="number" maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" class="wid70 form-control" name="minPackQty" title="包装数量" placeholder="数量" ng-model="goods.editMinPackQty" ng-init="goods.editMinPackQty= material.productDetail.minPackQty" ng-blur="setPriceMinPackAmount(goods)" ng-class="{'error' : goods.editMinPackQtyInValid}" style="width: 70px;"/>
+																<span class="tit">包装数量:</span><input type="number" maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" class="wid70 form-control" name="minPackQty" title="包装数量" placeholder="数量" ng-model="goods.editMinPackQty" ng-blur="setPriceMinPackAmount(goods)" ng-class="{'error' : goods.editMinPackQtyInValid}" style="width: 70px;"/>
 															</div>
 														</div>
 														<div class="content">
@@ -1798,7 +1798,7 @@
 															<p class="title height24">单价(¥)</p>
 															<div
 																	class="input-list" ng-repeat="price in goods.editPrices">
-																<input type="number" name="rmb" class="wid92 form-control"  placeholder="单价(¥)" ng-blur="changePrices(goods.editPrices, price.rMBPrice, $index)" ng-class="{'error' : price.priceInvalid}" ng-model="price.rMBPrice" ng-init="price.rMBPrice = material.productDetail.price" oninput="if(value.length>11)value=value.slice(0,11)" autocomplete="off" validata-price/>
+																<input type="number" name="rmb" class="wid92 form-control"  placeholder="单价(¥)" ng-blur="changePrices(goods.editPrices, price.rMBPrice, $index)" ng-class="{'error' : price.priceInvalid}" ng-model="price.rMBPrice" oninput="if(value.length>11)value=value.slice(0,11)" autocomplete="off" validata-price/>
 															</div>
 														</div>
 														<div class="content plusBtn">
@@ -1814,11 +1814,11 @@
 															<div class="input-list">
 																<p>
 											<span><input type="number" class="wid36 form-control" name="minDelivery" title="最小交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)"
-														 ng-model="goods.editMinDelivery" ng-init="goods.editMinDelivery = material.productDetail.minDelivery"
+														 ng-model="goods.editMinDelivery"
 														 ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, true, goods)"
 														 ng-class="{'error' : goods.editMinDeliveryinValid}"/></span>
 																	<span style="margin-left: 4px;">–</span>
-																	<span><input type="number" class="wid36 form-control" name="maxDelivery" title="最大交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)" ng-model="goods.editMaxDelivery" ng-init="goods.editMaxDelivery = material.productDetail.maxDelivery" ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, false, goods)"
+																	<span><input type="number" class="wid36 form-control" name="maxDelivery" title="最大交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)" ng-model="goods.editMaxDelivery" ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, false, goods)"
 																				 ng-class="{'error' : goods.editMaxDeliveryinValid}"/></span>
 																</p>
 															</div>
@@ -1916,7 +1916,7 @@
 													<div class="labelling">
 														<!--<em>*</em>-->
 														自定义标签 : <input maxlength="20" type="text" ng-model="goods.editTag" ng-blur="blurTag(goods)" ng-change="changeTag(goods)" placeholder="请设置产品标签"></div>
-													<span>近一个月的销售平均价:10</span>
+													<span>近一个月的销售平均价:<em ng-bind="material.averMonthSalePrice |  formateNumber : 6"></em></span>
 												</td>
 											</tr>
 											<tr class="edit-content edits" ng-if="goods.edit">

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

@@ -1742,7 +1742,7 @@
 													<div class="labelling">
 														<!--<em>*</em>-->
 														自定义标签 : <input maxlength="20" type="text" ng-model="goods.editTag" ng-blur="blurTag(goods)" ng-change="changeTag(goods)" placeholder="请设置产品标签"></div>
-													<span>近一个月的销售平均价:10</span>
+													<span>近一个月的销售平均价:<em ng-bind="material.averMonthSalePrice |  formateNumber : 6"></em></span>
 												</td>
 											</tr>
 											<tr class="edit-content edits" >
@@ -1763,7 +1763,7 @@
 																								   ng-class="{'error' : goods.editPackagingInvalid}" ng-blur="editPackaging(goods, true)" ng-change="changePackaging(goods)"/>
 															</div>
 															<div class="input-list">
-																<span class="tit">生产日期:</span><input type="text" class="form-control" name="produceDate" ng-maxlength="11" title="生产日期" maxlength="11" placeholder="生产日期" style="width: 96px;" ng-model="goods.editProduceDate" ng-init="material.productDetail.produceDate"
+																<span class="tit">生产日期:</span><input type="text" class="form-control" name="produceDate" ng-maxlength="11" title="生产日期" maxlength="11" placeholder="生产日期" style="width: 96px;" ng-model="goods.editProduceDate"
 																									 ng-class="{'error' : goods.editProduceDateInvalid}"
 																									 ng-change="editProduceDateFa(goods, false)"/>
 															</div>
@@ -1781,10 +1781,10 @@
 															</div>
 															<div class="input-list">
 																<span class="tit">起订量:</span><input type="number" class="wid70 form-control" name="minBuyQty" title="起拍"  placeholder="数量"
-																									maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" ng-model="goods.editMinBuyQty" ng-init="goods.editMinBuyQty = material.productDetail.minBuyQty;updateStartNumber(goods);" ng-blur="setPriceMinAmount(goods, false)" ng-change="updateStartNumber(goods)" ng-class="{'error' : goods.editMinBuyQtyInValid}"/>
+																									maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" ng-model="goods.editMinBuyQty" ng-blur="setPriceMinAmount(goods, false)" ng-change="updateStartNumber(goods)" ng-class="{'error' : goods.editMinBuyQtyInValid}"/>
 															</div>
 															<div class="input-list">
-																<span class="tit">包装数量:</span><input type="number" maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" class="wid70 form-control" name="minPackQty" title="包装数量" placeholder="数量" ng-model="goods.editMinPackQty" ng-init="goods.editMinPackQty = material.productDetail.minPackQty" ng-blur="setPriceMinPackAmount(goods)" ng-class="{'error' : goods.editMinPackQtyInValid}" style="width: 70px;"/>
+																<span class="tit">包装数量:</span><input type="number" maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" class="wid70 form-control" name="minPackQty" title="包装数量" placeholder="数量" ng-model="goods.editMinPackQty" ng-blur="setPriceMinPackAmount(goods)" ng-class="{'error' : goods.editMinPackQtyInValid}" style="width: 70px;"/>
 															</div>
 														</div>
 														<div class="content">
@@ -1811,7 +1811,7 @@
 															<p class="title height24">单价(¥)</p>
 															<div
 																	class="input-list" ng-repeat="price in goods.editPrices">
-																<input type="number" name="rmb" class="wid92 form-control"  placeholder="单价(¥)" ng-blur="changePrices(goods.editPrices, price.rMBPrice, $index)" ng-class="{'error' : price.priceInvalid}" ng-model="price.rMBPrice" ng-init="price.rMBPrice = material.productDetail.price" oninput="if(value.length>11)value=value.slice(0,11)" autocomplete="off" validata-price/>
+																<input type="number" name="rmb" class="wid92 form-control"  placeholder="单价(¥)" ng-blur="changePrices(goods.editPrices, price.rMBPrice, $index)" ng-class="{'error' : price.priceInvalid}" ng-model="price.rMBPrice" oninput="if(value.length>11)value=value.slice(0,11)" autocomplete="off" validata-price/>
 															</div>
 														</div>
 														<div class="content plusBtn">
@@ -1827,11 +1827,11 @@
 															<div class="input-list">
 																<p>
 											<span><input type="number" class="wid36 form-control" name="minDelivery" title="最小交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)"
-														 ng-model="goods.editMinDelivery" ng-init="goods.editMinDelivery = material.productDetail.minDelivery"
+														 ng-model="goods.editMinDelivery"
 														 ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, true, goods)"
 														 ng-class="{'error' : goods.editMinDeliveryinValid}"/></span>
 																	<span style="margin-left: 4px;">–</span>
-																	<span><input type="number" class="wid36 form-control" name="maxDelivery" title="最大交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)" ng-model="goods.editMaxDelivery" ng-init="goods.editMaxDelivery = material.productDetail.maxDelivery" ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, false, goods)"
+																	<span><input type="number" class="wid36 form-control" name="maxDelivery" title="最大交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)" ng-model="goods.editMaxDelivery" ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, false, goods)"
 																				 ng-class="{'error' : goods.editMaxDeliveryinValid}"/></span>
 																</p>
 															</div>
@@ -1929,7 +1929,7 @@
 													<div class="labelling">
 														<!--<em>*</em>-->
 														自定义标签 : <input maxlength="20" type="text" ng-model="goods.editTag" ng-blur="blurTag(goods)" ng-change="changeTag(goods)" placeholder="请设置产品标签"></div>
-													<span>近一个月的销售平均价:10</span>
+													<span>近一个月的销售平均价:<em ng-bind="material.averMonthSalePrice |  formateNumber : 6"></em></span>
 												</td>
 											</tr>
 											<tr class="edit-content edits" ng-if="goods.edit">

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

@@ -678,7 +678,7 @@
           <a ng-switch-when="1">审核通过</a>
           <a ng-switch-when="2">待审核</a>
         </li>
-        <li>
+       <!-- <li>
 				<span>
 					<h5 ng-show="userInfo.havePayPwd"><img class="ok-icon" src="static/img/user/images/ok-account.png"/></h5>
 					<h5 ng-hide="userInfo.havePayPwd"><img src="static/img/user/images/safe.png"/></h5>
@@ -687,7 +687,7 @@
 				</span>
           <a ng-hide="userInfo.havePayPwd" ng-click="updateUserPay()" class="mall-btn-default">立即设置</a>
           <a ng-show="userInfo.havePayPwd" ng-click="updateUserPay()">修改</a>
-        </li>
+        </li>-->
       </ul>
     </div>
     <!--权限管理-->

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

@@ -1707,7 +1707,7 @@
                                                     <div class="content margin10">
                                                         <!--<p class="title">自营 / 寄售</p>-->
                                                         <div class="input-list">
-                                                            <select ng-disabled="$$nonProduct.canSelfSale" name="selfSale" class="wid56 select-adder form-control" ng-model="goods.editSelfSale" ng-disabled="$$nonProduct.canSelfSale">
+                                                            <select ng-disabled="!$$nonProduct.canSelfSale" name="selfSale" class="wid56 select-adder form-control" ng-model="goods.editSelfSale">
                                                                 <option value="1">自营</option>
                                                                 <option value="2">寄售</option>
                                                             </select>
@@ -1900,7 +1900,7 @@
 													<div class="content margin10">
 														<!--<p class="title">自营 / 寄售</p>-->
 														<div class="input-list">
-															<select name="editSelfSale" ng-change="changeSaleMode(goods)" class="wid56 select-adder form-control" ng-model="goods.editSelfSale" ng-disabled="$$nonProduct.canSelfSale">
+															<select name="editSelfSale" ng-change="changeSaleMode(goods)" class="wid56 select-adder form-control" ng-model="goods.editSelfSale" ng-disabled="!$$nonProduct.canSelfSale">
 																<option value="1">自营</option>
 																<option value="2">寄售</option>
 															</select>

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

@@ -79,6 +79,11 @@
         text-decoration: none;
         height: 31px;
     }
+    .ng-table-pagination .page-a:hover {
+        border: 1px solid #5078cb !important;
+        background: #5078cb !important;
+        color: #fff !important;
+    }
 
     div.ng-table-pager div.page-go-block {
         float: right;

+ 6 - 4
src/main/webapp/resources/view/vendor/modal/updateUserEmail.html

@@ -32,12 +32,12 @@
         border-radius: 0;
     }
     .userEmail .modal-body .row.validate-code .col-md-8 .input-sm {
-        width: 162px;
+        width: 63%;
         display: inline-block;
     }
     .userEmail .modal-body .row.validate-code .col-md-8 .code-btn {
-        width: 94px;
-        height: 30px;
+        width: 37%;
+        height: 31px;
         text-align: center;
         line-height: 30px;
         vertical-align: middle;
@@ -50,6 +50,8 @@
         background: #5078cb;
         color: #fff;
         cursor: pointer;
+        float: right;
+        margin-top: 3px;
     }
     .userEmail .modal-body .row.validate-code .col-md-8 .code-btn[disabled] {
         cursor: not-allowed;
@@ -127,7 +129,7 @@
             <div class="col-md-8 col-sm-8 col">
                 <input ng-model="checkCode"
                        class="form-control input-sm" placeholder="请输入验证码" type="checkCode" ng-blur="validCheckCode(checkCode)">
-                <input ng-click="sendCheckCode(user.newUserEmail)" ng-disabled="!sendSuccess" ng-init="paracont='获取验证码'" class="code-btn" ng-model="paracont"/>
+                <input ng-click="sendCheckCode(user.newUserEmail)" readonly ng-disabled="!sendSuccess" ng-init="paracont='获取验证码'" class="code-btn" ng-model="paracont"/>
             </div>
             <div class="col">
                 <img ng-show="checkSuccess2" src="static/img/user/images/input-check-yes.png" alt="">

+ 8 - 5
src/main/webapp/resources/view/vendor/modal/updateUserTel.html

@@ -32,12 +32,12 @@
         border-radius: 0;
     }
     .userTel .modal-body .row.validate-code .col-md-8 .input-sm {
-        width: 162px;
+        width: 63%;
         display: inline-block;
     }
     .userTel .modal-body .row.validate-code .col-md-8 .code-btn {
-        width: 94px;
-        height: 30px;
+        width: 37%;
+        height: 31px;
         text-align: center;
         line-height: 30px;
         vertical-align: middle;
@@ -50,6 +50,8 @@
         background: #5078cb;
         color: #fff;
         cursor: pointer;
+        float: right;
+        margin-top: 3px;
     }
     .userTel .modal-body .row.validate-code .col-md-8 .code-btn[disabled] {
         cursor: not-allowed;
@@ -99,6 +101,7 @@
             <label class="col-md-3 col-sm-3 col text-right">原手机号:</label>
             <div class="col-md-8 col-sm-8 col"><input ng-model="user.userTel" class="form-control input-sm"
                                                       type="userTel"  ng-blur="checkUserTel(user.userTel)"
+                                                      placeholder="请输入原手机号"
                                                       ></div>
             <div class="col">
                 <img ng-show="checkSuccess" src="static/img/user/images/input-check-yes.png" alt="">
@@ -110,7 +113,7 @@
             <label class="col-md-3 col-sm-3 col text-right">新手机号:</label>
             <div class="col-md-8 col-sm-8 col">
                 <input ng-model="user.newUserTel"
-                       class="form-control input-sm" type="newUserTel" ng-blur="telEnable(user.newUserTel)">
+                       class="form-control input-sm" placeholder="请输入新手机号" type="newUserTel" ng-blur="telEnable(user.newUserTel)">
                 <!-- <div>密码复杂度</div> -->
             </div>
             <div class="col">
@@ -126,7 +129,7 @@
             <span class="col-md-8 col-sm-8 col">
                 <input ng-model="telCheckCode"
                        class="form-control input-sm" placeholder="请输入验证码"  type="telCheckCode" ng-blur="validTelCheckCode(telCheckCode)">
-                <input class="code-btn" ng-click="sendTelCheckCode(user.newUserTel)" ng-init="paracont='获取验证码'" ng-disabled="!sendSuccess" ng-model="paracont" />
+                <input class="code-btn" readonly ng-click="sendTelCheckCode(user.newUserTel)" ng-init="paracont='获取验证码'" ng-disabled="!sendSuccess" ng-model="paracont" />
             </span>
             <div class="col">
                 <img ng-show="checkSuccess2" src="static/img/user/images/input-check-yes.png" alt="">