Browse Source

Merge remote-tracking branch 'origin/feature_release-tomysql' into feature_release-tomysql

hulh 8 years ago
parent
commit
7891b8629d
19 changed files with 207 additions and 120 deletions
  1. 4 4
      src/main/java/com/uas/platform/b2c/prod/commodity/controller/ProductController.java
  2. 1 1
      src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductPrivateDao.java
  3. 1 1
      src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductDetail.java
  4. 1 1
      src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductPrivate.java
  5. 1 1
      src/main/java/com/uas/platform/b2c/prod/commodity/service/ProductService.java
  6. 9 0
      src/main/java/com/uas/platform/b2c/prod/commodity/service/ReleaseProductByBatchService.java
  7. 7 4
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsServiceImpl.java
  8. 31 14
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java
  9. 13 2
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ReleaseProductByBatchServiceImpl.java
  10. 3 0
      src/main/java/com/uas/platform/b2c/prod/commodity/util/GoodsUtil.java
  11. BIN
      src/main/resources/jxls-tpl/trade/releaseByBatch-person.xls
  12. 13 12
      src/main/webapp/resources/js/usercenter/controllers/forstore/account_manager_ctrl.js
  13. 10 9
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_account_management_ctrl.js
  14. 91 49
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialCtrl.js
  15. 4 4
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialPersonCtrl.js
  16. 8 8
      src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_erp.html
  17. 8 8
      src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_unstandard_erp.html
  18. 1 1
      src/main/webapp/resources/view/vendor/modal/updateUserEmail.html
  19. 1 1
      src/main/webapp/resources/view/vendor/modal/updateUserTel.html

