Browse Source

Merge remote-tracking branch 'origin/dev-mysql' into dev-mysql

yujia 7 years ago
parent
commit
81ced85249
21 changed files with 835 additions and 151 deletions
  1. 3 1
      src/main/java/com/uas/platform/b2c/external/erp/commodity/service/impl/ProductDetailERPServiceImpl.java
  2. 66 1
      src/main/java/com/uas/platform/b2c/prod/commodity/controller/GoodsController.java
  3. 17 0
      src/main/java/com/uas/platform/b2c/prod/commodity/dao/GoodsDao.java
  4. 27 0
      src/main/java/com/uas/platform/b2c/prod/commodity/service/GoodsService.java
  5. 203 48
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsServiceImpl.java
  6. 15 0
      src/main/java/com/uas/platform/b2c/trade/order/model/Order.java
  7. 9 1
      src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java
  8. 3 6
      src/main/java/com/uas/platform/b2c/trade/seek/controller/SeekPurchaseBomController.java
  9. 15 1
      src/main/webapp/resources/js/common/query/goods.js
  10. 8 8
      src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_transfer_ctrl.js
  11. 1 1
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialCtrl.js
  12. 250 46
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_onSaleCtrl.js
  13. 11 9
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_order_ctrl.js
  14. 2 2
      src/main/webapp/resources/view/admin/trade/trade_order_detail.html
  15. 1 1
      src/main/webapp/resources/view/common/modal/delete_modal.html
  16. 2 0
      src/main/webapp/resources/view/usercenter/forstore/buyer_transfer.html
  17. 4 1
      src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_erp.html
  18. 4 1
      src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_unstandard_erp.html
  19. 2 2
      src/main/webapp/resources/view/vendor/forstore/vendor_material.html
  20. 2 2
      src/main/webapp/resources/view/vendor/forstore/vendor_material_person.html
  21. 190 20
      src/main/webapp/resources/view/vendor/forstore/vendor_onSale.html

+ 3 - 1
src/main/java/com/uas/platform/b2c/external/erp/commodity/service/impl/ProductDetailERPServiceImpl.java

@@ -16,6 +16,7 @@ import com.uas.platform.b2c.prod.commodity.model.Goods;
 import com.uas.platform.b2c.prod.commodity.model.Product;
 import com.uas.platform.b2c.prod.commodity.model.Product;
 import com.uas.platform.b2c.prod.commodity.model.ProductDetail;
 import com.uas.platform.b2c.prod.commodity.model.ProductDetail;
 import com.uas.platform.b2c.prod.commodity.service.GoodsService;
 import com.uas.platform.b2c.prod.commodity.service.GoodsService;
+import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import org.apache.log4j.Logger;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -86,7 +87,8 @@ public class ProductDetailERPServiceImpl implements ProductDetailERPService {
     @Override
     @Override
     public String getCurrency() {
     public String getCurrency() {
         logger.log("物料详情", "获取币别,企业:" + SystemSession.getUser().getEnterprise().getEnName());
         logger.log("物料详情", "获取币别,企业:" + SystemSession.getUser().getEnterprise().getEnName());
-        return enterpriseService.getCurrencyByRegisterAddress().getData().toString();
+        Object result = enterpriseService.getCurrencyByRegisterAddress().getData();
+        return result == null ? "" : result.toString();
     }
     }
 
 
     @Override
     @Override

+ 66 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/controller/GoodsController.java

@@ -566,6 +566,42 @@ public class GoodsController {
 		return modelView;
 		return modelView;
 	}
 	}
 
 
+	/**
+	 * 导出在售信息Excel表
+	 *
+	 * @param isAjax  the is ajax 是否是ajax请求
+	 * @param request the request 请求对象
+	 * @return model and view
+	 */
+	@RequestMapping(value = "/down/goods", method = RequestMethod.GET)
+	public ModelAndView downLoadPurchase(@RequestParam(defaultValue = "false") Boolean isAjax, String keyword, @RequestParam(required = false) Boolean isSelfSupport, HttpServletRequest request) {
+		ModelAndView modelView = new ModelAndView();
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
+		modelView.addObject("dateFormat", dateFormat);
+		modelView.addObject("goodsService", goodsService);
+		HttpSession session = request.getSession();
+		Object loading = session.getAttribute("loading");
+		if(isAjax) {
+			MappingJackson2JsonView view = new MappingJackson2JsonView();
+			Map attributes = new HashMap();
+			if(loading == null || !Boolean.valueOf(loading.toString())) {
+				attributes.put("load", false);
+			}else if(Boolean.valueOf(loading.toString())){
+				attributes.put("load", true);
+			}
+			view.setAttributesMap(attributes);
+			modelView.setView(view);
+			return modelView;
+		}
+		session.setAttribute("loading", true);
+		modelView.addObject("data", goodsService.getGoodsByEnuu(keyword, isSelfSupport));
+		modelView.setView(new JxlsExcelView("classpath:jxls-tpl/trade/goods", "优软商城在售产品"));
+		//重置为下载停止状态
+		session.setAttribute("loading", false);
+		logger.log("批量下载在售产品信息", "以Excel形式导出批量导出在售产品数据");
+		return modelView;
+	}
+
     /**
     /**
      * 导出上下架历史信息表
      * 导出上下架历史信息表
      *
      *
@@ -668,12 +704,41 @@ public class GoodsController {
 	 * @param tag 自定义标签
 	 * @param tag 自定义标签
 	 * @return
 	 * @return
 	 */
 	 */
-    @RequestMapping(value = "repeat/tag", method = RequestMethod.GET)
+    @RequestMapping(value = "/repeat/tag", method = RequestMethod.GET)
     public ResultMap getCountByTag(Long goodId, Long productId, String tag) {
     public ResultMap getCountByTag(Long goodId, Long productId, String tag) {
 		logger.log("自定义标签", "查询标签是否重复");
 		logger.log("自定义标签", "查询标签是否重复");
 		return goodsService.getCountByTag(goodId, productId, tag);
 		return goodsService.getCountByTag(goodId, productId, tag);
 	}
 	}
 
 
+	/**
+	 * 批量删除指定在售产品
+	 * @param idList
+	 * @return
+	 */
+	@RequestMapping(value = "/delete/batch", method = RequestMethod.PUT)
+	public ResultMap batchDeleteGoods(@RequestBody List<Long> idList) {
+		logger.log("删除商品", "根据id删除指定商品");
+		return goodsService.batchDeleteGoods(idList);
+	}
+
+	@RequestMapping(value = "/delete/enUU", method = RequestMethod.PUT)
+	public ResultMap deleteAllOnSaleGoods() {
+		Long enUU = SystemSession.getUser().getEnterprise().getUu();
+		logger.log("下架商品", "下架该enUU" + enUU + "所有商品");
+		return goodsService.deleteGoodsByEnUU(enUU);
+	}
+
+	/**
+	 * 下架当前企业的所有在售商品
+	 * @return
+	 */
+	@RequestMapping(value = "/down/enUU", method = RequestMethod.PUT)
+	public ResultMap downNowEnterpriseGoods() {
+		Long enUU = SystemSession.getUser().getEnterprise().getUu();
+		logger.log("下架商品", "下架该enUU" + enUU + "所有商品");
+		return goodsService.downNowEnterpriseGoods(enUU);
+	}
+
     /**
     /**
      * 下架当前企业的所有的商品信息
      * 下架当前企业的所有的商品信息
      *
      *

+ 17 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/dao/GoodsDao.java

@@ -184,6 +184,23 @@ public interface GoodsDao extends JpaSpecificationExecutor<Goods>, JpaRepository
      */
      */
     List<Goods> findByEnUUAndStatus(Long enUU, Integer status);
     List<Goods> findByEnUUAndStatus(Long enUU, Integer status);
 
 
+    /**
+     * 根据企业enUU获取指定状态的产品列表
+     * @param enUU  企业euUU
+     * @param statusList 指定状态
+     * @return
+     */
+    @Query(value = "select g from Goods g where g.enUU = :enUU and status in :statusList")
+    List<Goods> findByEnUUAndInStatus(@Param("enUU") Long enUU, @Param("statusList") List<Integer> statusList);
+
+    /**
+     * 根据id列表查询所有的在售商品
+     * @param idList
+     * @return
+     */
+    @Query(value = "select g from Goods g where id in :idList")
+    List<Goods> findGoodsInIdList(@Param("idList") List<Long> idList);
+
     /**
     /**
      * 根据企业UU、商品型号和库存类型获取产品
      * 根据企业UU、商品型号和库存类型获取产品
      *
      *

+ 27 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/service/GoodsService.java

@@ -485,6 +485,12 @@ public interface GoodsService {
      */
      */
     public List<Goods> getGoodsByIDS(String ids);
     public List<Goods> getGoodsByIDS(String ids);
 
 
+    /**
+     * 根据enUU获取在售产品
+     * @return
+     */
+    List<Goods> getGoodsByEnuu(String keyword, Boolean isSelfSupport);
+
     /**
     /**
      * 判断是自营还是寄售
      * 判断是自营还是寄售
      *
      *
@@ -525,6 +531,27 @@ public interface GoodsService {
      */
      */
     ResultMap getCountByTag(Long goodId, Long productId, String tag);
     ResultMap getCountByTag(Long goodId, Long productId, String tag);
 
 