+ 4 - 4
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);
 	}
 
 	/**

+ 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")
     private Long prId;
 
     /**

+ 1 - 1
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);
 
     /**
      * 单个匹配

+ 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);
+
 }

+ 7 - 4
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,7 +2977,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();
                     }
@@ -3077,7 +3080,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();
                 }

+ 31 - 14
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;
 
@@ -242,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());
@@ -414,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();
                     }
@@ -435,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;
@@ -449,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)) {
@@ -482,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++;
                 }
@@ -504,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())) {
@@ -869,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();
             }
@@ -897,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();
         }
@@ -971,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();
         }
@@ -1120,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();
                         }

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

@@ -1052,7 +1052,7 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 			productIds = JSON.parseArray(result, Long.class);
 			List<ProductPrivate> productPrivates = new ArrayList<>();
 			for (Long prId : productIds) {
-				ProductPrivate productPrivate = productPrivateDao.findByPrId(prId);
+				ProductPrivate productPrivate = findByPrId(prId);
 				if (null == productPrivate) {
 					productPrivate = new ProductPrivate();
 					productPrivate.setPrId(prId);
@@ -1174,7 +1174,7 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
             // 默认为b2c Enable开启
             List<ProductPrivate> productPrivates = new ArrayList<>();
             for (Long prId : productIds) {
-                ProductPrivate productPrivate = productPrivateDao.findByPrId(prId);
+                ProductPrivate productPrivate = findByPrId(prId);
                 if (null == productPrivate) {
                     productPrivate = new ProductPrivate();
 					productPrivate.setPrId(prId);
@@ -1208,4 +1208,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


+ 13 - 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,26 @@ 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)) {
+              return;
+						}
             $scope.sendSuccess = false;
             User.sendCheckCode({newUserEmail: newUserEmail}, function () {
               $scope.codeSuccess = true;
@@ -872,6 +872,7 @@ define(['app/app'], function (app) {
                   }, 1000, 60);
             }, function (response) {
               toaster.pop('error', '错误', response.data);
+              $scope.sendSuccess = true;
             });
           };
 
@@ -938,7 +939,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 +983,6 @@ define(['app/app'], function (app) {
           };
 
           //新手机号是否可用
-          $scope.sendSuccess = false;
           $scope.checkFailed1 = false;
           $scope.checkFailed1_1 = false;
           $scope.checkSuccess1 = false;
@@ -991,7 +990,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 +1000,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 +1014,14 @@ define(['app/app'], function (app) {
             });
           };
 
-          //发送验证码
+          // 发送验证码
           $scope.codeSuccess = false;
-          //发送验证码
+          $scope.sendSuccess = true;
+          // 发送验证码
           $scope.sendTelCheckCode = function (newUserTel) {
+            if (!$scope.checkSuccess1) {
+              return;
+            }
             $scope.sendSuccess = false;
             User.sendTelCheckCode({newUserTel: newUserTel}, function () {
               $scope.codeSuccess = true;
@@ -1042,6 +1042,7 @@ define(['app/app'], function (app) {
                   }, 1000, 60);
             }, function (response) {
               toaster.pop('error', '错误', response.data);
+              $scope.sendSuccess = true;
             });
           };
 

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

@@ -764,7 +764,6 @@ define(['app/app'], function(app) {
                     newUserEmail)) {
               $scope.checkSuccess1 = false;
               $scope.checkFailed1 = true;
-              $scope.sendSuccess = false;
               $scope.checkFailed1_1 = false;
               return false;
             }
@@ -772,25 +771,26 @@ 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)) {
+              return;
+            }
             $scope.sendSuccess = false;
             User.sendCheckCode({newUserEmail: newUserEmail}, function () {
               $scope.codeSuccess = true;
@@ -811,6 +811,7 @@ define(['app/app'], function(app) {
                   }, 1000, 60);
             }, function (response) {
               toaster.pop('error', '错误', response.data);
+              $scope.sendSuccess = true;
             });
           };
 
@@ -877,7 +878,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 +922,6 @@ define(['app/app'], function(app) {
           };
 
           //新手机号是否可用
-          $scope.sendSuccess = false;
           $scope.checkFailed1 = false;
           $scope.checkFailed1_1 = false;
           $scope.checkSuccess1 = false;
@@ -930,7 +929,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 +939,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 +955,12 @@ define(['app/app'], function(app) {
 
           //发送验证码
           $scope.codeSuccess = false;
+          $scope.sendSuccess = true;
           //发送验证码
           $scope.sendTelCheckCode = function (newUserTel) {
+            if (!$scope.checkSuccess1) {
+              return;
+            }
             $scope.sendSuccess = false;
             User.sendTelCheckCode({newUserTel: newUserTel}, function () {
               $scope.codeSuccess = true;
@@ -981,6 +981,7 @@ define(['app/app'], function(app) {
                   }, 1000, 60);
             }, function (response) {
               toaster.pop('error', '错误', response.data);
+              $scope.sendSuccess = true;
             });
           };
 

+ 91 - 49
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';
@@ -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;
@@ -1390,12 +1409,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 +1723,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 +1798,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 +1953,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) {
@@ -2120,14 +2162,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 {

+ 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">

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

@@ -111,7 +111,7 @@
             <label class="col-md-3 col-sm-3 col text-right" ng-show="userInfo.userEmail==null?true:false">邮箱地址:</label>
             <div class="col-md-8 col-sm-8 col">
                 <input ng-model="user.newUserEmail"
-                       class="form-control input-sm" type="newUserEmail" ng-change="emailEnable(user.newUserEmail)" placeholder="新邮箱地址">
+                       class="form-control input-sm" type="newUserEmail" ng-blur="emailEnable(user.newUserEmail)" placeholder="新邮箱地址">
                 <!-- <div>密码复杂度</div> -->
             </div>
             <div class="col">

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

@@ -110,7 +110,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-change="telEnable(user.newUserTel)">
+                       class="form-control input-sm" type="newUserTel" ng-blur="telEnable(user.newUserTel)">
                 <!-- <div>密码复杂度</div> -->
             </div>
             <div class="col">