+    /**
+     *下架当前企业的所有在售商品
+     * @param enUU  enUU
+     * @return
+     */
+    ResultMap downNowEnterpriseGoods(Long enUU);
+
+    /**
+     * 根据指定id列表删除在售产品
+     * @param idList
+     * @return
+     */
+    ResultMap batchDeleteGoods(List<Long> idList);
+
+    /**
+     * 根据企业enUU删除该产品
+     * @param enUU
+     * @return
+     */
+    ResultMap deleteGoodsByEnUU(Long enUU);
+
     /**
     /**
      * 批量获取相似商品的个数
      * 批量获取相似商品的个数
      *
      *

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

@@ -243,9 +243,9 @@ public class GoodsServiceImpl implements GoodsService {
 //        if(!PatternUtil.matchChineseAndEnglish(goods.getTag())) {
 //        if(!PatternUtil.matchChineseAndEnglish(goods.getTag())) {
 //            throw new IllegalOperatorException("自定义标签的信息只能包含中文和英文");
 //            throw new IllegalOperatorException("自定义标签的信息只能包含中文和英文");
 //        }
 //        }
-        if (goods.getPackaging() == null) {
+        /*if (goods.getPackaging() == null) {
             throw new IllegalOperatorException("包装信息为空");
             throw new IllegalOperatorException("包装信息为空");
-        }
+        }*/
 //        if (goods.getPackaging().length() > 10) {
 //        if (goods.getPackaging().length() > 10) {
 //            throw new IllegalOperatorException("包装信息操作约定的10个字符");
 //            throw new IllegalOperatorException("包装信息操作约定的10个字符");
 //        }
 //        }
@@ -1618,7 +1618,8 @@ public class GoodsServiceImpl implements GoodsService {
                     reserve = NumberUtil.add(reserve, oldGoods.getReserve());
                     reserve = NumberUtil.add(reserve, oldGoods.getReserve());
                     reserve = NumberUtil.sub(reserve, nowGoods.getReserve());
                     reserve = NumberUtil.sub(reserve, nowGoods.getReserve());
                     if (NumberUtil.compare(reserve, DoubleConstant.zero) < 0) {
                     if (NumberUtil.compare(reserve, DoubleConstant.zero) < 0) {
-                        throw new IllegalOperatorException("总在售库存量超过空闲库存量");
+                        // 下架这部分的库存
+                        //throw new IllegalOperatorException("总在售库存量超过空闲库存量");
                     }
                     }
                 }
                 }
             }
             }
@@ -2457,10 +2458,10 @@ public class GoodsServiceImpl implements GoodsService {
         goods.setStatus(Status.REMOVED.value());
         goods.setStatus(Status.REMOVED.value());
 
 
         //检查对应产品库信息
         //检查对应产品库信息
-        Product product = productDao.findOne(goods.getProductid());
-        if (product == null) {
-            throw new IllegalOperatorException("产品库信息丢失");
-        }
+//        Product product = productDao.findOne(goods.getProductid());
+//        if (product == null) {
+//            throw new IllegalOperatorException("产品库信息丢失");
+//        }
 
 
         logger.info(String.format("%s 商城测试下架时间记录 转历史库存 开始", dateFormat.format(new Date())));
         logger.info(String.format("%s 商城测试下架时间记录 转历史库存 开始", dateFormat.format(new Date())));
         GoodsHistory goodsHist = goodsHistoryService.converTGoodsHist(goods,
         GoodsHistory goodsHist = goodsHistoryService.converTGoodsHist(goods,
@@ -2469,19 +2470,6 @@ public class GoodsServiceImpl implements GoodsService {
         goodsHist.setMessage(goodsHist.getMessage() + "该批次下架");
         goodsHist.setMessage(goodsHist.getMessage() + "该批次下架");
         goodsHistoryService.save(goodsHist);
         goodsHistoryService.save(goodsHist);
 
 
-//		ProductStandardPutOnInfo standardPutOnInfo = productStandardPutOnInfoDao.findOne(goods.getStandprodid());
-//		if(standardPutOnInfo != null) {
-//			standardPutOnInfo.setStatus(Status.REMOVED.value());
-//			standardPutOnInfo.setAvailableOnSale(NumberUtil.add(standardPutOnInfo.getAvailableOnSale(), standardPutOnInfo.getOnSaleQty()));
-//			standardPutOnInfo.setOnSaleQty(0.0d);
-//			productStandardPutOnInfoDao.save(standardPutOnInfo);
-//
-//			Product product = productDao.findOne(standardPutOnInfo.getProductid());
-//			product.setAvailableOnSale(standardPutOnInfo.getAvailableOnSale());
-//			product.setOnSaleQty(standardPutOnInfo.getOnSaleQty());
-//			productDao.save(product);
-//		}
-
         Goods updateGoods = goodsDao.save(goods);
         Goods updateGoods = goodsDao.save(goods);
 		//下架对应的批次 目前确定下架之后不做删除动作。
 		//下架对应的批次 目前确定下架之后不做删除动作。
 		// goodsDao.deleteByBatchCode(goods.getBatchCode());
 		// goodsDao.deleteByBatchCode(goods.getBatchCode());
@@ -2623,6 +2611,68 @@ public class GoodsServiceImpl implements GoodsService {
         return goods;
         return goods;
     }
     }
 
 
+    @Override
+    public List<Goods> getGoodsByEnuu(String keyword, Boolean isSelfSupport) {
+        final PageInfo page = new PageInfo();
+        page.setPageNumber(1);
+        page.setPageSize(10);
+        Long enUU = SystemSession.getUser().getEnterprise().getUu();
+        page.expression(PredicateUtils.eq("enUU", enUU, true));
+        page.sorting("createdDate", Sort.Direction.DESC);
+
+        SimpleExpression status1 = PredicateUtils.eq("status", Status.AVAILABLE.value(), true);
+        SimpleExpression status2 = PredicateUtils.eq("status", Status.UNAVAILABLE.value(), true);
+        SimpleExpression[] expressions2 = new SimpleExpression[] {status1, status2};
+        LogicalExpression logicalExpression2 = PredicateUtils.or(expressions2);
+        page.expression(logicalExpression2);
+
+        List<StoreIn> storeIns = storeInDao.findByEnUU(enUU);
+        String uuid = null;
+        if (!CollectionUtils.isEmpty(storeIns)) {
+            uuid = storeIns.get(0).getUuid();
+        } else {
+            uuid = "null";
+        }
+        // 过滤自营店铺上架商品
+        if (isSelfSupport != null && isSelfSupport && StringUtils.hasText(uuid)) {
+            SimpleExpression[] simpleExpressions = new SimpleExpression[3];
+            simpleExpressions[0] = PredicateUtils.eq("storeid", uuid, true);
+            simpleExpressions[1] = PredicateUtils.ne("storeName", "优软测试二", true);
+            simpleExpressions[2] = PredicateUtils.ne("storeName", "优软商城", true);
+            page.expression(PredicateUtils.and(simpleExpressions));
+        }
+        // 过滤寄售商品
+        if (isSelfSupport != null && !isSelfSupport && StringUtils.hasText(uuid)) {
+            String[] storeNames = new String[]{"优软测试二", "优软商城"};
+            LogicalExpression logicalExpression = PredicateUtils.in("storeName", storeNames, true);
+            if (!"null".equals(uuid)) {
+                SimpleExpression simpleExpression = PredicateUtils.ne("storeid", uuid, true);
+                page.expression(PredicateUtils.or(simpleExpression, logicalExpression));
+            } else {
+                page.expression(logicalExpression);
+            }
+        }
+
+        // 过滤关键词
+        if (StringUtils.hasText(keyword)) {
+            SimpleExpression code = like("code", keyword, true, true);
+            SimpleExpression brandNameEn = like("brandNameEn", keyword, true, true);
+            SimpleExpression batchCode = PredicateUtils.like("prodNum", keyword, true, true);
+            SimpleExpression[] expressions3 = new SimpleExpression[]{code, brandNameEn, batchCode};
+            LogicalExpression logicalExpression3 = PredicateUtils.or(expressions3);
+            page.expression(logicalExpression2);
+        }
+
+        return goodsDao.findAll(new Specification<Goods>() {
+            @Override
+            public Predicate toPredicate(Root<Goods> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                query.where(page.getPredicates(root, query, cb));
+                return null;
+            }
+        }, page.getSort());
+    }
+
+    @Override
     public String isSelfSupport(String storeid) {
     public String isSelfSupport(String storeid) {
         if(StringUtils.isEmpty(storeid)) {
         if(StringUtils.isEmpty(storeid)) {
             return "";
             return "";
@@ -2796,6 +2846,112 @@ public class GoodsServiceImpl implements GoodsService {
         return ResultMap.success(false);
         return ResultMap.success(false);
     }
     }
 
 
+    @Override
+    public ResultMap downNowEnterpriseGoods(Long enUU) {
+        List<Integer> statusList = Arrays.asList(Status.AVAILABLE.value(), Status.UNAVAILABLE.value());
+        List<Goods> goodsList = goodsDao.findByEnUUAndInStatus(enUU, statusList);
+        List<GoodsHistory> histories = new ArrayList<>(goodsList.size());
+        List<Goods> goodsUpdate = new ArrayList<>(goodsList.size());
+        List<String> uuids = new ArrayList<>(goodsList.size());
+        for (Goods goods : goodsList) {
+            goods.setStatus(Status.REMOVED.value());
+
+            GoodsHistory goodsHistory = goodsHistoryService.converTGoodsHist(goods, "批量下架公司产品");
+            goodsHistory.setMessage(goodsHistory.getMessage() + "该批次下架");
+            goodsHistoryService.save(goodsHistory);
+            histories.add(goodsHistory);
+            goodsUpdate.add(goods);
+
+            uuids.add(goods.getUuid());
+        }
+
+        goodsDao.save(goodsUpdate);
+        goodsHistoryDao.save(histories);
+        for (String uuid : uuids) {
+            updateComponentTradeInfos(uuid);
+        }
+        return ResultMap.success(goodsUpdate.size());
+    }
+
+    private Map<Object, Object> deleteGoodsList(List<Goods> goodsList) {
+        Map<Object, Object> map = new HashMap<>();
+        int fail = 0;
+        // 保存批次号,以便下架推荐产品
+        Set<String> set = new HashSet<>();
+        String storeId = null;
+        for (Goods goods : goodsList) {
+            boolean isExistOrder = validateExistOrder(goods.getBatchCode());
+
+            if (isExistOrder) {
+                fail++;
+                continue;
+            }
+            if (storeId == null) {
+                storeId = goods.getStoreid();
+            }
+            set.add(goods.getBatchCode());
+
+            List<Order> orders = detailService.updateOrderDetailsByGoods(goods);
+            orderService.save(orders);
+
+            Boolean aBoolean = floorsService.updateHomeInfo(goods.getBatchCode());
+            List<GoodsHistory> histories = new ArrayList<>();
+            if (goods.getStatus().equals(Status.AVAILABLE.value()) || goods.getStatus().equals(Status.UNAVAILABLE.value())) {
+                //先做下架记录
+                goods.setStatus(Status.REMOVED.value());
+                GoodsHistory goodsHistoryRemoved = goodsHistoryService.converTGoodsHist(goods, OperateType.Down.getPhrase());
+                histories.add(goodsHistoryRemoved);
+            }
+
+            goods.setStatus(Status.GOODS_DELETE.value());
+            //删除库存信息
+            GoodsHistory goodsHistoryDelete = goodsHistoryService.converTGoodsHist(goods, OperateType.DELETE.getPhrase());
+            histories.add(goodsHistoryDelete);
+            goodsHistoryService.save(histories);
+
+            goodsDao.deleteByBatchCode(goods.getBatchCode());
+            if (goods.getProductid() != null) {
+                Product product = productDao.findOne(goods.getProductid());
+                if (product != null) {
+                    ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
+                    if (productPrivate == null) {
+                        productPrivate = new ProductPrivate();
+                    }
+                    Integer count = productPrivate.getBatchCount();
+                    productPrivate.setBatchCount(--count);
+                    productPrivateDao.save(productPrivate);
+                }
+            }
+
+            //统计器件的信息
+            if (!StringUtils.isEmpty(goods.getUuid())) {
+                updateComponentTradeInfos(goods.getUuid());
+            }
+        }
+        recommendProductService.deleteProductsWhenSellerUpdateReserve(storeId, set);
+        map.put("total", goodsList.size());
+        map.put("success", goodsList.size() - fail);
+        map.put("fail", fail);
+        return map;
+    }
+
+    @Override
+    @Transactional
+    public ResultMap batchDeleteGoods(List<Long> idList) {
+        List<Goods> goodsList = goodsDao.findGoodsInIdList(idList);
+        Map<Object, Object> map = deleteGoodsList(goodsList);
+        return ResultMap.success(map);
+    }
+
+    @Override
+    @Transactional
+    public ResultMap deleteGoodsByEnUU(Long enUU) {
+        List<Integer> statusList = Arrays.asList(Status.AVAILABLE.value(), Status.UNAVAILABLE.value());
+        List<Goods> goodsList = goodsDao.findByEnUUAndInStatus(enUU, statusList);
+        Map<Object, Object> map = deleteGoodsList(goodsList);
+        return ResultMap.success(map);
+    }
+
     /**
     /**
      * 下架该公司所有的商品信息
      * 下架该公司所有的商品信息
      *
      *
@@ -3018,19 +3174,8 @@ public class GoodsServiceImpl implements GoodsService {
         if(goods == null) {
         if(goods == null) {
             return null;
             return null;
         }
         }
-        boolean isExistOrder = false;
-        List<OrderDetail> orderList = orderDetailService.findOrderDetailByBatchCode(goods.getBatchCode());
-        String codes = OrderStatus.UNAVAILABLE.getCodes() + "-" + Status.TOBECONFIRMED.value();
-        for (OrderDetail detail : orderList) {
-            Order order = detail.getOrder();
-            int status = order.getStatus() == null ? detail.getStatus() : order.getStatus();
-            if (codes.indexOf(String.valueOf(status)) < 0) {
-                if (StringUtils.isEmpty(order.getOrderids())) {
-                    isExistOrder = true;
-                    break;
-                }
-            }
-        }
+        boolean isExistOrder = validateExistOrder(goods.getBatchCode());
+
         if (isExistOrder) {
         if (isExistOrder) {
             throw new IllegalOperatorException("该商品已经被购买了,不能删除");
             throw new IllegalOperatorException("该商品已经被购买了,不能删除");
         }
         }
@@ -3057,9 +3202,9 @@ public class GoodsServiceImpl implements GoodsService {
         goodsHistoryService.save(histories);
         goodsHistoryService.save(histories);
 
 
         goodsDao.deleteByBatchCode(goods.getBatchCode());
         goodsDao.deleteByBatchCode(goods.getBatchCode());
-        if(goods.getProductid() != null) {
+        if (goods.getProductid() != null) {
             Product product = productDao.findOne(goods.getProductid());
             Product product = productDao.findOne(goods.getProductid());
-            if(product != null) {
+            if (product != null) {
                 ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
                 ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
                 if (productPrivate == null) {
                 if (productPrivate == null) {
                     productPrivate = new ProductPrivate();
                     productPrivate = new ProductPrivate();
@@ -3077,6 +3222,28 @@ public class GoodsServiceImpl implements GoodsService {
         return goods;
         return goods;
     }
     }
 
 
+    /**
+     * 根据批次号查询是否有订单
+     * @param batchCode
+     * @return
+     */
+    private boolean validateExistOrder(String batchCode) {
+        boolean isExistOrder = false;
+        List<OrderDetail> orderList = orderDetailService.findOrderDetailByBatchCode(batchCode);
+        String codes = OrderStatus.UNAVAILABLE.getCodes() + "-" + Status.TOBECONFIRMED.value();
+        for (OrderDetail detail : orderList) {
+            Order order = detail.getOrder();
+            int status = order.getStatus() == null ? detail.getStatus() : order.getStatus();
+            if (codes.indexOf(String.valueOf(status)) < 0) {
+                if (StringUtils.isEmpty(order.getOrderids())) {
+                    isExistOrder = true;
+                    break;
+                }
+            }
+        }
+        return isExistOrder;
+    }
+
     @Override
     @Override
     public List<Goods> deleteGoods(List<Goods> goodses) {
     public List<Goods> deleteGoods(List<Goods> goodses) {
         List<Order> orders = new ArrayList<>();
         List<Order> orders = new ArrayList<>();
@@ -3090,19 +3257,7 @@ public class GoodsServiceImpl implements GoodsService {
             if (goods == null) {
             if (goods == null) {
                 return null;
                 return null;
             }
             }
-            boolean isExistOrder = false;
-            List<OrderDetail> orderList = orderDetailService.findOrderDetailByBatchCode(goods.getBatchCode());
-            String codes = OrderStatus.UNAVAILABLE.getCodes() + "-" + Status.TOBECONFIRMED.value();
-            for (OrderDetail detail : orderList) {
-                Order order = detail.getOrder();
-                int status = order.getStatus() == null ? detail.getStatus() : order.getStatus();
-                if (codes.indexOf(String.valueOf(status)) < 0) {
-                    if (StringUtils.isEmpty(order.getOrderids())) {
-                        isExistOrder = true;
-                        break;
-                    }
-                }
-            }
+            boolean isExistOrder = validateExistOrder(goods.getBatchCode());
             if (isExistOrder) {
             if (isExistOrder) {
                 throw new IllegalOperatorException("存在商品已经被购买了,不能删除");
                 throw new IllegalOperatorException("存在商品已经被购买了,不能删除");
             }
             }

+ 15 - 0
src/main/java/com/uas/platform/b2c/trade/order/model/Order.java

@@ -648,6 +648,12 @@ public class Order extends Document implements Serializable {
 	@Transient
 	@Transient
 	private Installment installment;
 	private Installment installment;
 
 
+	/**
+	 * 临时保存收款名
+	 */
+	@Transient
+	private String receiveName;
+
 	/**
 	/**
 	 * Gets expiration time.
 	 * Gets expiration time.
 	 *
 	 *
@@ -2469,6 +2475,7 @@ public class Order extends Document implements Serializable {
 		this.buyeruu = user.getUserUU();
 		this.buyeruu = user.getUserUU();
 		this.buyerenuu = user.getEnterprise() != null ? user.getEnterprise().getUu() : null;
 		this.buyerenuu = user.getEnterprise() != null ? user.getEnterprise().getUu() : null;
 		this.buyername = user.getUserName();
 		this.buyername = user.getUserName();
+		this.buyerentername = user.getEnterprise() != null ? user.getEnterprise().getEnName() : null;
 		this.buyerTel = user.getUserTel();
 		this.buyerTel = user.getUserTel();
 		this.setStatusToBeConfirmed(user.getUserUU());
 		this.setStatusToBeConfirmed(user.getUserUU());
 		buyNow = false; // 默认不是立即购买,是则手动设置
 		buyNow = false; // 默认不是立即购买,是则手动设置
@@ -2881,4 +2888,12 @@ public class Order extends Document implements Serializable {
 	public void setSpId(Long spId) {
 	public void setSpId(Long spId) {
 		this.spId = spId;
 		this.spId = spId;
 	}
 	}
+
+	public String getReceiveName() {
+		return receiveName;
+	}
+
+	public void setReceiveName(String receiveName) {
+		this.receiveName = receiveName;
+	}
 }
 }

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

@@ -1668,7 +1668,15 @@ public class OrderServiceImpl implements OrderService {
 
 
     @Override
     @Override
     public Order findOrderDetail(String orderid) {
     public Order findOrderDetail(String orderid) {
-        return orderDao.findOrderByOrderid(orderid);
+        Order order = orderDao.findOrderByOrderid(orderid);
+        if (order.getBuyerenuu() != null && order.getBuyerentername() == null) {
+            Enterprise enterprise = enterpriseDao.findByUu(order.getBuyerenuu());
+            if (enterprise != null) {
+                order.setBuyerentername(enterprise.getEnName());
+            }
+        }
+        order.setReceiveName(sysConf.getEnName());
+        return order;
     }
     }
 
 
     @Override
     @Override

+ 3 - 6
src/main/java/com/uas/platform/b2c/trade/seek/controller/SeekPurchaseBomController.java

@@ -30,7 +30,6 @@ import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.ModelAndView;
 
 
@@ -108,12 +107,10 @@ public class SeekPurchaseBomController {
      * @return
      * @return
      */
      */
     @RequestMapping(value = "/confirmBom", method = RequestMethod.POST)
     @RequestMapping(value = "/confirmBom", method = RequestMethod.POST)
-    @ResponseBody
-    public ResultMap confirmBom(@RequestBody String json) {
-        JSONObject object = FastjsonUtils.parseObject(json);
-        logger.log("求购", "确认发布bom求购,bomId:" + object.get("bomId"));
+    public ResultMap confirmBom(Long bomId) {
+        logger.log("求购", "确认发布bom求购,bomId:" + bomId);
         User user = SystemSession.getUser();
         User user = SystemSession.getUser();
-        return seekPurchaseBomService.confirmBom(Long.valueOf(object.get("bomId").toString()), user, inquiryServiceUrl);
+        return seekPurchaseBomService.confirmBom(bomId, user, inquiryServiceUrl);
     }
     }
 
 
     /**
     /**

+ 15 - 1
src/main/webapp/resources/js/common/query/goods.js

@@ -133,9 +133,23 @@ define([ 'ngResource' ], function() {
 				url : 'trade/goods/putOn/:id',
 				url : 'trade/goods/putOn/:id',
 				method: 'PUT'
 				method: 'PUT'
 			},
 			},
+			downNowEnterpriseGoods: {
+				url : 'trade/goods/down/enUU',
+				method: 'PUT'
+			},
+			// 删除列表
+			deleteGoodsByIdList: {
+				url : 'trade/goods/delete/batch',
+				method: 'PUT'
+			},
+			// 删除企业下在售
+			deleteGoodsByEnUU: {
+				url : 'trade/goods/delete/enUU',
+				method: 'PUT'
+			},
 			// 卖家下架已上架商品
 			// 卖家下架已上架商品
 			offShelfGoodsByProvider : {
 			offShelfGoodsByProvider : {
-				url : rootPath + '/trade/goods/provider/off/shelf',
+				url : 'trade/goods/provider/off/shelf',
 				method : 'PUT'
 				method : 'PUT'
 			},
 			},
 			// 卖家下架已上架商品
 			// 卖家下架已上架商品

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

@@ -701,14 +701,14 @@ define([ 'app/app' ], function(app) {
 				transfer.installmentDetailId = installmentDetailId;
 				transfer.installmentDetailId = installmentDetailId;
 			};
 			};
 
 
-			var buyAccount = angular.copy($scope.buyAccount);
-			var saleAccount = angular.copy($scope.saleAccount);
-			delete saleAccount.filterAccount;
-			delete buyAccount.filterAccount;
-			var jsonPament = angular.toJson(buyAccount);
-			var jsonReceive = angular.toJson(saleAccount);
-			transfer.jsonPament = jsonPament;
-			transfer.jsonReceive = jsonReceive;
+			// var buyAccount = angular.copy($scope.buyAccount);
+			// var saleAccount = angular.copy($scope.saleAccount);
+			// delete saleAccount.filterAccount;
+			// delete buyAccount.filterAccount;
+			// var jsonPament = angular.toJson(buyAccount);
+			// var jsonReceive = angular.toJson(saleAccount);
+			// transfer.jsonPament = jsonPament;
+			// transfer.jsonReceive = jsonReceive;
 			// console.log(transfer.jsonReceive)
 			// console.log(transfer.jsonReceive)
 			transfer.imgUrl = str;
 			transfer.imgUrl = str;
 			transfer.type = $scope.type;
 			transfer.type = $scope.type;

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

@@ -441,7 +441,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 		$scope.deleteBatch = function () {
 		$scope.deleteBatch = function () {
             $scope.getChoosedInfo();
             $scope.getChoosedInfo();
             if (!$scope.choosedIds || $scope.choosedIds.length == 0) {
             if (!$scope.choosedIds || $scope.choosedIds.length == 0) {
-                toaster.pop('warning', '提示','请选择要删除的信息');
+                toaster.pop('info', '请选择要删除的信息');
                 return ;
                 return ;
             }
             }
             closeAllEditStatus();
             closeAllEditStatus();

+ 250 - 46
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_onSaleCtrl.js

@@ -288,6 +288,9 @@ define([ 'app/app' ], function(app) {
             Goods.getGoodsByPageAndStatus($scope.param, function (data) {
             Goods.getGoodsByPageAndStatus($scope.param, function (data) {
                 $scope.goodsAll = data;
                 $scope.goodsAll = data;
                 $scope.currenctGoods = data.content;
                 $scope.currenctGoods = data.content;
+                if ($scope.currenctGoods.length == 0) {
+                    $scope.chooseAllPage = false;
+                }
                 $scope.param.currentPage = data.number;
                 $scope.param.currentPage = data.number;
                 if ($scope.param.currentPage == data.totalPages) {
                 if ($scope.param.currentPage == data.totalPages) {
                     $scope.endNumber = data.totalElements;
                     $scope.endNumber = data.totalElements;
@@ -302,25 +305,176 @@ define([ 'app/app' ], function(app) {
                     }else {
                     }else {
                         $scope.onsale.currency = 'RMB';
                         $scope.onsale.currency = 'RMB';
                     }
                     }
+                    angular.forEach($scope.currenctGoods, function (goods) {
+                        if ($scope.chooseAllPage) {
+                            goods.isChoosed = true;
+                        } else {
+                            goods.isChoosed = false;
+                        }
+                    });
+                }
+                $scope.chooseAll = false;
+            });
+        };
+
+        // 全选
+        $scope.chooseAllItem = function () {
+            $scope.chooseAll = !$scope.chooseAll;
+            angular.forEach($scope.currenctGoods, function (goods) {
+                goods.isChoosed = $scope.chooseAll;
+            });
+            if (!$scope.chooseAll) {
+                $scope.chooseAllPage = false;
+            }
+        };
+
+        $scope.turnAllPage = function () {
+            if ($scope.chooseAll) {
+                $scope.chooseAllPage = true;
+            }
+        };
+
+        $scope.cancelAllPage = function () {
+            $scope.chooseAllPage = false;
+            $scope.chooseAll = false;
+            angular.forEach($scope.currenctGoods, function (goods) {
+                goods.isChoosed = false;
+            });
+        };
+
+        // 检查是否全选
+        var checkChoosedAll = function () {
+            $scope.chooseAll = true;
+            angular.forEach($scope.currenctGoods, function (goods) {
+                if (!goods.isChoosed) {
+                    $scope.chooseAll = false;
+                }
+            });
+            if (!$scope.chooseAll) {
+                $scope.chooseAllPage = false;
+            }
+        };
+
+        $scope.isDoubleChecked = false;
+        // 单选
+        $scope.chooseOne = function (event, goods) {
+            if (event) {
+                event.preventDefault();
+                event.stopPropagation();
+                $scope.isDoubleChecked = true;
+            }
+            if (typeof goods.isChoosed == 'undefined' || !goods.isChoosed) {
+                goods.isChoosed = true;
+            } else {
+                goods.isChoosed = false;
+            }
+            if ($scope.isDoubleChecked) {
+                goods.isChoosed = !goods.isChoosed;
+                $scope.isDoubleChecked = false;
+            }
+            checkChoosedAll();
+        };
 
 
+        //获取选中之后的信息
+        var getChooseBatch = function () {
+            $scope.choosedBatch = [];
+            angular.forEach($scope.currenctGoods, function (goods) {
+                if (goods.isChoosed) {
+                    $scope.choosedBatch.push(goods.batchCode);
                 }
                 }
             });
             });
         };
         };
 
 
+        //获取选中之后的信息
+        var getChooseInfo = function () {
+            $scope.choosedIds = [];
+            angular.forEach($scope.currenctGoods, function (goods) {
+                if (goods.isChoosed) {
+                    $scope.choosedIds.push(goods.id);
+                }
+            });
+        };
 
 
+        $scope.cancelBatch = function (event) {
+            if (event) {
+                event.stopPropagation();
+            }
+            $scope.batchStatus = false;
+        };
+
+        $scope.batchOperation = function (num) {
+            getChooseInfo();
+            if (!$scope.choosedIds || $scope.choosedIds.length == 0) {
+                toaster.pop('info', '您尚未选中任何产品');
+                return ;
+            }
+            $scope.batchStatus = true;
+            $scope.batchType = num;
+            if (num == 1) {
+                $scope.batchTitle = '是否要删除选中的产品?'
+            } else {
+                $scope.batchTitle = '是否要下架选中的产品?'
+            }
+        };
 
 
         /**
         /**
-         * 修改商品信息
-         *
-         * @param commodity		待修改商品信息
-         * @param isDischarge	是否下架商品
+         * 批量删除
          */
          */
-        $scope.updateCommodityInfo = function (commodity, isDischarge) {
-            if (isDischarge) {
-                Goods.offShelfGoodsByProvider({batchCodes : commodity.batchCode}, {}, function(map){
+        $scope.batchDelete = function () {
+            if ($scope.chooseAllPage) {
+                Goods.deleteGoodsByEnUU({}, {}, function (result) {
+                    if (result.success) {
+                        var message = "成功删除"+ result.data.success +"个产品,另有"
+                            + result.data.fail + "个产品无法删除";
+                        toaster.pop('success', message);
+                        $scope.batchStatus = false;
+                        loadDataReload();
+                    } else {
+                        toaster.pop('error', result.message);
+                    }
+                })
+            } else {
+                getChooseInfo();
+                if (!$scope.choosedIds || $scope.choosedIds.length == 0) {
+                    toaster.pop("info", "您尚未选中任何产品");
+                    return ;
+                }
+                Goods.deleteGoodsByIdList({}, $scope.choosedIds, function (result) {
+                    if (result.success) {
+                        var message = "成功删除"+ result.data.success +"个产品,另有"
+                            + result.data.fail + "个产品无法删除";
+                        toaster.pop('success', message);
+                        $scope.batchStatus = false;
+                        loadDataReload();
+                    } else {
+                        toaster.pop('error', result.message);
+                    }
+                })
+            }
+        };
+
+        $scope.batchDown = function () {
+            if ($scope.chooseAllPage) {
+                Goods.downNowEnterpriseGoods({}, {}, function(result) {
+                    if (result.success) {
+                        toaster.pop('success', '下架成功');
+                        $scope.batchStatus = false;
+                        loadDataReload();
+                    } else {
+                        toaster.pop('error', result.message);
+                    }
+                });
+            } else {
+                getChooseBatch();
+                if (!$scope.choosedBatch || $scope.choosedBatch.length == 0) {
+                    toaster.pop("info", "您尚未选中任何产品");
+                    return ;
+                }
+                var batchs = $scope.choosedBatch.join(",");
+                Goods.offShelfGoodsByProvider({batchCodes : batchs}, {}, function(map){
                     if (map.success) {
                     if (map.success) {
                         toaster.pop('success', '下架成功');
                         toaster.pop('success', '下架成功');
-                        $scope.isSoldOut = false;
+                        $scope.batchStatus = false;
                         loadDataReload();
                         loadDataReload();
                     } else {
                     } else {
                         toaster.pop('error', map.message);
                         toaster.pop('error', map.message);
@@ -328,25 +482,23 @@ define([ 'app/app' ], function(app) {
                 }, function(){
                 }, function(){
                     toaster.pop('error', '下架失败');
                     toaster.pop('error', '下架失败');
                 });
                 });
-            } else {
-                var modalInstance = $modal.open({
-                    templateUrl : $rootScope.rootPath + "/static/view/vendor/modal/discharge_commodity_modal.html",
-                    controller : "GoodsDischargeCtrl",
-                    size : "lg",
-                    resolve : {
-                        goods : function() {
-                            console.log(commodity);
-                            return angular.copy(commodity);
-                        }
-                    }
-                });
-                modalInstance.result.then(function() {
-                    loadDataReload();
-                }, function() {
-                });
             }
             }
         };
         };
 
 
+        $scope.updateCommodityInfo = function (commodity) {
+            Goods.offShelfGoodsByProvider({batchCodes : commodity.batchCode}, {}, function(map){
+                if (map.success) {
+                    toaster.pop('success', '下架成功');
+                    $scope.isSoldOut = false;
+                    loadDataReload();
+                } else {
+                    toaster.pop('error', map.message);
+                }
+            }, function(){
+                toaster.pop('error', '下架失败');
+            });
+        };
+
         /*查看大图*/
         /*查看大图*/
         $scope.showImg = function(imgUrl) {
         $scope.showImg = function(imgUrl) {
             var src = imgUrl, box = $('#image-box'), modal = $('.modal-content');
             var src = imgUrl, box = $('#image-box'), modal = $('.modal-content');
@@ -502,6 +654,7 @@ define([ 'app/app' ], function(app) {
          * 去对应的批次信息
          * 去对应的批次信息
          */
          */
         $scope.goToBatchDetail = function (event, commodity) {
         $scope.goToBatchDetail = function (event, commodity) {
+            event.stopPropagation();
             if(!commodity || !event || commodity.edit) {
             if(!commodity || !event || commodity.edit) {
                 return ;
                 return ;
             };
             };
@@ -511,7 +664,8 @@ define([ 'app/app' ], function(app) {
                     var name = tag.getAttribute('name');
                     var name = tag.getAttribute('name');
                     if(name != null &&(name == 'edit-a' || name == 'down-a'
                     if(name != null &&(name == 'edit-a' || name == 'down-a'
                         || name == 'img-a' || name == 'kind-a' || name == 'brand-a'
                         || name == 'img-a' || name == 'kind-a' || name == 'brand-a'
-                        || name == 'cancle-a' || name == 'save-a' || name == 'reduce-a' || name == 'add-a')) {
+                        || name == 'cancle-a' || name == 'save-a' || name == 'reduce-a'
+                        || name == 'add-a' || name == 'check-one')) {
                         return ;
                         return ;
                     }
                     }
                     tag = tag.parentElement;
                     tag = tag.parentElement;
@@ -1419,26 +1573,70 @@ define([ 'app/app' ], function(app) {
             return goodsID;
             return goodsID;
         };
         };
 
 
-        var getDownLoadStatus = function () {
-            $.ajax({
-                type: 'GET',
-                url: 'release/product/release/failure/xls',
-                data : {isAjax : true, batch : $scope.result.batch},
-                dataType : 'json',
-                success: function (data) {
-                    if(!data.load) {
-                        $scope.$apply(function () {
-                            Loading.hide();
-                            toaster.pop('success', '数据处理完毕,正在下载文件,请稍等。');
-                        });
-                        clearInterval(intervalId);
-                    }
-                },
-                error: function () {
-                    Loading.hide();
-                    clearInterval(intervalId);
+        function downloadByJs(url, keyword, type) {
+            var form = $("<form>");   //定义一个form表单
+            form.attr('style', 'display:none');   //在form表单中添加查询参数
+            form.attr('target', '');
+            form.attr('method', 'get');
+            form.attr('action', url);
+
+            var input1 = $('<input>');
+            input1.attr('type', 'hidden');
+            input1.attr('name', 'keyword');
+            input1.attr('value', keyword);
+
+            var input2 = $('<input>');
+            input1.attr('type', 'hidden');
+            input1.attr('name', 'isSelfSupport');
+            input1.attr('value', type);
+
+            $('body').append(form);  //将表单放置在web中
+            form.append(input1);   //将查询参数控件提交到表单上
+            form.append(input2);
+            form.submit();
+        }
+
+        function downloadSelectedByJs(url, idList) {
+            var form = $("<form>");   //定义一个form表单
+            form.attr('style', 'display:none');   //在form表单中添加查询参数
+            form.attr('target', '');
+            form.attr('method', 'get');
+            form.attr('action', url);
+
+            var input1 = $('<input>');
+            input1.attr('type', 'hidden');
+            input1.attr('name', 'ids');
+            input1.attr('value', idList);
+
+            $('body').append(form);  //将表单放置在web中
+            form.append(input1);   //将查询参数控件提交到表单上
+            form.submit();
+        }
+
+        // 下载模板
+        $scope.download = function() {
+            if ($scope.currenctGoods && $scope.currenctGoods.length == 0) {
+                toaster.pop('info', '当前产品列表为空,无法下载');
+                return;
+            }
+            if ($scope.chooseAllPage) {
+                if ($scope.selfSupport === $scope.selfSupportType.SELF_SUPPORT) {
+                    $scope.param.isSelfSupport = true;
+                } else if ($scope.selfSupport === $scope.selfSupportType.CONSIGNMENT) {
+                    $scope.param.isSelfSupport = false;
+                } else {
+                    $scope.param.isSelfSupport = null;
                 }
                 }
-            });
+                downloadByJs('trade/goods/down/goods', $scope.param.keyword, $scope.param.isSelfSupport);
+            } else {
+                getChooseInfo();
+                if (!$scope.choosedIds || $scope.choosedIds.length == 0) {
+                    toaster.pop("info", "您尚未选中任何产品");
+                    return ;
+                }
+                var idStr = $scope.choosedIds.join('-');
+                downloadSelectedByJs('trade/goods/down/ids', idStr);
+            }
         };
         };
 
 
         /**
         /**
@@ -1497,13 +1695,19 @@ define([ 'app/app' ], function(app) {
         };
         };
 
 
         // 取消删除的操作
         // 取消删除的操作
-        $scope.cancleSoldOut = function () {
+        $scope.cancleSoldOut = function (event) {
+            if (event) {
+                event.stopPropagation();
+            }
             $scope.isSoldOut = false;
             $scope.isSoldOut = false;
             $scope.soldOutCommodity = null;
             $scope.soldOutCommodity = null;
         };
         };
 
 
         // 点击下架操作
         // 点击下架操作
-        $scope.soldOut = function (commodity) {
+        $scope.soldOut = function (event, commodity) {
+            if (event) {
+                event.stopPropagation();
+            }
             $scope.isSoldOut = true;
             $scope.isSoldOut = true;
             $scope.soldOutCommodity = commodity;
             $scope.soldOutCommodity = commodity;
         };
         };

+ 11 - 9
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_order_ctrl.js

@@ -426,7 +426,7 @@ define(['app/app'], function (app) {
         // 填写物流信息
         // 填写物流信息
         $scope.toBeShiped = function (purchase) {
         $scope.toBeShiped = function (purchase) {
             bankInfoService.getVenderBankDefault(null, function (data) {
             bankInfoService.getVenderBankDefault(null, function (data) {
-                if ((data && data.length > 0) || purchase.showTip == 0) {
+                if (data && data.length > 0) {
                     // 如果处于406,则直接跳转到物流页面
                     // 如果处于406,则直接跳转到物流页面
                     if (purchase.inid) {
                     if (purchase.inid) {
                         // 填写物流信息
                         // 填写物流信息
@@ -467,17 +467,19 @@ define(['app/app'], function (app) {
 
 
         //更新显示状态
         //更新显示状态
         $scope.changeShow = function (purchase) {
         $scope.changeShow = function (purchase) {
-            Purchase.changeShowTip({purchaseid: purchase.purchaseid}, {}, function (data) {
-                purchase.showGotoSettle = false;
-                $scope.orderTableParams.reload();
-            });
+            purchase.showGotoSettle = false;
+            // Purchase.changeShowTip({purchaseid: purchase.purchaseid}, {}, function (data) {
+            //     purchase.showGotoSettle = false;
+            //     $scope.orderTableParams.reload();
+            // });
         };
         };
         //去结算中心
         //去结算中心
         $scope.goToSettle = function (purchase) {
         $scope.goToSettle = function (purchase) {
-            Purchase.changeShowTip({purchaseid: purchase.purchaseid}, {}, function (data) {
-                purchase.showGotoSettle = false;
-                $scope.orderTableParams.reload();
-            });
+            // Purchase.changeShowTip({purchaseid: purchase.purchaseid}, {}, function (data) {
+            //     purchase.showGotoSettle = false;
+            //     $scope.orderTableParams.reload();
+            // });
+            purchase.showGotoSettle = false;
             window.open("vendor#/payCenter");
             window.open("vendor#/payCenter");
         }
         }
         // 关闭操作
         // 关闭操作

+ 2 - 2
src/main/webapp/resources/view/admin/trade/trade_order_detail.html

@@ -298,7 +298,7 @@
 				<h4>银行信息:</h4>		
 				<h4>银行信息:</h4>		
 			</div>
 			</div>
 			<div class="col-md-3">
 			<div class="col-md-3">
-				<span>收款方:</span><span>优软测试二</span>
+				<span>收款方:</span><span ng-bind="orderDetailInfo.receiveName"></span>
 				<!--<span ng-bind="orderDetailInfo.sellername"></span>-->
 				<!--<span ng-bind="orderDetailInfo.sellername"></span>-->
 			</div>
 			</div>
 			<div class="col-md-3">
 			<div class="col-md-3">
@@ -319,7 +319,7 @@
 				<span><a target="_blank"  href="{{imgUrl}}"><image alt="付款截图" ng-src="{{imgUrl}}" height="30px" width="60px"></image></a></span>
 				<span><a target="_blank"  href="{{imgUrl}}"><image alt="付款截图" ng-src="{{imgUrl}}" height="30px" width="60px"></image></a></span>
 			</div>
 			</div>
 			<div class="col-md-3">
 			<div class="col-md-3">
-				<span>付款方:</span><span ng-bind="orderDetailInfo.buyer"></span>
+				<span>付款方:</span><span ng-bind="orderDetailInfo.buyername"></span><span ng-if="orderDetailInfo.buyerentername" ng-bind="' | '+orderDetailInfo.buyerentername"></span>
 			</div>
 			</div>
 			<div class="col-md-3">
 			<div class="col-md-3">
 				<span>开户行名称:</span>
 				<span>开户行名称:</span>

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

@@ -10,7 +10,7 @@
         width: 310px;
         width: 310px;
         border-radius: 0;
         border-radius: 0;
         outline: 0;
         outline: 0;
-        overflow: hidden;
+        /*overflow: hidden;*/
     }
     }
     .modal-dialog{
     .modal-dialog{
         height: 152px;
         height: 152px;

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

@@ -21,6 +21,7 @@
 					<!--</li>-->
 					<!--</li>-->
 				<!--</ul>-->
 				<!--</ul>-->
 			<!--</div>-->
 			<!--</div>-->
+			<!--
 			<div class="common-title margin-top-8">收款账户</div>
 			<div class="common-title margin-top-8">收款账户</div>
 			<div class="payment-style">
 			<div class="payment-style">
 				<ul class="payment-80">
 				<ul class="payment-80">
@@ -64,6 +65,7 @@
 					</li>
 					</li>
 				</ul>
 				</ul>
 			</div>
 			</div>
+			-->
 			<div class="common-title margin-top-8" ng-if="type == 'PAIDTOVENDOR'">分期付款明细</div>
 			<div class="common-title margin-top-8" ng-if="type == 'PAIDTOVENDOR'">分期付款明细</div>
 			<div class="payment-detail" ng-if="type == 'PAIDTOVENDOR'">
 			<div class="payment-detail" ng-if="type == 'PAIDTOVENDOR'">
 				<ul>
 				<ul>

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

@@ -1708,7 +1708,10 @@
 							<td ng-bind="material.unit || 'PCS'" title="{{material.unit  || 'PCS'}}"></td>
 							<td ng-bind="material.unit || 'PCS'" title="{{material.unit  || 'PCS'}}"></td>
 							<td class="edit">
 							<td class="edit">
 								<span name="delete-material" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="deleteMaterial(material)"><span>删除</span></span>
 								<span name="delete-material" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="deleteMaterial(material)"><span>删除</span></span>
-								<span ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="showShelfArea(material)"><span>添加产品</span></span>
+								<span ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="showShelfArea(material)">
+									<span ng-if="material.batchCount">添加产品</span>
+									<span ng-if="!material.batchCount">编辑上架</span>
+								</span>
 								<span ng-if="material.batchCount" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="expandGoods(material)"><span>展开<i class="fa fa-angle-down" style="margin-left:2px;"></i></span></span>
 								<span ng-if="material.batchCount" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="expandGoods(material)"><span>展开<i class="fa fa-angle-down" style="margin-left:2px;"></i></span></span>
 								<!--收起-->
 								<!--收起-->
 								<span ng-show="!isBatch && material.exPandOper" ng-click="disExpandGoods(material)" class="packUp"><span>收起<i class="fa fa-angle-up" style="margin-left:2px;"></i></span></span>
 								<span ng-show="!isBatch && material.exPandOper" ng-click="disExpandGoods(material)" class="packUp"><span>收起<i class="fa fa-angle-up" style="margin-left:2px;"></i></span></span>

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

@@ -1721,7 +1721,10 @@
 							<td ng-bind="material.unit || 'PCS'" title="{{material.unit  || 'PCS'}}"></td>
 							<td ng-bind="material.unit || 'PCS'" title="{{material.unit  || 'PCS'}}"></td>
 							<td class="edit">
 							<td class="edit">
 								<span name="delete-material" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="deleteMaterial(material)"><span>删除</span></span>
 								<span name="delete-material" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="deleteMaterial(material)"><span>删除</span></span>
-								<span ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="showShelfArea(material)"><span>添加产品</span></span>
+								<span ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="showShelfArea(material)">
+									<span ng-if="material.batchCount">添加产品</span>
+									<span ng-if="!material.batchCount">编辑上架</span>
+								</span>
 								<span ng-if="material.batchCount" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="expandGoods(material)"><span>展开<i class="fa fa-angle-down" style="margin-left:2px;"></i></span></span>
 								<span ng-if="material.batchCount" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="expandGoods(material)"><span>展开<i class="fa fa-angle-down" style="margin-left:2px;"></i></span></span>
 								<!--收起-->
 								<!--收起-->
 								<span ng-show="!isBatch && material.exPandOper" ng-click="disExpandGoods(material)" class="packUp"><span>收起<i class="fa fa-angle-up" style="margin-left:2px;"></i></span></span>
 								<span ng-show="!isBatch && material.exPandOper" ng-click="disExpandGoods(material)" class="packUp"><span>收起<i class="fa fa-angle-up" style="margin-left:2px;"></i></span></span>

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

@@ -1541,10 +1541,10 @@
 	#wanted-list02{
 	#wanted-list02{
 		display: none;
 		display: none;
 	}
 	}
-    .modal-backdrop {
+    /*.modal-backdrop {
         background-color: transparent ;
         background-color: transparent ;
         bottom: unset!important;
         bottom: unset!important;
-    }
+    }*/
     .modal{
     .modal{
         bottom: unset!important;
         bottom: unset!important;
     }
     }

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

@@ -1491,10 +1491,10 @@
 	#wanted-list02{
 	#wanted-list02{
 		display: none;
 		display: none;
 	}
 	}
-    .modal-backdrop {
+   /* .modal-backdrop {
         background-color: transparent ;
         background-color: transparent ;
         bottom: unset!important;
         bottom: unset!important;
-    }
+    }*/
     .modal{
     .modal{
         bottom: unset!important;
         bottom: unset!important;
     }
     }

+ 190 - 20
src/main/webapp/resources/view/vendor/forstore/vendor_onSale.html

@@ -178,6 +178,10 @@
         text-align: center;
         text-align: center;
         margin: 0 auto;
         margin: 0 auto;
     }
     }
+    .com-out-box .content div.red {
+        position: relative;
+        top: -10px;
+    }
     .com-out-box .content div a{
     .com-out-box .content div a{
         width: 55px;
         width: 55px;
         height: 26px;
         height: 26px;
@@ -212,6 +216,7 @@
     }
     }
     .check-input{
     .check-input{
         position: relative;
         position: relative;
+        padding-left: 15px;
     }
     }
     .check-input .check-show{
     .check-input .check-show{
         position: absolute;
         position: absolute;
@@ -220,6 +225,28 @@
         line-height: 15px;
         line-height: 15px;
         left: 18px;
         left: 18px;
     }
     }
+    .check-input input{
+        display: none;
+    }
+    .check-input > span {
+        padding-left: 10px;
+    }
+    .check-input label {
+        width: 15px;
+        height: 15px;
+        display: inline-block;
+        background: url(static/img/user/images/check.png) no-repeat;
+        position: relative;
+        padding-left: 0 !important;
+        overflow: hidden;
+        margin-bottom: 0 !important;
+        vertical-align: sub;
+        min-height: 15px !important;
+        left: 0 !important;
+    }
+    .check-input input[type="checkbox"]:checked + label{
+        background-position: -15px 0;
+    }
     .pro_management .product_off dd:last-of-type{
     .pro_management .product_off dd:last-of-type{
         border-bottom: #cfcfcf 1px solid;
         border-bottom: #cfcfcf 1px solid;
     }
     }
@@ -275,6 +302,9 @@
         overflow: hidden;
         overflow: hidden;
         text-overflow: ellipsis;
         text-overflow: ellipsis;
     }
     }
+    .vendor-tab.table td .wid135 p em.href {
+        cursor: pointer;
+    }
     .vendor-tab.table td p{
     .vendor-tab.table td p{
         font-size: 14px;
         font-size: 14px;
         text-align: left;
         text-align: left;
@@ -731,6 +761,80 @@
     .device .wanted_list01 a.page-a{
     .device .wanted_list01 a.page-a{
         color: #fff !important ;
         color: #fff !important ;
     }
     }
+    .search-check .check {
+        width: 100%;
+    }
+    .search-check .check > .operate-btn{
+        font-size: 14px;
+        margin-right: 20px;
+        color: #fff !important;
+        background: #5078cb;
+        position: relative;
+        display: inline-block;
+        height: 30px;
+        line-height: 30px;
+        padding: 0 10px;
+        cursor: pointer;
+    }
+    .search-check .check > .operate-btn .expander {
+        position: absolute;
+        color: #333;
+        right: 0;
+        display: none;
+        height: 82px;
+        line-height: 26px;
+        text-align: center;
+        background: #fff;
+        bottom: -82px;
+        width: 98px;
+        z-index: 10;
+        border: 1px solid #e4e5e5;
+    }
+    .search-check .check > .operate-btn.more-operate {
+        padding: 0;
+        width: 98px;
+        height: 30px;
+        line-height: 30px;
+        text-align: center;
+        display: inline-block;
+        margin-left: 300px;
+    }
+    .search-check .check > .operate-btn.more-operate:hover .expander {
+        display: block;
+    }
+    .search-check .check > .operate-btn.more-operate .expander span {
+        display: block;
+    }
+    .search-check .check > .operate-btn.more-operate .expander span:hover {
+        color: #5078cb;
+    }
+    .wanted_list01 .tab table > tbody > tr.batch-tr {
+        height: 40px;
+        text-align: center;
+    }
+    .wanted_list01 .tab table > tbody > tr.batch-tr td {
+        border-bottom: none;
+    }
+    .wanted_list01 .tab table > tbody > tr.batch-tr.active {
+        position: fixed;
+        bottom: 0;
+        z-index: 2000;
+    }
+    .wanted_list01 .tab table > tbody > tr.batch-tr.active td {
+        width: 1029px;
+        border-top: 0;
+    }
+    .wanted_list01 .tab table > tbody > tr.batch-tr td {
+        padding: 0;
+        border-top: #dff3fd 1px solid;
+    }
+    .wanted_list01 .tab table>tbody>tr>td .batch-line {
+        width: 100%;
+        height: 40px;
+        background: #dff3fd;
+        line-height: 40px;
+        text-align: center;
+    }
 </style>
 </style>
 <div class="user_right fr">
 <div class="user_right fr">
     <!--货品管理-->
     <!--货品管理-->
@@ -752,10 +856,18 @@
             </ul>
             </ul>
         </div>
         </div>
         <div class="search-check">
         <div class="search-check">
-            <div class="search fl">
+            <div class="search fl check">
                 <input type="text" class="form-control" ng-model="keyword" ng-search="onSearch()" placeholder="产品型号/品牌/产品编码"/>
                 <input type="text" class="form-control" ng-model="keyword" ng-search="onSearch()" placeholder="产品型号/品牌/产品编码"/>
                 <button ng-click="onSearch()">搜索</button>
                 <button ng-click="onSearch()">搜索</button>
-                <a ng-click="downGoods()" class="down-goods-btn">批量导出</a>
+                <!--<a ng-click="downGoods()" class="down-goods-btn">批量导出</a>-->
+                <div class="operate-btn more-operate">
+                    <span>更多操作</span>
+                    <span class="expander">
+                        <span ng-click="download()">导出选中</span>
+                        <span ng-click="batchOperation(1)" name="delete-material">删除选中</span>
+                        <span ng-click="batchOperation(2)">下架选中</span>
+                    </span>
+                </div>
                 <form style="display: none;" id="down-load-goods" method="get">
                 <form style="display: none;" id="down-load-goods" method="get">
                     <input type="hidden" name="ids" ng-value="localInfo.ids">
                     <input type="hidden" name="ids" ng-value="localInfo.ids">
                 </form>
                 </form>
@@ -801,14 +913,20 @@
                 <table class="vendor-tab public-tab table">
                 <table class="vendor-tab public-tab table">
                     <thead>
                     <thead>
                     <tr>
                     <tr>
-                        <th width="50" style="padding:8px 0;">序号</th>
+                        <th width="60" style="padding:8px 0;">
+                            <label class="check-active">
+                                <input ng-disabled="currenctGoods.length == 0" type="checkbox"  ng-click="chooseAllItem()" ng-checked="chooseAll || chooseAllPage" id="AllChoose"/>
+                                <label for="AllChoose"></label>
+                                <span>全选</span>
+                            </label>
+                        </th>
                         <th width="220">产品信息</th>
                         <th width="220">产品信息</th>
                         <th width="115">包装/生产日期</th>
                         <th width="115">包装/生产日期</th>
                         <th width="140">库存</th>
                         <th width="140">库存</th>
                         <th width="105">梯度/pcs</th>
                         <th width="105">梯度/pcs</th>
                         <th ng-if="onsale.currency == 'USD'" width="116">单价<b style="font-size: 12px;font-weight: 600">($)</b></th>
                         <th ng-if="onsale.currency == 'USD'" width="116">单价<b style="font-size: 12px;font-weight: 600">($)</b></th>
                         <th ng-if="onsale.currency == 'RMB'" width="116">单价<b style="font-size: 12px;font-weight: 600">(¥)</b></th>
                         <th ng-if="onsale.currency == 'RMB'" width="116">单价<b style="font-size: 12px;font-weight: 600">(¥)</b></th>
-                        <th width="120">交期(天)</th>
+                        <th width="110">交期(天)</th>
                         <th class="filter" width="100">
                         <th class="filter" width="100">
                             <!--<a>{{selfSupport}}<i class="fa fa-angle-double-down angle-hover-up" aria-hidden="true"></i></a>-->
                             <!--<a>{{selfSupport}}<i class="fa fa-angle-double-down angle-hover-up" aria-hidden="true"></i></a>-->
                             <a ng-bind="selfSupport">销售方式</a> <i class="fa fa-angle-down fa-angle-up"></i>
                             <a ng-bind="selfSupport">销售方式</a> <i class="fa fa-angle-down fa-angle-up"></i>
@@ -826,10 +944,9 @@
                         <td colspan="10" class="hei16"></td>
                         <td colspan="10" class="hei16"></td>
                     </tr>
                     </tr>
                     </tbody>
                     </tbody>
-                    <tbody ng-repeat="commodity in currenctGoods" ng-click="goToBatchDetail($event, commodity)" class="edit-border">
+                    <tbody ng-repeat="commodity in currenctGoods" ng-click="chooseOne(null, commodity)" class="edit-border">
                     <!--非编辑状态自定义标签-->
                     <!--非编辑状态自定义标签-->
-                    <tr class="define"
-                        ng-if="!commodity.edit">
+                    <tr class="define" ng-if="!commodity.edit">
                         <td colspan="10">
                         <td colspan="10">
                             <div class="code">产品编码 : <span ng-bind="commodity.prodNum">247823589235</span></div>
                             <div class="code">产品编码 : <span ng-bind="commodity.prodNum">247823589235</span></div>
                             <div class="labelling" ng-if="commodity.tag">
                             <div class="labelling" ng-if="commodity.tag">
@@ -842,11 +959,10 @@
                             <img ng-if="commodity.uuid" src="static/img/store/common/standard.png" alt="" class="standard"/>
                             <img ng-if="commodity.uuid" src="static/img/store/common/standard.png" alt="" class="standard"/>
                         </td>
                         </td>
                     </tr>
                     </tr>
-                    <tr class="edit-form"
-                        ng-if="!commodity.edit">
+                    <tr class="edit-form" ng-if="!commodity.edit">
                         <td class="middle padding0 check-input">
                         <td class="middle padding0 check-input">
                             <!-- <span><input type="checkbox" id="{{$index+1}}"/><label for="{{$index+1}}"></label><br/></span>-->
                             <!-- <span><input type="checkbox" id="{{$index+1}}"/><label for="{{$index+1}}"></label><br/></span>-->
-                            <div class="marginL10">{{$index + 1}}</div>
+                            <span name="check-one"><input type="checkbox" ng-checked="commodity.isChoosed" fid="{{$index+1}}"/><label for="{{$index+1}}"></label></span>
                             <!--&lt;!&ndash;非标产品标志&ndash;&gt;-->
                             <!--&lt;!&ndash;非标产品标志&ndash;&gt;-->
                             <!--<img ng-if="!commodity.uuid" src="static/img/store/common/nonstandard.png" alt="" class="standard"/>-->
                             <!--<img ng-if="!commodity.uuid" src="static/img/store/common/nonstandard.png" alt="" class="standard"/>-->
                             <!--&lt;!&ndash;标产品标志&ndash;&gt;-->
                             <!--&lt;!&ndash;标产品标志&ndash;&gt;-->
@@ -862,7 +978,7 @@
                             <div class="fr wid135">
                             <div class="fr wid135">
                                 <p ng-if="!commodity.uuid">类目: <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></a></p>
                                 <p ng-if="!commodity.uuid">类目: <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></a></p>
                                 <p ng-if="commodity.uuid" name="kind-a"><a href="product/kind/{{commodity.kindUuid}}" style="margin: 0; color: #333;" target="_blank">类目: <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></a></p>
                                 <p ng-if="commodity.uuid" name="kind-a"><a href="product/kind/{{commodity.kindUuid}}" style="margin: 0; color: #333;" target="_blank">类目: <em ng-bind="commodity.kindNameCn || '-'" title="{{commodity.kindNameCn}}"></em></a></p>
-                                <p>型号: <em ng-bind="commodity.code" title="{{commodity.code}}">LPC1112</em></p>
+                                <p>型号: <em class="href" ng-bind="commodity.code" title="{{commodity.code}}"  ng-click="goToBatchDetail($event, commodity)">LPC1112</em></p>
                                 <p ng-if="!commodity.uuid">品牌: <em ng-bind="commodity.brandNameEn" title="{{commodity.brandNameEn}}">NXP</em></a></p>
                                 <p ng-if="!commodity.uuid">品牌: <em ng-bind="commodity.brandNameEn" title="{{commodity.brandNameEn}}">NXP</em></a></p>
                                 <p ng-if="commodity.uuid" name="brand-a"><a href="product/brand/{{commodity.branduuid}}" style="margin: 0; color: #333;" target="_blank">品牌: <em ng-bind="commodity.brandNameEn" title="{{commodity.brandNameEn}}">NXP</em></a></p>
                                 <p ng-if="commodity.uuid" name="brand-a"><a href="product/brand/{{commodity.branduuid}}" style="margin: 0; color: #333;" target="_blank">品牌: <em ng-bind="commodity.brandNameEn" title="{{commodity.brandNameEn}}">NXP</em></a></p>
                             </div>
                             </div>
@@ -925,7 +1041,7 @@
                         <td class="padding0">
                         <td class="padding0">
                             <div ng-if="!commodity.sourceId" name="edit-a" class="edit-a"><span class="edit edits" ng-click="editCommodity(commodity)">编辑</span></div><!--updateCommodityInfo(commodity, false)-->
                             <div ng-if="!commodity.sourceId" name="edit-a" class="edit-a"><span class="edit edits" ng-click="editCommodity(commodity)">编辑</span></div><!--updateCommodityInfo(commodity, false)-->
                             <div ng-if="commodity.sourceId"><a style="margin: 0;">来源UAS</a></div>
                             <div ng-if="commodity.sourceId"><a style="margin: 0;">来源UAS</a></div>
-                            <div ng-if="!commodity.sourceId" name="down-a" class="down-a"><span class='edits' ng-click="soldOut(commodity)">下架</span></div>
+                            <div ng-if="!commodity.sourceId" name="down-a" class="down-a"><span class='edits' ng-click="soldOut($event, commodity)">下架</span></div>
                         </td>
                         </td>
                     </tr>
                     </tr>
                     <!--编辑状态自定义标签-->
                     <!--编辑状态自定义标签-->
@@ -947,7 +1063,7 @@
                         <td colspan="9">
                         <td colspan="9">
                             <div class="bg-show">
                             <div class="bg-show">
                                 <div class="content-show width20">
                                 <div class="content-show width20">
-                                   <div> {{$index + 1}}</div>
+                                   <!--<div> {{$index + 1}}</div>-->
                                 </div>
                                 </div>
                                 <div class="content-show width200">
                                 <div class="content-show width200">
                                     <div class="fl img">
                                     <div class="fl img">
@@ -1204,6 +1320,23 @@
                         <!--</td>-->
                         <!--</td>-->
                     </tr>
                     </tr>
                     </tbody>
                     </tbody>
+                    <tbody>
+                    <tr class="no-hover batch-tr" ng-if="(chooseAll || chooseAllPage) && currenctGoods.length != 0">
+                        <td colspan="9">
+                            <div class="batch-line" ng-if="chooseAll && !chooseAllPage">
+                                已选中当前页
+                                <em class="red" ng-bind="goodsAll.numberOfElements"></em>个产品,
+                                <a ng-click="turnAllPage()" class="blue">点击此处</a>切换选中所有页面<em class="red" ng-bind="goodsAll.totalElements"></em>个产品
+                            </div>
+                            <div class="batch-line" ng-if="chooseAllPage">
+                                已选中所有页面
+                                <em class="red" ng-bind="goodsAll.totalElements"></em>个产品,
+                                <a ng-click="cancelAllPage()" class="blue">点击此处</a>全部取消选中
+                            </div>
+                        </td>
+                    </tr>
+                    <!--<tr class="no-hover batch-tr" ng-if="chooseAll && !chooseAllPage" ng-class="{'active': $data.length > 10}">-->
+                    </tbody>
                 </table>
                 </table>
                 <div class="record-line text-right" ng-if="currenctGoods.length != 0">显示 {{(param.page - 1) * 10 + 1}}-
                 <div class="record-line text-right" ng-if="currenctGoods.length != 0">显示 {{(param.page - 1) * 10 + 1}}-
                     <span ng-bind="endNumber"></span>, 共: <span ng-bind="goodsAll.totalElements" style="color: #5078cb;"></span> 个</div>
                     <span ng-bind="endNumber"></span>, 共: <span ng-bind="goodsAll.totalElements" style="color: #5078cb;"></span> 个</div>
@@ -1228,13 +1361,32 @@
     </div>
     </div>
 </div>
 </div>
 <!--下架操作-->
 <!--下架操作-->
-<div class="com-out-box" ng-if="isSoldOut">
-    <div class="title">
-        <a ng-click="cancleSoldOut()"><i class="fa fa-close fa-lg"></i></a>
+<div class="com-modal-wrap" ng-if="isSoldOut" ng-click="cancleSoldOut($event)">
+    <div class="com-out-box">
+        <div class="title">
+            <a ng-click="cancleSoldOut()"><i class="fa fa-close fa-lg"></i></a>
+        </div>
+        <div class="content">
+            <p><i class="fa fa-exclamation-circle"></i>确认下架?</p>
+            <div><a ng-click="cancleSoldOut()">取消</a><a ng-click="updateCommodityInfo(soldOutCommodity)">确认</a></div>
+        </div>
     </div>
     </div>
-    <div class="content">
-        <p><i class="fa fa-exclamation-circle"></i>确认下架?</p>
-        <div><a ng-click="cancleSoldOut()">取消</a><a ng-click="updateCommodityInfo(soldOutCommodity, true)">确认</a></div>
+</div>
+<div class="com-modal-wrap" ng-if="batchStatus" ng-click="cancelBatch($event)">
+    <div class="com-out-box">
+        <div class="title">
+            <a ng-click="cancelBatch()"><i class="fa fa-close fa-lg"></i></a>
+        </div>
+        <div class="content">
+            <p><i class="fa fa-exclamation-circle"></i>{{batchTitle}}</p>
+            <div class="red" ng-if="batchType==1">*<i ng-if="batchType==1">已有交易记录的产品无法删除</i>
+            </div>
+            <div>
+                <a ng-click="cancelBatch()">取消</a>
+                <a ng-if="batchType==1" ng-click="batchDelete()">确认</a>
+                <a ng-if="batchType==2" ng-click="batchDown()">确认</a>
+            </div>
+        </div>
     </div>
     </div>
 </div>
 </div>
 
 
@@ -1282,4 +1434,22 @@
         position: relative;
         position: relative;
         top: 7px;
         top: 7px;
     }
     }
-</style>
+</style>
+<script>
+    $(function(){
+        $(document).on('click', function () {
+            if ($(document).scrollTop() + $(window).height() < $('.record-line').offset().top + $('.record-line').height()) {
+                $('.wanted_list01 .tab table>tbody>tr.batch-tr').addClass('active')
+            } else {
+                $('.wanted_list01 .tab table>tbody>tr.batch-tr').removeClass('active')
+            }
+        })
+        $(window).bind("scroll",function() {
+            if ($(document).scrollTop() + $(window).height() < $('.record-line').offset().top + $('.record-line').height()) {
+                $('.wanted_list01 .tab table>tbody>tr.batch-tr').addClass('active')
+            } else {
+                $('.wanted_list01 .tab table>tbody>tr.batch-tr').removeClass('active')
+            }
+        });
+    })
+</script>